| Index: chrome/browser/ui/views/extensions/extension_uninstall_dialog_view.cc
|
| diff --git a/chrome/browser/ui/views/extensions/extension_uninstall_dialog_view.cc b/chrome/browser/ui/views/extensions/extension_uninstall_dialog_view.cc
|
| index d6d3a8c5964cfc01de4fcaa12927df3a1940c441..cd9b53f184e56db2b7ea6d9ae0ca80bc3c1f5bde 100644
|
| --- a/chrome/browser/ui/views/extensions/extension_uninstall_dialog_view.cc
|
| +++ b/chrome/browser/ui/views/extensions/extension_uninstall_dialog_view.cc
|
| @@ -31,20 +31,13 @@ const int kIconSize = 64;
|
|
|
| class ExtensionUninstallDialogDelegateView;
|
|
|
| -// Returns parent window for extension uninstall dialog.
|
| -gfx::NativeWindow GetParent(Browser* browser) {
|
| - if (browser && browser->window())
|
| - return browser->window()->GetNativeWindow();
|
| - return NULL;
|
| -}
|
| -
|
| // Views implementation of the uninstall dialog.
|
| class ExtensionUninstallDialogViews
|
| : public extensions::ExtensionUninstallDialog {
|
| public:
|
| ExtensionUninstallDialogViews(
|
| Profile* profile,
|
| - Browser* browser,
|
| + gfx::NativeWindow parent,
|
| extensions::ExtensionUninstallDialog::Delegate* delegate);
|
| virtual ~ExtensionUninstallDialogViews();
|
|
|
| @@ -56,6 +49,7 @@ class ExtensionUninstallDialogViews
|
|
|
| private:
|
| virtual void Show() OVERRIDE;
|
| + virtual void RefreshIcon() OVERRIDE;
|
|
|
| ExtensionUninstallDialogDelegateView* view_;
|
| bool show_in_app_list_;
|
| @@ -73,11 +67,15 @@ class ExtensionUninstallDialogDelegateView : public views::DialogDelegateView {
|
| gfx::ImageSkia* icon);
|
| virtual ~ExtensionUninstallDialogDelegateView();
|
|
|
| + void SetIcon(gfx::ImageSkia* icon);
|
| +
|
| // Called when the ExtensionUninstallDialog has been destroyed to make sure
|
| // we invalidate pointers.
|
| void DialogDestroyed() { dialog_ = NULL; }
|
|
|
| private:
|
| + void SetIconInternal(gfx::ImageSkia* icon);
|
| +
|
| // views::DialogDelegate:
|
| virtual base::string16 GetDialogButtonLabel(
|
| ui::DialogButton button) const OVERRIDE;
|
| @@ -111,11 +109,10 @@ class ExtensionUninstallDialogDelegateView : public views::DialogDelegateView {
|
|
|
| ExtensionUninstallDialogViews::ExtensionUninstallDialogViews(
|
| Profile* profile,
|
| - Browser* browser,
|
| + gfx::NativeWindow parent,
|
| extensions::ExtensionUninstallDialog::Delegate* delegate)
|
| - : extensions::ExtensionUninstallDialog(profile, browser, delegate),
|
| - view_(NULL),
|
| - show_in_app_list_(!browser) {
|
| + : extensions::ExtensionUninstallDialog(profile, parent, delegate),
|
| + view_(NULL) {
|
| }
|
|
|
| ExtensionUninstallDialogViews::~ExtensionUninstallDialogViews() {
|
| @@ -127,19 +124,13 @@ ExtensionUninstallDialogViews::~ExtensionUninstallDialogViews() {
|
| }
|
|
|
| void ExtensionUninstallDialogViews::Show() {
|
| - // TODO(tapted): A true |desktop_type| needs to be passed in at creation time
|
| - // to remove reliance on GetActiveDesktop(). http://crbug.com/308360
|
| - gfx::NativeWindow parent = show_in_app_list_ ?
|
| - AppListService::Get(chrome::GetActiveDesktop())->GetAppListWindow() :
|
| - GetParent(browser_);
|
| - if (browser_ && !parent) {
|
| - delegate_->ExtensionUninstallCanceled();
|
| - return;
|
| - }
|
| -
|
| view_ = new ExtensionUninstallDialogDelegateView(
|
| this, extension_, triggering_extension_, &icon_);
|
| - CreateBrowserModalDialogViews(view_, parent)->Show();
|
| + CreateBrowserModalDialogViews(view_, parent_)->Show();
|
| +}
|
| +
|
| +void ExtensionUninstallDialogViews::RefreshIcon() {
|
| + view_->SetIcon(&icon_);
|
| }
|
|
|
| void ExtensionUninstallDialogViews::ExtensionUninstallAccepted() {
|
| @@ -161,13 +152,8 @@ ExtensionUninstallDialogDelegateView::ExtensionUninstallDialogDelegateView(
|
| gfx::ImageSkia* icon)
|
| : dialog_(dialog_view),
|
| triggered_by_extension_(triggering_extension != 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)
|
| - size = gfx::Size(kIconSize, kIconSize);
|
| icon_ = new views::ImageView();
|
| - icon_->SetImageSize(size);
|
| - icon_->SetImage(*icon);
|
| + SetIconInternal(icon);
|
| AddChildView(icon_);
|
|
|
| heading_ = new views::Label(base::UTF8ToUTF16(dialog_->GetHeadingText()));
|
| @@ -179,6 +165,21 @@ ExtensionUninstallDialogDelegateView::ExtensionUninstallDialogDelegateView(
|
| ExtensionUninstallDialogDelegateView::~ExtensionUninstallDialogDelegateView() {
|
| }
|
|
|
| +void ExtensionUninstallDialogDelegateView::SetIcon(gfx::ImageSkia* icon) {
|
| + SetIconInternal(icon);
|
| + Layout();
|
| +}
|
| +
|
| +void ExtensionUninstallDialogDelegateView::SetIconInternal(
|
| + gfx::ImageSkia* icon) {
|
| + // 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)
|
| + size = gfx::Size(kIconSize, kIconSize);
|
| + icon_->SetImageSize(size);
|
| + icon_->SetImage(*icon);
|
| +}
|
| +
|
| base::string16 ExtensionUninstallDialogDelegateView::GetDialogButtonLabel(
|
| ui::DialogButton button) const {
|
| return l10n_util::GetStringUTF16((button == ui::DIALOG_BUTTON_OK) ?
|
| @@ -245,7 +246,7 @@ void ExtensionUninstallDialogDelegateView::Layout() {
|
| // static
|
| extensions::ExtensionUninstallDialog*
|
| extensions::ExtensionUninstallDialog::Create(Profile* profile,
|
| - Browser* browser,
|
| + gfx::NativeWindow parent,
|
| Delegate* delegate) {
|
| - return new ExtensionUninstallDialogViews(profile, browser, delegate);
|
| + return new ExtensionUninstallDialogViews(profile, parent, delegate);
|
| }
|
|
|