From 9f3785aeb3d8b990db452b1a0c91360b092c7795 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6llner?= Date: Thu, 31 Mar 2022 15:20:34 +0200 Subject: [PATCH] ScrimControllerTest: add more test cases for the alpha interpolation of the scrims Bug: 227146048 Test: ScrimControllerTest Change-Id: Ic23f2ed739453f2134ff9e630ba4f44732da2fcf --- .../statusbar/phone/ScrimControllerTest.java | 101 +++++++++++++++--- 1 file changed, 89 insertions(+), 12 deletions(-) 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 b3f8f9114021e..3fe6cca852717 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) {