From 8e1884245009791e6a28fb40b450c85024724b8b Mon Sep 17 00:00:00 2001 From: Dave Mankoff Date: Tue, 18 May 2021 11:25:16 -0400 Subject: [PATCH] Don't ignore gestures on pulsing. When a notifiction hun's/pulses, the screen ist still considered to be dozing. Before this change we were ignoring all gestuers while dozing. With this change, we no longer ignore gestures if #isDozing returns true. Fixes: 187833497 Test: manual && atest SystemUITests Change-Id: Ifec028da330e9f6d4be997313bbbd93fd4d466ea --- .../classifier/FalsingCollectorImpl.java | 4 +++- .../classifier/FalsingCollectorImplTest.java | 20 ++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java index 0f202b085851a..969736910b5e8 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java @@ -257,7 +257,9 @@ class FalsingCollectorImpl implements FalsingCollector { @Override public void onTouchEvent(MotionEvent ev) { - if (!mKeyguardStateController.isShowing() || mStatusBarStateController.isDozing()) { + if (!mKeyguardStateController.isShowing() + || (mStatusBarStateController.isDozing() + && !mStatusBarStateController.isPulsing())) { avoidGesture(); return; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java index bc24445463527..3c41216949c2d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java @@ -21,6 +21,7 @@ import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -185,7 +186,7 @@ public class FalsingCollectorImplTest extends SysuiTestCase { } @Test - public void testAvoidDozing() { + public void testAvoidDozingNotPulsing() { MotionEvent down = MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, 0, 0, 0); MotionEvent up = MotionEvent.obtain(0, 0, MotionEvent.ACTION_UP, 0, 0, 0); @@ -199,4 +200,21 @@ public class FalsingCollectorImplTest extends SysuiTestCase { mFalsingCollector.onTouchEvent(up); verify(mFalsingDataProvider, never()).onMotionEvent(any(MotionEvent.class)); } + + @Test + public void testAvoidDozingButPulsing() { + MotionEvent down = MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, 0, 0, 0); + MotionEvent up = MotionEvent.obtain(0, 0, MotionEvent.ACTION_UP, 0, 0, 0); + + when(mStatusBarStateController.isDozing()).thenReturn(true); + when(mStatusBarStateController.isPulsing()).thenReturn(true); + + // Nothing passed initially + mFalsingCollector.onTouchEvent(down); + verify(mFalsingDataProvider, never()).onMotionEvent(any(MotionEvent.class)); + + // Up event would flushes + mFalsingCollector.onTouchEvent(up); + verify(mFalsingDataProvider, times(2)).onMotionEvent(any(MotionEvent.class)); + } }