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 5621f827b46d1f009ff3cb81d369fc9adbb12d02..fb92a2bcbad70b2a1b907cfd55e468f442271589 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -1453,7 +1453,7 @@ void WebContentsImpl::Observe(int type, |
// destroyed. |
fullscreen_widget_had_focus_at_shutdown_ = (view && view->HasFocus()); |
} else { |
- for (PendingWidgetViews::iterator i = pending_widget_views_.begin(); |
+ for (auto i = pending_widget_views_.begin(); |
i != pending_widget_views_.end(); ++i) { |
if (host->GetView() == i->second) { |
pending_widget_views_.erase(i); |
@@ -1596,8 +1596,7 @@ void WebContentsImpl::OnWebContentsDestroyed(WebContentsImpl* web_contents) { |
RemoveDestructionObserver(web_contents); |
// Clear a pending contents that has been closed before being shown. |
- for (PendingContents::iterator iter = pending_contents_.begin(); |
- iter != pending_contents_.end(); |
+ for (auto iter = pending_contents_.begin(); iter != pending_contents_.end(); |
++iter) { |
if (iter->second != web_contents) |
continue; |
@@ -2041,7 +2040,8 @@ void WebContentsImpl::CreateNewWindow( |
// Save the created window associated with the route so we can show it |
// later. |
DCHECK_NE(MSG_ROUTING_NONE, route_id); |
- pending_contents_[route_id] = new_contents; |
+ pending_contents_[std::make_pair(render_process_id, route_id)] = |
+ new_contents; |
AddDestructionObserver(new_contents); |
} |
@@ -2123,7 +2123,8 @@ void WebContentsImpl::CreateNewWidget(int32_t render_process_id, |
widget_view->SetPopupType(popup_type); |
} |
// Save the created widget associated with the route so we can show it later. |
- pending_widget_views_[route_id] = widget_view; |
+ pending_widget_views_[std::make_pair(render_process_id, route_id)] = |
+ widget_view; |
#if defined(OS_MACOSX) |
// A RenderWidgetHostViewMac has lifetime scoped to the view. We'll retain it |
@@ -2132,11 +2133,12 @@ void WebContentsImpl::CreateNewWidget(int32_t render_process_id, |
#endif |
} |
-void WebContentsImpl::ShowCreatedWindow(int route_id, |
+void WebContentsImpl::ShowCreatedWindow(int process_id, |
+ int route_id, |
WindowOpenDisposition disposition, |
const gfx::Rect& initial_rect, |
bool user_gesture) { |
- WebContentsImpl* contents = GetCreatedWindow(route_id); |
+ WebContentsImpl* contents = GetCreatedWindow(process_id, route_id); |
if (contents) { |
WebContentsDelegate* delegate = GetDelegate(); |
contents->is_resume_pending_ = true; |
@@ -2150,20 +2152,24 @@ void WebContentsImpl::ShowCreatedWindow(int route_id, |
} |
} |
-void WebContentsImpl::ShowCreatedWidget(int route_id, |
+void WebContentsImpl::ShowCreatedWidget(int process_id, |
+ int route_id, |
const gfx::Rect& initial_rect) { |
- ShowCreatedWidget(route_id, false, initial_rect); |
+ ShowCreatedWidget(process_id, route_id, false, initial_rect); |
} |
-void WebContentsImpl::ShowCreatedFullscreenWidget(int route_id) { |
- ShowCreatedWidget(route_id, true, gfx::Rect()); |
+void WebContentsImpl::ShowCreatedFullscreenWidget(int process_id, |
+ int route_id) { |
+ ShowCreatedWidget(process_id, route_id, true, gfx::Rect()); |
} |
-void WebContentsImpl::ShowCreatedWidget(int route_id, |
+void WebContentsImpl::ShowCreatedWidget(int process_id, |
+ int route_id, |
bool is_fullscreen, |
const gfx::Rect& initial_rect) { |
RenderWidgetHostViewBase* widget_host_view = |
- static_cast<RenderWidgetHostViewBase*>(GetCreatedWidget(route_id)); |
+ static_cast<RenderWidgetHostViewBase*>( |
+ GetCreatedWidget(process_id, route_id)); |
if (!widget_host_view) |
return; |
@@ -2210,17 +2216,17 @@ void WebContentsImpl::ShowCreatedWidget(int route_id, |
#endif |
} |
-WebContentsImpl* WebContentsImpl::GetCreatedWindow(int route_id) { |
- PendingContents::iterator iter = pending_contents_.find(route_id); |
+WebContentsImpl* WebContentsImpl::GetCreatedWindow(int process_id, |
+ int route_id) { |
+ auto iter = pending_contents_.find(std::make_pair(process_id, route_id)); |
// Certain systems can block the creation of new windows. If we didn't succeed |
// in creating one, just return NULL. |
- if (iter == pending_contents_.end()) { |
- return NULL; |
- } |
+ if (iter == pending_contents_.end()) |
+ return nullptr; |
WebContentsImpl* new_contents = iter->second; |
- pending_contents_.erase(route_id); |
+ pending_contents_.erase(std::make_pair(process_id, route_id)); |
RemoveDestructionObserver(new_contents); |
// Don't initialize the guest WebContents immediately. |
@@ -2229,25 +2235,26 @@ WebContentsImpl* WebContentsImpl::GetCreatedWindow(int route_id) { |
if (!new_contents->GetRenderProcessHost()->HasConnection() || |
!new_contents->GetRenderViewHost()->GetWidget()->GetView()) |
- return NULL; |
+ return nullptr; |
return new_contents; |
} |
-RenderWidgetHostView* WebContentsImpl::GetCreatedWidget(int route_id) { |
- PendingWidgetViews::iterator iter = pending_widget_views_.find(route_id); |
+RenderWidgetHostView* WebContentsImpl::GetCreatedWidget(int process_id, |
+ int route_id) { |
+ auto iter = pending_widget_views_.find(std::make_pair(process_id, route_id)); |
if (iter == pending_widget_views_.end()) { |
DCHECK(false); |
- return NULL; |
+ return nullptr; |
} |
RenderWidgetHostView* widget_host_view = iter->second; |
- pending_widget_views_.erase(route_id); |
+ pending_widget_views_.erase(std::make_pair(process_id, route_id)); |
RenderWidgetHost* widget_host = widget_host_view->GetRenderWidgetHost(); |
if (!widget_host->GetProcess()->HasConnection()) { |
// The view has gone away or the renderer crashed. Nothing to do. |
- return NULL; |
+ return nullptr; |
} |
return widget_host_view; |