Chromium Code Reviews| Index: chrome/browser/prerender/prerender_manager.cc |
| diff --git a/chrome/browser/prerender/prerender_manager.cc b/chrome/browser/prerender/prerender_manager.cc |
| index 59bb8609fd6a56cf8b05fb11f920b8a2b014b779..e4ddaf3dcccf03fea10cc9e920c53db55b5a7e1c 100644 |
| --- a/chrome/browser/prerender/prerender_manager.cc |
| +++ b/chrome/browser/prerender/prerender_manager.cc |
| @@ -290,6 +290,11 @@ bool PrerenderManager::IsPendingEntry(const GURL& url) const { |
| return false; |
| } |
| +bool PrerenderManager::IsPrerendering(const GURL& url) { |
|
Peter Kasting
2012/01/21 00:22:52
Nit: Can you make this file's definition order mat
dominich
2012/01/23 22:50:07
Done.
|
| + DCHECK(CalledOnValidThread()); |
| + return (FindEntry(url) != NULL); |
| +} |
| + |
| PrerenderManager::PrerenderManager(Profile* profile, |
| PrerenderTracker* prerender_tracker) |
| : enabled_(true), |
| @@ -496,6 +501,26 @@ void PrerenderManager::CancelAllPrerenders() { |
| } |
| } |
| +void PrerenderManager::CancelOmniboxPrerenders() { |
| + DCHECK(CalledOnValidThread()); |
| + // Calling Destroy will invalidate iterators as it erases the entry from |
| + // |prerender_list_| so we must first gather those contents to destroy and |
| + // then destroy them. |
|
Peter Kasting
2012/01/21 00:22:52
Nit: Our normal practice for this would be to do o
dominich
2012/01/23 22:50:07
Done.
|
| + std::vector<PrerenderContents*> destroy_contents; |
| + for (std::list<PrerenderContentsData>::iterator it = prerender_list_.begin(); |
| + it != prerender_list_.end(); |
| + ++it) { |
| + if (it->contents_->origin() == ORIGIN_OMNIBOX) |
| + destroy_contents.push_back(it->contents_); |
| + } |
| + |
| + for (std::vector<PrerenderContents*>::iterator it = destroy_contents.begin(); |
| + it != destroy_contents.end(); |
| + ++it) { |
| + (*it)->Destroy(FINAL_STATUS_CANCELLED); |
| + } |
| +} |
| + |
| void PrerenderManager::DeleteOldEntries() { |
| DCHECK(CalledOnValidThread()); |
| while (!prerender_list_.empty()) { |