Index: content/browser/frame_host/render_frame_host_impl.h |
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h |
index b5f3e032dd5ad6925f9c35588a3d76f42b681629..b139fd8691f1559f75351f1124bc8b1fc5b55616 100644 |
--- a/content/browser/frame_host/render_frame_host_impl.h |
+++ b/content/browser/frame_host/render_frame_host_impl.h |
@@ -13,6 +13,8 @@ |
#include "base/memory/weak_ptr.h" |
#include "base/strings/string16.h" |
#include "base/time/time.h" |
+#include "content/browser/accessibility/browser_accessibility_manager.h" |
+#include "content/common/accessibility_mode_enums.h" |
#include "content/common/content_export.h" |
#include "content/common/mojo/service_registry_impl.h" |
#include "content/public/browser/render_frame_host.h" |
@@ -20,8 +22,11 @@ |
#include "content/public/common/page_transition_types.h" |
#include "net/http/http_response_headers.h" |
#include "third_party/WebKit/public/web/WebTextDirection.h" |
+#include "ui/accessibility/ax_node_data.h" |
class GURL; |
+struct AccessibilityHostMsg_EventParams; |
+struct AccessibilityHostMsg_LocationChangeParams; |
struct FrameHostMsg_DidFailProvisionalLoadWithError_Params; |
struct FrameHostMsg_OpenURL_Params; |
struct FrameHostMsg_BeginNavigation_Params; |
@@ -48,7 +53,9 @@ struct GlobalRequestID; |
struct Referrer; |
struct ShowDesktopNotificationHostMsgParams; |
-class CONTENT_EXPORT RenderFrameHostImpl : public RenderFrameHost { |
+class CONTENT_EXPORT RenderFrameHostImpl |
+ : public RenderFrameHost, |
+ public BrowserAccessibilityDelegate { |
public: |
static RenderFrameHostImpl* FromID(int process_id, int routing_id); |
@@ -77,6 +84,23 @@ class CONTENT_EXPORT RenderFrameHostImpl : public RenderFrameHost { |
// IPC::Listener |
virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; |
+ // BrowserAccessibilityDelegate |
+ virtual void AccessibilitySetFocus(int acc_obj_id) OVERRIDE; |
+ virtual void AccessibilityDoDefaultAction(int acc_obj_id) OVERRIDE; |
+ virtual void AccessibilityShowMenu(const gfx::Point& global_point) OVERRIDE; |
+ virtual void AccessibilityScrollToMakeVisible( |
+ int acc_obj_id, const gfx::Rect& subfocus) OVERRIDE; |
+ virtual void AccessibilityScrollToPoint( |
+ int acc_obj_id, const gfx::Point& point) OVERRIDE; |
+ virtual void AccessibilitySetTextSelection( |
+ int acc_obj_id, int start_offset, int end_offset) OVERRIDE; |
+ virtual bool AccessibilityViewHasFocus() const OVERRIDE; |
+ virtual gfx::Rect AccessibilityGetViewBounds() const OVERRIDE; |
+ virtual gfx::Point AccessibilityOriginInScreen(const gfx::Rect& bounds) |
+ const OVERRIDE; |
+ virtual void AccessibilityHitTest(const gfx::Point& point) OVERRIDE; |
+ virtual void AccessibilityFatalError() OVERRIDE; |
+ |
void Init(); |
int routing_id() const { return routing_id_; } |
void OnCreateChildFrame(int new_routing_id, |
@@ -183,6 +207,37 @@ class CONTENT_EXPORT RenderFrameHostImpl : public RenderFrameHost { |
// hear the response or commit. |
void SetHasPendingTransitionRequest(bool has_pending_request); |
+ // Send a message to the renderer process to change the accessibility mode. |
+ void SetAccessibilityMode(AccessibilityMode AccessibilityMode); |
+ |
+ // Turn on accessibility testing. The given callback will be run |
+ // every time an accessibility notification is received from the |
+ // renderer process, and the accessibility tree it sent can be |
+ // retrieved using GetAXTreeForTesting(). |
+ void SetAccessibilityCallbackForTesting( |
+ const base::Callback<void(ui::AXEvent, int)>& callback); |
+ |
+ // Returns a snapshot of the accessibility tree received from the |
+ // renderer as of the last time an accessibility notification was |
+ // received. |
+ const ui::AXTree* GetAXTreeForTesting(); |
+ |
+ // Access the BrowserAccessibilityManager if it already exists. |
+ BrowserAccessibilityManager* browser_accessibility_manager() const { |
+ return browser_accessibility_manager_.get(); |
+ } |
+ |
+ // If accessibility is enabled, get the BrowserAccessibilityManager for |
+ // this frame, or create one if it doesn't exist yet, otherwise return |
+ // NULL. |
+ BrowserAccessibilityManager* GetOrCreateBrowserAccessibilityManager(); |
+ |
+#if defined(OS_WIN) |
+ void SetParentNativeViewAccessible( |
+ gfx::NativeViewAccessible accessible_parent); |
+ gfx::NativeViewAccessible GetParentNativeViewAccessible() const; |
+#endif |
+ |
protected: |
friend class RenderFrameHostFactory; |
@@ -253,6 +308,10 @@ class CONTENT_EXPORT RenderFrameHostImpl : public RenderFrameHost { |
void OnUpdateEncoding(const std::string& encoding); |
void OnBeginNavigation( |
const FrameHostMsg_BeginNavigation_Params& params); |
+ void OnAccessibilityEvents( |
+ const std::vector<AccessibilityHostMsg_EventParams>& params); |
+ void OnAccessibilityLocationChanges( |
+ const std::vector<AccessibilityHostMsg_LocationChangeParams>& params); |
// Returns whether the given URL is allowed to commit in the current process. |
// This is a more conservative check than RenderProcessHost::FilterURL, since |
@@ -314,6 +373,13 @@ class CONTENT_EXPORT RenderFrameHostImpl : public RenderFrameHost { |
base::WeakPtrFactory<RenderFrameHostImpl> weak_ptr_factory_; |
+ scoped_ptr<BrowserAccessibilityManager> browser_accessibility_manager_; |
+ |
+ // Callback when an event is received, for testing. |
+ base::Callback<void(ui::AXEvent, int)> accessibility_testing_callback_; |
+ // The most recently received accessibility tree - for testing only. |
+ scoped_ptr<ui::AXTree> ax_tree_for_testing_; |
+ |
DISALLOW_COPY_AND_ASSIGN(RenderFrameHostImpl); |
}; |