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

Commit 0a1921b5 authored by jovanak's avatar jovanak Committed by android-build-merger
Browse files

Merge "Bouncer should not show over the full screen user switcher on boot." into pi-dev

am: 9ed9aa93

Change-Id: I91c89dfaef256bd9cacabc5444f29e53bb92c04e
parents 8470ad6e 9ed9aa93
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -562,7 +562,7 @@ public class StatusBar extends SystemUI implements DemoMode,
    };

    private KeyguardUserSwitcher mKeyguardUserSwitcher;
    private UserSwitcherController mUserSwitcherController;
    protected UserSwitcherController mUserSwitcherController;
    private NetworkController mNetworkController;
    private KeyguardMonitorImpl mKeyguardMonitor
            = (KeyguardMonitorImpl) Dependency.get(KeyguardMonitor.class);
@@ -588,7 +588,7 @@ public class StatusBar extends SystemUI implements DemoMode,
        }
    };
    private boolean mNoAnimationOnNextBarModeChange;
    private FalsingManager mFalsingManager;
    protected FalsingManager mFalsingManager;

    private final KeyguardUpdateMonitorCallback mUpdateCallback =
            new KeyguardUpdateMonitorCallback() {
@@ -3448,6 +3448,13 @@ public class StatusBar extends SystemUI implements DemoMode,
        return updateIsKeyguard();
    }

    /**
     * @return True if StatusBar state is FULLSCREEN_USER_SWITCHER.
     */
    public boolean isFullScreenUserSwitcherState() {
        return mState == StatusBarState.FULLSCREEN_USER_SWITCHER;
    }

    private boolean updateIsKeyguard() {
        boolean wakeAndUnlocking = mFingerprintUnlockController.getMode()
                == FingerprintUnlockController.MODE_WAKE_AND_UNLOCK;
+3 −1
Original line number Diff line number Diff line
@@ -145,9 +145,11 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
        //   conserve the original animation.
        // • The user quickly taps on the display and we show "swipe up to unlock."
        // • Keyguard will be dismissed by an action. a.k.a: FLAG_DISMISS_KEYGUARD_ACTIVITY
        // • Full-screen user switcher is displayed.
        final boolean noLongerTracking = mLastTracking != tracking && !tracking;
        if (mOccluded || mNotificationPanelView.isUnlockHintRunning()
                || mBouncer.willDismissWithAction()) {
                || mBouncer.willDismissWithAction()
                || mStatusBar.isFullScreenUserSwitcherState()) {
            mBouncer.setExpansion(0);
        } else if (mShowing && mStatusBar.isKeyguardCurrentlySecure() && !mDozing) {
            mBouncer.setExpansion(expansion);
+56 −11
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import android.app.Notification;
import android.app.StatusBarManager;
import android.app.trust.TrustManager;
import android.content.Context;
import android.content.pm.UserInfo;
import android.hardware.fingerprint.FingerprintManager;
import android.metrics.LogMaker;
import android.os.Binder;
@@ -71,6 +72,7 @@ import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.assist.AssistManager;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.classifier.FalsingManager;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.recents.misc.SystemServicesProxy;
import com.android.systemui.statusbar.ActivatableNotificationView;
@@ -91,6 +93,7 @@ import com.android.systemui.statusbar.NotificationLogger;
import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.NotificationPresenter;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.NotificationShelf;
import com.android.systemui.statusbar.NotificationViewHierarchyManager;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.notification.ActivityLaunchAnimator;
@@ -98,6 +101,7 @@ import com.android.systemui.statusbar.notification.VisualStabilityManager;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
import com.android.systemui.statusbar.policy.KeyguardMonitorImpl;
import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;

import org.junit.Before;
@@ -134,6 +138,7 @@ public class StatusBarTest extends SysuiTestCase {
    @Mock private VisualStabilityManager mVisualStabilityManager;
    @Mock private NotificationListener mNotificationListener;
    @Mock private KeyguardViewMediator mKeyguardViewMediator;
    @Mock private NotificationLockscreenUserManager mLockscreenUserManager;

    private TestableStatusBar mStatusBar;
    private FakeMetricsLogger mMetricsLogger;
@@ -146,9 +151,7 @@ public class StatusBarTest extends SysuiTestCase {
        MockitoAnnotations.initMocks(this);
        mDependency.injectMockDependency(AssistManager.class);
        mDependency.injectMockDependency(DeviceProvisionedController.class);
        mDependency.injectMockDependency(NotificationGroupManager.class);
        mDependency.injectMockDependency(NotificationGutsManager.class);
        mDependency.injectMockDependency(NotificationRemoteInputManager.class);
        mDependency.injectMockDependency(NotificationMediaManager.class);
        mDependency.injectMockDependency(ForegroundServiceController.class);
        mDependency.injectTestDependency(NotificationViewHierarchyManager.class,
@@ -202,7 +205,12 @@ public class StatusBarTest extends SysuiTestCase {
                mPowerManager, mNotificationPanelView, mBarService, mNotificationListener,
                mNotificationLogger, mVisualStabilityManager, mViewHierarchyManager,
                mEntryManager, mScrimController, mFingerprintUnlockController,
                mock(ActivityLaunchAnimator.class), mKeyguardViewMediator);
                mock(ActivityLaunchAnimator.class), mKeyguardViewMediator,
                mock(NotificationRemoteInputManager.class), mock(NotificationGroupManager.class),
                mock(FalsingManager.class), mock(StatusBarWindowManager.class),
                mock(NotificationIconAreaController.class), mock(DozeScrimController.class),
                mock(NotificationShelf.class), mLockscreenUserManager,
                mock(CommandQueue.class));
        mStatusBar.mContext = mContext;
        mStatusBar.mComponents = mContext.getComponents();
        mEntryManager.setUpForTest(mStatusBar, mStackScroller, mStatusBar, mHeadsUpManager,
@@ -529,11 +537,7 @@ public class StatusBarTest extends SysuiTestCase {
    @Test
    @RunWithLooper(setAsMainLooper = true)
    public void testUpdateKeyguardState_DoesNotCrash() {
        mStatusBar.mStatusBarWindow = mock(StatusBarWindowView.class);
        mStatusBar.mState = StatusBarState.KEYGUARD;
        mStatusBar.mDozeScrimController = mock(DozeScrimController.class);
        mStatusBar.mNotificationIconAreaController = mock(NotificationIconAreaController.class);
        mStatusBar.mLockscreenUserManager = mock(NotificationLockscreenUserManager.class);
        when(mStatusBar.mLockscreenUserManager.getCurrentProfiles()).thenReturn(
                new SparseArray<>());
        mStatusBar.updateKeyguardState(false, false);
@@ -541,9 +545,6 @@ public class StatusBarTest extends SysuiTestCase {

    @Test
    public void testFingerprintNotification_UpdatesScrims() {
        mStatusBar.mStatusBarWindowManager = mock(StatusBarWindowManager.class);
        mStatusBar.mDozeScrimController = mock(DozeScrimController.class);
        mStatusBar.mNotificationIconAreaController = mock(NotificationIconAreaController.class);
        mStatusBar.notifyFpAuthModeChanged();
        verify(mScrimController).transitionTo(any(), any());
    }
@@ -629,6 +630,32 @@ public class StatusBarTest extends SysuiTestCase {
        verify(mStackScroller).changeViewPosition(any(FooterView.class), eq(-1 /* end */));
    }

    @Test
    public void testSetState_changesIsFullScreenUserSwitcherState() {
        mStatusBar.setBarStateForTest(StatusBarState.KEYGUARD);
        assertFalse(mStatusBar.isFullScreenUserSwitcherState());

        mStatusBar.setBarStateForTest(StatusBarState.FULLSCREEN_USER_SWITCHER);
        assertTrue(mStatusBar.isFullScreenUserSwitcherState());
    }

    @Test
    public void testShowKeyguardImplementation_setsState() {
        when(mLockscreenUserManager.getCurrentProfiles()).thenReturn(new SparseArray<>());

        mStatusBar.setBarStateForTest(StatusBarState.SHADE);

        // By default, showKeyguardImpl sets state to KEYGUARD.
        mStatusBar.showKeyguardImpl();
        assertTrue(mStatusBar.mState == StatusBarState.KEYGUARD);

        // If useFullscreenUserSwitcher is true, state is set to FULLSCREEN_USER_SWITCHER.
        mStatusBar.mUserSwitcherController = mock(UserSwitcherController.class);
        when(mStatusBar.mUserSwitcherController.useFullscreenUserSwitcher()).thenReturn(true);
        mStatusBar.showKeyguardImpl();
        assertTrue(mStatusBar.mState == StatusBarState.FULLSCREEN_USER_SWITCHER);
    }

    static class TestableStatusBar extends StatusBar {
        public TestableStatusBar(StatusBarKeyguardViewManager man,
                UnlockMethodCache unlock, KeyguardIndicationController key,
@@ -640,7 +667,16 @@ public class StatusBarTest extends SysuiTestCase {
                NotificationViewHierarchyManager viewHierarchyManager,
                TestableNotificationEntryManager entryManager, ScrimController scrimController,
                FingerprintUnlockController fingerprintUnlockController,
                ActivityLaunchAnimator launchAnimator, KeyguardViewMediator keyguardViewMediator) {
                ActivityLaunchAnimator launchAnimator, KeyguardViewMediator keyguardViewMediator,
                NotificationRemoteInputManager notificationRemoteInputManager,
                NotificationGroupManager notificationGroupManager,
                FalsingManager falsingManager,
                StatusBarWindowManager statusBarWindowManager,
                NotificationIconAreaController notificationIconAreaController,
                DozeScrimController dozeScrimController,
                NotificationShelf notificationShelf,
                NotificationLockscreenUserManager notificationLockscreenUserManager,
                CommandQueue commandQueue) {
            mStatusBarKeyguardViewManager = man;
            mUnlockMethodCache = unlock;
            mKeyguardIndicationController = key;
@@ -660,6 +696,15 @@ public class StatusBarTest extends SysuiTestCase {
            mActivityLaunchAnimator = launchAnimator;
            mKeyguardViewMediator = keyguardViewMediator;
            mClearAllEnabled = true;
            mRemoteInputManager = notificationRemoteInputManager;
            mGroupManager = notificationGroupManager;
            mFalsingManager = falsingManager;
            mStatusBarWindowManager = statusBarWindowManager;
            mNotificationIconAreaController = notificationIconAreaController;
            mDozeScrimController = dozeScrimController;
            mNotificationShelf = notificationShelf;
            mLockscreenUserManager = notificationLockscreenUserManager;
            mCommandQueue = commandQueue;
        }

        private WakefulnessLifecycle createAwakeWakefulnessLifecycle() {