diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java index a2b1013167dee..6576eb7dda9b0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/FingerprintUnlockController.java @@ -399,4 +399,11 @@ public class FingerprintUnlockController extends KeyguardUpdateMonitorCallback { pw.print(" mMode="); pw.println(mMode); pw.print(" mWakeLock="); pw.println(mWakeLock); } + + public boolean isWakeAndUnlock() { + return mMode == MODE_UNLOCK + || mMode == MODE_WAKE_AND_UNLOCK + || mMode == MODE_WAKE_AND_UNLOCK_PULSING + || mMode == MODE_WAKE_AND_UNLOCK_FROM_DREAM; + } } 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 7aabc56c0ff38..4e12936ff47ab 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -347,7 +347,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo if (mExpansionFraction != fraction) { mExpansionFraction = fraction; - if (!(mState == ScrimState.UNLOCKED || mState == ScrimState.KEYGUARD)) { + final boolean keyguardOrUnlocked = mState == ScrimState.UNLOCKED + || mState == ScrimState.KEYGUARD; + if (!keyguardOrUnlocked || !mExpansionAffectsAlpha) { return; } 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 5b734ebf5d1ac..f4b6c38c4f6e0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java @@ -156,7 +156,6 @@ public enum ScrimState { mCurrentBehindTint = Color.BLACK; mBlankScreen = true; } else { - // Scrims should still be black at the end of the transition. mCurrentInFrontTint = Color.TRANSPARENT; mCurrentBehindTint = Color.TRANSPARENT; mBlankScreen = false; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index b8325febfa45a..c03ecb3062261 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -4659,9 +4659,8 @@ public class StatusBar extends SystemUI implements DemoMode, final boolean wakeAndUnlocking = mFingerprintUnlockController.getMode() == FingerprintUnlockController.MODE_WAKE_AND_UNLOCK; - // Do not animate the scrim expansion when it's triggered by the fingerprint sensor. - mScrimController.setExpansionAffectsAlpha(mFingerprintUnlockController.getMode() - != FingerprintUnlockController.MODE_UNLOCK); + // Do not animate the scrim expansion when triggered by the fingerprint sensor. + mScrimController.setExpansionAffectsAlpha(!mFingerprintUnlockController.isWakeAndUnlock()); if (mBouncerShowing) { // Bouncer needs the front scrim when it's on top of an activity, 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 7743c6b443a54..a88f31a4e8454 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 @@ -26,6 +26,7 @@ import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; @@ -73,7 +74,7 @@ public class ScrimControllerTest extends SysuiTestCase { @Before public void setup() { mLightBarController = mock(LightBarController.class); - mScrimBehind = new ScrimView(getContext()); + mScrimBehind = spy(new ScrimView(getContext())); mScrimInFront = new ScrimView(getContext()); mWakeLock = mock(WakeLock.class); mAlarmManager = mock(AlarmManager.class); @@ -210,8 +211,10 @@ public class ScrimControllerTest extends SysuiTestCase { mScrimController.finishAnimationsImmediately(); final float scrimAlpha = mScrimBehind.getViewAlpha(); + reset(mScrimBehind); mScrimController.setExpansionAffectsAlpha(false); mScrimController.setPanelExpansion(0.8f); + verifyZeroInteractions(mScrimBehind); Assert.assertEquals("Scrim opacity shouldn't change when setExpansionAffectsAlpha " + "is false", scrimAlpha, mScrimBehind.getViewAlpha(), 0.01f);