Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c053112f authored by Beverly Tai's avatar Beverly Tai Committed by Automerger Merge Worker
Browse files

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

Merge "Only restart the sleep state if SysUI was dozing" into tm-qpr-dev am: 751a07fb am: 8d91939f am: a46c36f1

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



Change-Id: I633b8aa9ce7c09f4b95dfdbcbc82bfca190c5b81
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 59324df1 a46c36f1
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -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) }
    }
}
+16 −12
Original line number Diff line number Diff line
@@ -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())
    }
}