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() + } }