@@ -306,7 +306,7 @@ - (void)dealloc {
306306 [events removeAllObjects ];
307307}
308308
309- TEST (FlutterEmbedderKeyResponderUnittests, IgnoreDuplicateDownEvent ) {
309+ TEST (FlutterEmbedderKeyResponderUnittests, SynthesizeForDuplicateDownEvent ) {
310310 __block NSMutableArray <TestKeyEvent*>* events = [[NSMutableArray <TestKeyEvent*> alloc] init ];
311311 __block BOOL last_handled = TRUE ;
312312 FlutterKeyEvent* event;
@@ -319,7 +319,7 @@ - (void)dealloc {
319319 userData: user_data]];
320320 }];
321321
322- last_handled = FALSE ;
322+ last_handled = TRUE ;
323323 [responder handleEvent: keyEvent (NSEventTypeKeyDown, 0x100 , @" a" , @" a" , FALSE , kKeyCodeKeyA )
324324 callback: ^(BOOL handled) {
325325 last_handled = handled;
@@ -332,44 +332,35 @@ - (void)dealloc {
332332 EXPECT_EQ (event->logical , kLogicalKeyA );
333333 EXPECT_STREQ (event->character , " a" );
334334 EXPECT_EQ (event->synthesized , false );
335- EXPECT_EQ (last_handled, FALSE );
336- [[events lastObject ] respond: TRUE ];
337335 EXPECT_EQ (last_handled, TRUE );
336+ [[events lastObject ] respond: FALSE ];
337+ EXPECT_EQ (last_handled, FALSE );
338338
339339 [events removeAllObjects ];
340340
341- last_handled = FALSE ;
342- [responder handleEvent: keyEvent (NSEventTypeKeyDown, 0x100 , @" a " , @" a " , FALSE , kKeyCodeKeyA )
341+ last_handled = TRUE ;
342+ [responder handleEvent: keyEvent (NSEventTypeKeyDown, 0x100 , @" à " , @" à " , FALSE , kKeyCodeKeyA )
343343 callback: ^(BOOL handled) {
344344 last_handled = handled;
345345 }];
346346
347- EXPECT_EQ ([events count ], 1u );
348- EXPECT_EQ (last_handled, TRUE );
349- event = [events lastObject ].data ;
350- EXPECT_EQ (event->physical , 0ull );
351- EXPECT_EQ (event->logical , 0ull );
352- EXPECT_FALSE ([[events lastObject ] hasCallback ]);
353- EXPECT_EQ (last_handled, TRUE );
354-
355- [events removeAllObjects ];
356-
357- last_handled = FALSE ;
358- [responder handleEvent: keyEvent (NSEventTypeKeyUp, 0x100 , @" a" , @" a" , FALSE , kKeyCodeKeyA )
359- callback: ^(BOOL handled) {
360- last_handled = handled;
361- }];
347+ EXPECT_EQ ([events count ], 2u );
362348
363- EXPECT_EQ ([events count ], 1u );
364- event = [events lastObject ].data ;
349+ event = [events firstObject ].data ;
365350 EXPECT_EQ (event->type , kFlutterKeyEventTypeUp );
366351 EXPECT_EQ (event->physical , kPhysicalKeyA );
367352 EXPECT_EQ (event->logical , kLogicalKeyA );
368- EXPECT_STREQ (event->character , nullptr );
353+ EXPECT_STREQ (event->character , NULL );
354+ EXPECT_EQ (event->synthesized , true );
355+
356+ event = [events lastObject ].data ;
357+ EXPECT_EQ (event->type , kFlutterKeyEventTypeDown );
358+ EXPECT_EQ (event->physical , kPhysicalKeyA );
359+ EXPECT_EQ (event->logical , 0xE0ull /* à */ );
360+ EXPECT_STREQ (event->character , " à" );
369361 EXPECT_EQ (event->synthesized , false );
362+ [[events lastObject ] respond: FALSE ];
370363 EXPECT_EQ (last_handled, FALSE );
371- [[events lastObject ] respond: TRUE ];
372- EXPECT_EQ (last_handled, TRUE );
373364
374365 [events removeAllObjects ];
375366}
0 commit comments