diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java index b3f8f9114021..3fe6cca85271 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java @@ -49,9 +49,11 @@ import android.view.View; import androidx.test.filters.SmallTest; import com.android.internal.colorextraction.ColorExtractor.GradientColors; +import com.android.keyguard.BouncerPanelExpansionCalculator; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.DejankUtils; import com.android.systemui.SysuiTestCase; +import com.android.systemui.animation.ShadeInterpolation; import com.android.systemui.dock.DockManager; import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.scrim.ScrimView; @@ -1235,39 +1237,114 @@ public class ScrimControllerTest extends SysuiTestCase { } @Test - public void testNotificationTransparency_followsPanelExpansionInShadeLockedState() { + public void expansionNotificationAlpha_shadeLocked_bouncerActive_usesBouncerInterpolator() { when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true); mScrimController.transitionTo(ScrimState.SHADE_LOCKED); - assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 0f, /* expansion */ 0.8f); - assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 0f, /* expansion */ 0.2f); + float expansion = 0.8f; + float expectedAlpha = + BouncerPanelExpansionCalculator.getBackScrimScaledExpansion(expansion); + assertAlphaAfterExpansion(mNotificationsScrim, expectedAlpha, expansion); + + expansion = 0.2f; + expectedAlpha = BouncerPanelExpansionCalculator.getBackScrimScaledExpansion(expansion); + assertAlphaAfterExpansion(mNotificationsScrim, expectedAlpha, expansion); } @Test - public void testNotificationTransparency_unnocclusion() { + 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 + public void notificationAlpha_unnocclusionAnimating_bouncerActive_usesKeyguardNotifAlpha() { when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true); mScrimController.transitionTo(ScrimState.KEYGUARD); mScrimController.setUnocclusionAnimationRunning(true); - assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 0f, /* expansion */ 0f); - assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 0f, /* expansion */ 1.0f); + 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 mScrimController.setUnocclusionAnimationRunning(false); - assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 1f, /* expansion */ 0.4f); + float expansion = 0.4f; + float alpha = 1 - BouncerPanelExpansionCalculator.getBackScrimScaledExpansion(expansion); + assertAlphaAfterExpansion(mNotificationsScrim, alpha, expansion); } @Test - public void testNotificationTransparency_inKeyguardState() { + 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 + mScrimController.setUnocclusionAnimationRunning(false); + float expansion = 0.4f; + float alpha = 1 - ShadeInterpolation.getNotificationScrimAlpha(expansion); + assertAlphaAfterExpansion(mNotificationsScrim, alpha, expansion); + } + + @Test + public void notificationAlpha_inKeyguardState_bouncerActive_usesInvertedBouncerInterpolator() { when(mStatusBarKeyguardViewManager.bouncerIsInTransit()).thenReturn(true); mScrimController.transitionTo(ScrimState.KEYGUARD); - assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 1f, /* expansion */ 0.8f); - assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 1f, /* expansion */ 0.4f); - assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 1f, /* expansion */ 0.2f); + float expansion = 0.8f; + float alpha = 1 - BouncerPanelExpansionCalculator.getBackScrimScaledExpansion(expansion); + 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 @@ -1387,7 +1464,7 @@ public class ScrimControllerTest extends SysuiTestCase { mScrimController.setRawPanelExpansionFraction(expansion); finishAnimationsImmediately(); // 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 scrimToTint) {