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