Chromium Code Reviews| 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; |
| +} |