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

Unified Diff: content/renderer/render_view_impl.cc

Issue 1142123002: Remove swapped-out usage in --site-per-process. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Another round of fixes. Created 5 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/render_view_browsertest.cc ('k') | content/test/test_render_frame_host.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_view_impl.cc
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 53ba225f7281ccaee4461a09ec72ed48764a1fe4..1c4f80986a415dd37d513d931e8b88a2641d3019 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -638,6 +638,7 @@ RenderViewImpl::RenderViewImpl(const ViewMsg_New_Params& params)
top_controls_constraints_(TOP_CONTROLS_STATE_BOTH),
#endif
has_scrolled_focused_editable_node_into_rect_(false),
+ main_render_frame_(nullptr),
speech_recognition_dispatcher_(NULL),
mouse_lock_dispatcher_(NULL),
#if defined(OS_ANDROID)
@@ -668,24 +669,58 @@ void RenderViewImpl::Initialize(const ViewMsg_New_Params& params,
// Ensure we start with a valid next_page_id_ from the browser.
DCHECK_GE(next_page_id_, 0);
- main_render_frame_ = RenderFrameImpl::Create(
- this, params.main_frame_routing_id);
- // The main frame WebLocalFrame object is closed by
- // RenderFrameImpl::frameDetached().
- WebLocalFrame* web_frame = WebLocalFrame::create(
- blink::WebTreeScopeType::Document, main_render_frame_);
- main_render_frame_->SetWebFrame(web_frame);
+ if (params.main_frame_routing_id != MSG_ROUTING_NONE) {
+ main_render_frame_ = RenderFrameImpl::Create(
+ this, params.main_frame_routing_id);
+ // The main frame WebLocalFrame object is closed by
+ // RenderFrameImpl::frameDetached().
+ WebLocalFrame* web_frame = WebLocalFrame::create(
+ blink::WebTreeScopeType::Document, main_render_frame_);
+ main_render_frame_->SetWebFrame(web_frame);
+ }
compositor_deps_ = compositor_deps;
webwidget_ = WebView::create(this);
webwidget_mouse_lock_target_.reset(new WebWidgetLockTarget(webwidget_));
+ g_view_map.Get().insert(std::make_pair(webview(), this));
+ g_routing_id_view_map.Get().insert(std::make_pair(routing_id_, this));
+
const base::CommandLine& command_line =
*base::CommandLine::ForCurrentProcess();
if (command_line.HasSwitch(switches::kStatsCollectionController))
stats_collection_observer_.reset(new StatsCollectionObserver(this));
+ RenderFrameProxy* proxy = NULL;
+ if (params.proxy_routing_id != MSG_ROUTING_NONE) {
+ CHECK(params.swapped_out);
+ if (main_render_frame_) {
+ proxy = RenderFrameProxy::CreateProxyToReplaceFrame(
+ main_render_frame_, params.proxy_routing_id,
+ blink::WebTreeScopeType::Document);
+ main_render_frame_->set_render_frame_proxy(proxy);
+ } else {
+ proxy = RenderFrameProxy::CreateFrameProxy(
+ params.proxy_routing_id,
+ MSG_ROUTING_NONE,
+ routing_id_,
+ params.replicated_frame_state);
+ }
+ }
+
+ // In --site-per-process, just use the WebRemoteFrame as the main frame.
+ if (command_line.HasSwitch(switches::kSitePerProcess) && proxy) {
+ webview()->setMainFrame(proxy->web_frame());
+ // Initialize the WebRemoteFrame with information replicated from the
+ // browser process.
+ proxy->SetReplicatedState(params.replicated_frame_state);
+ } else {
+ webview()->setMainFrame(main_render_frame_->GetWebFrame());
+ }
+ if (main_render_frame_)
+ main_render_frame_->Initialize();
+
#if defined(OS_ANDROID)
content_detectors_.push_back(linked_ptr<ContentDetector>(
new AddressDetector()));
@@ -717,8 +752,6 @@ void RenderViewImpl::Initialize(const ViewMsg_New_Params& params,
CompleteInit();
}
- g_view_map.Get().insert(std::make_pair(webview(), this));
- g_routing_id_view_map.Get().insert(std::make_pair(routing_id_, this));
webview()->setDeviceScaleFactor(device_scale_factor_);
webview()->setDisplayMode(display_mode_);
webview()->settings()->setPreferCompositingToLCDTextEnabled(
@@ -730,26 +763,6 @@ void RenderViewImpl::Initialize(const ViewMsg_New_Params& params,
ApplyWebPreferences(webkit_preferences_, webview());
- RenderFrameProxy* proxy = NULL;
- if (params.proxy_routing_id != MSG_ROUTING_NONE) {
- CHECK(params.swapped_out);
- proxy = RenderFrameProxy::CreateProxyToReplaceFrame(
- main_render_frame_, params.proxy_routing_id,
- blink::WebTreeScopeType::Document);
- main_render_frame_->set_render_frame_proxy(proxy);
- }
-
- // In --site-per-process, just use the WebRemoteFrame as the main frame.
- if (command_line.HasSwitch(switches::kSitePerProcess) && proxy) {
- webview()->setMainFrame(proxy->web_frame());
- // Initialize the WebRemoteFrame with information replicated from the
- // browser process.
- proxy->SetReplicatedState(params.replicated_frame_state);
- } else {
- webview()->setMainFrame(main_render_frame_->GetWebFrame());
- }
- main_render_frame_->Initialize();
-
if (switches::IsTouchDragDropEnabled())
webview()->settings()->setTouchDragDropEnabled(true);
« no previous file with comments | « content/renderer/render_view_browsertest.cc ('k') | content/test/test_render_frame_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698