summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2017-12-19 20:08:23 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-12-19 20:08:23 +0000
commita9935f3469c5c9c82ecb76a2b739cadbf5221b0a (patch)
treeec311379d0ba4a2c8e8f0a42b54bd0d514ea22ed
parent107f7cc4c4adfc01402dc5a52dc39976b75abbe2 (diff)
parenteea53b3c0f7ff29adc720155c81da91abe68770f (diff)
Merge "Avoid unecessary IPC during scrim animation"
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java9
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java10
2 files changed, 16 insertions, 3 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 8abc3f4789e8..14329b564800 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -255,8 +255,13 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
mKeyguardFadeoutAnimation.cancel();
}
- // Do not let the device sleep until we're done with all animations
- holdWakeLock();
+ // The device might sleep if it's entering AOD, we need to make sure that
+ // the animation plays properly until the last frame.
+ // It's important to avoid holding the wakelock unless necessary because
+ // WakeLock#aqcuire will trigger an IPC and will cause jank.
+ if (mState == ScrimState.AOD) {
+ holdWakeLock();
+ }
// AOD wallpapers should fade away after a while
if (mWallpaperSupportsAmbientMode && mDozeParameters.getAlwaysOn()
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 9b7efe9949ad..6d2691c899f2 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
@@ -27,6 +27,7 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
import android.animation.Animator;
@@ -275,7 +276,7 @@ public class ScrimControllerTest extends SysuiTestCase {
}
@Test
- public void testHoldsWakeLock() {
+ public void testHoldsWakeLock_whenAOD() {
mScrimController.transitionTo(ScrimState.AOD);
verify(mWakeLock).acquire();
verify(mWakeLock, never()).release();
@@ -284,6 +285,13 @@ public class ScrimControllerTest extends SysuiTestCase {
}
@Test
+ public void testDoesNotHoldWakeLock_whenUnlocking() {
+ mScrimController.transitionTo(ScrimState.UNLOCKED);
+ mScrimController.finishAnimationsImmediately();
+ verifyZeroInteractions(mWakeLock);
+ }
+
+ @Test
public void testCallbackInvokedOnSameStateTransition() {
mScrimController.transitionTo(ScrimState.UNLOCKED);
mScrimController.finishAnimationsImmediately();