diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-26 01:36:28 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-26 01:36:28 +0000 |
commit | 502e3961179b6855a717409e6947f9a389bc304d (patch) | |
tree | 476bd9aabf1892fcd505a81c7574ebe1be9764d6 /chrome/browser/ui | |
parent | e294c1ae1f2d659ce4d5730a6bd90dd512926d3c (diff) | |
download | chromium_src-502e3961179b6855a717409e6947f9a389bc304d.zip chromium_src-502e3961179b6855a717409e6947f9a389bc304d.tar.gz chromium_src-502e3961179b6855a717409e6947f9a389bc304d.tar.bz2 |
extensions: Refactor ExtensionInstallUI class.
- Remove extension_install_dialog.h.
- Add ExtensionUninstallDialog class to handle just the uninstall dialog.
BUG=66730
TEST=None
R=aa@chromium.org
Review URL: http://codereview.chromium.org/6721013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@79479 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui')
-rw-r--r-- | chrome/browser/ui/cocoa/extensions/extension_action_context_menu.mm | 17 | ||||
-rw-r--r-- | chrome/browser/ui/cocoa/extensions/extension_uninstall_dialog_cocoa.mm (renamed from chrome/browser/ui/cocoa/extensions/extension_install_prompt.mm) | 26 | ||||
-rw-r--r-- | chrome/browser/ui/gtk/extensions/extension_uninstall_dialog_gtk.cc (renamed from chrome/browser/ui/gtk/extensions/extension_install_prompt_gtk.cc) | 49 | ||||
-rw-r--r-- | chrome/browser/ui/views/extensions/extension_uninstall_dialog_view.cc (renamed from chrome/browser/ui/views/extensions/extension_install_prompt.cc) | 74 | ||||
-rw-r--r-- | chrome/browser/ui/webui/app_launcher_handler.cc | 73 | ||||
-rw-r--r-- | chrome/browser/ui/webui/app_launcher_handler.h | 33 | ||||
-rw-r--r-- | chrome/browser/ui/webui/options/extension_settings_handler.cc | 16 | ||||
-rw-r--r-- | chrome/browser/ui/webui/options/extension_settings_handler.h | 35 |
8 files changed, 172 insertions, 151 deletions
diff --git a/chrome/browser/ui/cocoa/extensions/extension_action_context_menu.mm b/chrome/browser/ui/cocoa/extensions/extension_action_context_menu.mm index 442aac0..a01b98e 100644 --- a/chrome/browser/ui/cocoa/extensions/extension_action_context_menu.mm +++ b/chrome/browser/ui/cocoa/extensions/extension_action_context_menu.mm @@ -7,9 +7,9 @@ #include "base/sys_string_conversions.h" #include "base/task.h" #include "chrome/browser/browser_list.h" -#include "chrome/browser/extensions/extension_install_ui.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_tabs_module.h" +#include "chrome/browser/extensions/extension_uninstall_dialog.h" #include "chrome/browser/prefs/pref_change_registrar.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/profiles/profile.h" @@ -35,24 +35,23 @@ // A class that loads the extension icon on the I/O thread before showing the // confirmation dialog to uninstall the given extension. // Also acts as the extension's UI delegate in order to display the dialog. -class AsyncUninstaller : public ExtensionInstallUI::Delegate { +class AsyncUninstaller : public ExtensionUninstallDialog::Delegate { public: AsyncUninstaller(const Extension* extension, Profile* profile) : extension_(extension), profile_(profile) { - install_ui_.reset(new ExtensionInstallUI(profile)); - install_ui_->ConfirmUninstall(this, extension_); + extension_uninstall_dialog_.reset(new ExtensionUninstallDialog(profile)); + extension_uninstall_dialog_->ConfirmUninstall(this, extension_); } ~AsyncUninstaller() {} - // Overridden by ExtensionInstallUI::Delegate. - virtual void InstallUIProceed() { + // ExtensionUninstallDialog::Delegate: + virtual void ExtensionDialogAccepted() { profile_->GetExtensionService()-> UninstallExtension(extension_->id(), false); } - - virtual void InstallUIAbort() {} + virtual void ExtensionDialogCanceled() {} private: // The extension that we're loading the icon for. Weak. @@ -61,7 +60,7 @@ class AsyncUninstaller : public ExtensionInstallUI::Delegate { // The current profile. Weak. Profile* profile_; - scoped_ptr<ExtensionInstallUI> install_ui_; + scoped_ptr<ExtensionUninstallDialog> extension_uninstall_dialog_; DISALLOW_COPY_AND_ASSIGN(AsyncUninstaller); }; diff --git a/chrome/browser/ui/cocoa/extensions/extension_install_prompt.mm b/chrome/browser/ui/cocoa/extensions/extension_uninstall_dialog_cocoa.mm index 21bb634..825fc9dcc 100644 --- a/chrome/browser/ui/cocoa/extensions/extension_install_prompt.mm +++ b/chrome/browser/ui/cocoa/extensions/extension_uninstall_dialog_cocoa.mm @@ -8,7 +8,7 @@ #include "base/sys_string_conversions.h" #include "base/utf_string_conversions.h" -#include "chrome/browser/extensions/extension_install_dialog.h" +#include "chrome/browser/extensions/extension_uninstall_dialog.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/extensions/extension.h" #include "grit/chromium_strings.h" @@ -17,15 +17,16 @@ #include "ui/base/l10n/l10n_util_mac.h" #include "ui/base/resource/resource_bundle.h" -void ShowExtensionInstallDialog(Profile* profile, - ExtensionInstallUI::Delegate* delegate, - const Extension* extension, - SkBitmap* icon, - ExtensionInstallUI::PromptType type) { +// static +void ExtensionUninstallDialog::Show( + Profile* profile, + ExtensionUninstallDialog::Delegate* delegate, + const Extension* extension, + SkBitmap* icon) { NSAlert* alert = [[[NSAlert alloc] init] autorelease]; NSButton* continueButton = [alert addButtonWithTitle:l10n_util::GetNSString( - ExtensionInstallUI::kButtonIds[type])]; + IDS_EXTENSION_PROMPT_UNINSTALL_BUTTON)]; // Clear the key equivalent (currently 'Return') because cancel is the default // button. [continueButton setKeyEquivalent:@""]; @@ -35,14 +36,13 @@ void ShowExtensionInstallDialog(Profile* profile, [cancelButton setKeyEquivalent:@"\r"]; [alert setMessageText:l10n_util::GetNSStringF( - ExtensionInstallUI::kHeadingIds[type], + IDS_EXTENSION_UNINSTALL_PROMPT_HEADING, UTF8ToUTF16(extension->name()))]; [alert setAlertStyle:NSWarningAlertStyle]; [alert setIcon:gfx::SkBitmapToNSImage(*icon)]; - if ([alert runModal] == NSAlertFirstButtonReturn) { - delegate->InstallUIProceed(); - } else { - delegate->InstallUIAbort(); - } + if ([alert runModal] == NSAlertFirstButtonReturn) + delegate->ExtensionDialogAccepted(); + else + delegate->ExtensionDialogCanceled(); } diff --git a/chrome/browser/ui/gtk/extensions/extension_install_prompt_gtk.cc b/chrome/browser/ui/gtk/extensions/extension_uninstall_dialog_gtk.cc index 9c56341..eb3eea3 100644 --- a/chrome/browser/ui/gtk/extensions/extension_install_prompt_gtk.cc +++ b/chrome/browser/ui/gtk/extensions/extension_uninstall_dialog_gtk.cc @@ -11,7 +11,7 @@ #include "base/utf_string_conversions.h" #include "chrome/browser/browser_list.h" #include "chrome/browser/browser_window.h" -#include "chrome/browser/extensions/extension_install_dialog.h" +#include "chrome/browser/extensions/extension_uninstall_dialog.h" #include "chrome/browser/ui/gtk/browser_window_gtk.h" #include "chrome/browser/ui/gtk/gtk_util.h" #include "chrome/common/extensions/extension.h" @@ -27,31 +27,27 @@ namespace { const int kPanelHorizMargin = 13; void OnResponse(GtkWidget* dialog, int response_id, - ExtensionInstallUI::Delegate* delegate) { - if (response_id == GTK_RESPONSE_ACCEPT) { - delegate->InstallUIProceed(); - } else { - delegate->InstallUIAbort(); - } + ExtensionUninstallDialog::Delegate* delegate) { + if (response_id == GTK_RESPONSE_ACCEPT) + delegate->ExtensionDialogAccepted(); + else + delegate->ExtensionDialogCanceled(); gtk_widget_destroy(dialog); } -void ShowInstallPromptDialog(GtkWindow* parent, - SkBitmap* skia_icon, - const Extension* extension, - ExtensionInstallUI::Delegate *delegate, - ExtensionInstallUI::PromptType type) { +void ShowUninstallDialogGtk(GtkWindow* parent, + SkBitmap* skia_icon, + const Extension* extension, + ExtensionUninstallDialog::Delegate *delegate) { // Build the dialog. - int title_id = ExtensionInstallUI::kTitleIds[type]; - int button_id = ExtensionInstallUI::kButtonIds[type]; GtkWidget* dialog = gtk_dialog_new_with_buttons( - l10n_util::GetStringUTF8(title_id).c_str(), + l10n_util::GetStringUTF8(IDS_EXTENSION_UNINSTALL_PROMPT_TITLE).c_str(), parent, GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CLOSE, - l10n_util::GetStringUTF8(button_id).c_str(), + l10n_util::GetStringUTF8(IDS_EXTENSION_PROMPT_UNINSTALL_BUTTON).c_str(), GTK_RESPONSE_ACCEPT, NULL); gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE); @@ -73,9 +69,8 @@ void ShowInstallPromptDialog(GtkWindow* parent, GtkWidget* right_column_area = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(icon_hbox), right_column_area, TRUE, TRUE, 0); - int heading_id = ExtensionInstallUI::kHeadingIds[type]; std::string heading_text = l10n_util::GetStringFUTF8( - heading_id, UTF8ToUTF16(extension->name())); + IDS_EXTENSION_UNINSTALL_PROMPT_HEADING, UTF8ToUTF16(extension->name())); GtkWidget* heading_label = gtk_label_new(heading_text.c_str()); gtk_misc_set_alignment(GTK_MISC(heading_label), 0.0, 0.5); gtk_box_pack_start(GTK_BOX(right_column_area), heading_label, TRUE, TRUE, 0); @@ -87,24 +82,24 @@ void ShowInstallPromptDialog(GtkWindow* parent, } // namespace -void ShowExtensionInstallDialog(Profile* profile, - ExtensionInstallUI::Delegate* delegate, - const Extension* extension, - SkBitmap* icon, - ExtensionInstallUI::PromptType type) { +// static +void ExtensionUninstallDialog::Show( + Profile* profile, + ExtensionUninstallDialog::Delegate* delegate, + const Extension* extension, + SkBitmap* icon) { Browser* browser = BrowserList::GetLastActiveWithProfile(profile); if (!browser) { - delegate->InstallUIAbort(); + delegate->ExtensionDialogCanceled(); return; } BrowserWindowGtk* browser_window = static_cast<BrowserWindowGtk*>( browser->window()); if (!browser_window) { - delegate->InstallUIAbort(); + delegate->ExtensionDialogCanceled(); return; } - ShowInstallPromptDialog(browser_window->window(), icon, extension, delegate, - type); + ShowUninstallDialogGtk(browser_window->window(), icon, extension, delegate); } diff --git a/chrome/browser/ui/views/extensions/extension_install_prompt.cc b/chrome/browser/ui/views/extensions/extension_uninstall_dialog_view.cc index d29a243..00ed3f5 100644 --- a/chrome/browser/ui/views/extensions/extension_install_prompt.cc +++ b/chrome/browser/ui/views/extensions/extension_uninstall_dialog_view.cc @@ -2,12 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "base/file_util.h" +#include "base/basictypes.h" +#include "base/compiler_specific.h" #include "base/string_util.h" #include "base/utf_string_conversions.h" #include "chrome/browser/browser_list.h" #include "chrome/browser/browser_window.h" -#include "chrome/browser/extensions/extension_install_dialog.h" +#include "chrome/browser/extensions/extension_uninstall_dialog.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/views/window.h" #include "chrome/common/extensions/extension.h" @@ -27,14 +28,14 @@ namespace { const int kRightColumnWidth = 210; const int kIconSize = 69; -// Implements the extension installation prompt for Windows. -class InstallDialogContent : public views::View, public views::DialogDelegate { +class ExtensionUninstallDialogView : public views::View, + public views::DialogDelegate { public: - InstallDialogContent(ExtensionInstallUI::Delegate* delegate, - const Extension* extension, - SkBitmap* icon, - ExtensionInstallUI::PromptType type) - : delegate_(delegate), icon_(NULL), type_(type) { + ExtensionUninstallDialogView(ExtensionUninstallDialog::Delegate* delegate, + const Extension* extension, + SkBitmap* icon) + : delegate_(delegate), + icon_(NULL) { // Scale down to icon size, but allow smaller icons (don't scale up). gfx::Size size(icon->width(), icon->height()); if (size.width() > kIconSize || size.height() > kIconSize) @@ -45,7 +46,7 @@ class InstallDialogContent : public views::View, public views::DialogDelegate { AddChildView(icon_); heading_ = new views::Label(UTF16ToWide( - l10n_util::GetStringFUTF16(ExtensionInstallUI::kHeadingIds[type_], + l10n_util::GetStringFUTF16(IDS_EXTENSION_UNINSTALL_PROMPT_HEADING, UTF8ToUTF16(extension->name())))); heading_->SetMultiLine(true); heading_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); @@ -53,13 +54,14 @@ class InstallDialogContent : public views::View, public views::DialogDelegate { } private: - // DialogDelegate + // views::DialogDelegate: virtual std::wstring GetDialogButtonLabel( - MessageBoxFlags::DialogButton button) const { + MessageBoxFlags::DialogButton button) const OVERRIDE { switch (button) { case MessageBoxFlags::DIALOGBUTTON_OK: return UTF16ToWide( - l10n_util::GetStringUTF16(ExtensionInstallUI::kButtonIds[type_])); + l10n_util::GetStringUTF16( + IDS_EXTENSION_PROMPT_UNINSTALL_BUTTON)); case MessageBoxFlags::DIALOGBUTTON_CANCEL: return UTF16ToWide(l10n_util::GetStringUTF16(IDS_CANCEL)); default: @@ -68,30 +70,30 @@ class InstallDialogContent : public views::View, public views::DialogDelegate { } } - virtual int GetDefaultDialogButton() const { + virtual int GetDefaultDialogButton() const OVERRIDE { return MessageBoxFlags::DIALOGBUTTON_CANCEL; } - virtual bool Accept() { - delegate_->InstallUIProceed(); + virtual bool Accept() OVERRIDE { + delegate_->ExtensionDialogAccepted(); return true; } - virtual bool Cancel() { - delegate_->InstallUIAbort(); + virtual bool Cancel() OVERRIDE { + delegate_->ExtensionDialogCanceled(); return true; } - // WindowDelegate - virtual bool IsModal() const { return true; } - virtual std::wstring GetWindowTitle() const { + // views::WindowDelegate: + virtual bool IsModal() const OVERRIDE { return true; } + virtual std::wstring GetWindowTitle() const OVERRIDE { return UTF16ToWide( - l10n_util::GetStringUTF16(ExtensionInstallUI::kTitleIds[type_])); + l10n_util::GetStringUTF16(IDS_EXTENSION_UNINSTALL_PROMPT_TITLE)); } virtual views::View* GetContentsView() { return this; } - // View - virtual gfx::Size GetPreferredSize() { + // views::View: + virtual gfx::Size GetPreferredSize() OVERRIDE { int width = kRightColumnWidth; width += kIconSize; width += views::kPanelHorizMargin * 3; @@ -103,7 +105,7 @@ class InstallDialogContent : public views::View, public views::DialogDelegate { std::max(height, kIconSize + views::kPanelVertMargin * 2)); } - virtual void Layout() { + virtual void Layout() OVERRIDE { int x = views::kPanelHorizMargin; int y = views::kPanelVertMargin; @@ -129,33 +131,33 @@ class InstallDialogContent : public views::View, public views::DialogDelegate { } } - ExtensionInstallUI::Delegate* delegate_; + ExtensionUninstallDialog::Delegate* delegate_; views::ImageView* icon_; views::Label* heading_; - ExtensionInstallUI::PromptType type_; - DISALLOW_COPY_AND_ASSIGN(InstallDialogContent); + DISALLOW_COPY_AND_ASSIGN(ExtensionUninstallDialogView); }; } // namespace -void ShowExtensionInstallDialog(Profile* profile, - ExtensionInstallUI::Delegate* delegate, - const Extension* extension, - SkBitmap* icon, - ExtensionInstallUI::PromptType type) { +// static +void ExtensionUninstallDialog::Show( + Profile* profile, + ExtensionUninstallDialog::Delegate* delegate, + const Extension* extension, + SkBitmap* icon) { Browser* browser = BrowserList::GetLastActiveWithProfile(profile); if (!browser) { - delegate->InstallUIAbort(); + delegate->ExtensionDialogCanceled(); return; } BrowserWindow* window = browser->window(); if (!window) { - delegate->InstallUIAbort(); + delegate->ExtensionDialogCanceled(); return; } browser::CreateViewsWindow(window->GetNativeHandle(), gfx::Rect(), - new InstallDialogContent(delegate, extension, icon, type))->Show(); + new ExtensionUninstallDialogView(delegate, extension, icon))->Show(); } diff --git a/chrome/browser/ui/webui/app_launcher_handler.cc b/chrome/browser/ui/webui/app_launcher_handler.cc index efba15b..7e1d8d3 100644 --- a/chrome/browser/ui/webui/app_launcher_handler.cc +++ b/chrome/browser/ui/webui/app_launcher_handler.cc @@ -64,7 +64,6 @@ extension_misc::AppLaunchBucket ParseLaunchSource( AppLauncherHandler::AppLauncherHandler(ExtensionService* extension_service) : extensions_service_(extension_service), - extension_prompt_type_(ExtensionInstallUI::UNSET_PROMPT_TYPE), promo_active_(false), ignore_changes_(false) { } @@ -407,8 +406,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) { @@ -539,11 +537,32 @@ void AppLauncherHandler::PromptToEnableApp(const 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 @@ -553,38 +572,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() { diff --git a/chrome/browser/ui/webui/app_launcher_handler.h b/chrome/browser/ui/webui/app_launcher_handler.h index 18dc1c5..ade5dd8 100644 --- a/chrome/browser/ui/webui/app_launcher_handler.h +++ b/chrome/browser/ui/webui/app_launcher_handler.h @@ -8,6 +8,7 @@ #include "base/scoped_ptr.h" #include "chrome/browser/extensions/extension_install_ui.h" +#include "chrome/browser/extensions/extension_uninstall_dialog.h" #include "chrome/browser/prefs/pref_change_registrar.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_constants.h" @@ -22,14 +23,14 @@ class PrefChangeRegistrar; class Profile; namespace gfx { - class Rect; +class Rect; } // The handler for Javascript messages related to the "apps" view. -class AppLauncherHandler - : public WebUIMessageHandler, - public ExtensionInstallUI::Delegate, - public NotificationObserver { +class AppLauncherHandler : public WebUIMessageHandler, + public ExtensionUninstallDialog::Delegate, + public ExtensionInstallUI::Delegate, + public NotificationObserver { public: explicit AppLauncherHandler(ExtensionService* extension_service); virtual ~AppLauncherHandler(); @@ -97,11 +98,18 @@ class AppLauncherHandler // Prompts the user to re-enable the app for |extension_id|. void PromptToEnableApp(const std::string& extension_id); - // ExtensionInstallUI::Delegate implementation, used for receiving - // notification about uninstall confirmation dialog selections. + // ExtensionUninstallDialog::Delegate: + virtual void ExtensionDialogAccepted(); + virtual void ExtensionDialogCanceled(); + + // ExtensionInstallUI::Delegate: virtual void InstallUIProceed(); virtual void InstallUIAbort(); + // Returns the ExtensionUninstallDialog object for this class, creating it if + // needed. + ExtensionUninstallDialog* GetExtensionUninstallDialog(); + // Returns the ExtensionInstallUI object for this class, creating it if // needed. ExtensionInstallUI* GetExtensionInstallUI(); @@ -119,16 +127,15 @@ class AppLauncherHandler // Monitor extension preference changes so that the Web UI can be notified. PrefChangeRegistrar pref_change_registrar_; - // Used to show confirmation UI for uninstalling/enabling extensions in - // incognito mode. - scoped_ptr<ExtensionInstallUI> install_ui_; + // Used to show confirmation UI for uninstalling extensions in incognito mode. + scoped_ptr<ExtensionUninstallDialog> extension_uninstall_dialog_; + + // Used to show confirmation UI for enabling extensions in incognito mode. + scoped_ptr<ExtensionInstallUI> extension_install_ui_; // The id of the extension we are prompting the user about. std::string extension_id_prompting_; - // The type of prompt we are showing the user. - ExtensionInstallUI::PromptType extension_prompt_type_; - // Whether the promo is currently being shown. bool promo_active_; diff --git a/chrome/browser/ui/webui/options/extension_settings_handler.cc b/chrome/browser/ui/webui/options/extension_settings_handler.cc index ae6145b..9c1557b 100644 --- a/chrome/browser/ui/webui/options/extension_settings_handler.cc +++ b/chrome/browser/ui/webui/options/extension_settings_handler.cc @@ -434,10 +434,12 @@ ExtensionResource ExtensionsDOMHandler::PickExtensionIcon( ExtensionIconSet::MATCH_BIGGER); } -ExtensionInstallUI* ExtensionsDOMHandler::GetExtensionInstallUI() { - if (!install_ui_.get()) - install_ui_.reset(new ExtensionInstallUI(web_ui_->GetProfile())); - return install_ui_.get(); +ExtensionUninstallDialog* ExtensionsDOMHandler::GetExtensionUninstallDialog() { + if (!extension_uninstall_dialog_.get()) { + extension_uninstall_dialog_.reset( + new ExtensionUninstallDialog(web_ui_->GetProfile())); + } + return extension_uninstall_dialog_.get(); } void ExtensionsDOMHandler::HandleToggleDeveloperMode(const ListValue* args) { @@ -545,10 +547,10 @@ void ExtensionsDOMHandler::HandleUninstallMessage(const ListValue* args) { extension_id_prompting_ = extension_id; - GetExtensionInstallUI()->ConfirmUninstall(this, extension); + GetExtensionUninstallDialog()->ConfirmUninstall(this, extension); } -void ExtensionsDOMHandler::InstallUIProceed() { +void ExtensionsDOMHandler::ExtensionDialogAccepted() { DCHECK(!extension_id_prompting_.empty()); bool was_terminated = false; @@ -575,7 +577,7 @@ void ExtensionsDOMHandler::InstallUIProceed() { HandleRequestExtensionsData(NULL); } -void ExtensionsDOMHandler::InstallUIAbort() { +void ExtensionsDOMHandler::ExtensionDialogCanceled() { extension_id_prompting_ = ""; } diff --git a/chrome/browser/ui/webui/options/extension_settings_handler.h b/chrome/browser/ui/webui/options/extension_settings_handler.h index 1ef59ce..9afc90b 100644 --- a/chrome/browser/ui/webui/options/extension_settings_handler.h +++ b/chrome/browser/ui/webui/options/extension_settings_handler.h @@ -10,7 +10,7 @@ #include <vector> #include "base/scoped_ptr.h" -#include "chrome/browser/extensions/extension_install_ui.h" +#include "chrome/browser/extensions/extension_uninstall_dialog.h" #include "chrome/browser/extensions/pack_extension_job.h" #include "chrome/browser/ui/shell_dialogs.h" #include "chrome/browser/ui/webui/chrome_url_data_manager.h" @@ -34,8 +34,10 @@ class UserScript; struct ExtensionPage { ExtensionPage(const GURL& url, int render_process_id, int render_view_id, bool incognito) - : url(url), render_process_id(render_process_id), - render_view_id(render_view_id), incognito(incognito) {} + : url(url), + render_process_id(render_process_id), + render_view_id(render_view_id), + incognito(incognito) {} GURL url; int render_process_id; int render_view_id; @@ -60,12 +62,11 @@ class ExtensionsUIHTMLSource : public ChromeURLDataManager::DataSource { }; // The handler for JavaScript messages related to the "extensions" view. -class ExtensionsDOMHandler - : public WebUIMessageHandler, - public NotificationObserver, - public PackExtensionJob::Client, - public SelectFileDialog::Listener, - public ExtensionInstallUI::Delegate { +class ExtensionsDOMHandler : public WebUIMessageHandler, + public NotificationObserver, + public PackExtensionJob::Client, + public SelectFileDialog::Listener, + public ExtensionUninstallDialog::Delegate { public: // Helper class that loads the icons for the extensions in the management UI. @@ -128,10 +129,9 @@ class ExtensionsDOMHandler virtual void OnPackFailure(const std::string& error); - // ExtensionInstallUI::Delegate implementation, used for receiving - // notification about uninstall confirmation dialog selections. - virtual void InstallUIProceed(); - virtual void InstallUIAbort(); + // ExtensionUninstallDialog::Delegate: + virtual void ExtensionDialogAccepted(); + virtual void ExtensionDialogCanceled(); private: // Callback for "requestExtensionsData" message. @@ -219,9 +219,9 @@ class ExtensionsDOMHandler // Called on the UI thread. void OnIconsLoaded(DictionaryValue* json_data); - // Returns the ExtensionInstallUI object for this class, creating it if + // Returns the ExtensionUninstallDialog object for this class, creating it if // needed. - ExtensionInstallUI* GetExtensionInstallUI(); + ExtensionUninstallDialog* GetExtensionUninstallDialog(); // Our model. scoped_refptr<ExtensionService> extensions_service_; @@ -235,9 +235,8 @@ class ExtensionsDOMHandler // Used to load icons asynchronously on the file thread. scoped_refptr<IconLoader> icon_loader_; - // Used to show confirmation UI for uninstalling/enabling extensions in - // incognito mode. - scoped_ptr<ExtensionInstallUI> install_ui_; + // Used to show confirmation UI for uninstalling extensions in incognito mode. + scoped_ptr<ExtensionUninstallDialog> extension_uninstall_dialog_; // The id of the extension we are prompting the user about. std::string extension_id_prompting_; |