| Index: chrome/browser/prerender/prerender_manager.cc
|
| ===================================================================
|
| --- chrome/browser/prerender/prerender_manager.cc (revision 72537)
|
| +++ 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"
|
| @@ -30,7 +31,8 @@
|
| : profile_(profile),
|
| max_prerender_age_(base::TimeDelta::FromSeconds(
|
| kDefaultMaxPrerenderAgeSeconds)),
|
| - max_elements_(kDefaultMaxPrerenderElements) {
|
| + max_elements_(kDefaultMaxPrerenderElements),
|
| + prerender_contents_factory_(PrerenderContents::CreateFactory()) {
|
| }
|
|
|
| PrerenderManager::~PrerenderManager() {
|
| @@ -41,9 +43,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 +97,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 +119,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 +144,17 @@
|
| PrerenderContents* PrerenderManager::CreatePrerenderContents(
|
| const GURL& url,
|
| const std::vector<GURL>& alias_urls) {
|
| - return new PrerenderContents(this, profile_, url, alias_urls);
|
| + return prerender_contents_factory_->CreatePrerenderContents(
|
| + this, profile_, url, alias_urls);
|
| }
|
| +
|
| +PrerenderContents* PrerenderManager::FindEntry(const GURL& url) {
|
| + 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;
|
| +}
|
|
|