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 a4ff3e39f1f5582bb0efccdde877ccaa6b7159ec..93d29a502e240e1d22305e2a1bd2a446398c7b18 100644 |
| --- a/content/browser/web_contents/web_contents_impl.cc |
| +++ b/content/browser/web_contents/web_contents_impl.cc |
| @@ -1357,13 +1357,14 @@ void WebContentsImpl::CreateNewWindow( |
| // Save the window for later if we're not suppressing the opener (since it |
| // will be shown immediately) and if it's not a guest (since we separately |
|
Charlie Reis
2013/04/04 21:48:46
This comment looks stale now. For guests, we are
Fady Samuel
2013/04/04 22:35:15
We save the window until WebContentsImpl::ShowCrea
|
| // track when to show guests). |
| - if (!params.opener_suppressed && !is_guest) { |
| - WebContentsViewPort* new_view = new_contents->view_.get(); |
| - |
| - // TODO(brettw): It seems bogus that we have to call this function on the |
| - // newly created object and give it one of its own member variables. |
| - new_view->CreateViewForWidget(new_contents->GetRenderViewHost()); |
| + if (!params.opener_suppressed) { |
| + if (!is_guest) { |
| + WebContentsViewPort* new_view = new_contents->view_.get(); |
| + // TODO(brettw): It seems bogus that we have to call this function on the |
| + // newly created object and give it one of its own member variables. |
| + new_view->CreateViewForWidget(new_contents->GetRenderViewHost()); |
| + } |
| // Save the created window associated with the route so we can show it |
| // later. |
| DCHECK_NE(MSG_ROUTING_NONE, route_id); |
| @@ -1507,6 +1508,10 @@ WebContentsImpl* WebContentsImpl::GetCreatedWindow(int route_id) { |
| registrar_.Remove(this, NOTIFICATION_WEB_CONTENTS_DESTROYED, |
| Source<WebContents>(new_contents)); |
| + // Don't initialize the guest WebContents immediately. |
| + if (new_contents->GetRenderProcessHost()->IsGuest()) |
|
Charlie Reis
2013/04/04 21:48:46
What if the process died and didn't have a connect
Fady Samuel
2013/04/04 22:35:15
If the process crashed then we'll do cleanup elsew
|
| + return new_contents; |
| + |
| if (!new_contents->GetRenderProcessHost()->HasConnection() || |
| !new_contents->GetRenderViewHost()->GetView()) |
| return NULL; |