diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-04 11:11:34 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-04 11:11:34 +0000 |
commit | 24e7a9d2b4d7925ca25d2cdf75808d3ff88b5f6e (patch) | |
tree | 809ce617d8e41b1ba284eba33694af966654fb87 /chrome/browser/extensions/extensions_service.cc | |
parent | a6cf2a3e9f1d7b44dda39975139f5ae39524e363 (diff) | |
download | chromium_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.cc | 60 |
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( |