Chromium Code Reviews| 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 int proxy_routing_id) { |
|
Charlie Reis
2015/08/28 18:58:26
I'm confused. proxy_routing_id isn't used in this
lfg
2015/08/28 21:18:40
Changed it to pass a bool.
| |
| 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 (proxy_routing_id == MSG_ROUTING_NONE) { |
|
Charlie Reis
2015/08/28 18:58:26
If it's not MSG_ROUTING_NONE (and we're not in a g
lfg
2015/08/28 21:18:40
The guest case is an unfortunate exception, where
| |
| 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; | |
| 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(render_view_host, | |
| 4377 proxy_routing_id); | |
| 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 |