diff --git a/api/current.txt b/api/current.txt index ed58ad1880192..32993d6fa4b8a 100644 --- a/api/current.txt +++ b/api/current.txt @@ -50540,7 +50540,7 @@ package android.view.textclassifier { method public static android.view.textclassifier.TextClassifier.EntityConfig createWithHints(java.util.Collection); method public int describeContents(); method public java.util.Collection getHints(); - method public java.util.List resolveEntityListModifications(java.util.Collection); + method public java.util.Collection resolveEntityListModifications(java.util.Collection); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; } diff --git a/core/java/android/view/textclassifier/TextClassifier.java b/core/java/android/view/textclassifier/TextClassifier.java index 4cfa9038aeaa2..4710671f8b889 100644 --- a/core/java/android/view/textclassifier/TextClassifier.java +++ b/core/java/android/view/textclassifier/TextClassifier.java @@ -41,8 +41,9 @@ import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.List; +import java.util.HashSet; import java.util.Map; +import java.util.Set; /** * Interface for providing text classification related features. @@ -471,21 +472,15 @@ public interface TextClassifier { * * This method is intended for use by TextClassifier implementations. */ - public List resolveEntityListModifications(@NonNull Collection entities) { - final ArrayList finalList = new ArrayList<>(); + public Collection resolveEntityListModifications( + @NonNull Collection entities) { + final Set finalSet = new HashSet(); if (mUseHints) { - for (String entity : entities) { - if (!mExcludedEntityTypes.contains(entity)) { - finalList.add(entity); - } - } + finalSet.addAll(entities); } - for (String entity : mIncludedEntityTypes) { - if (!mExcludedEntityTypes.contains(entity) && !finalList.contains(entity)) { - finalList.add(entity); - } - } - return finalList; + finalSet.addAll(mIncludedEntityTypes); + finalSet.removeAll(mExcludedEntityTypes); + return finalSet; } /** @@ -566,7 +561,7 @@ public interface TextClassifier { final String string = request.getText().toString(); final TextLinks.Builder links = new TextLinks.Builder(string); - final List entities = request.getEntityConfig() + final Collection entities = request.getEntityConfig() .resolveEntityListModifications(Collections.emptyList()); if (entities.contains(TextClassifier.TYPE_URL)) { addLinks(links, string, TextClassifier.TYPE_URL); diff --git a/core/tests/coretests/src/android/view/textclassifier/TextLinksTest.java b/core/tests/coretests/src/android/view/textclassifier/TextLinksTest.java index fb09e3ee8c9f0..fff723fc544c5 100644 --- a/core/tests/coretests/src/android/view/textclassifier/TextLinksTest.java +++ b/core/tests/coretests/src/android/view/textclassifier/TextLinksTest.java @@ -30,6 +30,7 @@ import org.junit.runner.RunWith; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; @@ -105,7 +106,7 @@ public class TextLinksTest { assertEquals("en-US,de-DE", result.getDefaultLocales().toLanguageTags()); assertEquals(new String[]{TextClassifier.HINT_TEXT_IS_EDITABLE}, result.getEntityConfig().getHints().toArray()); - assertEquals(Arrays.asList("a", "c"), + assertEquals(new HashSet(Arrays.asList("a", "c")), result.getEntityConfig().resolveEntityListModifications(Collections.emptyList())); } }