@@ -177,6 +177,47 @@ void main() {
177
177
expect (events[4 ], isA <PointerHoverEvent >());
178
178
});
179
179
180
+ test ('Can handle malformed scrolling event.' , () {
181
+ ui.PointerDataPacket packet = const ui.PointerDataPacket (
182
+ data: < ui.PointerData > [
183
+ ui.PointerData (change: ui.PointerChange .add, device: 24 ),
184
+ ],
185
+ );
186
+ List <PointerEvent > events = PointerEventConverter .expand (packet.data, GestureBinding .instance.window.devicePixelRatio).toList ();
187
+
188
+ expect (events.length, 1 );
189
+ expect (events[0 ], isA <PointerAddedEvent >());
190
+
191
+ // Send packet contains malformed scroll events.
192
+ packet = const ui.PointerDataPacket (
193
+ data: < ui.PointerData > [
194
+ ui.PointerData (signalKind: ui.PointerSignalKind .scroll, device: 24 , scrollDeltaX: double .infinity, scrollDeltaY: 10 ),
195
+ ui.PointerData (signalKind: ui.PointerSignalKind .scroll, device: 24 , scrollDeltaX: double .nan, scrollDeltaY: 10 ),
196
+ ui.PointerData (signalKind: ui.PointerSignalKind .scroll, device: 24 , scrollDeltaX: double .negativeInfinity, scrollDeltaY: 10 ),
197
+ ui.PointerData (signalKind: ui.PointerSignalKind .scroll, device: 24 , scrollDeltaY: double .infinity, scrollDeltaX: 10 ),
198
+ ui.PointerData (signalKind: ui.PointerSignalKind .scroll, device: 24 , scrollDeltaY: double .nan, scrollDeltaX: 10 ),
199
+ ui.PointerData (signalKind: ui.PointerSignalKind .scroll, device: 24 , scrollDeltaY: double .negativeInfinity, scrollDeltaX: 10 ),
200
+ ],
201
+ );
202
+ events = PointerEventConverter .expand (packet.data, GestureBinding .instance.window.devicePixelRatio).toList ();
203
+ expect (events.length, 0 );
204
+
205
+ // Send packet with a valid scroll event.
206
+ packet = const ui.PointerDataPacket (
207
+ data: < ui.PointerData > [
208
+ ui.PointerData (signalKind: ui.PointerSignalKind .scroll, device: 24 , scrollDeltaX: 10 , scrollDeltaY: 10 ),
209
+ ],
210
+ );
211
+ // Make sure PointerEventConverter can expand when device pixel ratio is valid.
212
+ events = PointerEventConverter .expand (packet.data, GestureBinding .instance.window.devicePixelRatio).toList ();
213
+ expect (events.length, 1 );
214
+ expect (events[0 ], isA <PointerScrollEvent >());
215
+
216
+ // Make sure PointerEventConverter returns none when device pixel ratio is invalid.
217
+ events = PointerEventConverter .expand (packet.data, 0 ).toList ();
218
+ expect (events.length, 0 );
219
+ });
220
+
180
221
test ('Can expand pointer scroll events' , () {
181
222
const ui.PointerDataPacket packet = ui.PointerDataPacket (
182
223
data: < ui.PointerData > [
0 commit comments