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

Commit d1cf8ade authored by Michael Mikhail's avatar Michael Mikhail Committed by Android (Google) Code Review
Browse files

Merge "[Media TTT] Displayed View Keeps Screen On" into tm-qpr-dev

parents a6cdf01a 203a6745
Loading
Loading
Loading
Loading
+17 −11
Original line number Diff line number Diff line
@@ -65,8 +65,7 @@ abstract class TemporaryViewDisplayController<T : TemporaryViewInfo, U : Tempora
        height = WindowManager.LayoutParams.WRAP_CONTENT
        type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR
        flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or
            WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
        format = PixelFormat.TRANSLUCENT
        setTrustedOverlay()
    }
@@ -120,20 +119,27 @@ abstract class TemporaryViewDisplayController<T : TemporaryViewInfo, U : Tempora
            // At this point, we're guaranteed to no longer be displaying a view.
            // So, set up all our callbacks and inflate the view.
            configurationController.addCallback(displayScaleListener)
            // Wake the screen if necessary so the user will see the view. (Per b/239426653, we want
            // the view to show over the dream state, so we should only wake up if the screen is
            // completely off.)
            if (!powerManager.isScreenOn) {
                wakeLock = wakeLockBuilder

            wakeLock = if (!powerManager.isScreenOn) {
                // If the screen is off, fully wake it so the user can see the view.
                wakeLockBuilder
                    .setTag(newInfo.windowTitle)
                    .setLevelsAndFlags(
                            PowerManager.FULL_WAKE_LOCK or
                                PowerManager.ACQUIRE_CAUSES_WAKEUP
                    )
                    .build()
            } else {
                // Per b/239426653, we want the view to show over the dream state.
                // If the screen is on, using screen bright level will leave screen on the dream
                // state but ensure the screen will not go off before wake lock is released.
                wakeLockBuilder
                    .setTag(newInfo.windowTitle)
                    .setLevelsAndFlags(PowerManager.SCREEN_BRIGHT_WAKE_LOCK)
                    .build()
            }
            wakeLock?.acquire(newInfo.wakeReason)
            wakeReasonAcquired = newInfo.wakeReason
            }
            logger.logViewAddition(newInfo.windowTitle)
            inflateAndUpdateView(newInfo)
        }
+14 −4
Original line number Diff line number Diff line
@@ -123,23 +123,23 @@ class TemporaryViewDisplayControllerTest : SysuiTestCase() {
    }

    @Test
    fun displayView_screenOff_wakeLockAcquired() {
    fun displayView_wakeLockAcquired() {
        underTest.displayView(getState())

        assertThat(fakeWakeLock.isHeld).isTrue()
    }

    @Test
    fun displayView_screenAlreadyOn_wakeLockNotAcquired() {
    fun displayView_screenAlreadyOn_wakeLockAcquired() {
        whenever(powerManager.isScreenOn).thenReturn(true)

        underTest.displayView(getState())

        assertThat(fakeWakeLock.isHeld).isFalse()
        assertThat(fakeWakeLock.isHeld).isTrue()
    }

    @Test
    fun displayView_screenOff_wakeLockCanBeReleasedAfterTimeOut() {
    fun displayView_wakeLockCanBeReleasedAfterTimeOut() {
        underTest.displayView(getState())
        assertThat(fakeWakeLock.isHeld).isTrue()

@@ -148,6 +148,16 @@ class TemporaryViewDisplayControllerTest : SysuiTestCase() {
        assertThat(fakeWakeLock.isHeld).isFalse()
    }

    @Test
    fun displayView_removeView_wakeLockCanBeReleased() {
        underTest.displayView(getState())
        assertThat(fakeWakeLock.isHeld).isTrue()

        underTest.removeView("test reason")

        assertThat(fakeWakeLock.isHeld).isFalse()
    }

    @Test
    fun displayView_twice_viewNotAddedTwice() {
        underTest.displayView(getState())