diff options
author | joshia@google.com <joshia@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-13 00:02:25 +0000 |
---|---|---|
committer | joshia@google.com <joshia@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-13 00:02:25 +0000 |
commit | ee4ac82f11c373f305f253655cde622f77ef4df4 (patch) | |
tree | d7582707ff2b5231f95ba0f2e98bd5835f21e451 /chrome/browser | |
parent | 10c64a48c16df08a015bc06a305b589c2932d5a2 (diff) | |
download | chromium_src-ee4ac82f11c373f305f253655cde622f77ef4df4.zip chromium_src-ee4ac82f11c373f305f253655cde622f77ef4df4.tar.gz chromium_src-ee4ac82f11c373f305f253655cde622f77ef4df4.tar.bz2 |
Check if the delegate in WebContents::CanTerminate is valid
before invoking on it. not doing this causes a UT test
'VisibleBrowserTest.WindowOpenClose' to crash frequently.
Review URL: http://codereview.chromium.org/17366
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@7905 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/web_contents.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/chrome/browser/web_contents.cc b/chrome/browser/web_contents.cc index 3b5b66e..d8c6e42 100644 --- a/chrome/browser/web_contents.cc +++ b/chrome/browser/web_contents.cc @@ -1342,6 +1342,9 @@ void WebContents::OnEnterOrSpace() { } bool WebContents::CanTerminate() const { + if (!delegate()) + return true; + return !delegate()->IsExternalTabContainer(); } @@ -1358,7 +1361,8 @@ void WebContents::FileSelectionCanceled(void* params) { void WebContents::BeforeUnloadFiredFromRenderManager( bool proceed, bool* proceed_to_fire_unload) { - delegate()->BeforeUnloadFired(this, proceed, proceed_to_fire_unload); + if (delegate()) + delegate()->BeforeUnloadFired(this, proceed, proceed_to_fire_unload); } void WebContents::UpdateRenderViewSizeForRenderManager() { |