summaryrefslogtreecommitdiff
path: root/java/src/com/android/textclassifier/common/TextClassifierSettings.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/textclassifier/common/TextClassifierSettings.java')
-rw-r--r--java/src/com/android/textclassifier/common/TextClassifierSettings.java39
1 files changed, 35 insertions, 4 deletions
diff --git a/java/src/com/android/textclassifier/common/TextClassifierSettings.java b/java/src/com/android/textclassifier/common/TextClassifierSettings.java
index d0ea917..6de8fe2 100644
--- a/java/src/com/android/textclassifier/common/TextClassifierSettings.java
+++ b/java/src/com/android/textclassifier/common/TextClassifierSettings.java
@@ -18,6 +18,8 @@ package com.android.textclassifier.common;
import static java.util.concurrent.TimeUnit.HOURS;
+import android.content.Context;
+import android.content.pm.PackageManager;
import android.provider.DeviceConfig;
import android.provider.DeviceConfig.Properties;
import android.text.TextUtils;
@@ -55,15 +57,20 @@ public final class TextClassifierSettings {
/** Whether the user language profile feature is enabled. */
private static final String USER_LANGUAGE_PROFILE_ENABLED = "user_language_profile_enabled";
+
/** Max length of text that suggestSelection can accept. */
@VisibleForTesting
static final String SUGGEST_SELECTION_MAX_RANGE_LENGTH = "suggest_selection_max_range_length";
+
/** Max length of text that classifyText can accept. */
private static final String CLASSIFY_TEXT_MAX_RANGE_LENGTH = "classify_text_max_range_length";
+
/** Max length of text that generateLinks can accept. */
private static final String GENERATE_LINKS_MAX_TEXT_LENGTH = "generate_links_max_text_length";
+
/** Sampling rate for generateLinks logging. */
private static final String GENERATE_LINKS_LOG_SAMPLE_RATE = "generate_links_log_sample_rate";
+
/**
* Extra count that is added to some languages, e.g. system languages, when deducing the frequent
* languages in {@link
@@ -75,52 +82,65 @@ public final class TextClassifierSettings {
* hint is not given.
*/
@VisibleForTesting static final String ENTITY_LIST_DEFAULT = "entity_list_default";
+
/**
* A colon(:) separated string that specifies the default entities types for generateLinks when
* the text is in a not editable UI widget.
*/
private static final String ENTITY_LIST_NOT_EDITABLE = "entity_list_not_editable";
+
/**
* A colon(:) separated string that specifies the default entities types for generateLinks when
* the text is in an editable UI widget.
*/
private static final String ENTITY_LIST_EDITABLE = "entity_list_editable";
+
/**
* A colon(:) separated string that specifies the default action types for
* suggestConversationActions when the suggestions are used in an app.
*/
private static final String IN_APP_CONVERSATION_ACTION_TYPES_DEFAULT =
"in_app_conversation_action_types_default";
+
/**
* A colon(:) separated string that specifies the default action types for
* suggestConversationActions when the suggestions are used in a notification.
*/
private static final String NOTIFICATION_CONVERSATION_ACTION_TYPES_DEFAULT =
"notification_conversation_action_types_default";
+
/** Threshold to accept a suggested language from LangID model. */
@VisibleForTesting static final String LANG_ID_THRESHOLD_OVERRIDE = "lang_id_threshold_override";
+
/** Whether to enable {@link com.android.textclassifier.intent.TemplateIntentFactory}. */
@VisibleForTesting
static final String TEMPLATE_INTENT_FACTORY_ENABLED = "template_intent_factory_enabled";
+
/** Whether to enable "translate" action in classifyText. */
private static final String TRANSLATE_IN_CLASSIFICATION_ENABLED =
"translate_in_classification_enabled";
+
/**
* Whether to detect the languages of the text in request by using langId for the native model.
*/
private static final String DETECT_LANGUAGES_FROM_TEXT_ENABLED =
"detect_languages_from_text_enabled";
+
/** Whether to use models downloaded by config updater. */
private static final String CONFIG_UPDATER_MODEL_ENABLED = "config_updater_model_enabled";
+
/** Whether to enable model downloading with ModelDownloadManager */
@VisibleForTesting
public static final String MODEL_DOWNLOAD_MANAGER_ENABLED = "model_download_manager_enabled";
+
/** Type of network to download model manifest. A String value of androidx.work.NetworkType. */
private static final String MANIFEST_DOWNLOAD_REQUIRED_NETWORK_TYPE =
"manifest_download_required_network_type";
+
/** Max attempts allowed for a single ModelDownloader downloading task. */
@VisibleForTesting
static final String MODEL_DOWNLOAD_WORKER_MAX_ATTEMPTS = "model_download_worker_max_attempts";
+
/** Max attempts allowed for a certain manifest url. */
@VisibleForTesting
public static final String MANIFEST_DOWNLOAD_MAX_ATTEMPTS = "manifest_download_max_attempts";
@@ -181,6 +201,7 @@ public final class TextClassifierSettings {
* @see {@code TextClassifierImpl#detectLanguages(String, int, int)} for reference.
*/
@VisibleForTesting static final String LANG_ID_CONTEXT_SETTINGS = "lang_id_context_settings";
+
/** Default threshold to translate the language of the context the user selects */
private static final String TRANSLATE_ACTION_THRESHOLD = "translate_action_threshold";
@@ -216,6 +237,7 @@ public final class TextClassifierSettings {
ConversationAction.TYPE_VIEW_MAP,
TYPE_ADD_CONTACT,
TYPE_COPY);
+
/**
* < 0 : Not set. Use value from LangId model. 0 - 1: Override value in LangId model.
*
@@ -236,6 +258,7 @@ public final class TextClassifierSettings {
private static final int MANIFEST_DOWNLOAD_MAX_ATTEMPTS_DEFAULT = 3;
private static final long MODEL_DOWNLOAD_BACKOFF_DELAY_IN_MILLIS_DEFAULT = HOURS.toMillis(1);
private static final boolean MANIFEST_DOWNLOAD_REQUIRES_DEVICE_IDLE_DEFAULT = false;
+ private static final boolean MANIFEST_DOWNLOAD_REQUIRES_CHARGING_WEAR_DEFAULT = true;
private static final boolean MANIFEST_DOWNLOAD_REQUIRES_CHARGING_DEFAULT = false;
private static final boolean MULTI_LANGUAGE_SUPPORT_ENABLED_DEFAULT = false;
private static final int MULTI_LANGUAGE_MODELS_LIMIT_DEFAULT = 2;
@@ -247,6 +270,7 @@ public final class TextClassifierSettings {
private static final String MANIFEST_URL_DEFAULT = "";
private static final String TESTING_LOCALE_LIST_OVERRIDE_DEFAULT = "";
private static final float[] LANG_ID_CONTEXT_SETTINGS_DEFAULT = new float[] {20f, 1.0f, 0.4f};
+
/**
* Sampling rate for API logging. For example, 100 means there is a 0.01 chance that the API call
* is the logged.
@@ -327,14 +351,18 @@ public final class TextClassifierSettings {
};
private final IDeviceConfig deviceConfig;
+ private final boolean isWear;
- public TextClassifierSettings() {
- this(DEFAULT_DEVICE_CONFIG);
+ public TextClassifierSettings(Context context) {
+ this(
+ DEFAULT_DEVICE_CONFIG,
+ context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH));
}
@VisibleForTesting
- public TextClassifierSettings(IDeviceConfig deviceConfig) {
+ public TextClassifierSettings(IDeviceConfig deviceConfig, boolean isWear) {
this.deviceConfig = deviceConfig;
+ this.isWear = isWear;
}
public int getSuggestSelectionMaxRangeLength() {
@@ -461,7 +489,9 @@ public final class TextClassifierSettings {
return deviceConfig.getBoolean(
NAMESPACE,
MANIFEST_DOWNLOAD_REQUIRES_CHARGING,
- MANIFEST_DOWNLOAD_REQUIRES_CHARGING_DEFAULT);
+ isWear
+ ? MANIFEST_DOWNLOAD_REQUIRES_CHARGING_WEAR_DEFAULT
+ : MANIFEST_DOWNLOAD_REQUIRES_CHARGING_DEFAULT);
}
/* Gets a list of models urls that should not be used. Usually used for a quick rollback. */
@@ -496,6 +526,7 @@ public final class TextClassifierSettings {
return deviceConfig.getInt(
NAMESPACE, MULTI_ANNOTATOR_CACHE_SIZE, MULTI_ANNOTATOR_CACHE_SIZE_DEFAULT);
}
+
/**
* Gets all language variants and associated manifest url configured for a specific ModelType.
*