Skip to content

Commit 4b50e16

Browse files
moffatmanschwa423
authored andcommitted
Fix unexpected masked action (flutter#37584)
1 parent a83afaa commit 4b50e16

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

shell/platform/android/io/flutter/embedding/android/AndroidTouchProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ private int getPointerChangeForAction(int maskedAction) {
389389
if (maskedAction == MotionEvent.ACTION_SCROLL) {
390390
return PointerChange.HOVER;
391391
}
392-
throw new AssertionError("Unexpected masked action");
392+
return -1;
393393
}
394394

395395
@PointerChange

shell/platform/android/test/io/flutter/embedding/android/AndroidTouchProcessorTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import static junit.framework.TestCase.assertEquals;
44
import static org.mockito.Mockito.inOrder;
55
import static org.mockito.Mockito.mock;
6+
import static org.mockito.Mockito.never;
7+
import static org.mockito.Mockito.verify;
68
import static org.mockito.Mockito.when;
79

810
import android.annotation.TargetApi;
@@ -206,4 +208,14 @@ public void mouse() {
206208
assertEquals(5.0, readPointerPhysicalY(packet));
207209
inOrder.verifyNoMoreInteractions();
208210
}
211+
212+
@Test
213+
public void unexpectedMaskedAction() {
214+
// Regression test for https://github.com/flutter/flutter/issues/111068
215+
MotionEventMocker mocker =
216+
new MotionEventMocker(1, InputDevice.SOURCE_STYLUS, MotionEvent.TOOL_TYPE_STYLUS);
217+
// ACTION_BUTTON_PRESS is not handled by AndroidTouchProcessor, nothing should be dispatched.
218+
touchProcessor.onTouchEvent(mocker.mockEvent(MotionEvent.ACTION_BUTTON_PRESS, 0.0f, 0.0f, 0));
219+
verify(mockRenderer, never()).dispatchPointerDataPacket(ByteBuffer.allocate(0), 0);
220+
}
209221
}

0 commit comments

Comments
 (0)