Flutter Engine
The Flutter Engine
|
#include <AccessibilityBridgeMac.h>
Public Member Functions | |
AccessibilityBridgeMac (__weak FlutterEngine *flutter_engine, __weak FlutterViewController *view_controller) | |
Creates an AccessibilityBridgeMacDelegate. More... | |
virtual | ~AccessibilityBridgeMac ()=default |
void | DispatchAccessibilityAction (AccessibilityNodeId target, FlutterSemanticsAction action, fml::MallocMapping data) override |
Dispatch accessibility action back to the Flutter framework. These actions are generated in the native accessibility system when users interact with the assistive technologies. For example, a FlutterSemanticsAction::kFlutterSemanticsActionTap is fired when user click or touch the screen. More... | |
Public Member Functions inherited from flutter::AccessibilityBridge | |
AccessibilityBridge () | |
Creates a new instance of a accessibility bridge. More... | |
virtual | ~AccessibilityBridge () |
void | AddFlutterSemanticsNodeUpdate (const FlutterSemanticsNode2 &node) |
Adds a semantics node update to the pending semantics update. Calling this method alone will NOT update the semantics tree. To flush the pending updates, call the CommitUpdates(). More... | |
void | AddFlutterSemanticsCustomActionUpdate (const FlutterSemanticsCustomAction2 &action) |
Adds a custom semantics action update to the pending semantics update. Calling this method alone will NOT update the semantics tree. To flush the pending updates, call the CommitUpdates(). More... | |
void | CommitUpdates () |
Flushes the pending updates and applies them to this accessibility bridge. Calling this with no pending updates does nothing, and callers should call this method at the end of an atomic batch to avoid leaving the tree in a unstable state. For example if a node reparents from A to B, callers should only call this method when both removal from A and addition to B are in the pending updates. More... | |
std::weak_ptr< FlutterPlatformNodeDelegate > | GetFlutterPlatformNodeDelegateFromID (AccessibilityNodeId id) const |
Get the flutter platform node delegate with the given id from this accessibility bridge. Returns expired weak_ptr if the delegate associated with the id does not exist or has been removed from the accessibility tree. More... | |
const ui::AXTreeData & | GetAXTreeData () const |
Get the ax tree data from this accessibility bridge. The tree data contains information such as the id of the node that has the keyboard focus or the text selection range. More... | |
const std::vector< ui::AXEventGenerator::TargetedEvent > | GetPendingEvents () const |
Gets all pending accessibility events generated during semantics updates. This is useful when deciding how to handle events in AccessibilityBridgeDelegate::OnAccessibilityEvent in case one may decide to handle an event differently based on all pending events. More... | |
ui::AXNode * | GetNodeFromTree (const ui::AXTreeID tree_id, const ui::AXNode::AXID node_id) const override |
ui::AXNode * | GetNodeFromTree (const ui::AXNode::AXID node_id) const override |
ui::AXTreeID | GetTreeID () const override |
ui::AXTreeID | GetParentTreeID () const override |
ui::AXNode * | GetRootAsAXNode () const override |
ui::AXNode * | GetParentNodeFromParentTreeAsAXNode () const override |
ui::AXTree * | GetTree () const override |
ui::AXPlatformNode * | GetPlatformNodeFromTree (const ui::AXNode::AXID node_id) const override |
ui::AXPlatformNode * | GetPlatformNodeFromTree (const ui::AXNode &node) const override |
ui::AXPlatformNodeDelegate * | RootDelegate () const override |
AccessibilityBridge (FlutterViewController *view_controller, PlatformViewIOS *platform_view, std::shared_ptr< FlutterPlatformViewsController > platform_views_controller, std::unique_ptr< IosDelegate > ios_delegate=nullptr) | |
~AccessibilityBridge () | |
void | UpdateSemantics (flutter::SemanticsNodeUpdates nodes, const flutter::CustomAccessibilityActionUpdates &actions) |
void | HandleEvent (NSDictionary< NSString *, id > *annotatedEvent) |
void | DispatchSemanticsAction (int32_t id, flutter::SemanticsAction action) override |
void | DispatchSemanticsAction (int32_t id, flutter::SemanticsAction action, fml::MallocMapping args) override |
void | AccessibilityObjectDidBecomeFocused (int32_t id) override |
void | AccessibilityObjectDidLoseFocus (int32_t id) override |
UIView< UITextInput > * | textInputView () override |
UIView * | view () const override |
bool | isVoiceOverRunning () const override |
fml::WeakPtr< AccessibilityBridge > | GetWeakPtr () |
std::shared_ptr< FlutterPlatformViewsController > | GetPlatformViewsController () const override |
void | clearState () |
Public Member Functions inherited from flutter::FlutterPlatformNodeDelegate::OwnerBridge | |
virtual | ~OwnerBridge ()=default |
virtual gfx::RectF | RelativeToGlobalBounds (const ui::AXNode *node, bool &offscreen, bool clip_bounds)=0 |
Gets the rectangular bounds of the ax node relative to global coordinate. More... | |
Public Member Functions inherited from ui::AXPlatformTreeManager | |
virtual | ~AXPlatformTreeManager ()=default |
virtual AXPlatformNode * | GetPlatformNodeFromTree (const AXNode::AXID node_id) const =0 |
virtual AXPlatformNode * | GetPlatformNodeFromTree (const AXNode &node) const =0 |
virtual AXPlatformNodeDelegate * | RootDelegate () const =0 |
Public Member Functions inherited from ui::AXTreeManager | |
virtual | ~AXTreeManager ()=default |
virtual AXNode * | GetNodeFromTree (const AXTreeID tree_id, const AXNode::AXID node_id) const =0 |
virtual AXNode * | GetNodeFromTree (const AXNode::AXID node_id) const =0 |
virtual AXTreeID | GetTreeID () const =0 |
virtual AXTreeID | GetParentTreeID () const =0 |
virtual AXNode * | GetRootAsAXNode () const =0 |
virtual AXNode * | GetParentNodeFromParentTreeAsAXNode () const =0 |
virtual AXTree * | GetTree () const =0 |
Public Member Functions inherited from flutter::AccessibilityBridgeIos | |
virtual | ~AccessibilityBridgeIos ()=default |
virtual UIView * | view () const =0 |
virtual bool | isVoiceOverRunning () const =0 |
virtual UIView< UITextInput > * | textInputView ()=0 |
virtual void | DispatchSemanticsAction (int32_t id, flutter::SemanticsAction action)=0 |
virtual void | DispatchSemanticsAction (int32_t id, flutter::SemanticsAction action, fml::MallocMapping args)=0 |
virtual void | AccessibilityObjectDidBecomeFocused (int32_t id)=0 |
virtual void | AccessibilityObjectDidLoseFocus (int32_t id)=0 |
virtual std::shared_ptr< FlutterPlatformViewsController > | GetPlatformViewsController () const =0 |
Protected Member Functions | |
void | OnAccessibilityEvent (ui::AXEventGenerator::TargetedEvent targeted_event) override |
Handle accessibility events generated due to accessibility tree changes. These events are needed to be sent to native accessibility system. See ui::AXEventGenerator::Event for possible events. More... | |
std::shared_ptr< FlutterPlatformNodeDelegate > | CreateFlutterPlatformNodeDelegate () override |
Creates a platform specific FlutterPlatformNodeDelegate. Ownership passes to the caller. This method will be called whenever a new AXNode is created in AXTree. Each platform needs to implement this method in order to inject its subclass into the accessibility bridge. More... | |
virtual void | OnAccessibilityEvent (ui::AXEventGenerator::TargetedEvent targeted_event)=0 |
Handle accessibility events generated due to accessibility tree changes. These events are needed to be sent to native accessibility system. See ui::AXEventGenerator::Event for possible events. More... | |
virtual std::shared_ptr< FlutterPlatformNodeDelegate > | CreateFlutterPlatformNodeDelegate ()=0 |
Creates a platform specific FlutterPlatformNodeDelegate. Ownership passes to the caller. This method will be called whenever a new AXNode is created in AXTree. Each platform needs to implement this method in order to inject its subclass into the accessibility bridge. More... | |
virtual void | DispatchAccessibilityAction (AccessibilityNodeId target, FlutterSemanticsAction action, fml::MallocMapping data)=0 |
Dispatch accessibility action back to the Flutter framework. These actions are generated in the native accessibility system when users interact with the assistive technologies. For example, a FlutterSemanticsAction::kFlutterSemanticsActionTap is fired when user click or touch the screen. More... | |
virtual gfx::NativeViewAccessible | GetNativeAccessibleFromId (AccessibilityNodeId id)=0 |
Get the native accessibility node with the given id. More... | |
virtual AccessibilityNodeId | GetLastFocusedId ()=0 |
Get the last id of the node that received accessibility focus. More... | |
virtual void | SetLastFocusedId (AccessibilityNodeId node_id)=0 |
Update the id of the node that is currently foucsed by the native accessibility system. More... | |
Private Member Functions | |
virtual void | DispatchMacOSNotification (gfx::NativeViewAccessible native_node, NSAccessibilityNotificationName mac_notification) |
Posts the given event against the given node to the macOS accessibility notification system. More... | |
The macOS implementation of AccessibilityBridge.
This interacts with macOS accessibility APIs, which includes routing accessibility events fired from the framework to macOS, routing native macOS accessibility events to the framework, and creating macOS-specific FlutterPlatformNodeDelegate objects for each node in the semantics tree.
AccessibilityBridgeMac must be created as a shared_ptr, since some methods acquires its weak_ptr.
Definition at line 28 of file AccessibilityBridgeMac.h.
|
explicit |
Creates an AccessibilityBridgeMacDelegate.
[in] | flutter_engine | The weak reference to the FlutterEngine. |
[in] | view_controller | The weak reference to the FlutterViewController. |
Definition at line 23 of file AccessibilityBridgeMac.mm.
|
virtualdefault |
|
overrideprotectedvirtual |
Creates a platform specific FlutterPlatformNodeDelegate. Ownership passes to the caller. This method will be called whenever a new AXNode is created in AXTree. Each platform needs to implement this method in order to inject its subclass into the accessibility bridge.
Implements flutter::AccessibilityBridge.
Definition at line 343 of file AccessibilityBridgeMac.mm.
|
overridevirtual |
Dispatch accessibility action back to the Flutter framework. These actions are generated in the native accessibility system when users interact with the assistive technologies. For example, a FlutterSemanticsAction::kFlutterSemanticsActionTap is fired when user click or touch the screen.
[in] | target | The semantics node id of the action target. |
[in] | action | The generated flutter semantics action. |
[in] | data | Additional data associated with the action. |
Implements flutter::FlutterPlatformNodeDelegate::OwnerBridge.
Definition at line 332 of file AccessibilityBridgeMac.mm.
|
privatevirtual |
Posts the given event against the given node to the macOS accessibility notification system.
[in] | native_node | The event target, must not be nil. |
[in] | mac_notification | The event name, must not be nil. |
Definition at line 348 of file AccessibilityBridgeMac.mm.
|
overrideprotectedvirtual |
Handle accessibility events generated due to accessibility tree changes. These events are needed to be sent to native accessibility system. See ui::AXEventGenerator::Event for possible events.
[in] | targeted_event | The object that contains both the generated event and the event target. |
Implements flutter::AccessibilityBridge.
Definition at line 27 of file AccessibilityBridgeMac.mm.