Index: chrome/browser/extensions/installed_loader.cc |
diff --git a/chrome/browser/extensions/installed_loader.cc b/chrome/browser/extensions/installed_loader.cc |
index 22d414980c029fc3575e21a43d4610f3959b8e89..5a5ded6c592df3dfa7fc92d546dcce1beeda9fe5 100644 |
--- a/chrome/browser/extensions/installed_loader.cc |
+++ b/chrome/browser/extensions/installed_loader.cc |
@@ -88,7 +88,8 @@ InstalledLoader::InstalledLoader(ExtensionService* extension_service) |
InstalledLoader::~InstalledLoader() { |
} |
-void InstalledLoader::Load(const ExtensionInfo& info, bool write_to_prefs) { |
+scoped_refptr<const Extension> InstalledLoader::Load(const ExtensionInfo& info, |
+ bool write_to_prefs) { |
std::string error; |
scoped_refptr<const Extension> extension(NULL); |
if (info.extension_manifest.get()) { |
@@ -128,13 +129,13 @@ void InstalledLoader::Load(const ExtensionInfo& info, bool write_to_prefs) { |
if (!extension) { |
extension_service_-> |
ReportExtensionLoadError(info.extension_path, error, false); |
- return; |
+ return scoped_refptr<const Extension>(); |
} |
if (write_to_prefs) |
extension_prefs_->UpdateManifest(extension); |
- extension_service_->AddExtension(extension); |
+ return extension; |
} |
void InstalledLoader::LoadAllExtensions() { |
@@ -212,10 +213,15 @@ void InstalledLoader::LoadAllExtensions() { |
} |
} |
+ std::vector<scoped_refptr<const Extension> > loaded_extensions; |
for (size_t i = 0; i < extensions_info->size(); ++i) { |
- Load(*extensions_info->at(i), should_write_prefs); |
+ scoped_refptr<const Extension> loaded_extension = |
+ Load(*extensions_info->at(i), should_write_prefs); |
+ if (loaded_extension) |
+ loaded_extensions.push_back(loaded_extension); |
} |
+ extension_service_->AddExtensions(loaded_extensions); |
extension_service_->OnLoadedInstalledExtensions(); |
// The histograms Extensions.ManifestReload* allow us to validate |