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:
Lucas Dupin
2018-11-13 16:56:49 -08:00
parent 9f557739e1
commit 29a07ec2b2
2 changed files with 32 additions and 4 deletions

View File

@@ -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();
}
}

View File

@@ -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() {