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 4153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4164 source_id); | 4164 source_id); |
4165 } | 4165 } |
4166 | 4166 |
4167 int WebContentsImpl::CreateSwappedOutRenderView( | 4167 int WebContentsImpl::CreateSwappedOutRenderView( |
4168 SiteInstance* instance) { | 4168 SiteInstance* instance) { |
4169 int render_view_routing_id = MSG_ROUTING_NONE; | 4169 int render_view_routing_id = MSG_ROUTING_NONE; |
4170 if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { | 4170 if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) { |
4171 GetRenderManager()->CreateRenderFrameProxy(instance); | 4171 GetRenderManager()->CreateRenderFrameProxy(instance); |
4172 } else { | 4172 } else { |
4173 GetRenderManager()->CreateRenderFrame( | 4173 GetRenderManager()->CreateRenderFrame( |
4174 instance, nullptr, | 4174 instance, nullptr, CREATE_RF_SWAPPED_OUT | CREATE_RF_HIDDEN, |
4175 CREATE_RF_SWAPPED_OUT | CREATE_RF_FOR_MAIN_FRAME_NAVIGATION | | |
4176 CREATE_RF_HIDDEN, | |
4177 &render_view_routing_id); | 4175 &render_view_routing_id); |
4178 } | 4176 } |
4179 return render_view_routing_id; | 4177 return render_view_routing_id; |
4180 } | 4178 } |
4181 | 4179 |
4182 void WebContentsImpl::OnUserGesture() { | 4180 void WebContentsImpl::OnUserGesture() { |
4183 // Notify observers. | 4181 // Notify observers. |
4184 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidGetUserGesture()); | 4182 FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidGetUserGesture()); |
4185 | 4183 |
4186 ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get(); | 4184 ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get(); |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4338 scoped_ptr<WebUIImpl> WebContentsImpl::CreateWebUIForRenderManager( | 4336 scoped_ptr<WebUIImpl> WebContentsImpl::CreateWebUIForRenderManager( |
4339 const GURL& url) { | 4337 const GURL& url) { |
4340 return scoped_ptr<WebUIImpl>(static_cast<WebUIImpl*>(CreateWebUI(url))); | 4338 return scoped_ptr<WebUIImpl>(static_cast<WebUIImpl*>(CreateWebUI(url))); |
4341 } | 4339 } |
4342 | 4340 |
4343 NavigationEntry* | 4341 NavigationEntry* |
4344 WebContentsImpl::GetLastCommittedNavigationEntryForRenderManager() { | 4342 WebContentsImpl::GetLastCommittedNavigationEntryForRenderManager() { |
4345 return controller_.GetLastCommittedEntry(); | 4343 return controller_.GetLastCommittedEntry(); |
4346 } | 4344 } |
4347 | 4345 |
4348 bool WebContentsImpl::CreateRenderViewForRenderManager( | 4346 bool WebContentsImpl::CreateRenderWidgetHostViewForRenderManager( |
4349 RenderViewHost* render_view_host, | 4347 RenderViewHost* render_view_host, |
4350 int opener_frame_routing_id, | 4348 bool main_frame_is_proxy) { |
Charlie Reis
2015/08/31 19:02:51
Hmm, I'm not happy with this. The name leads to s
lfg
2015/09/02 00:32:17
Done.
| |
4351 int proxy_routing_id, | 4349 RenderWidgetHostViewBase* rwh_view = nullptr; |
4352 const FrameReplicationState& replicated_frame_state, | |
4353 bool for_main_frame_navigation) { | |
4354 TRACE_EVENT0("browser,navigation", | |
4355 "WebContentsImpl::CreateRenderViewForRenderManager"); | |
4356 // Can be NULL during tests. | |
4357 RenderWidgetHostViewBase* rwh_view; | |
4358 // TODO(kenrb): RenderWidgetHostViewChildFrame special casing is temporary | |
4359 // until RenderWidgetHost is attached to RenderFrameHost. We need to special | |
4360 // case this because RWH is still a base class of RenderViewHost, and child | |
4361 // frame RWHVs are unique in that they do not have their own WebContents. | |
4362 bool is_guest_in_site_per_process = | 4350 bool is_guest_in_site_per_process = |
4363 !!browser_plugin_guest_.get() && | 4351 !!browser_plugin_guest_.get() && |
4364 BrowserPluginGuestMode::UseCrossProcessFramesForGuests(); | 4352 BrowserPluginGuestMode::UseCrossProcessFramesForGuests(); |
4365 if (!for_main_frame_navigation || is_guest_in_site_per_process) { | 4353 if (is_guest_in_site_per_process) { |
4366 RenderWidgetHostViewChildFrame* rwh_view_child = | 4354 RenderWidgetHostViewChildFrame* rwh_view_child = |
4367 new RenderWidgetHostViewChildFrame(render_view_host); | 4355 new RenderWidgetHostViewChildFrame(render_view_host); |
4368 rwh_view = rwh_view_child; | 4356 rwh_view = rwh_view_child; |
4369 } else { | 4357 } else if (!main_frame_is_proxy) { |
4370 rwh_view = view_->CreateViewForWidget(render_view_host, false); | 4358 rwh_view = view_->CreateViewForWidget(render_view_host, false); |
4371 } | 4359 } |
4372 | 4360 |
4373 // Now that the RenderView has been created, we need to tell it its size. | 4361 // Now that the RenderView has been created, we need to tell it its size. |
4374 if (rwh_view) | 4362 if (rwh_view) |
4375 rwh_view->SetSize(GetSizeForNewRenderView()); | 4363 rwh_view->SetSize(GetSizeForNewRenderView()); |
4376 | 4364 |
4365 return !!rwh_view; | |
Charlie Reis
2015/08/31 19:02:51
No one seems to check the return value. Seems lik
lfg
2015/09/02 00:32:17
Done.
| |
4366 } | |
4367 | |
4368 bool WebContentsImpl::CreateRenderViewForRenderManager( | |
4369 RenderViewHost* render_view_host, | |
4370 int opener_frame_routing_id, | |
4371 int proxy_routing_id, | |
4372 const FrameReplicationState& replicated_frame_state) { | |
4373 TRACE_EVENT0("browser,navigation", | |
4374 "WebContentsImpl::CreateRenderViewForRenderManager"); | |
4375 | |
4376 CreateRenderWidgetHostViewForRenderManager( | |
4377 render_view_host, proxy_routing_id != MSG_ROUTING_NONE); | |
Charlie Reis
2015/08/31 19:02:51
What if this were for a subframe? We would be pas
lfg
2015/09/02 00:32:17
This can't be a subframe and have a proxy_routing_
| |
4378 | |
4377 // Make sure we use the correct starting page_id in the new RenderView. | 4379 // Make sure we use the correct starting page_id in the new RenderView. |
4378 UpdateMaxPageIDIfNecessary(render_view_host); | 4380 UpdateMaxPageIDIfNecessary(render_view_host); |
4379 int32 max_page_id = | 4381 int32 max_page_id = |
4380 GetMaxPageIDForSiteInstance(render_view_host->GetSiteInstance()); | 4382 GetMaxPageIDForSiteInstance(render_view_host->GetSiteInstance()); |
4381 | 4383 |
4382 if (!static_cast<RenderViewHostImpl*>(render_view_host) | 4384 if (!static_cast<RenderViewHostImpl*>(render_view_host) |
4383 ->CreateRenderView(opener_frame_routing_id, proxy_routing_id, | 4385 ->CreateRenderView(opener_frame_routing_id, proxy_routing_id, |
4384 max_page_id, replicated_frame_state, | 4386 max_page_id, replicated_frame_state, |
4385 created_with_opener_)) { | 4387 created_with_opener_)) { |
4386 return false; | 4388 return false; |
4387 } | 4389 } |
4388 | 4390 |
4389 SetHistoryOffsetAndLengthForView(render_view_host, | 4391 SetHistoryOffsetAndLengthForView(render_view_host, |
4390 controller_.GetLastCommittedEntryIndex(), | 4392 controller_.GetLastCommittedEntryIndex(), |
4391 controller_.GetEntryCount()); | 4393 controller_.GetEntryCount()); |
4392 | 4394 |
4393 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) | 4395 #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) |
4394 // Force a ViewMsg_Resize to be sent, needed to make plugins show up on | 4396 // Force a ViewMsg_Resize to be sent, needed to make plugins show up on |
4395 // linux. See crbug.com/83941. | 4397 // linux. See crbug.com/83941. |
4398 RenderWidgetHostView* rwh_view = render_view_host->GetView(); | |
4396 if (rwh_view) { | 4399 if (rwh_view) { |
4397 if (RenderWidgetHost* render_widget_host = rwh_view->GetRenderWidgetHost()) | 4400 if (RenderWidgetHost* render_widget_host = rwh_view->GetRenderWidgetHost()) |
4398 render_widget_host->WasResized(); | 4401 render_widget_host->WasResized(); |
4399 } | 4402 } |
4400 #endif | 4403 #endif |
4401 | 4404 |
4402 return true; | 4405 return true; |
4403 } | 4406 } |
4404 | 4407 |
4405 bool WebContentsImpl::CreateRenderFrameForRenderManager( | 4408 bool WebContentsImpl::CreateRenderFrameForRenderManager( |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4437 if (!web_contents_android) { | 4440 if (!web_contents_android) { |
4438 web_contents_android = new WebContentsAndroid(this); | 4441 web_contents_android = new WebContentsAndroid(this); |
4439 SetUserData(kWebContentsAndroidKey, web_contents_android); | 4442 SetUserData(kWebContentsAndroidKey, web_contents_android); |
4440 } | 4443 } |
4441 return web_contents_android; | 4444 return web_contents_android; |
4442 } | 4445 } |
4443 | 4446 |
4444 bool WebContentsImpl::CreateRenderViewForInitialEmptyDocument() { | 4447 bool WebContentsImpl::CreateRenderViewForInitialEmptyDocument() { |
4445 return CreateRenderViewForRenderManager( | 4448 return CreateRenderViewForRenderManager( |
4446 GetRenderViewHost(), MSG_ROUTING_NONE, MSG_ROUTING_NONE, | 4449 GetRenderViewHost(), MSG_ROUTING_NONE, MSG_ROUTING_NONE, |
4447 frame_tree_.root()->current_replication_state(), true); | 4450 frame_tree_.root()->current_replication_state()); |
4448 } | 4451 } |
4449 | 4452 |
4450 #elif defined(OS_MACOSX) | 4453 #elif defined(OS_MACOSX) |
4451 | 4454 |
4452 void WebContentsImpl::SetAllowOtherViews(bool allow) { | 4455 void WebContentsImpl::SetAllowOtherViews(bool allow) { |
4453 view_->SetAllowOtherViews(allow); | 4456 view_->SetAllowOtherViews(allow); |
4454 } | 4457 } |
4455 | 4458 |
4456 bool WebContentsImpl::GetAllowOtherViews() { | 4459 bool WebContentsImpl::GetAllowOtherViews() { |
4457 return view_->GetAllowOtherViews(); | 4460 return view_->GetAllowOtherViews(); |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4615 player_map->erase(it); | 4618 player_map->erase(it); |
4616 } | 4619 } |
4617 | 4620 |
4618 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { | 4621 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { |
4619 force_disable_overscroll_content_ = force_disable; | 4622 force_disable_overscroll_content_ = force_disable; |
4620 if (view_) | 4623 if (view_) |
4621 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); | 4624 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); |
4622 } | 4625 } |
4623 | 4626 |
4624 } // namespace content | 4627 } // namespace content |
OLD | NEW |