Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |