Chromium Code Reviews| Index: chrome/browser/extensions/extension_service.cc |
| diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc |
| index 84397982cc4e10874b4d7d1a24dfd29d71d0adef..2845f8be5f21976c28596a91775e0a74823f7079 100644 |
| --- a/chrome/browser/extensions/extension_service.cc |
| +++ b/chrome/browser/extensions/extension_service.cc |
| @@ -12,6 +12,7 @@ |
| #include "base/callback.h" |
| #include "base/command_line.h" |
| #include "base/file_util.h" |
| +#include "base/json/json_value_serializer.h" |
| #include "base/logging.h" |
| #include "base/metrics/field_trial.h" |
| #include "base/metrics/histogram.h" |
| @@ -688,10 +689,18 @@ bool ExtensionService::UpdateExtension( |
| void ExtensionService::ReloadExtension(const std::string& extension_id) { |
| CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| FilePath path; |
| - const Extension* current_extension = GetExtensionById(extension_id, false); |
| + const Extension* current_extension = GetExtensionByIdInternal(extension_id, |
| + true, |
| + true, |
|
Yoyo Zhou
2012/02/09 22:18:03
I don't think we should we be including disabled e
rkc
2012/02/10 00:35:42
Done.
|
| + true); |
| + |
| + // We have no knowledge of this extension ever having even existed, |
| + // we can't 'reload' it. |
| + if (!current_extension) |
| + return; |
| // Disable the extension if it's loaded. It might not be loaded if it crashed. |
| - if (current_extension) { |
| + if (IsExtensionEnabled(extension_id)) { |
|
Yoyo Zhou
2012/02/09 22:18:03
Likewise, this is probably incorrect -- we only wa
rkc
2012/02/10 00:35:42
Done.
|
| // If the extension has an inspector open for its background page, detach |
| // the inspector and hang onto a cookie for it, so that we can reattach |
| // later. |
| @@ -716,6 +725,13 @@ void ExtensionService::ReloadExtension(const std::string& extension_id) { |
| path = unloaded_extension_paths_[extension_id]; |
| } |
| + // If we're reloading a component extension, use the component extension |
| + // loader's reloader. |
| + if (current_extension->location() == Extension::COMPONENT) { |
|
Yoyo Zhou
2012/02/09 22:18:03
You could use ComponentLoader::Exists(extension_id
rkc
2012/02/10 00:35:42
Done.
|
| + component_loader_->Reload(extension_id); |
| + return; |
| + } |
| + |
| // Check the installed extensions to see if what we're reloading was already |
| // installed. |
| scoped_ptr<ExtensionInfo> installed_extension( |