Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Side by Side Diff: content/renderer/render_view_impl.cc

Issue 273423004: Migrate accessibility from RenderView to RenderFrame. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/renderer/render_view_impl.h ('k') | content/renderer/render_view_impl_params.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/render_view_impl.h" 5 #include "content/renderer/render_view_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 708 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 frames_in_progress_(0), 719 frames_in_progress_(0),
720 target_url_status_(TARGET_NONE), 720 target_url_status_(TARGET_NONE),
721 uses_temporary_zoom_level_(false), 721 uses_temporary_zoom_level_(false),
722 #if defined(OS_ANDROID) 722 #if defined(OS_ANDROID)
723 top_controls_constraints_(cc::BOTH), 723 top_controls_constraints_(cc::BOTH),
724 #endif 724 #endif
725 has_scrolled_focused_editable_node_into_rect_(false), 725 has_scrolled_focused_editable_node_into_rect_(false),
726 speech_recognition_dispatcher_(NULL), 726 speech_recognition_dispatcher_(NULL),
727 browser_plugin_manager_(NULL), 727 browser_plugin_manager_(NULL),
728 devtools_agent_(NULL), 728 devtools_agent_(NULL),
729 accessibility_mode_(AccessibilityModeOff),
730 renderer_accessibility_(NULL),
731 mouse_lock_dispatcher_(NULL), 729 mouse_lock_dispatcher_(NULL),
732 #if defined(OS_ANDROID) 730 #if defined(OS_ANDROID)
733 expected_content_intent_id_(0), 731 expected_content_intent_id_(0),
734 #endif 732 #endif
735 #if defined(OS_WIN) 733 #if defined(OS_WIN)
736 focused_plugin_id_(-1), 734 focused_plugin_id_(-1),
737 #endif 735 #endif
738 #if defined(ENABLE_PLUGINS) 736 #if defined(ENABLE_PLUGINS)
739 plugin_find_handler_(NULL), 737 plugin_find_handler_(NULL),
740 focused_pepper_plugin_(NULL), 738 focused_pepper_plugin_(NULL),
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
853 // The next group of objects all implement RenderViewObserver, so are deleted 851 // The next group of objects all implement RenderViewObserver, so are deleted
854 // along with the RenderView automatically. 852 // along with the RenderView automatically.
855 devtools_agent_ = new DevToolsAgent(this); 853 devtools_agent_ = new DevToolsAgent(this);
856 if (RenderWidgetCompositor* rwc = compositor()) { 854 if (RenderWidgetCompositor* rwc = compositor()) {
857 webview()->devToolsAgent()->setLayerTreeId(rwc->GetLayerTreeId()); 855 webview()->devToolsAgent()->setLayerTreeId(rwc->GetLayerTreeId());
858 } 856 }
859 mouse_lock_dispatcher_ = new RenderViewMouseLockDispatcher(this); 857 mouse_lock_dispatcher_ = new RenderViewMouseLockDispatcher(this);
860 858
861 history_controller_.reset(new HistoryController(this)); 859 history_controller_.reset(new HistoryController(this));
862 860
863 // Create renderer_accessibility_ if needed.
864 OnSetAccessibilityMode(params->accessibility_mode);
865
866 new IdleUserDetector(this); 861 new IdleUserDetector(this);
867 862
868 if (command_line.HasSwitch(switches::kDomAutomationController)) 863 if (command_line.HasSwitch(switches::kDomAutomationController))
869 enabled_bindings_ |= BINDINGS_POLICY_DOM_AUTOMATION; 864 enabled_bindings_ |= BINDINGS_POLICY_DOM_AUTOMATION;
870 if (command_line.HasSwitch(switches::kStatsCollectionController)) 865 if (command_line.HasSwitch(switches::kStatsCollectionController))
871 enabled_bindings_ |= BINDINGS_POLICY_STATS_COLLECTION; 866 enabled_bindings_ |= BINDINGS_POLICY_STATS_COLLECTION;
872 867
873 ProcessViewLayoutFlags(command_line); 868 ProcessViewLayoutFlags(command_line);
874 869
875 GetContentClient()->renderer()->RenderViewCreated(this); 870 GetContentClient()->renderer()->RenderViewCreated(this);
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
1194 int32 main_frame_routing_id, 1189 int32 main_frame_routing_id,
1195 int32 surface_id, 1190 int32 surface_id,
1196 int64 session_storage_namespace_id, 1191 int64 session_storage_namespace_id,
1197 const base::string16& frame_name, 1192 const base::string16& frame_name,
1198 bool is_renderer_created, 1193 bool is_renderer_created,
1199 bool swapped_out, 1194 bool swapped_out,
1200 int32 proxy_routing_id, 1195 int32 proxy_routing_id,
1201 bool hidden, 1196 bool hidden,
1202 bool never_visible, 1197 bool never_visible,
1203 int32 next_page_id, 1198 int32 next_page_id,
1204 const blink::WebScreenInfo& screen_info, 1199 const blink::WebScreenInfo& screen_info) {
1205 AccessibilityMode accessibility_mode) {
1206 DCHECK(routing_id != MSG_ROUTING_NONE); 1200 DCHECK(routing_id != MSG_ROUTING_NONE);
1207 RenderViewImplParams params(opener_id, 1201 RenderViewImplParams params(opener_id,
1208 window_was_created_with_opener, 1202 window_was_created_with_opener,
1209 renderer_prefs, 1203 renderer_prefs,
1210 webkit_prefs, 1204 webkit_prefs,
1211 routing_id, 1205 routing_id,
1212 main_frame_routing_id, 1206 main_frame_routing_id,
1213 surface_id, 1207 surface_id,
1214 session_storage_namespace_id, 1208 session_storage_namespace_id,
1215 frame_name, 1209 frame_name,
1216 is_renderer_created, 1210 is_renderer_created,
1217 swapped_out, 1211 swapped_out,
1218 proxy_routing_id, 1212 proxy_routing_id,
1219 hidden, 1213 hidden,
1220 never_visible, 1214 never_visible,
1221 next_page_id, 1215 next_page_id,
1222 screen_info, 1216 screen_info);
1223 accessibility_mode);
1224 RenderViewImpl* render_view = NULL; 1217 RenderViewImpl* render_view = NULL;
1225 if (g_create_render_view_impl) 1218 if (g_create_render_view_impl)
1226 render_view = g_create_render_view_impl(&params); 1219 render_view = g_create_render_view_impl(&params);
1227 else 1220 else
1228 render_view = new RenderViewImpl(&params); 1221 render_view = new RenderViewImpl(&params);
1229 1222
1230 render_view->Initialize(&params); 1223 render_view->Initialize(&params);
1231 return render_view; 1224 return render_view;
1232 } 1225 }
1233 1226
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
1401 IPC_MESSAGE_HANDLER(ViewMsg_GetAllSavableResourceLinksForCurrentPage, 1394 IPC_MESSAGE_HANDLER(ViewMsg_GetAllSavableResourceLinksForCurrentPage,
1402 OnGetAllSavableResourceLinksForCurrentPage) 1395 OnGetAllSavableResourceLinksForCurrentPage)
1403 IPC_MESSAGE_HANDLER( 1396 IPC_MESSAGE_HANDLER(
1404 ViewMsg_GetSerializedHtmlDataForCurrentPageWithLocalLinks, 1397 ViewMsg_GetSerializedHtmlDataForCurrentPageWithLocalLinks,
1405 OnGetSerializedHtmlDataForCurrentPageWithLocalLinks) 1398 OnGetSerializedHtmlDataForCurrentPageWithLocalLinks)
1406 IPC_MESSAGE_HANDLER(ViewMsg_ShowContextMenu, OnShowContextMenu) 1399 IPC_MESSAGE_HANDLER(ViewMsg_ShowContextMenu, OnShowContextMenu)
1407 // TODO(viettrungluu): Move to a separate message filter. 1400 // TODO(viettrungluu): Move to a separate message filter.
1408 IPC_MESSAGE_HANDLER(ViewMsg_SetHistoryLengthAndPrune, 1401 IPC_MESSAGE_HANDLER(ViewMsg_SetHistoryLengthAndPrune,
1409 OnSetHistoryLengthAndPrune) 1402 OnSetHistoryLengthAndPrune)
1410 IPC_MESSAGE_HANDLER(ViewMsg_EnableViewSourceMode, OnEnableViewSourceMode) 1403 IPC_MESSAGE_HANDLER(ViewMsg_EnableViewSourceMode, OnEnableViewSourceMode)
1411 IPC_MESSAGE_HANDLER(ViewMsg_SetAccessibilityMode, OnSetAccessibilityMode)
1412 IPC_MESSAGE_HANDLER(ViewMsg_DisownOpener, OnDisownOpener) 1404 IPC_MESSAGE_HANDLER(ViewMsg_DisownOpener, OnDisownOpener)
1413 IPC_MESSAGE_HANDLER(ViewMsg_ReleaseDisambiguationPopupBitmap, 1405 IPC_MESSAGE_HANDLER(ViewMsg_ReleaseDisambiguationPopupBitmap,
1414 OnReleaseDisambiguationPopupBitmap) 1406 OnReleaseDisambiguationPopupBitmap)
1415 IPC_MESSAGE_HANDLER(ViewMsg_WindowSnapshotCompleted, 1407 IPC_MESSAGE_HANDLER(ViewMsg_WindowSnapshotCompleted,
1416 OnWindowSnapshotCompleted) 1408 OnWindowSnapshotCompleted)
1417 IPC_MESSAGE_HANDLER(ViewMsg_ForceRedraw, OnForceRedraw) 1409 IPC_MESSAGE_HANDLER(ViewMsg_ForceRedraw, OnForceRedraw)
1418 IPC_MESSAGE_HANDLER(ViewMsg_SelectWordAroundCaret, OnSelectWordAroundCaret) 1410 IPC_MESSAGE_HANDLER(ViewMsg_SelectWordAroundCaret, OnSelectWordAroundCaret)
1419 #if defined(OS_ANDROID) 1411 #if defined(OS_ANDROID)
1420 IPC_MESSAGE_HANDLER(InputMsg_ActivateNearestFindResult, 1412 IPC_MESSAGE_HANDLER(InputMsg_ActivateNearestFindResult,
1421 OnActivateNearestFindResult) 1413 OnActivateNearestFindResult)
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
1743 main_frame_routing_id, 1735 main_frame_routing_id,
1744 surface_id, 1736 surface_id,
1745 cloned_session_storage_namespace_id, 1737 cloned_session_storage_namespace_id,
1746 base::string16(), // WebCore will take care of setting the correct name. 1738 base::string16(), // WebCore will take care of setting the correct name.
1747 true, // is_renderer_created 1739 true, // is_renderer_created
1748 false, // swapped_out 1740 false, // swapped_out
1749 MSG_ROUTING_NONE, // proxy_routing_id 1741 MSG_ROUTING_NONE, // proxy_routing_id
1750 params.disposition == NEW_BACKGROUND_TAB, // hidden 1742 params.disposition == NEW_BACKGROUND_TAB, // hidden
1751 never_visible, 1743 never_visible,
1752 1, // next_page_id 1744 1, // next_page_id
1753 screen_info_, 1745 screen_info_);
1754 accessibility_mode_);
1755 view->opened_by_user_gesture_ = params.user_gesture; 1746 view->opened_by_user_gesture_ = params.user_gesture;
1756 1747
1757 // Record whether the creator frame is trying to suppress the opener field. 1748 // Record whether the creator frame is trying to suppress the opener field.
1758 view->opener_suppressed_ = params.opener_suppressed; 1749 view->opener_suppressed_ = params.opener_suppressed;
1759 1750
1760 return view->webview(); 1751 return view->webview();
1761 } 1752 }
1762 1753
1763 WebWidget* RenderViewImpl::createPopupMenu(blink::WebPopupType popup_type) { 1754 WebWidget* RenderViewImpl::createPopupMenu(blink::WebPopupType popup_type) {
1764 RenderWidget* widget = 1755 RenderWidget* widget =
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
2028 void RenderViewImpl::focusPrevious() { 2019 void RenderViewImpl::focusPrevious() {
2029 Send(new ViewHostMsg_TakeFocus(routing_id_, true)); 2020 Send(new ViewHostMsg_TakeFocus(routing_id_, true));
2030 } 2021 }
2031 2022
2032 void RenderViewImpl::focusedNodeChanged(const WebNode& node) { 2023 void RenderViewImpl::focusedNodeChanged(const WebNode& node) {
2033 has_scrolled_focused_editable_node_into_rect_ = false; 2024 has_scrolled_focused_editable_node_into_rect_ = false;
2034 2025
2035 Send(new ViewHostMsg_FocusedNodeChanged(routing_id_, IsEditableNode(node))); 2026 Send(new ViewHostMsg_FocusedNodeChanged(routing_id_, IsEditableNode(node)));
2036 2027
2037 FOR_EACH_OBSERVER(RenderViewObserver, observers_, FocusedNodeChanged(node)); 2028 FOR_EACH_OBSERVER(RenderViewObserver, observers_, FocusedNodeChanged(node));
2029
2030 // TODO(dmazzoni): this should be part of RenderFrameObserver.
2031 main_render_frame()->FocusedNodeChanged(node);
2038 } 2032 }
2039 2033
2040 void RenderViewImpl::didUpdateLayout() { 2034 void RenderViewImpl::didUpdateLayout() {
2041 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidUpdateLayout()); 2035 FOR_EACH_OBSERVER(RenderViewObserver, observers_, DidUpdateLayout());
2042 2036
2043 // We don't always want to set up a timer, only if we've been put in that 2037 // We don't always want to set up a timer, only if we've been put in that
2044 // mode by getting a |ViewMsg_EnablePreferredSizeChangedMode| 2038 // mode by getting a |ViewMsg_EnablePreferredSizeChangedMode|
2045 // message. 2039 // message.
2046 if (!send_preferred_size_changes_ || !webview()) 2040 if (!send_preferred_size_changes_ || !webview())
2047 return; 2041 return;
(...skipping 12 matching lines...) Expand all
2060 int RenderViewImpl::historyBackListCount() { 2054 int RenderViewImpl::historyBackListCount() {
2061 return history_list_offset_ < 0 ? 0 : history_list_offset_; 2055 return history_list_offset_ < 0 ? 0 : history_list_offset_;
2062 } 2056 }
2063 2057
2064 int RenderViewImpl::historyForwardListCount() { 2058 int RenderViewImpl::historyForwardListCount() {
2065 return history_list_length_ - historyBackListCount() - 1; 2059 return history_list_length_ - historyBackListCount() - 1;
2066 } 2060 }
2067 2061
2068 void RenderViewImpl::postAccessibilityEvent( 2062 void RenderViewImpl::postAccessibilityEvent(
2069 const WebAXObject& obj, blink::WebAXEvent event) { 2063 const WebAXObject& obj, blink::WebAXEvent event) {
2070 if (renderer_accessibility_) { 2064 main_render_frame()->HandleWebAccessibilityEvent(obj, event);
2071 renderer_accessibility_->HandleWebAccessibilityEvent(obj, event);
2072 }
2073 } 2065 }
2074 2066
2075 void RenderViewImpl::didUpdateInspectorSetting(const WebString& key, 2067 void RenderViewImpl::didUpdateInspectorSetting(const WebString& key,
2076 const WebString& value) { 2068 const WebString& value) {
2077 Send(new ViewHostMsg_UpdateInspectorSetting(routing_id_, 2069 Send(new ViewHostMsg_UpdateInspectorSetting(routing_id_,
2078 key.utf8(), 2070 key.utf8(),
2079 value.utf8())); 2071 value.utf8()));
2080 } 2072 }
2081 2073
2082 // blink::WebWidgetClient ---------------------------------------------------- 2074 // blink::WebWidgetClient ----------------------------------------------------
(...skipping 1335 matching lines...) Expand 10 before | Expand all | Expand 10 after
3418 webview()->clearFocusedElement(); 3410 webview()->clearFocusedElement();
3419 } 3411 }
3420 3412
3421 void RenderViewImpl::OnSetBackgroundOpaque(bool opaque) { 3413 void RenderViewImpl::OnSetBackgroundOpaque(bool opaque) {
3422 if (webview()) 3414 if (webview())
3423 webview()->setIsTransparent(!opaque); 3415 webview()->setIsTransparent(!opaque);
3424 if (compositor_) 3416 if (compositor_)
3425 compositor_->setHasTransparentBackground(!opaque); 3417 compositor_->setHasTransparentBackground(!opaque);
3426 } 3418 }
3427 3419
3428 void RenderViewImpl::OnSetAccessibilityMode(AccessibilityMode new_mode) {
3429 if (accessibility_mode_ == new_mode)
3430 return;
3431 accessibility_mode_ = new_mode;
3432 if (renderer_accessibility_) {
3433 delete renderer_accessibility_;
3434 renderer_accessibility_ = NULL;
3435 }
3436 if (accessibility_mode_ == AccessibilityModeOff)
3437 return;
3438
3439 if (accessibility_mode_ & AccessibilityModeFlagFullTree)
3440 renderer_accessibility_ = new RendererAccessibilityComplete(this);
3441 #if !defined(OS_ANDROID)
3442 else
3443 renderer_accessibility_ = new RendererAccessibilityFocusOnly(this);
3444 #endif
3445 }
3446
3447 void RenderViewImpl::OnSetActive(bool active) { 3420 void RenderViewImpl::OnSetActive(bool active) {
3448 if (webview()) 3421 if (webview())
3449 webview()->setIsActive(active); 3422 webview()->setIsActive(active);
3450 3423
3451 #if defined(ENABLE_PLUGINS) && defined(OS_MACOSX) 3424 #if defined(ENABLE_PLUGINS) && defined(OS_MACOSX)
3452 std::set<WebPluginDelegateProxy*>::iterator plugin_it; 3425 std::set<WebPluginDelegateProxy*>::iterator plugin_it;
3453 for (plugin_it = plugin_delegates_.begin(); 3426 for (plugin_it = plugin_delegates_.begin();
3454 plugin_it != plugin_delegates_.end(); ++plugin_it) { 3427 plugin_it != plugin_delegates_.end(); ++plugin_it) {
3455 (*plugin_it)->SetWindowFocus(active); 3428 (*plugin_it)->SetWindowFocus(active);
3456 } 3429 }
(...skipping 676 matching lines...) Expand 10 before | Expand all | Expand 10 after
4133 if (main_frame && main_frame->opener()) 4106 if (main_frame && main_frame->opener())
4134 main_frame->setOpener(NULL); 4107 main_frame->setOpener(NULL);
4135 } 4108 }
4136 4109
4137 #if defined(OS_ANDROID) 4110 #if defined(OS_ANDROID)
4138 bool RenderViewImpl::didTapMultipleTargets( 4111 bool RenderViewImpl::didTapMultipleTargets(
4139 const blink::WebGestureEvent& event, 4112 const blink::WebGestureEvent& event,
4140 const WebVector<WebRect>& target_rects) { 4113 const WebVector<WebRect>& target_rects) {
4141 // Never show a disambiguation popup when accessibility is enabled, 4114 // Never show a disambiguation popup when accessibility is enabled,
4142 // as this interferes with "touch exploration". 4115 // as this interferes with "touch exploration".
4143 bool matchesAccessibilityModeComplete = 4116 AccessibilityMode accessibility_mode =
4144 (accessibility_mode_ & AccessibilityModeComplete) == 4117 main_render_frame()->accessibility_mode();
4145 AccessibilityModeComplete; 4118 bool matches_accessibility_mode_complete =
4146 if (matchesAccessibilityModeComplete) 4119 (accessibility_mode & AccessibilityModeComplete) ==
4120 AccessibilityModeComplete;
4121 if (matches_accessibility_mode_complete)
4147 return false; 4122 return false;
4148 4123
4149 gfx::Rect finger_rect( 4124 gfx::Rect finger_rect(
4150 event.x - event.data.tap.width / 2, event.y - event.data.tap.height / 2, 4125 event.x - event.data.tap.width / 2, event.y - event.data.tap.height / 2,
4151 event.data.tap.width, event.data.tap.height); 4126 event.data.tap.width, event.data.tap.height);
4152 gfx::Rect zoom_rect; 4127 gfx::Rect zoom_rect;
4153 float new_total_scale = 4128 float new_total_scale =
4154 DisambiguationPopupHelper::ComputeZoomAreaAndScaleFactor( 4129 DisambiguationPopupHelper::ComputeZoomAreaAndScaleFactor(
4155 finger_rect, target_rects, GetSize(), 4130 finger_rect, target_rects, GetSize(),
4156 gfx::Rect(webview()->mainFrame()->visibleContentRect()).size(), 4131 gfx::Rect(webview()->mainFrame()->visibleContentRect()).size(),
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
4301 std::vector<gfx::Size> sizes; 4276 std::vector<gfx::Size> sizes;
4302 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes); 4277 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes);
4303 if (!url.isEmpty()) 4278 if (!url.isEmpty())
4304 urls.push_back( 4279 urls.push_back(
4305 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes)); 4280 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes));
4306 } 4281 }
4307 SendUpdateFaviconURL(urls); 4282 SendUpdateFaviconURL(urls);
4308 } 4283 }
4309 4284
4310 } // namespace content 4285 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_view_impl.h ('k') | content/renderer/render_view_impl_params.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698