| Index: chrome/browser/ui/webui/app_launcher_handler.cc
|
| diff --git a/chrome/browser/ui/webui/app_launcher_handler.cc b/chrome/browser/ui/webui/app_launcher_handler.cc
|
| index c9631594a42b2b71f206f7b3d06c9521fda5daa2..5ed5a307f212821f10ad7419c9b612566ba7ba12 100644
|
| --- a/chrome/browser/ui/webui/app_launcher_handler.cc
|
| +++ b/chrome/browser/ui/webui/app_launcher_handler.cc
|
| @@ -63,7 +63,6 @@ extension_misc::AppLaunchBucket ParseLaunchSource(std::string launch_source) {
|
|
|
| AppLauncherHandler::AppLauncherHandler(ExtensionService* extension_service)
|
| : extensions_service_(extension_service),
|
| - extension_prompt_type_(ExtensionInstallUI::UNSET_PROMPT_TYPE),
|
| promo_active_(false),
|
| ignore_changes_(false) {
|
| }
|
| @@ -406,8 +405,7 @@ void AppLauncherHandler::HandleUninstallApp(const ListValue* args) {
|
| return; // Only one prompt at a time.
|
|
|
| extension_id_prompting_ = extension_id;
|
| - extension_prompt_type_ = ExtensionInstallUI::UNINSTALL_PROMPT;
|
| - GetExtensionInstallUI()->ConfirmUninstall(this, extension);
|
| + GetExtensionUninstallDialog()->ConfirmUninstall(this, extension);
|
| }
|
|
|
| void AppLauncherHandler::HandleHideAppsPromo(const ListValue* args) {
|
| @@ -538,11 +536,32 @@ void AppLauncherHandler::PromptToEnableApp(std::string extension_id) {
|
| return; // Only one prompt at a time.
|
|
|
| extension_id_prompting_ = extension_id;
|
| - extension_prompt_type_ = ExtensionInstallUI::RE_ENABLE_PROMPT;
|
| GetExtensionInstallUI()->ConfirmReEnable(this, extension);
|
| }
|
|
|
| +void AppLauncherHandler::ExtensionDialogAccepted() {
|
| + // Do the uninstall work here.
|
| + DCHECK(!extension_id_prompting_.empty());
|
| +
|
| + // The extension can be uninstalled in another window while the UI was
|
| + // showing. Do nothing in that case.
|
| + const Extension* extension =
|
| + extensions_service_->GetExtensionById(extension_id_prompting_, true);
|
| + if (!extension)
|
| + return;
|
| +
|
| + extensions_service_->UninstallExtension(extension_id_prompting_,
|
| + false /* external_uninstall */);
|
| +
|
| + extension_id_prompting_ = "";
|
| +}
|
| +
|
| +void AppLauncherHandler::ExtensionDialogCanceled() {
|
| + extension_id_prompting_ = "";
|
| +}
|
| +
|
| void AppLauncherHandler::InstallUIProceed() {
|
| + // Do the re-enable work here.
|
| DCHECK(!extension_id_prompting_.empty());
|
|
|
| // The extension can be uninstalled in another window while the UI was
|
| @@ -552,38 +571,36 @@ void AppLauncherHandler::InstallUIProceed() {
|
| if (!extension)
|
| return;
|
|
|
| - switch (extension_prompt_type_) {
|
| - case ExtensionInstallUI::UNINSTALL_PROMPT:
|
| - extensions_service_->UninstallExtension(extension_id_prompting_,
|
| - false /* external_uninstall */);
|
| - break;
|
| - case ExtensionInstallUI::RE_ENABLE_PROMPT: {
|
| - extensions_service_->GrantPermissionsAndEnableExtension(extension);
|
| -
|
| - // We bounce this off the NTP so the browser can update the apps icon.
|
| - // If we don't launch the app asynchronously, then the app's disabled
|
| - // icon disappears but isn't replaced by the enabled icon, making a poor
|
| - // visual experience.
|
| - StringValue* app_id = Value::CreateStringValue(extension->id());
|
| - web_ui_->CallJavascriptFunction("launchAppAfterEnable", *app_id);
|
| - break;
|
| - }
|
| - default:
|
| - NOTREACHED();
|
| - break;
|
| - }
|
| + extensions_service_->GrantPermissionsAndEnableExtension(extension);
|
| +
|
| + // We bounce this off the NTP so the browser can update the apps icon.
|
| + // If we don't launch the app asynchronously, then the app's disabled
|
| + // icon disappears but isn't replaced by the enabled icon, making a poor
|
| + // visual experience.
|
| + StringValue* app_id = Value::CreateStringValue(extension->id());
|
| + web_ui_->CallJavascriptFunction("launchAppAfterEnable", *app_id);
|
|
|
| extension_id_prompting_ = "";
|
| }
|
|
|
| void AppLauncherHandler::InstallUIAbort() {
|
| - extension_id_prompting_ = "";
|
| + ExtensionDialogCanceled();
|
| +}
|
| +
|
| +ExtensionUninstallDialog* AppLauncherHandler::GetExtensionUninstallDialog() {
|
| + if (!extension_uninstall_dialog_.get()) {
|
| + extension_uninstall_dialog_.reset(
|
| + new ExtensionUninstallDialog(web_ui_->GetProfile()));
|
| + }
|
| + return extension_uninstall_dialog_.get();
|
| }
|
|
|
| ExtensionInstallUI* AppLauncherHandler::GetExtensionInstallUI() {
|
| - if (!install_ui_.get())
|
| - install_ui_.reset(new ExtensionInstallUI(web_ui_->GetProfile()));
|
| - return install_ui_.get();
|
| + if (!extension_install_ui_.get()) {
|
| + extension_install_ui_.reset(
|
| + new ExtensionInstallUI(web_ui_->GetProfile()));
|
| + }
|
| + return extension_install_ui_.get();
|
| }
|
|
|
| void AppLauncherHandler::UninstallDefaultApps() {
|
|
|