Merge "Reject smart selection if outside original selection." into oc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
6dcae2b91f
@@ -102,7 +102,9 @@ final class TextClassifierImpl implements TextClassifier {
|
||||
string, selectionStartIndex, selectionEndIndex);
|
||||
final int start = startEnd[0];
|
||||
final int end = startEnd[1];
|
||||
if (start >= 0 && end <= string.length() && start <= end) {
|
||||
if (start <= end
|
||||
&& start >= 0 && end <= string.length()
|
||||
&& start <= selectionStartIndex && end >= selectionEndIndex) {
|
||||
final TextSelection.Builder tsBuilder = new TextSelection.Builder(start, end);
|
||||
final SmartSelection.ClassificationResult[] results =
|
||||
smartSelection.classifyText(
|
||||
|
||||
@@ -40,6 +40,7 @@ import java.util.Locale;
|
||||
public class TextClassificationManagerTest {
|
||||
|
||||
private static final LocaleList LOCALES = LocaleList.forLanguageTags("en");
|
||||
private static final String NO_TYPE = null;
|
||||
|
||||
private TextClassificationManager mTcm;
|
||||
private TextClassifier mClassifier;
|
||||
@@ -101,6 +102,19 @@ public class TextClassificationManagerTest {
|
||||
isTextSelection(smartStartIndex, smartEndIndex, TextClassifier.TYPE_URL));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSmartSelection_withEmoji() {
|
||||
if (isTextClassifierDisabled()) return;
|
||||
|
||||
String text = "\uD83D\uDE02 Hello.";
|
||||
String selected = "Hello";
|
||||
int startIndex = text.indexOf(selected);
|
||||
int endIndex = startIndex + selected.length();
|
||||
|
||||
assertThat(mClassifier.suggestSelection(text, startIndex, endIndex, LOCALES),
|
||||
isTextSelection(startIndex, endIndex, NO_TYPE));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testClassifyText() {
|
||||
if (isTextClassifierDisabled()) return;
|
||||
@@ -172,12 +186,17 @@ public class TextClassificationManagerTest {
|
||||
TextSelection selection = (TextSelection) o;
|
||||
return startIndex == selection.getSelectionStartIndex()
|
||||
&& endIndex == selection.getSelectionEndIndex()
|
||||
&& selection.getEntityCount() > 0
|
||||
&& type.equals(selection.getEntity(0));
|
||||
&& typeMatches(selection, type);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean typeMatches(TextSelection selection, String type) {
|
||||
return type == null
|
||||
|| (selection.getEntityCount() > 0
|
||||
&& type.trim().equalsIgnoreCase(selection.getEntity(0)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void describeTo(Description description) {
|
||||
description.appendValue(
|
||||
|
||||
Reference in New Issue
Block a user