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