Merge "Fix translation reference gone problem." into sc-dev

This commit is contained in:
Joanne Chung
2021-07-02 03:58:36 +00:00
committed by Android (Google) Code Review
2 changed files with 10 additions and 13 deletions

View File

@@ -168,8 +168,10 @@ public final class TranslationManager {
return;
}
mTranslators.put(tId, translator);
mTranslatorIds.put(translationContext, tId);
synchronized (mLock) {
mTranslators.put(tId, translator);
mTranslatorIds.put(translationContext, tId);
}
final long token = Binder.clearCallingIdentity();
try {
executor.execute(() -> callback.accept(translator));

View File

@@ -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);
}
}