Chromium Code Reviews| 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..7461c85e52013b06ccf25af5dd7281e0ee079e34 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); |
| @@ -2213,9 +2215,13 @@ void WebContentsImpl::ShowCreatedWindow(int process_id, |
| WindowOpenDisposition disposition, |
| const gfx::Rect& initial_rect, |
| bool user_gesture) { |
| + RenderWidgetHostImpl* rwh = |
| + RenderWidgetHostImpl::FromID(process_id, main_frame_widget_route_id); |
| + if (!rwh) |
| + return; |
|
alexmos
2017/01/18 23:23:47
Would it help at all to add a DumpWithoutCrashing
ncarter (slow)
2017/01/19 22:04:49
Thanks for this suggestion. I've added a DumpWitho
|
| WebContentsImpl* contents = |
| GetCreatedWindow(process_id, main_frame_widget_route_id); |
| - if (contents) { |
| + if (contents && contents->GetMainFrame()->GetRenderWidgetHost() == rwh) { |
|
alexmos
2017/01/18 23:23:47
How do you think we could get to the state where t
ncarter (slow)
2017/01/18 23:59:16
Really, I'm grasping at straws here: I don't reall
alexmos
2017/01/19 01:25:20
Agreed - an Android delegate somehow triggering a
ncarter (slow)
2017/01/19 22:04:49
I undid the equality check since I agree with you
|
| WebContentsDelegate* delegate = GetDelegate(); |
| contents->is_resume_pending_ = true; |
| if (!delegate || delegate->ShouldResumeRequestsForCreatedWindow()) |
| @@ -2226,8 +2232,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())); |
| } |
| } |