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

Unified Diff: ui/accessibility/ax_tree.h

Issue 125783002: Add AXTreeDelegate and refactor other AXTree classes slightly. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed const issue Created 6 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
« no previous file with comments | « ui/accessibility/ax_serializable_tree.cc ('k') | ui/accessibility/ax_tree.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/accessibility/ax_tree.h
diff --git a/ui/accessibility/ax_tree.h b/ui/accessibility/ax_tree.h
index 0241d3e1aaa1ca3954adac3f1c3e1888ca95fe6b..eb4d5d6b273e96483aa982edba4573c90970d6b2 100644
--- a/ui/accessibility/ax_tree.h
+++ b/ui/accessibility/ax_tree.h
@@ -15,6 +15,31 @@
namespace ui {
class AXNode;
+struct AXTreeUpdateState;
+
+// Used when you want to be notified when changes happen to the tree.
+class AX_EXPORT AXTreeDelegate {
+ public:
+ AXTreeDelegate();
+ virtual ~AXTreeDelegate();
+
+ // Called just before a node is deleted. Its id and data will be valid,
+ // but its links to parents and children are invalid. This is called
+ // in the middle of an update, the tree may be in an invalid state!
+ virtual void OnNodeWillBeDeleted(AXNode* node) = 0;
+
+ // Called after a new node is created. It's guaranteed to be called
+ // after it's been fully initialized, so you can rely on its data and
+ // links to parents and children being valid. This will be called on
+ // parents before it's called on their children.
+ virtual void OnNodeCreated(AXNode* node) = 0;
+
+ // Called when a node changes its data or children.
+ virtual void OnNodeChanged(AXNode* node) = 0;
+
+ // Called when the root node changes.
+ virtual void OnRootChanged(AXNode* new_root) = 0;
+};
// AXTree is a live, managed tree of AXNode objects that can receive
// updates from another AXTreeSource via AXTreeUpdates, and it can be
@@ -27,6 +52,8 @@ class AX_EXPORT AXTree {
explicit AXTree(const AXTreeUpdate& initial_state);
virtual ~AXTree();
+ virtual void SetDelegate(AXTreeDelegate* delegate);
+
virtual AXNode* GetRoot() const;
virtual AXNode* GetFromId(int32 id) const;
@@ -42,22 +69,14 @@ class AX_EXPORT AXTree {
// for testing and debugging.
const std::string& error() { return error_; }
- protected:
- // Subclasses can override this to use a subclass of AXNode.
- virtual AXNode* CreateNode(AXNode* parent, int32 id, int32 index_in_parent);
+ private:
+ AXNode* CreateNode(AXNode* parent, int32 id, int32 index_in_parent);
// This is called from within Unserialize(), it returns true on success.
- // Subclasses can override this to do additional processing. |pending_nodes|
- // is updated to contain all nodes that have been implicitly referenced
- // as part of this update, but haven't been updated yet. It's an error if
- // there are any pending nodes at the end of Unserialize.
- virtual bool UpdateNode(const AXNodeData& src,
- std::set<AXNode*>* pending_nodes);
+ bool UpdateNode(const AXNodeData& src, AXTreeUpdateState* update_state);
- // Subclasses can override this to do special behavior when the root changes.
- virtual void OnRootChanged();
+ void OnRootChanged();
- private:
// Convenience function to create a node and call Initialize on it.
AXNode* CreateAndInitializeNode(
AXNode* parent, int32 id, int32 index_in_parent);
@@ -76,13 +95,13 @@ class AX_EXPORT AXTree {
// pointers to child nodes, reusing existing nodes already in the tree
// if they exist, and creating otherwise. Reparenting is disallowed, so
// if the id already exists as the child of another node, that's an
- // error. Returns true on success, false on fatal error. See
- // UpdateNode, above, for an explanation of |pending_nodes|.
+ // error. Returns true on success, false on fatal error.
bool CreateNewChildVector(AXNode* node,
const std::vector<int32> new_child_ids,
std::vector<AXNode*>* new_children,
- std::set<AXNode*>* pending_nodes);
+ AXTreeUpdateState* update_state);
+ AXTreeDelegate* delegate_;
AXNode* root_;
base::hash_map<int32, AXNode*> id_map_;
std::string error_;
« no previous file with comments | « ui/accessibility/ax_serializable_tree.cc ('k') | ui/accessibility/ax_tree.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698