summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jerry Chang <chenghsiuchang@google.com> 2019-06-13 16:58:41 +0800
committer Jerry Chang <chenghsiuchang@google.com> 2019-06-14 18:59:37 +0800
commitbde4c0ccbd2fcd54d984748e6d64e41d35ad84f7 (patch)
treed1b08d94c78340dd0ed3d43cc71b16a00fa4a810
parent2bc56a820af19067646ba82b9b9195ea30f45231 (diff)
Fade away wallpapers when long pulse
Add back timeout wallpaper while docking pulses due to docking pulses may took a long time and should fade away wallpaper to avoid aging. Reset mWallpaperVisibilityTimedOut flag to reset wallpaper timeout every time scrim state changed or panel expanded. Fix: 135134059 Test: atest SystemUITests:ScrimControllerTest Change-Id: I5ea3e52733734cef6c6850fa4af1d8ad2941f967
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java40
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java32
3 files changed, 73 insertions, 7 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java
index d9d74b9d17a6..a2438552e8af 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java
@@ -84,6 +84,14 @@ public class DozeScrimController implements StateListener {
public void onCancelled() {
pulseFinished();
}
+
+ /**
+ * Whether to timeout wallpaper or not.
+ */
+ @Override
+ public boolean shouldTimeoutWallpaper() {
+ return mPulseReason == DozeLog.PULSE_REASON_DOCKING;
+ }
};
public DozeScrimController(DozeParameters dozeParameters) {
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 5dcbea22eea1..3f38c049a977 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -284,15 +284,12 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
// AOD wallpapers should fade away after a while.
// Docking pulses may take a long time, wallpapers should also fade away after a while.
- if (mWallpaperSupportsAmbientMode && mDozeParameters.getAlwaysOn()
- && mState == ScrimState.AOD) {
- if (!mWallpaperVisibilityTimedOut) {
- mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(),
- AlarmTimeout.MODE_IGNORE_IF_SCHEDULED);
- }
+ mWallpaperVisibilityTimedOut = false;
+ if (shouldFadeAwayWallpaper()) {
+ mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(),
+ AlarmTimeout.MODE_IGNORE_IF_SCHEDULED);
} else {
mTimeTicker.cancel();
- mWallpaperVisibilityTimedOut = false;
}
if (mKeyguardUpdateMonitor.needsSlowUnlockTransition() && mState == ScrimState.UNLOCKED) {
@@ -313,6 +310,23 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
dispatchScrimState(mScrimBehind.getViewAlpha());
}
+ private boolean shouldFadeAwayWallpaper() {
+ if (!mWallpaperSupportsAmbientMode) {
+ return false;
+ }
+
+ if (mState == ScrimState.AOD && mDozeParameters.getAlwaysOn()) {
+ return true;
+ }
+
+ if (mState == ScrimState.PULSING
+ && mCallback != null && mCallback.shouldTimeoutWallpaper()) {
+ return true;
+ }
+
+ return false;
+ }
+
public ScrimState getState() {
return mState;
}
@@ -387,6 +401,14 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
setOrAdaptCurrentAnimation(mScrimInFront);
dispatchScrimState(mScrimBehind.getViewAlpha());
+
+ // Reset wallpaper timeout if it's already timeout like expanding panel while PULSING
+ // and docking.
+ if (mWallpaperVisibilityTimedOut) {
+ mWallpaperVisibilityTimedOut = false;
+ mTimeTicker.schedule(mDozeParameters.getWallpaperAodDuration(),
+ AlarmTimeout.MODE_IGNORE_IF_SCHEDULED);
+ }
}
}
@@ -925,6 +947,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
}
default void onCancelled() {
}
+ /** Returns whether to timeout wallpaper or not. */
+ default boolean shouldTimeoutWallpaper() {
+ return false;
+ }
}
/**
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 191c983ad156..d8e90a584058 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
@@ -508,6 +508,38 @@ public class ScrimControllerTest extends SysuiTestCase {
}
@Test
+ public void transitionToPulsing_withTimeoutWallpaperCallback_willHideWallpaper() {
+ mScrimController.setWallpaperSupportsAmbientMode(true);
+
+ mScrimController.transitionTo(ScrimState.PULSING, new ScrimController.Callback() {
+ @Override
+ public boolean shouldTimeoutWallpaper() {
+ return true;
+ }
+ });
+
+ verify(mAlarmManager).setExact(anyInt(), anyLong(), any(), any(), any());
+ }
+
+ @Test
+ public void transitionToPulsing_withDefaultCallback_wontHideWallpaper() {
+ mScrimController.setWallpaperSupportsAmbientMode(true);
+
+ mScrimController.transitionTo(ScrimState.PULSING, new ScrimController.Callback() {});
+
+ verify(mAlarmManager, never()).setExact(anyInt(), anyLong(), any(), any(), any());
+ }
+
+ @Test
+ public void transitionToPulsing_withoutCallback_wontHideWallpaper() {
+ mScrimController.setWallpaperSupportsAmbientMode(true);
+
+ mScrimController.transitionTo(ScrimState.PULSING);
+
+ verify(mAlarmManager, never()).setExact(anyInt(), anyLong(), any(), any(), any());
+ }
+
+ @Test
public void testConservesExpansionOpacityAfterTransition() {
mScrimController.transitionTo(ScrimState.UNLOCKED);
mScrimController.setPanelExpansion(0.5f);