From a0ef47223c83a344e04c5c57828eeb05ae242592 Mon Sep 17 00:00:00 2001 From: Arthur Hung Date: Thu, 12 Aug 2021 13:19:35 +0000 Subject: [PATCH] Fix flaky test WindowInputTestsi#testTrustedOverlapWindow When disabling batching input, we should post the action to consume batched events to prevent it would be handled before current event. Bug: 189241600 Test: atest WindowInputTests --rerun-until-failure Change-Id: I87aaa2574a27368f88df1aba3f2eb769a8e8f36b --- core/java/android/view/BatchedInputEventReceiver.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/BatchedInputEventReceiver.java b/core/java/android/view/BatchedInputEventReceiver.java index 7023e4bd0134a..af76cb914b421 100644 --- a/core/java/android/view/BatchedInputEventReceiver.java +++ b/core/java/android/view/BatchedInputEventReceiver.java @@ -17,6 +17,7 @@ package android.view; import android.compat.annotation.UnsupportedAppUsage; +import android.os.Handler; import android.os.Looper; /** @@ -27,6 +28,13 @@ public class BatchedInputEventReceiver extends InputEventReceiver { private Choreographer mChoreographer; private boolean mBatchingEnabled; private boolean mBatchedInputScheduled; + private final Handler mHandler; + private final Runnable mConsumeBatchedInputEvents = new Runnable() { + @Override + public void run() { + consumeBatchedInputEvents(-1); + } + }; @UnsupportedAppUsage public BatchedInputEventReceiver( @@ -34,6 +42,7 @@ public class BatchedInputEventReceiver extends InputEventReceiver { super(inputChannel, looper); mChoreographer = choreographer; mBatchingEnabled = true; + mHandler = new Handler(looper); } @Override @@ -60,7 +69,7 @@ public class BatchedInputEventReceiver extends InputEventReceiver { mBatchingEnabled = batchingEnabled; if (!batchingEnabled) { unscheduleBatchedInput(); - consumeBatchedInputEvents(-1); + mHandler.post(mConsumeBatchedInputEvents); } }