diff options
author | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-13 03:42:36 +0000 |
---|---|---|
committer | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-13 03:42:36 +0000 |
commit | d2bac6b8f5a7c78c258914ce5ee9416ae31ace1a (patch) | |
tree | 328d8038772fa6e4c52ed8b967aeb8c4a9582d42 /chrome/browser/chrome_content_browser_client.cc | |
parent | e56ca99c2156a4977e8bf8e359bd7cdf9e60ea25 (diff) | |
download | chromium_src-d2bac6b8f5a7c78c258914ce5ee9416ae31ace1a.zip chromium_src-d2bac6b8f5a7c78c258914ce5ee9416ae31ace1a.tar.gz chromium_src-d2bac6b8f5a7c78c258914ce5ee9416ae31ace1a.tar.bz2 |
Abort prerendering when spawning a popup already on IO thread
Otherwise, we might run into problems in certain situations when a session storage namespace was already cloned by isn't claimed by a WebContents.
BUG=269449
Review URL: https://chromiumcodereview.appspot.com/22563007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@217182 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chrome_content_browser_client.cc')
-rw-r--r-- | chrome/browser/chrome_content_browser_client.cc | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index d8f7f9f..4e1b146 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc @@ -562,16 +562,6 @@ void HandleBlockedPopupOnUIThread(const BlockedPopupParams& params) { if (!tab) return; - prerender::PrerenderManager* prerender_manager = - prerender::PrerenderManagerFactory::GetForProfile( - Profile::FromBrowserContext(tab->GetBrowserContext())); - if (prerender_manager) { - prerender_manager->DestroyPrerenderForRenderView( - params.render_process_id, - params.opener_id, - prerender::FINAL_STATUS_CREATE_NEW_WINDOW); - } - PopupBlockerTabHelper* popup_helper = PopupBlockerTabHelper::FromWebContents(tab); if (!popup_helper) @@ -2011,6 +2001,14 @@ bool ChromeContentBrowserClient::CanCreateWindow( return false; } + if (g_browser_process->prerender_tracker() && + g_browser_process->prerender_tracker()->TryCancelOnIOThread( + render_process_id, + opener_id, + prerender::FINAL_STATUS_CREATE_NEW_WINDOW)) { + return false; + } + #if !defined(OS_ANDROID) if (CommandLine::ForCurrentProcess()->HasSwitch( switches::kDisableBetterPopupBlocking)) { |