summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Dave Mankoff <mankoff@google.com> 2021-04-09 18:24:06 -0400
committer Dave Mankoff <mankoff@google.com> 2021-04-09 18:24:06 -0400
commitefcf043ff92f68e1441d2597e6f9ae7c63f3d7ab (patch)
tree3c0c3f13428f59f8722503fbfd03ef9b4a96bb47
parent5977b719c43cadd7d0bb22d22881cb961bad1f25 (diff)
Delay gesture processing in FalsingCollector.
Clicks are processed after a delay on views. To handle this, we can't immediately analyze gestures in the FalsingManager. Instead, delay processing slightly to give click handlers an opportunity to acknowledge gestures. Fixes: 184963035 Test: manual Change-Id: I2c98d20c76b8fda1f53a0b4a3ec29674c32aa550
-rw-r--r--packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java9
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java6
2 files changed, 12 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java
index aaea9ce98359..88748f9eaac4 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingCollectorImpl.java
@@ -24,10 +24,12 @@ import android.view.MotionEvent;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.systemui.dagger.SysUISingleton;
+import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.policy.KeyguardStateController;
+import com.android.systemui.util.concurrency.DelayableExecutor;
import com.android.systemui.util.sensors.ProximitySensor;
import com.android.systemui.util.sensors.ThresholdSensor;
import com.android.systemui.util.time.SystemClock;
@@ -50,6 +52,7 @@ class FalsingCollectorImpl implements FalsingCollector {
private final ProximitySensor mProximitySensor;
private final StatusBarStateController mStatusBarStateController;
private final KeyguardStateController mKeyguardStateController;
+ private final DelayableExecutor mMainExecutor;
private final SystemClock mSystemClock;
private int mState;
@@ -89,7 +92,8 @@ class FalsingCollectorImpl implements FalsingCollector {
FalsingCollectorImpl(FalsingDataProvider falsingDataProvider, FalsingManager falsingManager,
KeyguardUpdateMonitor keyguardUpdateMonitor, HistoryTracker historyTracker,
ProximitySensor proximitySensor, StatusBarStateController statusBarStateController,
- KeyguardStateController keyguardStateController, SystemClock systemClock) {
+ KeyguardStateController keyguardStateController,
+ @Main DelayableExecutor mainExecutor, SystemClock systemClock) {
mFalsingDataProvider = falsingDataProvider;
mFalsingManager = falsingManager;
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
@@ -97,6 +101,7 @@ class FalsingCollectorImpl implements FalsingCollector {
mProximitySensor = proximitySensor;
mStatusBarStateController = statusBarStateController;
mKeyguardStateController = keyguardStateController;
+ mMainExecutor = mainExecutor;
mSystemClock = systemClock;
@@ -276,7 +281,7 @@ class FalsingCollectorImpl implements FalsingCollector {
@Override
public void onMotionEventComplete() {
- mFalsingDataProvider.onMotionEventComplete();
+ mMainExecutor.executeDelayed(mFalsingDataProvider::onMotionEventComplete , 50);
}
@Override
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 e6aeee7a9184..f077190168be 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingCollectorImplTest.java
@@ -35,6 +35,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
+import com.android.systemui.util.concurrency.FakeExecutor;
import com.android.systemui.util.sensors.ProximitySensor;
import com.android.systemui.util.sensors.ThresholdSensor;
import com.android.systemui.util.time.FakeSystemClock;
@@ -65,6 +66,8 @@ public class FalsingCollectorImplTest extends SysuiTestCase {
private SysuiStatusBarStateController mStatusBarStateController;
@Mock
private KeyguardStateController mKeyguardStateController;
+ private final FakeSystemClock mFakeSystemClock = new FakeSystemClock();
+ private final FakeExecutor mFakeExecutor = new FakeExecutor(mFakeSystemClock);
@Before
public void setUp() {
@@ -75,7 +78,8 @@ public class FalsingCollectorImplTest extends SysuiTestCase {
mFalsingCollector = new FalsingCollectorImpl(mFalsingDataProvider, mFalsingManager,
mKeyguardUpdateMonitor, mHistoryTracker, mProximitySensor,
- mStatusBarStateController, mKeyguardStateController, new FakeSystemClock());
+ mStatusBarStateController, mKeyguardStateController, mFakeExecutor,
+ mFakeSystemClock);
}
@Test