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

Unified Diff: content/renderer/render_view_impl.cc

Issue 692973005: Pass origin information for remote frame creation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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
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(&params);
@@ -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.

Powered by Google App Engine
This is Rietveld 408576698