[ViewsAX] Remove WebAXPlatformTreeManagerDelegate
This brings us yet another step towards moving BAM-related classes to ui/ to allow them to be able to be used for views as well. This change is mostly a straightforward rename from WebAXPlatformTreeManagerDelegate to ui::AXPlatformTreeManagerDelegate, but also includes the following notable changes: * Removal of debug check in BAM::GetParentManager * Added methods to AXPlatformTreeManagerDelegate: * AccessibilityIsRootFrame * IsChromeNewTabPage If in a Views context, returning false/nullptr will still give us the intended result, so I don't think this should hamper the goal of moving BAM-related code to ui/ Additionally, the following method was also added for android compatibility, where there is no concept of views: * AccessibilityGetWebContentsAccessibility This is method is tied to the RenderFrameHostImpl's ability to get the RenderWidgetHostViewBase, making this difficult to decouple from the RenderWidgetHostViewBase At least for now, this is moved to AXPlatformTreeManagerDelegate. Bug: 40672441 Change-Id: I6284cb56cc52b3ac4996e5a47095beb7ad24881b Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5326217 Auto-Submit: Jacques Newman <janewman@microsoft.com> Reviewed-by: Benjamin Beaudry <benjamin.beaudry@microsoft.com> Reviewed-by: Jacques Newman <janewman@microsoft.com> Reviewed-by: Alex Moshchuk <alexmos@chromium.org> Commit-Queue: Jacques Newman <janewman@microsoft.com> Cr-Commit-Position: refs/heads/main@{#1270465}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
bbf9fedda0
commit
ab0be72a95
chrome/browser
content
browser
BUILD.gn
accessibility
browser_accessibility.ccbrowser_accessibility_cocoa.mmbrowser_accessibility_manager.ccbrowser_accessibility_manager.hbrowser_accessibility_manager_android.ccbrowser_accessibility_manager_android.hbrowser_accessibility_manager_auralinux.ccbrowser_accessibility_manager_auralinux.hbrowser_accessibility_manager_fuchsia.ccbrowser_accessibility_manager_fuchsia.hbrowser_accessibility_manager_mac.hbrowser_accessibility_manager_mac.mmbrowser_accessibility_manager_win.ccbrowser_accessibility_manager_win.htest_browser_accessibility_delegate.cctest_browser_accessibility_delegate.hweb_ax_platform_tree_manager_delegate.h
renderer_host
public
docs/accessibility
ui/accessibility/platform
@ -8218,3 +8218,13 @@ std::unique_ptr<content::DipsDelegate>
|
||||
ChromeContentBrowserClient::CreateDipsDelegate() {
|
||||
return std::make_unique<ChromeDipsDelegate>();
|
||||
}
|
||||
|
||||
bool ChromeContentBrowserClient::ShouldSuppressAXLoadComplete(
|
||||
RenderFrameHost* rfh) {
|
||||
CHECK(rfh);
|
||||
WebContents* web_contents = WebContents::FromRenderFrameHost(rfh);
|
||||
|
||||
const GURL& url = web_contents->GetVisibleURL();
|
||||
return url == GURL(chrome::kChromeUINewTabURL) ||
|
||||
url == GURL(chrome::kChromeUINewTabPageURL);
|
||||
}
|
||||
|
@ -1012,6 +1012,8 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient {
|
||||
|
||||
std::unique_ptr<content::DipsDelegate> CreateDipsDelegate() override;
|
||||
|
||||
bool ShouldSuppressAXLoadComplete(content::RenderFrameHost* rfh) override;
|
||||
|
||||
protected:
|
||||
static bool HandleWebUI(GURL* url, content::BrowserContext* browser_context);
|
||||
static bool HandleWebUIReverse(GURL* url,
|
||||
|
@ -379,7 +379,6 @@ source_set("browser") {
|
||||
"accessibility/render_accessibility_host.h",
|
||||
"accessibility/scoped_mode_collection.cc",
|
||||
"accessibility/scoped_mode_collection.h",
|
||||
"accessibility/web_ax_platform_tree_manager_delegate.h",
|
||||
"accessibility/web_contents_accessibility.h",
|
||||
"after_startup_task_utils.cc",
|
||||
"after_startup_task_utils.h",
|
||||
|
@ -17,7 +17,6 @@
|
||||
#include "base/strings/utf_string_conversions.h"
|
||||
#include "content/browser/accessibility/browser_accessibility_manager.h"
|
||||
#include "content/browser/accessibility/browser_accessibility_state_impl.h"
|
||||
#include "content/browser/accessibility/web_ax_platform_tree_manager_delegate.h"
|
||||
#include "content/public/common/content_client.h"
|
||||
#include "third_party/blink/public/strings/grit/blink_accessibility_strings.h"
|
||||
#include "ui/accessibility/ax_enums.mojom.h"
|
||||
@ -25,6 +24,7 @@
|
||||
#include "ui/accessibility/ax_role_properties.h"
|
||||
#include "ui/accessibility/ax_selection.h"
|
||||
#include "ui/accessibility/ax_tree_id.h"
|
||||
#include "ui/accessibility/platform/ax_platform_tree_manager_delegate.h"
|
||||
#include "ui/accessibility/platform/ax_unique_id.h"
|
||||
#include "ui/base/buildflags.h"
|
||||
#include "ui/gfx/geometry/rect_conversions.h"
|
||||
@ -904,7 +904,7 @@ gfx::NativeViewAccessible BrowserAccessibility::GetParent() const {
|
||||
if (parent)
|
||||
return parent->GetNativeViewAccessible();
|
||||
|
||||
WebAXPlatformTreeManagerDelegate* delegate =
|
||||
ui::AXPlatformTreeManagerDelegate* delegate =
|
||||
manager_->GetDelegateFromRootManager();
|
||||
if (!delegate)
|
||||
return nullptr;
|
||||
@ -1143,7 +1143,7 @@ std::optional<size_t> BrowserAccessibility::GetIndexInParent() const {
|
||||
|
||||
gfx::AcceleratedWidget
|
||||
BrowserAccessibility::GetTargetForNativeAccessibilityEvent() {
|
||||
WebAXPlatformTreeManagerDelegate* root_delegate =
|
||||
ui::AXPlatformTreeManagerDelegate* root_delegate =
|
||||
manager()->GetDelegateFromRootManager();
|
||||
if (!root_delegate)
|
||||
return gfx::kNullAcceleratedWidget;
|
||||
|
@ -29,7 +29,6 @@
|
||||
#include "content/browser/accessibility/browser_accessibility_manager_mac.h"
|
||||
#include "content/browser/accessibility/browser_accessibility_state_impl.h"
|
||||
#include "content/browser/accessibility/one_shot_accessibility_tree_search.h"
|
||||
#include "content/browser/accessibility/web_ax_platform_tree_manager_delegate.h"
|
||||
#include "content/public/common/content_client.h"
|
||||
#include "third_party/blink/public/strings/grit/blink_strings.h"
|
||||
#include "third_party/skia/include/core/SkColor.h"
|
||||
@ -40,6 +39,7 @@
|
||||
#include "ui/accessibility/ax_selection.h"
|
||||
#include "ui/accessibility/platform/ax_platform_node.h"
|
||||
#import "ui/accessibility/platform/ax_platform_node_mac.h"
|
||||
#include "ui/accessibility/platform/ax_platform_tree_manager_delegate.h"
|
||||
#include "ui/accessibility/platform/ax_utils_mac.h"
|
||||
#include "ui/gfx/mac/coordinate_conversion.h"
|
||||
#include "ui/strings/grit/ax_strings.h"
|
||||
@ -53,9 +53,9 @@ using content::BrowserAccessibilityManager;
|
||||
using content::BrowserAccessibilityManagerMac;
|
||||
using content::ContentClient;
|
||||
using content::OneShotAccessibilityTreeSearch;
|
||||
using content::WebAXPlatformTreeManagerDelegate;
|
||||
using ui::AXActionHandlerRegistry;
|
||||
using ui::AXNodeData;
|
||||
using ui::AXPlatformTreeManagerDelegate;
|
||||
using ui::AXPositionToAXTextMarker;
|
||||
using ui::AXRangeToAXTextMarkerRange;
|
||||
using ui::AXTextMarkerRangeToAXRange;
|
||||
@ -1106,7 +1106,7 @@ bool content::IsNSRange(id value) {
|
||||
|
||||
// Get the delegate for the topmost BrowserAccessibilityManager, because
|
||||
// that's the only one that can convert points to their origin in the screen.
|
||||
WebAXPlatformTreeManagerDelegate* delegate =
|
||||
ui::AXPlatformTreeManagerDelegate* delegate =
|
||||
_owner->manager()->GetDelegateFromRootManager();
|
||||
if (delegate) {
|
||||
return gfx::ScreenRectToNSRect(
|
||||
|
@ -108,7 +108,7 @@ BrowserAccessibilityFindInPageInfo::BrowserAccessibilityFindInPageInfo()
|
||||
// static
|
||||
BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
|
||||
const ui::AXTreeUpdate& initial_tree,
|
||||
WebAXPlatformTreeManagerDelegate* delegate) {
|
||||
ui::AXPlatformTreeManagerDelegate* delegate) {
|
||||
BrowserAccessibilityManager* manager =
|
||||
new BrowserAccessibilityManager(delegate);
|
||||
manager->Initialize(initial_tree);
|
||||
@ -117,7 +117,7 @@ BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
|
||||
|
||||
// static
|
||||
BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
|
||||
WebAXPlatformTreeManagerDelegate* delegate) {
|
||||
ui::AXPlatformTreeManagerDelegate* delegate) {
|
||||
BrowserAccessibilityManager* manager =
|
||||
new BrowserAccessibilityManager(delegate);
|
||||
manager->Initialize(BrowserAccessibilityManager::GetEmptyDocument());
|
||||
@ -141,7 +141,7 @@ BrowserAccessibilityManager* BrowserAccessibilityManager::FromID(
|
||||
}
|
||||
|
||||
BrowserAccessibilityManager::BrowserAccessibilityManager(
|
||||
WebAXPlatformTreeManagerDelegate* delegate)
|
||||
ui::AXPlatformTreeManagerDelegate* delegate)
|
||||
: AXPlatformTreeManager(std::make_unique<ui::AXSerializableTree>()),
|
||||
delegate_(delegate),
|
||||
user_is_navigating_away_(false),
|
||||
@ -758,7 +758,7 @@ std::vector<BrowserAccessibility*> BrowserAccessibilityManager::GetAriaControls(
|
||||
}
|
||||
|
||||
bool BrowserAccessibilityManager::NativeViewHasFocus() {
|
||||
WebAXPlatformTreeManagerDelegate* delegate = GetDelegateFromRootManager();
|
||||
ui::AXPlatformTreeManagerDelegate* delegate = GetDelegateFromRootManager();
|
||||
return delegate && delegate->AccessibilityViewHasFocus();
|
||||
}
|
||||
|
||||
@ -1148,7 +1148,7 @@ void BrowserAccessibilityManager::HitTest(const gfx::Point& frame_point,
|
||||
|
||||
gfx::Rect BrowserAccessibilityManager::GetViewBoundsInScreenCoordinates()
|
||||
const {
|
||||
WebAXPlatformTreeManagerDelegate* delegate = GetDelegateFromRootManager();
|
||||
ui::AXPlatformTreeManagerDelegate* delegate = GetDelegateFromRootManager();
|
||||
if (delegate) {
|
||||
gfx::Rect bounds = delegate->AccessibilityGetViewBounds();
|
||||
|
||||
@ -1633,37 +1633,10 @@ ui::AXTreeManager* BrowserAccessibilityManager::GetParentManager() const {
|
||||
|
||||
DCHECK(!IsRootFrameManager());
|
||||
|
||||
#if DCHECK_IS_ON()
|
||||
// There is a chance that the parent manager is not a
|
||||
// `BrowserAccessibilityManager` since the parent of the
|
||||
// manager that is on the root frame will be a
|
||||
// `ViewsAXTreeManager`. The manager could also ownn an `AXTree` with
|
||||
// generated content, which is currently not a platform tree manager. In those
|
||||
// case, we should return nullptr since doing the cast will fail and result in
|
||||
// undefined behavior.
|
||||
if (IsRootFrameManager() || !IsPlatformTreeManager()) {
|
||||
return parent;
|
||||
}
|
||||
BrowserAccessibilityManager* browser_accessibility_manager_parent =
|
||||
static_cast<BrowserAccessibilityManager*>(parent);
|
||||
DCHECK(browser_accessibility_manager_parent ||
|
||||
!connected_to_parent_tree_node_);
|
||||
// delegate_ is null during unit tests.
|
||||
if (parent && delegate_ && delegate_->AccessibilityRenderFrameHost()) {
|
||||
DCHECK(
|
||||
delegate_->AccessibilityRenderFrameHost()
|
||||
->GetParentOrOuterDocumentOrEmbedderExcludingProspectiveOwners() ==
|
||||
browser_accessibility_manager_parent->delegate()
|
||||
->AccessibilityRenderFrameHost())
|
||||
<< "RenderFrameHost parent should match "
|
||||
"BrowserAccessibilityManager's "
|
||||
"parent's RenderFrameHost.";
|
||||
}
|
||||
#endif
|
||||
return parent;
|
||||
}
|
||||
|
||||
WebAXPlatformTreeManagerDelegate*
|
||||
ui::AXPlatformTreeManagerDelegate*
|
||||
BrowserAccessibilityManager::GetDelegateFromRootManager() const {
|
||||
BrowserAccessibilityManager* root_manager = GetManagerForRootFrame();
|
||||
if (root_manager)
|
||||
@ -1899,7 +1872,7 @@ bool BrowserAccessibilityManager::ShouldFireEventForNode(
|
||||
// If the root delegate isn't the main-frame, this may be a new frame that
|
||||
// hasn't yet been swapped in or added to the frame tree. Suppress firing
|
||||
// events until then.
|
||||
WebAXPlatformTreeManagerDelegate* root_delegate =
|
||||
ui::AXPlatformTreeManagerDelegate* root_delegate =
|
||||
GetDelegateFromRootManager();
|
||||
if (!root_delegate)
|
||||
return false;
|
||||
|
@ -19,7 +19,6 @@
|
||||
#include "build/build_config.h"
|
||||
#include "cc/base/rtree.h"
|
||||
#include "content/browser/accessibility/browser_accessibility.h"
|
||||
#include "content/browser/accessibility/web_ax_platform_tree_manager_delegate.h"
|
||||
#include "content/common/content_export.h"
|
||||
#include "content/public/browser/ax_event_notification_details.h"
|
||||
#include "third_party/blink/public/mojom/render_accessibility.mojom-forward.h"
|
||||
@ -38,6 +37,7 @@
|
||||
#include "ui/accessibility/ax_tree_update.h"
|
||||
#include "ui/accessibility/platform/ax_platform_node.h"
|
||||
#include "ui/accessibility/platform/ax_platform_tree_manager.h"
|
||||
#include "ui/accessibility/platform/ax_platform_tree_manager_delegate.h"
|
||||
#include "ui/base/buildflags.h"
|
||||
#include "ui/gfx/native_widget_types.h"
|
||||
|
||||
@ -107,9 +107,9 @@ class CONTENT_EXPORT BrowserAccessibilityManager
|
||||
// Creates the platform-specific BrowserAccessibilityManager.
|
||||
static BrowserAccessibilityManager* Create(
|
||||
const ui::AXTreeUpdate& initial_tree,
|
||||
WebAXPlatformTreeManagerDelegate* delegate);
|
||||
ui::AXPlatformTreeManagerDelegate* delegate);
|
||||
static BrowserAccessibilityManager* Create(
|
||||
WebAXPlatformTreeManagerDelegate* delegate);
|
||||
ui::AXPlatformTreeManagerDelegate* delegate);
|
||||
|
||||
static BrowserAccessibilityManager* FromID(ui::AXTreeID ax_tree_id);
|
||||
|
||||
@ -411,7 +411,7 @@ class CONTENT_EXPORT BrowserAccessibilityManager
|
||||
ui::AXPlatformNode* GetPlatformNodeFromTree(const ui::AXNode&) const override;
|
||||
ui::AXPlatformNodeDelegate* RootDelegate() const override;
|
||||
|
||||
WebAXPlatformTreeManagerDelegate* delegate() const { return delegate_; }
|
||||
ui::AXPlatformTreeManagerDelegate* delegate() const { return delegate_; }
|
||||
|
||||
// If this BrowserAccessibilityManager is a child frame or guest frame,
|
||||
// returns the BrowserAccessibilityManager from the root frame. The root frame
|
||||
@ -422,9 +422,10 @@ class CONTENT_EXPORT BrowserAccessibilityManager
|
||||
// indicate that we don't have access to the manager of the root frame yet.
|
||||
BrowserAccessibilityManager* GetManagerForRootFrame() const;
|
||||
|
||||
// Returns the `WebAXPlatformTreeManagerDelegate` from `GetRootManager` above,
|
||||
// or returns nullptr in case we don't have access to the root manager yet.
|
||||
WebAXPlatformTreeManagerDelegate* GetDelegateFromRootManager() const;
|
||||
// Returns the `ui::AXPlatformTreeManagerDelegate` from `GetRootManager`
|
||||
// above, or returns nullptr in case we don't have access to the root manager
|
||||
// yet.
|
||||
ui::AXPlatformTreeManagerDelegate* GetDelegateFromRootManager() const;
|
||||
|
||||
// Returns whether this is the root frame.
|
||||
bool IsRootFrameManager() const;
|
||||
@ -490,7 +491,7 @@ class CONTENT_EXPORT BrowserAccessibilityManager
|
||||
TestShouldFireEventForNode);
|
||||
|
||||
explicit BrowserAccessibilityManager(
|
||||
WebAXPlatformTreeManagerDelegate* delegate);
|
||||
ui::AXPlatformTreeManagerDelegate* delegate);
|
||||
|
||||
// Send platform-specific notifications to each of these objects that
|
||||
// their location has changed. This is called by OnLocationChanges
|
||||
@ -510,7 +511,7 @@ class CONTENT_EXPORT BrowserAccessibilityManager
|
||||
|
||||
// An object that can retrieve information or perform actions on our behalf,
|
||||
// based on which layer this code is running on, Web vs. Views.
|
||||
raw_ptr<WebAXPlatformTreeManagerDelegate> delegate_;
|
||||
raw_ptr<ui::AXPlatformTreeManagerDelegate> delegate_;
|
||||
|
||||
// A mapping from a node id to its wrapper of type BrowserAccessibility.
|
||||
// This is different from the map in AXTree, which does not contain extra mac
|
||||
|
@ -9,19 +9,19 @@
|
||||
#include "base/containers/contains.h"
|
||||
#include "base/i18n/char_iterator.h"
|
||||
#include "content/browser/accessibility/browser_accessibility_android.h"
|
||||
#include "content/browser/accessibility/web_ax_platform_tree_manager_delegate.h"
|
||||
#include "content/browser/accessibility/web_contents_accessibility_android.h"
|
||||
#include "third_party/blink/public/mojom/render_accessibility.mojom.h"
|
||||
#include "ui/accessibility/ax_event_generator.h"
|
||||
#include "ui/accessibility/ax_role_properties.h"
|
||||
#include "ui/accessibility/ax_selection.h"
|
||||
#include "ui/accessibility/platform/ax_platform_tree_manager_delegate.h"
|
||||
|
||||
namespace content {
|
||||
|
||||
// static
|
||||
BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
|
||||
const ui::AXTreeUpdate& initial_tree,
|
||||
WebAXPlatformTreeManagerDelegate* delegate) {
|
||||
ui::AXPlatformTreeManagerDelegate* delegate) {
|
||||
if (!delegate)
|
||||
return new BrowserAccessibilityManagerAndroid(initial_tree, nullptr,
|
||||
nullptr);
|
||||
@ -37,7 +37,7 @@ BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
|
||||
|
||||
// static
|
||||
BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
|
||||
WebAXPlatformTreeManagerDelegate* delegate) {
|
||||
ui::AXPlatformTreeManagerDelegate* delegate) {
|
||||
return BrowserAccessibilityManager::Create(
|
||||
BrowserAccessibilityManagerAndroid::GetEmptyDocument(), delegate);
|
||||
}
|
||||
@ -50,7 +50,7 @@ BrowserAccessibilityManager::ToBrowserAccessibilityManagerAndroid() {
|
||||
BrowserAccessibilityManagerAndroid::BrowserAccessibilityManagerAndroid(
|
||||
const ui::AXTreeUpdate& initial_tree,
|
||||
base::WeakPtr<WebContentsAccessibilityAndroid> web_contents_accessibility,
|
||||
WebAXPlatformTreeManagerDelegate* delegate)
|
||||
ui::AXPlatformTreeManagerDelegate* delegate)
|
||||
: BrowserAccessibilityManager(delegate),
|
||||
web_contents_accessibility_(std::move(web_contents_accessibility)),
|
||||
prune_tree_for_screen_reader_(true) {
|
||||
|
@ -15,12 +15,12 @@
|
||||
namespace ui {
|
||||
|
||||
class MotionEventAndroid;
|
||||
class AXPlatformTreeManagerDelegate;
|
||||
|
||||
} // namespace ui
|
||||
|
||||
namespace content {
|
||||
|
||||
class WebAXPlatformTreeManagerDelegate;
|
||||
|
||||
// A Java counterpart will be generated for this enum.
|
||||
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.content.browser.accessibility
|
||||
@ -49,7 +49,7 @@ class CONTENT_EXPORT BrowserAccessibilityManagerAndroid
|
||||
BrowserAccessibilityManagerAndroid(
|
||||
const ui::AXTreeUpdate& initial_tree,
|
||||
base::WeakPtr<WebContentsAccessibilityAndroid> web_contents_accessibility,
|
||||
WebAXPlatformTreeManagerDelegate* delegate);
|
||||
ui::AXPlatformTreeManagerDelegate* delegate);
|
||||
|
||||
BrowserAccessibilityManagerAndroid(
|
||||
const BrowserAccessibilityManagerAndroid&) = delete;
|
||||
|
@ -10,22 +10,22 @@
|
||||
#include <vector>
|
||||
|
||||
#include "content/browser/accessibility/browser_accessibility_auralinux.h"
|
||||
#include "content/browser/accessibility/web_ax_platform_tree_manager_delegate.h"
|
||||
#include "ui/accessibility/ax_selection.h"
|
||||
#include "ui/accessibility/platform/ax_platform_node_auralinux.h"
|
||||
#include "ui/accessibility/platform/ax_platform_tree_manager_delegate.h"
|
||||
|
||||
namespace content {
|
||||
|
||||
// static
|
||||
BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
|
||||
const ui::AXTreeUpdate& initial_tree,
|
||||
WebAXPlatformTreeManagerDelegate* delegate) {
|
||||
ui::AXPlatformTreeManagerDelegate* delegate) {
|
||||
return new BrowserAccessibilityManagerAuraLinux(initial_tree, delegate);
|
||||
}
|
||||
|
||||
// static
|
||||
BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
|
||||
WebAXPlatformTreeManagerDelegate* delegate) {
|
||||
ui::AXPlatformTreeManagerDelegate* delegate) {
|
||||
return new BrowserAccessibilityManagerAuraLinux(
|
||||
BrowserAccessibilityManagerAuraLinux::GetEmptyDocument(), delegate);
|
||||
}
|
||||
@ -37,7 +37,7 @@ BrowserAccessibilityManager::ToBrowserAccessibilityManagerAuraLinux() {
|
||||
|
||||
BrowserAccessibilityManagerAuraLinux::BrowserAccessibilityManagerAuraLinux(
|
||||
const ui::AXTreeUpdate& initial_tree,
|
||||
WebAXPlatformTreeManagerDelegate* delegate)
|
||||
ui::AXPlatformTreeManagerDelegate* delegate)
|
||||
: BrowserAccessibilityManager(delegate) {
|
||||
Initialize(initial_tree);
|
||||
}
|
||||
|
@ -12,10 +12,13 @@
|
||||
#include "content/common/content_export.h"
|
||||
#include "ui/accessibility/ax_node_id_forward.h"
|
||||
|
||||
namespace ui {
|
||||
class AXPlatformTreeManagerDelegate;
|
||||
}
|
||||
|
||||
namespace content {
|
||||
|
||||
class BrowserAccessibilityAuraLinux;
|
||||
class WebAXPlatformTreeManagerDelegate;
|
||||
|
||||
// Manages a tree of BrowserAccessibilityAuraLinux objects.
|
||||
class CONTENT_EXPORT BrowserAccessibilityManagerAuraLinux
|
||||
@ -23,7 +26,7 @@ class CONTENT_EXPORT BrowserAccessibilityManagerAuraLinux
|
||||
public:
|
||||
BrowserAccessibilityManagerAuraLinux(
|
||||
const ui::AXTreeUpdate& initial_tree,
|
||||
WebAXPlatformTreeManagerDelegate* delegate);
|
||||
ui::AXPlatformTreeManagerDelegate* delegate);
|
||||
|
||||
BrowserAccessibilityManagerAuraLinux(
|
||||
const BrowserAccessibilityManagerAuraLinux&) = delete;
|
||||
|
@ -8,8 +8,8 @@
|
||||
|
||||
#include "base/fuchsia/fuchsia_logging.h"
|
||||
#include "content/browser/accessibility/browser_accessibility_fuchsia.h"
|
||||
#include "content/browser/accessibility/web_ax_platform_tree_manager_delegate.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
#include "ui/accessibility/platform/ax_platform_tree_manager_delegate.h"
|
||||
#include "ui/accessibility/platform/fuchsia/accessibility_bridge_fuchsia_registry.h"
|
||||
|
||||
namespace content {
|
||||
@ -17,20 +17,20 @@ namespace content {
|
||||
// static
|
||||
BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
|
||||
const ui::AXTreeUpdate& initial_tree,
|
||||
WebAXPlatformTreeManagerDelegate* delegate) {
|
||||
ui::AXPlatformTreeManagerDelegate* delegate) {
|
||||
return new BrowserAccessibilityManagerFuchsia(initial_tree, delegate);
|
||||
}
|
||||
|
||||
// static
|
||||
BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
|
||||
WebAXPlatformTreeManagerDelegate* delegate) {
|
||||
ui::AXPlatformTreeManagerDelegate* delegate) {
|
||||
return new BrowserAccessibilityManagerFuchsia(
|
||||
BrowserAccessibilityManagerFuchsia::GetEmptyDocument(), delegate);
|
||||
}
|
||||
|
||||
BrowserAccessibilityManagerFuchsia::BrowserAccessibilityManagerFuchsia(
|
||||
const ui::AXTreeUpdate& initial_tree,
|
||||
WebAXPlatformTreeManagerDelegate* delegate)
|
||||
ui::AXPlatformTreeManagerDelegate* delegate)
|
||||
: BrowserAccessibilityManager(delegate) {
|
||||
Initialize(initial_tree);
|
||||
|
||||
|
@ -11,10 +11,13 @@
|
||||
#include "content/common/content_export.h"
|
||||
#include "ui/accessibility/platform/fuchsia/accessibility_bridge_fuchsia.h"
|
||||
|
||||
namespace ui {
|
||||
class AXPlatformTreeManagerDelegate;
|
||||
}
|
||||
|
||||
namespace content {
|
||||
|
||||
class BrowserAccessibilityFuchsia;
|
||||
class WebAXPlatformTreeManagerDelegate;
|
||||
|
||||
// Manages a tree of BrowserAccessibilityFuchsia objects.
|
||||
class CONTENT_EXPORT BrowserAccessibilityManagerFuchsia
|
||||
@ -22,7 +25,7 @@ class CONTENT_EXPORT BrowserAccessibilityManagerFuchsia
|
||||
public:
|
||||
BrowserAccessibilityManagerFuchsia(
|
||||
const ui::AXTreeUpdate& initial_tree,
|
||||
WebAXPlatformTreeManagerDelegate* delegate);
|
||||
ui::AXPlatformTreeManagerDelegate* delegate);
|
||||
~BrowserAccessibilityManagerFuchsia() override;
|
||||
|
||||
BrowserAccessibilityManagerFuchsia(
|
||||
|
@ -17,16 +17,19 @@
|
||||
#include "content/common/content_export.h"
|
||||
#include "content/public/browser/ax_event_notification_details.h"
|
||||
|
||||
namespace ui {
|
||||
class AXPlatformTreeManagerDelegate;
|
||||
}
|
||||
|
||||
namespace content {
|
||||
|
||||
class BrowserAccessibilityCocoaBrowserTest;
|
||||
class WebAXPlatformTreeManagerDelegate;
|
||||
|
||||
class CONTENT_EXPORT BrowserAccessibilityManagerMac
|
||||
: public BrowserAccessibilityManager {
|
||||
public:
|
||||
BrowserAccessibilityManagerMac(const ui::AXTreeUpdate& initial_tree,
|
||||
WebAXPlatformTreeManagerDelegate* delegate);
|
||||
ui::AXPlatformTreeManagerDelegate* delegate);
|
||||
|
||||
BrowserAccessibilityManagerMac(const BrowserAccessibilityManagerMac&) =
|
||||
delete;
|
||||
@ -72,9 +75,6 @@ class CONTENT_EXPORT BrowserAccessibilityManagerMac
|
||||
|
||||
bool IsInGeneratedEventBatch(ui::AXEventGenerator::Event event_type) const;
|
||||
|
||||
// Returns whether this page is a new tab page on Chrome.
|
||||
bool IsChromeNewTabPage();
|
||||
|
||||
bool ShouldFireLoadCompleteNotification();
|
||||
|
||||
// Keeps track of any edits that have been made by the user during a tree
|
||||
|
@ -13,13 +13,13 @@
|
||||
#include "base/time/time.h"
|
||||
#import "content/browser/accessibility/browser_accessibility_cocoa.h"
|
||||
#import "content/browser/accessibility/browser_accessibility_mac.h"
|
||||
#include "content/browser/accessibility/web_ax_platform_tree_manager_delegate.h"
|
||||
#include "content/browser/renderer_host/render_frame_host_impl.h"
|
||||
#include "content/public/browser/browser_task_traits.h"
|
||||
#include "content/public/browser/browser_thread.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
#include "ui/accelerated_widget_mac/accelerated_widget_mac.h"
|
||||
#include "ui/accessibility/ax_role_properties.h"
|
||||
#include "ui/accessibility/platform/ax_platform_tree_manager_delegate.h"
|
||||
#include "ui/accessibility/platform/ax_private_webkit_constants_mac.h"
|
||||
#include "ui/base/cocoa/remote_accessibility_api.h"
|
||||
|
||||
@ -35,13 +35,13 @@ namespace content {
|
||||
// static
|
||||
BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
|
||||
const ui::AXTreeUpdate& initial_tree,
|
||||
WebAXPlatformTreeManagerDelegate* delegate) {
|
||||
ui::AXPlatformTreeManagerDelegate* delegate) {
|
||||
return new BrowserAccessibilityManagerMac(initial_tree, delegate);
|
||||
}
|
||||
|
||||
// static
|
||||
BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
|
||||
WebAXPlatformTreeManagerDelegate* delegate) {
|
||||
ui::AXPlatformTreeManagerDelegate* delegate) {
|
||||
return new BrowserAccessibilityManagerMac(
|
||||
BrowserAccessibilityManagerMac::GetEmptyDocument(), delegate);
|
||||
}
|
||||
@ -53,7 +53,7 @@ BrowserAccessibilityManager::ToBrowserAccessibilityManagerMac() {
|
||||
|
||||
BrowserAccessibilityManagerMac::BrowserAccessibilityManagerMac(
|
||||
const ui::AXTreeUpdate& initial_tree,
|
||||
WebAXPlatformTreeManagerDelegate* delegate)
|
||||
ui::AXPlatformTreeManagerDelegate* delegate)
|
||||
: BrowserAccessibilityManager(delegate) {
|
||||
Initialize(initial_tree);
|
||||
}
|
||||
@ -584,19 +584,6 @@ id BrowserAccessibilityManagerMac::GetWindow() {
|
||||
return delegate()->AccessibilityGetNativeViewAccessibleForWindow();
|
||||
}
|
||||
|
||||
bool BrowserAccessibilityManagerMac::IsChromeNewTabPage() {
|
||||
if (!delegate() || !IsRootFrameManager())
|
||||
return false;
|
||||
content::WebContents* web_contents = WebContents::FromRenderFrameHost(
|
||||
delegate()->AccessibilityRenderFrameHost());
|
||||
if (!web_contents)
|
||||
return false;
|
||||
const GURL& url = web_contents->GetVisibleURL();
|
||||
return url == GURL("chrome://newtab/") ||
|
||||
url == GURL("chrome://new-tab-page") ||
|
||||
url == GURL("chrome-search://local-ntp/local-ntp.html");
|
||||
}
|
||||
|
||||
bool BrowserAccessibilityManagerMac::ShouldFireLoadCompleteNotification() {
|
||||
// If it's not the top-level document, we shouldn't fire AXLoadComplete.
|
||||
if (!IsRootFrameManager()) {
|
||||
@ -616,7 +603,7 @@ bool BrowserAccessibilityManagerMac::ShouldFireLoadCompleteNotification() {
|
||||
// AXLoadComplete event. On Chrome's new tab page, focus should stay
|
||||
// in the omnibox, so we purposefully do not fire the AXLoadComplete
|
||||
// event in this case.
|
||||
if (IsChromeNewTabPage()) {
|
||||
if (delegate()->ShouldSuppressAXLoadComplete()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,6 @@
|
||||
#include "base/win/windows_version.h"
|
||||
#include "content/browser/accessibility/browser_accessibility_state_impl.h"
|
||||
#include "content/browser/accessibility/browser_accessibility_win.h"
|
||||
#include "content/browser/accessibility/web_ax_platform_tree_manager_delegate.h"
|
||||
#include "content/browser/renderer_host/legacy_render_widget_host_win.h"
|
||||
#include "content/public/common/content_switches.h"
|
||||
#include "ui/accessibility/accessibility_features.h"
|
||||
@ -26,6 +25,7 @@
|
||||
#include "ui/accessibility/platform/ax_fragment_root_win.h"
|
||||
#include "ui/accessibility/platform/ax_platform_node_delegate_utils_win.h"
|
||||
#include "ui/accessibility/platform/ax_platform_node_textprovider_win.h"
|
||||
#include "ui/accessibility/platform/ax_platform_tree_manager_delegate.h"
|
||||
#include "ui/accessibility/platform/uia_registrar_win.h"
|
||||
#include "ui/base/win/atl_module.h"
|
||||
|
||||
@ -61,13 +61,13 @@ BrowserAccessibility* GetUiaTextPatternProvider(BrowserAccessibility& node) {
|
||||
// static
|
||||
BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
|
||||
const ui::AXTreeUpdate& initial_tree,
|
||||
WebAXPlatformTreeManagerDelegate* delegate) {
|
||||
ui::AXPlatformTreeManagerDelegate* delegate) {
|
||||
return new BrowserAccessibilityManagerWin(initial_tree, delegate);
|
||||
}
|
||||
|
||||
// static
|
||||
BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
|
||||
WebAXPlatformTreeManagerDelegate* delegate) {
|
||||
ui::AXPlatformTreeManagerDelegate* delegate) {
|
||||
return new BrowserAccessibilityManagerWin(
|
||||
BrowserAccessibilityManagerWin::GetEmptyDocument(), delegate);
|
||||
}
|
||||
@ -79,7 +79,7 @@ BrowserAccessibilityManager::ToBrowserAccessibilityManagerWin() {
|
||||
|
||||
BrowserAccessibilityManagerWin::BrowserAccessibilityManagerWin(
|
||||
const ui::AXTreeUpdate& initial_tree,
|
||||
WebAXPlatformTreeManagerDelegate* delegate)
|
||||
ui::AXPlatformTreeManagerDelegate* delegate)
|
||||
: BrowserAccessibilityManager(delegate) {
|
||||
ui::win::CreateATLModuleIfNeeded();
|
||||
Initialize(initial_tree);
|
||||
@ -117,7 +117,7 @@ ui::AXTreeUpdate BrowserAccessibilityManagerWin::GetEmptyDocument() {
|
||||
}
|
||||
|
||||
HWND BrowserAccessibilityManagerWin::GetParentHWND() const {
|
||||
WebAXPlatformTreeManagerDelegate* delegate = GetDelegateFromRootManager();
|
||||
ui::AXPlatformTreeManagerDelegate* delegate = GetDelegateFromRootManager();
|
||||
if (!delegate)
|
||||
return NULL;
|
||||
return delegate->AccessibilityGetAcceleratedWidget();
|
||||
@ -947,7 +947,7 @@ void BrowserAccessibilityManagerWin::EnqueueSelectionChangedEvent(
|
||||
|
||||
gfx::Rect BrowserAccessibilityManagerWin::GetViewBoundsInScreenCoordinates()
|
||||
const {
|
||||
WebAXPlatformTreeManagerDelegate* delegate = GetDelegateFromRootManager();
|
||||
ui::AXPlatformTreeManagerDelegate* delegate = GetDelegateFromRootManager();
|
||||
if (!delegate) {
|
||||
return gfx::Rect();
|
||||
}
|
||||
|
@ -18,10 +18,13 @@
|
||||
#include "ui/accessibility/platform/ax_platform_node_win.h"
|
||||
#include "ui/display/win/screen_win.h"
|
||||
|
||||
namespace ui {
|
||||
class AXPlatformTreeManagerDelegate;
|
||||
}
|
||||
|
||||
namespace content {
|
||||
|
||||
class BrowserAccessibilityWin;
|
||||
class WebAXPlatformTreeManagerDelegate;
|
||||
|
||||
using UiaRaiseActiveTextPositionChangedEventFunction =
|
||||
HRESULT(WINAPI*)(IRawElementProviderSimple*, ITextRangeProvider*);
|
||||
@ -31,7 +34,7 @@ class CONTENT_EXPORT BrowserAccessibilityManagerWin
|
||||
: public BrowserAccessibilityManager {
|
||||
public:
|
||||
BrowserAccessibilityManagerWin(const ui::AXTreeUpdate& initial_tree,
|
||||
WebAXPlatformTreeManagerDelegate* delegate);
|
||||
ui::AXPlatformTreeManagerDelegate* delegate);
|
||||
|
||||
BrowserAccessibilityManagerWin(const BrowserAccessibilityManagerWin&) =
|
||||
delete;
|
||||
|
@ -62,9 +62,8 @@ bool TestBrowserAccessibilityDelegate::AccessibilityIsRootFrame() const {
|
||||
return is_root_frame_;
|
||||
}
|
||||
|
||||
RenderFrameHostImpl*
|
||||
TestBrowserAccessibilityDelegate::AccessibilityRenderFrameHost() {
|
||||
return nullptr;
|
||||
bool TestBrowserAccessibilityDelegate::ShouldSuppressAXLoadComplete() {
|
||||
return false;
|
||||
}
|
||||
|
||||
WebContentsAccessibility*
|
||||
|
@ -5,15 +5,15 @@
|
||||
#ifndef CONTENT_BROWSER_ACCESSIBILITY_TEST_BROWSER_ACCESSIBILITY_DELEGATE_H_
|
||||
#define CONTENT_BROWSER_ACCESSIBILITY_TEST_BROWSER_ACCESSIBILITY_DELEGATE_H_
|
||||
|
||||
#include "content/browser/accessibility/web_ax_platform_tree_manager_delegate.h"
|
||||
#include "ui/accessibility/ax_node_id_forward.h"
|
||||
#include "ui/accessibility/platform/ax_platform_tree_manager.h"
|
||||
#include "ui/accessibility/platform/ax_platform_tree_manager_delegate.h"
|
||||
|
||||
namespace content {
|
||||
|
||||
// TODO(nektar): Rename this class to `TestWebAXPlatformTreeManagerDelegate`.
|
||||
// TODO(nektar): Rename this class to `TestAXPlatformTreeManagerDelegate`.
|
||||
class TestBrowserAccessibilityDelegate
|
||||
: public WebAXPlatformTreeManagerDelegate {
|
||||
: public ui::AXPlatformTreeManagerDelegate {
|
||||
public:
|
||||
TestBrowserAccessibilityDelegate();
|
||||
|
||||
@ -36,8 +36,8 @@ class TestBrowserAccessibilityDelegate
|
||||
gfx::NativeWindow GetTopLevelNativeWindow() override;
|
||||
bool CanFireAccessibilityEvents() const override;
|
||||
bool AccessibilityIsRootFrame() const override;
|
||||
bool ShouldSuppressAXLoadComplete() override;
|
||||
WebContentsAccessibility* AccessibilityGetWebContentsAccessibility() override;
|
||||
RenderFrameHostImpl* AccessibilityRenderFrameHost() override;
|
||||
|
||||
bool is_root_frame_;
|
||||
gfx::AcceleratedWidget accelerated_widget_;
|
||||
|
@ -1,45 +0,0 @@
|
||||
// Copyright 2022 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef CONTENT_BROWSER_ACCESSIBILITY_WEB_AX_PLATFORM_TREE_MANAGER_DELEGATE_H_
|
||||
#define CONTENT_BROWSER_ACCESSIBILITY_WEB_AX_PLATFORM_TREE_MANAGER_DELEGATE_H_
|
||||
|
||||
#include "content/common/content_export.h"
|
||||
#include "ui/accessibility/platform/ax_platform_tree_manager_delegate.h"
|
||||
|
||||
namespace content {
|
||||
|
||||
class RenderFrameHostImpl;
|
||||
class WebContentsAccessibility;
|
||||
|
||||
// Pure abstract class that is used by `BrowserAccessibilityManager` to gather
|
||||
// information or perform actions that are implemented differently between the
|
||||
// Web Content and the Views layers.
|
||||
//
|
||||
// Important: `BrowserAccessibilityManager` should never cache any of the
|
||||
// returned pointers from any of these methods.
|
||||
class CONTENT_EXPORT WebAXPlatformTreeManagerDelegate
|
||||
: public ui::AXPlatformTreeManagerDelegate {
|
||||
public:
|
||||
~WebAXPlatformTreeManagerDelegate() override = default;
|
||||
WebAXPlatformTreeManagerDelegate(const WebAXPlatformTreeManagerDelegate&) =
|
||||
delete;
|
||||
WebAXPlatformTreeManagerDelegate& operator=(
|
||||
const WebAXPlatformTreeManagerDelegate&) = delete;
|
||||
|
||||
// Returns true if this delegate represents the root (topmost) frame in a
|
||||
// tree of iframes on a webpage.
|
||||
virtual bool AccessibilityIsRootFrame() const = 0;
|
||||
|
||||
virtual RenderFrameHostImpl* AccessibilityRenderFrameHost() = 0;
|
||||
virtual WebContentsAccessibility*
|
||||
AccessibilityGetWebContentsAccessibility() = 0;
|
||||
|
||||
protected:
|
||||
WebAXPlatformTreeManagerDelegate() = default;
|
||||
};
|
||||
|
||||
} // namespace content
|
||||
|
||||
#endif // CONTENT_BROWSER_ACCESSIBILITY_WEB_AX_PLATFORM_TREE_MANAGER_DELEGATE_H_
|
@ -3010,6 +3010,13 @@ bool RenderFrameHostImpl::CanFireAccessibilityEvents() const {
|
||||
return IsActive();
|
||||
}
|
||||
|
||||
bool RenderFrameHostImpl::ShouldSuppressAXLoadComplete() {
|
||||
if (!AccessibilityIsRootFrame()) {
|
||||
return false;
|
||||
}
|
||||
return GetContentClient()->browser()->ShouldSuppressAXLoadComplete(this);
|
||||
}
|
||||
|
||||
bool RenderFrameHostImpl::AccessibilityIsRootFrame() const {
|
||||
// Do not use is_main_frame() or IsOutermostMainFrame().
|
||||
// Frame trees may be nested so it can be the case that is_main_frame() is
|
||||
@ -3021,10 +3028,6 @@ bool RenderFrameHostImpl::AccessibilityIsRootFrame() const {
|
||||
return !GetParentOrOuterDocumentOrEmbedderExcludingProspectiveOwners();
|
||||
}
|
||||
|
||||
RenderFrameHostImpl* RenderFrameHostImpl::AccessibilityRenderFrameHost() {
|
||||
return this;
|
||||
}
|
||||
|
||||
WebContentsAccessibility*
|
||||
RenderFrameHostImpl::AccessibilityGetWebContentsAccessibility() {
|
||||
DCHECK(AccessibilityIsRootFrame());
|
||||
|
@ -44,7 +44,6 @@
|
||||
#include "base/unguessable_token.h"
|
||||
#include "build/build_config.h"
|
||||
#include "content/browser/accessibility/browser_accessibility_manager.h"
|
||||
#include "content/browser/accessibility/web_ax_platform_tree_manager_delegate.h"
|
||||
#include "content/browser/bad_message.h"
|
||||
#include "content/browser/browser_interface_broker_impl.h"
|
||||
#include "content/browser/buckets/bucket_context.h"
|
||||
@ -179,6 +178,7 @@
|
||||
#include "ui/accessibility/ax_action_handler_base.h"
|
||||
#include "ui/accessibility/ax_node_id_forward.h"
|
||||
#include "ui/accessibility/platform/ax_platform_tree_manager.h"
|
||||
#include "ui/accessibility/platform/ax_platform_tree_manager_delegate.h"
|
||||
#include "ui/base/page_transition_types.h"
|
||||
#include "ui/gfx/geometry/rect.h"
|
||||
#include "url/gurl.h"
|
||||
@ -306,7 +306,7 @@ class CONTENT_EXPORT RenderFrameHostImpl
|
||||
public base::SupportsUserData,
|
||||
public mojom::FrameHost,
|
||||
public mojom::DomAutomationControllerHost,
|
||||
public WebAXPlatformTreeManagerDelegate,
|
||||
public ui::AXPlatformTreeManagerDelegate,
|
||||
public SiteInstanceGroup::Observer,
|
||||
public blink::mojom::AssociatedInterfaceProvider,
|
||||
public blink::mojom::BackForwardCacheControllerHost,
|
||||
@ -655,7 +655,7 @@ class CONTENT_EXPORT RenderFrameHostImpl
|
||||
mojo::ScopedInterfaceEndpointHandle handle) override;
|
||||
std::string ToDebugString() override;
|
||||
|
||||
// WebAXPlatformTreeManagerDelegate
|
||||
// ui::AXPlatformTreeManagerDelegate
|
||||
void AccessibilityPerformAction(const ui::AXActionData& data) override;
|
||||
bool AccessibilityViewHasFocus() override;
|
||||
void AccessibilityViewSetFocus() override;
|
||||
@ -675,7 +675,7 @@ class CONTENT_EXPORT RenderFrameHostImpl
|
||||
gfx::NativeWindow GetTopLevelNativeWindow() override;
|
||||
bool CanFireAccessibilityEvents() const override;
|
||||
bool AccessibilityIsRootFrame() const override;
|
||||
RenderFrameHostImpl* AccessibilityRenderFrameHost() override;
|
||||
bool ShouldSuppressAXLoadComplete() override;
|
||||
WebContentsAccessibility* AccessibilityGetWebContentsAccessibility() override;
|
||||
|
||||
// SiteInstanceGroup::Observer
|
||||
|
@ -1698,4 +1698,8 @@ std::unique_ptr<DipsDelegate> ContentBrowserClient::CreateDipsDelegate() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool ContentBrowserClient::ShouldSuppressAXLoadComplete(RenderFrameHost* rfh) {
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace content
|
||||
|
@ -2845,6 +2845,13 @@ class CONTENT_EXPORT ContentBrowserClient {
|
||||
// Mitigations). The default implementation returns nullptr, resulting in
|
||||
// default behavior.
|
||||
virtual std::unique_ptr<DipsDelegate> CreateDipsDelegate();
|
||||
|
||||
// Allows the embedder to suppress the firing of the AXLoadComplete event.
|
||||
// Currently, this is only respected on Mac. Since VoiceOver on Mac will
|
||||
// move the focus to web content if the AXLoadComplete event is fired,
|
||||
// this is used to not move VoiceOver's focus on navigation. This is used
|
||||
// today to suppress the event when the user navigates to the new tab page.
|
||||
virtual bool ShouldSuppressAXLoadComplete(RenderFrameHost* rfh);
|
||||
};
|
||||
|
||||
} // namespace content
|
||||
|
@ -504,8 +504,7 @@ usually forwarded to [BrowserAccessibilityManager] which is responsible for:
|
||||
BrowserAccessibilityManager, in a method named `NotifyAccessibilityEvent`.
|
||||
3. Dispatching incoming accessibility actions to the appropriate recipient, via
|
||||
[AXPlatformTreeManagerDelegate]. For messages destined for a renderer,
|
||||
[RenderFrameHostImpl], which is a WebAXPlatformTreeManagerDelegate, is
|
||||
responsible for calling the remote method
|
||||
[RenderFrameHostImpl] is responsible for calling the remote method
|
||||
[ax.mojom.RenderAccessibility.PerformAction()], implemented by the renderer,
|
||||
with the appropriate payload (of type [ax.mojom.AXActionData]). This IPC call
|
||||
will be received by [RenderAccessibilityManager], which will then relay on
|
||||
@ -558,7 +557,6 @@ For more detail on Chrome OS accessibility, read [How Chrome OS Accessibility Wo
|
||||
[BlinkAXTreeSource]: https://cs.chromium.org/chromium/src/content/renderer/accessibility/blink_ax_tree_source.h
|
||||
[BrowserAccessibility]: https://cs.chromium.org/chromium/src/content/browser/accessibility/browser_accessibility.h
|
||||
[BrowserAccessibilityManager]: https://cs.chromium.org/chromium/src/content/browser/accessibility/browser_accessibility_manager.h
|
||||
[WebAXPlatformTreeManagerDelegate]: https://cs.chromium.org/chromium/src/content/browser/accessibility/web_ax_platform_tree_manager_delegate.h
|
||||
[LayoutObject]: https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/layout/layout_object.h
|
||||
[AXPlatformTreeManagerDelegate]: https://cs.chromium.org/chromium/src/ui/accessibility/platform/ax_platform_tree_manager_delegate.h
|
||||
[ViewAccessibility]: https://cs.chromium.org/chromium/src/ui/views/accessibility/view_accessibility.h
|
||||
|
@ -15,6 +15,10 @@
|
||||
#include "ui/gfx/geometry/rect.h"
|
||||
#include "ui/gfx/native_widget_types.h"
|
||||
|
||||
namespace content {
|
||||
class WebContentsAccessibility;
|
||||
}
|
||||
|
||||
namespace ui {
|
||||
|
||||
// Pure abstract class that is used by `AXPlatformTreeManager` to gather
|
||||
@ -113,6 +117,21 @@ class COMPONENT_EXPORT(AX_PLATFORM) AXPlatformTreeManagerDelegate {
|
||||
|
||||
virtual bool CanFireAccessibilityEvents() const = 0;
|
||||
|
||||
// These methods are all specific to Web content, and should be removed from
|
||||
// here and into the content layer if and when possible. These were
|
||||
// moved into AXPlatformTreeManagerDelegate as part of the refactor
|
||||
// to move BrowserAccessibility* into the ui/ layer to support their reuse
|
||||
// in views. crbug.com/327499435
|
||||
virtual bool AccessibilityIsRootFrame() const = 0;
|
||||
|
||||
// On Mac, VoiceOver moves focus to the web content when it receives an
|
||||
// AXLoadComplete event. On chrome's new tab page, focus should stay
|
||||
// in the omnibox, so we purposefully do not fire the AXLoadComplete
|
||||
// event in this case.
|
||||
virtual bool ShouldSuppressAXLoadComplete() = 0;
|
||||
virtual content::WebContentsAccessibility*
|
||||
AccessibilityGetWebContentsAccessibility() = 0;
|
||||
|
||||
protected:
|
||||
AXPlatformTreeManagerDelegate() = default;
|
||||
};
|
||||
|
Reference in New Issue
Block a user