From 0cd995e4ef29826944ddb3a5a0481c58e2956da7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20G=C3=B6llner?= Date: Fri, 10 May 2024 09:34:10 +0100 Subject: [PATCH] Convert SysUiState flags from int to long We already reached the limit of 32 flags for an int. To be able to have more, changing from int to long. This is needed, as new flags have to be added. Flag: NONE Test: Manually running SysUI and Launcher Test: Unit tests in CL Bug: 335625543 Change-Id: Iec1d40218264c7c64c50fd09764aa07c0caa7787 --- .../taskbar/LauncherTaskbarUIController.java | 3 +- .../taskbar/NavbarButtonsViewController.java | 11 +++--- .../taskbar/StashedHandleViewController.java | 3 +- .../taskbar/TaskbarActivityContext.java | 4 ++- ...askbarForceVisibleImmersiveController.java | 3 +- .../taskbar/TaskbarKeyguardController.java | 11 +++--- .../TaskbarLauncherStateController.java | 12 ++++--- .../launcher3/taskbar/TaskbarManager.java | 3 +- .../taskbar/TaskbarNavButtonController.java | 3 +- .../taskbar/TaskbarScrimViewController.java | 6 ++-- .../launcher3/taskbar/TaskbarSharedState.java | 5 ++- .../taskbar/TaskbarStashController.java | 34 +++++++++---------- .../taskbar/TaskbarUIController.java | 3 +- .../taskbar/bubbles/BubbleBarController.java | 9 ++--- ...ButtonNavbarToOverviewTouchController.java | 2 +- .../NoButtonQuickSwitchTouchController.java | 2 +- .../QuickSwitchTouchController.java | 2 +- .../RecentsAnimationDeviceState.java | 7 ++-- .../com/android/quickstep/SystemUiProxy.java | 9 +++-- .../quickstep/TouchInteractionService.java | 11 +++--- .../taskbar/TaskbarKeyguardControllerTest.kt | 2 +- .../android/launcher3/util/FlagDebugUtils.kt | 34 +++++++++++++++++++ 22 files changed, 119 insertions(+), 60 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index 4f021224c3..779009a6b0 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -51,6 +51,7 @@ import com.android.quickstep.SystemUiProxy; import com.android.quickstep.util.GroupTask; import com.android.quickstep.util.TISBindHelper; import com.android.quickstep.views.RecentsView; +import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags; import java.io.PrintWriter; import java.util.Arrays; @@ -379,7 +380,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { } @Override - public void updateStateForSysuiFlags(int sysuiFlags) { + public void updateStateForSysuiFlags(@SystemUiStateFlags long sysuiFlags) { mTaskbarLauncherStateController.updateStateForSysuiFlags(sysuiFlags); } diff --git a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java index abb763a405..89dfff3f91 100644 --- a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java @@ -105,6 +105,7 @@ import com.android.systemui.shared.rotation.FloatingRotationButton; import com.android.systemui.shared.rotation.RotationButton; import com.android.systemui.shared.rotation.RotationButtonController; import com.android.systemui.shared.system.QuickStepContract; +import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags; import java.io.PrintWriter; import java.util.ArrayList; @@ -197,7 +198,8 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT private TaskbarControllers mControllers; private boolean mIsImeRenderingNavButtons; private ImageView mA11yButton; - private int mSysuiStateFlags; + @SystemUiStateFlags + private long mSysuiStateFlags; private ImageView mBackButton; private ImageView mHomeButton; private MultiValueAlpha mBackButtonAlpha; @@ -442,7 +444,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT navButtonController.onButtonLongClick(BUTTON_SPACE, view)); } - private void parseSystemUiFlags(int sysUiStateFlags) { + private void parseSystemUiFlags(@SystemUiStateFlags long sysUiStateFlags) { mSysuiStateFlags = sysUiStateFlags; boolean isImeVisible = (sysUiStateFlags & SYSUI_STATE_IME_SHOWING) != 0; boolean isImeSwitcherShowing = (sysUiStateFlags & SYSUI_STATE_IME_SWITCHER_SHOWING) != 0; @@ -450,7 +452,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT boolean isHomeDisabled = (sysUiStateFlags & SYSUI_STATE_HOME_DISABLED) != 0; boolean isRecentsDisabled = (sysUiStateFlags & SYSUI_STATE_OVERVIEW_DISABLED) != 0; boolean isBackDisabled = (sysUiStateFlags & SYSUI_STATE_BACK_DISABLED) != 0; - int shadeExpandedFlags = SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED + long shadeExpandedFlags = SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED | SYSUI_STATE_QUICK_SETTINGS_EXPANDED; boolean isNotificationShadeExpanded = (sysUiStateFlags & shadeExpandedFlags) != 0; boolean isScreenPinningActive = (sysUiStateFlags & SYSUI_STATE_SCREEN_PINNING) != 0; @@ -477,7 +479,8 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT } } - public void updateStateForSysuiFlags(int systemUiStateFlags, boolean skipAnim) { + public void updateStateForSysuiFlags(@SystemUiStateFlags long systemUiStateFlags, + boolean skipAnim) { if (systemUiStateFlags == mSysuiStateFlags) { return; } diff --git a/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java b/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java index 36e054a56d..8d4c34d690 100644 --- a/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/StashedHandleViewController.java @@ -42,6 +42,7 @@ import com.android.launcher3.util.MultiPropertyFactory; import com.android.launcher3.util.MultiValueAlpha; import com.android.quickstep.NavHandle; import com.android.systemui.shared.navigationbar.RegionSamplingHelper; +import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags; import java.io.PrintWriter; @@ -303,7 +304,7 @@ public class StashedHandleViewController implements TaskbarControllers.LoggableT homeDisabled ? 0 : 1); } - public void updateStateForSysuiFlags(int systemUiStateFlags) { + public void updateStateForSysuiFlags(@SystemUiStateFlags long systemUiStateFlags) { mTaskbarHidden = (systemUiStateFlags & SYSUI_STATE_NAV_BAR_HIDDEN) != 0; updateRegionSamplingWindowVisibility(); } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index af053e3a4a..e77922a49b 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -137,6 +137,7 @@ import com.android.quickstep.views.TaskView; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.rotation.RotationButtonController; import com.android.systemui.shared.system.ActivityManagerWrapper; +import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags; import com.android.systemui.unfold.updates.RotationChangeProvider; import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider; @@ -825,7 +826,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext { return mIsDestroyed; } - public void updateSysuiStateFlags(int systemUiStateFlags, boolean fromInit) { + public void updateSysuiStateFlags(@SystemUiStateFlags long systemUiStateFlags, + boolean fromInit) { mControllers.navbarButtonsViewController.updateStateForSysuiFlags(systemUiStateFlags, fromInit); boolean isShadeVisible = (systemUiStateFlags & SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE) != 0; diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarForceVisibleImmersiveController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarForceVisibleImmersiveController.java index 333c07b8fa..6ac862e9e0 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarForceVisibleImmersiveController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarForceVisibleImmersiveController.java @@ -34,6 +34,7 @@ import com.android.launcher3.anim.AnimatedFloat; import com.android.launcher3.compat.AccessibilityManagerCompat; import com.android.launcher3.util.MultiPropertyFactory; import com.android.launcher3.util.TouchController; +import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags; /** * Controller for taskbar when force visible in immersive mode is set. @@ -83,7 +84,7 @@ public class TaskbarForceVisibleImmersiveController implements TouchController { } /** Update values tracked via sysui flags. */ - public void updateSysuiFlags(int sysuiFlags) { + public void updateSysuiFlags(@SystemUiStateFlags long sysuiFlags) { mIsImmersiveMode = (sysuiFlags & SYSUI_STATE_ALLOW_GESTURE_IGNORING_BAR_VISIBILITY) == 0; if (mContext.isNavBarForceVisible()) { if (mIsImmersiveMode) { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarKeyguardController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarKeyguardController.java index 03d08eb4b3..eac4eaa130 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarKeyguardController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarKeyguardController.java @@ -17,6 +17,7 @@ import android.app.KeyguardManager; import com.android.launcher3.AbstractFloatingView; import com.android.systemui.shared.system.QuickStepContract; +import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags; import java.io.PrintWriter; @@ -25,7 +26,7 @@ import java.io.PrintWriter; */ public class TaskbarKeyguardController implements TaskbarControllers.LoggableTaskbarController { - private static final int KEYGUARD_SYSUI_FLAGS = SYSUI_STATE_BOUNCER_SHOWING + private static final long KEYGUARD_SYSUI_FLAGS = SYSUI_STATE_BOUNCER_SHOWING | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING | SYSUI_STATE_DEVICE_DOZING | SYSUI_STATE_OVERVIEW_DISABLED | SYSUI_STATE_HOME_DISABLED | SYSUI_STATE_BACK_DISABLED | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED @@ -33,13 +34,13 @@ public class TaskbarKeyguardController implements TaskbarControllers.LoggableTas // If any of these SysUi flags (via QuickstepContract) is set, the device to be considered // locked. - public static final int MASK_ANY_SYSUI_LOCKED = SYSUI_STATE_BOUNCER_SHOWING + public static final long MASK_ANY_SYSUI_LOCKED = SYSUI_STATE_BOUNCER_SHOWING | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED | SYSUI_STATE_DEVICE_DREAMING; private final TaskbarActivityContext mContext; - private int mKeyguardSysuiFlags; + private long mKeyguardSysuiFlags; private boolean mBouncerShowing; private NavbarButtonsViewController mNavbarButtonsViewController; private final KeyguardManager mKeyguardManager; @@ -53,8 +54,8 @@ public class TaskbarKeyguardController implements TaskbarControllers.LoggableTas mNavbarButtonsViewController = navbarButtonUIController; } - public void updateStateForSysuiFlags(int systemUiStateFlags) { - int interestingKeyguardFlags = systemUiStateFlags & KEYGUARD_SYSUI_FLAGS; + public void updateStateForSysuiFlags(@SystemUiStateFlags long systemUiStateFlags) { + long interestingKeyguardFlags = systemUiStateFlags & KEYGUARD_SYSUI_FLAGS; if (interestingKeyguardFlags == mKeyguardSysuiFlags) { // No change in keyguard relevant flags return; diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index 6ea52cb888..d516d873ca 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -54,6 +54,7 @@ import com.android.quickstep.RecentsAnimationController; import com.android.quickstep.views.RecentsView; import com.android.systemui.animation.ViewRootSync; import com.android.systemui.shared.recents.model.ThumbnailData; +import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags; import java.io.PrintWriter; import java.util.HashMap; @@ -226,7 +227,7 @@ public class TaskbarLauncherStateController { /** Initializes the controller instance, and applies the initial state immediately. */ public void init(TaskbarControllers controllers, QuickstepLauncher launcher, - int sysuiStateFlags) { + @SystemUiStateFlags long sysuiStateFlags) { mCanSyncViews = false; mControllers = controllers; @@ -325,11 +326,12 @@ public class TaskbarLauncherStateController { } /** SysUI flags updated, see QuickStepContract.SYSUI_STATE_* values. */ - public void updateStateForSysuiFlags(int systemUiStateFlags) { + public void updateStateForSysuiFlags(@SystemUiStateFlags long systemUiStateFlags) { updateStateForSysuiFlags(systemUiStateFlags, /* applyState */ true); } - private void updateStateForSysuiFlags(int systemUiStateFlags, boolean applyState) { + private void updateStateForSysuiFlags(@SystemUiStateFlags long systemUiStateFlags, + boolean applyState) { final boolean prevIsAwake = hasAnyFlag(FLAG_AWAKE); final boolean currIsAwake = hasAnyFlag(systemUiStateFlags, SYSUI_STATE_AWAKE); @@ -389,11 +391,11 @@ public class TaskbarLauncherStateController { } } - private boolean hasAnyFlag(int flagMask) { + private boolean hasAnyFlag(long flagMask) { return hasAnyFlag(mState, flagMask); } - private boolean hasAnyFlag(int flags, int flagMask) { + private boolean hasAnyFlag(long flags, long flagMask) { return (flags & flagMask) != 0; } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index 42e6edb68a..e8dc177d0e 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -73,6 +73,7 @@ import com.android.quickstep.RecentsActivity; import com.android.quickstep.SystemUiProxy; import com.android.quickstep.util.AssistUtils; import com.android.systemui.shared.system.QuickStepContract; +import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags; import com.android.systemui.unfold.UnfoldTransitionProgressProvider; import com.android.systemui.unfold.util.ScopedUnfoldTransitionProgressProvider; @@ -491,7 +492,7 @@ public class TaskbarManager { } } - public void onSystemUiFlagsChanged(int systemUiStateFlags) { + public void onSystemUiFlagsChanged(@SystemUiStateFlags long systemUiStateFlags) { if (DEBUG) { Log.d(TAG, "SysUI flags changed: " + formatFlagChange(systemUiStateFlags, mSharedState.sysuiStateFlags, QuickStepContract::getSystemUiStateString)); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java index 13a68a04a7..645f3eec41 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarNavButtonController.java @@ -51,6 +51,7 @@ import com.android.quickstep.LauncherActivityInterface; import com.android.quickstep.SystemUiProxy; import com.android.quickstep.TaskUtils; import com.android.quickstep.util.AssistUtils; +import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags; import java.io.PrintWriter; import java.lang.annotation.Retention; @@ -258,7 +259,7 @@ public class TaskbarNavButtonController implements TaskbarControllers.LoggableTa mLastScreenPinLongPress = 0; } - public void updateSysuiFlags(int sysuiFlags) { + public void updateSysuiFlags(@SystemUiStateFlags long sysuiFlags) { mScreenPinned = (sysuiFlags & SYSUI_STATE_SCREEN_PINNING) != 0; } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java index 712374db67..92d9b23cb6 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarScrimViewController.java @@ -30,6 +30,7 @@ import android.view.animation.PathInterpolator; import com.android.launcher3.anim.AnimatedFloat; import com.android.launcher3.util.DisplayController; import com.android.quickstep.SystemUiProxy; +import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags; import java.io.PrintWriter; @@ -45,7 +46,8 @@ public class TaskbarScrimViewController implements TaskbarControllers.LoggableTa private final TaskbarActivityContext mActivity; private final TaskbarScrimView mScrimView; private boolean mTaskbarVisible; - private int mSysUiStateFlags; + @SystemUiStateFlags + private long mSysUiStateFlags; // Alpha property for the scrim. private final AnimatedFloat mScrimAlpha = new AnimatedFloat(this::updateScrimAlpha); @@ -82,7 +84,7 @@ public class TaskbarScrimViewController implements TaskbarControllers.LoggableTa /** * Updates the scrim state based on the flags. */ - public void updateStateForSysuiFlags(int stateFlags, boolean skipAnim) { + public void updateStateForSysuiFlags(@SystemUiStateFlags long stateFlags, boolean skipAnim) { if (isBubbleBarEnabled() && DisplayController.isTransientTaskbar(mActivity)) { // These scrims aren't used if bubble bar & transient taskbar are active. return; diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java index e2c71bf7ce..edaeb63381 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarSharedState.java @@ -29,6 +29,8 @@ import android.os.Binder; import android.os.IBinder; import android.view.InsetsFrameProvider; +import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags; + /** * State shared across different taskbar instance */ @@ -39,7 +41,8 @@ public class TaskbarSharedState { private static int INDEX_RIGHT = 1; // TaskbarManager#onSystemUiFlagsChanged - public int sysuiStateFlags; + @SystemUiStateFlags + public long sysuiStateFlags; // TaskbarManager#disableNavBarElements() public int disableNavBarDisplayId; diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index f764a835f6..1a3c497be7 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -71,7 +71,7 @@ import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.StringJoiner; -import java.util.function.IntPredicate; +import java.util.function.LongPredicate; /** * Coordinates between controllers such as TaskbarViewController and StashedHandleViewController to @@ -229,7 +229,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba /** Whether we are currently visually stashed (might change based on launcher state). */ private boolean mIsStashed = false; - private int mState; + private long mState; private @Nullable AnimatorSet mAnimator; private boolean mIsSystemGestureInProgress; @@ -240,7 +240,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba private boolean mEnableBlockingTimeoutDuringTests = false; // Evaluate whether the handle should be stashed - private final IntPredicate mIsStashedPredicate = flags -> { + private final LongPredicate mIsStashedPredicate = flags -> { boolean inApp = hasAnyFlag(flags, FLAGS_IN_APP); boolean stashedInApp = hasAnyFlag(flags, FLAGS_STASHED_IN_APP); boolean stashedLauncherState = hasAnyFlag(flags, FLAG_IN_STASHED_LAUNCHER_STATE); @@ -388,11 +388,11 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba return (hasAnyFlag(FLAG_IN_STASHED_LAUNCHER_STATE) && supportsVisualStashing()); } - private boolean hasAnyFlag(int flagMask) { + private boolean hasAnyFlag(long flagMask) { return hasAnyFlag(mState, flagMask); } - private boolean hasAnyFlag(int flags, int flagMask) { + private boolean hasAnyFlag(long flags, long flagMask) { return (flags & flagMask) != 0; } @@ -929,7 +929,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba } /** Called when some system ui state has changed. (See SYSUI_STATE_... in QuickstepContract) */ - public void updateStateForSysuiFlags(int systemUiStateFlags, boolean skipAnim) { + public void updateStateForSysuiFlags(long systemUiStateFlags, boolean skipAnim) { long animDuration = TASKBAR_STASH_DURATION; long startDelay = 0; @@ -1005,8 +1005,8 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba * unstashed. * @return Whether the flag state changed. */ - public boolean updateStateForFlag(int flag, boolean enabled) { - int oldState = mState; + public boolean updateStateForFlag(long flag, boolean enabled) { + long oldState = mState; if (enabled) { mState |= flag; } else { @@ -1020,7 +1020,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba * * @param changedFlags The flags that have changed. */ - private void onStateChangeApplied(int changedFlags) { + private void onStateChangeApplied(long changedFlags) { if (hasAnyFlag(changedFlags, FLAGS_STASHED_IN_APP)) { mControllers.uiController.onStashedInAppChanged(); } @@ -1151,7 +1151,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba pw.println(prefix + "\tmIsImeSwitcherShowing=" + mIsImeSwitcherShowing); } - private static String getStateString(int flags) { + private static String getStateString(long flags) { StringJoiner sj = new StringJoiner("|"); appendFlag(sj, flags, FLAGS_IN_APP, "FLAG_IN_APP"); appendFlag(sj, flags, FLAG_STASHED_IN_APP_SYSUI, "FLAG_STASHED_IN_APP_SYSUI"); @@ -1168,15 +1168,15 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba } private class StatePropertyHolder { - private final IntPredicate mStashCondition; + private final LongPredicate mStashCondition; private boolean mIsStashed; private @StashAnimation int mLastStartedTransitionType = TRANSITION_DEFAULT; - private int mPrevFlags; + private long mPrevFlags; private long mLastUnlockTransitionTimeout = 0; - StatePropertyHolder(IntPredicate stashCondition) { + StatePropertyHolder(LongPredicate stashCondition) { mStashCondition = stashCondition; } @@ -1189,7 +1189,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba * @return mAnimator if mIsStashed changed, or {@code null} otherwise. */ @Nullable - public Animator createSetStateAnimator(int flags, long duration) { + public Animator createSetStateAnimator(long flags, long duration) { boolean isStashed = mStashCondition.test(flags); if (DEBUG) { @@ -1201,7 +1201,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba + ", mIsStashed: " + mIsStashed); } - int changedFlags = mPrevFlags ^ flags; + long changedFlags = mPrevFlags ^ flags; if (mPrevFlags != flags) { onStateChangeApplied(changedFlags); mPrevFlags = flags; @@ -1248,7 +1248,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba } /** Calculates the tag for CUJ_TASKBAR_EXPAND and CUJ_TASKBAR_COLLAPSE jank traces. */ - private String computeTaskbarJankMonitorTag(int changedFlags) { + private String computeTaskbarJankMonitorTag(long changedFlags) { if (hasAnyFlag(changedFlags, FLAG_IN_APP)) { // moving in or out of the app if (hasAnyFlag(FLAG_IN_APP)) { @@ -1268,7 +1268,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba return ""; } - private @StashAnimation int computeTransitionType(int changedFlags) { + private @StashAnimation int computeTransitionType(long changedFlags) { boolean hotseatHiddenDuringAppLaunch = !mControllers.uiController.isHotseatIconOnTopWhenAligned() diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java index 6abd5a9c75..d0c494cbd5 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java @@ -46,6 +46,7 @@ import com.android.quickstep.views.RecentsView; import com.android.quickstep.views.TaskView; import com.android.quickstep.views.TaskView.TaskContainer; import com.android.systemui.shared.recents.model.Task; +import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags; import java.io.PrintWriter; import java.util.Collections; @@ -140,7 +141,7 @@ public class TaskbarUIController { /** * SysUI flags updated, see QuickStepContract.SYSUI_STATE_* values. */ - public void updateStateForSysuiFlags(int sysuiFlags) { + public void updateStateForSysuiFlags(@SystemUiStateFlags long sysuiFlags) { } /** diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarController.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarController.java index 5789f0c611..400c3abc1d 100644 --- a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarController.java +++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarController.java @@ -71,6 +71,7 @@ import com.android.launcher3.taskbar.TaskbarControllers; import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.Executors.SimpleThreadFactory; import com.android.quickstep.SystemUiProxy; +import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags; import com.android.wm.shell.Flags; import com.android.wm.shell.bubbles.IBubblesListener; import com.android.wm.shell.common.bubbles.BubbleBarLocation; @@ -117,7 +118,7 @@ public class BubbleBarController extends IBubblesListener.Stub { || SystemProperties.getBoolean("persist.wm.debug.bubble_bar", false); } - private static final int MASK_HIDE_BUBBLE_BAR = SYSUI_STATE_BOUNCER_SHOWING + private static final long MASK_HIDE_BUBBLE_BAR = SYSUI_STATE_BOUNCER_SHOWING | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED | SYSUI_STATE_IME_SHOWING @@ -125,11 +126,11 @@ public class BubbleBarController extends IBubblesListener.Stub { | SYSUI_STATE_QUICK_SETTINGS_EXPANDED | SYSUI_STATE_IME_SWITCHER_SHOWING; - private static final int MASK_HIDE_HANDLE_VIEW = SYSUI_STATE_BOUNCER_SHOWING + private static final long MASK_HIDE_HANDLE_VIEW = SYSUI_STATE_BOUNCER_SHOWING | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED; - private static final int MASK_SYSUI_LOCKED = SYSUI_STATE_BOUNCER_SHOWING + private static final long MASK_SYSUI_LOCKED = SYSUI_STATE_BOUNCER_SHOWING | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED; @@ -256,7 +257,7 @@ public class BubbleBarController extends IBubblesListener.Stub { /** * Updates the bubble bar, handle bar, and stash controllers based on sysui state flags. */ - public void updateStateForSysuiFlags(int flags) { + public void updateStateForSysuiFlags(@SystemUiStateFlags long flags) { boolean hideBubbleBar = (flags & MASK_HIDE_BUBBLE_BAR) != 0; mBubbleBarViewController.setHiddenForSysui(hideBubbleBar); diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonNavbarToOverviewTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonNavbarToOverviewTouchController.java index 42be52f7c4..3325009b71 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonNavbarToOverviewTouchController.java +++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonNavbarToOverviewTouchController.java @@ -249,7 +249,7 @@ public class NoButtonNavbarToOverviewTouchController extends PortraitStatesTouch } private boolean handlingOverviewAnim() { - int stateFlags = SystemUiProxy.INSTANCE.get(mLauncher).getLastSystemUiStateFlags(); + long stateFlags = SystemUiProxy.INSTANCE.get(mLauncher).getLastSystemUiStateFlags(); return mDidTouchStartInNavBar && mStartState == NORMAL && (stateFlags & SYSUI_STATE_OVERVIEW_DISABLED) == 0; } diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java index fc0df76c10..11c2e70d5f 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java +++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java @@ -172,7 +172,7 @@ public class NoButtonQuickSwitchTouchController implements TouchController, if ((ev.getEdgeFlags() & Utilities.EDGE_NAV_BAR) == 0) { return false; } - int stateFlags = SystemUiProxy.INSTANCE.get(mLauncher).getLastSystemUiStateFlags(); + long stateFlags = SystemUiProxy.INSTANCE.get(mLauncher).getLastSystemUiStateFlags(); if ((stateFlags & SYSUI_STATE_OVERVIEW_DISABLED) != 0) { return false; } diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java index 16185f57d5..1a98db1f29 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java +++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/QuickSwitchTouchController.java @@ -84,7 +84,7 @@ public class QuickSwitchTouchController extends AbstractStateChangeTouchControll @Override protected LauncherState getTargetState(LauncherState fromState, boolean isDragTowardPositive) { - int stateFlags = SystemUiProxy.INSTANCE.get(mLauncher).getLastSystemUiStateFlags(); + long stateFlags = SystemUiProxy.INSTANCE.get(mLauncher).getLastSystemUiStateFlags(); if ((stateFlags & SYSUI_STATE_OVERVIEW_DISABLED) != 0) { return NORMAL; } diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java b/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java index 54466f3ccb..8bcdaa380f 100644 --- a/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java +++ b/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java @@ -108,7 +108,7 @@ public class RecentsAnimationDeviceState implements DisplayInfoChangeListener, E private final ArrayList mOnDestroyActions = new ArrayList<>(); - private @SystemUiStateFlags int mSystemUiStateFlags = QuickStepContract.SYSUI_STATE_AWAKE; + private @SystemUiStateFlags long mSystemUiStateFlags = QuickStepContract.SYSUI_STATE_AWAKE; private NavigationMode mMode = THREE_BUTTONS; private NavBarPosition mNavBarPosition; @@ -352,7 +352,7 @@ public class RecentsAnimationDeviceState implements DisplayInfoChangeListener, E /** * Updates the system ui state flags from SystemUI. */ - public void setSystemUiFlags(int stateFlags) { + public void setSystemUiFlags(@SystemUiStateFlags long stateFlags) { mSystemUiStateFlags = stateFlags; } @@ -360,7 +360,8 @@ public class RecentsAnimationDeviceState implements DisplayInfoChangeListener, E * @return the system ui state flags. */ // TODO(141886704): See if we can remove this - public int getSystemUiStateFlags() { + @SystemUiStateFlags + public long getSystemUiStateFlags() { return mSystemUiStateFlags; } diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.java b/quickstep/src/com/android/quickstep/SystemUiProxy.java index 4d3fe41f5d..1112caf5bf 100644 --- a/quickstep/src/com/android/quickstep/SystemUiProxy.java +++ b/quickstep/src/com/android/quickstep/SystemUiProxy.java @@ -72,6 +72,7 @@ import com.android.quickstep.util.AssistUtils; import com.android.quickstep.util.unfold.ProxyUnfoldTransitionProvider; import com.android.systemui.shared.recents.ISystemUiProxy; import com.android.systemui.shared.recents.model.ThumbnailData; +import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags; import com.android.systemui.shared.system.RecentsAnimationControllerCompat; import com.android.systemui.shared.system.RecentsAnimationListener; import com.android.systemui.shared.system.smartspace.ILauncherUnlockAnimationController; @@ -172,7 +173,8 @@ public class SystemUiProxy implements ISystemUiProxy, NavHandle, SafeCloseable { private final Handler mAsyncHandler; // TODO(141886704): Find a way to remove this - private int mLastSystemUiStateFlags; + @SystemUiStateFlags + private long mLastSystemUiStateFlags; /** * This is a singleton pending intent that is used to start recents via Shell (which is a @@ -324,12 +326,13 @@ public class SystemUiProxy implements ISystemUiProxy, NavHandle, SafeCloseable { } // TODO(141886704): Find a way to remove this - public void setLastSystemUiStateFlags(int stateFlags) { + public void setLastSystemUiStateFlags(@SystemUiStateFlags long stateFlags) { mLastSystemUiStateFlags = stateFlags; } // TODO(141886704): Find a way to remove this - public int getLastSystemUiStateFlags() { + @SystemUiStateFlags + public long getLastSystemUiStateFlags() { return mLastSystemUiStateFlags; } diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java index f94a29c74b..4599f180b1 100644 --- a/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -129,6 +129,7 @@ import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.InputChannelCompat.InputEventReceiver; import com.android.systemui.shared.system.InputConsumerController; import com.android.systemui.shared.system.InputMonitorCompat; +import com.android.systemui.shared.system.QuickStepContract.SystemUiStateFlags; import com.android.systemui.shared.system.smartspace.ISysuiUnlockAnimationController; import com.android.systemui.unfold.progress.IUnfoldAnimation; import com.android.wm.shell.back.IBackAnimation; @@ -301,9 +302,9 @@ public class TouchInteractionService extends Service { } @BinderThread - public void onSystemUiStateChanged(int stateFlags) { + public void onSystemUiStateChanged(@SystemUiStateFlags long stateFlags) { MAIN_EXECUTOR.execute(() -> executeForTouchInteractionService(tis -> { - int lastFlags = tis.mDeviceState.getSystemUiStateFlags(); + long lastFlags = tis.mDeviceState.getSystemUiStateFlags(); tis.mDeviceState.setSystemUiFlags(stateFlags); tis.onSystemUiFlagsChanged(lastFlags); })); @@ -636,14 +637,14 @@ public class TouchInteractionService extends Service { } @UiThread - private void onSystemUiFlagsChanged(int lastSysUIFlags) { + private void onSystemUiFlagsChanged(@SystemUiStateFlags long lastSysUIFlags) { if (LockedUserState.get(this).isUserUnlocked()) { - int systemUiStateFlags = mDeviceState.getSystemUiStateFlags(); + long systemUiStateFlags = mDeviceState.getSystemUiStateFlags(); SystemUiProxy.INSTANCE.get(this).setLastSystemUiStateFlags(systemUiStateFlags); mOverviewComponentObserver.onSystemUiStateChanged(); mTaskbarManager.onSystemUiFlagsChanged(systemUiStateFlags); - int isShadeExpandedFlag = + long isShadeExpandedFlag = SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED | SYSUI_STATE_QUICK_SETTINGS_EXPANDED; boolean wasExpanded = (lastSysUIFlags & isShadeExpandedFlag) != 0; boolean isExpanded = (systemUiStateFlags & isShadeExpandedFlag) != 0; diff --git a/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarKeyguardControllerTest.kt b/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarKeyguardControllerTest.kt index ed88c29b6a..e619e7cd38 100644 --- a/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarKeyguardControllerTest.kt +++ b/quickstep/tests/src/com/android/launcher3/taskbar/TaskbarKeyguardControllerTest.kt @@ -105,7 +105,7 @@ class TaskbarKeyguardControllerTest : TaskbarBaseTestCase() { verify(navbarButtonsViewController, times(1)).setBackForBouncer(false) } - private fun setFlags(flags: Int) { + private fun setFlags(flags: Long) { taskbarKeyguardController.updateStateForSysuiFlags(flags) } } diff --git a/src/com/android/launcher3/util/FlagDebugUtils.kt b/src/com/android/launcher3/util/FlagDebugUtils.kt index f281943496..33b8330142 100644 --- a/src/com/android/launcher3/util/FlagDebugUtils.kt +++ b/src/com/android/launcher3/util/FlagDebugUtils.kt @@ -2,6 +2,7 @@ package com.android.launcher3.util import java.util.StringJoiner import java.util.function.IntFunction +import java.util.function.LongFunction object FlagDebugUtils { @@ -12,6 +13,13 @@ object FlagDebugUtils { str.add(flagName) } } + /** Appends the [flagName] to [str] when the [flag] is set in [flags]. */ + @JvmStatic + fun appendFlag(str: StringJoiner, flags: Long, flag: Long, flagName: String) { + if (flags and flag != 0L) { + str.add(flagName) + } + } /** * Produces a human-readable representation of the [current] flags, followed by a diff from from @@ -34,4 +42,30 @@ object FlagDebugUtils { } return result.toString() } + + /** + * Produces a human-readable representation of the [current] flags, followed by a diff from from + * [previous]. + * + * The resulting string is intented for logging and debugging. + */ + @JvmStatic + fun formatFlagChange( + current: Long, + previous: Long, + flagSerializer: LongFunction + ): String { + val result = StringJoiner(" ") + result.add("[" + flagSerializer.apply(current) + "]") + val changed = current xor previous + val added = current and changed + if (added != 0L) { + result.add("+[" + flagSerializer.apply(added) + "]") + } + val removed = previous and changed + if (removed != 0L) { + result.add("-[" + flagSerializer.apply(removed) + "]") + } + return result.toString() + } }