diff options
Diffstat (limited to 'chromium/content/browser/site_instance_impl.cc')
-rw-r--r-- | chromium/content/browser/site_instance_impl.cc | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/chromium/content/browser/site_instance_impl.cc b/chromium/content/browser/site_instance_impl.cc index 6be22050f5c..68f9dbe8532 100644 --- a/chromium/content/browser/site_instance_impl.cc +++ b/chromium/content/browser/site_instance_impl.cc @@ -364,10 +364,13 @@ GURL SiteInstance::GetSiteForURL(BrowserContext* browser_context, url::Origin origin(url); // Isolated origins should use the full origin as their site URL. A subdomain - // of an isolated origin should also use that isolated origin's site URL. + // of an isolated origin should also use that isolated origin's site URL. It + // is important to check |url| rather than |real_url| here, since some + // effective URLs (such as for NTP) need to be resolved prior to the isolated + // origin lookup. auto* policy = ChildProcessSecurityPolicyImpl::GetInstance(); url::Origin isolated_origin; - if (policy->GetMatchingIsolatedOrigin(url::Origin(real_url), + if (policy->GetMatchingIsolatedOrigin(url::Origin(url), &isolated_origin)) { return isolated_origin.GetURL(); } @@ -397,14 +400,10 @@ GURL SiteInstance::GetSiteForURL(BrowserContext* browser_context, // static GURL SiteInstanceImpl::GetEffectiveURL(BrowserContext* browser_context, const GURL& url) { - // Don't resolve URLs corresponding to isolated origins, as isolated origins - // take precedence over hosted apps. auto* policy = ChildProcessSecurityPolicyImpl::GetInstance(); - if (policy->IsIsolatedOrigin(url::Origin(url))) - return url; - - return GetContentClient()->browser()-> - GetEffectiveURL(browser_context, url); + bool is_isolated_origin = policy->IsIsolatedOrigin(url::Origin(url)); + return GetContentClient()->browser()->GetEffectiveURL(browser_context, url, + is_isolated_origin); } // static |