OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // The history system runs on a background thread so that potentially slow | 5 // The history system runs on a background thread so that potentially slow |
6 // database operations don't delay the browser. This backend processing is | 6 // database operations don't delay the browser. This backend processing is |
7 // represented by HistoryBackend. The HistoryService's job is to dispatch to | 7 // represented by HistoryBackend. The HistoryService's job is to dispatch to |
8 // that thread. | 8 // that thread. |
9 // | 9 // |
10 // Main thread History thread | 10 // Main thread History thread |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 } | 166 } |
167 | 167 |
168 virtual void NotifyFaviconChanged(const std::set<GURL>& urls) override { | 168 virtual void NotifyFaviconChanged(const std::set<GURL>& urls) override { |
169 // Send the notification to the history service on the main thread. | 169 // Send the notification to the history service on the main thread. |
170 service_task_runner_->PostTask( | 170 service_task_runner_->PostTask( |
171 FROM_HERE, | 171 FROM_HERE, |
172 base::Bind( | 172 base::Bind( |
173 &HistoryService::NotifyFaviconChanged, history_service_, urls)); | 173 &HistoryService::NotifyFaviconChanged, history_service_, urls)); |
174 } | 174 } |
175 | 175 |
| 176 virtual void NotifyURLVisited(ui::PageTransition transition, |
| 177 const history::URLRow& row, |
| 178 const history::RedirectList& redirects, |
| 179 base::Time visit_time) OVERRIDE { |
| 180 service_task_runner_->PostTask(FROM_HERE, |
| 181 base::Bind(&HistoryService::NotifyURLVisited, |
| 182 history_service_, |
| 183 transition, |
| 184 row, |
| 185 redirects, |
| 186 visit_time)); |
| 187 } |
| 188 |
176 virtual void BroadcastNotifications( | 189 virtual void BroadcastNotifications( |
177 int type, | 190 int type, |
178 scoped_ptr<history::HistoryDetails> details) override { | 191 scoped_ptr<history::HistoryDetails> details) override { |
179 // Send the notification on the history thread. | 192 // Send the notification on the history thread. |
180 if (content::NotificationService::current()) { | 193 if (content::NotificationService::current()) { |
181 content::Details<history::HistoryDetails> det(details.get()); | 194 content::Details<history::HistoryDetails> det(details.get()); |
182 content::NotificationService::current()->Notify( | 195 content::NotificationService::current()->Notify( |
183 type, content::Source<Profile>(profile_), det); | 196 type, content::Source<Profile>(profile_), det); |
184 } | 197 } |
185 // Send the notification to the history service on the main thread. | 198 // Send the notification to the history service on the main thread. |
(...skipping 789 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
975 return false; | 988 return false; |
976 } | 989 } |
977 | 990 |
978 history_dir_ = history_dir; | 991 history_dir_ = history_dir; |
979 no_db_ = no_db; | 992 no_db_ = no_db; |
980 | 993 |
981 if (profile_) { | 994 if (profile_) { |
982 std::string languages = | 995 std::string languages = |
983 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages); | 996 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages); |
984 in_memory_url_index_.reset(new history::InMemoryURLIndex( | 997 in_memory_url_index_.reset(new history::InMemoryURLIndex( |
985 profile_, history_dir_, languages, history_client_)); | 998 profile_, this, history_dir_, languages, history_client_)); |
986 in_memory_url_index_->Init(); | 999 in_memory_url_index_->Init(); |
987 } | 1000 } |
988 | 1001 |
989 // Create the history backend. | 1002 // Create the history backend. |
990 scoped_refptr<HistoryBackend> backend( | 1003 scoped_refptr<HistoryBackend> backend( |
991 new HistoryBackend(history_dir_, | 1004 new HistoryBackend(history_dir_, |
992 new BackendDelegate( | 1005 new BackendDelegate( |
993 weak_ptr_factory_.GetWeakPtr(), | 1006 weak_ptr_factory_.GetWeakPtr(), |
994 base::ThreadTaskRunnerHandle::Get(), | 1007 base::ThreadTaskRunnerHandle::Get(), |
995 profile_), | 1008 profile_), |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1098 delete_directive); | 1111 delete_directive); |
1099 } | 1112 } |
1100 | 1113 |
1101 void HistoryService::SetInMemoryBackend( | 1114 void HistoryService::SetInMemoryBackend( |
1102 scoped_ptr<history::InMemoryHistoryBackend> mem_backend) { | 1115 scoped_ptr<history::InMemoryHistoryBackend> mem_backend) { |
1103 DCHECK(thread_checker_.CalledOnValidThread()); | 1116 DCHECK(thread_checker_.CalledOnValidThread()); |
1104 DCHECK(!in_memory_backend_) << "Setting mem DB twice"; | 1117 DCHECK(!in_memory_backend_) << "Setting mem DB twice"; |
1105 in_memory_backend_.reset(mem_backend.release()); | 1118 in_memory_backend_.reset(mem_backend.release()); |
1106 | 1119 |
1107 // The database requires additional initialization once we own it. | 1120 // The database requires additional initialization once we own it. |
1108 in_memory_backend_->AttachToHistoryService(profile_); | 1121 in_memory_backend_->AttachToHistoryService(profile_, this); |
1109 } | 1122 } |
1110 | 1123 |
1111 void HistoryService::NotifyProfileError(sql::InitStatus init_status) { | 1124 void HistoryService::NotifyProfileError(sql::InitStatus init_status) { |
1112 DCHECK(thread_checker_.CalledOnValidThread()); | 1125 DCHECK(thread_checker_.CalledOnValidThread()); |
1113 if (history_client_) | 1126 if (history_client_) |
1114 history_client_->NotifyProfileError(init_status); | 1127 history_client_->NotifyProfileError(init_status); |
1115 } | 1128 } |
1116 | 1129 |
1117 void HistoryService::DeleteURL(const GURL& url) { | 1130 void HistoryService::DeleteURL(const GURL& url) { |
1118 DCHECK(thread_) << "History service being called after cleanup"; | 1131 DCHECK(thread_) << "History service being called after cleanup"; |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1229 history::URLDatabase* db = InMemoryDatabase(); | 1242 history::URLDatabase* db = InMemoryDatabase(); |
1230 return db && (db->GetRowForURL(url, url_row) != 0); | 1243 return db && (db->GetRowForURL(url, url_row) != 0); |
1231 } | 1244 } |
1232 | 1245 |
1233 void HistoryService::NotifyAddVisit(const history::BriefVisitInfo& info) { | 1246 void HistoryService::NotifyAddVisit(const history::BriefVisitInfo& info) { |
1234 DCHECK(thread_checker_.CalledOnValidThread()); | 1247 DCHECK(thread_checker_.CalledOnValidThread()); |
1235 FOR_EACH_OBSERVER( | 1248 FOR_EACH_OBSERVER( |
1236 history::HistoryServiceObserver, observers_, OnAddVisit(this, info)); | 1249 history::HistoryServiceObserver, observers_, OnAddVisit(this, info)); |
1237 } | 1250 } |
1238 | 1251 |
| 1252 void HistoryService::NotifyURLVisited(ui::PageTransition transition, |
| 1253 const history::URLRow& row, |
| 1254 const history::RedirectList& redirects, |
| 1255 base::Time visit_time) { |
| 1256 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1257 FOR_EACH_OBSERVER(history::HistoryServiceObserver, |
| 1258 observers_, |
| 1259 OnURLVisited(this, transition, row, redirects, visit_time)); |
| 1260 } |
| 1261 |
1239 scoped_ptr<base::CallbackList<void(const std::set<GURL>&)>::Subscription> | 1262 scoped_ptr<base::CallbackList<void(const std::set<GURL>&)>::Subscription> |
1240 HistoryService::AddFaviconChangedCallback( | 1263 HistoryService::AddFaviconChangedCallback( |
1241 const HistoryService::OnFaviconChangedCallback& callback) { | 1264 const HistoryService::OnFaviconChangedCallback& callback) { |
1242 DCHECK(thread_checker_.CalledOnValidThread()); | 1265 DCHECK(thread_checker_.CalledOnValidThread()); |
1243 return favicon_changed_callback_list_.Add(callback); | 1266 return favicon_changed_callback_list_.Add(callback); |
1244 } | 1267 } |
1245 | 1268 |
1246 void HistoryService::NotifyFaviconChanged( | 1269 void HistoryService::NotifyFaviconChanged( |
1247 const std::set<GURL>& changed_favicons) { | 1270 const std::set<GURL>& changed_favicons) { |
1248 DCHECK(thread_checker_.CalledOnValidThread()); | 1271 DCHECK(thread_checker_.CalledOnValidThread()); |
1249 favicon_changed_callback_list_.Notify(changed_favicons); | 1272 favicon_changed_callback_list_.Notify(changed_favicons); |
1250 } | 1273 } |
OLD | NEW |