Loading packages/SystemUI/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayController.kt +17 −11 Original line number Diff line number Diff line Loading @@ -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() } Loading Loading @@ -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) } Loading packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayControllerTest.kt +14 −4 Original line number Diff line number Diff line Loading @@ -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() Loading @@ -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()) Loading Loading
packages/SystemUI/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayController.kt +17 −11 Original line number Diff line number Diff line Loading @@ -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() } Loading Loading @@ -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) } Loading
packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayControllerTest.kt +14 −4 Original line number Diff line number Diff line Loading @@ -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() Loading @@ -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()) Loading