@@ -218,4 +218,63 @@ public void unexpectedMaskedAction() {
218
218
touchProcessor .onTouchEvent (mocker .mockEvent (MotionEvent .ACTION_BUTTON_PRESS , 0.0f , 0.0f , 0 ));
219
219
verify (mockRenderer , never ()).dispatchPointerDataPacket (ByteBuffer .allocate (0 ), 0 );
220
220
}
221
+
222
+ @ Test
223
+ public void unexpectedPointerChange () {
224
+ // Regression test for https://github.com/flutter/flutter/issues/129765
225
+
226
+ MotionEventMocker mocker =
227
+ new MotionEventMocker (0 , InputDevice .SOURCE_MOUSE , MotionEvent .TOOL_TYPE_MOUSE );
228
+
229
+ touchProcessor .onTouchEvent (mocker .mockEvent (MotionEvent .ACTION_DOWN , 0.0f , 0.0f , 0 ));
230
+ InOrder inOrder = inOrder (mockRenderer );
231
+ inOrder
232
+ .verify (mockRenderer )
233
+ .dispatchPointerDataPacket (packetCaptor .capture (), packetSizeCaptor .capture ());
234
+ ByteBuffer packet = packetCaptor .getValue ();
235
+ assertEquals (AndroidTouchProcessor .PointerChange .PAN_ZOOM_START , readPointerChange (packet ));
236
+ assertEquals (AndroidTouchProcessor .PointerDeviceKind .TRACKPAD , readPointerDeviceKind (packet ));
237
+ assertEquals (AndroidTouchProcessor .PointerSignalKind .NONE , readPointerSignalKind (packet ));
238
+ assertEquals (0.0 , readPointerPhysicalX (packet ));
239
+ assertEquals (0.0 , readPointerPhysicalY (packet ));
240
+
241
+ touchProcessor .onTouchEvent (mocker .mockEvent (MotionEvent .ACTION_MOVE , 10.0f , 5.0f , 0 ));
242
+ inOrder
243
+ .verify (mockRenderer )
244
+ .dispatchPointerDataPacket (packetCaptor .capture (), packetSizeCaptor .capture ());
245
+ packet = packetCaptor .getValue ();
246
+ assertEquals (AndroidTouchProcessor .PointerChange .PAN_ZOOM_UPDATE , readPointerChange (packet ));
247
+ assertEquals (AndroidTouchProcessor .PointerDeviceKind .TRACKPAD , readPointerDeviceKind (packet ));
248
+ assertEquals (AndroidTouchProcessor .PointerSignalKind .NONE , readPointerSignalKind (packet ));
249
+ assertEquals (0.0 , readPointerPhysicalX (packet ));
250
+ assertEquals (0.0 , readPointerPhysicalY (packet ));
251
+ assertEquals (10.0 , readPointerPanX (packet ));
252
+ assertEquals (5.0 , readPointerPanY (packet ));
253
+
254
+ touchProcessor .onGenericMotionEvent (mocker .mockEvent (MotionEvent .ACTION_SCROLL , 0.0f , 0.0f , 0 ));
255
+ inOrder
256
+ .verify (mockRenderer )
257
+ .dispatchPointerDataPacket (packetCaptor .capture (), packetSizeCaptor .capture ());
258
+ packet = packetCaptor .getValue ();
259
+ assertEquals (AndroidTouchProcessor .PointerChange .PAN_ZOOM_UPDATE , readPointerChange (packet ));
260
+ assertEquals (AndroidTouchProcessor .PointerDeviceKind .TRACKPAD , readPointerDeviceKind (packet ));
261
+ assertEquals (AndroidTouchProcessor .PointerSignalKind .SCROLL , readPointerSignalKind (packet ));
262
+ assertEquals (0.0 , readPointerPhysicalX (packet ));
263
+ assertEquals (0.0 , readPointerPhysicalY (packet ));
264
+ assertEquals (0.0 , readPointerPanX (packet ));
265
+ assertEquals (0.0 , readPointerPanY (packet ));
266
+
267
+ touchProcessor .onTouchEvent (mocker .mockEvent (MotionEvent .ACTION_UP , 10.0f , 5.0f , 0 ));
268
+ inOrder
269
+ .verify (mockRenderer )
270
+ .dispatchPointerDataPacket (packetCaptor .capture (), packetSizeCaptor .capture ());
271
+ packet = packetCaptor .getValue ();
272
+ assertEquals (AndroidTouchProcessor .PointerChange .PAN_ZOOM_END , readPointerChange (packet ));
273
+ assertEquals (AndroidTouchProcessor .PointerDeviceKind .TRACKPAD , readPointerDeviceKind (packet ));
274
+ assertEquals (AndroidTouchProcessor .PointerSignalKind .NONE , readPointerSignalKind (packet ));
275
+ assertEquals (0.0 , readPointerPhysicalX (packet ));
276
+ assertEquals (0.0 , readPointerPhysicalY (packet ));
277
+ inOrder .verifyNoMoreInteractions ();
278
+ }
279
+
221
280
}
0 commit comments