Index: chrome/browser/chrome_content_browser_client.cc |
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc |
index 66ccc01d7f86825f5dd5d75dcd2d1e6eb9ea2b47..6727f575f5a77fec063fcd05e91bfd1400be7399 100644 |
--- a/chrome/browser/chrome_content_browser_client.cc |
+++ b/chrome/browser/chrome_content_browser_client.cc |
@@ -515,9 +515,15 @@ void SetApplicationLocaleOnIOThread(const std::string& locale) { |
} |
void HandleBlockedPopupOnUIThread(const BlockedWindowParams& params) { |
- WebContents* tab = tab_util::GetWebContentsByID(params.render_process_id(), |
- params.opener_id()); |
- if (!tab) |
+ // TODO(jochen): This code path should use RenderFrameHosts. See |
+ // http://crbug.com/431769 for details. |
+ RenderViewHost* render_view_host = |
+ RenderViewHost::FromID(params.render_process_id(), params.opener_id()); |
+ if (!render_view_host) |
+ return; |
+ WebContents* tab = WebContents::FromRenderViewHost(render_view_host); |
+ // The tab might already have navigated away. |
+ if (!tab || tab->GetRenderViewHost() != render_view_host) |
return; |
prerender::PrerenderContents* prerender_contents = |