Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 067136c6 authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Fix scrim animation when unlocking with fp

Notification panel expansion was overriding the animation.
The expansion needs to be ignored during "wake and unlock"
states.

Test: visual
Test: atest packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
Change-Id: I781aece52c845f3fee9149c109ad598c7b555751
Fixes: 76018235
parent 41c25cee
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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;
    }
}
+3 −1
Original line number Diff line number Diff line
@@ -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;
            }

+0 −1
Original line number Diff line number Diff line
@@ -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;
+2 −3
Original line number Diff line number Diff line
@@ -4655,9 +4655,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,
+4 −1
Original line number Diff line number Diff line
@@ -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);