Merge "Change the use of ScreenLifecycle to WakefulnessLifecycle." into tm-qpr-dev am: 83623aaa8e am: 89e911fca9

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22322076

Change-Id: I844cd88e166be61eacee3b9d61e3cd565a6d8054
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Mike Schneider
2023-04-03 21:33:31 +00:00
committed by Automerger Merge Worker
3 changed files with 147 additions and 117 deletions

View File

@@ -116,28 +116,25 @@ public class QuickStepContract {
public static final int SYSUI_STATE_FREEFORM_ACTIVE_IN_DESKTOP_MODE = 1 << 26; public static final int SYSUI_STATE_FREEFORM_ACTIVE_IN_DESKTOP_MODE = 1 << 26;
// Device dreaming state // Device dreaming state
public static final int SYSUI_STATE_DEVICE_DREAMING = 1 << 27; public static final int SYSUI_STATE_DEVICE_DREAMING = 1 << 27;
// Whether the screen is currently on. Note that the screen is considered on while turning on, // Whether the device is currently awake (as opposed to asleep, see WakefulnessLifecycle).
// but not while turning off. // Note that the device is awake on while waking up on, but not while going to sleep.
public static final int SYSUI_STATE_SCREEN_ON = 1 << 28; public static final int SYSUI_STATE_AWAKE = 1 << 28;
// Whether the screen is currently transitioning into the state indicated by // Whether the device is currently transitioning between awake/asleep indicated by
// SYSUI_STATE_SCREEN_ON. // SYSUI_STATE_AWAKE.
public static final int SYSUI_STATE_SCREEN_TRANSITION = 1 << 29; public static final int SYSUI_STATE_WAKEFULNESS_TRANSITION = 1 << 29;
// The notification panel expansion fraction is > 0 // The notification panel expansion fraction is > 0
public static final int SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE = 1 << 30; public static final int SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE = 1 << 30;
// Mask for SystemUiStateFlags to isolate SYSUI_STATE_SCREEN_ON and // Mask for SystemUiStateFlags to isolate SYSUI_STATE_AWAKE and
// SYSUI_STATE_SCREEN_TRANSITION, to match SCREEN_STATE_* // SYSUI_STATE_WAKEFULNESS_TRANSITION, to match WAKEFULNESS_* constants
public static final int SYSUI_STATE_SCREEN_STATE_MASK = public static final int SYSUI_STATE_WAKEFULNESS_MASK =
SYSUI_STATE_SCREEN_ON | SYSUI_STATE_SCREEN_TRANSITION; SYSUI_STATE_AWAKE | SYSUI_STATE_WAKEFULNESS_TRANSITION;
// Screen is off. // Mirroring the WakefulnessLifecycle#Wakefulness states
public static final int SCREEN_STATE_OFF = 0; public static final int WAKEFULNESS_ASLEEP = 0;
// Screen is on. public static final int WAKEFULNESS_AWAKE = SYSUI_STATE_AWAKE;
public static final int SCREEN_STATE_ON = SYSUI_STATE_SCREEN_ON; public static final int WAKEFULNESS_GOING_TO_SLEEP = SYSUI_STATE_WAKEFULNESS_TRANSITION;
// Screen is still on, but transitioning to turn off. public static final int WAKEFULNESS_WAKING =
public static final int SCREEN_STATE_TURNING_OFF = SYSUI_STATE_SCREEN_TRANSITION; SYSUI_STATE_WAKEFULNESS_TRANSITION | SYSUI_STATE_AWAKE;
// Screen was off and is now turning on.
public static final int SCREEN_STATE_TURNING_ON =
SYSUI_STATE_SCREEN_TRANSITION | SYSUI_STATE_SCREEN_ON;
// Whether the back gesture is allowed (or ignored) by the Shade // Whether the back gesture is allowed (or ignored) by the Shade
public static final boolean ALLOW_BACK_GESTURE_IN_SHADE = SystemProperties.getBoolean( public static final boolean ALLOW_BACK_GESTURE_IN_SHADE = SystemProperties.getBoolean(
@@ -172,8 +169,9 @@ public class QuickStepContract {
SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING, SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING,
SYSUI_STATE_FREEFORM_ACTIVE_IN_DESKTOP_MODE, SYSUI_STATE_FREEFORM_ACTIVE_IN_DESKTOP_MODE,
SYSUI_STATE_DEVICE_DREAMING, SYSUI_STATE_DEVICE_DREAMING,
SYSUI_STATE_SCREEN_ON, SYSUI_STATE_AWAKE,
SYSUI_STATE_SCREEN_TRANSITION, SYSUI_STATE_WAKEFULNESS_TRANSITION,
SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE,
}) })
public @interface SystemUiStateFlags {} public @interface SystemUiStateFlags {}
@@ -195,7 +193,7 @@ public class QuickStepContract {
str.add("navbar_hidden"); str.add("navbar_hidden");
} }
if ((flags & SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED) != 0) { if ((flags & SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED) != 0) {
str.add("notif_visible"); str.add("notif_expanded");
} }
if ((flags & SYSUI_STATE_QUICK_SETTINGS_EXPANDED) != 0) { if ((flags & SYSUI_STATE_QUICK_SETTINGS_EXPANDED) != 0) {
str.add("qs_visible"); str.add("qs_visible");
@@ -263,11 +261,14 @@ public class QuickStepContract {
if ((flags & SYSUI_STATE_DEVICE_DREAMING) != 0) { if ((flags & SYSUI_STATE_DEVICE_DREAMING) != 0) {
str.add("device_dreaming"); str.add("device_dreaming");
} }
if ((flags & SYSUI_STATE_SCREEN_TRANSITION) != 0) { if ((flags & SYSUI_STATE_WAKEFULNESS_TRANSITION) != 0) {
str.add("screen_transition"); str.add("wakefulness_transition");
} }
if ((flags & SYSUI_STATE_SCREEN_ON) != 0) { if ((flags & SYSUI_STATE_AWAKE) != 0) {
str.add("screen_on"); str.add("awake");
}
if ((flags & SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE) != 0) {
str.add("notif_visible");
} }
return str.toString(); return str.toString();

View File

@@ -28,15 +28,15 @@ import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SYS
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_UNFOLD_ANIMATION_FORWARDER; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_UNFOLD_ANIMATION_FORWARDER;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_UNLOCK_ANIMATION_CONTROLLER; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_UNLOCK_ANIMATION_CONTROLLER;
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_WINDOW_CORNER_RADIUS; import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_WINDOW_CORNER_RADIUS;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_AWAKE;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BOUNCER_SHOWING; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BOUNCER_SHOWING;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_DEVICE_DOZING; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_DEVICE_DOZING;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_DEVICE_DREAMING; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_DEVICE_DREAMING;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_ON;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_TRANSITION;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_TRACING_ENABLED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_TRACING_ENABLED;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING;
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_WAKEFULNESS_TRANSITION;
import android.annotation.FloatRange; import android.annotation.FloatRange;
import android.app.ActivityTaskManager; import android.app.ActivityTaskManager;
@@ -85,6 +85,7 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.model.SysUiState; import com.android.systemui.model.SysUiState;
import com.android.systemui.navigationbar.NavigationBar; import com.android.systemui.navigationbar.NavigationBar;
import com.android.systemui.navigationbar.NavigationBarController; import com.android.systemui.navigationbar.NavigationBarController;
@@ -521,6 +522,7 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
NotificationShadeWindowController statusBarWinController, SysUiState sysUiState, NotificationShadeWindowController statusBarWinController, SysUiState sysUiState,
UserTracker userTracker, UserTracker userTracker,
ScreenLifecycle screenLifecycle, ScreenLifecycle screenLifecycle,
WakefulnessLifecycle wakefulnessLifecycle,
UiEventLogger uiEventLogger, UiEventLogger uiEventLogger,
DisplayTracker displayTracker, DisplayTracker displayTracker,
KeyguardUnlockAnimationController sysuiUnlockAnimationController, KeyguardUnlockAnimationController sysuiUnlockAnimationController,
@@ -598,8 +600,8 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
// Listen for user setup // Listen for user setup
mUserTracker.addCallback(mUserChangedCallback, mMainExecutor); mUserTracker.addCallback(mUserChangedCallback, mMainExecutor);
screenLifecycle.addObserver(mLifecycleObserver); screenLifecycle.addObserver(mScreenLifecycleObserver);
wakefulnessLifecycle.addObserver(mWakefulnessLifecycleObserver);
// Connect to the service // Connect to the service
updateEnabledState(); updateEnabledState();
startConnectionToCurrentUser(); startConnectionToCurrentUser();
@@ -864,81 +866,94 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
} }
} }
private final ScreenLifecycle.Observer mLifecycleObserver = new ScreenLifecycle.Observer() { private final ScreenLifecycle.Observer mScreenLifecycleObserver =
/** new ScreenLifecycle.Observer() {
* Notifies the Launcher that screen turned on and ready to use /**
*/ * Notifies the Launcher that screen turned on and ready to use
@Override */
public void onScreenTurnedOn() { @Override
mSysUiState public void onScreenTurnedOn() {
.setFlag(SYSUI_STATE_SCREEN_ON, true) try {
.setFlag(SYSUI_STATE_SCREEN_TRANSITION, false) if (mOverviewProxy != null) {
.commitUpdate(mContext.getDisplayId()); mOverviewProxy.onScreenTurnedOn();
} else {
try { Log.e(TAG_OPS,
if (mOverviewProxy != null) { "Failed to get overview proxy for screen turned on event.");
mOverviewProxy.onScreenTurnedOn(); }
} else { } catch (RemoteException e) {
Log.e(TAG_OPS, "Failed to get overview proxy for screen turned on event."); Log.e(TAG_OPS, "Failed to call onScreenTurnedOn()", e);
}
} }
} catch (RemoteException e) {
Log.e(TAG_OPS, "Failed to call onScreenTurnedOn()", e);
}
}
/** /**
* Notifies the Launcher that screen turned off. * Notifies the Launcher that screen is starting to turn on.
*/ */
@Override @Override
public void onScreenTurnedOff() { public void onScreenTurningOff() {
mSysUiState try {
.setFlag(SYSUI_STATE_SCREEN_ON, false) if (mOverviewProxy != null) {
.setFlag(SYSUI_STATE_SCREEN_TRANSITION, false) mOverviewProxy.onScreenTurningOff();
.commitUpdate(mContext.getDisplayId()); } else {
} Log.e(TAG_OPS,
"Failed to get overview proxy for screen turning off event.");
/** }
* Notifies the Launcher that screen is starting to turn on. } catch (RemoteException e) {
*/ Log.e(TAG_OPS, "Failed to call onScreenTurningOff()", e);
@Override }
public void onScreenTurningOff() {
mSysUiState
.setFlag(SYSUI_STATE_SCREEN_ON, false)
.setFlag(SYSUI_STATE_SCREEN_TRANSITION, true)
.commitUpdate(mContext.getDisplayId());
try {
if (mOverviewProxy != null) {
mOverviewProxy.onScreenTurningOff();
} else {
Log.e(TAG_OPS, "Failed to get overview proxy for screen turning off event.");
} }
} catch (RemoteException e) {
Log.e(TAG_OPS, "Failed to call onScreenTurningOff()", e);
}
}
/** /**
* Notifies the Launcher that screen is starting to turn on. * Notifies the Launcher that screen is starting to turn on.
*/ */
@Override @Override
public void onScreenTurningOn() { public void onScreenTurningOn() {
mSysUiState try {
.setFlag(SYSUI_STATE_SCREEN_ON, true) if (mOverviewProxy != null) {
.setFlag(SYSUI_STATE_SCREEN_TRANSITION, true) mOverviewProxy.onScreenTurningOn();
.commitUpdate(mContext.getDisplayId()); } else {
Log.e(TAG_OPS,
try { "Failed to get overview proxy for screen turning on event.");
if (mOverviewProxy != null) { }
mOverviewProxy.onScreenTurningOn(); } catch (RemoteException e) {
} else { Log.e(TAG_OPS, "Failed to call onScreenTurningOn()", e);
Log.e(TAG_OPS, "Failed to get overview proxy for screen turning on event."); }
} }
} catch (RemoteException e) { };
Log.e(TAG_OPS, "Failed to call onScreenTurningOn()", e);
} private final WakefulnessLifecycle.Observer mWakefulnessLifecycleObserver =
} new WakefulnessLifecycle.Observer() {
}; @Override
public void onStartedWakingUp() {
mSysUiState
.setFlag(SYSUI_STATE_AWAKE, true)
.setFlag(SYSUI_STATE_WAKEFULNESS_TRANSITION, true)
.commitUpdate(mContext.getDisplayId());
}
@Override
public void onFinishedWakingUp() {
mSysUiState
.setFlag(SYSUI_STATE_AWAKE, true)
.setFlag(SYSUI_STATE_WAKEFULNESS_TRANSITION, false)
.commitUpdate(mContext.getDisplayId());
}
@Override
public void onStartedGoingToSleep() {
mSysUiState
.setFlag(SYSUI_STATE_AWAKE, false)
.setFlag(SYSUI_STATE_WAKEFULNESS_TRANSITION, true)
.commitUpdate(mContext.getDisplayId());
}
@Override
public void onFinishedGoingToSleep() {
mSysUiState
.setFlag(SYSUI_STATE_AWAKE, false)
.setFlag(SYSUI_STATE_WAKEFULNESS_TRANSITION, false)
.commitUpdate(mContext.getDisplayId());
}
};
void notifyToggleRecentApps() { void notifyToggleRecentApps() {
for (int i = mConnectionCallbacks.size() - 1; i >= 0; --i) { for (int i = mConnectionCallbacks.size() - 1; i >= 0; --i) {

View File

@@ -19,6 +19,7 @@ package com.android.systemui.recents
import android.content.ComponentName import android.content.ComponentName
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.content.pm.ResolveInfo import android.content.pm.ResolveInfo
import android.os.PowerManager
import android.testing.AndroidTestingRunner import android.testing.AndroidTestingRunner
import android.testing.TestableContext import android.testing.TestableContext
import android.testing.TestableLooper import android.testing.TestableLooper
@@ -30,6 +31,7 @@ import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager import com.android.systemui.dump.DumpManager
import com.android.systemui.keyguard.KeyguardUnlockAnimationController import com.android.systemui.keyguard.KeyguardUnlockAnimationController
import com.android.systemui.keyguard.ScreenLifecycle import com.android.systemui.keyguard.ScreenLifecycle
import com.android.systemui.keyguard.WakefulnessLifecycle
import com.android.systemui.model.SysUiState import com.android.systemui.model.SysUiState
import com.android.systemui.navigationbar.NavigationBarController import com.android.systemui.navigationbar.NavigationBarController
import com.android.systemui.navigationbar.NavigationModeController import com.android.systemui.navigationbar.NavigationModeController
@@ -37,16 +39,17 @@ import com.android.systemui.recents.OverviewProxyService.ACTION_QUICKSTEP
import com.android.systemui.settings.FakeDisplayTracker import com.android.systemui.settings.FakeDisplayTracker
import com.android.systemui.settings.UserTracker import com.android.systemui.settings.UserTracker
import com.android.systemui.shared.recents.IOverviewProxy import com.android.systemui.shared.recents.IOverviewProxy
import com.android.systemui.shared.system.QuickStepContract.SCREEN_STATE_OFF import com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_WAKEFULNESS_MASK
import com.android.systemui.shared.system.QuickStepContract.SCREEN_STATE_ON import com.android.systemui.shared.system.QuickStepContract.WAKEFULNESS_ASLEEP
import com.android.systemui.shared.system.QuickStepContract.SCREEN_STATE_TURNING_OFF import com.android.systemui.shared.system.QuickStepContract.WAKEFULNESS_AWAKE
import com.android.systemui.shared.system.QuickStepContract.SCREEN_STATE_TURNING_ON import com.android.systemui.shared.system.QuickStepContract.WAKEFULNESS_GOING_TO_SLEEP
import com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_STATE_MASK import com.android.systemui.shared.system.QuickStepContract.WAKEFULNESS_WAKING
import com.android.systemui.statusbar.CommandQueue import com.android.systemui.statusbar.CommandQueue
import com.android.systemui.statusbar.NotificationShadeWindowController import com.android.systemui.statusbar.NotificationShadeWindowController
import com.android.systemui.statusbar.phone.CentralSurfaces import com.android.systemui.statusbar.phone.CentralSurfaces
import com.android.systemui.unfold.progress.UnfoldTransitionProgressForwarder import com.android.systemui.unfold.progress.UnfoldTransitionProgressForwarder
import com.android.systemui.util.mockito.whenever import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.time.FakeSystemClock
import com.android.wm.shell.sysui.ShellInterface import com.android.wm.shell.sysui.ShellInterface
import com.google.common.util.concurrent.MoreExecutors import com.google.common.util.concurrent.MoreExecutors
import dagger.Lazy import dagger.Lazy
@@ -60,6 +63,7 @@ import org.mockito.ArgumentMatchers
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.any import org.mockito.Mockito.any
import org.mockito.Mockito.anyInt import org.mockito.Mockito.anyInt
import org.mockito.Mockito.clearInvocations
import org.mockito.Mockito.intThat import org.mockito.Mockito.intThat
import org.mockito.Mockito.mock import org.mockito.Mockito.mock
import org.mockito.Mockito.verify import org.mockito.Mockito.verify
@@ -75,8 +79,11 @@ class OverviewProxyServiceTest : SysuiTestCase() {
private lateinit var subject: OverviewProxyService private lateinit var subject: OverviewProxyService
private val dumpManager = DumpManager() private val dumpManager = DumpManager()
private val displayTracker = FakeDisplayTracker(mContext) private val displayTracker = FakeDisplayTracker(mContext)
private val fakeSystemClock = FakeSystemClock()
private val sysUiState = SysUiState(displayTracker) private val sysUiState = SysUiState(displayTracker)
private val screenLifecycle = ScreenLifecycle(dumpManager) private val screenLifecycle = ScreenLifecycle(dumpManager)
private val wakefulnessLifecycle =
WakefulnessLifecycle(mContext, null, fakeSystemClock, dumpManager)
@Mock private lateinit var overviewProxy: IOverviewProxy.Stub @Mock private lateinit var overviewProxy: IOverviewProxy.Stub
@Mock private lateinit var packageManager: PackageManager @Mock private lateinit var packageManager: PackageManager
@@ -130,6 +137,7 @@ class OverviewProxyServiceTest : SysuiTestCase() {
sysUiState, sysUiState,
userTracker, userTracker,
screenLifecycle, screenLifecycle,
wakefulnessLifecycle,
uiEventLogger, uiEventLogger,
displayTracker, displayTracker,
sysuiUnlockAnimationController, sysuiUnlockAnimationController,
@@ -145,42 +153,48 @@ class OverviewProxyServiceTest : SysuiTestCase() {
} }
@Test @Test
fun `ScreenLifecycle - screenTurnedOn triggers SysUI state flag changes `() { fun `WakefulnessLifecycle - dispatchFinishedWakingUp sets SysUI flag to AWAKE`() {
screenLifecycle.dispatchScreenTurnedOn() // WakefulnessLifecycle is initialized to AWAKE initially, and won't emit a noop.
wakefulnessLifecycle.dispatchFinishedGoingToSleep()
clearInvocations(overviewProxy)
wakefulnessLifecycle.dispatchFinishedWakingUp()
verify(overviewProxy) verify(overviewProxy)
.onSystemUiStateChanged( .onSystemUiStateChanged(
intThat { it and SYSUI_STATE_SCREEN_STATE_MASK == SCREEN_STATE_ON } intThat { it and SYSUI_STATE_WAKEFULNESS_MASK == WAKEFULNESS_AWAKE }
) )
} }
@Test @Test
fun `ScreenLifecycle - screenTurningOn triggers SysUI state flag changes `() { fun `WakefulnessLifecycle - dispatchStartedWakingUp sets SysUI flag to WAKING`() {
screenLifecycle.dispatchScreenTurningOn() wakefulnessLifecycle.dispatchStartedWakingUp(PowerManager.WAKE_REASON_UNKNOWN)
verify(overviewProxy) verify(overviewProxy)
.onSystemUiStateChanged( .onSystemUiStateChanged(
intThat { it and SYSUI_STATE_SCREEN_STATE_MASK == SCREEN_STATE_TURNING_ON } intThat { it and SYSUI_STATE_WAKEFULNESS_MASK == WAKEFULNESS_WAKING }
) )
} }
@Test @Test
fun `ScreenLifecycle - screenTurnedOff triggers SysUI state flag changes `() { fun `WakefulnessLifecycle - dispatchFinishedGoingToSleep sets SysUI flag to ASLEEP`() {
screenLifecycle.dispatchScreenTurnedOff() wakefulnessLifecycle.dispatchFinishedGoingToSleep()
verify(overviewProxy) verify(overviewProxy)
.onSystemUiStateChanged( .onSystemUiStateChanged(
intThat { it and SYSUI_STATE_SCREEN_STATE_MASK == SCREEN_STATE_OFF } intThat { it and SYSUI_STATE_WAKEFULNESS_MASK == WAKEFULNESS_ASLEEP }
) )
} }
@Test @Test
fun `ScreenLifecycle - screenTurningOff triggers SysUI state flag changes `() { fun `WakefulnessLifecycle - dispatchStartedGoingToSleep sets SysUI flag to GOING_TO_SLEEP`() {
screenLifecycle.dispatchScreenTurningOff() wakefulnessLifecycle.dispatchStartedGoingToSleep(
PowerManager.GO_TO_SLEEP_REASON_POWER_BUTTON
)
verify(overviewProxy) verify(overviewProxy)
.onSystemUiStateChanged( .onSystemUiStateChanged(
intThat { it and SYSUI_STATE_SCREEN_STATE_MASK == SCREEN_STATE_TURNING_OFF } intThat { it and SYSUI_STATE_WAKEFULNESS_MASK == WAKEFULNESS_GOING_TO_SLEEP }
) )
} }
} }