Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(716)

Side by Side Diff: chrome/browser/history/android/android_history_provider_service.cc

Issue 930363002: Remove adapter method on HistoryBackend delegating to AndroidProviderBackend (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/history/history_backend.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "chrome/browser/history/android/android_history_provider_service.h" 5 #include "chrome/browser/history/android/android_history_provider_service.h"
6 6
7 #include "chrome/browser/favicon/favicon_service.h" 7 #include "chrome/browser/favicon/favicon_service.h"
8 #include "chrome/browser/favicon/favicon_service_factory.h" 8 #include "chrome/browser/favicon/favicon_service_factory.h"
9 #include "chrome/browser/history/android/android_provider_backend.h"
9 #include "chrome/browser/history/history_backend.h" 10 #include "chrome/browser/history/history_backend.h"
10 #include "chrome/browser/history/history_service.h" 11 #include "chrome/browser/history/history_service.h"
11 #include "chrome/browser/history/history_service_factory.h" 12 #include "chrome/browser/history/history_service_factory.h"
12 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/profiles/profile.h"
13 14 #include "components/history/core/browser/android/android_history_types.h"
14 using history::HistoryBackend; 15 #include "components/history/core/browser/history_db_task.h"
16
17 namespace {
18
19 // AndroidProviderTask wraps two callbacks into an HistoryDBTask so that they
20 // can be passed to HistoryService::ScheduleDBTask. ResultType must be zero
21 // constructible (i.e. ResultType(0) should build an initialized default value)
22 // and copyable.
23 template <typename ResultType>
24 class AndroidProviderTask : public history::HistoryDBTask {
25 public:
26 typedef base::Callback<ResultType(history::AndroidProviderBackend*)>
27 RequestCallback;
28 typedef base::Callback<void(ResultType)> ResultCallback;
29
30 AndroidProviderTask(const RequestCallback& request_cb,
31 const ResultCallback& result_cb)
32 : request_cb_(request_cb), result_cb_(result_cb), result_(0) {
33 DCHECK(!request_cb_.is_null());
34 DCHECK(!result_cb_.is_null());
35 }
36
37 ~AndroidProviderTask() override {}
38
39 private:
40 // history::HistoryDBTask implementation.
41 bool RunOnDBThread(history::HistoryBackend* backend,
42 history::HistoryDatabase* db) override {
43 if (backend->android_provider_backend())
44 result_ = request_cb_.Run(backend->android_provider_backend());
45 return true;
46 }
47
48 void DoneRunOnMainThread() override { result_cb_.Run(result_); }
49
50 RequestCallback request_cb_;
51 ResultCallback result_cb_;
52 ResultType result_;
53 };
54
55 // Creates an instance of AndroidProviderTask using the two callback and using
56 // type deduction.
57 template <typename ResultType>
58 scoped_ptr<history::HistoryDBTask> CreateAndroidProviderTask(
59 const base::Callback<ResultType(history::AndroidProviderBackend*)>&
60 request_cb,
61 const base::Callback<void(ResultType)>& result_cb) {
62 return scoped_ptr<history::HistoryDBTask>(
63 new AndroidProviderTask<ResultType>(request_cb, result_cb));
64 }
65
66 // History and bookmarks ----------------------------------------------------
67
68 // Inserts the given values into android provider backend.
69 history::AndroidURLID InsertHistoryAndBookmarkAdapter(
70 const history::HistoryAndBookmarkRow& row,
71 history::AndroidProviderBackend* backend) {
72 return backend->InsertHistoryAndBookmark(row);
73 }
74
75 // Runs the given query on android provider backend and returns the result.
76 //
77 // |projections| is the vector of the result columns.
78 // |selection| is the SQL WHERE clause without 'WHERE'.
79 // |selection_args| is the arguments for WHERE clause.
80 // |sort_order| is the SQL ORDER clause.
81 history::AndroidStatement* QueryHistoryAndBookmarksAdapter(
82 const std::vector<history::HistoryAndBookmarkRow::ColumnID>& projections,
83 const std::string& selection,
84 const std::vector<base::string16>& selection_args,
85 const std::string& sort_order,
86 history::AndroidProviderBackend* backend) {
87 return backend->QueryHistoryAndBookmarks(projections, selection,
88 selection_args, sort_order);
89 }
90
91 // Returns the number of row updated by the update query.
92 //
93 // |row| is the value to update.
94 // |selection| is the SQL WHERE clause without 'WHERE'.
95 // |selection_args| is the arguments for the WHERE clause.
96 int UpdateHistoryAndBookmarksAdapter(
97 const history::HistoryAndBookmarkRow& row,
98 const std::string& selection,
99 const std::vector<base::string16>& selection_args,
100 history::AndroidProviderBackend* backend) {
101 int count = 0;
102 backend->UpdateHistoryAndBookmarks(row, selection, selection_args, &count);
103 return count;
104 }
105
106 // Deletes the specified rows and returns the number of rows deleted.
107 //
108 // |selection| is the SQL WHERE clause without 'WHERE'.
109 // |selection_args| is the arguments for the WHERE clause.
110 //
111 // If |selection| is empty all history and bookmarks are deleted.
112 int DeleteHistoryAndBookmarksAdapter(
113 const std::string& selection,
114 const std::vector<base::string16>& selection_args,
115 history::AndroidProviderBackend* backend) {
116 int count = 0;
117 backend->DeleteHistoryAndBookmarks(selection, selection_args, &count);
118 return count;
119 }
120
121 // Deletes the matched history and returns the number of rows deleted.
122 int DeleteHistoryAdapter(const std::string& selection,
123 const std::vector<base::string16>& selection_args,
124 history::AndroidProviderBackend* backend) {
125 int count = 0;
126 backend->DeleteHistory(selection, selection_args, &count);
127 return count;
128 }
129
130 // Statement ----------------------------------------------------------------
131
132 // Move the statement's current position.
133 int MoveStatementAdapter(history::AndroidStatement* statement,
134 int current_pos,
135 int destination,
136 history::AndroidProviderBackend* backend) {
137 DCHECK_LE(-1, current_pos);
138 DCHECK_LE(-1, destination);
139
140 int cur = current_pos;
141 if (current_pos > destination) {
142 statement->statement()->Reset(false);
143 cur = -1;
144 }
145 for (; cur < destination; ++cur) {
146 if (!statement->statement()->Step())
147 break;
148 }
149
150 return cur;
151 }
152
153 // CloseStatementTask delete the passed |statement| in the DB thread (or in the
154 // UI thread if the HistoryBackend is destroyed before the task is executed).
155 class CloseStatementTask : public history::HistoryDBTask {
156 public:
157 // Close the given statement. The ownership is transfered.
158 explicit CloseStatementTask(history::AndroidStatement* statement)
159 : statement_(statement) {
160 DCHECK(statement_);
161 }
162
163 ~CloseStatementTask() override { delete statement_; }
164
165 // Returns the cancelable task tracker to use for this task. The task owns it,
166 // so it can never be cancelled. This is required due to be compatible with
167 // HistoryService::ScheduleDBTask() interface.
168 base::CancelableTaskTracker* tracker() { return &tracker_; }
169
170 private:
171 // history::HistoryDBTask implementation.
172 bool RunOnDBThread(history::HistoryBackend* backend,
173 history::HistoryDatabase* db) override {
174 delete statement_;
175 statement_ = nullptr;
176 return true;
177 }
178
179 void DoneRunOnMainThread() override {}
180
181 history::AndroidStatement* statement_;
182 base::CancelableTaskTracker tracker_;
183 };
184
185 // Search terms -------------------------------------------------------------
186
187 // Inserts the given values and returns the SearchTermID of the inserted row.
188 history::SearchTermID InsertSearchTermAdapter(
189 const history::SearchRow& row,
190 history::AndroidProviderBackend* backend) {
191 return backend->InsertSearchTerm(row);
192 }
193
194 // Returns the number of row updated by the update query.
195 //
196 // |row| is the value to update.
197 // |selection| is the SQL WHERE clause without 'WHERE'.
198 // |selection_args| is the arguments for the WHERE clause.
199 int UpdateSearchTermsAdapter(const history::SearchRow& row,
200 const std::string& selection,
201 const std::vector<base::string16> selection_args,
202 history::AndroidProviderBackend* backend) {
203 int count = 0;
204 backend->UpdateSearchTerms(row, selection, selection_args, &count);
205 return count;
206 }
207
208 // Deletes the matched rows and returns the number of deleted rows.
209 //
210 // |selection| is the SQL WHERE clause without 'WHERE'.
211 // |selection_args| is the arguments for WHERE clause.
212 //
213 // If |selection| is empty all search terms will be deleted.
214 int DeleteSearchTermsAdapter(const std::string& selection,
215 const std::vector<base::string16> selection_args,
216 history::AndroidProviderBackend* backend) {
217 int count = 0;
218 backend->DeleteSearchTerms(selection, selection_args, &count);
219 return count;
220 }
221
222 // Returns the result of the given query.
223 //
224 // |projections| specifies the result columns.
225 // |selection| is the SQL WHERE clause without 'WHERE'.
226 // |selection_args| is the arguments for WHERE clause.
227 // |sort_order| is the SQL ORDER clause.
228 history::AndroidStatement* QuerySearchTermsAdapter(
229 const std::vector<history::SearchRow::ColumnID>& projections,
230 const std::string& selection,
231 const std::vector<base::string16>& selection_args,
232 const std::string& sort_order,
233 history::AndroidProviderBackend* backend) {
234 return backend->QuerySearchTerms(projections, selection, selection_args,
235 sort_order);
236 }
237
238 } // namespace
15 239
16 AndroidHistoryProviderService::AndroidHistoryProviderService(Profile* profile) 240 AndroidHistoryProviderService::AndroidHistoryProviderService(Profile* profile)
17 : profile_(profile) { 241 : profile_(profile) {
18 } 242 }
19 243
20 AndroidHistoryProviderService::~AndroidHistoryProviderService() { 244 AndroidHistoryProviderService::~AndroidHistoryProviderService() {
21 } 245 }
22 246
23 base::CancelableTaskTracker::TaskId 247 base::CancelableTaskTracker::TaskId
24 AndroidHistoryProviderService::QueryHistoryAndBookmarks( 248 AndroidHistoryProviderService::QueryHistoryAndBookmarks(
25 const std::vector<history::HistoryAndBookmarkRow::ColumnID>& projections, 249 const std::vector<history::HistoryAndBookmarkRow::ColumnID>& projections,
26 const std::string& selection, 250 const std::string& selection,
27 const std::vector<base::string16>& selection_args, 251 const std::vector<base::string16>& selection_args,
28 const std::string& sort_order, 252 const std::string& sort_order,
29 const QueryCallback& callback, 253 const QueryCallback& callback,
30 base::CancelableTaskTracker* tracker) { 254 base::CancelableTaskTracker* tracker) {
31 HistoryService* hs = HistoryServiceFactory::GetForProfile( 255 HistoryService* hs = HistoryServiceFactory::GetForProfile(
32 profile_, ServiceAccessType::EXPLICIT_ACCESS); 256 profile_, ServiceAccessType::EXPLICIT_ACCESS);
33 if (hs) { 257 if (!hs) {
34 DCHECK(hs->thread_) << "History service being called after cleanup"; 258 callback.Run(nullptr);
35 DCHECK(hs->thread_checker_.CalledOnValidThread());
36 return tracker->PostTaskAndReplyWithResult(
37 hs->thread_->message_loop_proxy().get(),
38 FROM_HERE,
39 base::Bind(&HistoryBackend::QueryHistoryAndBookmarks,
40 hs->history_backend_.get(),
41 projections,
42 selection,
43 selection_args,
44 sort_order),
45 callback);
46 } else {
47 callback.Run(NULL);
48 return base::CancelableTaskTracker::kBadTaskId; 259 return base::CancelableTaskTracker::kBadTaskId;
49 } 260 }
261 return hs->ScheduleDBTask(
262 CreateAndroidProviderTask(
263 base::Bind(&QueryHistoryAndBookmarksAdapter, projections, selection,
264 selection_args, sort_order),
265 callback),
266 tracker);
50 } 267 }
51 268
52 base::CancelableTaskTracker::TaskId 269 base::CancelableTaskTracker::TaskId
53 AndroidHistoryProviderService::UpdateHistoryAndBookmarks( 270 AndroidHistoryProviderService::UpdateHistoryAndBookmarks(
54 const history::HistoryAndBookmarkRow& row, 271 const history::HistoryAndBookmarkRow& row,
55 const std::string& selection, 272 const std::string& selection,
56 const std::vector<base::string16>& selection_args, 273 const std::vector<base::string16>& selection_args,
57 const UpdateCallback& callback, 274 const UpdateCallback& callback,
58 base::CancelableTaskTracker* tracker) { 275 base::CancelableTaskTracker* tracker) {
59 HistoryService* hs = HistoryServiceFactory::GetForProfile( 276 HistoryService* hs = HistoryServiceFactory::GetForProfile(
60 profile_, ServiceAccessType::EXPLICIT_ACCESS); 277 profile_, ServiceAccessType::EXPLICIT_ACCESS);
61 if (hs) { 278 if (!hs) {
62 DCHECK(hs->thread_) << "History service being called after cleanup";
63 DCHECK(hs->thread_checker_.CalledOnValidThread());
64 return tracker->PostTaskAndReplyWithResult(
65 hs->thread_->message_loop_proxy().get(),
66 FROM_HERE,
67 base::Bind(&HistoryBackend::UpdateHistoryAndBookmarks,
68 hs->history_backend_.get(),
69 row,
70 selection,
71 selection_args),
72 callback);
73 } else {
74 callback.Run(0); 279 callback.Run(0);
75 return base::CancelableTaskTracker::kBadTaskId; 280 return base::CancelableTaskTracker::kBadTaskId;
76 } 281 }
282 return hs->ScheduleDBTask(
283 CreateAndroidProviderTask(base::Bind(&UpdateHistoryAndBookmarksAdapter,
284 row, selection, selection_args),
285 callback),
286 tracker);
77 } 287 }
78 288
79 base::CancelableTaskTracker::TaskId 289 base::CancelableTaskTracker::TaskId
80 AndroidHistoryProviderService::DeleteHistoryAndBookmarks( 290 AndroidHistoryProviderService::DeleteHistoryAndBookmarks(
81 const std::string& selection, 291 const std::string& selection,
82 const std::vector<base::string16>& selection_args, 292 const std::vector<base::string16>& selection_args,
83 const DeleteCallback& callback, 293 const DeleteCallback& callback,
84 base::CancelableTaskTracker* tracker) { 294 base::CancelableTaskTracker* tracker) {
85 HistoryService* hs = HistoryServiceFactory::GetForProfile( 295 HistoryService* hs = HistoryServiceFactory::GetForProfile(
86 profile_, ServiceAccessType::EXPLICIT_ACCESS); 296 profile_, ServiceAccessType::EXPLICIT_ACCESS);
87 if (hs) { 297 if (!hs) {
88 DCHECK(hs->thread_) << "History service being called after cleanup";
89 DCHECK(hs->thread_checker_.CalledOnValidThread());
90 return tracker->PostTaskAndReplyWithResult(
91 hs->thread_->message_loop_proxy().get(),
92 FROM_HERE,
93 base::Bind(&HistoryBackend::DeleteHistoryAndBookmarks,
94 hs->history_backend_.get(),
95 selection,
96 selection_args),
97 callback);
98 } else {
99 callback.Run(0); 298 callback.Run(0);
100 return base::CancelableTaskTracker::kBadTaskId; 299 return base::CancelableTaskTracker::kBadTaskId;
101 } 300 }
301 return hs->ScheduleDBTask(
302 CreateAndroidProviderTask(base::Bind(&DeleteHistoryAndBookmarksAdapter,
303 selection, selection_args),
304 callback),
305 tracker);
102 } 306 }
103 307
104 base::CancelableTaskTracker::TaskId 308 base::CancelableTaskTracker::TaskId
105 AndroidHistoryProviderService::InsertHistoryAndBookmark( 309 AndroidHistoryProviderService::InsertHistoryAndBookmark(
106 const history::HistoryAndBookmarkRow& values, 310 const history::HistoryAndBookmarkRow& values,
107 const InsertCallback& callback, 311 const InsertCallback& callback,
108 base::CancelableTaskTracker* tracker) { 312 base::CancelableTaskTracker* tracker) {
109 HistoryService* hs = HistoryServiceFactory::GetForProfile( 313 HistoryService* hs = HistoryServiceFactory::GetForProfile(
110 profile_, ServiceAccessType::EXPLICIT_ACCESS); 314 profile_, ServiceAccessType::EXPLICIT_ACCESS);
111 if (hs) { 315 if (!hs) {
112 DCHECK(hs->thread_) << "History service being called after cleanup";
113 DCHECK(hs->thread_checker_.CalledOnValidThread());
114 return tracker->PostTaskAndReplyWithResult(
115 hs->thread_->message_loop_proxy().get(),
116 FROM_HERE,
117 base::Bind(&HistoryBackend::InsertHistoryAndBookmark,
118 hs->history_backend_.get(),
119 values),
120 callback);
121 } else {
122 callback.Run(0); 316 callback.Run(0);
123 return base::CancelableTaskTracker::kBadTaskId; 317 return base::CancelableTaskTracker::kBadTaskId;
124 } 318 }
319 return hs->ScheduleDBTask(
320 CreateAndroidProviderTask(
321 base::Bind(&InsertHistoryAndBookmarkAdapter, values), callback),
322 tracker);
125 } 323 }
126 324
127 base::CancelableTaskTracker::TaskId 325 base::CancelableTaskTracker::TaskId
128 AndroidHistoryProviderService::DeleteHistory( 326 AndroidHistoryProviderService::DeleteHistory(
129 const std::string& selection, 327 const std::string& selection,
130 const std::vector<base::string16>& selection_args, 328 const std::vector<base::string16>& selection_args,
131 const DeleteCallback& callback, 329 const DeleteCallback& callback,
132 base::CancelableTaskTracker* tracker) { 330 base::CancelableTaskTracker* tracker) {
133 HistoryService* hs = HistoryServiceFactory::GetForProfile( 331 HistoryService* hs = HistoryServiceFactory::GetForProfile(
134 profile_, ServiceAccessType::EXPLICIT_ACCESS); 332 profile_, ServiceAccessType::EXPLICIT_ACCESS);
135 if (hs) { 333 if (!hs) {
136 DCHECK(hs->thread_) << "History service being called after cleanup";
137 DCHECK(hs->thread_checker_.CalledOnValidThread());
138 return tracker->PostTaskAndReplyWithResult(
139 hs->thread_->message_loop_proxy().get(),
140 FROM_HERE,
141 base::Bind(&HistoryBackend::DeleteHistory,
142 hs->history_backend_.get(),
143 selection,
144 selection_args),
145 callback);
146 } else {
147 callback.Run(0); 334 callback.Run(0);
148 return base::CancelableTaskTracker::kBadTaskId; 335 return base::CancelableTaskTracker::kBadTaskId;
149 } 336 }
337 return hs->ScheduleDBTask(
338 CreateAndroidProviderTask(
339 base::Bind(&DeleteHistoryAdapter, selection, selection_args),
340 callback),
341 tracker);
150 } 342 }
151 343
152 base::CancelableTaskTracker::TaskId 344 base::CancelableTaskTracker::TaskId
153 AndroidHistoryProviderService::MoveStatement( 345 AndroidHistoryProviderService::MoveStatement(
154 history::AndroidStatement* statement, 346 history::AndroidStatement* statement,
155 int current_pos, 347 int current_pos,
156 int destination, 348 int destination,
157 const MoveStatementCallback& callback, 349 const MoveStatementCallback& callback,
158 base::CancelableTaskTracker* tracker) { 350 base::CancelableTaskTracker* tracker) {
159 HistoryService* hs = HistoryServiceFactory::GetForProfile( 351 HistoryService* hs = HistoryServiceFactory::GetForProfile(
160 profile_, ServiceAccessType::EXPLICIT_ACCESS); 352 profile_, ServiceAccessType::EXPLICIT_ACCESS);
161 if (hs) { 353 if (!hs) {
162 DCHECK(hs->thread_) << "History service being called after cleanup";
163 DCHECK(hs->thread_checker_.CalledOnValidThread());
164 return tracker->PostTaskAndReplyWithResult(
165 hs->thread_->message_loop_proxy().get(),
166 FROM_HERE,
167 base::Bind(&HistoryBackend::MoveStatement,
168 hs->history_backend_.get(),
169 statement,
170 current_pos,
171 destination),
172 callback);
173 } else {
174 callback.Run(current_pos); 354 callback.Run(current_pos);
175 return base::CancelableTaskTracker::kBadTaskId; 355 return base::CancelableTaskTracker::kBadTaskId;
176 } 356 }
357 return hs->ScheduleDBTask(
358 CreateAndroidProviderTask(base::Bind(&MoveStatementAdapter, statement,
359 current_pos, destination),
360 callback),
361 tracker);
177 } 362 }
178 363
179 void AndroidHistoryProviderService::CloseStatement( 364 void AndroidHistoryProviderService::CloseStatement(
180 history::AndroidStatement* statement) { 365 history::AndroidStatement* statement) {
181 HistoryService* hs = HistoryServiceFactory::GetForProfile( 366 HistoryService* hs = HistoryServiceFactory::GetForProfile(
182 profile_, ServiceAccessType::EXPLICIT_ACCESS); 367 profile_, ServiceAccessType::EXPLICIT_ACCESS);
183 if (hs) { 368 if (!hs) {
184 hs->ScheduleTask(HistoryService::PRIORITY_NORMAL,
185 base::Bind(&HistoryBackend::CloseStatement,
186 hs->history_backend_.get(), statement));
187 } else {
188 delete statement; 369 delete statement;
370 return;
189 } 371 }
372 scoped_ptr<CloseStatementTask> task(new CloseStatementTask(statement));
373 base::CancelableTaskTracker* tracker = task->tracker();
374 hs->ScheduleDBTask(task.Pass(), tracker);
190 } 375 }
191 376
192 base::CancelableTaskTracker::TaskId 377 base::CancelableTaskTracker::TaskId
193 AndroidHistoryProviderService::InsertSearchTerm( 378 AndroidHistoryProviderService::InsertSearchTerm(
194 const history::SearchRow& row, 379 const history::SearchRow& row,
195 const InsertCallback& callback, 380 const InsertCallback& callback,
196 base::CancelableTaskTracker* tracker) { 381 base::CancelableTaskTracker* tracker) {
197 HistoryService* hs = HistoryServiceFactory::GetForProfile( 382 HistoryService* hs = HistoryServiceFactory::GetForProfile(
198 profile_, ServiceAccessType::EXPLICIT_ACCESS); 383 profile_, ServiceAccessType::EXPLICIT_ACCESS);
199 if (hs) { 384 if (!hs) {
200 DCHECK(hs->thread_) << "History service being called after cleanup";
201 DCHECK(hs->thread_checker_.CalledOnValidThread());
202 return tracker->PostTaskAndReplyWithResult(
203 hs->thread_->message_loop_proxy().get(),
204 FROM_HERE,
205 base::Bind(
206 &HistoryBackend::InsertSearchTerm, hs->history_backend_.get(), row),
207 callback);
208 } else {
209 callback.Run(0); 385 callback.Run(0);
210 return base::CancelableTaskTracker::kBadTaskId; 386 return base::CancelableTaskTracker::kBadTaskId;
211 } 387 }
388 return hs->ScheduleDBTask(
389 CreateAndroidProviderTask(base::Bind(&InsertSearchTermAdapter, row),
390 callback),
391 tracker);
212 } 392 }
213 393
214 base::CancelableTaskTracker::TaskId 394 base::CancelableTaskTracker::TaskId
215 AndroidHistoryProviderService::UpdateSearchTerms( 395 AndroidHistoryProviderService::UpdateSearchTerms(
216 const history::SearchRow& row, 396 const history::SearchRow& row,
217 const std::string& selection, 397 const std::string& selection,
218 const std::vector<base::string16>& selection_args, 398 const std::vector<base::string16>& selection_args,
219 const UpdateCallback& callback, 399 const UpdateCallback& callback,
220 base::CancelableTaskTracker* tracker) { 400 base::CancelableTaskTracker* tracker) {
221 HistoryService* hs = HistoryServiceFactory::GetForProfile( 401 HistoryService* hs = HistoryServiceFactory::GetForProfile(
222 profile_, ServiceAccessType::EXPLICIT_ACCESS); 402 profile_, ServiceAccessType::EXPLICIT_ACCESS);
223 if (hs) { 403 if (!hs) {
224 DCHECK(hs->thread_) << "History service being called after cleanup";
225 DCHECK(hs->thread_checker_.CalledOnValidThread());
226 return tracker->PostTaskAndReplyWithResult(
227 hs->thread_->message_loop_proxy().get(),
228 FROM_HERE,
229 base::Bind(&HistoryBackend::UpdateSearchTerms,
230 hs->history_backend_.get(),
231 row,
232 selection,
233 selection_args),
234 callback);
235 } else {
236 callback.Run(0); 404 callback.Run(0);
237 return base::CancelableTaskTracker::kBadTaskId; 405 return base::CancelableTaskTracker::kBadTaskId;
238 } 406 }
407 return hs->ScheduleDBTask(
408 CreateAndroidProviderTask(
409 base::Bind(&UpdateSearchTermsAdapter, row, selection, selection_args),
410 callback),
411 tracker);
239 } 412 }
240 413
241 base::CancelableTaskTracker::TaskId 414 base::CancelableTaskTracker::TaskId
242 AndroidHistoryProviderService::DeleteSearchTerms( 415 AndroidHistoryProviderService::DeleteSearchTerms(
243 const std::string& selection, 416 const std::string& selection,
244 const std::vector<base::string16>& selection_args, 417 const std::vector<base::string16>& selection_args,
245 const DeleteCallback& callback, 418 const DeleteCallback& callback,
246 base::CancelableTaskTracker* tracker) { 419 base::CancelableTaskTracker* tracker) {
247 HistoryService* hs = HistoryServiceFactory::GetForProfile( 420 HistoryService* hs = HistoryServiceFactory::GetForProfile(
248 profile_, ServiceAccessType::EXPLICIT_ACCESS); 421 profile_, ServiceAccessType::EXPLICIT_ACCESS);
249 if (hs) { 422 if (!hs) {
250 DCHECK(hs->thread_) << "History service being called after cleanup";
251 DCHECK(hs->thread_checker_.CalledOnValidThread());
252 return tracker->PostTaskAndReplyWithResult(
253 hs->thread_->message_loop_proxy().get(),
254 FROM_HERE,
255 base::Bind(&HistoryBackend::DeleteSearchTerms,
256 hs->history_backend_.get(),
257 selection,
258 selection_args),
259 callback);
260 } else {
261 callback.Run(0); 423 callback.Run(0);
262 return base::CancelableTaskTracker::kBadTaskId; 424 return base::CancelableTaskTracker::kBadTaskId;
263 } 425 }
426 return hs->ScheduleDBTask(
427 CreateAndroidProviderTask(
428 base::Bind(&DeleteSearchTermsAdapter, selection, selection_args),
429 callback),
430 tracker);
264 } 431 }
265 432
266 base::CancelableTaskTracker::TaskId 433 base::CancelableTaskTracker::TaskId
267 AndroidHistoryProviderService::QuerySearchTerms( 434 AndroidHistoryProviderService::QuerySearchTerms(
268 const std::vector<history::SearchRow::ColumnID>& projections, 435 const std::vector<history::SearchRow::ColumnID>& projections,
269 const std::string& selection, 436 const std::string& selection,
270 const std::vector<base::string16>& selection_args, 437 const std::vector<base::string16>& selection_args,
271 const std::string& sort_order, 438 const std::string& sort_order,
272 const QueryCallback& callback, 439 const QueryCallback& callback,
273 base::CancelableTaskTracker* tracker) { 440 base::CancelableTaskTracker* tracker) {
274 HistoryService* hs = HistoryServiceFactory::GetForProfile( 441 HistoryService* hs = HistoryServiceFactory::GetForProfile(
275 profile_, ServiceAccessType::EXPLICIT_ACCESS); 442 profile_, ServiceAccessType::EXPLICIT_ACCESS);
276 if (hs) { 443 if (!hs) {
277 DCHECK(hs->thread_) << "History service being called after cleanup"; 444 callback.Run(nullptr);
278 DCHECK(hs->thread_checker_.CalledOnValidThread());
279 return tracker->PostTaskAndReplyWithResult(
280 hs->thread_->message_loop_proxy().get(),
281 FROM_HERE,
282 base::Bind(&HistoryBackend::QuerySearchTerms,
283 hs->history_backend_.get(),
284 projections,
285 selection,
286 selection_args,
287 sort_order),
288 callback);
289 } else {
290 callback.Run(NULL);
291 return base::CancelableTaskTracker::kBadTaskId; 445 return base::CancelableTaskTracker::kBadTaskId;
292 } 446 }
447 return hs->ScheduleDBTask(
448 CreateAndroidProviderTask(
449 base::Bind(&QuerySearchTermsAdapter, projections, selection,
450 selection_args, sort_order),
451 callback),
452 tracker);
293 } 453 }
294 454
295 base::CancelableTaskTracker::TaskId 455 base::CancelableTaskTracker::TaskId
296 AndroidHistoryProviderService::GetLargestRawFaviconForID( 456 AndroidHistoryProviderService::GetLargestRawFaviconForID(
297 favicon_base::FaviconID favicon_id, 457 favicon_base::FaviconID favicon_id,
298 const favicon_base::FaviconRawBitmapCallback& callback, 458 const favicon_base::FaviconRawBitmapCallback& callback,
299 base::CancelableTaskTracker* tracker) { 459 base::CancelableTaskTracker* tracker) {
300 FaviconService* fs = FaviconServiceFactory::GetForProfile( 460 FaviconService* fs = FaviconServiceFactory::GetForProfile(
301 profile_, ServiceAccessType::EXPLICIT_ACCESS); 461 profile_, ServiceAccessType::EXPLICIT_ACCESS);
302 DCHECK(fs); 462 DCHECK(fs);
303 return fs->GetLargestRawFaviconForID(favicon_id, callback, tracker); 463 return fs->GetLargestRawFaviconForID(favicon_id, callback, tracker);
304 } 464 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/history/history_backend.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698