Index: chrome/browser/prerender/prerender_manager.cc |
=================================================================== |
--- chrome/browser/prerender/prerender_manager.cc (revision 71995) |
+++ chrome/browser/prerender/prerender_manager.cc (working copy) |
@@ -7,6 +7,7 @@ |
#include "base/logging.h" |
#include "base/time.h" |
#include "base/utf_string_conversions.h" |
+#include "chrome/browser/browser_thread.h" |
#include "chrome/browser/prerender/prerender_contents.h" |
#include "chrome/browser/renderer_host/render_view_host.h" |
#include "chrome/browser/tab_contents/tab_contents.h" |
@@ -41,9 +42,14 @@ |
} |
} |
+void PrerenderManager::SetPrerenderContentsFactory( |
+ PrerenderContents::Factory* prerender_contents_factory) { |
+ prerender_contents_factory_.reset(prerender_contents_factory); |
+} |
+ |
void PrerenderManager::AddPreload(const GURL& url, |
const std::vector<GURL>& alias_urls) { |
- DCHECK(CalledOnValidThread()); |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
DeleteOldEntries(); |
// If the URL already exists in the set of preloaded URLs, don't do anything. |
for (std::list<PrerenderContentsData>::iterator it = prerender_list_.begin(); |
@@ -90,7 +96,7 @@ |
} |
bool PrerenderManager::MaybeUsePreloadedPage(TabContents* tc, const GURL& url) { |
- DCHECK(CalledOnValidThread()); |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
scoped_ptr<PrerenderContents> pc(GetEntry(url)); |
if (pc.get() == NULL) |
return false; |
@@ -112,7 +118,7 @@ |
} |
void PrerenderManager::RemoveEntry(PrerenderContents* entry) { |
- DCHECK(CalledOnValidThread()); |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
for (std::list<PrerenderContentsData>::iterator it = prerender_list_.begin(); |
it != prerender_list_.end(); |
++it) { |
@@ -137,5 +143,21 @@ |
PrerenderContents* PrerenderManager::CreatePrerenderContents( |
const GURL& url, |
const std::vector<GURL>& alias_urls) { |
+ if (prerender_contents_factory_.get()) { |
cbentzel
2011/01/21 18:37:02
Should you just have a default factory which is cr
mmenke
2011/01/21 20:12:20
Done. I've seen both done in the code, but think
|
+ return prerender_contents_factory_->CreatePrerenderContents( |
+ this, profile_, url, alias_urls); |
+ } |
return new PrerenderContents(this, profile_, url, alias_urls); |
} |
+ |
+PrerenderContents* PrerenderManager::FindEntry(const GURL& url) { |
+ DeleteOldEntries(); |
cbentzel
2011/01/21 18:37:02
I'm not sure if you need to do pruning here.
mmenke
2011/01/21 20:12:20
Removed. I was thinking it would be easier to deb
|
+ for (std::list<PrerenderContentsData>::iterator it = prerender_list_.begin(); |
+ it != prerender_list_.end(); |
+ ++it) { |
+ if (it->contents_->MatchesURL(url)) |
+ return it->contents_; |
+ } |
+ // Entry not found. |
+ return NULL; |
+} |