summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2018-11-27 21:51:45 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-11-27 21:51:45 +0000
commite3a6d9450ad7e166a50949ccacaa5847a373b459 (patch)
tree7ff59c8367f0e192d1bae2e64b1420e3db2728d6 /core/java
parent67d97b4bf33882a9dc3afa1e234a9cc207b836b3 (diff)
parente1f3ac064c2df9f70a9ac356314275273ef2ff97 (diff)
Merge "Add "dictionary" entity type"
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/content/Intent.java10
-rw-r--r--core/java/android/view/textclassifier/TextClassifier.java6
-rw-r--r--core/java/android/view/textclassifier/TextClassifierImpl.java24
3 files changed, 37 insertions, 3 deletions
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index 6bfddb06ca88..e7f0053721d1 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -3601,6 +3601,16 @@ public class Intent implements Parcelable, Cloneable {
public static final String ACTION_TRANSLATE = "android.intent.action.TRANSLATE";
/**
+ * Activity Action: Define the meaning of the selected word(s).
+ * <p>
+ * Input: {@link #EXTRA_TEXT getCharSequence(EXTRA_TEXT)} is the text to define.
+ * <p>
+ * Output: nothing.
+ */
+ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+ public static final String ACTION_DEFINE = "android.intent.action.DEFINE";
+
+ /**
* Broadcast Action: List of dynamic sensor is changed due to new sensor being connected or
* exisiting sensor being disconnected.
*
diff --git a/core/java/android/view/textclassifier/TextClassifier.java b/core/java/android/view/textclassifier/TextClassifier.java
index 524f70939398..a2536cbd911c 100644
--- a/core/java/android/view/textclassifier/TextClassifier.java
+++ b/core/java/android/view/textclassifier/TextClassifier.java
@@ -90,6 +90,11 @@ public interface TextClassifier {
String TYPE_DATE_TIME = "datetime";
/** Flight number in IATA format. */
String TYPE_FLIGHT_NUMBER = "flight";
+ /**
+ * Word that users may be interested to look up for meaning.
+ * @hide
+ */
+ String TYPE_DICTIONARY = "dictionary";
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@@ -103,6 +108,7 @@ public interface TextClassifier {
TYPE_DATE,
TYPE_DATE_TIME,
TYPE_FLIGHT_NUMBER,
+ TYPE_DICTIONARY
})
@interface EntityType {}
diff --git a/core/java/android/view/textclassifier/TextClassifierImpl.java b/core/java/android/view/textclassifier/TextClassifierImpl.java
index 74678df00cb6..8e14dfdb7ee3 100644
--- a/core/java/android/view/textclassifier/TextClassifierImpl.java
+++ b/core/java/android/view/textclassifier/TextClassifierImpl.java
@@ -42,6 +42,7 @@ import android.provider.CalendarContract;
import android.provider.ContactsContract;
import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;
@@ -57,6 +58,7 @@ import java.net.URLEncoder;
import java.time.Instant;
import java.time.ZonedDateTime;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
@@ -638,7 +640,8 @@ public final class TextClassifierImpl implements TextClassifier {
/**
* Helper class to store the information from which RemoteActions are built.
*/
- private static final class LabeledIntent {
+ @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
+ public static final class LabeledIntent {
static final int DEFAULT_REQUEST_CODE = 0;
@@ -673,7 +676,8 @@ public final class TextClassifierImpl implements TextClassifier {
return mDescription;
}
- Intent getIntent() {
+ @VisibleForTesting
+ public Intent getIntent() {
return mIntent;
}
@@ -717,7 +721,8 @@ public final class TextClassifierImpl implements TextClassifier {
/**
* Creates intents based on the classification type.
*/
- static final class IntentFactory {
+ @VisibleForTesting
+ public static final class IntentFactory {
private static final long MIN_EVENT_FUTURE_MILLIS = TimeUnit.MINUTES.toMillis(5);
private static final long DEFAULT_EVENT_DURATION = TimeUnit.HOURS.toMillis(1);
@@ -762,6 +767,9 @@ public final class TextClassifierImpl implements TextClassifier {
case TextClassifier.TYPE_FLIGHT_NUMBER:
actions = createForFlight(context, text);
break;
+ case TextClassifier.TYPE_DICTIONARY:
+ actions = createForDictionary(context, text);
+ break;
default:
actions = new ArrayList<>();
break;
@@ -924,5 +932,15 @@ public final class TextClassifierImpl implements TextClassifier {
.putExtra(Intent.EXTRA_TEXT, text),
text.hashCode()));
}
+
+ @NonNull
+ private static List<LabeledIntent> createForDictionary(Context context, String text) {
+ return Arrays.asList(new LabeledIntent(
+ context.getString(com.android.internal.R.string.define),
+ context.getString(com.android.internal.R.string.define_desc),
+ new Intent(Intent.ACTION_DEFINE)
+ .putExtra(Intent.EXTRA_TEXT, text),
+ text.hashCode()));
+ }
}
}