OLD | NEW |
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 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 // better than having to wake up all renderers during shutdown. | 310 // better than having to wake up all renderers during shutdown. |
311 const int kDelaySecondsForContentStateSyncHidden = 5; | 311 const int kDelaySecondsForContentStateSyncHidden = 5; |
312 const int kDelaySecondsForContentStateSync = 1; | 312 const int kDelaySecondsForContentStateSync = 1; |
313 | 313 |
314 #if defined(OS_ANDROID) | 314 #if defined(OS_ANDROID) |
315 // Delay between tapping in content and launching the associated android intent. | 315 // Delay between tapping in content and launching the associated android intent. |
316 // Used to allow users see what has been recognized as content. | 316 // Used to allow users see what has been recognized as content. |
317 const size_t kContentIntentDelayMilliseconds = 700; | 317 const size_t kContentIntentDelayMilliseconds = 700; |
318 #endif | 318 #endif |
319 | 319 |
320 static RenderViewImpl* (*g_create_render_view_impl)(const ViewMsg_New_Params&) = | 320 static RenderViewImpl* (*g_create_render_view_impl)( |
321 NULL; | 321 CompositorDependencies* compositor_deps, |
| 322 const ViewMsg_New_Params&) = nullptr; |
322 | 323 |
323 // static | 324 // static |
324 Referrer RenderViewImpl::GetReferrerFromRequest( | 325 Referrer RenderViewImpl::GetReferrerFromRequest( |
325 WebFrame* frame, | 326 WebFrame* frame, |
326 const WebURLRequest& request) { | 327 const WebURLRequest& request) { |
327 return Referrer(GURL(request.httpHeaderField(WebString::fromUTF8("Referer"))), | 328 return Referrer(GURL(request.httpHeaderField(WebString::fromUTF8("Referer"))), |
328 request.referrerPolicy()); | 329 request.referrerPolicy()); |
329 } | 330 } |
330 | 331 |
331 // static | 332 // static |
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
642 if (opener_frame) { | 643 if (opener_frame) { |
643 *opener_view_routing_id = opener_frame->render_view()->GetRoutingID(); | 644 *opener_view_routing_id = opener_frame->render_view()->GetRoutingID(); |
644 return opener_frame->GetWebFrame(); | 645 return opener_frame->GetWebFrame(); |
645 } | 646 } |
646 | 647 |
647 return nullptr; | 648 return nullptr; |
648 } | 649 } |
649 | 650 |
650 } // namespace | 651 } // namespace |
651 | 652 |
652 RenderViewImpl::RenderViewImpl(const ViewMsg_New_Params& params) | 653 RenderViewImpl::RenderViewImpl(CompositorDependencies* compositor_deps, |
653 : RenderWidget(blink::WebPopupTypeNone, | 654 const ViewMsg_New_Params& params) |
| 655 : RenderWidget(compositor_deps, |
| 656 blink::WebPopupTypeNone, |
654 params.initial_size.screen_info, | 657 params.initial_size.screen_info, |
655 params.swapped_out, | 658 params.swapped_out, |
656 params.hidden, | 659 params.hidden, |
657 params.never_visible), | 660 params.never_visible), |
658 webkit_preferences_(params.web_preferences), | 661 webkit_preferences_(params.web_preferences), |
659 send_content_state_immediately_(false), | 662 send_content_state_immediately_(false), |
660 enabled_bindings_(0), | 663 enabled_bindings_(0), |
661 send_preferred_size_changes_(false), | 664 send_preferred_size_changes_(false), |
662 navigation_gesture_(NavigationGestureUnknown), | 665 navigation_gesture_(NavigationGestureUnknown), |
663 opened_by_user_gesture_(true), | 666 opened_by_user_gesture_(true), |
(...skipping 23 matching lines...) Expand all Loading... |
687 plugin_find_handler_(NULL), | 690 plugin_find_handler_(NULL), |
688 focused_pepper_plugin_(NULL), | 691 focused_pepper_plugin_(NULL), |
689 pepper_last_mouse_event_target_(NULL), | 692 pepper_last_mouse_event_target_(NULL), |
690 #endif | 693 #endif |
691 enumeration_completion_id_(0), | 694 enumeration_completion_id_(0), |
692 session_storage_namespace_id_(params.session_storage_namespace_id), | 695 session_storage_namespace_id_(params.session_storage_namespace_id), |
693 page_scale_factor_is_one_(true) { | 696 page_scale_factor_is_one_(true) { |
694 } | 697 } |
695 | 698 |
696 void RenderViewImpl::Initialize(const ViewMsg_New_Params& params, | 699 void RenderViewImpl::Initialize(const ViewMsg_New_Params& params, |
697 CompositorDependencies* compositor_deps, | |
698 bool was_created_by_renderer) { | 700 bool was_created_by_renderer) { |
699 routing_id_ = params.view_id; | 701 routing_id_ = params.view_id; |
700 surface_id_ = params.surface_id; | 702 surface_id_ = params.surface_id; |
701 | 703 |
702 int opener_view_routing_id; | 704 int opener_view_routing_id; |
703 WebFrame* opener_frame = | 705 WebFrame* opener_frame = |
704 ResolveOpener(params.opener_frame_route_id, &opener_view_routing_id); | 706 ResolveOpener(params.opener_frame_route_id, &opener_view_routing_id); |
705 if (opener_view_routing_id != MSG_ROUTING_NONE && was_created_by_renderer) | 707 if (opener_view_routing_id != MSG_ROUTING_NONE && was_created_by_renderer) |
706 opener_id_ = opener_view_routing_id; | 708 opener_id_ = opener_view_routing_id; |
707 | 709 |
708 display_mode_= params.initial_size.display_mode; | 710 display_mode_= params.initial_size.display_mode; |
709 | 711 |
710 // Ensure we start with a valid next_page_id_ from the browser. | 712 // Ensure we start with a valid next_page_id_ from the browser. |
711 DCHECK_GE(next_page_id_, 0); | 713 DCHECK_GE(next_page_id_, 0); |
712 | 714 |
713 if (params.main_frame_routing_id != MSG_ROUTING_NONE) { | 715 if (params.main_frame_routing_id != MSG_ROUTING_NONE) { |
714 main_render_frame_ = RenderFrameImpl::Create( | 716 main_render_frame_ = RenderFrameImpl::Create( |
715 this, params.main_frame_routing_id); | 717 this, params.main_frame_routing_id); |
716 // The main frame WebLocalFrame object is closed by | 718 // The main frame WebLocalFrame object is closed by |
717 // RenderFrameImpl::frameDetached(). | 719 // RenderFrameImpl::frameDetached(). |
718 WebLocalFrame* web_frame = WebLocalFrame::create( | 720 WebLocalFrame* web_frame = WebLocalFrame::create( |
719 blink::WebTreeScopeType::Document, main_render_frame_); | 721 blink::WebTreeScopeType::Document, main_render_frame_); |
720 main_render_frame_->SetWebFrame(web_frame); | 722 main_render_frame_->SetWebFrame(web_frame); |
721 } | 723 } |
722 | 724 |
723 compositor_deps_ = compositor_deps; | |
724 webwidget_ = WebView::create(this); | 725 webwidget_ = WebView::create(this); |
725 webwidget_mouse_lock_target_.reset(new WebWidgetLockTarget(webwidget_)); | 726 webwidget_mouse_lock_target_.reset(new WebWidgetLockTarget(webwidget_)); |
726 | 727 |
727 g_view_map.Get().insert(std::make_pair(webview(), this)); | 728 g_view_map.Get().insert(std::make_pair(webview(), this)); |
728 g_routing_id_view_map.Get().insert(std::make_pair(routing_id_, this)); | 729 g_routing_id_view_map.Get().insert(std::make_pair(routing_id_, this)); |
729 | 730 |
730 const base::CommandLine& command_line = | 731 const base::CommandLine& command_line = |
731 *base::CommandLine::ForCurrentProcess(); | 732 *base::CommandLine::ForCurrentProcess(); |
732 | 733 |
733 if (command_line.HasSwitch(switches::kStatsCollectionController)) | 734 if (command_line.HasSwitch(switches::kStatsCollectionController)) |
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1175 | 1176 |
1176 settings->setShowContextMenuOnMouseUp(prefs.context_menu_on_mouse_up); | 1177 settings->setShowContextMenuOnMouseUp(prefs.context_menu_on_mouse_up); |
1177 | 1178 |
1178 #if defined(OS_MACOSX) | 1179 #if defined(OS_MACOSX) |
1179 settings->setDoubleTapToZoomEnabled(true); | 1180 settings->setDoubleTapToZoomEnabled(true); |
1180 web_view->setMaximumLegibleScale(prefs.default_maximum_page_scale_factor); | 1181 web_view->setMaximumLegibleScale(prefs.default_maximum_page_scale_factor); |
1181 #endif | 1182 #endif |
1182 } | 1183 } |
1183 | 1184 |
1184 /*static*/ | 1185 /*static*/ |
1185 RenderViewImpl* RenderViewImpl::Create(const ViewMsg_New_Params& params, | 1186 RenderViewImpl* RenderViewImpl::Create(CompositorDependencies* compositor_deps, |
1186 CompositorDependencies* compositor_deps, | 1187 const ViewMsg_New_Params& params, |
1187 bool was_created_by_renderer) { | 1188 bool was_created_by_renderer) { |
1188 DCHECK(params.view_id != MSG_ROUTING_NONE); | 1189 DCHECK(params.view_id != MSG_ROUTING_NONE); |
1189 RenderViewImpl* render_view = NULL; | 1190 RenderViewImpl* render_view = NULL; |
1190 if (g_create_render_view_impl) | 1191 if (g_create_render_view_impl) |
1191 render_view = g_create_render_view_impl(params); | 1192 render_view = g_create_render_view_impl(compositor_deps, params); |
1192 else | 1193 else |
1193 render_view = new RenderViewImpl(params); | 1194 render_view = new RenderViewImpl(compositor_deps, params); |
1194 | 1195 |
1195 render_view->Initialize(params, compositor_deps, was_created_by_renderer); | 1196 render_view->Initialize(params, was_created_by_renderer); |
1196 return render_view; | 1197 return render_view; |
1197 } | 1198 } |
1198 | 1199 |
1199 // static | 1200 // static |
1200 void RenderViewImpl::InstallCreateHook( | 1201 void RenderViewImpl::InstallCreateHook(RenderViewImpl* ( |
1201 RenderViewImpl* (*create_render_view_impl)(const ViewMsg_New_Params&)) { | 1202 *create_render_view_impl)(CompositorDependencies* compositor_deps, |
| 1203 const ViewMsg_New_Params&)) { |
1202 CHECK(!g_create_render_view_impl); | 1204 CHECK(!g_create_render_view_impl); |
1203 g_create_render_view_impl = create_render_view_impl; | 1205 g_create_render_view_impl = create_render_view_impl; |
1204 } | 1206 } |
1205 | 1207 |
1206 void RenderViewImpl::AddObserver(RenderViewObserver* observer) { | 1208 void RenderViewImpl::AddObserver(RenderViewObserver* observer) { |
1207 observers_.AddObserver(observer); | 1209 observers_.AddObserver(observer); |
1208 } | 1210 } |
1209 | 1211 |
1210 void RenderViewImpl::RemoveObserver(RenderViewObserver* observer) { | 1212 void RenderViewImpl::RemoveObserver(RenderViewObserver* observer) { |
1211 observer->RenderViewGone(); | 1213 observer->RenderViewGone(); |
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1684 view_params.proxy_routing_id = MSG_ROUTING_NONE; | 1686 view_params.proxy_routing_id = MSG_ROUTING_NONE; |
1685 view_params.hidden = (params.disposition == NEW_BACKGROUND_TAB); | 1687 view_params.hidden = (params.disposition == NEW_BACKGROUND_TAB); |
1686 view_params.never_visible = never_visible; | 1688 view_params.never_visible = never_visible; |
1687 view_params.next_page_id = 1; | 1689 view_params.next_page_id = 1; |
1688 view_params.initial_size = initial_size; | 1690 view_params.initial_size = initial_size; |
1689 view_params.enable_auto_resize = false; | 1691 view_params.enable_auto_resize = false; |
1690 view_params.min_size = gfx::Size(); | 1692 view_params.min_size = gfx::Size(); |
1691 view_params.max_size = gfx::Size(); | 1693 view_params.max_size = gfx::Size(); |
1692 | 1694 |
1693 RenderViewImpl* view = | 1695 RenderViewImpl* view = |
1694 RenderViewImpl::Create(view_params, compositor_deps_, true); | 1696 RenderViewImpl::Create(compositor_deps_, view_params, true); |
1695 view->opened_by_user_gesture_ = params.user_gesture; | 1697 view->opened_by_user_gesture_ = params.user_gesture; |
1696 | 1698 |
1697 // Record whether the creator frame is trying to suppress the opener field. | 1699 // Record whether the creator frame is trying to suppress the opener field. |
1698 view->opener_suppressed_ = params.opener_suppressed; | 1700 view->opener_suppressed_ = params.opener_suppressed; |
1699 | 1701 |
1700 return view->webview(); | 1702 return view->webview(); |
1701 } | 1703 } |
1702 | 1704 |
1703 WebWidget* RenderViewImpl::createPopupMenu(blink::WebPopupType popup_type) { | 1705 WebWidget* RenderViewImpl::createPopupMenu(blink::WebPopupType popup_type) { |
1704 RenderWidget* widget = RenderWidget::Create(routing_id_, compositor_deps_, | 1706 RenderWidget* widget = RenderWidget::Create(routing_id_, compositor_deps_, |
(...skipping 2116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3821 std::vector<gfx::Size> sizes; | 3823 std::vector<gfx::Size> sizes; |
3822 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes); | 3824 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes); |
3823 if (!url.isEmpty()) | 3825 if (!url.isEmpty()) |
3824 urls.push_back( | 3826 urls.push_back( |
3825 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes)); | 3827 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes)); |
3826 } | 3828 } |
3827 SendUpdateFaviconURL(urls); | 3829 SendUpdateFaviconURL(urls); |
3828 } | 3830 } |
3829 | 3831 |
3830 } // namespace content | 3832 } // namespace content |
OLD | NEW |