summaryrefslogtreecommitdiffstats
path: root/chrome/browser/prerender/prerender_local_predictor.cc
diff options
context:
space:
mode:
authorakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-01 14:40:56 +0000
committerakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-01 14:40:56 +0000
commita5894febf1f091bb122ae6273fd49f26dba5f0aa (patch)
treeceeb84bc784a00a68e465663d151d04df5f8c1c5 /chrome/browser/prerender/prerender_local_predictor.cc
parent32f72e6f11a2a9a65ef50a674b838c66ee2c677d (diff)
downloadchromium_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.cc18
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,