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 34e61c4dc9038a696c5199fadb1b2fd00487742e..53fd23ff0d4fdf32068f4e27cf94df38dd361b77 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" |
@@ -253,6 +254,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( |
@@ -510,6 +514,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", |
@@ -537,11 +543,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( |
@@ -631,6 +632,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())); |
@@ -978,6 +982,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()); |
@@ -1407,6 +1423,13 @@ ExtensionSettingsHandler::GetExtensionUninstallDialog() { |
#endif // !defined(OS_ANDROID) |
} |
+void ExtensionSettingsHandler::OnReinstallComplete( |
+ bool success, |
+ const std::string& error, |
+ webstore_install::Result result) { |
+ MaybeUpdateAfterNotification(); |
Yoyo Zhou
2014/09/18 22:47:08
Why do we need to run this callback if the uninsta
Devlin
2014/09/18 23:19:10
To me, it seems safer and more consistent. It wou
|
+} |
+ |
void ExtensionSettingsHandler::OnRequirementsChecked( |
std::string extension_id, |
std::vector<std::string> requirement_errors) { |