From 42636b95ed8539267f1ab1f611efb7f6d94cc532 Mon Sep 17 00:00:00 2001 From: Vadim Tryshev Date: Tue, 19 Dec 2023 18:45:15 -0800 Subject: [PATCH 1/4] Waiting for Launcher activity to stop when starting a Launchable into split screen Bug: 313926097 Flag: N/A Test: presubmit Change-Id: I7619b5572625ffd78fefd371e4d78b1496db8962 --- .../android/launcher3/tapl/Launchable.java | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/tests/tapl/com/android/launcher3/tapl/Launchable.java b/tests/tapl/com/android/launcher3/tapl/Launchable.java index fe927b3fd0..b68fc4ed30 100644 --- a/tests/tapl/com/android/launcher3/tapl/Launchable.java +++ b/tests/tapl/com/android/launcher3/tapl/Launchable.java @@ -16,8 +16,6 @@ package com.android.launcher3.tapl; -import static android.view.accessibility.AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED; - import static com.android.launcher3.testing.shared.TestProtocol.SPRING_LOADED_STATE_ORDINAL; import android.graphics.Point; @@ -64,13 +62,7 @@ public abstract class Launchable { + mObject.getVisibleCenter() + " in " + mLauncher.getVisibleBounds(mObject)); - if (launcherStopsAfterLaunch()) { - mLauncher.executeAndWaitForLauncherStop( - () -> mLauncher.clickLauncherObject(mObject), - "clicking the launchable"); - } else { - mLauncher.clickLauncherObject(mObject); - } + performClick(); try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer("clicked")) { expectActivityStartEvents(); @@ -80,6 +72,16 @@ public abstract class Launchable { } } + private void performClick() { + if (launcherStopsAfterLaunch()) { + mLauncher.executeAndWaitForLauncherStop( + () -> mLauncher.clickLauncherObject(mObject), + "clicking the launchable"); + } else { + mLauncher.clickLauncherObject(mObject); + } + } + protected abstract void expectActivityStartEvents(); protected abstract String launchableType(); @@ -97,12 +99,8 @@ public abstract class Launchable { LauncherInstrumentation.log("Launchable.launch before click " + mObject.getVisibleCenter() + " in " + mLauncher.getVisibleBounds( mObject)); - mLauncher.executeAndWaitForLauncherEvent( - () -> mLauncher.clickLauncherObject(mObject), - accessibilityEvent -> - accessibilityEvent.getEventType() == TYPE_WINDOW_STATE_CHANGED, - () -> "Unable to click object to launch split", - "Click launcher object to launch split"); + + performClick(); try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer("clicked")) { mLauncher.expectEvent(TestProtocol.SEQUENCE_MAIN, OverviewTask.SPLIT_START_EVENT); From f00adbeb68abdb53bb087c4c014b59e4ea1dd74d Mon Sep 17 00:00:00 2001 From: Yunfan Chen Date: Fri, 15 Dec 2023 13:13:33 +0900 Subject: [PATCH 2/4] Do not recreate taskbar due to unestimated bounds The change around configuration and display cutout to support flexible display setup is making the received display info is not calculated as the hard-coded way in taskbar. It will cause the taskbar recreated when the device reaches a given rotation for the first time. The recreation is not necessary as it is only a hint of taskbar's estimation doesn't match the result. Block the recreation in that case to avoid user visible animation issue. Bug: 302387383 Test: Rotate a device with movable cutout and no recreation happens Flag: ACONFIG com.android.window.flags.allows_screen_size_decoupled_from_status_bar_and_cutout TRUNKFOOD Flag: ACONFIG com.android.window.flags.movable_cutout_configuration DEVELOPMENT Change-Id: I1aa6add57ec49a49cc7473bfaada6d9212c1fc4b --- .../launcher3/taskbar/TaskbarManager.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index 831bc1167d..5dfef97fec 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -25,6 +25,9 @@ import static com.android.launcher3.BaseActivity.EVENT_DESTROYED; import static com.android.launcher3.LauncherState.OVERVIEW; import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION; import static com.android.launcher3.config.FeatureFlags.enableTaskbarNoRecreate; +import static com.android.launcher3.util.DisplayController.CHANGE_DENSITY; +import static com.android.launcher3.util.DisplayController.CHANGE_NAVIGATION_MODE; +import static com.android.launcher3.util.DisplayController.CHANGE_TASKBAR_PINNING; import static com.android.launcher3.util.DisplayController.TASKBAR_NOT_DESTROYED_TAG; import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; import static com.android.launcher3.util.FlagDebugUtils.formatFlagChange; @@ -55,7 +58,6 @@ import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import com.android.launcher3.DeviceProfile; -import com.android.launcher3.InvariantDeviceProfile.OnIDPChangeListener; import com.android.launcher3.LauncherAppState; import com.android.launcher3.anim.AnimatorPlaybackController; import com.android.launcher3.statemanager.StatefulActivity; @@ -71,7 +73,6 @@ import com.android.quickstep.util.AssistUtils; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.unfold.UnfoldTransitionProgressProvider; import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider; -import com.android.wm.shell.Flags; import java.io.PrintWriter; import java.util.StringJoiner; @@ -135,7 +136,17 @@ public class TaskbarManager { * We use WindowManager's ComponentCallbacks() for internal UI changes (similar to an Activity) * which comes via a different channel */ - private final OnIDPChangeListener mIdpChangeListener = c -> recreateTaskbar(); + private final RecreationListener mRecreationListener = new RecreationListener(); + + private class RecreationListener implements DisplayController.DisplayInfoChangeListener { + @Override + public void onDisplayInfoChanged(Context context, DisplayController.Info info, int flags) { + if ((flags & (CHANGE_DENSITY | CHANGE_NAVIGATION_MODE + | CHANGE_TASKBAR_PINNING)) != 0) { + recreateTaskbar(); + } + } + } private final SettingsCache.OnChangeListener mOnSettingsChangeListener = c -> recreateTaskbar(); private boolean mUserUnlocked = false; @@ -353,7 +364,7 @@ public class TaskbarManager { */ public void onUserUnlocked() { mUserUnlocked = true; - LauncherAppState.getIDP(mContext).addOnChangeListener(mIdpChangeListener); + DisplayController.INSTANCE.get(mContext).addChangeListener(mRecreationListener); recreateTaskbar(); addTaskbarRootViewToWindow(); } @@ -551,7 +562,7 @@ public class TaskbarManager { () -> mTaskbarBroadcastReceiver.unregisterReceiverSafely(mContext)); destroyExistingTaskbar(); if (mUserUnlocked) { - LauncherAppState.getIDP(mContext).removeOnChangeListener(mIdpChangeListener); + DisplayController.INSTANCE.get(mContext).removeChangeListener(mRecreationListener); } SettingsCache.INSTANCE.get(mContext) .unregister(USER_SETUP_COMPLETE_URI, mOnSettingsChangeListener); From 78941bd1a998f0cc923d3477442ea2be10165053 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Tue, 26 Dec 2023 17:27:33 -0800 Subject: [PATCH 3/4] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Iee5a6456177dc64115c3de5d651b7a9aca0ff36d --- quickstep/res/values-zh-rCN/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickstep/res/values-zh-rCN/strings.xml b/quickstep/res/values-zh-rCN/strings.xml index 2c740b7e7f..4d21108dff 100644 --- a/quickstep/res/values-zh-rCN/strings.xml +++ b/quickstep/res/values-zh-rCN/strings.xml @@ -114,7 +114,7 @@ "关闭" "完成" "主屏幕" - "无障碍" + "无障碍功能" "返回" "IME 切换器" "最近用过" From 663c446926934821cb9fe0049a7f9e9ff3a26065 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Tue, 26 Dec 2023 17:27:58 -0800 Subject: [PATCH 4/4] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I500c8f6d2dd74ab7ba3c3fde85d59eb54c75bc79 --- quickstep/res/values-zh-rCN/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickstep/res/values-zh-rCN/strings.xml b/quickstep/res/values-zh-rCN/strings.xml index 3980b21129..05f66222a2 100644 --- a/quickstep/res/values-zh-rCN/strings.xml +++ b/quickstep/res/values-zh-rCN/strings.xml @@ -112,7 +112,7 @@ "关闭" "完成" "主屏幕" - "无障碍" + "无障碍功能" "返回" "IME 切换器" "最近用过"