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

Commit 9f3785ae authored by Christian Göllner's avatar Christian Göllner
Browse files

ScrimControllerTest: add more test cases for the alpha interpolation of the scrims

Bug: 227146048
Test: ScrimControllerTest
Change-Id: Ic23f2ed739453f2134ff9e630ba4f44732da2fcf
parent 9519e3c9
Loading
Loading
Loading
Loading
+89 −12
Original line number Original line Diff line number Diff line
@@ -49,9 +49,11 @@ import android.view.View;
import androidx.test.filters.SmallTest;
import androidx.test.filters.SmallTest;


import com.android.internal.colorextraction.ColorExtractor.GradientColors;
import com.android.internal.colorextraction.ColorExtractor.GradientColors;
import com.android.keyguard.BouncerPanelExpansionCalculator;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.DejankUtils;
import com.android.systemui.DejankUtils;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.animation.ShadeInterpolation;
import com.android.systemui.dock.DockManager;
import com.android.systemui.dock.DockManager;
import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
import com.android.systemui.scrim.ScrimView;
import com.android.systemui.scrim.ScrimView;
@@ -1235,39 +1237,114 @@ public class ScrimControllerTest extends SysuiTestCase {
    }
    }


    @Test
    @Test
    public void testNotificationTransparency_followsPanelExpansionInShadeLockedState() {
    public void expansionNotificationAlpha_shadeLocked_bouncerActive_usesBouncerInterpolator() {
        when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true);
        when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true);


        mScrimController.transitionTo(ScrimState.SHADE_LOCKED);
        mScrimController.transitionTo(ScrimState.SHADE_LOCKED);


        assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 0f, /* expansion */ 0.8f);
        float expansion = 0.8f;
        assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 0f, /* expansion */ 0.2f);
        float expectedAlpha =
                BouncerPanelExpansionCalculator.getBackScrimScaledExpansion(expansion);
        assertAlphaAfterExpansion(mNotificationsScrim, expectedAlpha, expansion);

        expansion = 0.2f;
        expectedAlpha = BouncerPanelExpansionCalculator.getBackScrimScaledExpansion(expansion);
        assertAlphaAfterExpansion(mNotificationsScrim, expectedAlpha, expansion);
    }

    @Test
    public void expansionNotificationAlpha_shadeLocked_bouncerNotActive_usesShadeInterpolator() {
        when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(false);

        mScrimController.transitionTo(ScrimState.SHADE_LOCKED);

        float expansion = 0.8f;
        float expectedAlpha = ShadeInterpolation.getNotificationScrimAlpha(expansion);
        assertAlphaAfterExpansion(mNotificationsScrim, expectedAlpha, expansion);

        expansion = 0.2f;
        expectedAlpha = ShadeInterpolation.getNotificationScrimAlpha(expansion);
        assertAlphaAfterExpansion(mNotificationsScrim, expectedAlpha, expansion);
    }
    }


    @Test
    @Test
    public void testNotificationTransparency_unnocclusion() {
    public void notificationAlpha_unnocclusionAnimating_bouncerActive_usesKeyguardNotifAlpha() {
        when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true);
        when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true);


        mScrimController.transitionTo(ScrimState.KEYGUARD);
        mScrimController.transitionTo(ScrimState.KEYGUARD);
        mScrimController.setUnocclusionAnimationRunning(true);
        mScrimController.setUnocclusionAnimationRunning(true);


        assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 0f, /* expansion */ 0f);
        assertAlphaAfterExpansion(
        assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 0f, /* expansion */ 1.0f);
                mNotificationsScrim, ScrimState.KEYGUARD.getNotifAlpha(), /* expansion */ 0f);
        assertAlphaAfterExpansion(
                mNotificationsScrim, ScrimState.KEYGUARD.getNotifAlpha(), /* expansion */ 0.4f);
        assertAlphaAfterExpansion(
                mNotificationsScrim, ScrimState.KEYGUARD.getNotifAlpha(), /* expansion */ 1.0f);

        // Verify normal behavior after
        mScrimController.setUnocclusionAnimationRunning(false);
        float expansion = 0.4f;
        float alpha = 1 - BouncerPanelExpansionCalculator.getBackScrimScaledExpansion(expansion);
        assertAlphaAfterExpansion(mNotificationsScrim, alpha, expansion);
    }

    @Test
    public void notificationAlpha_unnocclusionAnimating_bouncerNotActive_usesKeyguardNotifAlpha() {
        when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(false);

        mScrimController.transitionTo(ScrimState.KEYGUARD);
        mScrimController.setUnocclusionAnimationRunning(true);

        assertAlphaAfterExpansion(
                mNotificationsScrim, ScrimState.KEYGUARD.getNotifAlpha(), /* expansion */ 0f);
        assertAlphaAfterExpansion(
                mNotificationsScrim, ScrimState.KEYGUARD.getNotifAlpha(), /* expansion */ 0.4f);
        assertAlphaAfterExpansion(
                mNotificationsScrim, ScrimState.KEYGUARD.getNotifAlpha(), /* expansion */ 1.0f);


        // Verify normal behavior after
        // Verify normal behavior after
        mScrimController.setUnocclusionAnimationRunning(false);
        mScrimController.setUnocclusionAnimationRunning(false);
        assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 1f, /* expansion */ 0.4f);
        float expansion = 0.4f;
        float alpha = 1 - ShadeInterpolation.getNotificationScrimAlpha(expansion);
        assertAlphaAfterExpansion(mNotificationsScrim, alpha, expansion);
    }
    }


    @Test
    @Test
    public void testNotificationTransparency_inKeyguardState() {
    public void notificationAlpha_inKeyguardState_bouncerActive_usesInvertedBouncerInterpolator() {
        when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true);
        when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true);


        mScrimController.transitionTo(ScrimState.KEYGUARD);
        mScrimController.transitionTo(ScrimState.KEYGUARD);


        assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 1f, /* expansion */ 0.8f);
        float expansion = 0.8f;
        assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 1f, /* expansion */ 0.4f);
        float alpha = 1 - BouncerPanelExpansionCalculator.getBackScrimScaledExpansion(expansion);
        assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 1f, /* expansion */ 0.2f);
        assertAlphaAfterExpansion(mNotificationsScrim, alpha, expansion);

        expansion = 0.4f;
        alpha = 1 - BouncerPanelExpansionCalculator.getBackScrimScaledExpansion(expansion);
        assertAlphaAfterExpansion(mNotificationsScrim, alpha, expansion);

        expansion = 0.2f;
        alpha = 1 - BouncerPanelExpansionCalculator.getBackScrimScaledExpansion(expansion);
        assertAlphaAfterExpansion(mNotificationsScrim, alpha, expansion);
    }

    @Test
    public void notificationAlpha_inKeyguardState_bouncerNotActive_usesInvertedShadeInterpolator() {
        when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(false);

        mScrimController.transitionTo(ScrimState.KEYGUARD);

        float expansion = 0.8f;
        float alpha = 1 - ShadeInterpolation.getNotificationScrimAlpha(expansion);
        assertAlphaAfterExpansion(mNotificationsScrim, alpha, expansion);

        expansion = 0.4f;
        alpha = 1 - ShadeInterpolation.getNotificationScrimAlpha(expansion);
        assertAlphaAfterExpansion(mNotificationsScrim, alpha, expansion);

        expansion = 0.2f;
        alpha = 1 - ShadeInterpolation.getNotificationScrimAlpha(expansion);
        assertAlphaAfterExpansion(mNotificationsScrim, alpha, expansion);
    }
    }


    @Test
    @Test
@@ -1387,7 +1464,7 @@ public class ScrimControllerTest extends SysuiTestCase {
        mScrimController.setRawPanelExpansionFraction(expansion);
        mScrimController.setRawPanelExpansionFraction(expansion);
        finishAnimationsImmediately();
        finishAnimationsImmediately();
        // alpha is not changing linearly thus 0.2 of leeway when asserting
        // alpha is not changing linearly thus 0.2 of leeway when asserting
        assertEquals(expectedAlpha, mNotificationsScrim.getViewAlpha(), 0.2);
        assertEquals(expectedAlpha, scrim.getViewAlpha(), 0.2);
    }
    }


    private void assertScrimTinted(Map<ScrimView, Boolean> scrimToTint) {
    private void assertScrimTinted(Map<ScrimView, Boolean> scrimToTint) {