Merge "Adding tests for dual tone shade in ScrimController" into sc-dev

This commit is contained in:
Michał Brzeziński
2021-04-12 12:18:03 +00:00
committed by Android (Google) Code Review
2 changed files with 246 additions and 166 deletions

View File

@@ -497,7 +497,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
return;
}
shiftNotificationsScrim(qsPanelBottomY);
updateNotificationsScrimAlpha(qsPanelBottomY);
updateNotificationsScrimAlpha(expansionFraction, qsPanelBottomY);
if (mQsExpansion != expansionFraction) {
mQsExpansion = expansionFraction;
boolean relevantState = (mState == ScrimState.SHADE_LOCKED
@@ -519,14 +519,14 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
}
}
private void updateNotificationsScrimAlpha(int qsPanelBottomY) {
private void updateNotificationsScrimAlpha(float qsExpansion, int qsPanelBottomY) {
float newAlpha = 0;
if (qsPanelBottomY > 0) {
float interpolator = 0;
if (mState == ScrimState.UNLOCKED || mState == ScrimState.SHADE_LOCKED) {
interpolator = getInterpolatedFraction();
} else {
interpolator = mQsExpansion;
interpolator = qsExpansion;
}
newAlpha = MathUtils.lerp(0, 1, interpolator);
}

View File

@@ -70,6 +70,7 @@ import org.mockito.stubbing.Answer;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
@@ -245,13 +246,14 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.transitionTo(ScrimState.KEYGUARD);
finishAnimationsImmediately();
assertScrimAlpha(TRANSPARENT /* front */,
SEMI_TRANSPARENT /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, SEMI_TRANSPARENT));
assertScrimTint(true /* front */,
true /* behind */,
false /* bubble */);
assertScrimTinted(Map.of(
mScrimInFront, true,
mScrimBehind, true,
mScrimForBubble, false));
}
@Test
@@ -259,13 +261,15 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.transitionTo(ScrimState.SHADE_LOCKED);
finishAnimationsImmediately();
assertScrimAlpha(TRANSPARENT /* front */,
OPAQUE /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, OPAQUE));
assertScrimTint(false /* front */,
true /* behind */,
false /* bubble */);
assertScrimTinted(Map.of(
mScrimInFront, false,
mScrimBehind, true,
mScrimForBubble, false
));
}
@Test
@@ -273,13 +277,15 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.transitionTo(ScrimState.OFF);
finishAnimationsImmediately();
assertScrimAlpha(OPAQUE /* front */,
OPAQUE /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, OPAQUE,
mScrimBehind, OPAQUE));
assertScrimTint(true /* front */,
true /* behind */,
false /* bubble */);
assertScrimTinted(Map.of(
mScrimInFront, true,
mScrimBehind, true,
mScrimForBubble, false
));
}
@Test
@@ -287,13 +293,16 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.transitionTo(ScrimState.AOD);
finishAnimationsImmediately();
assertScrimAlpha(TRANSPARENT /* front */,
OPAQUE /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, OPAQUE,
mNotificationsScrim, TRANSPARENT));
assertScrimTint(true /* front */,
true /* behind */,
false /* bubble */);
assertScrimTinted(Map.of(
mScrimInFront, true,
mScrimBehind, true,
mScrimForBubble, false
));
}
@Test
@@ -302,17 +311,17 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.transitionTo(ScrimState.AOD);
finishAnimationsImmediately();
assertScrimAlpha(TRANSPARENT /* front */,
TRANSPARENT /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, TRANSPARENT));
// Pulsing notification should conserve AOD wallpaper.
mScrimController.transitionTo(ScrimState.PULSING);
finishAnimationsImmediately();
assertScrimAlpha(TRANSPARENT /* front */,
TRANSPARENT /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, TRANSPARENT));
}
@Test
@@ -322,13 +331,15 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.transitionTo(ScrimState.AOD);
finishAnimationsImmediately();
assertScrimAlpha(TRANSPARENT /* front */,
OPAQUE /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, OPAQUE));
assertScrimTint(true /* front */,
true /* behind */,
false /* bubble */);
assertScrimTinted(Map.of(
mScrimInFront, true,
mScrimBehind, true,
mScrimForBubble, false
));
}
@Test
@@ -339,13 +350,15 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.setHasBackdrop(true);
finishAnimationsImmediately();
assertScrimAlpha(TRANSPARENT /* front */,
OPAQUE /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, OPAQUE));
assertScrimTint(true /* front */,
true /* behind */,
false /* bubble */);
assertScrimTinted(Map.of(
mScrimInFront, true,
mScrimBehind, true,
mScrimForBubble, false
));
}
@Test
@@ -355,31 +368,31 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.setAodFrontScrimAlpha(0.5f);
finishAnimationsImmediately();
assertScrimAlpha(TRANSPARENT /* front */,
SEMI_TRANSPARENT /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, SEMI_TRANSPARENT));
// ... but that it does take effect once we enter the AOD state.
mScrimController.transitionTo(ScrimState.AOD);
finishAnimationsImmediately();
assertScrimAlpha(SEMI_TRANSPARENT /* front */,
OPAQUE /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, SEMI_TRANSPARENT,
mScrimBehind, OPAQUE));
// ... and that if we set it while we're in AOD, it does take immediate effect.
mScrimController.setAodFrontScrimAlpha(1f);
assertScrimAlpha(OPAQUE /* front */,
OPAQUE /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, OPAQUE,
mScrimBehind, OPAQUE));
// ... and make sure we recall the previous front scrim alpha even if we transition away
// for a bit.
mScrimController.transitionTo(ScrimState.UNLOCKED);
mScrimController.transitionTo(ScrimState.AOD);
finishAnimationsImmediately();
assertScrimAlpha(OPAQUE /* front */,
OPAQUE /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, OPAQUE,
mScrimBehind, OPAQUE));
// ... and alpha updates should be completely ignored if always_on is off.
// Passing it forward would mess up the wake-up transition.
@@ -402,17 +415,17 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.setAodFrontScrimAlpha(0.5f);
finishAnimationsImmediately();
assertScrimAlpha(TRANSPARENT /* front */,
SEMI_TRANSPARENT /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, SEMI_TRANSPARENT));
// ... and doesn't take effect when disabled always_on
mAlwaysOnEnabled = false;
mScrimController.transitionTo(ScrimState.AOD);
finishAnimationsImmediately();
assertScrimAlpha(OPAQUE /* front */,
OPAQUE /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, OPAQUE,
mScrimBehind, OPAQUE));
// ... but will take effect after docked
when(mDockManager.isDocked()).thenReturn(true);
@@ -420,15 +433,15 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.setAodFrontScrimAlpha(0.5f);
mScrimController.transitionTo(ScrimState.AOD);
assertScrimAlpha(SEMI_TRANSPARENT /* front */,
OPAQUE /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, SEMI_TRANSPARENT,
mScrimBehind, OPAQUE));
// ... and that if we set it while we're in AOD, it does take immediate effect after docked.
mScrimController.setAodFrontScrimAlpha(1f);
assertScrimAlpha(OPAQUE /* front */,
OPAQUE /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, OPAQUE,
mScrimBehind, OPAQUE));
// Reset value since enums are static.
mScrimController.setAodFrontScrimAlpha(0f);
@@ -442,36 +455,38 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.setWallpaperSupportsAmbientMode(false);
mScrimController.transitionTo(ScrimState.AOD);
finishAnimationsImmediately();
assertScrimAlpha(TRANSPARENT /* front */,
OPAQUE /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, OPAQUE));
mScrimController.transitionTo(ScrimState.PULSING);
finishAnimationsImmediately();
// Front scrim should be transparent, but tinted
// Back scrim should be semi-transparent so the user can see the wallpaper
// Pulse callback should have been invoked
assertScrimAlpha(TRANSPARENT /* front */,
OPAQUE /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, OPAQUE));
assertScrimTint(true /* front */,
true /* behind */,
false /* bubble */);
assertScrimTinted(Map.of(
mScrimInFront, true,
mScrimBehind, true,
mScrimForBubble, false
));
// ... and when ambient goes dark, front scrim should be semi-transparent
mScrimController.setAodFrontScrimAlpha(0.5f);
finishAnimationsImmediately();
// Front scrim should be semi-transparent
assertScrimAlpha(SEMI_TRANSPARENT /* front */,
OPAQUE /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, SEMI_TRANSPARENT,
mScrimBehind, OPAQUE));
mScrimController.setWakeLockScreenSensorActive(true);
finishAnimationsImmediately();
assertScrimAlpha(SEMI_TRANSPARENT /* front */,
SEMI_TRANSPARENT /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, SEMI_TRANSPARENT,
mScrimBehind, SEMI_TRANSPARENT));
// Reset value since enums are static.
mScrimController.setAodFrontScrimAlpha(0f);
@@ -483,27 +498,29 @@ public class ScrimControllerTest extends SysuiTestCase {
finishAnimationsImmediately();
// Front scrim should be transparent
// Back scrim should be visible without tint
assertScrimAlpha(TRANSPARENT /* front */,
OPAQUE /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, OPAQUE));
assertScrimTint(false /* front */,
false /* behind */,
false /* bubble */);
assertScrimTinted(Map.of(
mScrimInFront, false,
mScrimBehind, false,
mScrimForBubble, false
));
}
@Test
public void transitionToBouncer() {
mScrimController.transitionTo(ScrimState.BOUNCER_SCRIMMED);
finishAnimationsImmediately();
// Front scrim should be transparent
// Back scrim should be visible without tint
assertScrimAlpha(OPAQUE /* front */,
TRANSPARENT /* back */,
TRANSPARENT /* bubble */);
assertScrimTint(false /* front */,
false /* behind */,
false /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, OPAQUE,
mScrimBehind, TRANSPARENT));
assertScrimTinted(Map.of(
mScrimInFront, false,
mScrimBehind, false,
mScrimForBubble, false
));
}
@Test
@@ -511,19 +528,21 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.setPanelExpansion(0f);
mScrimController.transitionTo(ScrimState.UNLOCKED);
finishAnimationsImmediately();
assertScrimAlpha(TRANSPARENT /* front */,
TRANSPARENT /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, TRANSPARENT));
assertScrimTint(false /* front */,
true /* behind */,
false /* bubble */);
assertScrimTinted(Map.of(
mScrimInFront, false,
mScrimBehind, true,
mScrimForBubble, false
));
// Back scrim should be visible after start dragging
mScrimController.setPanelExpansion(0.5f);
assertScrimAlpha(TRANSPARENT /* front */,
SEMI_TRANSPARENT /* back */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, SEMI_TRANSPARENT));
}
@Test
@@ -531,9 +550,11 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.transitionTo(ScrimState.BUBBLE_EXPANDED);
finishAnimationsImmediately();
assertScrimTint(false /* front */,
false /* behind */,
false /* bubble */);
assertScrimTinted(Map.of(
mScrimInFront, false,
mScrimBehind, false,
mScrimForBubble, false
));
// Front scrim should be transparent
Assert.assertEquals(ScrimController.TRANSPARENT,
@@ -589,7 +610,10 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.setQsPosition(1f, 999 /* value doesn't matter */);
finishAnimationsImmediately();
assertScrimAlpha(TRANSPARENT, OPAQUE, TRANSPARENT);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, OPAQUE,
mNotificationsScrim, OPAQUE));
}
@Test
@@ -623,21 +647,26 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.transitionTo(ScrimState.UNLOCKED);
// Immediately tinted black after the transition starts
assertScrimTint(true /* front */,
true /* behind */,
true /* bubble */);
assertScrimTinted(Map.of(
mScrimInFront, true,
mScrimBehind, true,
mScrimForBubble, true
));
finishAnimationsImmediately();
// All scrims should be transparent at the end of fade transition.
assertScrimAlpha(TRANSPARENT /* front */,
TRANSPARENT /* behind */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, TRANSPARENT,
mScrimForBubble, TRANSPARENT));
// Make sure at the very end of the animation, we're reset to transparent
assertScrimTint(false /* front */,
true /* behind */,
false /* bubble */);
assertScrimTinted(Map.of(
mScrimInFront, false,
mScrimBehind, true,
mScrimForBubble, false
));
}
@Test
@@ -652,9 +681,11 @@ public class ScrimControllerTest extends SysuiTestCase {
// Front scrim should be black in the middle of the transition
Assert.assertTrue("Scrim should be visible during transition. Alpha: "
+ mScrimInFront.getViewAlpha(), mScrimInFront.getViewAlpha() > 0);
assertScrimTint(true /* front */,
true /* behind */,
true /* bubble */);
assertScrimTinted(Map.of(
mScrimInFront, true,
mScrimBehind, true,
mScrimForBubble, true
));
Assert.assertSame("Scrim should be visible during transition.",
mScrimVisibility, OPAQUE);
}
@@ -843,15 +874,15 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.setKeyguardOccluded(true);
mScrimController.transitionTo(ScrimState.AOD);
finishAnimationsImmediately();
assertScrimAlpha(TRANSPARENT /* front */,
OPAQUE /* behind */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, OPAQUE));
mScrimController.transitionTo(ScrimState.PULSING);
finishAnimationsImmediately();
assertScrimAlpha(TRANSPARENT /* front */,
OPAQUE /* behind */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, OPAQUE));
}
@Test
@@ -859,15 +890,15 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController.setWallpaperSupportsAmbientMode(true);
mScrimController.transitionTo(ScrimState.AOD);
finishAnimationsImmediately();
assertScrimAlpha(TRANSPARENT /* front */,
TRANSPARENT /* behind */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, TRANSPARENT));
mScrimController.setKeyguardOccluded(true);
finishAnimationsImmediately();
assertScrimAlpha(TRANSPARENT /* front */,
OPAQUE /* behind */,
TRANSPARENT /* bubble */);
assertScrimAlpha(Map.of(
mScrimInFront, TRANSPARENT,
mScrimBehind, OPAQUE));
}
@Test
@@ -926,21 +957,67 @@ public class ScrimControllerTest extends SysuiTestCase {
}
}
private void assertScrimTint(boolean front, boolean behind, boolean bubble) {
Assert.assertEquals("Tint test failed at state " + mScrimController.getState()
+ " with scrim: " + getScrimName(mScrimInFront) + " and tint: "
+ Integer.toHexString(mScrimInFront.getTint()),
front, mScrimInFront.getTint() != Color.TRANSPARENT);
@Test
public void testScrimsOpaque_whenShadeFullyExpanded() {
mScrimController.transitionTo(ScrimState.UNLOCKED);
mScrimController.setPanelExpansion(1);
// notifications scrim alpha change require calling setQsPosition
mScrimController.setQsPosition(0, 300);
finishAnimationsImmediately();
Assert.assertEquals("Tint test failed at state " + mScrimController.getState()
+ " with scrim: " + getScrimName(mScrimBehind) + " and tint: "
+ Integer.toHexString(mScrimBehind.getTint()),
behind, mScrimBehind.getTint() != Color.TRANSPARENT);
Assert.assertEquals("Behind scrim should be opaque",
mScrimBehind.getViewAlpha(), 1, 0.0);
Assert.assertEquals("Notifications scrim should be opaque",
mNotificationsScrim.getViewAlpha(), 1, 0.0);
}
Assert.assertEquals("Tint test failed at state " + mScrimController.getState()
+ " with scrim: " + getScrimName(mScrimForBubble) + " and tint: "
+ Integer.toHexString(mScrimForBubble.getTint()),
bubble, mScrimForBubble.getTint() != Color.TRANSPARENT);
@Test
public void testScrimsVisible_whenShadeVisible() {
mScrimController.transitionTo(ScrimState.UNLOCKED);
mScrimController.setPanelExpansion(0.5f);
// notifications scrim alpha change require calling setQsPosition
mScrimController.setQsPosition(0, 300);
assertScrimAlpha(Map.of(
mScrimBehind, SEMI_TRANSPARENT,
mNotificationsScrim, SEMI_TRANSPARENT,
mScrimInFront, TRANSPARENT));
}
@Test
public void testScrimsVisible_whenShadeVisibleOnLockscreen() {
mScrimController.transitionTo(ScrimState.KEYGUARD);
mScrimController.setQsPosition(0.5f, 300);
assertScrimAlpha(Map.of(
mScrimBehind, SEMI_TRANSPARENT,
mNotificationsScrim, SEMI_TRANSPARENT,
mScrimInFront, TRANSPARENT));
}
@Test
public void testNotificationScrimTransparent_whenOnLockscreen() {
mScrimController.transitionTo(ScrimState.KEYGUARD);
// even if shade is not pulled down, panel has expansion of 1 on the lockscreen
mScrimController.setPanelExpansion(1);
mScrimController.setQsPosition(0f, /*qs panel bottom*/ 0);
assertScrimAlpha(Map.of(
mScrimBehind, SEMI_TRANSPARENT,
mNotificationsScrim, TRANSPARENT));
}
private void assertScrimTinted(Map<ScrimView, Boolean> scrimToTint) {
// notifications scrim should have always transparent tint
assertScrimTint(mNotificationsScrim, false);
scrimToTint.forEach((scrim, hasTint) -> assertScrimTint(scrim, hasTint));
}
private void assertScrimTint(ScrimView scrim, boolean hasTint) {
String message = "Tint test failed at state " + mScrimController.getState()
+ " with scrim: " + getScrimName(scrim) + " and tint: "
+ Integer.toHexString(scrim.getTint());
Assert.assertEquals(message, hasTint, scrim.getTint() != Color.TRANSPARENT);
}
private String getScrimName(ScrimView scrim) {
@@ -956,29 +1033,25 @@ public class ScrimControllerTest extends SysuiTestCase {
return "unknown_scrim";
}
private void assertScrimAlpha(int front, int behind, int bubble) {
/**
* If {@link #mScrimForBubble} or {@link #mNotificationsScrim} is not passed in the map
* we assume it must be transparent
*/
private void assertScrimAlpha(Map<ScrimView, Integer> scrimToAlpha) {
// Check single scrim visibility.
Assert.assertEquals("Unexpected front scrim alpha: "
+ mScrimInFront.getViewAlpha(),
front != TRANSPARENT /* expected */,
mScrimInFront.getViewAlpha() > TRANSPARENT /* actual */);
Assert.assertEquals("Unexpected back scrim alpha: "
+ mScrimBehind.getViewAlpha(),
behind != TRANSPARENT /* expected */,
mScrimBehind.getViewAlpha() > TRANSPARENT /* actual */);
Assert.assertEquals(
"Unexpected bubble scrim alpha: "
+ mScrimForBubble.getViewAlpha(), /* message */
bubble != TRANSPARENT /* expected */,
mScrimForBubble.getViewAlpha() > TRANSPARENT /* actual */);
if (!scrimToAlpha.containsKey(mScrimForBubble)) {
assertScrimAlpha(mScrimForBubble, TRANSPARENT);
}
if (!scrimToAlpha.containsKey(mNotificationsScrim)) {
assertScrimAlpha(mNotificationsScrim, TRANSPARENT);
}
scrimToAlpha.forEach((scrimView, alpha) -> assertScrimAlpha(scrimView, alpha));
// Check combined scrim visibility.
final int visibility;
if (front == OPAQUE || behind == OPAQUE || bubble == OPAQUE) {
if (scrimToAlpha.values().contains(OPAQUE)) {
visibility = OPAQUE;
} else if (front > TRANSPARENT || behind > TRANSPARENT || bubble > TRANSPARENT) {
} else if (scrimToAlpha.values().contains(SEMI_TRANSPARENT)) {
visibility = SEMI_TRANSPARENT;
} else {
visibility = TRANSPARENT;
@@ -987,4 +1060,11 @@ public class ScrimControllerTest extends SysuiTestCase {
visibility /* expected */,
mScrimVisibility);
}
private void assertScrimAlpha(ScrimView scrim, int expectedAlpha) {
Assert.assertEquals("Unexpected " + getScrimName(scrim) + " scrim alpha: "
+ scrim.getViewAlpha(),
expectedAlpha != TRANSPARENT /* expected */,
scrim.getViewAlpha() > TRANSPARENT /* actual */);
}
}