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, |