Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2114)

Unified Diff: chrome/browser/prerender/prerender_manager.cc

Issue 9226037: Cancel prerenders from Omnibox if we navigate to a different URL than predicted (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove debug logging Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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()) {

Powered by Google App Engine
This is Rietveld 408576698