diff options
| author | Ahaan Ugale <augale@google.com> | 2021-05-03 19:45:02 -0700 |
|---|---|---|
| committer | Ahaan Ugale <augale@google.com> | 2021-05-04 05:35:26 +0000 |
| commit | e19085a0cd4a5f6705d352d8d681ff061ed9b31c (patch) | |
| tree | 1d6afc96628493f70a4a721f5d7ec0244937e772 | |
| parent | 19a0cc757477855e2d7296c9b4b248481432e691 (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.java | 10 |
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(); |
