Index: chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm |
diff --git a/chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm b/chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm |
index c0aa06be491d0de019213de2572a25e1411239ce..4df3304d5bdc81228de507edac19e255e6c05efc 100644 |
--- a/chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm |
+++ b/chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm |
@@ -81,5 +81,12 @@ bool ConstrainedWindowMac::DialogWasShown() { |
WebContentsModalDialogManager* ConstrainedWindowMac::GetDialogManager() { |
DCHECK(web_contents_); |
- return WebContentsModalDialogManager::FromWebContents(web_contents_); |
+ WebContentsModalDialogManager* dialog_manager = |
+ WebContentsModalDialogManager::FromWebContents(web_contents_); |
+ // If WebContentsModalDialogManager::CreateForWebContents(web_contents_) was |
+ // never called, then the manager will be null. E.g., for browser tabs, |
+ // TabHelpers::AttachTabHelpers() calls CreateForWebContents(). It is invalid |
+ // to show a dialog on some kinds of WebContents. Crash cleanly in that case. |
+ CHECK(dialog_manager); |
+ return dialog_manager; |
} |