Make sure scrims will fade from black

Scrims might be light if the wallpaper is light, but when
turning on the screen, we should always fade from black,
otherwise the display will bright up before dimming down.

Test: pulse with light wallpaper and AOD on/off
Test: press power with AOD on/off
Test: atest ScrimControllerTest
Fixes: 138097741
Change-Id: Icc1ce276c839bce248ab9362a5d8cf4905201e0e
This commit is contained in:
Lucas Dupin
2019-07-24 12:40:34 -07:00
parent 2a26810aba
commit a7eacf93fd
3 changed files with 8 additions and 2 deletions

View File

@@ -491,8 +491,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
* away once the display turns on.
*/
public void prepareForGentleWakeUp() {
if (mState == ScrimState.AOD && mDozeParameters.getAlwaysOn()) {
if (mState == ScrimState.AOD) {
mCurrentInFrontAlpha = 1f;
mCurrentInFrontTint = Color.BLACK;
mCurrentBehindTint = Color.BLACK;
mAnimateChange = false;
updateScrims();
mAnimateChange = true;

View File

@@ -129,7 +129,10 @@ public enum ScrimState {
public void prepare(ScrimState previousState) {
mCurrentInFrontAlpha = 0f;
mCurrentBehindTint = Color.BLACK;
mCurrentInFrontTint = Color.BLACK;
mBlankScreen = mDisplayRequiresBlanking;
mAnimationDuration = mWakeLockScreenSensorActive
? ScrimController.ANIMATION_DURATION_LONG : ScrimController.ANIMATION_DURATION;
}
@Override

View File

@@ -225,11 +225,12 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.transitionTo(ScrimState.PULSING);
mScrimController.finishAnimationsImmediately();
// Front scrim should be transparent
// Front scrim should be transparent, but tinted
// Back scrim should be semi-transparent so the user can see the wallpaper
// Pulse callback should have been invoked
assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_OPAQUE);
assertScrimTint(mScrimBehind, true /* tinted */);
assertScrimTint(mScrimInFront, true /* tinted */);
mScrimController.setWakeLockScreenSensorActive(true);
mScrimController.finishAnimationsImmediately();