summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-03-29 18:28:12 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-03-29 18:28:12 +0000
commit9ed9aa932e4c9fe52ad65fbbf1f4b1937bf004e5 (patch)
tree8c2fd49a58b4f1796366dd8c43f3e5ca65b48a57
parent1a6051a81d5a8f9ca8ea08b11abf325b94082a7c (diff)
parent5f6dc61c10dc06e669dfc05c94fffddd15e4e742 (diff)
Merge "Bouncer should not show over the full screen user switcher on boot." into pi-dev
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java4
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java67
3 files changed, 68 insertions, 14 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index c03ecb306226..beeba83b9c25 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -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;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index 597560823824..4e782de96449 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -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);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
index 4a66bb7deca0..b31a2dc1af04 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
@@ -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() {