Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Unified Diff: ui/accessibility/platform/ax_platform_node_delegate.h

Issue 909143003: Re-land: Implement NativeViewAccessibilityWin using AXPlatformNodeWin. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update GN build Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/accessibility/platform/ax_platform_node_delegate.h
diff --git a/ui/accessibility/platform/ax_platform_node_delegate.h b/ui/accessibility/platform/ax_platform_node_delegate.h
index 9af5c4d5df48027749872a68803c98a878274432..e6dd24d90413fa1db79d36d6d01477807d2282cf 100644
--- a/ui/accessibility/platform/ax_platform_node_delegate.h
+++ b/ui/accessibility/platform/ax_platform_node_delegate.h
@@ -15,28 +15,74 @@ namespace ui {
struct AXNodeData;
class AXPlatformNode;
+// An object that wants to be accessible should derive from this class.
+// AXPlatformNode subclasses use this interface to query all of the information
+// about the object in order to implement native accessibility APIs.
+//
+// Note that AXPlatformNode has support for accessibility trees where some
+// of the objects in the tree are not implemented using AXPlatformNode.
+// For example, you may have a native window with platform-native widgets
+// in it, but in that window you have custom controls that use AXPlatformNode
+// to provide accessibility. That's why GetParent, ChildAtIndex, HitTestSync,
+// and GetFocus all return a gfx::NativeViewAccessible - so you can return a
+// native accessible if necessary, and AXPlatformNode::GetNativeViewAccessible
+// otherwise.
class AX_EXPORT AXPlatformNodeDelegate {
public:
// Get the accessibility data that should be exposed for this node.
- virtual AXNodeData* GetData() = 0;
+ // Virtually all of the information is obtained from this structure
+ // (role, state, name, cursor position, etc.) - the rest of this interface
+ // is mostly to implement support for walking the accessibility tree.
+ virtual const AXNodeData& GetData() = 0;
- // Get the parent of the node unless it's the root, then it returns NULL.
+ // Get the parent of the node, which may be an AXPlatformNode or it may
+ // be a native accessible object implemented by another class.
virtual gfx::NativeViewAccessible GetParent() = 0;
// Get the number of children of this node.
virtual int GetChildCount() = 0;
- // Get the child of a node from [0...GetChildCount() - 1]
+ // Get the child of a node given a 0-based index.
virtual gfx::NativeViewAccessible ChildAtIndex(int index) = 0;
// Get the offset to convert local coordinates to screen global coordinates.
virtual gfx::Vector2d GetGlobalCoordinateOffset() = 0;
+ // Do a *synchronous* hit test of the given location in global screen
+ // coordinates, and the node within this node's subtree (inclusive) that's
+ // hit, if any.
+ //
+ // If the result is anything other than this object or NULL, it will be
+ // hit tested again recursively - that allows hit testing to work across
+ // implementation classes. It's okay to take advantage of this and return
+ // only an immediate child and not the deepest descendant.
+ //
+ // This function is mainly used by accessibility debugging software.
+ // Platforms with touch accessibility use a different asynchronous interface.
+ virtual gfx::NativeViewAccessible HitTestSync(int x, int y) = 0;
+
+ // Return the node within this node's subtree (inclusive) that currently
+ // has focus.
+ virtual gfx::NativeViewAccessible GetFocus() = 0;
+
//
// Events.
//
- virtual void NotifyAccessibilityEvent(ui::AXEvent event_type) = 0;
+ // Return the platform-native GUI object that should be used as a target
+ // for accessibility events.
+ virtual gfx::AcceleratedWidget GetTargetForNativeAccessibilityEvent() = 0;
+
+ //
+ // Actions.
+ //
+
+ // Perform the default action, e.g. click a button, follow a link, or
+ // toggle a checkbox.
+ virtual void DoDefaultAction() = 0;
+
+ // Change the value of a control, such as the text content of a text field.
+ virtual bool SetStringValue(const base::string16& new_value) = 0;
};
} // namespace ui
« no previous file with comments | « ui/accessibility/platform/ax_platform_node_base.cc ('k') | ui/accessibility/platform/ax_platform_node_mac.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698