Merge "Set DreamsActivateOnSleepSetting and handle Sandman in tests" into tm-dev

This commit is contained in:
Robert Horvath
2022-03-24 13:33:02 +00:00
committed by Android (Google) Code Review
2 changed files with 51 additions and 2 deletions

View File

@@ -2029,7 +2029,7 @@ public final class PowerManagerService extends SystemService
private boolean dozePowerGroupLocked(final PowerGroup powerGroup, long eventTime,
int reason, int uid) {
if (DEBUG_SPEW) {
Slog.d(TAG, "sleepDisplayGroupNoUpdateLocked: eventTime=" + eventTime
Slog.d(TAG, "dozePowerGroup: eventTime=" + eventTime
+ ", groupId=" + powerGroup.getGroupId() + ", reason=" + reason
+ ", uid=" + uid);
}
@@ -3158,7 +3158,7 @@ public final class PowerManagerService extends SystemService
Message msg = mHandler.obtainMessage(MSG_SANDMAN);
msg.arg1 = powerGroup.getGroupId();
msg.setAsynchronous(true);
mHandler.sendMessage(msg);
mHandler.sendMessageAtTime(msg, mClock.uptimeMillis());
}
}
}

View File

@@ -210,6 +210,8 @@ public class PowerManagerServiceTest {
Settings.Global.putInt(mContextSpy.getContentResolver(),
Settings.Global.STAY_ON_WHILE_PLUGGED_IN, 0);
Settings.Secure.putInt(mContextSpy.getContentResolver(),
Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 0);
mClock = new OffsettableClock.Stopped();
mTestLooper = new TestLooper(mClock::now);
@@ -709,6 +711,48 @@ public class PowerManagerServiceTest {
assertThat(mService.getBinderServiceInstance().forceSuspend()).isFalse();
}
@SuppressWarnings("GuardedBy")
@Test
public void testScreensaverActivateOnSleepDisabled_powered_afterTimeout_goesToDozing() {
when(mBatteryManagerInternalMock.isPowered(anyInt())).thenReturn(true);
doAnswer(inv -> {
when(mDreamManagerInternalMock.isDreaming()).thenReturn(true);
return null;
}).when(mDreamManagerInternalMock).startDream(anyBoolean());
setMinimumScreenOffTimeoutConfig(5);
createService();
startSystem();
assertThat(mService.getGlobalWakefulnessLocked()).isEqualTo(WAKEFULNESS_AWAKE);
advanceTime(15000);
assertThat(mService.getGlobalWakefulnessLocked()).isEqualTo(WAKEFULNESS_DOZING);
}
@SuppressWarnings("GuardedBy")
@Test
public void testScreensaverActivateOnSleepEnabled_powered_afterTimeout_goesToDreaming() {
when(mBatteryManagerInternalMock.isPowered(anyInt())).thenReturn(true);
Settings.Secure.putInt(mContextSpy.getContentResolver(),
Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, 1);
doAnswer(inv -> {
when(mDreamManagerInternalMock.isDreaming()).thenReturn(true);
return null;
}).when(mDreamManagerInternalMock).startDream(anyBoolean());
setMinimumScreenOffTimeoutConfig(5);
createService();
startSystem();
assertThat(mService.getGlobalWakefulnessLocked()).isEqualTo(WAKEFULNESS_AWAKE);
advanceTime(15000);
assertThat(mService.getGlobalWakefulnessLocked()).isEqualTo(WAKEFULNESS_DREAMING);
}
@Test
public void testSetDozeOverrideFromDreamManager_triggersSuspendBlocker() {
final String suspendBlockerName = "PowerManagerService.Display";
@@ -1136,6 +1180,11 @@ public class PowerManagerServiceTest {
info.displayGroupId = nonDefaultDisplayGroupId;
when(mDisplayManagerInternalMock.getDisplayInfo(nonDefaultDisplay)).thenReturn(info);
doAnswer(inv -> {
when(mDreamManagerInternalMock.isDreaming()).thenReturn(true);
return null;
}).when(mDreamManagerInternalMock).startDream(anyBoolean());
final String pkg = mContextSpy.getOpPackageName();
final Binder token = new Binder();
final String tag = "testRemovedDisplayGroupWakeLock_affectsNoDisplayGroups";