Loading core/java/android/widget/SelectionActionModeHelper.java +28 −5 Original line number Diff line number Diff line Loading @@ -156,7 +156,8 @@ public final class SelectionActionModeHelper { mSmartSelectSprite != null ? this::startSelectionActionModeWithSmartSelectAnimation : this::startSelectionActionMode, mTextClassificationHelper::getOriginalSelection) mTextClassificationHelper::getOriginalSelection, mTextClassificationHelper::isTextClassifierDestroyed) .execute(); } } Loading @@ -178,7 +179,8 @@ public final class SelectionActionModeHelper { mTextClassificationHelper.getTimeoutDuration(), mTextClassificationHelper::classifyText, this::startLinkActionMode, mTextClassificationHelper::getOriginalSelection) mTextClassificationHelper::getOriginalSelection, mTextClassificationHelper::isTextClassifierDestroyed) .execute(); } } Loading @@ -194,7 +196,8 @@ public final class SelectionActionModeHelper { mTextClassificationHelper.getTimeoutDuration(), mTextClassificationHelper::classifyText, this::invalidateActionMode, mTextClassificationHelper::getOriginalSelection) mTextClassificationHelper::getOriginalSelection, mTextClassificationHelper::isTextClassifierDestroyed) .execute(); } } Loading Loading @@ -992,6 +995,7 @@ public final class SelectionActionModeHelper { private final Supplier<SelectionResult> mSelectionResultSupplier; private final Consumer<SelectionResult> mSelectionResultCallback; private final Supplier<SelectionResult> mTimeOutResultSupplier; private final Supplier<Boolean> mIsTextClassifierDestroyedSupplier; private final TextView mTextView; private final String mOriginalText; Loading @@ -1006,13 +1010,16 @@ public final class SelectionActionModeHelper { @NonNull TextView textView, int timeOut, @NonNull Supplier<SelectionResult> selectionResultSupplier, @NonNull Consumer<SelectionResult> selectionResultCallback, @NonNull Supplier<SelectionResult> timeOutResultSupplier) { @NonNull Supplier<SelectionResult> timeOutResultSupplier, @NonNull Supplier<Boolean> isTextClassifierDestroyedSupplier) { super(textView != null ? textView.getHandler() : null); mTextView = Objects.requireNonNull(textView); mTimeOutDuration = timeOut; mSelectionResultSupplier = Objects.requireNonNull(selectionResultSupplier); mSelectionResultCallback = Objects.requireNonNull(selectionResultCallback); mTimeOutResultSupplier = Objects.requireNonNull(timeOutResultSupplier); mIsTextClassifierDestroyedSupplier = Objects.requireNonNull(isTextClassifierDestroyedSupplier); // Make a copy of the original text. mOriginalText = getText(mTextView).toString(); } Loading @@ -1022,7 +1029,19 @@ public final class SelectionActionModeHelper { protected SelectionResult doInBackground(Void... params) { final Runnable onTimeOut = this::onTimeOut; mTextView.postDelayed(onTimeOut, mTimeOutDuration); final SelectionResult result = mSelectionResultSupplier.get(); SelectionResult result = null; try { result = mSelectionResultSupplier.get(); } catch (IllegalStateException e) { // Swallows the exception if the text classifier session is destroyed if (mIsTextClassifierDestroyedSupplier.get()) { Log.w(LOG_TAG, "TextClassificationAsyncTask failed because TextClassifier destroyed", e); } else { throw e; } } mTextView.removeCallbacks(onTimeOut); return result; } Loading Loading @@ -1154,6 +1173,10 @@ public final class SelectionActionModeHelper { } } public boolean isTextClassifierDestroyed() { return mTextClassifier.get().isDestroyed(); } private boolean isDarkLaunchEnabled() { return TextClassificationManager.getSettings(mContext).isModelDarkLaunchEnabled(); } Loading Loading
core/java/android/widget/SelectionActionModeHelper.java +28 −5 Original line number Diff line number Diff line Loading @@ -156,7 +156,8 @@ public final class SelectionActionModeHelper { mSmartSelectSprite != null ? this::startSelectionActionModeWithSmartSelectAnimation : this::startSelectionActionMode, mTextClassificationHelper::getOriginalSelection) mTextClassificationHelper::getOriginalSelection, mTextClassificationHelper::isTextClassifierDestroyed) .execute(); } } Loading @@ -178,7 +179,8 @@ public final class SelectionActionModeHelper { mTextClassificationHelper.getTimeoutDuration(), mTextClassificationHelper::classifyText, this::startLinkActionMode, mTextClassificationHelper::getOriginalSelection) mTextClassificationHelper::getOriginalSelection, mTextClassificationHelper::isTextClassifierDestroyed) .execute(); } } Loading @@ -194,7 +196,8 @@ public final class SelectionActionModeHelper { mTextClassificationHelper.getTimeoutDuration(), mTextClassificationHelper::classifyText, this::invalidateActionMode, mTextClassificationHelper::getOriginalSelection) mTextClassificationHelper::getOriginalSelection, mTextClassificationHelper::isTextClassifierDestroyed) .execute(); } } Loading Loading @@ -992,6 +995,7 @@ public final class SelectionActionModeHelper { private final Supplier<SelectionResult> mSelectionResultSupplier; private final Consumer<SelectionResult> mSelectionResultCallback; private final Supplier<SelectionResult> mTimeOutResultSupplier; private final Supplier<Boolean> mIsTextClassifierDestroyedSupplier; private final TextView mTextView; private final String mOriginalText; Loading @@ -1006,13 +1010,16 @@ public final class SelectionActionModeHelper { @NonNull TextView textView, int timeOut, @NonNull Supplier<SelectionResult> selectionResultSupplier, @NonNull Consumer<SelectionResult> selectionResultCallback, @NonNull Supplier<SelectionResult> timeOutResultSupplier) { @NonNull Supplier<SelectionResult> timeOutResultSupplier, @NonNull Supplier<Boolean> isTextClassifierDestroyedSupplier) { super(textView != null ? textView.getHandler() : null); mTextView = Objects.requireNonNull(textView); mTimeOutDuration = timeOut; mSelectionResultSupplier = Objects.requireNonNull(selectionResultSupplier); mSelectionResultCallback = Objects.requireNonNull(selectionResultCallback); mTimeOutResultSupplier = Objects.requireNonNull(timeOutResultSupplier); mIsTextClassifierDestroyedSupplier = Objects.requireNonNull(isTextClassifierDestroyedSupplier); // Make a copy of the original text. mOriginalText = getText(mTextView).toString(); } Loading @@ -1022,7 +1029,19 @@ public final class SelectionActionModeHelper { protected SelectionResult doInBackground(Void... params) { final Runnable onTimeOut = this::onTimeOut; mTextView.postDelayed(onTimeOut, mTimeOutDuration); final SelectionResult result = mSelectionResultSupplier.get(); SelectionResult result = null; try { result = mSelectionResultSupplier.get(); } catch (IllegalStateException e) { // Swallows the exception if the text classifier session is destroyed if (mIsTextClassifierDestroyedSupplier.get()) { Log.w(LOG_TAG, "TextClassificationAsyncTask failed because TextClassifier destroyed", e); } else { throw e; } } mTextView.removeCallbacks(onTimeOut); return result; } Loading Loading @@ -1154,6 +1173,10 @@ public final class SelectionActionModeHelper { } } public boolean isTextClassifierDestroyed() { return mTextClassifier.get().isDestroyed(); } private boolean isDarkLaunchEnabled() { return TextClassificationManager.getSettings(mContext).isModelDarkLaunchEnabled(); } Loading