Index: chrome/browser/ui/cocoa/tab_modal_confirm_dialog_mac.mm |
diff --git a/chrome/browser/ui/cocoa/tab_modal_confirm_dialog_mac.mm b/chrome/browser/ui/cocoa/tab_modal_confirm_dialog_mac.mm |
index bdca853ebcf2ab6c9a6954bd61baca1fdf8d3a91..40a949ae1bdad0802c9ec1fdec1832e8913e24d5 100644 |
--- a/chrome/browser/ui/cocoa/tab_modal_confirm_dialog_mac.mm |
+++ b/chrome/browser/ui/cocoa/tab_modal_confirm_dialog_mac.mm |
@@ -57,7 +57,8 @@ TabModalConfirmDialog* TabModalConfirmDialog::Create( |
TabModalConfirmDialogMac::TabModalConfirmDialogMac( |
TabModalConfirmDialogDelegate* delegate, |
content::WebContents* web_contents) |
- : delegate_(delegate) { |
+ : closing_(false), |
+ delegate_(delegate) { |
bridge_.reset([[TabModalConfirmDialogMacBridge alloc] |
initWithDelegate:delegate]); |
@@ -103,10 +104,16 @@ void TabModalConfirmDialogMac::CancelTabModalDialog() { |
} |
void TabModalConfirmDialogMac::CloseDialog() { |
- window_->CloseWebContentsModalDialog(); |
+ if (!closing_) { |
+ closing_ = true; |
+ window_->CloseWebContentsModalDialog(); |
+ } |
} |
void TabModalConfirmDialogMac::OnConstrainedWindowClosed( |
ConstrainedWindowMac* window) { |
+ // Provide a disposition in case the dialog was closed without accepting or |
+ // cancelling. |
+ delegate_->Close(); |
delete this; |
} |