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

Commit 97c2777e authored by William Xiao's avatar William Xiao
Browse files

Fix white scrim background being white over hub on dream

Each ScrimState is a separate class instance, so calling prepare in an
attempt to reuse code didn't work as intended.

Also updated tests to properly test the intended behavior instead of
passing trivially. Verified updated openShadeOnHubOverDream test fails
without the corresponding ScrimController change and passes afterwards.

Bug: 323036128
Fixed: 323036128
Test: atest ScrimControllerTest
      also manually verified on device
Flag: ACONFIG com.android.systemui.communal_hub TEAMFOOD
Change-Id: I545dddfd42117310bb5630c2b85a2715469c482b
parent 253a041a
Loading
Loading
Loading
Loading
+8 −1
Original line number Original line Diff line number Diff line
@@ -328,7 +328,14 @@ public enum ScrimState {
    GLANCEABLE_HUB_OVER_DREAM {
    GLANCEABLE_HUB_OVER_DREAM {
        @Override
        @Override
        public void prepare(ScrimState previousState) {
        public void prepare(ScrimState previousState) {
            GLANCEABLE_HUB.prepare(previousState);
            // No scrims should be visible by default in this state.
            mBehindAlpha = 0;
            mNotifAlpha = 0;
            mFrontAlpha = 0;

            mFrontTint = Color.TRANSPARENT;
            mBehindTint = mBackgroundColor;
            mNotifTint = mClipQsScrim ? mBackgroundColor : Color.TRANSPARENT;
        }
        }
    };
    };


+15 −6
Original line number Original line Diff line number Diff line
@@ -747,14 +747,16 @@ public class ScrimControllerTest extends SysuiTestCase {


        // Open the bouncer.
        // Open the bouncer.
        mScrimController.setRawPanelExpansionFraction(0f);
        mScrimController.setRawPanelExpansionFraction(0f);
        when(mStatusBarKeyguardViewManager.isPrimaryBouncerInTransit()).thenReturn(true);
        mScrimController.setBouncerHiddenFraction(KeyguardBouncerConstants.EXPANSION_VISIBLE);
        mScrimController.setBouncerHiddenFraction(KeyguardBouncerConstants.EXPANSION_VISIBLE);
        finishAnimationsImmediately();
        finishAnimationsImmediately();


        // Only behind widget is visible.
        // Only behind scrim is visible.
        assertScrimAlpha(Map.of(
        assertScrimAlpha(Map.of(
                mScrimInFront, TRANSPARENT,
                mScrimInFront, TRANSPARENT,
                mNotificationsScrim, TRANSPARENT,
                mNotificationsScrim, TRANSPARENT,
                mScrimBehind, OPAQUE));
                mScrimBehind, OPAQUE));
        assertScrimTint(mScrimBehind, mSurfaceColor);


        // Bouncer is closed.
        // Bouncer is closed.
        mScrimController.setBouncerHiddenFraction(KeyguardBouncerConstants.EXPANSION_HIDDEN);
        mScrimController.setBouncerHiddenFraction(KeyguardBouncerConstants.EXPANSION_HIDDEN);
@@ -773,8 +775,9 @@ public class ScrimControllerTest extends SysuiTestCase {
        mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB);
        mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB);


        // Open the shade.
        // Open the shade.
        mScrimController.transitionTo(SHADE_LOCKED);
        mScrimController.setQsPosition(1f, 0);
        mScrimController.setQsPosition(1f, 0);
        mScrimController.setRawPanelExpansionFraction(1);
        mScrimController.setTransitionToFullShadeProgress(1, 0);
        finishAnimationsImmediately();
        finishAnimationsImmediately();


        // Shade scrims are visible.
        // Shade scrims are visible.
@@ -782,8 +785,10 @@ public class ScrimControllerTest extends SysuiTestCase {
                mNotificationsScrim, OPAQUE,
                mNotificationsScrim, OPAQUE,
                mScrimInFront, TRANSPARENT,
                mScrimInFront, TRANSPARENT,
                mScrimBehind, OPAQUE));
                mScrimBehind, OPAQUE));
        assertScrimTint(mScrimBehind, Color.BLACK);
        assertScrimTint(mNotificationsScrim, Color.TRANSPARENT);


        mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB);
        mScrimController.setTransitionToFullShadeProgress(0, 0);
        finishAnimationsImmediately();
        finishAnimationsImmediately();


        // All scrims are transparent.
        // All scrims are transparent.
@@ -813,14 +818,16 @@ public class ScrimControllerTest extends SysuiTestCase {


        // Open the bouncer.
        // Open the bouncer.
        mScrimController.setRawPanelExpansionFraction(0f);
        mScrimController.setRawPanelExpansionFraction(0f);
        when(mStatusBarKeyguardViewManager.isPrimaryBouncerInTransit()).thenReturn(true);
        mScrimController.setBouncerHiddenFraction(KeyguardBouncerConstants.EXPANSION_VISIBLE);
        mScrimController.setBouncerHiddenFraction(KeyguardBouncerConstants.EXPANSION_VISIBLE);
        finishAnimationsImmediately();
        finishAnimationsImmediately();


        // Only behind widget is visible.
        // Only behind scrim is visible.
        assertScrimAlpha(Map.of(
        assertScrimAlpha(Map.of(
                mScrimInFront, TRANSPARENT,
                mScrimInFront, TRANSPARENT,
                mNotificationsScrim, TRANSPARENT,
                mNotificationsScrim, TRANSPARENT,
                mScrimBehind, OPAQUE));
                mScrimBehind, OPAQUE));
        assertScrimTint(mScrimBehind, mSurfaceColor);


        // Bouncer is closed.
        // Bouncer is closed.
        mScrimController.setBouncerHiddenFraction(KeyguardBouncerConstants.EXPANSION_HIDDEN);
        mScrimController.setBouncerHiddenFraction(KeyguardBouncerConstants.EXPANSION_HIDDEN);
@@ -839,7 +846,6 @@ public class ScrimControllerTest extends SysuiTestCase {
        mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB_OVER_DREAM);
        mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB_OVER_DREAM);


        // Open the shade.
        // Open the shade.
        mScrimController.transitionTo(SHADE_LOCKED);
        mScrimController.setQsPosition(1f, 0);
        mScrimController.setQsPosition(1f, 0);
        mScrimController.setRawPanelExpansionFraction(1f);
        mScrimController.setRawPanelExpansionFraction(1f);
        finishAnimationsImmediately();
        finishAnimationsImmediately();
@@ -849,8 +855,11 @@ public class ScrimControllerTest extends SysuiTestCase {
                mNotificationsScrim, OPAQUE,
                mNotificationsScrim, OPAQUE,
                mScrimInFront, TRANSPARENT,
                mScrimInFront, TRANSPARENT,
                mScrimBehind, OPAQUE));
                mScrimBehind, OPAQUE));
        assertScrimTint(mScrimBehind, Color.BLACK);
        assertScrimTint(mNotificationsScrim, Color.TRANSPARENT);


        mScrimController.transitionTo(ScrimState.GLANCEABLE_HUB_OVER_DREAM);
        mScrimController.setQsPosition(0f, 0);
        mScrimController.setRawPanelExpansionFraction(0f);
        finishAnimationsImmediately();
        finishAnimationsImmediately();


        // All scrims are transparent.
        // All scrims are transparent.