| 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);
|
|
|
|
|