From 63d72170dac995d2d22d454fead656daf26c1088 Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Wed, 6 Jun 2018 11:42:55 -0700 Subject: [PATCH] Update scrims when keyguard gets occluded We were assuming that a show_when_locked window would always be on the lock screen when the device sleeps, but its possible that, when charging, a window may come visible after the device enters doze. Ideally this should be handled in window manager but not feasible in P. Change-Id: I8a1b5e638a8e84bbea3a91fc4ac94feb6195390e Fixes: 80647623 Test: manual with app from play store Test: atest packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java --- .../systemui/statusbar/phone/ScrimController.java | 1 + .../statusbar/phone/ScrimControllerTest.java | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java index 9ba0880b37484..279ede914fa72 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -896,6 +896,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo public void setKeyguardOccluded(boolean keyguardOccluded) { mKeyguardOccluded = keyguardOccluded; + updateScrims(); } public interface Callback { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java index 40337b89c18e7..e95702c5ab917 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java @@ -541,6 +541,18 @@ public class ScrimControllerTest extends SysuiTestCase { assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_OPAQUE); } + @Test + public void testHidesShowWhenLockedActivity_whenAlreadyInAod() { + mScrimController.setWallpaperSupportsAmbientMode(true); + mScrimController.transitionTo(ScrimState.AOD); + mScrimController.finishAnimationsImmediately(); + assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_TRANSPARENT); + + mScrimController.setKeyguardOccluded(true); + mScrimController.finishAnimationsImmediately(); + assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_OPAQUE); + } + @Test public void testEatsTouchEvent() { HashSet eatsTouches =