From f2d7be1cec896d8b6ad69e3271fd057a32d02b9a Mon Sep 17 00:00:00 2001 From: Tracy Zhou Date: Thu, 2 Nov 2023 17:33:51 -0700 Subject: [PATCH] Make enableTaskbarNoRecreate() depend on ENABLE_TASKBAR_PINNING and ENABLE_TASKBAR_NAVBAR_UNIFICATION We want to turn on the flag when either of the dependent features is on Bug: 299193589 Test: N/A Change-Id: I7b48ff2be0cf9da3b6bc00d75370fa585ce4140d --- .../taskbar/NavbarButtonsViewController.java | 3 ++- .../taskbar/TaskbarActivityContext.java | 2 +- .../launcher3/taskbar/TaskbarDragLayer.java | 4 +++- .../taskbar/TaskbarInsetsController.kt | 3 ++- .../launcher3/taskbar/TaskbarManager.java | 6 ++---- .../taskbar/TaskbarViewController.java | 3 ++- .../navbutton/NavButtonLayoutFactoryTest.kt | 17 +++++++++-------- .../android/launcher3/config/FeatureFlags.java | 10 +++++++++- 8 files changed, 30 insertions(+), 18 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java index a832f756fa..0ef454150b 100644 --- a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java @@ -23,6 +23,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL; import static com.android.launcher3.LauncherAnimUtils.ROTATION_DRAWABLE_PERCENT; import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_X; import static com.android.launcher3.Utilities.getDescendantCoordRelativeToAncestor; +import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION; import static com.android.launcher3.taskbar.LauncherTaskbarUIController.SYSUI_SURFACE_PROGRESS_INDEX; import static com.android.launcher3.taskbar.TaskbarManager.isPhoneButtonNavMode; import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_A11Y; @@ -734,7 +735,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT // TODO(b/244231596) we're getting the incorrect kidsMode value in small-screen boolean isInKidsMode = mContext.isNavBarKidsModeActive(); - if (TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION) { + if (ENABLE_TASKBAR_NAVBAR_UNIFICATION) { NavButtonLayoutter navButtonLayoutter = NavButtonLayoutFactory.Companion.getUiLayoutter( dp, mNavButtonsView, mImeSwitcherButton, diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 1d949e29bb..db1ea42c12 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -30,12 +30,12 @@ import static com.android.launcher3.AbstractFloatingView.TYPE_TASKBAR_OVERLAY_PR import static com.android.launcher3.Flags.enableCursorHoverStates; import static com.android.launcher3.Utilities.calculateTextHeight; import static com.android.launcher3.Utilities.isRunningInTestHarness; +import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION; import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_PINNING; import static com.android.launcher3.config.FeatureFlags.enableTaskbarNoRecreate; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_FOLDER_OPEN; import static com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_DRAGGING; import static com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_FULLSCREEN; -import static com.android.launcher3.taskbar.TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION; import static com.android.launcher3.testing.shared.ResourceUtils.getBoolByName; import static com.android.launcher3.util.VibratorWrapper.EFFECT_CLICK; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE; diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java index 33ec5a31cd..a24cf4ba58 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java @@ -18,6 +18,8 @@ package com.android.launcher3.taskbar; import static android.view.KeyEvent.ACTION_UP; import static android.view.KeyEvent.KEYCODE_BACK; +import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION; + import android.content.Context; import android.graphics.Canvas; import android.graphics.RectF; @@ -126,7 +128,7 @@ public class TaskbarDragLayer extends BaseDragLayer { } protected void onDestroy() { - onDestroy(!TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION); + onDestroy(!ENABLE_TASKBAR_NAVBAR_UNIFICATION); } @Override diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt index f1bf4b1888..1a34b7a267 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt @@ -41,6 +41,7 @@ import com.android.internal.policy.GestureNavigationSettingsObserver import com.android.launcher3.DeviceProfile import com.android.launcher3.R import com.android.launcher3.anim.AlphaUpdateListener +import com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION import com.android.launcher3.config.FeatureFlags.enableTaskbarNoRecreate import com.android.launcher3.taskbar.TaskbarControllers.LoggableTaskbarController import com.android.launcher3.util.DisplayController @@ -253,7 +254,7 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas visInsetsSizeForTappableElement ), ) - if ((context.isGestureNav || TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION) + if ((context.isGestureNav || ENABLE_TASKBAR_NAVBAR_UNIFICATION) && provider.type == tappableElement()) { provider.insetsSizeOverrides = insetsSizeOverrideForTappableElement } else if (provider.type != systemGestures()) { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index ac9c4c7702..c0b07e7412 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -23,6 +23,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL; 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.TASKBAR_NOT_DESTROYED_TAG; import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; @@ -98,9 +99,6 @@ public class TaskbarManager { | ActivityInfo.CONFIG_SCREEN_LAYOUT | ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE; - public static final boolean ENABLE_TASKBAR_NAVBAR_UNIFICATION = - Flags.enableTaskbarNavbarUnification(); - private static final Uri USER_SETUP_COMPLETE_URI = Settings.Secure.getUriFor( Settings.Secure.USER_SETUP_COMPLETE); @@ -494,7 +492,7 @@ public class TaskbarManager { * and we are using a single window for taskbar and navbar. */ public static boolean isPhoneMode(DeviceProfile deviceProfile) { - return TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION && deviceProfile.isPhone; + return ENABLE_TASKBAR_NAVBAR_UNIFICATION && deviceProfile.isPhone; } /** diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java index 0073dc84f9..8f43a2f5b6 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java @@ -25,6 +25,7 @@ import static com.android.launcher3.Utilities.mapRange; import static com.android.launcher3.Utilities.squaredHypot; import static com.android.launcher3.anim.AnimatedFloat.VALUE; import static com.android.launcher3.anim.AnimatorListeners.forEndCallback; +import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION; import static com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_PINNING; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_ALLAPPS_BUTTON_TAP; import static com.android.launcher3.taskbar.TaskbarPinningController.PINNING_PERSISTENT; @@ -214,7 +215,7 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar mActivity.addOnDeviceProfileChangeListener(mDeviceProfileChangeListener); - if (TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION) { + if (ENABLE_TASKBAR_NAVBAR_UNIFICATION) { // This gets modified in NavbarButtonsViewController, but the initial value it reads // may be incorrect since it's state gets destroyed on taskbar recreate, so reset here mTaskbarIconAlpha.get(ALPHA_INDEX_SMALL_SCREEN) diff --git a/quickstep/tests/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactoryTest.kt b/quickstep/tests/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactoryTest.kt index 00756adfc6..9c7f0144c1 100644 --- a/quickstep/tests/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactoryTest.kt +++ b/quickstep/tests/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactoryTest.kt @@ -12,6 +12,7 @@ import android.widget.LinearLayout import androidx.test.runner.AndroidJUnit4 import com.android.launcher3.DeviceProfile import com.android.launcher3.R +import com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_NAVBAR_UNIFICATION import com.android.launcher3.taskbar.TaskbarManager import com.android.systemui.shared.rotation.RotationButton import java.lang.IllegalStateException @@ -59,7 +60,7 @@ class NavButtonLayoutFactoryTest { @Test fun getKidsLayoutter() { - assumeTrue(TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION) + assumeTrue(ENABLE_TASKBAR_NAVBAR_UNIFICATION) mockDeviceProfile.isTaskbarPresent = true val layoutter: NavButtonLayoutFactory.NavButtonLayoutter = getLayoutter( @@ -74,7 +75,7 @@ class NavButtonLayoutFactoryTest { @Test fun getSetupLayoutter() { - assumeTrue(TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION) + assumeTrue(ENABLE_TASKBAR_NAVBAR_UNIFICATION) mockDeviceProfile.isTaskbarPresent = true val layoutter: NavButtonLayoutFactory.NavButtonLayoutter = getLayoutter( @@ -89,7 +90,7 @@ class NavButtonLayoutFactoryTest { @Test fun getTaskbarNavLayoutter() { - assumeTrue(TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION) + assumeTrue(ENABLE_TASKBAR_NAVBAR_UNIFICATION) mockDeviceProfile.isTaskbarPresent = true val layoutter: NavButtonLayoutFactory.NavButtonLayoutter = getLayoutter( @@ -104,7 +105,7 @@ class NavButtonLayoutFactoryTest { @Test(expected = IllegalStateException::class) fun noValidLayoutForLargeScreenTaskbarNotPresent() { - assumeTrue(TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION) + assumeTrue(ENABLE_TASKBAR_NAVBAR_UNIFICATION) mockDeviceProfile.isTaskbarPresent = false getLayoutter( isKidsMode = false, @@ -117,7 +118,7 @@ class NavButtonLayoutFactoryTest { @Test fun getTaskbarPortraitLayoutter() { - assumeTrue(TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION) + assumeTrue(ENABLE_TASKBAR_NAVBAR_UNIFICATION) mockDeviceProfile.isTaskbarPresent = false val layoutter: NavButtonLayoutFactory.NavButtonLayoutter = getLayoutter( @@ -132,7 +133,7 @@ class NavButtonLayoutFactoryTest { @Test fun getTaskbarLandscapeLayoutter() { - assumeTrue(TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION) + assumeTrue(ENABLE_TASKBAR_NAVBAR_UNIFICATION) mockDeviceProfile.isTaskbarPresent = false setDeviceProfileLandscape() val layoutter: NavButtonLayoutFactory.NavButtonLayoutter = @@ -148,7 +149,7 @@ class NavButtonLayoutFactoryTest { @Test fun getTaskbarSeascapeLayoutter() { - assumeTrue(TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION) + assumeTrue(ENABLE_TASKBAR_NAVBAR_UNIFICATION) mockDeviceProfile.isTaskbarPresent = false setDeviceProfileLandscape() val layoutter: NavButtonLayoutFactory.NavButtonLayoutter = @@ -164,7 +165,7 @@ class NavButtonLayoutFactoryTest { @Test(expected = IllegalStateException::class) fun noValidLayoutForPhoneGestureNav() { - assumeTrue(TaskbarManager.ENABLE_TASKBAR_NAVBAR_UNIFICATION) + assumeTrue(ENABLE_TASKBAR_NAVBAR_UNIFICATION) mockDeviceProfile.isTaskbarPresent = false getLayoutter( isKidsMode = false, diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java index 73861c14fc..1c52a2f8ac 100644 --- a/src/com/android/launcher3/config/FeatureFlags.java +++ b/src/com/android/launcher3/config/FeatureFlags.java @@ -23,6 +23,7 @@ import static com.android.launcher3.config.FeatureFlags.FlagState.TEAMFOOD; import static com.android.launcher3.uioverrides.flags.FlagsFactory.getDebugFlag; import static com.android.launcher3.uioverrides.flags.FlagsFactory.getIntFlag; import static com.android.launcher3.uioverrides.flags.FlagsFactory.getReleaseFlag; +import static com.android.wm.shell.Flags.enableTaskbarNavbarUnification; import android.view.ViewConfiguration; @@ -217,12 +218,19 @@ public final class FeatureFlags { public static final BooleanFlag ENABLE_TRANSIENT_TASKBAR = getDebugFlag(270395798, "ENABLE_TRANSIENT_TASKBAR", ENABLED, "Enables transient taskbar."); + public static final boolean ENABLE_TASKBAR_NAVBAR_UNIFICATION = + enableTaskbarNavbarUnification(); + // Aconfig migration complete for ENABLE_TASKBAR_NO_RECREATION. public static final BooleanFlag ENABLE_TASKBAR_NO_RECREATION = getDebugFlag(299193589, "ENABLE_TASKBAR_NO_RECREATION", DISABLED, "Enables taskbar with no recreation from lifecycle changes of TaskbarActivityContext."); public static boolean enableTaskbarNoRecreate() { - return ENABLE_TASKBAR_NO_RECREATION.get() || Flags.enableTaskbarNoRecreate(); + return ENABLE_TASKBAR_NO_RECREATION.get() || Flags.enableTaskbarNoRecreate() + // Task bar pinning and task bar nav bar unification are both dependent on + // ENABLE_TASKBAR_NO_RECREATION. We want to turn ENABLE_TASKBAR_NO_RECREATION on + // when either of the dependent features is turned on. + || ENABLE_TASKBAR_PINNING.get() || ENABLE_TASKBAR_NAVBAR_UNIFICATION; } // TODO(Block 16): Clean up flags