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()) { |