Index: content/browser/web_contents/web_contents_impl.cc |
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc |
index 7c02ea952f1947a89bcb3bb6ccf7665ba9b45549..a98821caf67ec1aae45cc8649b3afd8ed25b4982 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -2116,6 +2116,8 @@ void WebContentsImpl::CreateNewWindow( |
// Save the created window associated with the route so we can show it |
// later. |
DCHECK_NE(MSG_ROUTING_NONE, main_frame_widget_route_id); |
+ CHECK(RenderWidgetHostImpl::FromID(render_process_id, |
+ main_frame_widget_route_id)); |
pending_contents_[std::make_pair( |
render_process_id, main_frame_widget_route_id)] = new_contents; |
AddDestructionObserver(new_contents); |
@@ -2216,6 +2218,14 @@ void WebContentsImpl::ShowCreatedWindow(int process_id, |
WebContentsImpl* contents = |
GetCreatedWindow(process_id, main_frame_widget_route_id); |
if (contents) { |
+ RenderWidgetHostImpl* rwh = |
+ RenderWidgetHostImpl::FromID(process_id, main_frame_widget_route_id); |
+ if (!rwh) { |
+ // TODO(nick): Temporary for https://crbug.com/680876 |
+ base::debug::DumpWithoutCrashing(); |
+ return; |
+ } |
+ |
WebContentsDelegate* delegate = GetDelegate(); |
contents->is_resume_pending_ = true; |
if (!delegate || delegate->ShouldResumeRequestsForCreatedWindow()) |
@@ -2226,8 +2236,6 @@ void WebContentsImpl::ShowCreatedWindow(int process_id, |
user_gesture, NULL); |
} |
- RenderWidgetHostImpl* rwh = contents->GetMainFrame()->GetRenderWidgetHost(); |
- DCHECK_EQ(main_frame_widget_route_id, rwh->GetRoutingID()); |
rwh->Send(new ViewMsg_Move_ACK(rwh->GetRoutingID())); |
} |
} |