| 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 // Confirm this entry has not already been moved to the pending delete list. |
| 525 DCHECK_EQ(0, std::count(pending_delete_list_.begin(), |
| 526 pending_delete_list_.end(), entry)); |
| 525 | 527 |
| 526 for (PrerenderContentsDataList::iterator it = prerender_list_.begin(); | 528 for (PrerenderContentsDataList::iterator it = prerender_list_.begin(); |
| 527 it != prerender_list_.end(); | 529 it != prerender_list_.end(); |
| 528 ++it) { | 530 ++it) { |
| 529 if (it->contents_ == entry) { | 531 if (it->contents_ == entry) { |
| 530 bool swapped_in_dummy_replacement = false; | 532 bool swapped_in_dummy_replacement = false; |
| 531 | 533 |
| 532 // If this PrerenderContents is being deleted due to a cancellation, | 534 // If this PrerenderContents is being deleted due to a cancellation, |
| 533 // we need to create a dummy replacement for PPLT accounting purposes | 535 // we need to create a dummy replacement for PPLT accounting purposes |
| 534 // for the Match Complete group. | 536 // for the Match Complete group. |
| (...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1059 const GURL& url, | 1061 const GURL& url, |
| 1060 const content::Referrer& referrer, | 1062 const content::Referrer& referrer, |
| 1061 Origin origin, | 1063 Origin origin, |
| 1062 uint8 experiment_id) { | 1064 uint8 experiment_id) { |
| 1063 DCHECK(CalledOnValidThread()); | 1065 DCHECK(CalledOnValidThread()); |
| 1064 return prerender_contents_factory_->CreatePrerenderContents( | 1066 return prerender_contents_factory_->CreatePrerenderContents( |
| 1065 this, prerender_tracker_, profile_, url, | 1067 this, prerender_tracker_, profile_, url, |
| 1066 referrer, origin, experiment_id); | 1068 referrer, origin, experiment_id); |
| 1067 } | 1069 } |
| 1068 | 1070 |
| 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() { | 1071 void PrerenderManager::DeletePendingDeleteEntries() { |
| 1083 while (!pending_delete_list_.empty()) { | 1072 while (!pending_delete_list_.empty()) { |
| 1084 PrerenderContents* contents = pending_delete_list_.front(); | 1073 PrerenderContents* contents = pending_delete_list_.front(); |
| 1085 pending_delete_list_.pop_front(); | 1074 pending_delete_list_.pop_front(); |
| 1086 delete contents; | 1075 delete contents; |
| 1087 } | 1076 } |
| 1088 } | 1077 } |
| 1089 | 1078 |
| 1090 PrerenderManager::PrerenderContentsData* PrerenderManager::FindEntryData( | 1079 PrerenderManager::PrerenderContentsData* PrerenderManager::FindEntryData( |
| 1091 const GURL& url) { | 1080 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()) | 1257 if (!render_process_host || !render_process_host->GetBrowserContext()) |
| 1269 return NULL; | 1258 return NULL; |
| 1270 Profile* profile = Profile::FromBrowserContext( | 1259 Profile* profile = Profile::FromBrowserContext( |
| 1271 render_process_host->GetBrowserContext()); | 1260 render_process_host->GetBrowserContext()); |
| 1272 if (!profile) | 1261 if (!profile) |
| 1273 return NULL; | 1262 return NULL; |
| 1274 return PrerenderManagerFactory::GetInstance()->GetForProfile(profile); | 1263 return PrerenderManagerFactory::GetInstance()->GetForProfile(profile); |
| 1275 } | 1264 } |
| 1276 | 1265 |
| 1277 } // namespace prerender | 1266 } // namespace prerender |
| OLD | NEW |