@@ -301,9 +301,16 @@ - (void)testIgnoreDuplicateDownEvent API_AVAILABLE(ios(13.4)) {
301301 last_handled = handled;
302302 }];
303303
304- XCTAssertEqual ([events count ], 0u );
304+ XCTAssertEqual ([events count ], 1u );
305+ event = [events lastObject ].data ;
306+ XCTAssertEqual (event->physical , 0ull );
307+ XCTAssertEqual (event->logical , 0ull );
308+ XCTAssertEqual (event->synthesized , false );
309+ XCTAssertFalse ([[events lastObject ] hasCallback ]);
305310 XCTAssertEqual (last_handled, TRUE );
306311
312+ [events removeAllObjects ];
313+
307314 last_handled = FALSE ;
308315 [responder handlePress: keyUpEvent (kKeyCodeKeyA , kModifierFlagNone , 123 .0f )
309316 callback: ^(BOOL handled) {
@@ -327,6 +334,7 @@ - (void)testIgnoreDuplicateDownEvent API_AVAILABLE(ios(13.4)) {
327334- (void )testIgnoreAbruptUpEvent API_AVAILABLE(ios(13.4 )) {
328335 __block NSMutableArray <TestKeyEvent*>* events = [[NSMutableArray <TestKeyEvent*> alloc] init ];
329336 __block BOOL last_handled = TRUE ;
337+ FlutterKeyEvent* event;
330338
331339 FlutterEmbedderKeyResponder* responder = [[FlutterEmbedderKeyResponder alloc ]
332340 initWithSendEvent: ^(const FlutterKeyEvent& event, _Nullable FlutterKeyEventCallback callback,
@@ -342,8 +350,15 @@ - (void)testIgnoreAbruptUpEvent API_AVAILABLE(ios(13.4)) {
342350 last_handled = handled;
343351 }];
344352
345- XCTAssertEqual ([events count ], 0u );
353+ XCTAssertEqual ([events count ], 1u );
354+ event = [events lastObject ].data ;
355+ XCTAssertEqual (event->physical , 0ull );
356+ XCTAssertEqual (event->logical , 0ull );
357+ XCTAssertEqual (event->synthesized , false );
358+ XCTAssertFalse ([[events lastObject ] hasCallback ]);
346359 XCTAssertEqual (last_handled, TRUE );
360+
361+ [events removeAllObjects ];
347362}
348363
349364// Press R-Shift, A, then release R-Shift then A, on a US keyboard.
@@ -433,6 +448,10 @@ - (void)testToggleModifiersDuringKeyTap API_AVAILABLE(ios(13.4)) {
433448- (void )testSpecialModiferFlags API_AVAILABLE(ios(13.4 )) {
434449 __block NSMutableArray <TestKeyEvent*>* events = [[NSMutableArray <TestKeyEvent*> alloc] init ];
435450 FlutterKeyEvent* event;
451+ __block BOOL last_handled = TRUE ;
452+ id keyEventCallback = ^(BOOL handled) {
453+ last_handled = handled;
454+ };
436455
437456 FlutterEmbedderKeyResponder* responder = [[FlutterEmbedderKeyResponder alloc ]
438457 initWithSendEvent: ^(const FlutterKeyEvent& event, _Nullable FlutterKeyEventCallback callback,
@@ -448,8 +467,7 @@ - (void)testSpecialModiferFlags API_AVAILABLE(ios(13.4)) {
448467 // Numpad 1
449468 // OS provides: char: "1", code: 0x59, modifiers: 0x200000
450469 [responder handlePress: keyDownEvent (kKeyCodeNumpad1 , kModifierFlagNumPadKey , 123.0 , " 1" , " 1" )
451- callback: ^(BOOL handled){
452- }];
470+ callback: keyEventCallback];
453471
454472 XCTAssertEqual ([events count ], 1u );
455473 event = [events lastObject ].data ;
@@ -465,8 +483,7 @@ - (void)testSpecialModiferFlags API_AVAILABLE(ios(13.4)) {
465483 // Fn Key (sends HID undefined)
466484 // OS provides: char: nil, keycode: 0x3, modifiers: 0x0
467485 [responder handlePress: keyDownEvent (kKeyCodeUndefined , kModifierFlagNone , 123.0 )
468- callback: ^(BOOL handled){
469- }];
486+ callback: keyEventCallback];
470487
471488 XCTAssertEqual ([events count ], 1u );
472489 event = [events lastObject ].data ;
@@ -482,8 +499,7 @@ - (void)testSpecialModiferFlags API_AVAILABLE(ios(13.4)) {
482499 // F1 Down
483500 // OS provides: char: UIKeyInputF1, code: 0x3a, modifiers: 0x0
484501 [responder handlePress: keyDownEvent (kKeyCodeF1 , kModifierFlagNone , 123 .0f , " \\ ^P" , " \\ ^P" )
485- callback: ^(BOOL handled){
486- }];
502+ callback: keyEventCallback];
487503
488504 XCTAssertEqual ([events count ], 1u );
489505 event = [events lastObject ].data ;
@@ -499,8 +515,7 @@ - (void)testSpecialModiferFlags API_AVAILABLE(ios(13.4)) {
499515 // KeyA Down
500516 // OS provides: char: "q", code: 0x4, modifiers: 0x0
501517 [responder handlePress: keyDownEvent (kKeyCodeKeyA , kModifierFlagNone , 123 .0f , " a" , " a" )
502- callback: ^(BOOL handled){
503- }];
518+ callback: keyEventCallback];
504519
505520 XCTAssertEqual ([events count ], 1u );
506521 event = [events lastObject ].data ;
@@ -516,8 +531,7 @@ - (void)testSpecialModiferFlags API_AVAILABLE(ios(13.4)) {
516531 // ShiftLeft Down
517532 // OS Provides: char: nil, code: 0xe1, modifiers: 0x20000
518533 [responder handlePress: keyDownEvent (kKeyCodeShiftLeft , kModifierFlagShiftAny , 123 .0f )
519- callback: ^(BOOL handled){
520- }];
534+ callback: keyEventCallback];
521535
522536 XCTAssertEqual ([events count ], 1u );
523537 event = [events lastObject ].data ;
@@ -532,8 +546,7 @@ - (void)testSpecialModiferFlags API_AVAILABLE(ios(13.4)) {
532546 // Numpad 1 Up
533547 // OS provides: char: "1", code: 0x59, modifiers: 0x200000
534548 [responder handlePress: keyUpEvent (kKeyCodeNumpad1 , kModifierFlagNumPadKey , 123 .0f )
535- callback: ^(BOOL handled){
536- }];
549+ callback: keyEventCallback];
537550
538551 XCTAssertEqual ([events count ], 2u );
539552
@@ -559,8 +572,7 @@ - (void)testSpecialModiferFlags API_AVAILABLE(ios(13.4)) {
559572 // F1 Up
560573 // OS provides: char: UIKeyInputF1, code: 0x3a, modifiers: 0x0
561574 [responder handlePress: keyUpEvent (kKeyCodeF1 , kModifierFlagNone , 123 .0f )
562- callback: ^(BOOL handled){
563- }];
575+ callback: keyEventCallback];
564576
565577 XCTAssertEqual ([events count ], 1u );
566578 event = [events lastObject ].data ;
@@ -576,8 +588,7 @@ - (void)testSpecialModiferFlags API_AVAILABLE(ios(13.4)) {
576588 // Fn Key (sends HID undefined)
577589 // OS provides: char: nil, code: 0x3, modifiers: 0x0
578590 [responder handlePress: keyUpEvent (kKeyCodeUndefined , kModifierFlagNone , 123.0 )
579- callback: ^(BOOL handled){
580- }];
591+ callback: keyEventCallback];
581592
582593 XCTAssertEqual ([events count ], 1u );
583594 event = [events lastObject ].data ;
@@ -592,8 +603,7 @@ - (void)testSpecialModiferFlags API_AVAILABLE(ios(13.4)) {
592603 // KeyA Up
593604 // OS provides: char: "a", code: 0x4, modifiers: 0x0
594605 [responder handlePress: keyUpEvent (kKeyCodeKeyA , kModifierFlagNone , 123 .0f )
595- callback: ^(BOOL handled){
596- }];
606+ callback: keyEventCallback];
597607
598608 XCTAssertEqual ([events count ], 1u );
599609 event = [events lastObject ].data ;
@@ -609,10 +619,17 @@ - (void)testSpecialModiferFlags API_AVAILABLE(ios(13.4)) {
609619 // ShiftLeft Up
610620 // OS provides: char: nil, code: 0xe1, modifiers: 0x20000
611621 [responder handlePress: keyUpEvent (kKeyCodeShiftLeft , kModifierFlagShiftAny , 123 .0f )
612- callback: ^(BOOL handled){
613- }];
622+ callback: keyEventCallback];
614623
615- XCTAssertEqual ([events count ], 0u );
624+ XCTAssertEqual ([events count ], 1u );
625+ event = [events lastObject ].data ;
626+ XCTAssertEqual (event->physical , 0ull );
627+ XCTAssertEqual (event->logical , 0ull );
628+ XCTAssertEqual (event->synthesized , false );
629+ XCTAssertFalse ([[events lastObject ] hasCallback ]);
630+ XCTAssertEqual (last_handled, TRUE );
631+
632+ [events removeAllObjects ];
616633}
617634
618635- (void )testIdentifyLeftAndRightModifiers API_AVAILABLE(ios(13.4 )) {
0 commit comments