Index: chrome/browser/extensions/extensions_service.cc |
diff --git a/chrome/browser/extensions/extensions_service.cc b/chrome/browser/extensions/extensions_service.cc |
index 03313660ee1fd67c2e76f6ec967688aa7f01ee7d..377423feeea0a028fff5c4f2dd93abddbb59d15e 100644 |
--- a/chrome/browser/extensions/extensions_service.cc |
+++ b/chrome/browser/extensions/extensions_service.cc |
@@ -168,11 +168,13 @@ void ExtensionsService::UpdateExtension(const std::string& id, |
} |
void ExtensionsService::ReloadExtension(const std::string& extension_id) { |
- Extension* extension = GetExtensionById(extension_id); |
- FilePath extension_path = extension->path(); |
+ // Unload the extension if it's loaded. |
+ if (GetExtensionById(extension_id)) |
+ UnloadExtension(extension_id); |
- UnloadExtension(extension_id); |
- LoadExtension(extension_path); |
+ // At this point we have to reconstruct the path from prefs, because |
+ // we have no information about this extension in memory. |
+ LoadExtension(extension_prefs_->GetExtensionPath(extension_id)); |
} |
void ExtensionsService::UninstallExtension(const std::string& extension_id, |
@@ -531,7 +533,6 @@ void ExtensionsService::OnExternalExtensionFound(const std::string& id, |
NULL); // no client (silent install) |
} |
- |
// ExtensionsServicesBackend |
ExtensionsServiceBackend::ExtensionsServiceBackend( |