Commit 20aeb7a0 authored by Alexander Surkov's avatar Alexander Surkov Committed by Commit Bot

Merge browser and blink accessibility tree formatter

AccessibilityTreeFormatterBrowser is used by AccessibiltiyTreeFromatterBlink only. No point to keep these classes separate.

Bug: 1070311
Change-Id: Iccf8301b0ab4f235f3933b701873b5e36576b8cf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2151704
Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org>
Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#760140}
parent 9207b20d
......@@ -315,8 +315,6 @@ jumbo_source_set("browser") {
"accessibility/accessibility_tree_formatter_base.h",
"accessibility/accessibility_tree_formatter_blink.cc",
"accessibility/accessibility_tree_formatter_blink.h",
"accessibility/accessibility_tree_formatter_browser.cc",
"accessibility/accessibility_tree_formatter_browser.h",
"accessibility/accessibility_tree_formatter_mac.mm",
"accessibility/accessibility_tree_formatter_stub.cc",
"accessibility/accessibility_tree_formatter_uia_win.cc",
......
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/accessibility/accessibility_tree_formatter_browser.h"
#include "content/browser/accessibility/accessibility_tree_formatter_base.h"
#include <string>
......
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/accessibility/accessibility_tree_formatter_browser.h"
#include "content/browser/accessibility/accessibility_tree_formatter_base.h"
#include <atspi/atspi.h>
#include <dbus/dbus.h>
......
......@@ -153,7 +153,7 @@ std::string IntAttrToString(const BrowserAccessibility& node,
} // namespace
AccessibilityTreeFormatterBlink::AccessibilityTreeFormatterBlink()
: AccessibilityTreeFormatterBrowser() {}
: AccessibilityTreeFormatterBase() {}
AccessibilityTreeFormatterBlink::~AccessibilityTreeFormatterBlink() {}
......@@ -202,6 +202,53 @@ const char* const TREE_DATA_ATTRIBUTES[] = {"TreeData.textSelStartOffset",
const char* STATE_FOCUSED = "focused";
const char* STATE_OFFSCREEN = "offscreen";
std::unique_ptr<base::DictionaryValue>
AccessibilityTreeFormatterBlink::BuildAccessibilityTree(
BrowserAccessibility* root) {
CHECK(root);
std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
RecursiveBuildAccessibilityTree(*root, dict.get());
return dict;
}
std::unique_ptr<base::DictionaryValue>
AccessibilityTreeFormatterBlink::BuildAccessibilityTreeForProcess(
base::ProcessId pid) {
NOTREACHED();
return nullptr;
}
std::unique_ptr<base::DictionaryValue>
AccessibilityTreeFormatterBlink::BuildAccessibilityTreeForWindow(
gfx::AcceleratedWidget widget) {
NOTREACHED();
return nullptr;
}
std::unique_ptr<base::DictionaryValue>
AccessibilityTreeFormatterBlink::BuildAccessibilityTreeForPattern(
const base::StringPiece& pattern) {
NOTREACHED();
return nullptr;
}
void AccessibilityTreeFormatterBlink::RecursiveBuildAccessibilityTree(
const BrowserAccessibility& node,
base::DictionaryValue* dict) const {
AddProperties(node, dict);
auto children = std::make_unique<base::ListValue>();
for (size_t i = 0; i < ChildCount(node); ++i) {
BrowserAccessibility* child_node = GetChild(node, i);
std::unique_ptr<base::DictionaryValue> child_dict(
new base::DictionaryValue);
RecursiveBuildAccessibilityTree(*child_node, child_dict.get());
children->Append(std::move(child_dict));
}
dict->Set(kChildrenDictAttr, std::move(children));
}
uint32_t AccessibilityTreeFormatterBlink::ChildCount(
const BrowserAccessibility& node) const {
if (node.HasStringAttribute(ax::mojom::StringAttribute::kChildTreeId))
......@@ -227,7 +274,7 @@ BrowserAccessibility* AccessibilityTreeFormatterBlink::GetChild(
void AccessibilityTreeFormatterBlink::AddProperties(
const BrowserAccessibility& node,
base::DictionaryValue* dict) {
base::DictionaryValue* dict) const {
int id = node.GetId();
dict->SetInteger("id", id);
......
......@@ -9,18 +9,31 @@
#include <string>
#include <vector>
#include "content/browser/accessibility/accessibility_tree_formatter_browser.h"
#include "content/browser/accessibility/accessibility_tree_formatter_base.h"
namespace content {
class CONTENT_EXPORT AccessibilityTreeFormatterBlink
: public AccessibilityTreeFormatterBrowser {
: public AccessibilityTreeFormatterBase {
public:
explicit AccessibilityTreeFormatterBlink();
~AccessibilityTreeFormatterBlink() override;
std::unique_ptr<base::DictionaryValue> BuildAccessibilityTree(
BrowserAccessibility* root) override;
std::unique_ptr<base::DictionaryValue> BuildAccessibilityTreeForProcess(
base::ProcessId pid) override;
std::unique_ptr<base::DictionaryValue> BuildAccessibilityTreeForWindow(
gfx::AcceleratedWidget widget) override;
std::unique_ptr<base::DictionaryValue> BuildAccessibilityTreeForPattern(
const base::StringPiece& pattern) override;
void AddDefaultFilters(
std::vector<PropertyFilter>* property_filters) override;
static std::unique_ptr<AccessibilityTreeFormatter> CreateBlink();
private:
......@@ -29,11 +42,17 @@ class CONTENT_EXPORT AccessibilityTreeFormatterBlink
const std::string GetAllowString() override;
const std::string GetDenyString() override;
const std::string GetDenyNodeString() override;
uint32_t ChildCount(const BrowserAccessibility& node) const override;
void RecursiveBuildAccessibilityTree(const BrowserAccessibility& node,
base::DictionaryValue* dict) const;
uint32_t ChildCount(const BrowserAccessibility& node) const;
BrowserAccessibility* GetChild(const BrowserAccessibility& node,
uint32_t i) const override;
uint32_t i) const;
void AddProperties(const BrowserAccessibility& node,
base::DictionaryValue* dict) override;
base::DictionaryValue* dict) const;
base::string16 ProcessTreeForOutput(
const base::DictionaryValue& node,
base::DictionaryValue* filtered_dict_result = nullptr) override;
......
// Copyright (c) 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/accessibility/accessibility_tree_formatter_browser.h"
namespace content {
std::unique_ptr<base::DictionaryValue>
AccessibilityTreeFormatterBrowser::BuildAccessibilityTree(
BrowserAccessibility* root) {
CHECK(root);
std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
RecursiveBuildAccessibilityTree(*root, dict.get());
return dict;
}
std::unique_ptr<base::DictionaryValue>
AccessibilityTreeFormatterBrowser::BuildAccessibilityTreeForProcess(
base::ProcessId pid) {
NOTREACHED();
return nullptr;
}
std::unique_ptr<base::DictionaryValue>
AccessibilityTreeFormatterBrowser::BuildAccessibilityTreeForWindow(
gfx::AcceleratedWidget widget) {
NOTREACHED();
return nullptr;
}
std::unique_ptr<base::DictionaryValue>
AccessibilityTreeFormatterBrowser::BuildAccessibilityTreeForPattern(
const base::StringPiece& pattern) {
NOTREACHED();
return nullptr;
}
void AccessibilityTreeFormatterBrowser::RecursiveBuildAccessibilityTree(
const BrowserAccessibility& node,
base::DictionaryValue* dict) {
AddProperties(node, dict);
auto children = std::make_unique<base::ListValue>();
for (size_t i = 0; i < ChildCount(node); ++i) {
BrowserAccessibility* child_node = GetChild(node, i);
std::unique_ptr<base::DictionaryValue> child_dict(
new base::DictionaryValue);
RecursiveBuildAccessibilityTree(*child_node, child_dict.get());
children->Append(std::move(child_dict));
}
dict->Set(kChildrenDictAttr, std::move(children));
}
uint32_t AccessibilityTreeFormatterBrowser::ChildCount(
const BrowserAccessibility& node) const {
return node.PlatformChildCount();
}
BrowserAccessibility* AccessibilityTreeFormatterBrowser::GetChild(
const BrowserAccessibility& node,
uint32_t i) const {
return node.PlatformGetChild(i);
}
} // namespace content
// Copyright (c) 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CONTENT_BROWSER_ACCESSIBILITY_ACCESSIBILITY_TREE_FORMATTER_BROWSER_H_
#define CONTENT_BROWSER_ACCESSIBILITY_ACCESSIBILITY_TREE_FORMATTER_BROWSER_H_
#include "content/browser/accessibility/accessibility_tree_formatter_base.h"
#include "base/macros.h"
#include "base/strings/string16.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "content/browser/accessibility/browser_accessibility.h"
#include "content/common/content_export.h"
namespace content {
// Inheritable class for tree formatters that rely on browser infrastructure for
// walking the tree and getting properties. Tree formatters that walk native
// objects should not inherit from this class.
class CONTENT_EXPORT AccessibilityTreeFormatterBrowser
: public AccessibilityTreeFormatterBase {
public:
std::unique_ptr<base::DictionaryValue> BuildAccessibilityTree(
BrowserAccessibility* root) override;
std::unique_ptr<base::DictionaryValue> BuildAccessibilityTreeForProcess(
base::ProcessId pid) override;
std::unique_ptr<base::DictionaryValue> BuildAccessibilityTreeForWindow(
gfx::AcceleratedWidget widget) override;
std::unique_ptr<base::DictionaryValue> BuildAccessibilityTreeForPattern(
const base::StringPiece& pattern) override;
protected:
void RecursiveBuildAccessibilityTree(const BrowserAccessibility& node,
base::DictionaryValue* dict);
virtual uint32_t ChildCount(const BrowserAccessibility& node) const;
virtual BrowserAccessibility* GetChild(const BrowserAccessibility& node,
uint32_t i) const;
// Add the attributes for each node into the given dict.
virtual void AddProperties(const BrowserAccessibility& node,
base::DictionaryValue* dict) = 0;
};
} // namespace content
#endif // CONTENT_BROWSER_ACCESSIBILITY_ACCESSIBILITY_TREE_FORMATTER_BROWSER_H_
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/accessibility/accessibility_tree_formatter_browser.h"
#include "content/browser/accessibility/accessibility_tree_formatter_base.h"
#import <Cocoa/Cocoa.h>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment