diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java b/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java index e9d78d9b4fdf5..e2047bf898339 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java @@ -69,7 +69,7 @@ public class DozeFactory { new DozeScreenState(wrappedService, handler, params, wakeLock), createDozeScreenBrightness(context, wrappedService, sensorManager, host, params, handler), - new DozeWallpaperState(context, params) + new DozeWallpaperState(context) }); return machine; diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeWallpaperState.java b/packages/SystemUI/src/com/android/systemui/doze/DozeWallpaperState.java index 9d110fb74d869..47f86fed7e694 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeWallpaperState.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeWallpaperState.java @@ -38,40 +38,33 @@ public class DozeWallpaperState implements DozeMachine.Part { private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private final IWallpaperManager mWallpaperManagerService; - private boolean mKeyguardVisible; private boolean mIsAmbientMode; private final DozeParameters mDozeParameters; - public DozeWallpaperState(Context context, DozeParameters dozeParameters) { + public DozeWallpaperState(Context context) { this(IWallpaperManager.Stub.asInterface( ServiceManager.getService(Context.WALLPAPER_SERVICE)), - dozeParameters, KeyguardUpdateMonitor.getInstance(context)); + DozeParameters.getInstance(context)); } @VisibleForTesting - DozeWallpaperState(IWallpaperManager wallpaperManagerService, DozeParameters parameters, - KeyguardUpdateMonitor keyguardUpdateMonitor) { + DozeWallpaperState(IWallpaperManager wallpaperManagerService, DozeParameters parameters) { mWallpaperManagerService = wallpaperManagerService; mDozeParameters = parameters; - keyguardUpdateMonitor.registerCallback(new KeyguardUpdateMonitorCallback() { - @Override - public void onKeyguardVisibilityChanged(boolean showing) { - mKeyguardVisible = showing; - } - }); } @Override public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) { final boolean isAmbientMode; switch (newState) { + case DOZE: case DOZE_AOD: case DOZE_AOD_PAUSING: case DOZE_AOD_PAUSED: case DOZE_REQUEST_PULSE: case DOZE_PULSING: case DOZE_PULSE_DONE: - isAmbientMode = mDozeParameters.getAlwaysOn(); + isAmbientMode = true; break; default: isAmbientMode = false; @@ -81,7 +74,9 @@ public class DozeWallpaperState implements DozeMachine.Part { if (isAmbientMode) { animated = mDozeParameters.shouldControlScreenOff(); } else { - animated = !mDozeParameters.getDisplayNeedsBlanking(); + boolean wakingUpFromPulse = oldState == DozeMachine.State.DOZE_PULSING + && newState == DozeMachine.State.FINISH; + animated = !mDozeParameters.getDisplayNeedsBlanking() || wakingUpFromPulse; } if (isAmbientMode != mIsAmbientMode) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeWallpaperStateTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeWallpaperStateTest.java index 5c80bb5ded9d4..6ac44628b52f4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeWallpaperStateTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeWallpaperStateTest.java @@ -45,13 +45,11 @@ public class DozeWallpaperStateTest extends SysuiTestCase { private DozeWallpaperState mDozeWallpaperState; @Mock IWallpaperManager mIWallpaperManager; @Mock DozeParameters mDozeParameters; - @Mock KeyguardUpdateMonitor mKeyguardUpdateMonitor; @Before public void setUp() { MockitoAnnotations.initMocks(this); - mDozeWallpaperState = new DozeWallpaperState(mIWallpaperManager, mDozeParameters, - mKeyguardUpdateMonitor); + mDozeWallpaperState = new DozeWallpaperState(mIWallpaperManager, mDozeParameters); } @Test @@ -100,4 +98,28 @@ public class DozeWallpaperStateTest extends SysuiTestCase { mDozeWallpaperState.transitionTo(DozeMachine.State.DOZE_AOD, DozeMachine.State.FINISH); verify(mIWallpaperManager).setInAmbientMode(eq(false), eq(false)); } + + @Test + public void testTransitionTo_requestPulseIsAmbientMode() throws RemoteException { + mDozeWallpaperState.transitionTo(DozeMachine.State.DOZE, + DozeMachine.State.DOZE_REQUEST_PULSE); + verify(mIWallpaperManager).setInAmbientMode(eq(true), eq(false)); + } + + @Test + public void testTransitionTo_pulseIsAmbientMode() throws RemoteException { + mDozeWallpaperState.transitionTo(DozeMachine.State.DOZE_REQUEST_PULSE, + DozeMachine.State.DOZE_PULSING); + verify(mIWallpaperManager).setInAmbientMode(eq(true), eq(false)); + } + + @Test + public void testTransitionTo_animatesWhenWakingUpFromPulse() throws RemoteException { + mDozeWallpaperState.transitionTo(DozeMachine.State.DOZE_REQUEST_PULSE, + DozeMachine.State.DOZE_PULSING); + reset(mIWallpaperManager); + mDozeWallpaperState.transitionTo(DozeMachine.State.DOZE_PULSING, + DozeMachine.State.FINISH); + verify(mIWallpaperManager).setInAmbientMode(eq(false), eq(true)); + } }