diff options
author | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-01 14:40:56 +0000 |
---|---|---|
committer | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-01 14:40:56 +0000 |
commit | a5894febf1f091bb122ae6273fd49f26dba5f0aa (patch) | |
tree | ceeb84bc784a00a68e465663d151d04df5f8c1c5 /chrome/browser/prerender/prerender_local_predictor.cc | |
parent | 32f72e6f11a2a9a65ef50a674b838c66ee2c677d (diff) | |
download | chromium_src-a5894febf1f091bb122ae6273fd49f26dba5f0aa.zip chromium_src-a5894febf1f091bb122ae6273fd49f26dba5f0aa.tar.gz chromium_src-a5894febf1f091bb122ae6273fd49f26dba5f0aa.tar.bz2 |
Make history service not ref-counted and not thread-safe
This is in preparation for making it handle delete directives.
Make HistoryService use a ThreadChecker.
Make VisitDataObserver list a non-thread-safe observer list.
Make HistoryService vend WeakPtrs for sync.
Make PrerenderLocalPredictor not keep a pointer to the HistoryService.
Make sync trampoline to the UI thread when posting tasks on the history thread.
BUG=141245
Review URL: https://chromiumcodereview.appspot.com/11229049
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165370 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/prerender/prerender_local_predictor.cc')
-rw-r--r-- | chrome/browser/prerender/prerender_local_predictor.cc | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/chrome/browser/prerender/prerender_local_predictor.cc b/chrome/browser/prerender/prerender_local_predictor.cc index eae981e..d7fdfc9 100644 --- a/chrome/browser/prerender/prerender_local_predictor.cc +++ b/chrome/browser/prerender/prerender_local_predictor.cc @@ -186,8 +186,9 @@ PrerenderLocalPredictor::PrerenderLocalPredictor( } PrerenderLocalPredictor::~PrerenderLocalPredictor() { - if (observing_history_service_.get()) - observing_history_service_->RemoveVisitDatabaseObserver(this); + HistoryService* history = GetHistoryIfExists(); + if (history) + history->RemoveVisitDatabaseObserver(this); } void PrerenderLocalPredictor::OnAddVisit(const history::BriefVisitInfo& info) { @@ -352,15 +353,14 @@ void PrerenderLocalPredictor::Init() { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); RecordEvent(EVENT_INIT_STARTED); HistoryService* history = GetHistoryIfExists(); - if (!history) { + if (history) { + history->ScheduleDBTask( + new GetVisitHistoryTask(this, kMaxVisitHistory), + &history_db_consumer_); + history->AddVisitDatabaseObserver(this); + } else { RecordEvent(EVENT_INIT_FAILED_NO_HISTORY); - return; } - history->ScheduleDBTask( - new GetVisitHistoryTask(this, kMaxVisitHistory), - &history_db_consumer_); - observing_history_service_ = history; - observing_history_service_->AddVisitDatabaseObserver(this); } void PrerenderLocalPredictor::OnPLTEventForURL(const GURL& url, |