Commit 0250449d authored by Alexander Surkov's avatar Alexander Surkov Committed by Chromium LUCI CQ

a11y inspect reorg: move inspect factory implementation on mac out of

mac tree formatter class

Bug: 1133330
Change-Id: I826a1844302e294d7f1758fd078d467574749d63
AX-Relnotes: n/a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2568988
Commit-Queue: Alexander Surkov <asurkov@igalia.com>
Reviewed-by: default avatarAlex Moshchuk <alexmos@chromium.org>
Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#835181}
parent 7e44dd0a
...@@ -1932,6 +1932,7 @@ source_set("browser") { ...@@ -1932,6 +1932,7 @@ source_set("browser") {
"accessibility/accessibility_event_recorder_mac.mm", "accessibility/accessibility_event_recorder_mac.mm",
"accessibility/accessibility_tools_utils_mac.h", "accessibility/accessibility_tools_utils_mac.h",
"accessibility/accessibility_tools_utils_mac.mm", "accessibility/accessibility_tools_utils_mac.mm",
"accessibility/accessibility_tree_formatter_mac.h",
"accessibility/accessibility_tree_formatter_mac.mm", "accessibility/accessibility_tree_formatter_mac.mm",
"accessibility/accessibility_tree_formatter_utils_mac.h", "accessibility/accessibility_tree_formatter_utils_mac.h",
"accessibility/accessibility_tree_formatter_utils_mac.mm", "accessibility/accessibility_tree_formatter_utils_mac.mm",
......
// Copyright 2020 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_MAC_H_
#define CONTENT_BROWSER_ACCESSIBILITY_ACCESSIBILITY_TREE_FORMATTER_MAC_H_
#include "content/browser/accessibility/browser_accessibility_cocoa.h"
#include "ui/accessibility/platform/inspect/ax_tree_formatter_base.h"
@class BrowserAccessibilityCocoa;
namespace content {
namespace a11y {
class LineIndexer;
class OptionalNSObject;
}
class CONTENT_EXPORT AccessibilityTreeFormatterMac
: public ui::AXTreeFormatterBase {
public:
explicit AccessibilityTreeFormatterMac();
~AccessibilityTreeFormatterMac() override;
base::Value BuildTree(ui::AXPlatformNodeDelegate* root) const override;
base::Value BuildTreeForWindow(gfx::AcceleratedWidget widget) const override;
base::Value BuildTreeForSelector(
const AXTreeSelector& selector) const override;
protected:
void AddDefaultFilters(
std::vector<ui::AXPropertyFilter>* property_filters) override;
private:
base::Value BuildTreeForAXUIElement(AXUIElementRef node) const;
void RecursiveBuildTree(const id node,
const a11y::LineIndexer* line_indexer,
base::Value* dict) const;
void AddProperties(const id node,
const a11y::LineIndexer* line_indexer,
base::Value* dict) const;
// Invokes an attributes by a property node.
a11y::OptionalNSObject InvokeAttributeFor(
const BrowserAccessibilityCocoa* cocoa_node,
const ui::AXPropertyNode& property_node,
const a11y::LineIndexer* line_indexer) const;
base::Value PopulateSize(const BrowserAccessibilityCocoa*) const;
base::Value PopulatePosition(const BrowserAccessibilityCocoa*) const;
base::Value PopulatePoint(NSPoint) const;
base::Value PopulateSize(NSSize) const;
base::Value PopulateRect(NSRect) const;
base::Value PopulateRange(NSRange) const;
base::Value PopulateTextPosition(
BrowserAccessibilityPosition::AXPositionInstance::pointer,
const a11y::LineIndexer*) const;
base::Value PopulateTextMarkerRange(id, const a11y::LineIndexer*) const;
base::Value PopulateObject(id, const a11y::LineIndexer* line_indexer) const;
base::Value PopulateArray(NSArray*,
const a11y::LineIndexer* line_indexer) const;
std::string NodeToLineIndex(id, const a11y::LineIndexer*) const;
std::string ProcessTreeForOutput(
const base::DictionaryValue& node) const override;
std::string FormatAttributeValue(const base::Value& value) const;
};
} // namespace content
#endif // CONTENT_BROWSER_ACCESSIBILITY_ACCESSIBILITY_TREE_FORMATTER_MAC_H_
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "content/browser/accessibility/accessibility_tree_formatter_mac.h"
#include "base/files/file_path.h" #include "base/files/file_path.h"
#include "base/strings/string_number_conversions.h" #include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
...@@ -15,7 +17,6 @@ ...@@ -15,7 +17,6 @@
#include "content/browser/accessibility/browser_accessibility_manager.h" #include "content/browser/accessibility/browser_accessibility_manager.h"
#include "content/public/browser/ax_inspect_factory.h" #include "content/public/browser/ax_inspect_factory.h"
#include "ui/accessibility/platform/inspect/ax_property_node.h" #include "ui/accessibility/platform/inspect/ax_property_node.h"
#include "ui/accessibility/platform/inspect/ax_tree_formatter_base.h"
// This file uses the deprecated NSObject accessibility interface. // This file uses the deprecated NSObject accessibility interface.
// TODO(crbug.com/948844): Migrate to the new NSAccessibility interface. // TODO(crbug.com/948844): Migrate to the new NSAccessibility interface.
...@@ -34,6 +35,7 @@ using content::a11y::IsBrowserAccessibilityCocoa; ...@@ -34,6 +35,7 @@ using content::a11y::IsBrowserAccessibilityCocoa;
using content::a11y::LineIndexer; using content::a11y::LineIndexer;
using content::a11y::OptionalNSObject; using content::a11y::OptionalNSObject;
using std::string; using std::string;
using ui::AXPropertyFilter;
using ui::AXPropertyNode; using ui::AXPropertyNode;
namespace content { namespace content {
...@@ -56,82 +58,6 @@ const char kFailedToParseArgsError[] = "_const_ERROR:FAILED_TO_PARSE_ARGS"; ...@@ -56,82 +58,6 @@ const char kFailedToParseArgsError[] = "_const_ERROR:FAILED_TO_PARSE_ARGS";
} // namespace } // namespace
class AccessibilityTreeFormatterMac : public ui::AXTreeFormatterBase {
public:
explicit AccessibilityTreeFormatterMac();
~AccessibilityTreeFormatterMac() override;
base::Value BuildTree(ui::AXPlatformNodeDelegate* root) const override;
base::Value BuildTreeForWindow(gfx::AcceleratedWidget widget) const override;
base::Value BuildTreeForSelector(
const AXTreeSelector& selector) const override;
protected:
void AddDefaultFilters(
std::vector<AXPropertyFilter>* property_filters) override;
private:
base::Value BuildTreeForAXUIElement(AXUIElementRef node) const;
void RecursiveBuildTree(const id node,
const LineIndexer* line_indexer,
base::Value* dict) const;
void AddProperties(const id node,
const LineIndexer* line_indexer,
base::Value* dict) const;
// Invokes an attributes by a property node.
OptionalNSObject InvokeAttributeFor(
const BrowserAccessibilityCocoa* cocoa_node,
const AXPropertyNode& property_node,
const LineIndexer* line_indexer) const;
base::Value PopulateSize(const BrowserAccessibilityCocoa*) const;
base::Value PopulatePosition(const BrowserAccessibilityCocoa*) const;
base::Value PopulatePoint(NSPoint) const;
base::Value PopulateSize(NSSize) const;
base::Value PopulateRect(NSRect) const;
base::Value PopulateRange(NSRange) const;
base::Value PopulateTextPosition(
BrowserAccessibilityPosition::AXPositionInstance::pointer,
const LineIndexer*) const;
base::Value PopulateTextMarkerRange(id, const LineIndexer*) const;
base::Value PopulateObject(id, const LineIndexer* line_indexer) const;
base::Value PopulateArray(NSArray*, const LineIndexer* line_indexer) const;
std::string NodeToLineIndex(id, const LineIndexer*) const;
std::string ProcessTreeForOutput(
const base::DictionaryValue& node) const override;
std::string FormatAttributeValue(const base::Value& value) const;
};
// TODO(crbug.com/1133330): move implementation into
// content/public/ax_inspect_factory.cc when AccessibilityTreeFormatterMac is
// relocated under ui/accessibility/platform
// static
std::unique_ptr<ui::AXTreeFormatter>
AXInspectFactory::CreatePlatformFormatter() {
return AXInspectFactory::CreateFormatter(kMac);
}
// static
std::unique_ptr<ui::AXTreeFormatter> AXInspectFactory::CreateFormatter(
AXInspectFactory::Type type) {
switch (type) {
case kBlink:
return std::make_unique<AccessibilityTreeFormatterBlink>();
case kMac:
return std::make_unique<AccessibilityTreeFormatterMac>();
default:
NOTREACHED() << "Unsupported formatter type " << type;
}
return nullptr;
}
AccessibilityTreeFormatterMac::AccessibilityTreeFormatterMac() {} AccessibilityTreeFormatterMac::AccessibilityTreeFormatterMac() {}
AccessibilityTreeFormatterMac::~AccessibilityTreeFormatterMac() {} AccessibilityTreeFormatterMac::~AccessibilityTreeFormatterMac() {}
......
...@@ -514,6 +514,7 @@ source_set("browser_sources") { ...@@ -514,6 +514,7 @@ source_set("browser_sources") {
if (is_mac) { if (is_mac) {
sources += [ sources += [
"ax_inspect_factory_mac.mm",
"native_event_processor_mac.h", "native_event_processor_mac.h",
"native_event_processor_observer_mac.h", "native_event_processor_observer_mac.h",
"native_event_processor_observer_mac.mm", "native_event_processor_observer_mac.mm",
......
...@@ -27,6 +27,9 @@ specific_include_rules = { ...@@ -27,6 +27,9 @@ specific_include_rules = {
"+content/common/content_constants_internal.h", "+content/common/content_constants_internal.h",
"-content/browser/loader", "-content/browser/loader",
], ],
".*\.mm": [
"+content/browser",
],
"desktop_capture\.h": [ "desktop_capture\.h": [
# desktop_capture.h creates a DesktopCaptureOptions to share between # desktop_capture.h creates a DesktopCaptureOptions to share between
......
// Copyright 2020 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/public/browser/ax_inspect_factory.h"
#include "content/browser/accessibility/accessibility_tree_formatter_blink.h"
#include "content/browser/accessibility/accessibility_tree_formatter_mac.h"
namespace content {
// static
std::unique_ptr<ui::AXTreeFormatter>
AXInspectFactory::CreatePlatformFormatter() {
return AXInspectFactory::CreateFormatter(kMac);
}
// static
std::unique_ptr<ui::AXTreeFormatter> AXInspectFactory::CreateFormatter(
AXInspectFactory::Type type) {
switch (type) {
case kBlink:
return std::make_unique<AccessibilityTreeFormatterBlink>();
case kMac:
return std::make_unique<AccessibilityTreeFormatterMac>();
default:
NOTREACHED() << "Unsupported formatter type " << type;
}
return nullptr;
}
} // namespace content
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