| 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 |