if (alpha == 0f) {
scrim.setClickable(false);
} else {
- // Eat touch events (unless dozing).
- scrim.setClickable(!mState.isLowPowerState());
+ // Eat touch events (unless dozing or pulsing).
+ scrim.setClickable(mState != ScrimState.AOD && mState != ScrimState.PULSING);
}
updateScrim(scrim, alpha);
}
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.util.Arrays;
+import java.util.HashSet;
import java.util.function.Consumer;
@RunWith(AndroidTestingRunner.class)
assertScrimVisibility(VISIBILITY_FULLY_TRANSPARENT, VISIBILITY_FULLY_OPAQUE);
}
+ @Test
+ public void testEatsTouchEvent() {
+ HashSet<ScrimState> eatsTouches =
+ new HashSet<>(Arrays.asList(ScrimState.AOD, ScrimState.PULSING));
+ for (ScrimState state : ScrimState.values()) {
+ if (state == ScrimState.UNINITIALIZED) {
+ continue;
+ }
+ mScrimController.transitionTo(state);
+ mScrimController.finishAnimationsImmediately();
+ Assert.assertEquals("Should be clickable unless AOD or PULSING, was: " + state,
+ mScrimBehind.getViewAlpha() != 0 && !eatsTouches.contains(state),
+ mScrimBehind.isClickable());
+ }
+ }
+
/**
* Conserves old notification density after leaving state and coming back.
*