summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extensions_service.cc
diff options
context:
space:
mode:
authorphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-04 11:11:34 +0000
committerphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-04 11:11:34 +0000
commit24e7a9d2b4d7925ca25d2cdf75808d3ff88b5f6e (patch)
tree809ce617d8e41b1ba284eba33694af966654fb87 /chrome/browser/extensions/extensions_service.cc
parenta6cf2a3e9f1d7b44dda39975139f5ae39524e363 (diff)
downloadchromium_src-24e7a9d2b4d7925ca25d2cdf75808d3ff88b5f6e.zip
chromium_src-24e7a9d2b4d7925ca25d2cdf75808d3ff88b5f6e.tar.gz
chromium_src-24e7a9d2b4d7925ca25d2cdf75808d3ff88b5f6e.tar.bz2
Implement loading blacklists from extensions.
It doesn't yet work in full-browser scenario, but allows me to write a simple test. TEST=Covered by browser_tests. BUG=21541 Review URL: http://codereview.chromium.org/341050 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30952 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extensions_service.cc')
-rw-r--r--chrome/browser/extensions/extensions_service.cc60
1 files changed, 48 insertions, 12 deletions
diff --git a/chrome/browser/extensions/extensions_service.cc b/chrome/browser/extensions/extensions_service.cc
index 1692e3f..dcca59e 100644
--- a/chrome/browser/extensions/extensions_service.cc
+++ b/chrome/browser/extensions/extensions_service.cc
@@ -333,7 +333,7 @@ void ExtensionsService::NotifyExtensionLoaded(Extension* extension) {
NotificationService::current()->Notify(
NotificationType::EXTENSION_LOADED,
- Source<ExtensionsService>(this),
+ Source<Profile>(profile_),
Details<Extension>(extension));
}
@@ -342,7 +342,7 @@ void ExtensionsService::NotifyExtensionUnloaded(Extension* extension) {
NotificationService::current()->Notify(
NotificationType::EXTENSION_UNLOADED,
- Source<ExtensionsService>(this),
+ Source<Profile>(profile_),
Details<Extension>(extension));
if (profile_ && !profile_->IsOffTheRecord()) {
@@ -417,7 +417,7 @@ void ExtensionsService::UnloadExtension(const std::string& extension_id) {
disabled_extensions_.erase(iter);
NotificationService::current()->Notify(
NotificationType::EXTENSION_UNLOADED_DISABLED,
- Source<ExtensionsService>(this),
+ Source<Profile>(profile_),
Details<Extension>(extension.get()));
return;
}
@@ -463,7 +463,7 @@ void ExtensionsService::OnLoadedInstalledExtensions() {
}
NotificationService::current()->Notify(
NotificationType::EXTENSIONS_READY,
- Source<ExtensionsService>(this),
+ Source<Profile>(profile_),
NotificationService::NoDetails());
}
@@ -494,7 +494,7 @@ void ExtensionsService::OnExtensionLoaded(Extension* extension,
extension_prefs_->SetExtensionState(extension, Extension::DISABLED);
NotificationService::current()->Notify(
NotificationType::EXTENSION_UPDATE_DISABLED,
- Source<ExtensionsService>(this),
+ Source<Profile>(profile_),
Details<Extension>(extension));
}
} else {
@@ -528,7 +528,7 @@ void ExtensionsService::OnExtensionLoaded(Extension* extension,
if (extension->IsTheme() && extension->location() == Extension::LOAD) {
NotificationService::current()->Notify(
NotificationType::THEME_INSTALLED,
- Source<ExtensionsService>(this),
+ Source<Profile>(profile_),
Details<Extension>(extension));
} else {
ExtensionDOMUI::RegisterChromeURLOverrides(profile_,
@@ -538,7 +538,7 @@ void ExtensionsService::OnExtensionLoaded(Extension* extension,
case Extension::DISABLED:
NotificationService::current()->Notify(
NotificationType::EXTENSION_UPDATE_DISABLED,
- Source<ExtensionsService>(this),
+ Source<Profile>(profile_),
Details<Extension>(extension));
disabled_extensions_.push_back(scoped_extension.release());
break;
@@ -558,12 +558,12 @@ void ExtensionsService::OnExtensionInstalled(Extension* extension,
if (extension->IsTheme()) {
NotificationService::current()->Notify(
NotificationType::THEME_INSTALLED,
- Source<ExtensionsService>(this),
+ Source<Profile>(profile_),
Details<Extension>(extension));
} else {
NotificationService::current()->Notify(
NotificationType::EXTENSION_INSTALLED,
- Source<ExtensionsService>(this),
+ Source<Profile>(profile_),
Details<Extension>(extension));
}
@@ -576,12 +576,12 @@ void ExtensionsService::OnExtensionOverinstallAttempted(const std::string& id) {
if (extension && extension->IsTheme()) {
NotificationService::current()->Notify(
NotificationType::THEME_INSTALLED,
- Source<ExtensionsService>(this),
+ Source<Profile>(profile_),
Details<Extension>(extension));
} else {
NotificationService::current()->Notify(
NotificationType::NO_THEME_DETECTED,
- Source<ExtensionsService>(this),
+ Source<Profile>(profile_),
NotificationService::NoDetails());
}
}
@@ -666,7 +666,7 @@ void ExtensionsService::ReportExtensionLoadError(
bool be_noisy) {
NotificationService* service = NotificationService::current();
service->Notify(type,
- Source<ExtensionsService>(this),
+ Source<Profile>(profile_),
Details<const std::string>(&error));
// TODO(port): note that this isn't guaranteed to work properly on Linux.
@@ -676,6 +676,42 @@ void ExtensionsService::ReportExtensionLoadError(
ExtensionErrorReporter::GetInstance()->ReportError(message, be_noisy);
}
+std::vector<FilePath> ExtensionsService::GetPersistentBlacklistPaths() {
+ std::vector<FilePath> result;
+ for (ExtensionList::const_iterator extension_iter = extensions()->begin();
+ extension_iter != extensions()->end(); ++extension_iter) {
+ if ((*extension_iter)->location() == Extension::LOAD)
+ continue;
+
+ std::vector<Extension::PrivacyBlacklistInfo> blacklists(
+ (*extension_iter)->privacy_blacklists());
+ std::vector<Extension::PrivacyBlacklistInfo>::const_iterator blacklist_iter;
+ for (blacklist_iter = blacklists.begin();
+ blacklist_iter != blacklists.end(); ++blacklist_iter) {
+ result.push_back(blacklist_iter->path);
+ }
+ }
+ return result;
+}
+
+std::vector<FilePath> ExtensionsService::GetTransientBlacklistPaths() {
+ std::vector<FilePath> result;
+ for (ExtensionList::const_iterator extension_iter = extensions()->begin();
+ extension_iter != extensions()->end(); ++extension_iter) {
+ if ((*extension_iter)->location() != Extension::LOAD)
+ continue;
+
+ std::vector<Extension::PrivacyBlacklistInfo> blacklists(
+ (*extension_iter)->privacy_blacklists());
+ std::vector<Extension::PrivacyBlacklistInfo>::const_iterator blacklist_iter;
+ for (blacklist_iter = blacklists.begin();
+ blacklist_iter != blacklists.end(); ++blacklist_iter) {
+ result.push_back(blacklist_iter->path);
+ }
+ }
+ return result;
+}
+
// ExtensionsServicesBackend
ExtensionsServiceBackend::ExtensionsServiceBackend(