| Index: content/renderer/render_view_impl.cc
|
| diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
|
| index 56a719eb8be62f6cf566b47f515741e7ea1e2f46..6e63184eb339dabc683d04e198474d0fe8f328b3 100644
|
| --- a/content/renderer/render_view_impl.cc
|
| +++ b/content/renderer/render_view_impl.cc
|
| @@ -766,15 +766,26 @@ void RenderViewImpl::Initialize(RenderViewImplParams* params) {
|
| main_render_frame_->set_render_frame_proxy(proxy);
|
| }
|
|
|
| + bool is_site_per_process =
|
| + CommandLine::ForCurrentProcess()->HasSwitch(switches::kSitePerProcess);
|
| +
|
| // In --site-per-process, just use the WebRemoteFrame as the main frame.
|
| - if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kSitePerProcess) &&
|
| - proxy) {
|
| + if (is_site_per_process && proxy) {
|
| webview()->setMainFrame(proxy->web_frame());
|
| } else {
|
| webview()->setMainFrame(main_render_frame_->GetWebFrame());
|
| }
|
| main_render_frame_->Initialize();
|
|
|
| + // In --site-per-process, the browser process passes us state replicated from
|
| + // the process where this frame is being rendered. Use this to initialize
|
| + // the remote frame's security origin.
|
| + if (is_site_per_process && proxy) {
|
| + proxy->web_frame()->setReplicatedOrigin(
|
| + blink::WebURL(GURL(params->remote_frame_state.origin.string())),
|
| + params->remote_frame_state.is_unique_origin);
|
| + }
|
| +
|
| if (switches::IsTouchDragDropEnabled())
|
| webview()->settings()->setTouchDragDropEnabled(true);
|
|
|
| @@ -1142,7 +1153,8 @@ RenderViewImpl* RenderViewImpl::Create(
|
| bool hidden,
|
| bool never_visible,
|
| int32 next_page_id,
|
| - const blink::WebScreenInfo& screen_info) {
|
| + const blink::WebScreenInfo& screen_info,
|
| + const FrameReplicationState& remote_frame_state) {
|
| DCHECK(routing_id != MSG_ROUTING_NONE);
|
| RenderViewImplParams params(opener_id,
|
| window_was_created_with_opener,
|
| @@ -1159,7 +1171,8 @@ RenderViewImpl* RenderViewImpl::Create(
|
| hidden,
|
| never_visible,
|
| next_page_id,
|
| - screen_info);
|
| + screen_info,
|
| + remote_frame_state);
|
| RenderViewImpl* render_view = NULL;
|
| if (g_create_render_view_impl)
|
| render_view = g_create_render_view_impl(¶ms);
|
| @@ -1693,7 +1706,8 @@ WebView* RenderViewImpl::createView(WebLocalFrame* creator,
|
| params.disposition == NEW_BACKGROUND_TAB, // hidden
|
| never_visible,
|
| 1, // next_page_id
|
| - screen_info_);
|
| + screen_info_,
|
| + FrameReplicationState()); // empty since swapped_out is false
|
| view->opened_by_user_gesture_ = params.user_gesture;
|
|
|
| // Record whether the creator frame is trying to suppress the opener field.
|
|
|