diff --git a/shell/platform/windows/accessibility_bridge_windows_unittests.cc b/shell/platform/windows/accessibility_bridge_windows_unittests.cc index a07f52d5c4f25..944036b4cd233 100644 --- a/shell/platform/windows/accessibility_bridge_windows_unittests.cc +++ b/shell/platform/windows/accessibility_bridge_windows_unittests.cc @@ -178,9 +178,9 @@ ui::AXNode* AXNodeFromID(std::shared_ptr bridge, } std::shared_ptr GetAccessibilityBridgeSpy( - FlutterWindowsEngine* engine) { + FlutterWindowsView& view) { return std::static_pointer_cast( - engine->accessibility_bridge().lock()); + view.accessibility_bridge().lock()); } void ExpectWinEventFromAXEvent(int32_t node_id, @@ -192,7 +192,7 @@ void ExpectWinEventFromAXEvent(int32_t node_id, view.SetEngine(GetTestEngine()); view.OnUpdateSemanticsEnabled(true); - auto bridge = GetAccessibilityBridgeSpy(view.GetEngine()); + auto bridge = GetAccessibilityBridgeSpy(view); PopulateAXTree(bridge); bridge->ResetRecords(); @@ -212,7 +212,7 @@ void ExpectWinEventFromAXEventOnFocusNode(int32_t node_id, view.SetEngine(GetTestEngine()); view.OnUpdateSemanticsEnabled(true); - auto bridge = GetAccessibilityBridgeSpy(view.GetEngine()); + auto bridge = GetAccessibilityBridgeSpy(view); PopulateAXTree(bridge); bridge->ResetRecords(); @@ -237,7 +237,7 @@ TEST(AccessibilityBridgeWindows, GetParent) { view.SetEngine(GetTestEngine()); view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); PopulateAXTree(bridge); auto node0_delegate = bridge->GetFlutterPlatformNodeDelegateFromID(0).lock(); @@ -253,7 +253,7 @@ TEST(AccessibilityBridgeWindows, GetParentOnRootRetunsNullptr) { view.SetEngine(GetTestEngine()); view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); PopulateAXTree(bridge); auto node0_delegate = bridge->GetFlutterPlatformNodeDelegateFromID(0).lock(); @@ -267,7 +267,7 @@ TEST(AccessibilityBridgeWindows, DispatchAccessibilityAction) { view.SetEngine(GetTestEngine()); view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); PopulateAXTree(bridge); FlutterSemanticsAction actual_action = kFlutterSemanticsActionTap; @@ -303,7 +303,7 @@ TEST(AccessibilityBridgeWindows, OnAccessibilityEventFocusChanged) { view.SetEngine(GetTestEngine()); view.OnUpdateSemanticsEnabled(true); - auto bridge = GetAccessibilityBridgeSpy(view.GetEngine()); + auto bridge = GetAccessibilityBridgeSpy(view); PopulateAXTree(bridge); bridge->ResetRecords(); diff --git a/shell/platform/windows/flutter_windows_engine.cc b/shell/platform/windows/flutter_windows_engine.cc index 844790db56c17..68cccd27ab19f 100644 --- a/shell/platform/windows/flutter_windows_engine.cc +++ b/shell/platform/windows/flutter_windows_engine.cc @@ -345,7 +345,12 @@ bool FlutterWindowsEngine::Run(std::string_view entrypoint) { args.update_semantics_callback2 = [](const FlutterSemanticsUpdate2* update, void* user_data) { auto host = static_cast(user_data); - auto accessibility_bridge = host->accessibility_bridge().lock(); + auto view = host->view(); + if (!view) { + return; + } + + auto accessibility_bridge = view->accessibility_bridge().lock(); if (!accessibility_bridge) { return; } @@ -704,15 +709,6 @@ void FlutterWindowsEngine::OnPreEngineRestart() { } } -gfx::NativeViewAccessible FlutterWindowsEngine::GetNativeViewAccessible() { - auto bridge = accessibility_bridge().lock(); - if (!bridge) { - return nullptr; - } - - return bridge->GetChildOfAXFragmentRoot(); -} - std::string FlutterWindowsEngine::GetExecutableName() const { std::pair result = fml::paths::GetExecutablePath(); if (result.first) { @@ -792,11 +788,6 @@ void FlutterWindowsEngine::OnQuit(std::optional hwnd, lifecycle_manager_->Quit(hwnd, wparam, lparam, exit_code); } -std::weak_ptr -FlutterWindowsEngine::accessibility_bridge() { - return view_->accessibility_bridge(); -} - void FlutterWindowsEngine::OnDwmCompositionChanged() { view_->OnDwmCompositionChanged(); } diff --git a/shell/platform/windows/flutter_windows_engine.h b/shell/platform/windows/flutter_windows_engine.h index 29a904d3506b4..3e5a7343287b6 100644 --- a/shell/platform/windows/flutter_windows_engine.h +++ b/shell/platform/windows/flutter_windows_engine.h @@ -141,9 +141,6 @@ class FlutterWindowsEngine { // rendering using software instead of OpenGL. AngleSurfaceManager* surface_manager() { return surface_manager_.get(); } - // Return the AccessibilityBridgeWindows for this engine's view. - std::weak_ptr accessibility_bridge(); - WindowProcDelegateManager* window_proc_delegate_manager() { return window_proc_delegate_manager_.get(); } @@ -227,10 +224,6 @@ class FlutterWindowsEngine { // Returns true if the high contrast feature is enabled. bool high_contrast_enabled() const { return high_contrast_enabled_; } - // Returns the native accessibility root node, or nullptr if one does not - // exist. - gfx::NativeViewAccessible GetNativeViewAccessible(); - // Register a root isolate create callback. // // The root isolate create callback is invoked at creation of the root Dart diff --git a/shell/platform/windows/flutter_windows_view.cc b/shell/platform/windows/flutter_windows_view.cc index 4107546669a1e..131cd2a52a82c 100644 --- a/shell/platform/windows/flutter_windows_view.cc +++ b/shell/platform/windows/flutter_windows_view.cc @@ -253,7 +253,11 @@ void FlutterWindowsView::OnUpdateSemanticsEnabled(bool enabled) { } gfx::NativeViewAccessible FlutterWindowsView::GetNativeViewAccessible() { - return engine_->GetNativeViewAccessible(); + if (!accessibility_bridge_) { + return nullptr; + } + + return accessibility_bridge_->GetChildOfAXFragmentRoot(); } void FlutterWindowsView::OnCursorRectUpdated(const Rect& rect) { @@ -639,7 +643,7 @@ void FlutterWindowsView::NotifyWinEventWrapper(ui::AXPlatformNodeWin* node, } ui::AXFragmentRootDelegateWin* FlutterWindowsView::GetAxFragmentRootDelegate() { - return engine_->accessibility_bridge().lock().get(); + return accessibility_bridge_.get(); } ui::AXPlatformNodeWin* FlutterWindowsView::AlertNode() const { diff --git a/shell/platform/windows/flutter_windows_view_unittests.cc b/shell/platform/windows/flutter_windows_view_unittests.cc index 2d5dfd71409d1..099ad22a67959 100644 --- a/shell/platform/windows/flutter_windows_view_unittests.cc +++ b/shell/platform/windows/flutter_windows_view_unittests.cc @@ -212,7 +212,7 @@ TEST(FlutterWindowsViewTest, AddSemanticsNodeUpdate) { // Enable semantics to instantiate accessibility bridge. view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); ASSERT_TRUE(bridge); // Add root node. @@ -311,7 +311,7 @@ TEST(FlutterWindowsViewTest, AddSemanticsNodeUpdateWithChildren) { // Enable semantics to instantiate accessibility bridge. view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); ASSERT_TRUE(bridge); // Add root node. @@ -509,7 +509,7 @@ TEST(FlutterWindowsViewTest, NonZeroSemanticsRoot) { // Enable semantics to instantiate accessibility bridge. view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); ASSERT_TRUE(bridge); // Add root node. @@ -641,7 +641,7 @@ TEST(FlutterWindowsViewTest, AccessibilityHitTesting) { // Enable semantics to instantiate accessibility bridge. view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); ASSERT_TRUE(bridge); // Add root node at origin. Size 500x500. @@ -802,7 +802,7 @@ TEST(FlutterWindowsViewTest, CheckboxNativeState) { // Enable semantics to instantiate accessibility bridge. view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); ASSERT_TRUE(bridge); FlutterSemanticsNode2 root{sizeof(FlutterSemanticsNode2), 0}; @@ -948,7 +948,7 @@ TEST(FlutterWindowsViewTest, SwitchNativeState) { // Enable semantics to instantiate accessibility bridge. view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); ASSERT_TRUE(bridge); FlutterSemanticsNode2 root{sizeof(FlutterSemanticsNode2), 0}; @@ -1065,7 +1065,7 @@ TEST(FlutterWindowsViewTest, TooltipNodeData) { // Enable semantics to instantiate accessibility bridge. view.OnUpdateSemanticsEnabled(true); - auto bridge = view.GetEngine()->accessibility_bridge().lock(); + auto bridge = view.accessibility_bridge().lock(); ASSERT_TRUE(bridge); FlutterSemanticsNode2 root{sizeof(FlutterSemanticsNode2), 0};