OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <set> | 7 #include <set> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
514 // list, instead of deleting directly here? | 514 // list, instead of deleting directly here? |
515 AddToHistory(prerender_contents.get()); | 515 AddToHistory(prerender_contents.get()); |
516 RecordNavigation(url); | 516 RecordNavigation(url); |
517 return true; | 517 return true; |
518 } | 518 } |
519 | 519 |
520 void PrerenderManager::MoveEntryToPendingDelete(PrerenderContents* entry, | 520 void PrerenderManager::MoveEntryToPendingDelete(PrerenderContents* entry, |
521 FinalStatus final_status) { | 521 FinalStatus final_status) { |
522 DCHECK(CalledOnValidThread()); | 522 DCHECK(CalledOnValidThread()); |
523 DCHECK(entry); | 523 DCHECK(entry); |
524 DCHECK(!IsPendingDelete(entry)); | 524 DCHECK_EQ(0, std::count(pending_delete_list_.begin(), |
mmenke
2012/05/09 14:48:08
nit: Might be nice to have a comment here, too.
| |
525 pending_delete_list_.end(), entry)); | |
525 | 526 |
526 for (PrerenderContentsDataList::iterator it = prerender_list_.begin(); | 527 for (PrerenderContentsDataList::iterator it = prerender_list_.begin(); |
527 it != prerender_list_.end(); | 528 it != prerender_list_.end(); |
528 ++it) { | 529 ++it) { |
529 if (it->contents_ == entry) { | 530 if (it->contents_ == entry) { |
530 bool swapped_in_dummy_replacement = false; | 531 bool swapped_in_dummy_replacement = false; |
531 | 532 |
532 // If this PrerenderContents is being deleted due to a cancellation, | 533 // If this PrerenderContents is being deleted due to a cancellation, |
533 // we need to create a dummy replacement for PPLT accounting purposes | 534 // we need to create a dummy replacement for PPLT accounting purposes |
534 // for the Match Complete group. | 535 // for the Match Complete group. |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
692 TabContentsWrapper* prerender_tab_contents_wrapper = | 693 TabContentsWrapper* prerender_tab_contents_wrapper = |
693 (*it)->prerender_contents(); | 694 (*it)->prerender_contents(); |
694 if (prerender_tab_contents_wrapper && | 695 if (prerender_tab_contents_wrapper && |
695 prerender_tab_contents_wrapper->web_contents() == web_contents) | 696 prerender_tab_contents_wrapper->web_contents() == web_contents) |
696 return true; | 697 return true; |
697 } | 698 } |
698 | 699 |
699 return false; | 700 return false; |
700 } | 701 } |
701 | 702 |
702 bool PrerenderManager::DidPrerenderFinishLoading(const GURL& url) const { | |
703 DCHECK(CalledOnValidThread()); | |
704 PrerenderContents* contents = FindEntry(url); | |
705 return contents ? contents->has_finished_loading() : false; | |
706 } | |
707 | |
708 void PrerenderManager::MarkWebContentsAsPrerendered(WebContents* web_contents) { | 703 void PrerenderManager::MarkWebContentsAsPrerendered(WebContents* web_contents) { |
709 DCHECK(CalledOnValidThread()); | 704 DCHECK(CalledOnValidThread()); |
710 prerendered_tab_contents_set_.insert(web_contents); | 705 prerendered_tab_contents_set_.insert(web_contents); |
711 } | 706 } |
712 | 707 |
713 void PrerenderManager::MarkWebContentsAsWouldBePrerendered( | 708 void PrerenderManager::MarkWebContentsAsWouldBePrerendered( |
714 WebContents* web_contents) { | 709 WebContents* web_contents) { |
715 DCHECK(CalledOnValidThread()); | 710 DCHECK(CalledOnValidThread()); |
716 would_be_prerendered_tab_contents_set_.insert(web_contents); | 711 would_be_prerendered_tab_contents_set_.insert(web_contents); |
717 } | 712 } |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1059 const GURL& url, | 1054 const GURL& url, |
1060 const content::Referrer& referrer, | 1055 const content::Referrer& referrer, |
1061 Origin origin, | 1056 Origin origin, |
1062 uint8 experiment_id) { | 1057 uint8 experiment_id) { |
1063 DCHECK(CalledOnValidThread()); | 1058 DCHECK(CalledOnValidThread()); |
1064 return prerender_contents_factory_->CreatePrerenderContents( | 1059 return prerender_contents_factory_->CreatePrerenderContents( |
1065 this, prerender_tracker_, profile_, url, | 1060 this, prerender_tracker_, profile_, url, |
1066 referrer, origin, experiment_id); | 1061 referrer, origin, experiment_id); |
1067 } | 1062 } |
1068 | 1063 |
1069 bool PrerenderManager::IsPendingDelete(PrerenderContents* entry) const { | |
1070 DCHECK(CalledOnValidThread()); | |
1071 for (std::list<PrerenderContents*>::const_iterator it = | |
1072 pending_delete_list_.begin(); | |
1073 it != pending_delete_list_.end(); | |
1074 ++it) { | |
1075 if (*it == entry) | |
1076 return true; | |
1077 } | |
1078 | |
1079 return false; | |
1080 } | |
1081 | |
1082 void PrerenderManager::DeletePendingDeleteEntries() { | 1064 void PrerenderManager::DeletePendingDeleteEntries() { |
1083 while (!pending_delete_list_.empty()) { | 1065 while (!pending_delete_list_.empty()) { |
1084 PrerenderContents* contents = pending_delete_list_.front(); | 1066 PrerenderContents* contents = pending_delete_list_.front(); |
1085 pending_delete_list_.pop_front(); | 1067 pending_delete_list_.pop_front(); |
1086 delete contents; | 1068 delete contents; |
1087 } | 1069 } |
1088 } | 1070 } |
1089 | 1071 |
1090 PrerenderManager::PrerenderContentsData* PrerenderManager::FindEntryData( | 1072 PrerenderManager::PrerenderContentsData* PrerenderManager::FindEntryData( |
1091 const GURL& url) { | 1073 const GURL& url) { |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1268 if (!render_process_host || !render_process_host->GetBrowserContext()) | 1250 if (!render_process_host || !render_process_host->GetBrowserContext()) |
1269 return NULL; | 1251 return NULL; |
1270 Profile* profile = Profile::FromBrowserContext( | 1252 Profile* profile = Profile::FromBrowserContext( |
1271 render_process_host->GetBrowserContext()); | 1253 render_process_host->GetBrowserContext()); |
1272 if (!profile) | 1254 if (!profile) |
1273 return NULL; | 1255 return NULL; |
1274 return PrerenderManagerFactory::GetInstance()->GetForProfile(profile); | 1256 return PrerenderManagerFactory::GetInstance()->GetForProfile(profile); |
1275 } | 1257 } |
1276 | 1258 |
1277 } // namespace prerender | 1259 } // namespace prerender |
OLD | NEW |