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

Commit 67f02633 authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Do not darken scrims when unlocking with fp

Scrims would darken because notification panel would collapse.
Introduced a method to ignore the panel expansion.

Test: atest packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
Test: unlock with fp from bouncer and AOD
Test: pull down QS after unlocking, look at scrims
Fixes: 74426737
Change-Id: I94f4a3f3b5ea1eed709c853d945e646cd3f41f78
parent 71120e1b
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -126,6 +126,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
    private float mExpansionFraction = 1f;

    private boolean mDarkenWhileDragging;
    private boolean mExpansionAffectsAlpha = true;
    protected boolean mAnimateChange;
    private boolean mUpdatePending;
    private boolean mTracking;
@@ -381,6 +382,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
    }

    private void applyExpansionToAlpha() {
        if (!mExpansionAffectsAlpha) {
            return;
        }

        if (mState == ScrimState.UNLOCKED) {
            // Darken scrim as you pull down the shade when unlocked
            float behindFraction = getInterpolatedFraction();
@@ -912,6 +917,10 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener,
        mScreenOn = false;
    }

    public void setExpansionAffectsAlpha(boolean expansionAffectsAlpha) {
        mExpansionAffectsAlpha = expansionAffectsAlpha;
    }

    public interface Callback {
        default void onStart() {
        }
+5 −0
Original line number Diff line number Diff line
@@ -3688,6 +3688,7 @@ public class StatusBar extends SystemUI implements DemoMode,
    public void finishKeyguardFadingAway() {
        mKeyguardFadingAway = false;
        mKeyguardMonitor.notifyKeyguardDoneFading();
        mScrimController.setExpansionAffectsAlpha(true);
    }

    // TODO: Move this to NotificationLockscreenUserManager.
@@ -4618,6 +4619,10 @@ 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);

        if (mBouncerShowing) {
            mScrimController.transitionTo(
                    mIsOccluded ? ScrimState.BOUNCER_OCCLUDED : ScrimState.BOUNCER);
+19 −0
Original line number Diff line number Diff line
@@ -205,6 +205,25 @@ public class ScrimControllerTest extends SysuiTestCase {
        assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_SEMI_TRANSPARENT);
    }

    @Test
    public void panelExpansionAffectsAlpha() {
        mScrimController.setPanelExpansion(0f);
        mScrimController.setPanelExpansion(0.5f);
        mScrimController.transitionTo(ScrimState.UNLOCKED);
        mScrimController.finishAnimationsImmediately();

        final float scrimAlpha = mScrimBehind.getViewAlpha();
        mScrimController.setExpansionAffectsAlpha(false);
        mScrimController.setPanelExpansion(0.8f);
        Assert.assertEquals("Scrim opacity shouldn't change when setExpansionAffectsAlpha "
                + "is false", scrimAlpha, mScrimBehind.getViewAlpha(), 0.01f);

        mScrimController.setExpansionAffectsAlpha(true);
        mScrimController.setPanelExpansion(0.1f);
        Assert.assertNotEquals("Scrim opacity should change when setExpansionAffectsAlpha "
                + "is true", scrimAlpha, mScrimBehind.getViewAlpha(), 0.01f);
    }

    @Test
    public void transitionToUnlockedFromAod() {
        // Simulate unlock with fingerprint