From 5f68630b151882d887498625d500fc518e2c18da Mon Sep 17 00:00:00 2001 From: Joanne Chung Date: Wed, 8 Sep 2021 21:05:49 +0800 Subject: [PATCH] Allow translation should also work on non-resume state Currently, we only allow translation for the resumed Activity. It works fine for full screen Activity. On foldable devices, we may have two Activity in the same time. It is possible one Activity is on the paused state but there is still new incoming message, we should also allow the message can be translated. Bug: 199264898 Test: atest CtsTranslationTestCases Test: manual. Use one Activity targetsdk prior to Q then receiving broadcast to start Ui translation on paused state in split mode. Change-Id: I6720b41d9995c9ced2e3b2b87eb95540101d15a0 --- .../translation/UiTranslationController.java | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/core/java/android/view/translation/UiTranslationController.java b/core/java/android/view/translation/UiTranslationController.java index 442d099f06785..eca74812a7e91 100644 --- a/core/java/android/view/translation/UiTranslationController.java +++ b/core/java/android/view/translation/UiTranslationController.java @@ -110,11 +110,10 @@ public class UiTranslationController { public void updateUiTranslationState(@UiTranslationState int state, TranslationSpec sourceSpec, TranslationSpec targetSpec, List views, UiTranslationSpec uiTranslationSpec) { - if (!mActivity.isResumed() && (state == STATE_UI_TRANSLATION_STARTED - || state == STATE_UI_TRANSLATION_RESUMED)) { + if (mActivity.isDestroyed()) { + Log.i(TAG, "Cannot update " + stateToString(state) + " for destroyed " + mActivity); return; } - Log.i(TAG, "updateUiTranslationState state: " + stateToString(state) + (DEBUG ? (", views: " + views + ", spec: " + uiTranslationSpec) : "")); synchronized (mLock) { @@ -342,10 +341,8 @@ public class UiTranslationController { */ private void onVirtualViewTranslationCompleted( SparseArray> translatedResult) { - if (!mActivity.isResumed()) { - if (DEBUG) { - Log.v(TAG, "onTranslationCompleted: Activity is not resumed."); - } + if (mActivity.isDestroyed()) { + Log.v(TAG, "onTranslationCompleted:" + mActivity + "is destroyed."); return; } synchronized (mLock) { @@ -393,10 +390,8 @@ public class UiTranslationController { * The method is used to handle the translation result for non-vertual views. */ private void onTranslationCompleted(SparseArray translatedResult) { - if (!mActivity.isResumed()) { - if (DEBUG) { - Log.v(TAG, "onTranslationCompleted: Activity is not resumed."); - } + if (mActivity.isDestroyed()) { + Log.v(TAG, "onTranslationCompleted:" + mActivity + "is destroyed."); return; } final int resultCount = translatedResult.size();