summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Lucas Dupin <dupin@google.com> 2018-05-18 17:24:52 -0700
committer Lucas Dupin <dupin@google.com> 2018-05-21 10:14:23 -0700
commit69bda6014fd5a4c70a99906675cfdc394a275376 (patch)
tree0b715a02003eef021c9dd0ee851ac80cc9a76441
parent6f67f7d89a0e783d5555e098309a426ba21cd450 (diff)
Keep scrim black when "always on" is off
The first frame when waking up is expensive and we need a black scrim hiding what was left behind. Bug: 78022321 Test: atest packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java Change-Id: I99e2b7960daf2cbe51bec6aee4b15c74d532078c
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java12
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java10
2 files changed, 20 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 ae93d986ea36..9ba0880b3748 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -450,10 +450,18 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
}
/**
- * Sets the front alpha while in AOD.
+ * Sets the front scrim opacity in AOD so it's not as bright.
+ * <p>
+ * Displays usually don't support multiple dimming settings when in low power mode.
+ * The workaround is to modify the front scrim opacity when in AOD, so it's not as
+ * bright when you're at the movies or lying down on bed.
+ * <p>
+ * This value will be lost during transitions and only updated again after the the
+ * device is dozing when the light sensor is on.
*/
public void setAodFrontScrimAlpha(float alpha) {
- if (mState == ScrimState.AOD && mCurrentInFrontAlpha != alpha) {
+ if (mState == ScrimState.AOD && mDozeParameters.getAlwaysOn()
+ && mCurrentInFrontAlpha != alpha) {
mCurrentInFrontAlpha = alpha;
scheduleUpdate();
}
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 4e047901fb50..a2a866e79af3 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
@@ -184,6 +184,16 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.finishAnimationsImmediately();
assertScrimVisibility(VISIBILITY_FULLY_OPAQUE, VISIBILITY_FULLY_OPAQUE);
+ // ... and alpha updates should be completely ignored if always_on is off.
+ // Passing it forward would mess up the wake-up transition.
+ mAlwaysOnEnabled = false;
+ mScrimController.transitionTo(ScrimState.UNLOCKED);
+ mScrimController.transitionTo(ScrimState.AOD);
+ mScrimController.finishAnimationsImmediately();
+ mScrimController.setAodFrontScrimAlpha(0.3f);
+ Assert.assertEquals(ScrimState.AOD.getFrontAlpha(), mScrimInFront.getViewAlpha(), 0.001f);
+ Assert.assertNotEquals(0.3f, mScrimInFront.getViewAlpha(), 0.001f);
+
// Reset value since enums are static.
mScrimController.setAodFrontScrimAlpha(0f);
}