Update doze state when device wakes-up
After the refactor, mDozing ended up being false for while until DreamManagerService decides to end our DreamService. This ended up delaying scrim transitions and causing display flashing. Change-Id: I1630d1536ab0a009a5b8d13f7fb4502b5f6a4dda Fixes: 118684623 Test: manual Test: atest StatusBarTest
This commit is contained in:
@@ -342,7 +342,8 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
private int mStatusBarWindowState = WINDOW_STATE_SHOWING;
|
||||
protected StatusBarWindowController mStatusBarWindowController;
|
||||
protected UnlockMethodCache mUnlockMethodCache;
|
||||
private DozeServiceHost mDozeServiceHost = new DozeServiceHost();
|
||||
@VisibleForTesting
|
||||
DozeServiceHost mDozeServiceHost = new DozeServiceHost();
|
||||
private boolean mWakeUpComingFromTouch;
|
||||
private PointF mWakeUpTouchLocation;
|
||||
|
||||
@@ -479,7 +480,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
private boolean mLaunchCameraOnScreenTurningOn;
|
||||
private boolean mLaunchCameraOnFinishedGoingToSleep;
|
||||
private int mLastCameraLaunchSource;
|
||||
private PowerManager.WakeLock mGestureWakeLock;
|
||||
protected PowerManager.WakeLock mGestureWakeLock;
|
||||
private Vibrator mVibrator;
|
||||
private long[] mCameraLaunchGestureVibePattern;
|
||||
|
||||
@@ -3609,6 +3610,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
}
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
final WakefulnessLifecycle.Observer mWakefulnessObserver = new WakefulnessLifecycle.Observer() {
|
||||
@Override
|
||||
public void onFinishedGoingToSleep() {
|
||||
@@ -3650,6 +3652,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
mNotificationPanel.setTouchAndAnimationDisabled(false);
|
||||
updateVisibleToUser();
|
||||
updateIsKeyguard();
|
||||
mDozeServiceHost.stopDozing();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3856,7 +3859,8 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
return mStatusBarKeyguardViewManager.isShowing();
|
||||
}
|
||||
|
||||
private final class DozeServiceHost implements DozeHost {
|
||||
@VisibleForTesting
|
||||
final class DozeServiceHost implements DozeHost {
|
||||
private final ArrayList<Callback> mCallbacks = new ArrayList<>();
|
||||
private boolean mAnimateWakeup;
|
||||
private boolean mAnimateScreenOff;
|
||||
@@ -3944,7 +3948,6 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
mDozingRequested = false;
|
||||
DozeLog.traceDozing(mContext, mDozing);
|
||||
updateDozing();
|
||||
mWakefulnessLifecycle.dispatchStartedWakingUp();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -593,6 +593,30 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
verify(mStatusBarStateController).setState(eq(StatusBarState.FULLSCREEN_USER_SWITCHER));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStartStopDozing() {
|
||||
mStatusBar.setBarStateForTest(StatusBarState.KEYGUARD);
|
||||
when(mStatusBarStateController.isKeyguardRequested()).thenReturn(true);
|
||||
|
||||
mStatusBar.mDozeServiceHost.startDozing();
|
||||
verify(mStatusBarStateController).setIsDozing(eq(true));
|
||||
|
||||
mStatusBar.mDozeServiceHost.stopDozing();
|
||||
verify(mStatusBarStateController).setIsDozing(eq(false));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnStartedWakingUp_isNotDozing() {
|
||||
mStatusBar.setBarStateForTest(StatusBarState.KEYGUARD);
|
||||
when(mStatusBarStateController.isKeyguardRequested()).thenReturn(true);
|
||||
|
||||
mStatusBar.mDozeServiceHost.startDozing();
|
||||
verify(mStatusBarStateController).setIsDozing(eq(true));
|
||||
|
||||
mStatusBar.mWakefulnessObserver.onStartedWakingUp();
|
||||
verify(mStatusBarStateController).setIsDozing(eq(false));
|
||||
}
|
||||
|
||||
static class TestableStatusBar extends StatusBar {
|
||||
public TestableStatusBar(StatusBarKeyguardViewManager man,
|
||||
UnlockMethodCache unlock, KeyguardIndicationController key,
|
||||
@@ -642,6 +666,7 @@ public class StatusBarTest extends SysuiTestCase {
|
||||
mLockscreenUserManager = notificationLockscreenUserManager;
|
||||
mCommandQueue = commandQueue;
|
||||
mPresenter = notificationPresenter;
|
||||
mGestureWakeLock = mock(PowerManager.WakeLock.class);
|
||||
}
|
||||
|
||||
private WakefulnessLifecycle createAwakeWakefulnessLifecycle() {
|
||||
|
||||
Reference in New Issue
Block a user