summaryrefslogtreecommitdiffstats
path: root/content/renderer/render_view_impl.cc
diff options
context:
space:
mode:
authorcreis@chromium.org <creis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-25 20:17:22 +0000
committercreis@chromium.org <creis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-25 20:17:22 +0000
commita8c269a4ca75cf1d42cca46f117609fedf80dc26 (patch)
tree4dfc8765d8e26c0042e7f432c5324d08e27b631a /content/renderer/render_view_impl.cc
parentc44af190c3f8b284155b9e18e44830a2b521e2f9 (diff)
downloadchromium_src-a8c269a4ca75cf1d42cca46f117609fedf80dc26.zip
chromium_src-a8c269a4ca75cf1d42cca46f117609fedf80dc26.tar.gz
chromium_src-a8c269a4ca75cf1d42cca46f117609fedf80dc26.tar.bz2
Add an experimental --enable-strict-site-isolation flag.
This will ensure each SiteInstance includes only pages from one site, but it will currently break some script calls and navigations. BUG=101508 TEST=Specify flag. Clicking cross-site link should open in new process. Review URL: http://codereview.chromium.org/8379014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107186 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/render_view_impl.cc')
-rw-r--r--content/renderer/render_view_impl.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 083dd0b..a0840fbc7 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -2019,6 +2019,19 @@ WebNavigationPolicy RenderViewImpl::decidePolicyForNavigation(
NavigationState::FromDataSource(frame->provisionalDataSource())->
is_content_initiated();
+ // Experimental:
+ // If --enable-strict-site-isolation is enabled, send all top-level
+ // navigations to the browser to let it swap processes when crossing site
+ // boundaries. This is currently expected to break some script calls and
+ // navigations, such as form submissions.
+ const CommandLine& command_line = *CommandLine::ForCurrentProcess();
+ if (!frame->parent() && (is_content_initiated || is_redirect) &&
+ command_line.HasSwitch(switches::kEnableStrictSiteIsolation)) {
+ GURL referrer(request.httpHeaderField(WebString::fromUTF8("Referer")));
+ OpenURL(frame, url, referrer, default_policy);
+ return WebKit::WebNavigationPolicyIgnore;
+ }
+
// If the browser is interested, then give it a chance to look at top level
// navigations.
if (is_content_initiated &&