Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +15 −7 Original line number Diff line number Diff line Loading @@ -158,6 +158,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, private final WakeLock mWakeLock; private boolean mWakeLockHeld; private boolean mKeyguardOccluded; public ScrimController(LightBarController lightBarController, ScrimView scrimBehind, ScrimView scrimInFront, View headsUpScrim, Consumer<Integer> scrimVisibleListener, Loading Loading @@ -268,12 +269,13 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, // AOD wallpapers should fade away after a while if (mWallpaperSupportsAmbientMode && mDozeParameters.getAlwaysOn() && (mState == ScrimState.AOD || mState == ScrimState.PULSING)) { && mState == ScrimState.AOD) { if (!mWallpaperVisibilityTimedOut) { mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(), AlarmTimeout.MODE_IGNORE_IF_SCHEDULED); } } else { // Do not re-schedule timeout when pulsing, let's save some extra battery. } else if (mState != ScrimState.PULSING) { mTimeTicker.cancel(); mWallpaperVisibilityTimedOut = false; } Loading Loading @@ -317,7 +319,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, @VisibleForTesting protected void onHideWallpaperTimeout() { if (mState != ScrimState.AOD && mState != ScrimState.PULSING) { if (mState != ScrimState.AOD) { return; } Loading Loading @@ -478,11 +480,13 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, mLightBarController.setScrimColor(mScrimInFront.getColors()); } // We want to override the back scrim opacity for AOD and PULSING // We want to override the back scrim opacity for the AOD state // when it's time to fade the wallpaper away. boolean overrideBackScrimAlpha = (mState == ScrimState.PULSING || mState == ScrimState.AOD) && mWallpaperVisibilityTimedOut; if (overrideBackScrimAlpha) { boolean aodWallpaperTimeout = mState == ScrimState.AOD && mWallpaperVisibilityTimedOut; // We also want to hide FLAG_SHOW_WHEN_LOCKED activities under the scrim. boolean occludedKeyguard = (mState == ScrimState.PULSING || mState == ScrimState.AOD) && mKeyguardOccluded; if (aodWallpaperTimeout || occludedKeyguard) { mCurrentBehindAlpha = 1; } Loading Loading @@ -926,6 +930,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, mExpansionAffectsAlpha = expansionAffectsAlpha; } public void setKeyguardOccluded(boolean keyguardOccluded) { mKeyguardOccluded = keyguardOccluded; } public interface Callback { default void onStart() { } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +1 −0 Original line number Diff line number Diff line Loading @@ -2040,6 +2040,7 @@ public class StatusBar extends SystemUI implements DemoMode, public void setOccluded(boolean occluded) { mIsOccluded = occluded; mScrimController.setKeyguardOccluded(occluded); updateHideIconsForBouncer(false /* animate */); } Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java +13 −0 Original line number Diff line number Diff line Loading @@ -475,6 +475,19 @@ public class ScrimControllerTest extends SysuiTestCase { Assert.assertTrue("Should be focusable on keyguard", mScrimInFront.isFocusable()); } @Test public void testHidesShowWhenLockedActivity() { mScrimController.setWallpaperSupportsAmbientMode(true); mScrimController.setKeyguardOccluded(true); mScrimController.transitionTo(ScrimState.AOD); mScrimController.finishAnimationsImmediately(); assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_OPAQUE); mScrimController.transitionTo(ScrimState.PULSING); mScrimController.finishAnimationsImmediately(); assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_OPAQUE); } /** * Conserves old notification density after leaving state and coming back. * Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java +11 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading Loading @@ -547,6 +548,16 @@ public class StatusBarTest extends SysuiTestCase { verify(mScrimController).transitionTo(eq(ScrimState.UNLOCKED), any()); } @Test public void testSetOccluded_propagatesToScrimController() { mStatusBar.setOccluded(true); verify(mScrimController).setKeyguardOccluded(eq(true)); reset(mScrimController); mStatusBar.setOccluded(false); verify(mScrimController).setKeyguardOccluded(eq(false)); } static class TestableStatusBar extends StatusBar { public TestableStatusBar(StatusBarKeyguardViewManager man, UnlockMethodCache unlock, KeyguardIndicationController key, Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +15 −7 Original line number Diff line number Diff line Loading @@ -158,6 +158,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, private final WakeLock mWakeLock; private boolean mWakeLockHeld; private boolean mKeyguardOccluded; public ScrimController(LightBarController lightBarController, ScrimView scrimBehind, ScrimView scrimInFront, View headsUpScrim, Consumer<Integer> scrimVisibleListener, Loading Loading @@ -268,12 +269,13 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, // AOD wallpapers should fade away after a while if (mWallpaperSupportsAmbientMode && mDozeParameters.getAlwaysOn() && (mState == ScrimState.AOD || mState == ScrimState.PULSING)) { && mState == ScrimState.AOD) { if (!mWallpaperVisibilityTimedOut) { mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(), AlarmTimeout.MODE_IGNORE_IF_SCHEDULED); } } else { // Do not re-schedule timeout when pulsing, let's save some extra battery. } else if (mState != ScrimState.PULSING) { mTimeTicker.cancel(); mWallpaperVisibilityTimedOut = false; } Loading Loading @@ -317,7 +319,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, @VisibleForTesting protected void onHideWallpaperTimeout() { if (mState != ScrimState.AOD && mState != ScrimState.PULSING) { if (mState != ScrimState.AOD) { return; } Loading Loading @@ -478,11 +480,13 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, mLightBarController.setScrimColor(mScrimInFront.getColors()); } // We want to override the back scrim opacity for AOD and PULSING // We want to override the back scrim opacity for the AOD state // when it's time to fade the wallpaper away. boolean overrideBackScrimAlpha = (mState == ScrimState.PULSING || mState == ScrimState.AOD) && mWallpaperVisibilityTimedOut; if (overrideBackScrimAlpha) { boolean aodWallpaperTimeout = mState == ScrimState.AOD && mWallpaperVisibilityTimedOut; // We also want to hide FLAG_SHOW_WHEN_LOCKED activities under the scrim. boolean occludedKeyguard = (mState == ScrimState.PULSING || mState == ScrimState.AOD) && mKeyguardOccluded; if (aodWallpaperTimeout || occludedKeyguard) { mCurrentBehindAlpha = 1; } Loading Loading @@ -926,6 +930,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, mExpansionAffectsAlpha = expansionAffectsAlpha; } public void setKeyguardOccluded(boolean keyguardOccluded) { mKeyguardOccluded = keyguardOccluded; } public interface Callback { default void onStart() { } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +1 −0 Original line number Diff line number Diff line Loading @@ -2040,6 +2040,7 @@ public class StatusBar extends SystemUI implements DemoMode, public void setOccluded(boolean occluded) { mIsOccluded = occluded; mScrimController.setKeyguardOccluded(occluded); updateHideIconsForBouncer(false /* animate */); } Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java +13 −0 Original line number Diff line number Diff line Loading @@ -475,6 +475,19 @@ public class ScrimControllerTest extends SysuiTestCase { Assert.assertTrue("Should be focusable on keyguard", mScrimInFront.isFocusable()); } @Test public void testHidesShowWhenLockedActivity() { mScrimController.setWallpaperSupportsAmbientMode(true); mScrimController.setKeyguardOccluded(true); mScrimController.transitionTo(ScrimState.AOD); mScrimController.finishAnimationsImmediately(); assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_OPAQUE); mScrimController.transitionTo(ScrimState.PULSING); mScrimController.finishAnimationsImmediately(); assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_OPAQUE); } /** * Conserves old notification density after leaving state and coming back. * Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java +11 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading Loading @@ -547,6 +548,16 @@ public class StatusBarTest extends SysuiTestCase { verify(mScrimController).transitionTo(eq(ScrimState.UNLOCKED), any()); } @Test public void testSetOccluded_propagatesToScrimController() { mStatusBar.setOccluded(true); verify(mScrimController).setKeyguardOccluded(eq(true)); reset(mScrimController); mStatusBar.setOccluded(false); verify(mScrimController).setKeyguardOccluded(eq(false)); } static class TestableStatusBar extends StatusBar { public TestableStatusBar(StatusBarKeyguardViewManager man, UnlockMethodCache unlock, KeyguardIndicationController key, Loading