Commit c98caa38 authored by Lei Zhang's avatar Lei Zhang Committed by Commit Bot

Avoid exposing some non-public a11y classes in content/public.

BrowserAccessibility and BrowserAccessibilityManager are classes in
content/browser that should not be exposed in content/public.

Move AccessibilityTreeFormatter::BuildAccessibilityTree(), which
takes a BrowserAccessibility*, to AccessibilityTreeFormatterBase, which
is in content/browser/accessibility/accessibility_tree_formatter_base.h.
Similarly, move DumpAccessibilityTreeFromManager(), which takes a
BrowserAccessibilityManager*, to AccessibilityTreeFormatterBase.

Fix some lint errors along the way.

Change-Id: I93e974749b41313bd84ce417c535041a29c853ee
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1900568Reviewed-by: default avatarKevin Babbitt <kbabbitt@microsoft.com>
Reviewed-by: default avatarNektarios Paisios <nektar@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Commit-Queue: Kevin Babbitt <kbabbitt@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#713527}
parent df930962
...@@ -40,7 +40,8 @@ AccessibilityTreeFormatter::TestPass AccessibilityTreeFormatter::GetTestPass( ...@@ -40,7 +40,8 @@ AccessibilityTreeFormatter::TestPass AccessibilityTreeFormatter::GetTestPass(
return passes[index]; return passes[index];
} }
base::string16 AccessibilityTreeFormatter::DumpAccessibilityTreeFromManager( // static
base::string16 AccessibilityTreeFormatterBase::DumpAccessibilityTreeFromManager(
BrowserAccessibilityManager* ax_mgr, BrowserAccessibilityManager* ax_mgr,
bool internal, bool internal,
std::vector<PropertyFilter> property_filters) { std::vector<PropertyFilter> property_filters) {
......
...@@ -37,6 +37,35 @@ class CONTENT_EXPORT AccessibilityTreeFormatterBase ...@@ -37,6 +37,35 @@ class CONTENT_EXPORT AccessibilityTreeFormatterBase
AccessibilityTreeFormatterBase(); AccessibilityTreeFormatterBase();
~AccessibilityTreeFormatterBase() override; ~AccessibilityTreeFormatterBase() override;
static base::string16 DumpAccessibilityTreeFromManager(
BrowserAccessibilityManager* ax_mgr,
bool internal,
std::vector<PropertyFilter> property_filters);
// 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": [ ]
// } ]
// }
// Build an accessibility tree for the current Chrome app.
virtual std::unique_ptr<base::DictionaryValue> BuildAccessibilityTree(
BrowserAccessibility* root) = 0;
// AccessibilityTreeFormatter overrides. // AccessibilityTreeFormatter overrides.
void AddDefaultFilters( void AddDefaultFilters(
std::vector<PropertyFilter>* property_filters) override; std::vector<PropertyFilter>* property_filters) override;
......
...@@ -3,35 +3,36 @@ ...@@ -3,35 +3,36 @@
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CONTENT_BROWSER_ACCESSIBILITY_ACCESSIBILITY_TREE_FORMATTER_UIA_WIN_H_ #ifndef CONTENT_BROWSER_ACCESSIBILITY_ACCESSIBILITY_TREE_FORMATTER_UIA_WIN_H_
#define CONTENT_BROWSER_ACCESSIBILITY_ACCESSIBILITY_TREE_FORMATTER_UIA_WIN_H_ #define CONTENT_BROWSER_ACCESSIBILITY_ACCESSIBILITY_TREE_FORMATTER_UIA_WIN_H_
#include "content/browser/accessibility/accessibility_tree_formatter_base.h" #include "content/browser/accessibility/accessibility_tree_formatter_base.h"
#include <ole2.h> #include <ole2.h>
#include <stdint.h> #include <stdint.h>
#include <uiautomation.h> #include <uiautomation.h>
#include <wrl/client.h> #include <wrl/client.h>
#include <memory> #include <memory>
#include <string> #include <string>
#include <vector> #include <vector>
#include "base/win/scoped_variant.h" #include "base/win/scoped_variant.h"
namespace content { namespace content {
class AccessibilityTreeFormatterUia : public AccessibilityTreeFormatterBase { class AccessibilityTreeFormatterUia : public AccessibilityTreeFormatterBase {
public: public:
AccessibilityTreeFormatterUia(); AccessibilityTreeFormatterUia();
~AccessibilityTreeFormatterUia() override; ~AccessibilityTreeFormatterUia() override;
static std::unique_ptr<AccessibilityTreeFormatter> CreateUia(); static std::unique_ptr<AccessibilityTreeFormatter> CreateUia();
void AddDefaultFilters(
std::vector<PropertyFilter>* property_filters) override;
static void SetUpCommandLineForTestPass(base::CommandLine* command_line); static void SetUpCommandLineForTestPass(base::CommandLine* command_line);
// AccessibilityTreeFormatterBase:
void AddDefaultFilters(
std::vector<PropertyFilter>* property_filters) override;
base::FilePath::StringType GetExpectedFileSuffix() override; base::FilePath::StringType GetExpectedFileSuffix() override;
base::FilePath::StringType GetVersionSpecificExpectedFileSuffix() override; base::FilePath::StringType GetVersionSpecificExpectedFileSuffix() override;
std::unique_ptr<base::DictionaryValue> BuildAccessibilityTree( std::unique_ptr<base::DictionaryValue> BuildAccessibilityTree(
BrowserAccessibility* start) override; BrowserAccessibility* start) override;
std::unique_ptr<base::DictionaryValue> BuildAccessibilityTreeForProcess( std::unique_ptr<base::DictionaryValue> BuildAccessibilityTreeForProcess(
...@@ -114,5 +115,7 @@ class AccessibilityTreeFormatterUia : public AccessibilityTreeFormatterBase { ...@@ -114,5 +115,7 @@ class AccessibilityTreeFormatterUia : public AccessibilityTreeFormatterBase {
Microsoft::WRL::ComPtr<IUIAutomationCacheRequest> element_cache_request_; Microsoft::WRL::ComPtr<IUIAutomationCacheRequest> element_cache_request_;
Microsoft::WRL::ComPtr<IUIAutomationCacheRequest> children_cache_request_; Microsoft::WRL::ComPtr<IUIAutomationCacheRequest> children_cache_request_;
}; };
} // namespace content } // namespace content
#endif // CONTENT_BROWSER_ACCESSIBILITY_ACCESSIBILITY_TREE_FORMATTER_UIA_WIN_H_ #endif // CONTENT_BROWSER_ACCESSIBILITY_ACCESSIBILITY_TREE_FORMATTER_UIA_WIN_H_
...@@ -3279,7 +3279,7 @@ base::string16 WebContentsImpl::DumpAccessibilityTree( ...@@ -3279,7 +3279,7 @@ base::string16 WebContentsImpl::DumpAccessibilityTree(
std::vector<AccessibilityTreeFormatter::PropertyFilter> property_filters) { std::vector<AccessibilityTreeFormatter::PropertyFilter> property_filters) {
auto* ax_mgr = GetOrCreateRootBrowserAccessibilityManager(); auto* ax_mgr = GetOrCreateRootBrowserAccessibilityManager();
DCHECK(ax_mgr); DCHECK(ax_mgr);
return AccessibilityTreeFormatter::DumpAccessibilityTreeFromManager( return AccessibilityTreeFormatterBase::DumpAccessibilityTreeFromManager(
ax_mgr, internal, property_filters); ax_mgr, internal, property_filters);
} }
......
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
#include <stdint.h> #include <stdint.h>
#include <memory>
#include <string>
#include <vector> #include <vector>
#include "base/files/file_path.h" #include "base/files/file_path.h"
...@@ -26,7 +28,6 @@ class CommandLine; ...@@ -26,7 +28,6 @@ class CommandLine;
namespace content { namespace content {
class BrowserAccessibility; class BrowserAccessibility;
class BrowserAccessibilityManager;
class AccessibilityTestExpectationsLocator { class AccessibilityTestExpectationsLocator {
public: public:
...@@ -108,30 +109,6 @@ class CONTENT_EXPORT AccessibilityTreeFormatter ...@@ -108,30 +109,6 @@ class CONTENT_EXPORT AccessibilityTreeFormatter
static bool MatchesNodeFilters(const std::vector<NodeFilter>& node_filters, static bool MatchesNodeFilters(const std::vector<NodeFilter>& node_filters,
const base::DictionaryValue& dict); const base::DictionaryValue& dict);
// 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": [ ]
// } ]
// }
// Build an accessibility tree for the current Chrome app.
virtual std::unique_ptr<base::DictionaryValue> BuildAccessibilityTree(
BrowserAccessibility* root) = 0;
// Build an accessibility tree for any process with a window. // Build an accessibility tree for any process with a window.
virtual std::unique_ptr<base::DictionaryValue> virtual std::unique_ptr<base::DictionaryValue>
BuildAccessibilityTreeForProcess(base::ProcessId pid) = 0; BuildAccessibilityTreeForProcess(base::ProcessId pid) = 0;
...@@ -156,11 +133,6 @@ class CONTENT_EXPORT AccessibilityTreeFormatter ...@@ -156,11 +133,6 @@ class CONTENT_EXPORT AccessibilityTreeFormatter
virtual void FormatAccessibilityTree(const base::DictionaryValue& tree_node, virtual void FormatAccessibilityTree(const base::DictionaryValue& tree_node,
base::string16* contents) = 0; base::string16* contents) = 0;
static base::string16 DumpAccessibilityTreeFromManager(
BrowserAccessibilityManager* ax_mgr,
bool internal,
std::vector<PropertyFilter> property_filters);
// Set regular expression filters that apply to each property of every node // Set regular expression filters that apply to each property of every node
// before it's output. // before it's output.
virtual void SetPropertyFilters( virtual void SetPropertyFilters(
...@@ -196,4 +168,4 @@ class CONTENT_EXPORT AccessibilityTreeFormatter ...@@ -196,4 +168,4 @@ class CONTENT_EXPORT AccessibilityTreeFormatter
} // namespace content } // namespace content
#endif // CONTENT_BROWSER_ACCESSIBILITY_ACCESSIBILITY_TREE_FORMATTER_H_ #endif // CONTENT_PUBLIC_BROWSER_ACCESSIBILITY_TREE_FORMATTER_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