Index: content/browser/site_instance_impl.cc |
diff --git a/content/browser/site_instance_impl.cc b/content/browser/site_instance_impl.cc |
index 897864031ae74fa162c4d3a6e3b8a4fa2779c626..a55d786e8dbdf1cd40d30ba643cda5432aeb95f7 100644 |
--- a/content/browser/site_instance_impl.cc |
+++ b/content/browser/site_instance_impl.cc |
@@ -368,15 +368,18 @@ GURL SiteInstanceImpl::GetEffectiveURL(BrowserContext* browser_context, |
// static |
bool SiteInstanceImpl::DoesSiteRequireDedicatedProcess( |
BrowserContext* browser_context, |
- const GURL& effective_url) { |
+ const GURL& url) { |
// If --site-per-process is enabled, site isolation is enabled everywhere. |
if (SiteIsolationPolicy::UseDedicatedProcessesForAllSites()) |
return true; |
- // Let the content embedder enable site isolation for specific URLs. |
+ // Let the content embedder enable site isolation for specific URLs. Use the |
+ // canonical site url for this check, so that schemes with nested origins |
+ // (blob and filesystem) work properly. |
+ GURL site_url = GetSiteForURL(browser_context, url); |
if (GetContentClient()->IsSupplementarySiteIsolationModeEnabled() && |
GetContentClient()->browser()->DoesSiteRequireDedicatedProcess( |
- browser_context, effective_url)) { |
+ browser_context, site_url)) { |
return true; |
} |