Flutter Windows Embedder
flutter::FlutterPlatformNodeDelegateWindows Class Reference

#include <flutter_platform_node_delegate_windows.h>

Inheritance diagram for flutter::FlutterPlatformNodeDelegateWindows:
flutter::FlutterPlatformNodeDelegate

Public Member Functions

 FlutterPlatformNodeDelegateWindows (std::weak_ptr< AccessibilityBridge > bridge, FlutterWindowsView *view)
 
virtual ~FlutterPlatformNodeDelegateWindows ()
 
void Init (std::weak_ptr< OwnerBridge > bridge, ui::AXNode *node) override
 Called only once, immediately after construction. The constructor doesn't take any arguments because in the Windows subclass we use a special function to construct a COM object. Subclasses must call super. More...
 
gfx::NativeViewAccessible GetNativeViewAccessible () override
 
gfx::NativeViewAccessible HitTestSync (int screen_physical_pixel_x, int screen_physical_pixel_y) const override
 
gfx::Rect GetBoundsRect (const ui::AXCoordinateSystem coordinate_system, const ui::AXClippingBehavior clipping_behavior, ui::AXOffscreenResult *offscreen_result) const override
 
virtual void DispatchWinAccessibilityEvent (ax::mojom::Event event_type)
 
void SetFocus ()
 
gfx::AcceleratedWidget GetTargetForNativeAccessibilityEvent () override
 
ui::AXPlatformNode * GetPlatformNode () const override
 
- Public Member Functions inherited from flutter::FlutterPlatformNodeDelegate
 FlutterPlatformNodeDelegate ()
 
virtual ~FlutterPlatformNodeDelegate () override
 
const ui::AXUniqueId & GetUniqueId () const override
 
const ui::AXNodeData & GetData () const override
 
bool AccessibilityPerformAction (const ui::AXActionData &data) override
 
gfx::NativeViewAccessible GetParent () override
 
gfx::NativeViewAccessible GetFocus () override
 
int GetChildCount () const override
 
gfx::NativeViewAccessible ChildAtIndex (int index) override
 
gfx::Rect GetBoundsRect (const ui::AXCoordinateSystem coordinate_system, const ui::AXClippingBehavior clipping_behavior, ui::AXOffscreenResult *offscreen_result) const override
 
gfx::NativeViewAccessible GetLowestPlatformAncestor () const override
 
ui::AXNodePosition::AXPositionInstance CreateTextPositionAt (int offset) const override
 
virtual void NodeDataChanged (const ui::AXNodeData &old_node_data, const ui::AXNodeData &new_node_data)
 
ui::AXNode * GetAXNode () const
 Gets the underlying ax node for this platform node delegate. More...
 
std::weak_ptr< OwnerBridgeGetOwnerBridge () const
 Gets the owner of this platform node delegate. This is useful when you want to get the information about surrounding nodes of this platform node delegate, e.g. the global rect of this platform node delegate. This pointer is only safe in the platform thread. More...
 
virtual ui::AXPlatformNode * GetFromNodeID (int32_t id) override
 
virtual ui::AXPlatformNode * GetFromTreeIDAndNodeID (const ui::AXTreeID &tree_id, int32_t node_id) override
 
virtual const ui::AXTree::Selection GetUnignoredSelection () const override
 

Detailed Description

Definition at line 20 of file flutter_platform_node_delegate_windows.h.

Constructor & Destructor Documentation

◆ FlutterPlatformNodeDelegateWindows()

flutter::FlutterPlatformNodeDelegateWindows::FlutterPlatformNodeDelegateWindows ( std::weak_ptr< AccessibilityBridge bridge,
FlutterWindowsView view 
)

Definition at line 18 of file flutter_platform_node_delegate_windows.cc.

21  : bridge_(bridge), view_(view) {
22  FML_DCHECK(!bridge_.expired())
23  << "Expired AccessibilityBridge passed to node delegate";
24  FML_DCHECK(view_);
25 }

