blob: adb6fea91799e0576a0218f3c60fb16c5c2ceb02 [file] [log] [blame]
Abodunrinwa Toki0e6b43e2017-09-19 23:18:40 +01001/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.view.textclassifier;
18
Joanne Chungc44f5292019-12-02 21:18:43 +080019import android.annotation.Nullable;
20import android.provider.DeviceConfig;
21
22import com.android.internal.annotations.VisibleForTesting;
Tony Makf93e9e52018-07-16 14:46:29 +020023import com.android.internal.util.IndentingPrintWriter;
24
Abodunrinwa Toki0e6b43e2017-09-19 23:18:40 +010025/**
26 * TextClassifier specific settings.
Joanne Chungc44f5292019-12-02 21:18:43 +080027 *
28 * <p>Currently, this class does not guarantee co-diverted flags are updated atomically.
29 *
Abodunrinwa Toki0634af32019-04-04 13:10:59 +010030 * <pre>
31 * adb shell cmd device_config put textclassifier system_textclassifier_enabled true
32 * </pre>
33 *
Joanne Chungc44f5292019-12-02 21:18:43 +080034 * @see android.provider.DeviceConfig#NAMESPACE_TEXTCLASSIFIER
Abodunrinwa Toki0e6b43e2017-09-19 23:18:40 +010035 * @hide
36 */
Abodunrinwa Toki0634af32019-04-04 13:10:59 +010037// TODO: Rename to TextClassifierSettings.
Abodunrinwa Tokidb8fc312018-02-26 21:37:51 +000038public final class TextClassificationConstants {
Tony Makfc374572019-03-05 14:46:24 +000039 /**
40 * Whether the smart linkify feature is enabled.
41 */
42 private static final String SMART_LINKIFY_ENABLED = "smart_linkify_enabled";
43 /**
44 * Whether SystemTextClassifier is enabled.
45 */
Joanne Chungc44f5292019-12-02 21:18:43 +080046 static final String SYSTEM_TEXT_CLASSIFIER_ENABLED = "system_textclassifier_enabled";
Tony Makfc374572019-03-05 14:46:24 +000047 /**
48 * Whether TextClassifierImpl is enabled.
49 */
Joanne Chungc44f5292019-12-02 21:18:43 +080050 @VisibleForTesting
51 static final String LOCAL_TEXT_CLASSIFIER_ENABLED = "local_textclassifier_enabled";
Tony Makfc374572019-03-05 14:46:24 +000052 /**
53 * Enable smart selection without a visible UI changes.
54 */
55 private static final String MODEL_DARK_LAUNCH_ENABLED = "model_dark_launch_enabled";
Tony Makfc374572019-03-05 14:46:24 +000056 /**
57 * Whether the smart selection feature is enabled.
58 */
59 private static final String SMART_SELECTION_ENABLED = "smart_selection_enabled";
60 /**
61 * Whether the smart text share feature is enabled.
62 */
63 private static final String SMART_TEXT_SHARE_ENABLED = "smart_text_share_enabled";
64 /**
65 * Whether animation for smart selection is enabled.
66 */
Abodunrinwa Tokidb8fc312018-02-26 21:37:51 +000067 private static final String SMART_SELECT_ANIMATION_ENABLED =
68 "smart_select_animation_enabled";
Tony Makfc374572019-03-05 14:46:24 +000069 /**
Tony Makfc374572019-03-05 14:46:24 +000070 * Max length of text that generateLinks can accept.
71 */
Joanne Chungc44f5292019-12-02 21:18:43 +080072 @VisibleForTesting
Tony Mak293bdf32020-02-18 11:33:43 +000073 static final String GENERATE_LINKS_MAX_TEXT_LENGTH = "generate_links_max_text_length";
Joanne Chungb50ab4b2019-10-14 16:40:57 +080074 /**
75 * The TextClassifierService which would like to use. Example of setting the package:
76 * <pre>
77 * adb shell cmd device_config put textclassifier textclassifier_service_package_override \
78 * com.android.textclassifier
79 * </pre>
Joanne Chungb50ab4b2019-10-14 16:40:57 +080080 */
Joanne Chungc44f5292019-12-02 21:18:43 +080081 @VisibleForTesting
82 static final String TEXT_CLASSIFIER_SERVICE_PACKAGE_OVERRIDE =
Joanne Chungb50ab4b2019-10-14 16:40:57 +080083 "textclassifier_service_package_override";
84
85 private static final String DEFAULT_TEXT_CLASSIFIER_SERVICE_PACKAGE_OVERRIDE = null;
Abodunrinwa Tokic7073a42018-02-28 23:02:13 +000086 private static final boolean LOCAL_TEXT_CLASSIFIER_ENABLED_DEFAULT = true;
87 private static final boolean SYSTEM_TEXT_CLASSIFIER_ENABLED_DEFAULT = true;
Abodunrinwa Tokidb8fc312018-02-26 21:37:51 +000088 private static final boolean MODEL_DARK_LAUNCH_ENABLED_DEFAULT = false;
89 private static final boolean SMART_SELECTION_ENABLED_DEFAULT = true;
90 private static final boolean SMART_TEXT_SHARE_ENABLED_DEFAULT = true;
Richard Ledley9cfa6062018-01-15 13:13:29 +000091 private static final boolean SMART_LINKIFY_ENABLED_DEFAULT = true;
Abodunrinwa Tokidb8fc312018-02-26 21:37:51 +000092 private static final boolean SMART_SELECT_ANIMATION_ENABLED_DEFAULT = true;
Jan Althaus108aad32018-01-30 15:26:55 +010093 private static final int GENERATE_LINKS_MAX_TEXT_LENGTH_DEFAULT = 100 * 1000;
Abodunrinwa Toki0e6b43e2017-09-19 23:18:40 +010094
Joanne Chungc44f5292019-12-02 21:18:43 +080095 @Nullable
96 public String getTextClassifierServicePackageOverride() {
97 return DeviceConfig.getString(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
Joanne Chungb50ab4b2019-10-14 16:40:57 +080098 TEXT_CLASSIFIER_SERVICE_PACKAGE_OVERRIDE,
99 DEFAULT_TEXT_CLASSIFIER_SERVICE_PACKAGE_OVERRIDE);
100 }
101
Abodunrinwa Tokic7073a42018-02-28 23:02:13 +0000102 public boolean isLocalTextClassifierEnabled() {
Joanne Chungc44f5292019-12-02 21:18:43 +0800103 return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
104 LOCAL_TEXT_CLASSIFIER_ENABLED, LOCAL_TEXT_CLASSIFIER_ENABLED_DEFAULT);
Abodunrinwa Tokic7073a42018-02-28 23:02:13 +0000105 }
106
107 public boolean isSystemTextClassifierEnabled() {
Joanne Chungc44f5292019-12-02 21:18:43 +0800108 return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
Abodunrinwa Toki0634af32019-04-04 13:10:59 +0100109 SYSTEM_TEXT_CLASSIFIER_ENABLED,
110 SYSTEM_TEXT_CLASSIFIER_ENABLED_DEFAULT);
Abodunrinwa Tokic7073a42018-02-28 23:02:13 +0000111 }
112
Abodunrinwa Tokidb8fc312018-02-26 21:37:51 +0000113 public boolean isModelDarkLaunchEnabled() {
Joanne Chungc44f5292019-12-02 21:18:43 +0800114 return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
115 MODEL_DARK_LAUNCH_ENABLED, MODEL_DARK_LAUNCH_ENABLED_DEFAULT);
Abodunrinwa Toki0e6b43e2017-09-19 23:18:40 +0100116 }
117
Abodunrinwa Tokidb8fc312018-02-26 21:37:51 +0000118 public boolean isSmartSelectionEnabled() {
Joanne Chungc44f5292019-12-02 21:18:43 +0800119 return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
120 SMART_SELECTION_ENABLED, SMART_SELECTION_ENABLED_DEFAULT);
Abodunrinwa Tokidb8fc312018-02-26 21:37:51 +0000121 }
122
123 public boolean isSmartTextShareEnabled() {
Joanne Chungc44f5292019-12-02 21:18:43 +0800124 return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
125 SMART_TEXT_SHARE_ENABLED, SMART_TEXT_SHARE_ENABLED_DEFAULT);
Abodunrinwa Toki0e6b43e2017-09-19 23:18:40 +0100126 }
Richard Ledley9cfa6062018-01-15 13:13:29 +0000127
128 public boolean isSmartLinkifyEnabled() {
Joanne Chungc44f5292019-12-02 21:18:43 +0800129 return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TEXTCLASSIFIER, SMART_LINKIFY_ENABLED,
Abodunrinwa Toki0634af32019-04-04 13:10:59 +0100130 SMART_LINKIFY_ENABLED_DEFAULT);
Richard Ledley9cfa6062018-01-15 13:13:29 +0000131 }
Jan Althaus108aad32018-01-30 15:26:55 +0100132
Abodunrinwa Tokidb8fc312018-02-26 21:37:51 +0000133 public boolean isSmartSelectionAnimationEnabled() {
Joanne Chungc44f5292019-12-02 21:18:43 +0800134 return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
135 SMART_SELECT_ANIMATION_ENABLED, SMART_SELECT_ANIMATION_ENABLED_DEFAULT);
Abodunrinwa Tokidb8fc312018-02-26 21:37:51 +0000136 }
137
Jan Althaus108aad32018-01-30 15:26:55 +0100138 public int getGenerateLinksMaxTextLength() {
Joanne Chungc44f5292019-12-02 21:18:43 +0800139 return DeviceConfig.getInt(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
140 GENERATE_LINKS_MAX_TEXT_LENGTH, GENERATE_LINKS_MAX_TEXT_LENGTH_DEFAULT);
Jan Althaus108aad32018-01-30 15:26:55 +0100141 }
Jan Althaus31efdc32018-02-19 22:23:13 +0100142
Tony Makf93e9e52018-07-16 14:46:29 +0200143 void dump(IndentingPrintWriter pw) {
144 pw.println("TextClassificationConstants:");
145 pw.increaseIndent();
Abodunrinwa Toki0634af32019-04-04 13:10:59 +0100146 pw.printPair("generate_links_max_text_length", getGenerateLinksMaxTextLength())
147 .println();
Abodunrinwa Toki0634af32019-04-04 13:10:59 +0100148 pw.printPair("local_textclassifier_enabled", isLocalTextClassifierEnabled())
149 .println();
150 pw.printPair("model_dark_launch_enabled", isModelDarkLaunchEnabled())
151 .println();
Abodunrinwa Toki0634af32019-04-04 13:10:59 +0100152 pw.printPair("smart_linkify_enabled", isSmartLinkifyEnabled())
153 .println();
154 pw.printPair("smart_select_animation_enabled", isSmartSelectionAnimationEnabled())
155 .println();
156 pw.printPair("smart_selection_enabled", isSmartSelectionEnabled())
157 .println();
158 pw.printPair("smart_text_share_enabled", isSmartTextShareEnabled())
159 .println();
Abodunrinwa Toki0634af32019-04-04 13:10:59 +0100160 pw.printPair("system_textclassifier_enabled", isSystemTextClassifierEnabled())
161 .println();
Joanne Chungc44f5292019-12-02 21:18:43 +0800162 pw.printPair("textclassifier_service_package_override",
163 getTextClassifierServicePackageOverride()).println();
Tony Makf93e9e52018-07-16 14:46:29 +0200164 pw.decreaseIndent();
Tony Makf93e9e52018-07-16 14:46:29 +0200165 }
Abodunrinwa Toki0634af32019-04-04 13:10:59 +0100166}