Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d0a7f18b authored by Caitlin Cassidy's avatar Caitlin Cassidy
Browse files

[Status Bar Refactor] Have SBHideIconsForBouncerManager listen to window

state directly instead of getting it from StatusBar.java

Fixes: 212424936
Test: manual
Test: atest
Change-Id: I594894928b27ce547c21467295c15e91f07db851
parent 9bed7dc0
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -341,14 +341,6 @@ public class StatusBar extends CoreStartable implements
    void onStatusBarWindowStateChanged(@WindowVisibleState int state) {
        updateBubblesVisibility();
        mStatusBarWindowState = state;
        mStatusBarWindowHidden = state == WINDOW_STATE_HIDDEN;
        // TODO(b/212424936): Have this icon manager just implement its own listener.
        mStatusBarHideIconsForBouncerManager.setStatusBarWindowHidden(mStatusBarWindowHidden);
        if (mStatusBarView != null) {
            // Should #updateHideIconsForBouncer always be called, regardless of whether we have a
            //   status bar view? If so, we can make #updateHideIconsForBouncer private.
            mStatusBarHideIconsForBouncerManager.updateHideIconsForBouncer(/* animate= */ false);
        }
    }

    void acquireGestureWakeLock(long time) {
+10 −3
Original line number Diff line number Diff line
package com.android.systemui.statusbar.phone

import android.app.StatusBarManager
import com.android.systemui.Dumpable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.window.StatusBarWindowStateController
import com.android.systemui.util.concurrency.DelayableExecutor
import java.io.FileDescriptor
import java.io.PrintWriter
@@ -25,6 +27,7 @@ import javax.inject.Inject
class StatusBarHideIconsForBouncerManager @Inject constructor(
    private val commandQueue: CommandQueue,
    @Main private val mainExecutor: DelayableExecutor,
    statusBarWindowStateController: StatusBarWindowStateController,
    dumpManager: DumpManager
) : Dumpable {
    // State variables set by external classes.
@@ -42,6 +45,9 @@ class StatusBarHideIconsForBouncerManager @Inject constructor(

    init {
        dumpManager.registerDumpable(this)
        statusBarWindowStateController.addListener {
                state -> setStatusBarStateAndTriggerUpdate(state)
        }
    }

    /** Returns true if the status bar icons should be hidden in the bouncer. */
@@ -49,8 +55,9 @@ class StatusBarHideIconsForBouncerManager @Inject constructor(
        return hideIconsForBouncer || wereIconsJustHidden
    }

    fun setStatusBarWindowHidden(statusBarWindowHidden: Boolean) {
        this.statusBarWindowHidden = statusBarWindowHidden
    private fun setStatusBarStateAndTriggerUpdate(@StatusBarManager.WindowVisibleState state: Int) {
        statusBarWindowHidden = state == StatusBarManager.WINDOW_STATE_HIDDEN
        updateHideIconsForBouncer(animate = false)
    }

    fun setDisplayId(displayId: Int) {
@@ -87,7 +94,7 @@ class StatusBarHideIconsForBouncerManager @Inject constructor(
     * Updates whether the status bar icons should be hidden in the bouncer. May trigger
     * [commandQueue.recomputeDisableFlags] if the icon visibility status changes.
     */
    fun updateHideIconsForBouncer(animate: Boolean) {
    private fun updateHideIconsForBouncer(animate: Boolean) {
        val hideBecauseApp =
            topAppHidesStatusBar &&
                    isOccluded &&
+1 −1
Original line number Diff line number Diff line
@@ -19,6 +19,6 @@ package com.android.systemui.statusbar.window
import android.app.StatusBarManager

/** Listener interface for changes in the status bar window state. */
interface StatusBarWindowStateListener {
fun interface StatusBarWindowStateListener {
    fun onStatusBarWindowStateChanged(@StatusBarManager.WindowVisibleState state: Int)
}
+2 −5
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@ import com.android.internal.logging.testing.FakeMetricsLogger;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.assist.AssistManager;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.DisableFlagsLogger;
@@ -46,8 +45,6 @@ import com.android.systemui.statusbar.notification.stack.NotificationStackScroll
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
import com.android.systemui.util.concurrency.FakeExecutor;
import com.android.systemui.util.time.FakeSystemClock;
import com.android.wm.shell.legacysplitscreen.LegacySplitScreen;

import org.junit.Before;
@@ -84,6 +81,7 @@ public class StatusBarCommandQueueCallbacksTest extends SysuiTestCase {
    @Mock private VibratorHelper mVibratorHelper;
    @Mock private Vibrator mVibrator;
    @Mock private LightBarController mLightBarController;
    @Mock private StatusBarHideIconsForBouncerManager mStatusBarHideIconsForBouncerManager;

    StatusBarCommandQueueCallbacks mSbcqCallbacks;

@@ -112,8 +110,7 @@ public class StatusBarCommandQueueCallbacksTest extends SysuiTestCase {
                mStatusBarStateController,
                mNotificationShadeWindowView,
                mNotificationStackScrollLayoutController,
                new StatusBarHideIconsForBouncerManager(
                        mCommandQueue, new FakeExecutor(new FakeSystemClock()), new DumpManager()),
                mStatusBarHideIconsForBouncerManager,
                mPowerManager,
                mVibratorHelper,
                Optional.of(mVibrator),
+2 −1
Original line number Diff line number Diff line
@@ -265,6 +265,7 @@ public class StatusBarTest extends SysuiTestCase {
    @Mock private BrightnessSliderController.Factory mBrightnessSliderFactory;
    @Mock private WallpaperController mWallpaperController;
    @Mock private OngoingCallController mOngoingCallController;
    @Mock private StatusBarHideIconsForBouncerManager mStatusBarHideIconsForBouncerManager;
    @Mock private LockscreenShadeTransitionController mLockscreenTransitionController;
    @Mock private FeatureFlags mFeatureFlags;
    @Mock private NotificationVisibilityProvider mVisibilityProvider;
@@ -452,7 +453,7 @@ public class StatusBarTest extends SysuiTestCase {
                mScreenOffAnimationController,
                mWallpaperController,
                mOngoingCallController,
                new StatusBarHideIconsForBouncerManager(mCommandQueue, mMainExecutor, mDumpManager),
                mStatusBarHideIconsForBouncerManager,
                mLockscreenTransitionController,
                mFeatureFlags,
                mKeyguardUnlockAnimationController,
Loading