diff options
3 files changed, 21 insertions, 45 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java index 25db4f20a450..a0597dc66d14 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java @@ -17,7 +17,6 @@ package com.android.systemui.statusbar.phone; import android.annotation.NonNull; -import android.content.Context; import android.os.Handler; import android.util.Log; @@ -33,7 +32,6 @@ public class DozeScrimController { private final DozeParameters mDozeParameters; private final Handler mHandler = new Handler(); - private final ScrimController mScrimController; private boolean mDozing; private DozeHost.PulseCallback mPulseCallback; @@ -83,9 +81,7 @@ public class DozeScrimController { } }; - public DozeScrimController(ScrimController scrimController, Context context, - DozeParameters dozeParameters) { - mScrimController = scrimController; + public DozeScrimController(DozeParameters dozeParameters) { mDozeParameters = dozeParameters; } @@ -117,8 +113,6 @@ public class DozeScrimController { // be invoked when we're done so that the caller can drop the pulse wakelock. mPulseCallback = callback; mPulseReason = reason; - - mScrimController.transitionTo(ScrimState.PULSING, mScrimCallback); } public void pulseOutNow() { @@ -180,13 +174,11 @@ public class DozeScrimController { mHandler.removeCallbacks(mPulseOutExtended); if (DEBUG) Log.d(TAG, "Pulse out, mDozing=" + mDozing); if (!mDozing) return; - mScrimController.transitionTo(ScrimState.AOD, - new ScrimController.Callback() { - @Override - public void onDisplayBlanked() { - pulseFinished(); - } - }); + pulseFinished(); } }; + + public ScrimController.Callback getScrimCallback() { + return mScrimCallback; + } }
\ No newline at end of file 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 2b661abce04a..201d6d0f0483 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -882,8 +882,7 @@ public class StatusBar extends SystemUI implements DemoMode, mContext.getSystemService(AlarmManager.class)); mNotificationPanel.initDependencies(this, mGroupManager, mNotificationShelf, mHeadsUpManager, mNotificationIconAreaController, mScrimController); - mDozeScrimController = new DozeScrimController(mScrimController, context, - DozeParameters.getInstance(context)); + mDozeScrimController = new DozeScrimController(DozeParameters.getInstance(context)); mBackdrop = mStatusBarWindow.findViewById(R.id.backdrop); mBackdropFront = mBackdrop.findViewById(R.id.backdrop_front); @@ -1519,7 +1518,7 @@ public class StatusBar extends SystemUI implements DemoMode, } public boolean isPulsing() { - return mDozeScrimController != null && mDozeScrimController.isPulsing(); + return mAmbientPulseManager.hasNotifications(); } public boolean isLaunchTransitionFadingAway() { @@ -3648,7 +3647,6 @@ public class StatusBar extends SystemUI implements DemoMode, mNotificationPanel.setTouchAndAnimationDisabled(false); updateVisibleToUser(); updateIsKeyguard(); - updateScrimController(); } }; @@ -3834,8 +3832,9 @@ public class StatusBar extends SystemUI implements DemoMode, } else if (mBrightnessMirrorVisible) { mScrimController.transitionTo(ScrimState.BRIGHTNESS_MIRROR); } else if (isPulsing()) { - // Handled in DozeScrimController#setPulsing - } else if (mDozing) { + mScrimController.transitionTo(ScrimState.PULSING, + mDozeScrimController.getScrimCallback()); + } else if (mDozing && !wakeAndUnlocking) { mScrimController.transitionTo(ScrimState.AOD); } else if (mIsKeyguard && !wakeAndUnlocking) { mScrimController.transitionTo(mNotificationPanel.isSemiAwake() @@ -3928,8 +3927,12 @@ public class StatusBar extends SystemUI implements DemoMode, mNotificationPanel.setPulsing(pulsing); mVisualStabilityManager.setPulsing(pulsing); mIgnoreTouchWhilePulsing = false; + updateScrimController(); } }, reason); + // DozeScrimController is in pulse state, now let's ask ScrimController to start + // pulsing and draw the black frame, if necessary. + updateScrimController(); } @Override diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeScrimControllerTest.java index 203ebe6d5132..fe36b6d14748 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeScrimControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeScrimControllerTest.java @@ -16,14 +16,10 @@ package com.android.systemui.statusbar.phone; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; -import android.os.Debug; import android.support.test.filters.SmallTest; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; @@ -43,41 +39,26 @@ import org.mockito.MockitoAnnotations; public class DozeScrimControllerTest extends SysuiTestCase { @Mock - private ScrimController mScrimController; - @Mock private DozeParameters mDozeParameters; private DozeScrimController mDozeScrimController; @Before public void setup() { MockitoAnnotations.initMocks(this); - // Make sure callbacks will be invoked to complete the lifecycle. - doAnswer(invocationOnMock -> { - ScrimController.Callback callback = invocationOnMock.getArgument(1); - callback.onStart(); - callback.onDisplayBlanked(); - callback.onFinished(); - return null; - }).when(mScrimController).transitionTo(any(ScrimState.class), - any(ScrimController.Callback.class)); - - mDozeScrimController = new DozeScrimController(mScrimController, getContext(), - mDozeParameters); + mDozeScrimController = new DozeScrimController(mDozeParameters); mDozeScrimController.setDozing(true); } @Test - public void changesScrimControllerState() { - mDozeScrimController.pulse(mock(DozeHost.PulseCallback.class), 0); - verify(mScrimController).transitionTo(eq(ScrimState.PULSING), - any(ScrimController.Callback.class)); - } - - @Test public void callsPulseCallback() { DozeHost.PulseCallback callback = mock(DozeHost.PulseCallback.class); mDozeScrimController.pulse(callback, 0); + // Manually simulate a scrim lifecycle + mDozeScrimController.getScrimCallback().onStart(); + mDozeScrimController.getScrimCallback().onDisplayBlanked(); + mDozeScrimController.getScrimCallback().onFinished(); + verify(callback).onPulseStarted(); mDozeScrimController.pulseOutNow(); verify(callback).onPulseFinished(); |