| 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,
|
| + 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)) {
|
| // 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) {
|
| + 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(
|
|
|