// Copyright 2012 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_RENDERER_ACCESSIBILITY_RENDER_ACCESSIBILITY_IMPL_H_ #define CONTENT_RENDERER_ACCESSIBILITY_RENDER_ACCESSIBILITY_IMPL_H_ #include <list> #include <memory> #include <vector> #include "base/memory/raw_ptr.h" #include "base/memory/raw_ptr_exclusion.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "build/chromeos_buildflags.h" #include "content/common/content_export.h" #include "content/public/renderer/render_accessibility.h" #include "content/public/renderer/render_frame.h" #include "content/public/renderer/render_frame_observer.h" #include "third_party/blink/public/mojom/render_accessibility.mojom.h" #include "third_party/blink/public/web/web_ax_context.h" #include "third_party/blink/public/web/web_ax_object.h" #include "ui/accessibility/ax_event.h" #include "ui/accessibility/ax_node_data.h" #include "ui/accessibility/ax_relative_bounds.h" #include "ui/accessibility/ax_tree.h" #include "ui/accessibility/ax_tree_data.h" #include "ui/accessibility/ax_tree_serializer.h" #include "ui/accessibility/ax_tree_update.h" #include "ui/gfx/geometry/rect_f.h" namespace base { class ElapsedTimer; } // namespace base namespace blink { class WebDocument; } // namespace blink namespace ui { struct AXActionData; class AXActionTarget; struct AXEvent; class AXTreeID; } // namespace ui namespace ukm { class MojoUkmRecorder; } namespace content { class AXAnnotatorsManager; class RenderFrameImpl; class RenderAccessibilityManager; // The browser process implements native accessibility APIs, allowing assistive // technology (e.g., screen readers, magnifiers) to access and control the web // contents with high-level APIs. These APIs are also used by automation tools, // and Windows 8 uses them to determine when the on-screen keyboard should be // shown. // // An instance of this class belongs to the RenderAccessibilityManager object. // Accessibility is initialized based on the ui::AXMode passed from the browser // process to the manager object; it lazily starts as Off or EditableTextOnly // depending on the operating system, and switches to Complete if assistive // technology is detected or a flag is set. // // A tree of accessible objects is built here and sent to the browser process; // the browser process maintains this as a tree of platform-native accessible // objects that can be used to respond to accessibility requests from other // processes. // // This class implements complete accessibility support for assistive // technology. It turns on Blink's accessibility code and sends a serialized // representation of that tree whenever it changes. It also handles requests // from the browser to perform accessibility actions on nodes in the tree (e.g., // change focus, or click on a button). class CONTENT_EXPORT RenderAccessibilityImpl : public RenderAccessibility, public RenderFrameObserver { … }; } // namespace content #endif // CONTENT_RENDERER_ACCESSIBILITY_RENDER_ACCESSIBILITY_IMPL_H_