Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Unified Diff: chrome/browser/prerender/prerender_manager.cc

Issue 6915019: Changes to not use the prerendered contents when window.opener needs to be set. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/prerender/prerender_manager.cc
diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc
index 93fff740e5d0ffa46c87dc7dcc2d50df4c89ec9d..d583be56c0bef50c6c73ddc42e8ecb6446a8d181 100644
--- a/chrome/browser/prerender/prerender_manager.cc
+++ b/chrome/browser/prerender/prerender_manager.cc
@@ -411,13 +411,23 @@ PrerenderContents* PrerenderManager::GetEntry(const GURL& url) {
return GetEntryButNotSpecifiedTC(url, NULL);
}
-bool PrerenderManager::MaybeUsePreloadedPageOld(TabContents* tab_contents,
- const GURL& url) {
+bool PrerenderManager::MaybeUsePreloadedPageOld(
+ TabContents* tab_contents,
+ const GURL& url,
+ const PrerenderManager::PrerenderedPageProperties& properties) {
DCHECK(CalledOnValidThread());
scoped_ptr<PrerenderContents> prerender_contents(GetEntry(url));
if (prerender_contents.get() == NULL)
return false;
+ // Do not use the prerendered version if the opener window.property was
+ // supposed to be set.
+ if (properties.has_opener_set_) {
+ LOG(ERROR) << "Not using prerendered page.";
cbentzel 2011/05/04 17:10:15 Remove LOG(ERROR)
Shishir 2011/05/05 23:09:54 Done.
+ prerender_contents->set_final_status(FINAL_STATUS_WINDOW_OPENER);
+ return false;
+ }
+
// If we are just in the control group (which can be detected by noticing
// that prerendering hasn't even started yet), record that |tab_contents| now
// would be showing a prerendered contents, but otherwise, don't do anything.
@@ -497,11 +507,14 @@ bool PrerenderManager::MaybeUsePreloadedPageOld(TabContents* tab_contents,
return true;
}
-bool PrerenderManager::MaybeUsePreloadedPage(TabContents* tab_contents,
- const GURL& url) {
+bool PrerenderManager::MaybeUsePreloadedPage(
+ TabContents* tab_contents,
+ const GURL& url,
+ const PrerenderManager::PrerenderedPageProperties& properties) {
if (!PrerenderContents::UseTabContents()) {
LOG(INFO) << "Checking for prerender with LEGACY code\n";
- return PrerenderManager::MaybeUsePreloadedPageOld(tab_contents, url);
+ return PrerenderManager::MaybeUsePreloadedPageOld(tab_contents, url,
+ properties);
}
LOG(INFO) << "Checking for prerender with NEW code\n";
DCHECK(CalledOnValidThread());
@@ -510,6 +523,14 @@ bool PrerenderManager::MaybeUsePreloadedPage(TabContents* tab_contents,
if (prerender_contents.get() == NULL)
return false;
+ // Do not use the prerendered version if the opener window.property was
+ // supposed to be set.
+ if (properties.has_opener_set_) {
+ LOG(ERROR) << "Not using prerendered page.";
cbentzel 2011/05/04 17:10:15 Remove LOG(ERROR)
Shishir 2011/05/05 23:09:54 Done.
+ prerender_contents->set_final_status(FINAL_STATUS_WINDOW_OPENER);
+ return false;
+ }
+
// If we are just in the control group (which can be detected by noticing
// that prerendering hasn't even started yet), record that |tab_contents| now
// would be showing a prerendered contents, but otherwise, don't do anything.

Powered by Google App Engine
This is Rietveld 408576698