#ifndef CONTENT_RENDERER_ACCESSIBILITY_RENDER_ACCESSIBILITY_MANAGER_H_
#define CONTENT_RENDERER_ACCESSIBILITY_RENDER_ACCESSIBILITY_MANAGER_H_
#include <memory>
#include "base/memory/raw_ptr.h"
#include "content/common/content_export.h"
#include "mojo/public/cpp/bindings/associated_receiver.h"
#include "mojo/public/cpp/bindings/pending_associated_receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "third_party/blink/public/mojom/render_accessibility.mojom.h"
#include "ui/accessibility/ax_action_data.h"
#include "ui/accessibility/ax_enums.mojom-forward.h"
#include "ui/accessibility/ax_event.h"
#include "ui/accessibility/ax_mode.h"
#include "ui/accessibility/ax_tree_id.h"
#include "ui/accessibility/ax_tree_update.h"
#include "ui/accessibility/mojom/ax_updates_and_events.mojom.h"
namespace content {
class RenderFrameImpl;
class RenderAccessibilityImpl;
class CONTENT_EXPORT RenderAccessibilityManager
: public blink::mojom::RenderAccessibility {
public:
RenderAccessibilityManager(RenderFrameImpl* const render_frame);
RenderAccessibilityManager(const RenderAccessibilityManager&) = delete;
RenderAccessibilityManager& operator=(const RenderAccessibilityManager&) =
delete;
~RenderAccessibilityManager() override;
void BindReceiver(
mojo::PendingAssociatedReceiver<blink::mojom::RenderAccessibility>
receiver);
RenderAccessibilityImpl* GetRenderAccessibilityImpl();
ui::AXMode GetAccessibilityMode() const;
void SetMode(const ui::AXMode& ax_mode, uint32_t reset_token) override;
void FatalError() override;
void HitTest(
const gfx::Point& point,
ax::mojom::Event event_to_fire,
int request_id,
blink::mojom::RenderAccessibility::HitTestCallback callback) override;
void PerformAction(const ui::AXActionData& data) override;
void Reset(uint32_t reset_token) override;
void HandleAXEvents(
ui::AXUpdatesAndEvents& updates_and_events,
ui::AXLocationAndScrollUpdates& location_and_scroll_updates,
uint32_t reset_token,
blink::mojom::RenderAccessibilityHost::HandleAXEventsCallback callback);
void CloseConnection();
private:
mojo::Remote<blink::mojom::RenderAccessibilityHost>&
GetOrCreateRemoteRenderAccessibilityHost();
raw_ptr<RenderFrameImpl> render_frame_;
std::unique_ptr<RenderAccessibilityImpl> render_accessibility_;
mojo::AssociatedReceiver<blink::mojom::RenderAccessibility> receiver_{this};
mojo::Remote<blink::mojom::RenderAccessibilityHost>
render_accessibility_host_;
};
}
#endif