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

Commit 63608f23 authored by Matt Pietal's avatar Matt Pietal
Browse files

Update behind scrim if occlusion changes

If the scrim state is AOD or PULSING and the device is in
occluded state, the behind scrim is set to 1 to ensure the
app isn't visible underneath AOD. If the occlusion state
changes, undo that change.

Fixes: 423364430
Test: atest ScrimControllerTest
Flag: EXEMPT bugfix
Change-Id: I4bec38382ff6cb49b4326cc611adffcc6791783e
parent c3cfb29e
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -1312,11 +1312,12 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
        }

        // We also want to hide FLAG_SHOW_WHEN_LOCKED activities under the scrim.
        boolean hideFlagShowWhenLockedActivities =
                (mState == ScrimState.PULSING || mState == ScrimState.AOD)
                && mKeyguardOccluded;
        if (hideFlagShowWhenLockedActivities) {
        if (mState == ScrimState.PULSING || mState == ScrimState.AOD) {
            if (mKeyguardOccluded) {
                mBehindAlpha = 1;
            } else {
                mBehindAlpha = 0;
            }
        }
        // Prevent notification scrim flicker when transitioning away from keyguard.
        if (mKeyguardStateController.isKeyguardGoingAway()) {
+19 −0
Original line number Diff line number Diff line
@@ -1889,6 +1889,25 @@ public class ScrimControllerTest extends SysuiTestCase {
                mNotificationsScrim, TRANSPARENT));
    }

    @Test
    @DisableSceneContainer
    public void testBehindScrimSetToZeroWhenOcclusionChangesToFalse() {
        mScrimController.setKeyguardOccluded(true);
        mScrimController.legacyTransitionTo(ScrimState.AOD);
        finishAnimationsImmediately();
        assertScrimAlpha(Map.of(
                mScrimInFront, TRANSPARENT,
                mScrimBehind, OPAQUE,
                mNotificationsScrim, TRANSPARENT));

        mScrimController.setKeyguardOccluded(false);
        finishAnimationsImmediately();
        assertScrimAlpha(Map.of(
                mScrimInFront, TRANSPARENT,
                mScrimBehind, TRANSPARENT,
                mNotificationsScrim, TRANSPARENT));
    }

    @Test
    @DisableSceneContainer
    public void notificationAlpha_inKeyguardState_bouncerNotActive_clipsQsScrimFalse() {