◆ ~FlutterPlatformNodeDelegateWindows()

flutter::FlutterPlatformNodeDelegateWindows::~FlutterPlatformNodeDelegateWindows ( )
virtual

Definition at line 27 of file flutter_platform_node_delegate_windows.cc.

27  {
28  if (ax_platform_node_) {
29  ax_platform_node_->Destroy();
30  }
31 }

Member Function Documentation

◆ DispatchWinAccessibilityEvent()

void flutter::FlutterPlatformNodeDelegateWindows::DispatchWinAccessibilityEvent ( ax::mojom::Event  event_type)
virtual

Definition at line 96 of file flutter_platform_node_delegate_windows.cc.

97  {
98  ax_platform_node_->NotifyAccessibilityEvent(event_type);
99 }

References event_type.

◆ GetBoundsRect()

gfx::Rect flutter::FlutterPlatformNodeDelegateWindows::GetBoundsRect ( const ui::AXCoordinateSystem  coordinate_system,
const ui::AXClippingBehavior  clipping_behavior,
ui::AXOffscreenResult *  offscreen_result 
) const
override

Definition at line 82 of file flutter_platform_node_delegate_windows.cc.

85  {
87  coordinate_system, clipping_behavior, offscreen_result);
88  POINT origin{bounds.x(), bounds.y()};
89  POINT extent{bounds.x() + bounds.width(), bounds.y() + bounds.height()};
90  ClientToScreen(view_->GetWindowHandle(), &origin);
91  ClientToScreen(view_->GetWindowHandle(), &extent);
92  return gfx::Rect(origin.x, origin.y, extent.x - origin.x,
93  extent.y - origin.y);
94 }

References flutter::FlutterPlatformNodeDelegate::GetBoundsRect(), and flutter::FlutterWindowsView::GetWindowHandle().

Referenced by HitTestSync().

◆ GetNativeViewAccessible()

gfx::NativeViewAccessible flutter::FlutterPlatformNodeDelegateWindows::GetNativeViewAccessible ( )
override

Definition at line 43 of file flutter_platform_node_delegate_windows.cc.

43  {
44  FML_DCHECK(ax_platform_node_) << "AXPlatformNode hasn't been created";
45  return ax_platform_node_->GetNativeViewAccessible();
46 }

Referenced by SetFocus().

◆ GetPlatformNode()

ui::AXPlatformNode * flutter::FlutterPlatformNodeDelegateWindows::GetPlatformNode ( ) const
overridevirtual

Reimplemented from flutter::FlutterPlatformNodeDelegate.

Definition at line 113 of file flutter_platform_node_delegate_windows.cc.

114  {
115  return ax_platform_node_;
116 }

◆ GetTargetForNativeAccessibilityEvent()

gfx::AcceleratedWidget flutter::FlutterPlatformNodeDelegateWindows::GetTargetForNativeAccessibilityEvent ( )
override

Definition at line 109 of file flutter_platform_node_delegate_windows.cc.

109  {
110  return view_->GetWindowHandle();
111 }

References flutter::FlutterWindowsView::GetWindowHandle().

◆ HitTestSync()

gfx::NativeViewAccessible flutter::FlutterPlatformNodeDelegateWindows::HitTestSync ( int  screen_physical_pixel_x,
int  screen_physical_pixel_y 
) const
override

Definition at line 49 of file flutter_platform_node_delegate_windows.cc.

