diff options
author | 2018-11-13 13:17:34 -0800 | |
---|---|---|
committer | 2018-11-13 13:17:34 -0800 | |
commit | 1d1c867a715cb883cd1acc6692157644f98f730c (patch) | |
tree | 0413328951583f25aa960ec0429051d163ff6769 | |
parent | ee32e0d473a28437d214a577bcf2199059b9d98d (diff) | |
parent | 78c941d063fa60d3a3daa256105149c6a9eaa2d8 (diff) |
Merge "Hide wallpaper when backdrop arrives" into pi-dev
am: 78c941d063
Change-Id: I82f13ea6a3ecde7f91899f23da45479ece97ac7d
3 files changed, 34 insertions, 2 deletions
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 61f0e1cb29c7..31e5305410e8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -892,6 +892,16 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo for (ScrimState state : ScrimState.values()) { state.setHasBackdrop(hasBackdrop); } + + // Backdrop event may arrive after state was already applied, + // in this case, back-scrim needs to be re-evaluated + if (mState == ScrimState.AOD || mState == ScrimState.PULSING) { + float newBehindAlpha = mState.getBehindAlpha(mNotificationDensity); + if (mCurrentBehindAlpha != newBehindAlpha) { + mCurrentBehindAlpha = newBehindAlpha; + updateScrims(); + } + } } public void setLaunchingAffordanceWithPreview(boolean launchingAffordanceWithPreview) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java index 19015fcdacf7..081ebfac5f1b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java @@ -105,7 +105,6 @@ public enum ScrimState { public void prepare(ScrimState previousState) { final boolean alwaysOnEnabled = mDozeParameters.getAlwaysOn(); mBlankScreen = mDisplayRequiresBlanking; - mCurrentBehindAlpha = mWallpaperSupportsAmbientMode && !mHasBackdrop ? 0f : 1f; mCurrentInFrontAlpha = alwaysOnEnabled ? mAodFrontScrimAlpha : 1f; mCurrentInFrontTint = Color.BLACK; mCurrentBehindTint = Color.BLACK; @@ -116,6 +115,11 @@ public enum ScrimState { } @Override + public float getBehindAlpha(float busyness) { + return mWallpaperSupportsAmbientMode && !mHasBackdrop ? 0f : 1f; + } + + @Override public boolean isLowPowerState() { return true; } @@ -129,10 +133,14 @@ public enum ScrimState { public void prepare(ScrimState previousState) { mCurrentInFrontAlpha = 0; mCurrentInFrontTint = Color.BLACK; - mCurrentBehindAlpha = mWallpaperSupportsAmbientMode && !mHasBackdrop ? 0f : 1f; mCurrentBehindTint = Color.BLACK; mBlankScreen = mDisplayRequiresBlanking; } + + @Override + public float getBehindAlpha(float busyness) { + return mWallpaperSupportsAmbientMode && !mHasBackdrop ? 0f : 1f; + } }, /** 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 89d562a2099c..9c558748697a 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 @@ -152,6 +152,20 @@ public class ScrimControllerTest extends SysuiTestCase { } @Test + public void setHasBackdrop_withAodWallpaperAndAlbumArt() { + mScrimController.setWallpaperSupportsAmbientMode(true); + mScrimController.transitionTo(ScrimState.AOD); + mScrimController.finishAnimationsImmediately(); + mScrimController.setHasBackdrop(true); + mScrimController.finishAnimationsImmediately(); + // Front scrim should be transparent + // Back scrim should be visible with tint + assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_OPAQUE); + assertScrimTint(mScrimBehind, true /* tinted */); + assertScrimTint(mScrimInFront, true /* tinted */); + } + + @Test public void transitionToAod_withFrontAlphaUpdates() { // Assert that setting the AOD front scrim alpha doesn't take effect in a non-AOD state. mScrimController.transitionTo(ScrimState.KEYGUARD); |