From c868cce152016be1d8b65655951d849ae944024a Mon Sep 17 00:00:00 2001 From: hangyu <108393416+hangyujin@users.noreply.github.com> Date: Mon, 20 Nov 2023 16:15:25 -0800 Subject: [PATCH 1/5] 1 1 --- .../framework/Source/accessibility_bridge.mm | 1 + .../Source/accessibility_bridge_test.mm | 55 +++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm index 27b33ad4ca3d4..8402779efd854 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm +++ b/shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm @@ -75,6 +75,7 @@ void PostAccessibilityNotification(UIAccessibilityNotifications notification, void AccessibilityBridge::AccessibilityObjectDidBecomeFocused(int32_t id) { last_focused_semantics_object_id_ = id; + [accessibility_channel_.get() sendMessage:@{@"type" : @"didGainFocus", @"nodeId" : @(id)}]; } void AccessibilityBridge::AccessibilityObjectDidLoseFocus(int32_t id) { diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm b/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm index f9861470035c2..363515e1ee989 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm +++ b/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm @@ -1364,6 +1364,61 @@ - (void)testHandleEvent { UIAccessibilityLayoutChangedNotification); } + +- (void)testAccessibilityObjectDidBecomeFocused { + flutter::MockDelegate mock_delegate; + auto thread = std::make_unique("AccessibilityBridgeTest"); + auto thread_task_runner = thread->GetTaskRunner(); + flutter::TaskRunners runners(/*label=*/self.name.UTF8String, + /*platform=*/thread_task_runner, + /*raster=*/thread_task_runner, + /*ui=*/thread_task_runner, + /*io=*/thread_task_runner); + id messenger = OCMProtocolMock(@protocol(FlutterBinaryMessenger)); + id engine = OCMClassMock([FlutterEngine class]); + id flutterViewController = OCMClassMock([FlutterViewController class]); + + OCMStub([flutterViewController engine]).andReturn(engine); + OCMStub([engine binaryMessenger]).andReturn(messenger); + FlutterBinaryMessengerConnection connection = 123; + OCMStub([messenger setMessageHandlerOnChannel:@"flutter/accessibility" + binaryMessageHandler:[OCMArg any]]) + .andReturn(connection); + + auto platform_view = std::make_unique( + /*delegate=*/mock_delegate, + /*rendering_api=*/mock_delegate.settings_.enable_impeller + ? flutter::IOSRenderingAPI::kMetal + : flutter::IOSRenderingAPI::kSoftware, + /*platform_views_controller=*/nil, + /*task_runners=*/runners, + /*worker_task_runner=*/nil, + /*is_gpu_disabled_sync_switch=*/std::make_shared()); + fml::AutoResetWaitableEvent latch; + thread_task_runner->PostTask([&] { + auto weakFactory = + std::make_unique>(flutterViewController); + platform_view->SetOwnerViewController(weakFactory->GetWeakNSObject()); + auto bridge = + std::make_unique(/*view=*/nil, + /*platform_view=*/platform_view.get(), + /*platform_views_controller=*/nil); + XCTAssertTrue(bridge.get()); + OCMVerify([messenger setMessageHandlerOnChannel:@"flutter/accessibility" + binaryMessageHandler:[OCMArg isNotNil]]); + + bridge->AccessibilityObjectDidBecomeFocused(123); + + NSDictionary* annotatedEvent = @{@"type" : @"didGainFocus", @"nodeId" : @123}; + NSData* encodedMessage = [[FlutterJSONMessageCodec sharedInstance] encode:annotatedEvent]; + + OCMVerify([mockMessenger sendOnChannel:@"flutter/accessibility" + message:encodedMessage]); + }); + + [engine stopMocking]; +} + - (void)testAnnouncesRouteChangesWhenNoNamesRoute { flutter::MockDelegate mock_delegate; auto thread_task_runner = CreateNewThread("AccessibilityBridgeTest"); From c32f2345ac64014ec65f32ab34f330894204651f Mon Sep 17 00:00:00 2001 From: hangyu <108393416+hangyujin@users.noreply.github.com> Date: Mon, 20 Nov 2023 16:16:17 -0800 Subject: [PATCH 2/5] Update accessibility_bridge_test.mm --- .../ios/framework/Source/accessibility_bridge_test.mm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm b/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm index 363515e1ee989..dfc9fe439fbd8 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm +++ b/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm @@ -1364,7 +1364,6 @@ - (void)testHandleEvent { UIAccessibilityLayoutChangedNotification); } - - (void)testAccessibilityObjectDidBecomeFocused { flutter::MockDelegate mock_delegate; auto thread = std::make_unique("AccessibilityBridgeTest"); @@ -1406,14 +1405,13 @@ - (void)testAccessibilityObjectDidBecomeFocused { XCTAssertTrue(bridge.get()); OCMVerify([messenger setMessageHandlerOnChannel:@"flutter/accessibility" binaryMessageHandler:[OCMArg isNotNil]]); - + bridge->AccessibilityObjectDidBecomeFocused(123); NSDictionary* annotatedEvent = @{@"type" : @"didGainFocus", @"nodeId" : @123}; NSData* encodedMessage = [[FlutterJSONMessageCodec sharedInstance] encode:annotatedEvent]; - OCMVerify([mockMessenger sendOnChannel:@"flutter/accessibility" - message:encodedMessage]); + OCMVerify([mockMessenger sendOnChannel:@"flutter/accessibility" message:encodedMessage]); }); [engine stopMocking]; From df7876a3235f82140eb2276549f75ea1239a68a5 Mon Sep 17 00:00:00 2001 From: hangyu <108393416+hangyujin@users.noreply.github.com> Date: Mon, 20 Nov 2023 16:29:56 -0800 Subject: [PATCH 3/5] Update accessibility_bridge_test.mm --- .../darwin/ios/framework/Source/accessibility_bridge_test.mm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm b/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm index dfc9fe439fbd8..d2d2b87604bc2 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm +++ b/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm @@ -1412,7 +1412,9 @@ - (void)testAccessibilityObjectDidBecomeFocused { NSData* encodedMessage = [[FlutterJSONMessageCodec sharedInstance] encode:annotatedEvent]; OCMVerify([mockMessenger sendOnChannel:@"flutter/accessibility" message:encodedMessage]); + latch.Signal(); }); + latch.Wait(); [engine stopMocking]; } From 6b3508305be119301c2ea4f620931fe03b298349 Mon Sep 17 00:00:00 2001 From: hangyu <108393416+hangyujin@users.noreply.github.com> Date: Mon, 20 Nov 2023 16:31:06 -0800 Subject: [PATCH 4/5] Update accessibility_bridge_test.mm --- .../darwin/ios/framework/Source/accessibility_bridge_test.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm b/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm index d2d2b87604bc2..7ac2bd61aa56f 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm +++ b/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm @@ -1411,7 +1411,7 @@ - (void)testAccessibilityObjectDidBecomeFocused { NSDictionary* annotatedEvent = @{@"type" : @"didGainFocus", @"nodeId" : @123}; NSData* encodedMessage = [[FlutterJSONMessageCodec sharedInstance] encode:annotatedEvent]; - OCMVerify([mockMessenger sendOnChannel:@"flutter/accessibility" message:encodedMessage]); + OCMVerify([messenger sendOnChannel:@"flutter/accessibility" message:encodedMessage]); latch.Signal(); }); latch.Wait(); From aa042136946d8ff6bbba7c0ec306994159e17660 Mon Sep 17 00:00:00 2001 From: hangyu <108393416+hangyujin@users.noreply.github.com> Date: Tue, 21 Nov 2023 16:29:56 -0800 Subject: [PATCH 5/5] Update accessibility_bridge_test.mm --- .../darwin/ios/framework/Source/accessibility_bridge_test.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm b/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm index 7ac2bd61aa56f..dfffa7b56a07a 100644 --- a/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm +++ b/shell/platform/darwin/ios/framework/Source/accessibility_bridge_test.mm @@ -1409,7 +1409,7 @@ - (void)testAccessibilityObjectDidBecomeFocused { bridge->AccessibilityObjectDidBecomeFocused(123); NSDictionary* annotatedEvent = @{@"type" : @"didGainFocus", @"nodeId" : @123}; - NSData* encodedMessage = [[FlutterJSONMessageCodec sharedInstance] encode:annotatedEvent]; + NSData* encodedMessage = [[FlutterStandardMessageCodec sharedInstance] encode:annotatedEvent]; OCMVerify([messenger sendOnChannel:@"flutter/accessibility" message:encodedMessage]); latch.Signal();