| Index: chrome/browser/prerender/prerender_manager.cc
|
| diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc
|
| index 5c5db3ba745a800a3930603f3dd7bd26cf6988dd..984b159c7a831a86f2b1e7eae3990e45a61b8e42 100644
|
| --- a/chrome/browser/prerender/prerender_manager.cc
|
| +++ b/chrome/browser/prerender/prerender_manager.cc
|
| @@ -413,12 +413,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.release()->Destroy(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.
|
| @@ -499,10 +507,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());
|
| @@ -511,6 +521,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.release()->Destroy(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.
|
|
|