Index: chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc |
diff --git a/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc b/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc |
index 46fa4b664f6d611328317fc9f678151f0daa7796..c46a4c75fb26a0664625022eec80a65ed519e026 100644 |
--- a/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc |
+++ b/chrome/browser/ui/views/extensions/media_galleries_dialog_views.cc |
@@ -79,21 +79,27 @@ MediaGalleriesDialogViews::MediaGalleriesDialogViews( |
accepted_(false) { |
InitChildViews(); |
- // Ownership of |contents_| is handed off by this call. |window_| will take |
- // care of deleting itself after calling DeleteDelegate(). |
- WebContentsModalDialogManager* web_contents_modal_dialog_manager = |
- WebContentsModalDialogManager::FromWebContents( |
- controller->web_contents()); |
- DCHECK(web_contents_modal_dialog_manager); |
- WebContentsModalDialogManagerDelegate* modal_delegate = |
- web_contents_modal_dialog_manager->delegate(); |
- DCHECK(modal_delegate); |
- window_ = views::Widget::CreateWindowAsFramelessChild( |
- this, modal_delegate->GetWebContentsModalDialogHost()->GetHostView()); |
- web_contents_modal_dialog_manager->ShowDialog(window_->GetNativeView()); |
+ // May be NULL during tests. |
+ if (controller->web_contents()) { |
+ // Ownership of |contents_| is handed off by this call. |window_| will take |
+ // care of deleting itself after calling DeleteDelegate(). |
+ WebContentsModalDialogManager* web_contents_modal_dialog_manager = |
+ WebContentsModalDialogManager::FromWebContents( |
+ controller->web_contents()); |
+ DCHECK(web_contents_modal_dialog_manager); |
+ WebContentsModalDialogManagerDelegate* modal_delegate = |
+ web_contents_modal_dialog_manager->delegate(); |
+ DCHECK(modal_delegate); |
+ window_ = views::Widget::CreateWindowAsFramelessChild( |
+ this, modal_delegate->GetWebContentsModalDialogHost()->GetHostView()); |
+ web_contents_modal_dialog_manager->ShowDialog(window_->GetNativeView()); |
+ } |
} |
-MediaGalleriesDialogViews::~MediaGalleriesDialogViews() {} |
+MediaGalleriesDialogViews::~MediaGalleriesDialogViews() { |
+ if (!controller_->web_contents()) |
+ delete contents_; |
+} |
void MediaGalleriesDialogViews::InitChildViews() { |
// Outer dialog layout. |
@@ -328,9 +334,14 @@ views::NonClientFrameView* MediaGalleriesDialogViews::CreateNonClientFrameView( |
void MediaGalleriesDialogViews::ButtonPressed(views::Button* sender, |
const ui::Event& event) { |
- confirm_available_ = true; |
GetWidget()->client_view()->AsDialogClientView()->UpdateDialogButtons(); |
+ ButtonPressedAction(sender); |
+} |
+ |
+void MediaGalleriesDialogViews::ButtonPressedAction(views::Button* sender) { |
+ confirm_available_ = true; |
+ |
if (sender == add_gallery_button_) { |
controller_->OnAddFolderClicked(); |
return; |