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

Commit 75554a88 authored by Aaron Liu's avatar Aaron Liu Committed by Automerger Merge Worker
Browse files

Merge "User Switcher: Prevent flickering for user switch." into tm-dev am:...

Merge "User Switcher: Prevent flickering for user switch." into tm-dev am: f1393850 am: 5f446b2d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17260686



Change-Id: I183a4cf1152bc758a8584fccb6ed693d2fdbcfc4
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents b14a6108 5f446b2d
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -1021,15 +1021,24 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
        boolean aodWallpaperTimeout = (mState == ScrimState.AOD || mState == ScrimState.PULSING)
                && mWallpaperVisibilityTimedOut;
        // We also want to hide FLAG_SHOW_WHEN_LOCKED activities under the scrim.
        boolean occludedKeyguard = (mState == ScrimState.PULSING || mState == ScrimState.AOD)
        boolean hideFlagShowWhenLockedActivities =
                (mState == ScrimState.PULSING || mState == ScrimState.AOD)
                && mKeyguardOccluded;
        if (aodWallpaperTimeout || occludedKeyguard) {
        if (aodWallpaperTimeout || hideFlagShowWhenLockedActivities) {
            mBehindAlpha = 1;
        }
        // Prevent notification scrim flicker when transitioning away from keyguard.
        if (mKeyguardStateController.isKeyguardGoingAway()) {
            mNotificationsAlpha = 0;
        }

        // Prevent flickering for activities above keyguard and quick settings in keyguard.
        if (mKeyguardOccluded
                && (mState == ScrimState.KEYGUARD || mState == ScrimState.SHADE_LOCKED)) {
            mBehindAlpha = 0;
            mNotificationsAlpha = 0;
        }

        setScrimAlpha(mScrimInFront, mInFrontAlpha);
        setScrimAlpha(mScrimBehind, mBehindAlpha);
        setScrimAlpha(mNotificationsScrim, mNotificationsAlpha);
+18 −0
Original line number Diff line number Diff line
@@ -1460,6 +1460,24 @@ public class ScrimControllerTest extends SysuiTestCase {
                .isEqualTo(ScrimState.KEYGUARD.getBehindTint());
    }

    @Test
    public void testHidesScrimFlickerInActivity() {
        mScrimController.setKeyguardOccluded(true);
        mScrimController.transitionTo(ScrimState.KEYGUARD);
        finishAnimationsImmediately();
        assertScrimAlpha(Map.of(
                mScrimInFront, TRANSPARENT,
                mScrimBehind, TRANSPARENT,
                mNotificationsScrim, TRANSPARENT));

        mScrimController.transitionTo(ScrimState.SHADE_LOCKED);
        finishAnimationsImmediately();
        assertScrimAlpha(Map.of(
                mScrimInFront, TRANSPARENT,
                mScrimBehind, TRANSPARENT,
                mNotificationsScrim, TRANSPARENT));
    }

    private void assertAlphaAfterExpansion(ScrimView scrim, float expectedAlpha, float expansion) {
        mScrimController.setRawPanelExpansionFraction(expansion);
        finishAnimationsImmediately();