| Index: content/browser/site_instance_impl.cc
|
| diff --git a/content/browser/site_instance_impl.cc b/content/browser/site_instance_impl.cc
|
| index b6e6918c0a48d755b0ae631270858c440afd3cb0..102c06758f932e4ab86c9c1ae14e7f613c569e3e 100644
|
| --- a/content/browser/site_instance_impl.cc
|
| +++ b/content/browser/site_instance_impl.cc
|
| @@ -241,10 +241,12 @@ SiteInstance* SiteInstance::CreateForURL(BrowserContext* browser_context,
|
|
|
| /*static*/
|
| bool SiteInstance::IsSameWebSite(BrowserContext* browser_context,
|
| - const GURL& real_url1,
|
| - const GURL& real_url2) {
|
| - GURL url1 = SiteInstanceImpl::GetEffectiveURL(browser_context, real_url1);
|
| - GURL url2 = SiteInstanceImpl::GetEffectiveURL(browser_context, real_url2);
|
| + const GURL& real_src_url,
|
| + const GURL& real_dest_url) {
|
| + GURL src_url = SiteInstanceImpl::GetEffectiveURL(browser_context,
|
| + real_src_url);
|
| + GURL dest_url = SiteInstanceImpl::GetEffectiveURL(browser_context,
|
| + real_dest_url);
|
|
|
| // We infer web site boundaries based on the registered domain name of the
|
| // top-level page and the scheme. We do not pay attention to the port if
|
| @@ -254,20 +256,26 @@ bool SiteInstance::IsSameWebSite(BrowserContext* browser_context,
|
| // Some special URLs will match the site instance of any other URL. This is
|
| // done before checking both of them for validity, since we want these URLs
|
| // to have the same site instance as even an invalid one.
|
| - if (IsRendererDebugURL(url1) || IsRendererDebugURL(url2))
|
| + if (IsRendererDebugURL(src_url) || IsRendererDebugURL(dest_url))
|
| return true;
|
|
|
| // If either URL is invalid, they aren't part of the same site.
|
| - if (!url1.is_valid() || !url2.is_valid())
|
| + if (!src_url.is_valid() || !dest_url.is_valid())
|
| return false;
|
|
|
| + // If the destination url is just a blank page, we treat them as part of the
|
| + // same site.
|
| + GURL blank_page(url::kAboutBlankURL);
|
| + if (dest_url == blank_page)
|
| + return true;
|
| +
|
| // If the schemes differ, they aren't part of the same site.
|
| - if (url1.scheme() != url2.scheme())
|
| + if (src_url.scheme() != dest_url.scheme())
|
| return false;
|
|
|
| return net::registry_controlled_domains::SameDomainOrHost(
|
| - url1,
|
| - url2,
|
| + src_url,
|
| + dest_url,
|
| net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
|
| }
|
|
|
|
|