summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chrome_content_browser_client.cc
diff options
context:
space:
mode:
authorjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-13 03:42:36 +0000
committerjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-13 03:42:36 +0000
commitd2bac6b8f5a7c78c258914ce5ee9416ae31ace1a (patch)
tree328d8038772fa6e4c52ed8b967aeb8c4a9582d42 /chrome/browser/chrome_content_browser_client.cc
parente56ca99c2156a4977e8bf8e359bd7cdf9e60ea25 (diff)
downloadchromium_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.cc18
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)) {