Chromium Code Reviews| 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 e07ea7aa1525c34b4ffab0b1a833072daa79498a..c14e5edf01620f6c696a0d0713b6a1ae72f5874d 100644 |
| --- a/chrome/browser/chrome_content_browser_client.cc |
| +++ b/chrome/browser/chrome_content_browser_client.cc |
| @@ -494,15 +494,14 @@ void SetApplicationLocaleOnIOThread(const std::string& locale) { |
| } |
| void HandleBlockedPopupOnUIThread(const BlockedWindowParams& params) { |
| - // 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) |
| + RenderFrameHost* render_frame_host = RenderFrameHost::FromID( |
| + params.render_process_id(), params.opener_render_frame_id()); |
| + if (!render_frame_host) |
| return; |
| - WebContents* tab = WebContents::FromRenderViewHost(render_view_host); |
| + WebContents* tab = WebContents::FromRenderFrameHost(render_frame_host); |
| // The tab might already have navigated away. |
| - if (!tab || tab->GetRenderViewHost() != render_view_host) |
| + if (!tab || |
| + tab->GetRenderViewHost() != render_frame_host->GetRenderViewHost()) |
|
alexmos
2015/06/01 17:44:55
I guess this prevents the blocked popup UI from be
Charlie Reis
2015/06/03 20:01:36
Interesting. I don't think this new check works,
alexmos
2015/06/05 22:34:30
Ah, right, this check won't work for subframes --
Charlie Reis
2015/06/09 04:38:38
Hmm, you're right, but I wonder if we should chang
|
| return; |
| prerender::PrerenderContents* prerender_contents = |
| @@ -545,9 +544,8 @@ class SafeBrowsingSSLCertReporter : public SSLCertReporter { |
| #if defined(OS_ANDROID) |
| void HandleSingleTabModeBlockOnUIThread(const BlockedWindowParams& params) { |
| - WebContents* web_contents = |
| - tab_util::GetWebContentsByID(params.render_process_id(), |
| - params.opener_id()); |
| + WebContents* web_contents = tab_util::GetWebContentsByFrameID( |
| + params.render_process_id(), params.opener_render_frame_id()); |
| if (!web_contents) |
| return; |
| @@ -1851,7 +1849,8 @@ bool ChromeContentBrowserClient::CanCreateWindow( |
| bool opener_suppressed, |
| content::ResourceContext* context, |
| int render_process_id, |
| - int opener_id, |
| + int opener_render_view_id, |
|
alexmos
2015/06/01 17:44:55
I didn't just convert opener_id to be opener_rende
Charlie Reis
2015/06/03 20:01:36
Yes, that approach sounds good.
|
| + int opener_render_frame_id, |
| bool* no_javascript_access) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| @@ -1900,7 +1899,7 @@ bool ChromeContentBrowserClient::CanCreateWindow( |
| user_gesture, |
| opener_suppressed, |
| render_process_id, |
| - opener_id); |
| + opener_render_frame_id); |
| if (!user_gesture && |
| !base::CommandLine::ForCurrentProcess()->HasSwitch( |
| @@ -1919,7 +1918,8 @@ bool ChromeContentBrowserClient::CanCreateWindow( |
| } |
| #if defined(OS_ANDROID) |
| - if (SingleTabModeTabHelper::IsRegistered(render_process_id, opener_id)) { |
| + if (SingleTabModeTabHelper::IsRegistered(render_process_id, |
| + opener_render_view_id)) { |
| BrowserThread::PostTask(BrowserThread::UI, |
| FROM_HERE, |
| base::Bind(&HandleSingleTabModeBlockOnUIThread, |