Index: chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.cc |
diff --git a/chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.cc b/chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.cc |
index c65a732ceba0cf96993196f6b6f54fb912404664..758d79e1b5cb678f8f8b0b50c6c08e30c9fcf727 100644 |
--- a/chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.cc |
+++ b/chrome/browser/ui/app_modal_dialogs/javascript_app_modal_dialog.cc |
@@ -108,7 +108,10 @@ void JavaScriptAppModalDialog::Invalidate() { |
return; |
AppModalDialog::Invalidate(); |
- callback_.Reset(); |
+ if (!callback_.is_null()) { |
+ callback_.Run(false, string16()); |
+ callback_.Reset(); |
+ } |
if (native_dialog()) |
CloseModalDialog(); |
} |
@@ -161,7 +164,10 @@ void JavaScriptAppModalDialog::NotifyDelegate(bool success, |
if (!IsValid()) |
return; |
- callback_.Run(success, user_input); |
+ if (!callback_.is_null()) { |
+ callback_.Run(success, user_input); |
+ callback_.Reset(); |
+ } |
// The callback_ above may delete web_contents_, thus removing the extra |
// data from the map owned by ChromeJavaScriptDialogManager. Make sure |