summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java20
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java15
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeScrimControllerTest.java31
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();