Chromium Code Reviews| Index: chrome/browser/prerender/prerender_manager.cc |
| diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc |
| index 9b294e790768861e2317edc1485c4c07a618f4e4..9275d21375e6998b7681496d39148ab973f6b0dd 100644 |
| --- a/chrome/browser/prerender/prerender_manager.cc |
| +++ b/chrome/browser/prerender/prerender_manager.cc |
| @@ -416,12 +416,20 @@ PrerenderContents* PrerenderManager::GetEntry(const GURL& url) { |
| } |
| bool PrerenderManager::MaybeUsePreloadedPageOld(TabContents* tab_contents, |
| - const GURL& url) { |
| + const GURL& url, |
| + bool has_opener_set) { |
| 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 (has_opener_set) { |
| + prerender_contents->set_final_status(FINAL_STATUS_WINDOW_OPENER); |
|
cbentzel
2011/05/06 02:30:01
Should this be Destroy rather than set_final_statu
|
| + 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. |
| @@ -506,10 +514,12 @@ bool PrerenderManager::MaybeUsePreloadedPageOld(TabContents* tab_contents, |
| } |
| bool PrerenderManager::MaybeUsePreloadedPage(TabContents* tab_contents, |
| - const GURL& url) { |
| + const GURL& url, |
| + bool has_opener_set) { |
| if (!PrerenderContents::UseTabContents()) { |
| VLOG(1) << "Checking for prerender with LEGACY code"; |
| - return PrerenderManager::MaybeUsePreloadedPageOld(tab_contents, url); |
| + return PrerenderManager::MaybeUsePreloadedPageOld(tab_contents, url, |
| + has_opener_set); |
| } |
| VLOG(1) << "Checking for prerender with NEW code"; |
| DCHECK(CalledOnValidThread()); |
| @@ -518,6 +528,13 @@ 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 (has_opener_set) { |
| + 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. |