Index: chrome/browser/ui/webui/extensions/extension_settings_handler.cc |
diff --git a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc |
index b1ee352e7321cc4c136761a0e143cc64adba9d16..305d975b4ed8afe1d8d56bcd09216ce7c85740b0 100644 |
--- a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc |
+++ b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc |
@@ -40,6 +40,7 @@ |
#include "chrome/browser/extensions/path_util.h" |
#include "chrome/browser/extensions/shared_module_service.h" |
#include "chrome/browser/extensions/updater/extension_updater.h" |
+#include "chrome/browser/extensions/webstore_reinstaller.h" |
#include "chrome/browser/platform_util.h" |
#include "chrome/browser/prefs/incognito_mode_prefs.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -255,6 +256,9 @@ base::DictionaryValue* ExtensionSettingsHandler::CreateExtensionDetailValue( |
extension_data->SetString("icon", icon.spec()); |
extension_data->SetBoolean("isUnpacked", |
Manifest::IsUnpackedLocation(extension->location())); |
+ extension_data->SetBoolean("isFromStore", |
+ extension->location() == Manifest::INTERNAL && |
+ ManifestURL::UpdatesFromGallery(extension)); |
ExtensionRegistry* registry = |
ExtensionRegistry::Get(extension_service_->profile()); |
extension_data->SetBoolean( |
@@ -513,6 +517,8 @@ void ExtensionSettingsHandler::GetLocalizedValues( |
l10n_util::GetStringUTF16(IDS_EXTENSIONS_INCOGNITO_WARNING)); |
source->AddString("extensionSettingsReloadTerminated", |
l10n_util::GetStringUTF16(IDS_EXTENSIONS_RELOAD_TERMINATED)); |
+ source->AddString("extensionSettingsRepairCorrupted", |
+ l10n_util::GetStringUTF16(IDS_EXTENSIONS_REPAIR_CORRUPTED)); |
source->AddString("extensionSettingsLaunch", |
l10n_util::GetStringUTF16(IDS_EXTENSIONS_LAUNCH)); |
source->AddString("extensionSettingsReloadUnpacked", |
@@ -540,11 +546,6 @@ void ExtensionSettingsHandler::GetLocalizedValues( |
l10n_util::GetStringUTF16(IDS_EXTENSION_WEB_STORE_TITLE))); |
source->AddString("extensionSettingsLearnMore", |
l10n_util::GetStringUTF16(IDS_LEARN_MORE)); |
- source->AddString("extensionSettingsCorruptInstallHelpUrl", |
- base::ASCIIToUTF16( |
- google_util::AppendGoogleLocaleParam( |
- GURL(chrome::kCorruptExtensionURL), |
- g_browser_process->GetApplicationLocale()).spec())); |
source->AddString("extensionSettingsSuspiciousInstallHelpUrl", |
base::ASCIIToUTF16( |
google_util::AppendGoogleLocaleParam( |
@@ -634,6 +635,9 @@ void ExtensionSettingsHandler::RegisterMessages() { |
web_ui()->RegisterMessageCallback("extensionSettingsReload", |
base::Bind(&ExtensionSettingsHandler::HandleReloadMessage, |
AsWeakPtr())); |
+ web_ui()->RegisterMessageCallback("extensionSettingsRepair", |
+ base::Bind(&ExtensionSettingsHandler::HandleRepairMessage, |
+ AsWeakPtr())); |
web_ui()->RegisterMessageCallback("extensionSettingsEnable", |
base::Bind(&ExtensionSettingsHandler::HandleEnableMessage, |
AsWeakPtr())); |
@@ -985,6 +989,18 @@ void ExtensionSettingsHandler::HandleReloadMessage( |
extension_service_->ReloadExtensionWithQuietFailure(extension_id); |
} |
+void ExtensionSettingsHandler::HandleRepairMessage( |
+ const base::ListValue* args) { |
+ std::string extension_id = base::UTF16ToUTF8(ExtractStringValue(args)); |
+ CHECK(!extension_id.empty()); |
+ scoped_refptr<WebstoreReinstaller> reinstaller(new WebstoreReinstaller( |
+ web_contents(), |
+ extension_id, |
+ base::Bind(&ExtensionSettingsHandler::OnReinstallComplete, |
+ AsWeakPtr()))); |
+ reinstaller->BeginReinstall(); |
+} |
+ |
void ExtensionSettingsHandler::HandleEnableMessage( |
const base::ListValue* args) { |
CHECK_EQ(2U, args->GetSize()); |
@@ -1410,6 +1426,13 @@ ExtensionSettingsHandler::GetExtensionUninstallDialog() { |
#endif // !defined(OS_ANDROID) |
} |
+void ExtensionSettingsHandler::OnReinstallComplete( |
+ bool success, |
+ const std::string& error, |
+ webstore_install::Result result) { |
+ MaybeUpdateAfterNotification(); |
+} |
+ |
void ExtensionSettingsHandler::OnRequirementsChecked( |
std::string extension_id, |
std::vector<std::string> requirement_errors) { |