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/browser/web_contents/web_contents_impl.h" | 5 #include "content/browser/web_contents/web_contents_impl.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
(...skipping 4143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4154 source_id); | 4154 source_id); |
4155 } | 4155 } |
4156 | 4156 |
4157 int WebContentsImpl::CreateSwappedOutRenderView( | 4157 int WebContentsImpl::CreateSwappedOutRenderView( |
4158 SiteInstance* instance) { | 4158 SiteInstance* instance) { |
4159 int render_view_routing_id = MSG_ROUTING_NONE; | 4159 int render_view_routing_id = MSG_ROUTING_NONE; |
4160 if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { | 4160 if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
4161 GetRenderManager()->CreateRenderFrameProxy(instance); | 4161 GetRenderManager()->CreateRenderFrameProxy(instance); |
4162 } else { | 4162 } else { |
4163 GetRenderManager()->CreateRenderFrame( | 4163 GetRenderManager()->CreateRenderFrame( |
4164 instance, nullptr, | 4164 instance, nullptr, CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN, |
4165 CREATE_RF_SWAPPED_OUT | CREATE_RF_FOR_MAIN_FRAME_NAVIGATION | | |
4166 CREATE_RF_HIDDEN, | |
4167 &render_view_routing_id); | 4165 &render_view_routing_id); |
4168 } | 4166 } |
4169 return render_view_routing_id; | 4167 return render_view_routing_id; |
4170 } | 4168 } |
4171 | 4169 |
4172 void WebContentsImpl::OnUserGesture() { | 4170 void WebContentsImpl::OnUserGesture() { |
4173 // Notify observers. | 4171 // Notify observers. |
4174 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidGetUserGesture()); | 4172 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidGetUserGesture()); |
4175 | 4173 |
4176 ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get(); | 4174 ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get(); |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4329 const GURL& url) { | 4327 const GURL& url) { |
4330 return scoped_ptr<WebUIImpl>(static_cast<WebUIImpl*>(CreateWebUI( | 4328 return scoped_ptr<WebUIImpl>(static_cast<WebUIImpl*>(CreateWebUI( |
4331 url, std::string()))); | 4329 url, std::string()))); |
4332 } | 4330 } |
4333 | 4331 |
4334 NavigationEntry* | 4332 NavigationEntry* |
4335 WebContentsImpl::GetLastCommittedNavigationEntryForRenderManager() { | 4333 WebContentsImpl::GetLastCommittedNavigationEntryForRenderManager() { |
4336 return controller_.GetLastCommittedEntry(); | 4334 return controller_.GetLastCommittedEntry(); |
4337 } | 4335 } |
4338 | 4336 |
4339 bool WebContentsImpl::CreateRenderViewForRenderManager( | 4337 void WebContentsImpl::CreateRenderWidgetHostViewForRenderManager( |
4340 RenderViewHost* render_view_host, | 4338 RenderViewHost* render_view_host) { |
4341 int opener_frame_routing_id, | 4339 RenderWidgetHostViewBase* rwh_view = nullptr; |
4342 int proxy_routing_id, | |
4343 const FrameReplicationState& replicated_frame_state, | |
4344 bool for_main_frame_navigation) { | |
4345 TRACE_EVENT0("browser,navigation", | |
4346 "WebContentsImpl::CreateRenderViewForRenderManager"); | |
4347 // Can be NULL during tests. | |
4348 RenderWidgetHostViewBase* rwh_view; | |
4349 // TODO(kenrb): RenderWidgetHostViewChildFrame special casing is temporary | |
4350 // until RenderWidgetHost is attached to RenderFrameHost. We need to special | |
4351 // case this because RWH is still a base class of RenderViewHost, and child | |
4352 // frame RWHVs are unique in that they do not have their own WebContents. | |
4353 bool is_guest_in_site_per_process = | 4340 bool is_guest_in_site_per_process = |
4354 !!browser_plugin_guest_.get() && | 4341 !!browser_plugin_guest_.get() && |
4355 BrowserPluginGuestMode::UseCrossProcessFramesForGuests(); | 4342 BrowserPluginGuestMode::UseCrossProcessFramesForGuests(); |
4356 if (!for_main_frame_navigation || is_guest_in_site_per_process) { | 4343 if (is_guest_in_site_per_process) { |
4357 RenderWidgetHostViewChildFrame* rwh_view_child = | 4344 RenderWidgetHostViewChildFrame* rwh_view_child = |
4358 new RenderWidgetHostViewChildFrame(render_view_host); | 4345 new RenderWidgetHostViewChildFrame(render_view_host); |
4359 rwh_view = rwh_view_child; | 4346 rwh_view = rwh_view_child; |
4360 } else { | 4347 } else { |
4361 rwh_view = view_->CreateViewForWidget(render_view_host, false); | 4348 rwh_view = view_->CreateViewForWidget(render_view_host, false); |
4362 } | 4349 } |
4363 | 4350 |
4364 // Now that the RenderView has been created, we need to tell it its size. | 4351 // Now that the RenderView has been created, we need to tell it its size. |
4365 if (rwh_view) | 4352 if (rwh_view) |
4366 rwh_view->SetSize(GetSizeForNewRenderView()); | 4353 rwh_view->SetSize(GetSizeForNewRenderView()); |
| 4354 } |
| 4355 |
| 4356 bool WebContentsImpl::CreateRenderViewForRenderManager( |
| 4357 RenderViewHost* render_view_host, |
| 4358 int opener_frame_routing_id, |
| 4359 int proxy_routing_id, |
| 4360 const FrameReplicationState& replicated_frame_state) { |
| 4361 TRACE_EVENT0("browser,navigation", |
| 4362 "WebContentsImpl::CreateRenderViewForRenderManager"); |
| 4363 |
| 4364 if (proxy_routing_id == MSG_ROUTING_NONE) |
| 4365 CreateRenderWidgetHostViewForRenderManager(render_view_host); |
4367 | 4366 |
4368 // Make sure we use the correct starting page_id in the new RenderView. | 4367 // Make sure we use the correct starting page_id in the new RenderView. |
4369 UpdateMaxPageIDIfNecessary(render_view_host); | 4368 UpdateMaxPageIDIfNecessary(render_view_host); |
4370 int32 max_page_id = | 4369 int32 max_page_id = |
4371 GetMaxPageIDForSiteInstance(render_view_host->GetSiteInstance()); | 4370 GetMaxPageIDForSiteInstance(render_view_host->GetSiteInstance()); |
4372 | 4371 |
4373 if (!static_cast<RenderViewHostImpl*>(render_view_host) | 4372 if (!static_cast<RenderViewHostImpl*>(render_view_host) |
4374 ->CreateRenderView(opener_frame_routing_id, proxy_routing_id, | 4373 ->CreateRenderView(opener_frame_routing_id, proxy_routing_id, |
4375 max_page_id, replicated_frame_state, | 4374 max_page_id, replicated_frame_state, |
4376 created_with_opener_)) { | 4375 created_with_opener_)) { |
4377 return false; | 4376 return false; |
4378 } | 4377 } |
4379 | 4378 |
4380 SetHistoryOffsetAndLengthForView(render_view_host, | 4379 SetHistoryOffsetAndLengthForView(render_view_host, |
4381 controller_.GetLastCommittedEntryIndex(), | 4380 controller_.GetLastCommittedEntryIndex(), |
4382 controller_.GetEntryCount()); | 4381 controller_.GetEntryCount()); |
4383 | 4382 |
4384 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) | 4383 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) |
4385 // Force a ViewMsg_Resize to be sent, needed to make plugins show up on | 4384 // Force a ViewMsg_Resize to be sent, needed to make plugins show up on |
4386 // linux. See crbug.com/83941. | 4385 // linux. See crbug.com/83941. |
| 4386 RenderWidgetHostView* rwh_view = render_view_host->GetView(); |
4387 if (rwh_view) { | 4387 if (rwh_view) { |
4388 if (RenderWidgetHost* render_widget_host = rwh_view->GetRenderWidgetHost()) | 4388 if (RenderWidgetHost* render_widget_host = rwh_view->GetRenderWidgetHost()) |
4389 render_widget_host->WasResized(); | 4389 render_widget_host->WasResized(); |
4390 } | 4390 } |
4391 #endif | 4391 #endif |
4392 | 4392 |
4393 return true; | 4393 return true; |
4394 } | 4394 } |
4395 | 4395 |
4396 bool WebContentsImpl::CreateRenderFrameForRenderManager( | 4396 bool WebContentsImpl::CreateRenderFrameForRenderManager( |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4428 if (!web_contents_android) { | 4428 if (!web_contents_android) { |
4429 web_contents_android = new WebContentsAndroid(this); | 4429 web_contents_android = new WebContentsAndroid(this); |
4430 SetUserData(kWebContentsAndroidKey, web_contents_android); | 4430 SetUserData(kWebContentsAndroidKey, web_contents_android); |
4431 } | 4431 } |
4432 return web_contents_android; | 4432 return web_contents_android; |
4433 } | 4433 } |
4434 | 4434 |
4435 bool WebContentsImpl::CreateRenderViewForInitialEmptyDocument() { | 4435 bool WebContentsImpl::CreateRenderViewForInitialEmptyDocument() { |
4436 return CreateRenderViewForRenderManager( | 4436 return CreateRenderViewForRenderManager( |
4437 GetRenderViewHost(), MSG_ROUTING_NONE, MSG_ROUTING_NONE, | 4437 GetRenderViewHost(), MSG_ROUTING_NONE, MSG_ROUTING_NONE, |
4438 frame_tree_.root()->current_replication_state(), true); | 4438 frame_tree_.root()->current_replication_state()); |
4439 } | 4439 } |
4440 | 4440 |
4441 #elif defined(OS_MACOSX) | 4441 #elif defined(OS_MACOSX) |
4442 | 4442 |
4443 void WebContentsImpl::SetAllowOtherViews(bool allow) { | 4443 void WebContentsImpl::SetAllowOtherViews(bool allow) { |
4444 view_->SetAllowOtherViews(allow); | 4444 view_->SetAllowOtherViews(allow); |
4445 } | 4445 } |
4446 | 4446 |
4447 bool WebContentsImpl::GetAllowOtherViews() { | 4447 bool WebContentsImpl::GetAllowOtherViews() { |
4448 return view_->GetAllowOtherViews(); | 4448 return view_->GetAllowOtherViews(); |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4621 return NULL; | 4621 return NULL; |
4622 } | 4622 } |
4623 | 4623 |
4624 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { | 4624 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { |
4625 force_disable_overscroll_content_ = force_disable; | 4625 force_disable_overscroll_content_ = force_disable; |
4626 if (view_) | 4626 if (view_) |
4627 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); | 4627 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); |
4628 } | 4628 } |
4629 | 4629 |
4630 } // namespace content | 4630 } // namespace content |
OLD | NEW |