diff options
author | creis@chromium.org <creis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-25 20:17:22 +0000 |
---|---|---|
committer | creis@chromium.org <creis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-25 20:17:22 +0000 |
commit | a8c269a4ca75cf1d42cca46f117609fedf80dc26 (patch) | |
tree | 4dfc8765d8e26c0042e7f432c5324d08e27b631a /content/renderer/render_view_impl.cc | |
parent | c44af190c3f8b284155b9e18e44830a2b521e2f9 (diff) | |
download | chromium_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.cc | 13 |
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 && |