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

Side by Side 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, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/prerender/prerender_manager.h" 5 #include "chrome/browser/prerender/prerender_manager.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/metrics/field_trial.h" 8 #include "base/metrics/field_trial.h"
9 #include "base/metrics/histogram.h" 9 #include "base/metrics/histogram.h"
10 #include "base/time.h" 10 #include "base/time.h"
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 } 404 }
405 } 405 }
406 // Entry not found. 406 // Entry not found.
407 return NULL; 407 return NULL;
408 } 408 }
409 409
410 PrerenderContents* PrerenderManager::GetEntry(const GURL& url) { 410 PrerenderContents* PrerenderManager::GetEntry(const GURL& url) {
411 return GetEntryButNotSpecifiedTC(url, NULL); 411 return GetEntryButNotSpecifiedTC(url, NULL);
412 } 412 }
413 413
414 bool PrerenderManager::MaybeUsePreloadedPageOld(TabContents* tab_contents, 414 bool PrerenderManager::MaybeUsePreloadedPageOld(
415 const GURL& url) { 415 TabContents* tab_contents,
416 const GURL& url,
417 const PrerenderManager::PrerenderedPageProperties& properties) {
416 DCHECK(CalledOnValidThread()); 418 DCHECK(CalledOnValidThread());
417 scoped_ptr<PrerenderContents> prerender_contents(GetEntry(url)); 419 scoped_ptr<PrerenderContents> prerender_contents(GetEntry(url));
418 if (prerender_contents.get() == NULL) 420 if (prerender_contents.get() == NULL)
419 return false; 421 return false;
420 422
423 // Do not use the prerendered version if the opener window.property was
424 // supposed to be set.
425 if (properties.has_opener_set_) {
426 LOG(ERROR) << "Not using prerendered page.";
cbentzel 2011/05/04 17:10:15 Remove LOG(ERROR)
Shishir 2011/05/05 23:09:54 Done.
427 prerender_contents->set_final_status(FINAL_STATUS_WINDOW_OPENER);
428 return false;
429 }
430
421 // If we are just in the control group (which can be detected by noticing 431 // If we are just in the control group (which can be detected by noticing
422 // that prerendering hasn't even started yet), record that |tab_contents| now 432 // that prerendering hasn't even started yet), record that |tab_contents| now
423 // would be showing a prerendered contents, but otherwise, don't do anything. 433 // would be showing a prerendered contents, but otherwise, don't do anything.
424 if (!prerender_contents->prerendering_has_started()) { 434 if (!prerender_contents->prerendering_has_started()) {
425 MarkTabContentsAsWouldBePrerendered(tab_contents); 435 MarkTabContentsAsWouldBePrerendered(tab_contents);
426 return false; 436 return false;
427 } 437 }
428 438
429 if (!prerender_contents->load_start_time().is_null()) 439 if (!prerender_contents->load_start_time().is_null())
430 RecordTimeUntilUsed(GetCurrentTimeTicks() - 440 RecordTimeUntilUsed(GetCurrentTimeTicks() -
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 prerender_contents->page_id(), 500 prerender_contents->page_id(),
491 urls); 501 urls);
492 } 502 }
493 503
494 if (prerender_contents->has_stopped_loading()) 504 if (prerender_contents->has_stopped_loading())
495 render_view_host_delegate->DidStopLoading(); 505 render_view_host_delegate->DidStopLoading();
496 506
497 return true; 507 return true;
498 } 508 }
499 509
500 bool PrerenderManager::MaybeUsePreloadedPage(TabContents* tab_contents, 510 bool PrerenderManager::MaybeUsePreloadedPage(
501 const GURL& url) { 511 TabContents* tab_contents,
512 const GURL& url,
513 const PrerenderManager::PrerenderedPageProperties& properties) {
502 if (!PrerenderContents::UseTabContents()) { 514 if (!PrerenderContents::UseTabContents()) {
503 LOG(INFO) << "Checking for prerender with LEGACY code\n"; 515 LOG(INFO) << "Checking for prerender with LEGACY code\n";
504 return PrerenderManager::MaybeUsePreloadedPageOld(tab_contents, url); 516 return PrerenderManager::MaybeUsePreloadedPageOld(tab_contents, url,
517 properties);
505 } 518 }
506 LOG(INFO) << "Checking for prerender with NEW code\n"; 519 LOG(INFO) << "Checking for prerender with NEW code\n";
507 DCHECK(CalledOnValidThread()); 520 DCHECK(CalledOnValidThread());
508 scoped_ptr<PrerenderContents> prerender_contents( 521 scoped_ptr<PrerenderContents> prerender_contents(
509 GetEntryButNotSpecifiedTC(url, tab_contents)); 522 GetEntryButNotSpecifiedTC(url, tab_contents));
510 if (prerender_contents.get() == NULL) 523 if (prerender_contents.get() == NULL)
511 return false; 524 return false;
512 525
526 // Do not use the prerendered version if the opener window.property was
527 // supposed to be set.
528 if (properties.has_opener_set_) {
529 LOG(ERROR) << "Not using prerendered page.";
cbentzel 2011/05/04 17:10:15 Remove LOG(ERROR)
Shishir 2011/05/05 23:09:54 Done.
530 prerender_contents->set_final_status(FINAL_STATUS_WINDOW_OPENER);
531 return false;
532 }
533
513 // If we are just in the control group (which can be detected by noticing 534 // If we are just in the control group (which can be detected by noticing
514 // that prerendering hasn't even started yet), record that |tab_contents| now 535 // that prerendering hasn't even started yet), record that |tab_contents| now
515 // would be showing a prerendered contents, but otherwise, don't do anything. 536 // would be showing a prerendered contents, but otherwise, don't do anything.
516 if (!prerender_contents->prerendering_has_started()) { 537 if (!prerender_contents->prerendering_has_started()) {
517 MarkTabContentsAsWouldBePrerendered(tab_contents); 538 MarkTabContentsAsWouldBePrerendered(tab_contents);
518 return false; 539 return false;
519 } 540 }
520 541
521 if (!prerender_contents->load_start_time().is_null()) 542 if (!prerender_contents->load_start_time().is_null())
522 RecordTimeUntilUsed(GetCurrentTimeTicks() - 543 RecordTimeUntilUsed(GetCurrentTimeTicks() -
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
833 return prerendered_tab_contents_set_.count(tab_contents) > 0; 854 return prerendered_tab_contents_set_.count(tab_contents) > 0;
834 } 855 }
835 856
836 bool PrerenderManager::WouldTabContentsBePrerendered( 857 bool PrerenderManager::WouldTabContentsBePrerendered(
837 TabContents* tab_contents) const { 858 TabContents* tab_contents) const {
838 DCHECK(CalledOnValidThread()); 859 DCHECK(CalledOnValidThread());
839 return would_be_prerendered_tab_contents_set_.count(tab_contents) > 0; 860 return would_be_prerendered_tab_contents_set_.count(tab_contents) > 0;
840 } 861 }
841 862
842 } // namespace prerender 863 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698