Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0287b472 authored by Joanne Chung's avatar Joanne Chung Committed by Android (Google) Code Review
Browse files

Merge "Fix the existing translation doesn't update for new translated result." into sc-qpr1-dev

parents ea07bec3 7672bbc9
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -62,6 +62,13 @@ public class TranslationTransformationMethod implements TransformationMethod2 {
        return mOriginalTranslationMethod;
    }

    /**
     * Returns the {@link TextView}'s {@link ViewTranslationResponse}.
     */
    public ViewTranslationResponse getViewTranslationResponse() {
        return mTranslationResponse;
    }

    @Override
    public CharSequence getTransformation(CharSequence source, View view) {
        if (!mAllowLengthChanges) {
+5 −0
Original line number Diff line number Diff line
@@ -41,6 +41,11 @@ public interface ViewTranslationCallback {
     * method will not be called before {@link View#onViewTranslationResponse} or
     * {@link View#onVirtualViewTranslationResponses}.
     *
     * <p> NOTE: It is possible the user changes text that causes a new
     * {@link ViewTranslationResponse} returns to show the new translation. If you cache the
     * {@link ViewTranslationResponse} here, you should remember to keep the cached value up
     * to date.
     *
     * <p> NOTE: For TextView implementation, {@link ContentCaptureSession#notifyViewTextChanged}
     * shouldn't be called with the translated text, simply calling setText() here will trigger the
     * method. You should either override {@code View#onProvideContentCaptureStructure()} to report
+6 −1
Original line number Diff line number Diff line
@@ -70,7 +70,12 @@ public class TextViewTranslationCallback implements ViewTranslationCallback {
                    + "onViewTranslationResponse().");
            return false;
        }
        if (mTranslationTransformation == null) {
        // It is possible user changes text and new translation response returns, system should
        // update the translation response to keep the result up to date.
        // Because TextView.setTransformationMethod() will skip the same TransformationMethod
        // instance, we should create a new one to let new translation can work.
        if (mTranslationTransformation == null
                || !response.equals(mTranslationTransformation.getViewTranslationResponse())) {
            TransformationMethod originalTranslationMethod =
                    ((TextView) view).getTransformationMethod();
            mTranslationTransformation = new TranslationTransformationMethod(response,