Use DockManager to check whether it's docking or not
Instead of using pulsing reason to verity if it's docking, using
DockManager's API to unbind the check from doze pulsing.
Bug: 140915138, 136070077
Test: atest SystemUITests
Change-Id: I9f52e00042c7c9a665034e094c0744adaa93ef89
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java
index 5af1e14..105dbad 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java
@@ -158,26 +158,6 @@
verify(mStatusBar).updateScrimController();
}
-
- @Test
- public void testPulseWhileDozingWithDockingReason_suppressWakeUpGesture() {
- // Keep track of callback to be able to stop the pulse
- final DozeHost.PulseCallback[] pulseCallback = new DozeHost.PulseCallback[1];
- doAnswer(invocation -> {
- pulseCallback[0] = invocation.getArgument(0);
- return null;
- }).when(mDozeScrimController).pulse(any(), anyInt());
-
- // Starting a pulse while docking should suppress wakeup gesture
- mDozeServiceHost.pulseWhileDozing(mock(DozeHost.PulseCallback.class),
- DozeEvent.PULSE_REASON_DOCKING);
- verify(mStatusBarWindowViewController).suppressWakeUpGesture(eq(true));
-
- // Ending a pulse should restore wakeup gesture
- pulseCallback[0].onPulseFinished();
- verify(mStatusBarWindowViewController).suppressWakeUpGesture(eq(false));
- }
-
@Test
public void testPulseWhileDozing_notifyAuthInterrupt() {
HashSet<Integer> reasonsWantingAuth = new HashSet<>(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
index 85c247e..4d6ff1f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
@@ -50,6 +50,7 @@
import com.android.systemui.DejankUtils;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.colorextraction.SysuiColorExtractor;
+import com.android.systemui.dock.DockManager;
import com.android.systemui.statusbar.ScrimView;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.wakelock.DelayedWakeLock;
@@ -101,6 +102,8 @@
KeyguardUpdateMonitor mKeyguardUpdateMonitor;
@Mock
private SysuiColorExtractor mSysuiColorExtractor;
+ @Mock
+ private DockManager mDockManager;
private static class AnimatorListener implements Animator.AnimatorListener {
@@ -210,10 +213,13 @@
when(mSysuiColorExtractor.getNeutralColors()).thenReturn(new GradientColors());
+ when(mDockManager.isDocked()).thenReturn(false);
+
mScrimController = new ScrimController(mLightBarController,
mDozeParamenters, mAlarmManager, mKeyguardStateController,
mResources, mDelayedWakeLockBuilder,
- new FakeHandler(mLooper.getLooper()), mKeyguardUpdateMonitor, mSysuiColorExtractor);
+ new FakeHandler(mLooper.getLooper()), mKeyguardUpdateMonitor, mSysuiColorExtractor,
+ mDockManager);
mScrimController.setScrimVisibleListener(visible -> mScrimVisibility = visible);
mScrimController.attachViews(mScrimBehind, mScrimInFront, mScrimForBubble);
mScrimController.setAnimatorListener(mAnimatorListener);
@@ -372,6 +378,45 @@
}
@Test
+ public void transitionToAod_afterDocked_ignoresAlwaysOnAndUpdatesFrontAlpha() {
+ // Assert that setting the AOD front scrim alpha doesn't take effect in a non-AOD state.
+ mScrimController.transitionTo(ScrimState.KEYGUARD);
+ mScrimController.setAodFrontScrimAlpha(0.5f);
+ finishAnimationsImmediately();
+
+ assertScrimAlpha(TRANSPARENT /* front */,
+ SEMI_TRANSPARENT /* back */,
+ TRANSPARENT /* bubble */);
+
+ // ... and doesn't take effect when disabled always_on
+ mAlwaysOnEnabled = false;
+ mScrimController.transitionTo(ScrimState.AOD);
+ finishAnimationsImmediately();
+ assertScrimAlpha(OPAQUE /* front */,
+ OPAQUE /* back */,
+ TRANSPARENT /* bubble */);
+
+ // ... but will take effect after docked
+ when(mDockManager.isDocked()).thenReturn(true);
+ mScrimController.transitionTo(ScrimState.KEYGUARD);
+ mScrimController.setAodFrontScrimAlpha(0.5f);
+ mScrimController.transitionTo(ScrimState.AOD);
+
+ assertScrimAlpha(SEMI_TRANSPARENT /* front */,
+ OPAQUE /* back */,
+ TRANSPARENT /* bubble */);
+
+ // ... and that if we set it while we're in AOD, it does take immediate effect after docked.
+ mScrimController.setAodFrontScrimAlpha(1f);
+ assertScrimAlpha(OPAQUE /* front */,
+ OPAQUE /* back */,
+ TRANSPARENT /* bubble */);
+
+ // Reset value since enums are static.
+ mScrimController.setAodFrontScrimAlpha(0f);
+ }
+
+ @Test
public void transitionToPulsing_withFrontAlphaUpdates() {
// Pre-condition
// Need to go to AoD first because PULSING doesn't change
@@ -715,38 +760,6 @@
}
@Test
- public void transitionToPulsing_withTimeoutWallpaperCallback_willHideWallpaper() {
- mScrimController.setWallpaperSupportsAmbientMode(true);
-
- mScrimController.transitionTo(ScrimState.PULSING, new ScrimController.Callback() {
- @Override
- public boolean shouldTimeoutWallpaper() {
- return true;
- }
- });
-
- verify(mAlarmManager).setExact(anyInt(), anyLong(), any(), any(), any());
- }
-
- @Test
- public void transitionToPulsing_withDefaultCallback_wontHideWallpaper() {
- mScrimController.setWallpaperSupportsAmbientMode(true);
-
- mScrimController.transitionTo(ScrimState.PULSING, new ScrimController.Callback() {});
-
- verify(mAlarmManager, never()).setExact(anyInt(), anyLong(), any(), any(), any());
- }
-
- @Test
- public void transitionToPulsing_withoutCallback_wontHideWallpaper() {
- mScrimController.setWallpaperSupportsAmbientMode(true);
-
- mScrimController.transitionTo(ScrimState.PULSING);
-
- verify(mAlarmManager, never()).setExact(anyInt(), anyLong(), any(), any(), any());
- }
-
- @Test
public void testConservesExpansionOpacityAfterTransition() {
mScrimController.transitionTo(ScrimState.UNLOCKED);
mScrimController.setPanelExpansion(0.5f);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarWindowViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarWindowViewTest.java
index bf81325..4d4e9ae 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarWindowViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarWindowViewTest.java
@@ -29,6 +29,7 @@
import com.android.systemui.SystemUIFactory;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.classifier.FalsingManagerFake;
+import com.android.systemui.dock.DockManager;
import com.android.systemui.doze.DozeLog;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.statusbar.CommandQueue;
@@ -74,6 +75,7 @@
@Mock private DozeLog mDozeLog;
@Mock private DozeParameters mDozeParameters;
@Mock private SuperStatusBarViewFactory mSuperStatusBarViewFactory;
+ @Mock private DockManager mDockManager;
@Before
public void setUp() {
@@ -85,6 +87,7 @@
mDependency.injectTestDependency(ShadeController.class, mShadeController);
when(mSuperStatusBarViewFactory.getStatusBarWindowView()).thenReturn(mView);
+ when(mDockManager.isDocked()).thenReturn(false);
mController = new StatusBarWindowViewController.Builder(
new InjectionInflationController(
@@ -103,7 +106,8 @@
mDozeLog,
mDozeParameters,
new CommandQueue(mContext),
- mSuperStatusBarViewFactory)
+ mSuperStatusBarViewFactory,
+ mDockManager)
.setShadeController(mShadeController)
.build();
mController.setService(mStatusBar);