Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(106)

Unified Diff: chrome/browser/ui/webui/extensions/extension_settings_handler.cc

Issue 557953005: Allow the user to "repair" a corrupted extension. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Latest Master Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {
« no previous file with comments | « chrome/browser/ui/webui/extensions/extension_settings_handler.h ('k') | chrome/chrome_browser_extensions.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698