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

Unified Diff: content/browser/accessibility/accessibility_tree_formatter.h

Issue 13479003: Modify AccessibilityTreeFormatter to build up an internal representation of the tree (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Lazy initialize ALL_ATTRIBUTES Created 7 years, 8 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: content/browser/accessibility/accessibility_tree_formatter.h
diff --git a/content/browser/accessibility/accessibility_tree_formatter.h b/content/browser/accessibility/accessibility_tree_formatter.h
index ca51a68a735ccd92826050f5e4ff9540ad13c9e6..17beff70033b5f207ad3d7116ee2cee98c466698 100644
--- a/content/browser/accessibility/accessibility_tree_formatter.h
+++ b/content/browser/accessibility/accessibility_tree_formatter.h
@@ -10,6 +10,7 @@
#include "base/files/file_path.h"
#include "base/string16.h"
#include "base/utf_string_conversions.h"
+#include "base/values.h"
#include "content/browser/accessibility/browser_accessibility.h"
#include "content/common/content_export.h"
@@ -23,11 +24,33 @@ class RenderViewHost;
// implemented.
class CONTENT_EXPORT AccessibilityTreeFormatter {
public:
- explicit AccessibilityTreeFormatter(BrowserAccessibility* node);
+ explicit AccessibilityTreeFormatter(BrowserAccessibility* root);
virtual ~AccessibilityTreeFormatter();
static AccessibilityTreeFormatter* Create(RenderViewHost* rvh);
+ // Populates the given DictionaryValue with the accessibility tree.
+ // The dictionary contains a key/value pair for each attribute of the node,
+ // plus a "children" attribute containing a list of all child nodes.
+ // {
+ // "AXName": "node", /* actual attributes will vary by platform */
+ // "position": { /* some attributes may be dictionaries */
+ // "x": 0,
+ // "y": 0
+ // },
+ // /* ... more attributes of |node| */
+ // "children": [ { /* list of children created recursively */
+ // "AXName": "child node 1",
+ // /* ... more attributes */
+ // "children": [ ]
+ // }, {
+ // "AXName": "child name 2",
+ // /* ... more attributes */
+ // "children": [ ]
+ // } ]
+ // }
+ scoped_ptr<DictionaryValue> BuildAccessibilityTree();
+
// Dumps a BrowserAccessibility tree into a string.
void FormatAccessibilityTree(string16* contents);
@@ -76,25 +99,45 @@ class CONTENT_EXPORT AccessibilityTreeFormatter {
static const std::string GetDenyString();
protected:
- void RecursiveFormatAccessibilityTree(BrowserAccessibility* node,
+ void RecursiveFormatAccessibilityTree(const BrowserAccessibility& node,
string16* contents,
int indent);
+ void RecursiveBuildAccessibilityTree(const BrowserAccessibility& node,
+ DictionaryValue* tree_node);
+ void RecursiveFormatAccessibilityTree(const DictionaryValue& tree_node,
+ string16* contents,
+ int depth = 0);
+
+ // Overridden by each platform to add the required attributes for each node
+ // into the given dict.
+ void AddProperties(const BrowserAccessibility& node, DictionaryValue* dict);
+
+ string16 FormatCoordinates(const char* name,
+ const char* x_name,
+ const char* y_name,
+ const DictionaryValue& value);
// Returns a platform specific representation of a BrowserAccessibility.
// Should be zero or more complete lines, each with |prefix| prepended
// (to indent each line).
- string16 ToString(BrowserAccessibility* node, char* prefix);
+ string16 ToString(const DictionaryValue& node, const string16& indent);
void Initialize();
bool MatchesFilters(const string16& text, bool default_result) const;
- void StartLine();
- void Add(bool include_by_default, const string16& attr);
- string16 FinishLine();
- BrowserAccessibility* node_;
+ // Writes the given attribute string out to |line| if it matches the filters.
+ void WriteAttribute(bool include_by_default,
+ const string16& attr,
+ string16* line);
+ void WriteAttribute(bool include_by_default,
+ const std::string& attr,
+ string16* line);
+
+ BrowserAccessibility* root_;
+
+ // Filters used when formatting the accessibility tree as text.
std::vector<Filter> filters_;
- string16 line_;
DISALLOW_COPY_AND_ASSIGN(AccessibilityTreeFormatter);
};

Powered by Google App Engine
This is Rietveld 408576698