Use process-per-app-instance for hosted apps without background permission.
Also update ExtensionProcessManager to map SiteInstances to extensions,
rather than extensions to processes.
BUG=87644
TEST=AppApiTest.AppProcessInstances
Review URL: http://codereview.chromium.org/7328029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@92099 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index 5748626..8449ce37 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -2171,12 +2171,16 @@
}
bool ExtensionService::ExtensionBindingsAllowed(const GURL& url) {
- // Allow bindings for all packaged extension.
- if (GetExtensionByURL(url))
+ // Allow bindings for all packaged extensions.
+ // Note that GetExtensionByURL may return an Extension for hosted apps
+ // if the URL came from GetEffectiveURL.
+ const Extension* extension = GetExtensionByURL(url);
+ if (extension && extension->GetType() != Extension::TYPE_HOSTED_APP)
return true;
// Allow bindings for all component, hosted apps.
- const Extension* extension = GetExtensionByWebExtent(url);
+ if (!extension)
+ extension = GetExtensionByWebExtent(url);
return (extension && extension->location() == Extension::COMPONENT);
}