Loading core/java/android/widget/SelectionActionModeHelper.java +24 −8 Original line number Diff line number Diff line Loading @@ -60,12 +60,6 @@ public final class SelectionActionModeHelper { private static final String LOG_TAG = "SelectActionModeHelper"; /** * Maximum time (in milliseconds) to wait for a result before timing out. */ // TODO: Consider making this a ViewConfiguration. private static final int TIMEOUT_DURATION = 200; private static final boolean SMART_SELECT_ANIMATION_ENABLED = true; private final Editor mEditor; Loading Loading @@ -111,7 +105,7 @@ public final class SelectionActionModeHelper { resetTextClassificationHelper(); mTextClassificationAsyncTask = new TextClassificationAsyncTask( mTextView, TIMEOUT_DURATION, mTextClassificationHelper.getTimeoutDuration(), adjustSelection ? mTextClassificationHelper::suggestSelection : mTextClassificationHelper::classifyText, Loading @@ -130,7 +124,7 @@ public final class SelectionActionModeHelper { resetTextClassificationHelper(); mTextClassificationAsyncTask = new TextClassificationAsyncTask( mTextView, TIMEOUT_DURATION, mTextClassificationHelper.getTimeoutDuration(), mTextClassificationHelper::classifyText, this::invalidateActionMode) .execute(); Loading Loading @@ -258,6 +252,7 @@ public final class SelectionActionModeHelper { return result; } // TODO: Move public pure functions out of this class and make it package-private. /** * Merges a {@link RectF} into an existing list of rectangles. While merging, this method * makes sure that: Loading Loading @@ -789,6 +784,9 @@ public final class SelectionActionModeHelper { private LocaleList mLastClassificationLocales; private SelectionResult mLastClassificationResult; /** Whether the TextClassifier has been initialized. */ private boolean mHot; TextClassificationHelper(TextClassifier textClassifier, CharSequence text, int selectionStart, int selectionEnd, LocaleList locales) { reset(textClassifier, text, selectionStart, selectionEnd, locales); Loading @@ -808,11 +806,13 @@ public final class SelectionActionModeHelper { @WorkerThread public SelectionResult classifyText() { mHot = true; return performClassification(null /* selection */); } @WorkerThread public SelectionResult suggestSelection() { mHot = true; trimText(); final TextSelection selection = mTextClassifier.suggestSelection( mTrimmedText, mRelativeStart, mRelativeEnd, mLocales); Loading @@ -821,6 +821,22 @@ public final class SelectionActionModeHelper { return performClassification(selection); } /** * Maximum time (in milliseconds) to wait for a textclassifier result before timing out. */ // TODO: Consider making this a ViewConfiguration. public int getTimeoutDuration() { if (mHot) { return 200; } else { // Return a slightly larger number than usual when the TextClassifier is first // initialized. Initialization would usually take longer than subsequent calls to // the TextClassifier. The impact of this on the UI is that we do not show the // selection handles or toolbar until after this timeout. return 500; } } private SelectionResult performClassification(@Nullable TextSelection selection) { if (!Objects.equals(mText, mLastClassificationText) || mSelectionStart != mLastClassificationSelectionStart Loading Loading
core/java/android/widget/SelectionActionModeHelper.java +24 −8 Original line number Diff line number Diff line Loading @@ -60,12 +60,6 @@ public final class SelectionActionModeHelper { private static final String LOG_TAG = "SelectActionModeHelper"; /** * Maximum time (in milliseconds) to wait for a result before timing out. */ // TODO: Consider making this a ViewConfiguration. private static final int TIMEOUT_DURATION = 200; private static final boolean SMART_SELECT_ANIMATION_ENABLED = true; private final Editor mEditor; Loading Loading @@ -111,7 +105,7 @@ public final class SelectionActionModeHelper { resetTextClassificationHelper(); mTextClassificationAsyncTask = new TextClassificationAsyncTask( mTextView, TIMEOUT_DURATION, mTextClassificationHelper.getTimeoutDuration(), adjustSelection ? mTextClassificationHelper::suggestSelection : mTextClassificationHelper::classifyText, Loading @@ -130,7 +124,7 @@ public final class SelectionActionModeHelper { resetTextClassificationHelper(); mTextClassificationAsyncTask = new TextClassificationAsyncTask( mTextView, TIMEOUT_DURATION, mTextClassificationHelper.getTimeoutDuration(), mTextClassificationHelper::classifyText, this::invalidateActionMode) .execute(); Loading Loading @@ -258,6 +252,7 @@ public final class SelectionActionModeHelper { return result; } // TODO: Move public pure functions out of this class and make it package-private. /** * Merges a {@link RectF} into an existing list of rectangles. While merging, this method * makes sure that: Loading Loading @@ -789,6 +784,9 @@ public final class SelectionActionModeHelper { private LocaleList mLastClassificationLocales; private SelectionResult mLastClassificationResult; /** Whether the TextClassifier has been initialized. */ private boolean mHot; TextClassificationHelper(TextClassifier textClassifier, CharSequence text, int selectionStart, int selectionEnd, LocaleList locales) { reset(textClassifier, text, selectionStart, selectionEnd, locales); Loading @@ -808,11 +806,13 @@ public final class SelectionActionModeHelper { @WorkerThread public SelectionResult classifyText() { mHot = true; return performClassification(null /* selection */); } @WorkerThread public SelectionResult suggestSelection() { mHot = true; trimText(); final TextSelection selection = mTextClassifier.suggestSelection( mTrimmedText, mRelativeStart, mRelativeEnd, mLocales); Loading @@ -821,6 +821,22 @@ public final class SelectionActionModeHelper { return performClassification(selection); } /** * Maximum time (in milliseconds) to wait for a textclassifier result before timing out. */ // TODO: Consider making this a ViewConfiguration. public int getTimeoutDuration() { if (mHot) { return 200; } else { // Return a slightly larger number than usual when the TextClassifier is first // initialized. Initialization would usually take longer than subsequent calls to // the TextClassifier. The impact of this on the UI is that we do not show the // selection handles or toolbar until after this timeout. return 500; } } private SelectionResult performClassification(@Nullable TextSelection selection) { if (!Objects.equals(mText, mLastClassificationText) || mSelectionStart != mLastClassificationSelectionStart Loading