summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui
diff options
context:
space:
mode:
authortfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-26 01:36:28 +0000
committertfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-26 01:36:28 +0000
commit502e3961179b6855a717409e6947f9a389bc304d (patch)
tree476bd9aabf1892fcd505a81c7574ebe1be9764d6 /chrome/browser/ui
parente294c1ae1f2d659ce4d5730a6bd90dd512926d3c (diff)
downloadchromium_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.mm17
-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.cc73
-rw-r--r--chrome/browser/ui/webui/app_launcher_handler.h33
-rw-r--r--chrome/browser/ui/webui/options/extension_settings_handler.cc16
-rw-r--r--chrome/browser/ui/webui/options/extension_settings_handler.h35
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_;