Merge "Only restart the sleep state if SysUI was dozing" into tm-qpr-dev am: 751a07fbca

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

Change-Id: I268f855d2a1dd8c3e5c2f42fdb0e066b47bc4fc0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Beverly Tai
2023-03-22 19:06:23 +00:00
committed by Automerger Merge Worker
2 changed files with 26 additions and 18 deletions

View File

@@ -39,15 +39,15 @@ constructor(
) {
companion object {
@VisibleForTesting val RESTART_NAP_KEY = "restart_nap_after_start"
@VisibleForTesting val RESTART_SLEEP_KEY = "restart_nap_after_start"
}
private var inited = false
val listener =
object : StatusBarStateController.StateListener {
override fun onDreamingChanged(isDreaming: Boolean) {
storeSleepState(isDreaming)
override fun onDozingChanged(isDozing: Boolean) {
storeSleepState(isDozing)
}
}
@@ -67,9 +67,13 @@ constructor(
fun maybeRestartSleep() {
bgExecutor.executeDelayed(
{
if (settings.getBool(RESTART_NAP_KEY, false)) {
if (settings.getBool(RESTART_SLEEP_KEY, false)) {
Log.d("RestartDozeListener", "Restarting sleep state")
powerManager.wakeUp(systemClock.uptimeMillis())
powerManager.wakeUp(
systemClock.uptimeMillis(),
PowerManager.WAKE_REASON_APPLICATION,
"RestartDozeListener"
)
powerManager.goToSleep(systemClock.uptimeMillis())
}
},
@@ -78,6 +82,6 @@ constructor(
}
private fun storeSleepState(sleeping: Boolean) {
bgExecutor.execute { settings.putBool(RESTART_NAP_KEY, sleeping) }
bgExecutor.execute { settings.putBool(RESTART_SLEEP_KEY, sleeping) }
}
}

View File

@@ -21,12 +21,15 @@ import android.test.suitebuilder.annotation.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.settings.FakeSettings
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Test
import org.mockito.ArgumentCaptor
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.ArgumentMatchers.anyString
import org.mockito.Mock
import org.mockito.Mockito.anyLong
import org.mockito.Mockito.never
@@ -58,36 +61,37 @@ class RestartDozeListenerTest : SysuiTestCase() {
}
@Test
fun testStoreDreamState_onDreamingStarted() {
listener.onDreamingChanged(true)
fun testStoreDreamState_onDozingStarted() {
listener.onDozingChanged(true)
executor.runAllReady()
assertThat(settings.getBool(RestartDozeListener.RESTART_NAP_KEY)).isTrue()
assertThat(settings.getBool(RestartDozeListener.RESTART_SLEEP_KEY)).isTrue()
}
@Test
fun testStoreDreamState_onDreamingStopped() {
listener.onDreamingChanged(false)
fun testStoreDozeState_onDozingStopped() {
listener.onDozingChanged(false)
executor.runAllReady()
assertThat(settings.getBool(RestartDozeListener.RESTART_NAP_KEY)).isFalse()
assertThat(settings.getBool(RestartDozeListener.RESTART_SLEEP_KEY)).isFalse()
}
@Test
fun testRestoreDreamState_dreamingShouldStart() {
settings.putBool(RestartDozeListener.RESTART_NAP_KEY, true)
fun testRestoreDozeState_dozingShouldStart() {
settings.putBool(RestartDozeListener.RESTART_SLEEP_KEY, true)
restartDozeListener.maybeRestartSleep()
executor.advanceClockToLast()
executor.runAllReady()
verify(powerManager).wakeUp(clock.uptimeMillis())
verify(powerManager)
.wakeUp(eq(clock.uptimeMillis()), eq(PowerManager.WAKE_REASON_APPLICATION), anyString())
verify(powerManager).goToSleep(clock.uptimeMillis())
}
@Test
fun testRestoreDreamState_dreamingShouldNot() {
settings.putBool(RestartDozeListener.RESTART_NAP_KEY, false)
fun testRestoreDozeState_dozingShouldNotStart() {
settings.putBool(RestartDozeListener.RESTART_SLEEP_KEY, false)
restartDozeListener.maybeRestartSleep()
executor.advanceClockToLast()
executor.runAllReady()
verify(powerManager, never()).wakeUp(anyLong())
verify(powerManager, never()).wakeUp(anyLong(), anyInt(), anyString())
verify(powerManager, never()).goToSleep(anyLong())
}
}