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

Commit 1aa6648c authored by Joanne Chung's avatar Joanne Chung Committed by Automerger Merge Worker
Browse files

Merge "Fix the Translator references are gone when receiving response." into...

Merge "Fix the Translator references are gone when receiving response." into sc-dev am: 9d17b85c am: fb94c273

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15444547

Change-Id: Ib5ba66d50444906511b6acb32c6952537f6923bd
parents 19f60238 fb94c273
Loading
Loading
Loading
Loading
+14 −15
Original line number Original line Diff line number Diff line
@@ -18,6 +18,7 @@ package android.view.translation;


import static android.view.translation.TranslationManager.STATUS_SYNC_CALL_FAIL;
import static android.view.translation.TranslationManager.STATUS_SYNC_CALL_FAIL;
import static android.view.translation.TranslationManager.SYNC_CALLS_TIMEOUT_MS;
import static android.view.translation.TranslationManager.SYNC_CALLS_TIMEOUT_MS;
import static android.view.translation.UiTranslationController.DEBUG;


import android.annotation.CallbackExecutor;
import android.annotation.CallbackExecutor;
import android.annotation.NonNull;
import android.annotation.NonNull;
@@ -38,7 +39,6 @@ import com.android.internal.annotations.GuardedBy;
import com.android.internal.os.IResultReceiver;
import com.android.internal.os.IResultReceiver;


import java.io.PrintWriter;
import java.io.PrintWriter;
import java.lang.ref.WeakReference;
import java.util.Objects;
import java.util.Objects;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.concurrent.Executor;
@@ -395,28 +395,27 @@ public class Translator {


    private static class TranslationResponseCallbackImpl extends ITranslationCallback.Stub {
    private static class TranslationResponseCallbackImpl extends ITranslationCallback.Stub {


        private final WeakReference<Consumer<TranslationResponse>> mCallback;
        private final Consumer<TranslationResponse> mCallback;
        private final WeakReference<Executor> mExecutor;
        private final Executor mExecutor;


        TranslationResponseCallbackImpl(Consumer<TranslationResponse> callback, Executor executor) {
        TranslationResponseCallbackImpl(Consumer<TranslationResponse> callback, Executor executor) {
            mCallback = new WeakReference<>(callback);
            mCallback = callback;
            mExecutor = new WeakReference<>(executor);
            mExecutor = executor;
        }
        }


        @Override
        @Override
        public void onTranslationResponse(TranslationResponse response) throws RemoteException {
        public void onTranslationResponse(TranslationResponse response) throws RemoteException {
            final Consumer<TranslationResponse> callback = mCallback.get();
            if (DEBUG) {
                Log.i(TAG, "onTranslationResponse called.");
            }
            final Runnable runnable =
            final Runnable runnable =
                    () -> callback.accept(response);
                    () -> mCallback.accept(response);
            if (callback != null) {
                final Executor executor = mExecutor.get();
            final long token = Binder.clearCallingIdentity();
            final long token = Binder.clearCallingIdentity();
            try {
            try {
                    executor.execute(runnable);
                mExecutor.execute(runnable);
            } finally {
            } finally {
                restoreCallingIdentity(token);
                restoreCallingIdentity(token);
            }
            }
        }
        }
    }
    }
}
}
}