Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1228)

Side by Side Diff: content/browser/web_contents/web_contents_impl.cc

Issue 1306053008: Avoid creating a RenderWidgetHostView for proxies. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/browser/web_contents/web_contents_impl.h ('k') | content/test/test_web_contents.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « content/browser/web_contents/web_contents_impl.h ('k') | content/test/test_web_contents.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698