Fix DCHECK() hit when removing a notification from the registrar that was already removed
When a WebContents is notified that its opener disowned it, we might already
have stopped observing the opener. In that case, opener_ is already NULL, and
we should not try to remove the notification again.
Review URL: https://chromiumcodereview.appspot.com/14160003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@193788 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 9da550af..dd65920 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -2926,11 +2926,13 @@
}
void WebContentsImpl::DidDisownOpener(RenderViewHost* rvh) {
- // Clear our opener so that future cross-process navigations don't have an
- // opener assigned.
- registrar_.Remove(this, NOTIFICATION_WEB_CONTENTS_DESTROYED,
- Source<WebContents>(opener_));
- opener_ = NULL;
+ if (opener_) {
+ // Clear our opener so that future cross-process navigations don't have an
+ // opener assigned.
+ registrar_.Remove(this, NOTIFICATION_WEB_CONTENTS_DESTROYED,
+ Source<WebContents>(opener_));
+ opener_ = NULL;
+ }
// Notify all swapped out RenderViewHosts for this tab. This is important
// in case we go back to them, or if another window in those processes tries