summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAhaan Ugale <augale@google.com>2021-05-03 19:45:02 -0700
committerAhaan Ugale <augale@google.com>2021-05-04 05:35:26 +0000
commite19085a0cd4a5f6705d352d8d681ff061ed9b31c (patch)
tree1d6afc96628493f70a4a721f5d7ec0244937e772
parent19a0cc757477855e2d7296c9b4b248481432e691 (diff)
Fix UiTranslationStateCallback crash due to null locales.
The locales aren't available on a RESUMED event; now they're stored on a STARTED event. The crash happens because the default Callback impl converts the Locale to a string to support a deprecated method. Fix: 186392998 Test: manual - install test apk which triggers the crash. no crash with this change. Change-Id: Iaceca8d29f4c2b0d692c8f6780b0ab963e4e2243
-rw-r--r--core/java/android/view/translation/UiTranslationManager.java10
1 files changed, 7 insertions, 3 deletions
diff --git a/core/java/android/view/translation/UiTranslationManager.java b/core/java/android/view/translation/UiTranslationManager.java
index 541b4941c62e..7726086a4787 100644
--- a/core/java/android/view/translation/UiTranslationManager.java
+++ b/core/java/android/view/translation/UiTranslationManager.java
@@ -315,6 +315,8 @@ public final class UiTranslationManager {
private static class UiTranslationStateRemoteCallback extends IRemoteCallback.Stub {
private final Executor mExecutor;
private final UiTranslationStateCallback mCallback;
+ private ULocale mSourceLocale;
+ private ULocale mTargetLocale;
UiTranslationStateRemoteCallback(Executor executor,
UiTranslationStateCallback callback) {
@@ -331,10 +333,12 @@ public final class UiTranslationManager {
int state = bundle.getInt(EXTRA_STATE);
switch (state) {
case STATE_UI_TRANSLATION_STARTED:
+ mSourceLocale = (ULocale) bundle.getSerializable(EXTRA_SOURCE_LOCALE);
+ mTargetLocale = (ULocale) bundle.getSerializable(EXTRA_TARGET_LOCALE);
+ mCallback.onStarted(mSourceLocale, mTargetLocale);
+ break;
case STATE_UI_TRANSLATION_RESUMED:
- mCallback.onStarted(
- (ULocale) bundle.getSerializable(EXTRA_SOURCE_LOCALE),
- (ULocale) bundle.getSerializable(EXTRA_TARGET_LOCALE));
+ mCallback.onStarted(mSourceLocale, mTargetLocale);
break;
case STATE_UI_TRANSLATION_PAUSED:
mCallback.onPaused();