51  {
52  // If this node doesn't contain the point, return.
53  ui::AXOffscreenResult result;
54  gfx::Rect rect = GetBoundsRect(ui::AXCoordinateSystem::kScreenPhysicalPixels,
55  ui::AXClippingBehavior::kUnclipped, &result);
56  gfx::Point screen_point(screen_physical_pixel_x, screen_physical_pixel_y);
57  if (!rect.Contains(screen_point)) {
58  return nullptr;
59  }
60 
61  // If any child in this node's subtree contains the point, return that child.
62  auto bridge = bridge_.lock();
63  FML_DCHECK(bridge);
64  for (const ui::AXNode* child : GetAXNode()->children()) {
65  std::shared_ptr<FlutterPlatformNodeDelegateWindows> win_delegate =
66  std::static_pointer_cast<FlutterPlatformNodeDelegateWindows>(
67  bridge->GetFlutterPlatformNodeDelegateFromID(child->id()).lock());
68  FML_DCHECK(win_delegate)
69  << "No FlutterPlatformNodeDelegate found for node " << child->id();
70  auto hit_view = win_delegate->HitTestSync(screen_physical_pixel_x,
71  screen_physical_pixel_y);
72  if (hit_view) {
73  return hit_view;
74  }
75  }
76 
77  // If no children contain the point, but this node does, return this node.
78  return ax_platform_node_->GetNativeViewAccessible();
79 }

References flutter::FlutterPlatformNodeDelegate::GetAXNode(), and GetBoundsRect().

◆ Init()

void flutter::FlutterPlatformNodeDelegateWindows::Init ( std::weak_ptr< OwnerBridge bridge,
ui::AXNode *  node 
)
overridevirtual

Called only once, immediately after construction. The constructor doesn't take any arguments because in the Windows subclass we use a special function to construct a COM object. Subclasses must call super.

Reimplemented from flutter::FlutterPlatformNodeDelegate.

Definition at line 34 of file flutter_platform_node_delegate_windows.cc.

35  {
37  ax_platform_node_ = ui::AXPlatformNode::Create(this);
38  FML_DCHECK(ax_platform_node_) << "Failed to create AXPlatformNode";
39 }

References flutter::FlutterPlatformNodeDelegate::Init().

◆ SetFocus()

void flutter::FlutterPlatformNodeDelegateWindows::SetFocus ( )

Definition at line 101 of file flutter_platform_node_delegate_windows.cc.

101  {
102  VARIANT varchild{};
103  varchild.vt = VT_I4;
104  varchild.lVal = CHILDID_SELF;
105  GetNativeViewAccessible()->accSelect(SELFLAG_TAKEFOCUS, varchild);
106 }

References GetNativeViewAccessible().


The documentation for this class was generated from the following files:
flutter::FlutterPlatformNodeDelegateWindows::GetNativeViewAccessible
gfx::NativeViewAccessible GetNativeViewAccessible() override
Definition: flutter_platform_node_delegate_windows.cc:43
flutter::FlutterPlatformNodeDelegate::Init
virtual void Init(std::weak_ptr< OwnerBridge > bridge, ui::AXNode *node)
Called only once, immediately after construction. The constructor doesn't take any arguments because ...
Definition: flutter_platform_node_delegate.cc:20
flutter::FlutterPlatformNodeDelegateWindows::GetBoundsRect
gfx::Rect GetBoundsRect(const ui::AXCoordinateSystem coordinate_system, const ui::AXClippingBehavior clipping_behavior, ui::AXOffscreenResult *offscreen_result) const override
Definition: flutter_platform_node_delegate_windows.cc:82
flutter::FlutterWindowsView::GetWindowHandle
virtual HWND GetWindowHandle() const
Definition: flutter_windows_view.cc:758
flutter::FlutterPlatformNodeDelegate::GetBoundsRect
gfx::Rect GetBoundsRect(const ui::AXCoordinateSystem coordinate_system, const ui::AXClippingBehavior clipping_behavior, ui::AXOffscreenResult *offscreen_result) const override
Definition: flutter_platform_node_delegate.cc:94
flutter::FlutterPlatformNodeDelegate::GetAXNode
ui::AXNode * GetAXNode() const
Gets the underlying ax node for this platform node delegate.
Definition: flutter_platform_node_delegate.cc:26
event_type
ax::mojom::Event event_type
Definition: accessibility_bridge_windows_unittests.cc:34