Index: chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc |
diff --git a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc |
index bb82828623909b202a6c7492ce0966a5eadced09..15ea34cf2ea0606e30be13e144d70aad25ab8531 100644 |
--- a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc |
+++ b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc |
@@ -19,6 +19,7 @@ |
#include "chrome/browser/renderer_host/chrome_extension_message_filter.h" |
#include "chrome/browser/sync_file_system/local/sync_file_system_backend.h" |
#include "chrome/common/chrome_constants.h" |
+#include "chrome/common/chrome_switches.h" |
#include "chrome/common/extensions/extension_process_policy.h" |
#include "components/guest_view/browser/guest_view_message_filter.h" |
#include "content/public/browser/browser_thread.h" |
@@ -184,6 +185,26 @@ bool ChromeContentBrowserClientExtensionsPart::ShouldUseProcessPerSite( |
} |
// static |
+bool ChromeContentBrowserClientExtensionsPart::DoesSiteRequireDedicatedProcess( |
+ content::BrowserContext* browser_context, |
+ const GURL& effective_site_url) { |
+ if (effective_site_url.SchemeIs(extensions::kExtensionScheme)) { |
+ // --isolate-extensions should isolate extensions, except for hosted apps. |
+ // Isolating hosted apps is a good idea, but ought to be a separate knob. |
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
+ ::switches::kIsolateExtensions)) { |
+ const Extension* extension = |
+ ExtensionRegistry::Get(browser_context) |
+ ->enabled_extensions() |
+ .GetExtensionOrAppByURL(effective_site_url); |
+ if (extension && !extension->is_hosted_app()) |
+ return true; |
+ } |
+ } |
+ return false; |
+} |
+ |
+// static |
bool ChromeContentBrowserClientExtensionsPart::ShouldLockToOrigin( |
content::BrowserContext* browser_context, |
const GURL& effective_site_url) { |