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

Unified Diff: ui/accessibility/ax_tree_update.h

Issue 1407413002: Move some AX attrs from AXNodeData to AXTreeData. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 2 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/ax_tree_update.h
diff --git a/ui/accessibility/ax_tree_update.h b/ui/accessibility/ax_tree_update.h
index 7fd94ec498ee9077ffbfdc181518cec51540c23b..c7d272fe10f2495f1df41ee89fad3bd32014929f 100644
--- a/ui/accessibility/ax_tree_update.h
+++ b/ui/accessibility/ax_tree_update.h
@@ -10,6 +10,7 @@
#include "base/strings/string_number_conversions.h"
#include "ui/accessibility/ax_node_data.h"
+#include "ui/accessibility/ax_tree_data.h"
namespace ui {
@@ -21,8 +22,9 @@ namespace ui {
//
// An AXTreeUpdate consists of an optional node id to clear (meaning
// that all of that node's children and their descendants are deleted),
-// followed by an ordered vector of AXNodeData structures to be applied
-// to the tree in order.
+// followed by an ordered vector of zero or more AXNodeData structures to
+// be applied to the tree in order. An update may also include an optional
+// update to the AXTreeData structure that applies to the tree as a whole.
//
// Suppose that the next AXNodeData to be applied is |node|. The following
// invariants must hold:
@@ -38,9 +40,14 @@ namespace ui {
// placeholder must be updated within the same AXTreeUpdate, otherwise
// it's a fatal error. This guarantees the tree is always complete
// before or after an AXTreeUpdate.
-template<typename AXNodeData> struct AXTreeUpdate {
- AXTreeUpdate();
- ~AXTreeUpdate();
+template<typename AXNodeData, typename AXTreeData> struct AXTreeUpdateBase {
+ AXTreeUpdateBase();
+ ~AXTreeUpdateBase();
+
+ // If |has_tree_data| is true, the value of |tree_data| should be used
+ // to update the tree data, otherwise it should be ignored.
+ bool has_tree_data;
+ AXTreeData tree_data;
// The id of a node to clear, before applying any updates,
// or 0 if no nodes should be cleared. Clearing a node means deleting
@@ -58,17 +65,26 @@ template<typename AXNodeData> struct AXTreeUpdate {
// TODO(dmazzoni): location changes
};
-template<typename AXNodeData>
-AXTreeUpdate<AXNodeData>::AXTreeUpdate() : node_id_to_clear(0) {
+typedef AXTreeUpdateBase<AXNodeData, AXTreeData> AXTreeUpdate;
+
+template<typename AXNodeData, typename AXTreeData>
+AXTreeUpdateBase<AXNodeData, AXTreeData>::AXTreeUpdateBase()
+ : has_tree_data(false),
+ node_id_to_clear(0) {
}
-template<typename AXNodeData>
-AXTreeUpdate<AXNodeData>::~AXTreeUpdate() {
+template<typename AXNodeData, typename AXTreeData>
+AXTreeUpdateBase<AXNodeData, AXTreeData>::~AXTreeUpdateBase() {
}
-template<typename AXNodeData>
-std::string AXTreeUpdate<AXNodeData>::ToString() const {
+template<typename AXNodeData, typename AXTreeData>
+std::string AXTreeUpdateBase<AXNodeData, AXTreeData>::ToString() const {
std::string result;
+
+ if (has_tree_data) {
+ result += "AXTreeUpdate tree data:" + tree_data.ToString();
+ }
+
if (node_id_to_clear != 0) {
result += "AXTreeUpdate: clear node " +
base::IntToString(node_id_to_clear) + "\n";

Powered by Google App Engine
This is Rietveld 408576698