Merge "Adding tests for dual tone shade in ScrimController" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
733c9568f8
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 */);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user