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

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

Merge "Fix translation reference gone problem." into sc-dev am: 3d088cbb

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

Change-Id: If5e44d08cf649d90380a7ccb14ed833f17d42b14
parents 4861ac8b 3d088cbb
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -168,8 +168,10 @@ public final class TranslationManager {
                                return;
                            }

                            synchronized (mLock) {
                                mTranslators.put(tId, translator);
                                mTranslatorIds.put(translationContext, tId);
                            }
                            final long token = Binder.clearCallingIdentity();
                            try {
                                executor.execute(() -> callback.accept(translator));
+6 −11
Original line number Diff line number Diff line
@@ -102,19 +102,19 @@ public class Translator {

    static class ServiceBinderReceiver extends IResultReceiver.Stub {
        // TODO: refactor how translator is instantiated after removing deprecated createTranslator.
        private final WeakReference<Translator> mTranslator;
        private final Translator mTranslator;
        private final CountDownLatch mLatch = new CountDownLatch(1);
        private int mSessionId;

        private Consumer<Translator> mCallback;

        ServiceBinderReceiver(Translator translator, Consumer<Translator> callback) {
            mTranslator = new WeakReference<>(translator);
            mTranslator = translator;
            mCallback = callback;
        }

        ServiceBinderReceiver(Translator translator) {
            mTranslator = new WeakReference<>(translator);
            mTranslator = translator;
        }

        int getSessionStateResult() throws TimeoutException {
@@ -139,14 +139,9 @@ public class Translator {
                }
                return;
            }
            mSessionId = resultData.getInt(EXTRA_SESSION_ID);
            final Translator translator = mTranslator.get();
            if (translator == null) {
                Log.w(TAG, "received result after session is finished");
                return;
            }
            final IBinder binder;
            if (resultData != null) {
                mSessionId = resultData.getInt(EXTRA_SESSION_ID);
                binder = resultData.getBinder(EXTRA_SERVICE_BINDER);
                if (binder == null) {
                    Log.wtf(TAG, "No " + EXTRA_SERVICE_BINDER + " extra result");
@@ -155,10 +150,10 @@ public class Translator {
            } else {
                binder = null;
            }
            translator.setServiceBinder(binder);
            mTranslator.setServiceBinder(binder);
            mLatch.countDown();
            if (mCallback != null) {
                mCallback.accept(translator);
                mCallback.accept(mTranslator);
            }
        }