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 a807334effed957da0fdf51ef6ed6ff3b465b5fb..42bbb9a106936592b41504910d4a439716701343 100644 |
--- a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc |
+++ b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc |
@@ -41,6 +41,7 @@ |
#include "extensions/common/manifest_handlers/web_accessible_resources_info.h" |
#include "extensions/common/switches.h" |
+using content::BrowserContext; |
using content::BrowserThread; |
using content::BrowserURLHandler; |
using content::RenderViewHost; |
@@ -65,7 +66,7 @@ enum RenderProcessHostPrivilege { |
RenderProcessHostPrivilege GetPrivilegeRequiredByUrl( |
const GURL& url, |
- ExtensionService* service) { |
+ ExtensionRegistry* registry) { |
// Default to a normal renderer cause it is lower privileged. This should only |
// occur if the URL on a site instance is either malformed, or uninitialized. |
// If it is malformed, then there is no need for better privileges anyways. |
@@ -78,7 +79,8 @@ RenderProcessHostPrivilege GetPrivilegeRequiredByUrl( |
if (!url.SchemeIs(kExtensionScheme)) |
return PRIV_NORMAL; |
- const Extension* extension = service->extensions()->GetByID(url.host()); |
+ const Extension* extension = |
+ registry->GetExtensionById(url.host(), ExtensionRegistry::ENABLED); |
not at google - send to devlin
2014/11/11 20:20:09
Ditto.
Reilly Grant (use Gerrit)
2014/11/11 20:55:31
Done.
|
if (extension && AppIsolationInfo::HasIsolatedStorage(extension)) |
return PRIV_ISOLATED; |
if (extension && extension->is_hosted_app()) |
@@ -89,15 +91,15 @@ RenderProcessHostPrivilege GetPrivilegeRequiredByUrl( |
RenderProcessHostPrivilege GetProcessPrivilege( |
content::RenderProcessHost* process_host, |
ProcessMap* process_map, |
- ExtensionService* service) { |
+ ExtensionRegistry* registry) { |
std::set<std::string> extension_ids = |
process_map->GetExtensionsInProcess(process_host->GetID()); |
if (extension_ids.empty()) |
return PRIV_NORMAL; |
- for (std::set<std::string>::iterator iter = extension_ids.begin(); |
- iter != extension_ids.end(); ++iter) { |
- const Extension* extension = service->GetExtensionById(*iter, false); |
+ for (const std::string& extension_id : extension_ids) { |
+ const Extension* extension = |
+ registry->GetExtensionById(extension_id, ExtensionRegistry::ENABLED); |
if (extension && AppIsolationInfo::HasIsolatedStorage(extension)) |
return PRIV_ISOLATED; |
if (extension && extension->is_hosted_app()) |
@@ -124,13 +126,12 @@ GURL ChromeContentBrowserClientExtensionsPart::GetEffectiveURL( |
// If the input |url| is part of an installed app, the effective URL is an |
// extension URL with the ID of that extension as the host. This has the |
// effect of grouping apps together in a common SiteInstance. |
- ExtensionService* extension_service = |
- ExtensionSystem::Get(profile)->extension_service(); |
- if (!extension_service) |
+ ExtensionRegistry* registry = ExtensionRegistry::Get(profile); |
+ if (!registry) |
return url; |
const Extension* extension = |
- extension_service->extensions()->GetHostedAppByURL(url); |
+ registry->enabled_extensions().GetHostedAppByURL(url); |
if (!extension) |
return url; |
@@ -150,13 +151,12 @@ bool ChromeContentBrowserClientExtensionsPart::ShouldUseProcessPerSite( |
if (!effective_url.SchemeIs(kExtensionScheme)) |
return false; |
- ExtensionService* extension_service = |
- ExtensionSystem::Get(profile)->extension_service(); |
- if (!extension_service) |
+ ExtensionRegistry* registry = ExtensionRegistry::Get(profile); |
+ if (!registry) |
return false; |
- const Extension* extension = |
- extension_service->extensions()->GetExtensionOrAppByURL(effective_url); |
+ const Extension* extension = registry->GetExtensionById( |
not at google - send to devlin
2014/11/11 20:20:09
Ditto.
Reilly Grant (use Gerrit)
2014/11/11 20:55:31
Done.
|
+ effective_url.host(), ExtensionRegistry::ENABLED); |
if (!extension) |
return false; |
@@ -186,20 +186,17 @@ bool ChromeContentBrowserClientExtensionsPart::CanCommitURL( |
// load in any process (e.g., in an iframe). However, the Chrome Web Store |
// cannot be loaded in iframes and should never be requested outside its |
// process. |
- Profile* profile = |
- Profile::FromBrowserContext(process_host->GetBrowserContext()); |
- ExtensionService* service = |
- ExtensionSystem::Get(profile)->extension_service(); |
- if (!service) |
+ ExtensionRegistry* registry = |
+ ExtensionRegistry::Get(process_host->GetBrowserContext()); |
+ if (!registry) |
return true; |
const Extension* new_extension = |
- service->extensions()->GetExtensionOrAppByURL(url); |
- if (new_extension && |
- new_extension->is_hosted_app() && |
+ registry->enabled_extensions().GetExtensionOrAppByURL(url); |
+ if (new_extension && new_extension->is_hosted_app() && |
new_extension->id() == extensions::kWebStoreAppId && |
- !ProcessMap::Get(profile)->Contains( |
- new_extension->id(), process_host->GetID())) { |
+ !ProcessMap::Get(process_host->GetBrowserContext()) |
+ ->Contains(new_extension->id(), process_host->GetID())) { |
return false; |
} |
return true; |
@@ -212,21 +209,20 @@ bool ChromeContentBrowserClientExtensionsPart::IsSuitableHost( |
const GURL& site_url) { |
DCHECK(profile); |
- ExtensionService* service = |
- ExtensionSystem::Get(profile)->extension_service(); |
+ ExtensionRegistry* registry = ExtensionRegistry::Get(profile); |
ProcessMap* process_map = ProcessMap::Get(profile); |
// These may be NULL during tests. In that case, just assume any site can |
// share any host. |
- if (!service || !process_map) |
+ if (!registry || !process_map) |
return true; |
// Otherwise, just make sure the process privilege matches the privilege |
// required by the site. |
RenderProcessHostPrivilege privilege_required = |
- GetPrivilegeRequiredByUrl(site_url, service); |
- return GetProcessPrivilege(process_host, process_map, service) == |
- privilege_required; |
+ GetPrivilegeRequiredByUrl(site_url, registry); |
+ return GetProcessPrivilege(process_host, process_map, registry) == |
+ privilege_required; |
} |
// static |
@@ -237,14 +233,14 @@ ChromeContentBrowserClientExtensionsPart::ShouldTryToUseExistingProcessHost( |
// with background pages. It uses a globally set percentage of processes to |
// run such extensions and if the limit is exceeded, it returns true, to |
// indicate to the content module to group extensions together. |
- ExtensionService* service = profile ? |
- ExtensionSystem::Get(profile)->extension_service() : NULL; |
- if (!service) |
+ ExtensionRegistry* registry = |
+ profile ? ExtensionRegistry::Get(profile) : NULL; |
+ if (!registry) |
return false; |
// We have to have a valid extension with background page to proceed. |
const Extension* extension = |
- service->extensions()->GetExtensionOrAppByURL(url); |
+ registry->enabled_extensions().GetExtensionOrAppByURL(url); |
if (!extension) |
return false; |
if (!BackgroundInfo::HasBackgroundPage(extension)) |
@@ -277,13 +273,11 @@ bool ChromeContentBrowserClientExtensionsPart:: |
ShouldSwapBrowsingInstancesForNavigation(SiteInstance* site_instance, |
const GURL& current_url, |
const GURL& new_url) { |
- // If we don't have an ExtensionService, then rely on the SiteInstance logic |
+ // If we don't have an ExtensionRegistry, then rely on the SiteInstance logic |
// in RenderFrameHostManager to decide when to swap. |
- Profile* profile = |
- Profile::FromBrowserContext(site_instance->GetBrowserContext()); |
- ExtensionService* service = |
- ExtensionSystem::Get(profile)->extension_service(); |
- if (!service) |
+ ExtensionRegistry* registry = |
+ ExtensionRegistry::Get(site_instance->GetBrowserContext()); |
+ if (!registry) |
return false; |
// We must use a new BrowsingInstance (forcing a process swap and disabling |
@@ -296,14 +290,14 @@ bool ChromeContentBrowserClientExtensionsPart:: |
// to/from a hosted app will still trigger a SiteInstance swap in |
// RenderFrameHostManager. |
const Extension* current_extension = |
- service->extensions()->GetExtensionOrAppByURL(current_url); |
+ registry->enabled_extensions().GetExtensionOrAppByURL(current_url); |
if (current_extension && |
current_extension->is_hosted_app() && |
current_extension->id() != extensions::kWebStoreAppId) |
current_extension = NULL; |
const Extension* new_extension = |
- service->extensions()->GetExtensionOrAppByURL(new_url); |
+ registry->enabled_extensions().GetExtensionOrAppByURL(new_url); |
if (new_extension && |
new_extension->is_hosted_app() && |
new_extension->id() != extensions::kWebStoreAppId) |
@@ -312,7 +306,7 @@ bool ChromeContentBrowserClientExtensionsPart:: |
// First do a process check. We should force a BrowsingInstance swap if the |
// current process doesn't know about new_extension, even if current_extension |
// is somehow the same as new_extension. |
- ProcessMap* process_map = ProcessMap::Get(profile); |
+ ProcessMap* process_map = ProcessMap::Get(site_instance->GetBrowserContext()); |
if (new_extension && |
site_instance->HasProcess() && |
!process_map->Contains( |
@@ -349,20 +343,19 @@ bool ChromeContentBrowserClientExtensionsPart::ShouldAllowOpenURL( |
(from_url.SchemeIsHTTPOrHTTPS() || from_url.SchemeIs(kExtensionScheme))) { |
Profile* profile = Profile::FromBrowserContext( |
site_instance->GetProcess()->GetBrowserContext()); |
- ExtensionService* service = |
- ExtensionSystem::Get(profile)->extension_service(); |
- if (!service) { |
+ ExtensionRegistry* registry = ExtensionRegistry::Get(profile); |
+ if (!registry) { |
*result = true; |
return true; |
} |
const Extension* extension = |
- service->extensions()->GetExtensionOrAppByURL(to_url); |
+ registry->enabled_extensions().GetExtensionOrAppByURL(to_url); |
if (!extension) { |
*result = true; |
return true; |
} |
const Extension* from_extension = |
- service->extensions()->GetExtensionOrAppByURL( |
+ registry->enabled_extensions().GetExtensionOrAppByURL( |
site_instance->GetSiteURL()); |
if (from_extension && from_extension->id() == extension->id()) { |
*result = true; |
@@ -404,68 +397,59 @@ void ChromeContentBrowserClientExtensionsPart::RenderProcessWillLaunch( |
void ChromeContentBrowserClientExtensionsPart::SiteInstanceGotProcess( |
SiteInstance* site_instance) { |
- Profile* profile = Profile::FromBrowserContext( |
- site_instance->GetProcess()->GetBrowserContext()); |
- ExtensionService* service = |
- ExtensionSystem::Get(profile)->extension_service(); |
- if (!service) |
+ BrowserContext* context = site_instance->GetProcess()->GetBrowserContext(); |
+ ExtensionRegistry* registry = ExtensionRegistry::Get(context); |
+ if (!registry) |
return; |
- const Extension* extension = service->extensions()->GetExtensionOrAppByURL( |
- site_instance->GetSiteURL()); |
+ const Extension* extension = |
+ registry->enabled_extensions().GetExtensionOrAppByURL( |
+ site_instance->GetSiteURL()); |
if (!extension) |
return; |
- ProcessMap::Get(profile)->Insert(extension->id(), |
+ ProcessMap::Get(context)->Insert(extension->id(), |
site_instance->GetProcess()->GetID(), |
site_instance->GetId()); |
- BrowserThread::PostTask(BrowserThread::IO, |
- FROM_HERE, |
- base::Bind(&InfoMap::RegisterExtensionProcess, |
- ExtensionSystem::Get(profile)->info_map(), |
- extension->id(), |
- site_instance->GetProcess()->GetID(), |
- site_instance->GetId())); |
+ BrowserThread::PostTask( |
+ BrowserThread::IO, FROM_HERE, |
+ base::Bind(&InfoMap::RegisterExtensionProcess, |
+ ExtensionSystem::Get(context)->info_map(), extension->id(), |
+ site_instance->GetProcess()->GetID(), site_instance->GetId())); |
} |
void ChromeContentBrowserClientExtensionsPart::SiteInstanceDeleting( |
SiteInstance* site_instance) { |
- Profile* profile = |
- Profile::FromBrowserContext(site_instance->GetBrowserContext()); |
- ExtensionService* service = |
- ExtensionSystem::Get(profile)->extension_service(); |
- if (!service) |
+ BrowserContext* context = site_instance->GetBrowserContext(); |
+ ExtensionRegistry* registry = ExtensionRegistry::Get(context); |
+ if (!registry) |
return; |
- const Extension* extension = service->extensions()->GetExtensionOrAppByURL( |
- site_instance->GetSiteURL()); |
+ const Extension* extension = |
+ registry->enabled_extensions().GetExtensionOrAppByURL( |
+ site_instance->GetSiteURL()); |
if (!extension) |
return; |
- ProcessMap::Get(profile)->Remove(extension->id(), |
+ ProcessMap::Get(context)->Remove(extension->id(), |
site_instance->GetProcess()->GetID(), |
site_instance->GetId()); |
- BrowserThread::PostTask(BrowserThread::IO, |
- FROM_HERE, |
- base::Bind(&InfoMap::UnregisterExtensionProcess, |
- ExtensionSystem::Get(profile)->info_map(), |
- extension->id(), |
- site_instance->GetProcess()->GetID(), |
- site_instance->GetId())); |
+ BrowserThread::PostTask( |
+ BrowserThread::IO, FROM_HERE, |
+ base::Bind(&InfoMap::UnregisterExtensionProcess, |
+ ExtensionSystem::Get(context)->info_map(), extension->id(), |
+ site_instance->GetProcess()->GetID(), site_instance->GetId())); |
} |
void ChromeContentBrowserClientExtensionsPart::OverrideWebkitPrefs( |
RenderViewHost* rvh, |
const GURL& url, |
WebPreferences* web_prefs) { |
- Profile* profile = |
- Profile::FromBrowserContext(rvh->GetProcess()->GetBrowserContext()); |
- |
- ExtensionService* service = |
- ExtensionSystem::Get(profile)->extension_service(); |
- if (!service) |
+ const ExtensionRegistry* registry = |
+ ExtensionRegistry::Get(rvh->GetProcess()->GetBrowserContext()); |
+ if (!registry) |
return; |
// Note: it's not possible for kExtensionsScheme to change during the lifetime |
@@ -481,7 +465,8 @@ void ChromeContentBrowserClientExtensionsPart::OverrideWebkitPrefs( |
WebContents* web_contents = WebContents::FromRenderViewHost(rvh); |
ViewType view_type = GetViewType(web_contents); |
- const Extension* extension = service->extensions()->GetByID(site_url.host()); |
+ const Extension* extension = |
+ registry->GetExtensionById(site_url.host(), ExtensionRegistry::ENABLED); |
not at google - send to devlin
2014/11/11 20:20:09
Ditto.
Reilly Grant (use Gerrit)
2014/11/11 20:55:31
Done.
|
extension_webkit_preferences::SetPreferences(extension, view_type, web_prefs); |
} |