OSDN Git Service

Allow double tap when pulsing
authorLucas Dupin <dupin@google.com>
Wed, 4 Apr 2018 01:54:39 +0000 (18:54 -0700)
committerLucas Dupin <dupin@google.com>
Wed, 4 Apr 2018 01:58:53 +0000 (01:58 +0000)
Change-Id: Ifd8d5a274981940c6dca21193dc26f9a74e0cfaa
Fixes: 75722320
Test: manual
Test: atest tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java

packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java

index 28f3162..39a1553 100644 (file)
@@ -528,8 +528,8 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
         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);
     }
index a88f31a..1e8e14d 100644 (file)
@@ -53,6 +53,8 @@ import org.junit.Before;
 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)
@@ -437,6 +439,22 @@ public class ScrimControllerTest extends SysuiTestCase {
         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.
      *