diff options
Diffstat (limited to 'src/core/accessibility_tree_formatter_qt.cpp')
-rw-r--r-- | src/core/accessibility_tree_formatter_qt.cpp | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/src/core/accessibility_tree_formatter_qt.cpp b/src/core/accessibility_tree_formatter_qt.cpp index 081856b37..df652c6ab 100644 --- a/src/core/accessibility_tree_formatter_qt.cpp +++ b/src/core/accessibility_tree_formatter_qt.cpp @@ -37,7 +37,7 @@ ** ****************************************************************************/ -#include "content/browser/accessibility/accessibility_tree_formatter_browser.h" +#include "content/browser/accessibility/accessibility_tree_formatter_base.h" #include <utility> @@ -53,18 +53,23 @@ namespace content { #if QT_CONFIG(accessibility) -class AccessibilityTreeFormatterQt : public AccessibilityTreeFormatterBrowser { +class AccessibilityTreeFormatterQt : public AccessibilityTreeFormatterBase { public: explicit AccessibilityTreeFormatterQt(); ~AccessibilityTreeFormatterQt() override; + std::unique_ptr<base::DictionaryValue> BuildAccessibilityTreeForProcess(base::ProcessId) override { return nullptr; } + std::unique_ptr<base::DictionaryValue> BuildAccessibilityTreeForWindow(gfx::AcceleratedWidget) override { return nullptr; } + std::unique_ptr<base::DictionaryValue> BuildAccessibilityTreeForPattern(const base::StringPiece &) override { return nullptr; } + std::unique_ptr<base::DictionaryValue> BuildAccessibilityTree(content::BrowserAccessibility *) override; private: base::FilePath::StringType GetExpectedFileSuffix() override; const std::string GetAllowEmptyString() override; const std::string GetAllowString() override; const std::string GetDenyString() override; const std::string GetDenyNodeString() override; - void AddProperties(const BrowserAccessibility &node, base::DictionaryValue* dict) override; + void RecursiveBuildAccessibilityTree(const content::BrowserAccessibility &node, base::DictionaryValue *dict) const; + void AddProperties(const BrowserAccessibility &node, base::DictionaryValue *dict) const; base::string16 ProcessTreeForOutput(const base::DictionaryValue &node, base::DictionaryValue * = nullptr) override; }; @@ -76,7 +81,30 @@ AccessibilityTreeFormatterQt::~AccessibilityTreeFormatterQt() { } -void AccessibilityTreeFormatterQt::AddProperties(const BrowserAccessibility &node, base::DictionaryValue *dict) +std::unique_ptr<base::DictionaryValue> AccessibilityTreeFormatterQt::BuildAccessibilityTree(content::BrowserAccessibility *root) +{ + std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue); + RecursiveBuildAccessibilityTree(*root, dict.get()); + return dict; +} + +void AccessibilityTreeFormatterQt::RecursiveBuildAccessibilityTree(const BrowserAccessibility &node, base::DictionaryValue *dict) const +{ + AddProperties(node, dict); + + auto children = std::make_unique<base::ListValue>(); + for (size_t i = 0; i < node.PlatformChildCount(); ++i) { + std::unique_ptr<base::DictionaryValue> child_dict(new base::DictionaryValue); + + content::BrowserAccessibility *child_node = node.PlatformGetChild(i); + + RecursiveBuildAccessibilityTree(*child_node, child_dict.get()); + children->Append(std::move(child_dict)); + } + dict->Set(kChildrenDictAttr, std::move(children)); +} + +void AccessibilityTreeFormatterQt::AddProperties(const BrowserAccessibility &node, base::DictionaryValue *dict) const { dict->SetInteger("id", node.GetId()); const BrowserAccessibilityQt *acc_node = ToBrowserAccessibilityQt(&node); |