| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index 8576e87446114c412e1a1fb42056edf6f61724ba..033d466ee83ec9cdd7a72246a1021af7a6917b7c 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -48,6 +48,8 @@
|
| #include "content/public/renderer/navigation_state.h"
|
| #include "content/public/renderer/render_frame_observer.h"
|
| #include "content/renderer/accessibility/renderer_accessibility.h"
|
| +#include "content/renderer/accessibility/renderer_accessibility_complete.h"
|
| +#include "content/renderer/accessibility/renderer_accessibility_focus_only.h"
|
| #include "content/renderer/browser_plugin/browser_plugin.h"
|
| #include "content/renderer/browser_plugin/browser_plugin_manager.h"
|
| #include "content/renderer/child_frame_compositing_helper.h"
|
| @@ -417,6 +419,8 @@ RenderFrameImpl::RenderFrameImpl(RenderViewImpl* render_view, int routing_id)
|
| geolocation_dispatcher_(NULL),
|
| push_messaging_dispatcher_(NULL),
|
| screen_orientation_dispatcher_(NULL),
|
| + accessibility_mode_(AccessibilityModeOff),
|
| + renderer_accessibility_(NULL),
|
| weak_factory_(this) {
|
| std::pair<RoutingIDFrameMap::iterator, bool> result =
|
| g_routing_id_frame_map.Get().insert(std::make_pair(routing_id_, this));
|
| @@ -507,8 +511,8 @@ void RenderFrameImpl::PepperTextInputTypeChanged(
|
|
|
| GetRenderWidget()->UpdateTextInputState(
|
| RenderWidget::NO_SHOW_IME, RenderWidget::FROM_NON_IME);
|
| - if (render_view_->renderer_accessibility())
|
| - render_view_->renderer_accessibility()->FocusedNodeChanged(WebNode());
|
| + if (renderer_accessibility())
|
| + renderer_accessibility()->FocusedNodeChanged(WebNode());
|
| }
|
|
|
| void RenderFrameImpl::PepperCaretPositionChanged(
|
| @@ -729,6 +733,8 @@ bool RenderFrameImpl::OnMessageReceived(const IPC::Message& msg) {
|
| OnTextSurroundingSelectionRequest)
|
| IPC_MESSAGE_HANDLER(FrameMsg_AddStyleSheetByURL,
|
| OnAddStyleSheetByURL)
|
| + IPC_MESSAGE_HANDLER(FrameMsg_SetAccessibilityMode,
|
| + OnSetAccessibilityMode)
|
| #if defined(OS_MACOSX)
|
| IPC_MESSAGE_HANDLER(InputMsg_CopyToFindPboard, OnCopyToFindPboard)
|
| #endif
|
| @@ -1189,6 +1195,25 @@ void RenderFrameImpl::OnExtendSelectionAndDelete(int before, int after) {
|
| frame_->extendSelectionAndDelete(before, after);
|
| }
|
|
|
| +void RenderFrameImpl::OnSetAccessibilityMode(AccessibilityMode new_mode) {
|
| + if (accessibility_mode_ == new_mode)
|
| + return;
|
| + accessibility_mode_ = new_mode;
|
| + if (renderer_accessibility_) {
|
| + delete renderer_accessibility_;
|
| + renderer_accessibility_ = NULL;
|
| + }
|
| + if (accessibility_mode_ == AccessibilityModeOff)
|
| + return;
|
| +
|
| + if (accessibility_mode_ & AccessibilityModeFlagFullTree)
|
| + renderer_accessibility_ = new RendererAccessibilityComplete(this);
|
| +#if !defined(OS_ANDROID)
|
| + else
|
| + renderer_accessibility_ = new RendererAccessibilityFocusOnly(this);
|
| +#endif
|
| +}
|
| +
|
| void RenderFrameImpl::OnReload(bool ignore_cache) {
|
| frame_->reload(ignore_cache);
|
| }
|
| @@ -3164,6 +3189,17 @@ void RenderFrameImpl::didChangeLoadProgress(double load_progress) {
|
| Send(new FrameHostMsg_DidChangeLoadProgress(routing_id_, load_progress));
|
| }
|
|
|
| +void RenderFrameImpl::HandleWebAccessibilityEvent(
|
| + const blink::WebAXObject& obj, blink::WebAXEvent event) {
|
| + if (renderer_accessibility_)
|
| + renderer_accessibility_->HandleWebAccessibilityEvent(obj, event);
|
| +}
|
| +
|
| +void RenderFrameImpl::FocusedNodeChanged(const WebNode& node) {
|
| + if (renderer_accessibility_)
|
| + renderer_accessibility_->FocusedNodeChanged(node);
|
| +}
|
| +
|
| WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
|
| RenderFrame* render_frame,
|
| WebFrame* frame,
|
|
|