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

Side by Side Diff: components/offline_pages/background/request_queue_store_sql.cc

Issue 2262423002: Use a vector of smart pointers for callback return type. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: CR feedback per BauerB Created 4 years, 3 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "components/offline_pages/background/request_queue_store_sql.h" 5 #include "components/offline_pages/background/request_queue_store_sql.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 if (!CreateRequestQueueTable(db)) 54 if (!CreateRequestQueueTable(db))
55 return false; 55 return false;
56 56
57 // TODO(fgorski): Add indices here. 57 // TODO(fgorski): Add indices here.
58 return true; 58 return true;
59 } 59 }
60 60
61 // Create a save page request from a SQL result. Expects complete rows with 61 // Create a save page request from a SQL result. Expects complete rows with
62 // all columns present. Columns are in order they are defined in select query 62 // all columns present. Columns are in order they are defined in select query
63 // in |RequestQueueStore::RequestSync| method. 63 // in |RequestQueueStore::RequestSync| method.
64 SavePageRequest MakeSavePageRequest(const sql::Statement& statement) { 64 std::unique_ptr<SavePageRequest> MakeSavePageRequest(
65 const sql::Statement& statement) {
65 const int64_t id = statement.ColumnInt64(0); 66 const int64_t id = statement.ColumnInt64(0);
66 const base::Time creation_time = 67 const base::Time creation_time =
67 base::Time::FromInternalValue(statement.ColumnInt64(1)); 68 base::Time::FromInternalValue(statement.ColumnInt64(1));
68 const base::Time activation_time = 69 const base::Time activation_time =
69 base::Time::FromInternalValue(statement.ColumnInt64(2)); 70 base::Time::FromInternalValue(statement.ColumnInt64(2));
70 const base::Time last_attempt_time = 71 const base::Time last_attempt_time =
71 base::Time::FromInternalValue(statement.ColumnInt64(3)); 72 base::Time::FromInternalValue(statement.ColumnInt64(3));
72 const int64_t started_attempt_count = statement.ColumnInt64(4); 73 const int64_t started_attempt_count = statement.ColumnInt64(4);
73 const int64_t completed_attempt_count = statement.ColumnInt64(5); 74 const int64_t completed_attempt_count = statement.ColumnInt64(5);
74 const SavePageRequest::RequestState state = 75 const SavePageRequest::RequestState state =
75 static_cast<SavePageRequest::RequestState>(statement.ColumnInt64(6)); 76 static_cast<SavePageRequest::RequestState>(statement.ColumnInt64(6));
76 const GURL url(statement.ColumnString(7)); 77 const GURL url(statement.ColumnString(7));
77 const ClientId client_id(statement.ColumnString(8), 78 const ClientId client_id(statement.ColumnString(8),
78 statement.ColumnString(9)); 79 statement.ColumnString(9));
79 80
80 DVLOG(2) << "making save page request - id " << id << " url " << url 81 DVLOG(2) << "making save page request - id " << id << " url " << url
81 << " client_id " << client_id.name_space << "-" << client_id.id 82 << " client_id " << client_id.name_space << "-" << client_id.id
82 << " creation time " << creation_time << " user requested " 83 << " creation time " << creation_time << " user requested "
83 << kUserRequested; 84 << kUserRequested;
84 85
85 SavePageRequest request(id, url, client_id, creation_time, activation_time, 86 std::unique_ptr<SavePageRequest> request(new SavePageRequest(
86 kUserRequested); 87 id, url, client_id, creation_time, activation_time, kUserRequested));
87 request.set_last_attempt_time(last_attempt_time); 88 request->set_last_attempt_time(last_attempt_time);
88 request.set_started_attempt_count(started_attempt_count); 89 request->set_started_attempt_count(started_attempt_count);
89 request.set_completed_attempt_count(completed_attempt_count); 90 request->set_completed_attempt_count(completed_attempt_count);
90 request.set_request_state(state); 91 request->set_request_state(state);
91 return request; 92 return request;
92 } 93 }
93 94
94 // Get a request for a specific id. 95 // Get a request for a specific id.
95 SavePageRequest GetOneRequest(sql::Connection* db, const int64_t request_id) { 96 std::unique_ptr<SavePageRequest> GetOneRequest(sql::Connection* db,
97 const int64_t request_id) {
96 const char kSql[] = 98 const char kSql[] =
97 "SELECT request_id, creation_time, activation_time," 99 "SELECT request_id, creation_time, activation_time,"
98 " last_attempt_time, started_attempt_count, completed_attempt_count," 100 " last_attempt_time, started_attempt_count, completed_attempt_count,"
99 " state, url, client_namespace, client_id" 101 " state, url, client_namespace, client_id"
100 " FROM " REQUEST_QUEUE_TABLE_NAME " WHERE request_id=?"; 102 " FROM " REQUEST_QUEUE_TABLE_NAME " WHERE request_id=?";
101 103
102 sql::Statement statement(db->GetCachedStatement(SQL_FROM_HERE, kSql)); 104 sql::Statement statement(db->GetCachedStatement(SQL_FROM_HERE, kSql));
103 statement.BindInt64(0, request_id); 105 statement.BindInt64(0, request_id);
104 106
105 statement.Run(); 107 statement.Run();
106 return MakeSavePageRequest(statement); 108 return MakeSavePageRequest(statement);
107 } 109 }
108 110
109 void BuildFailedResultList(const std::vector<int64_t>& request_ids, 111 void BuildFailedResultList(const std::vector<int64_t>& request_ids,
110 RequestQueue::UpdateMultipleRequestResults results) { 112 RequestQueue::UpdateMultipleRequestResults results) {
111 results.clear(); 113 results.clear();
112 for (int64_t request_id : request_ids) 114 for (int64_t request_id : request_ids) {
113 results.push_back(std::make_pair( 115 results.push_back(std::make_pair(
114 request_id, RequestQueue::UpdateRequestResult::STORE_FAILURE)); 116 request_id, RequestQueue::UpdateRequestResult::STORE_FAILURE));
117 }
115 } 118 }
116 119
117 RequestQueue::UpdateRequestResult DeleteRequestById(sql::Connection* db, 120 RequestQueue::UpdateRequestResult DeleteRequestById(sql::Connection* db,
118 int64_t request_id) { 121 int64_t request_id) {
119 const char kSql[] = 122 const char kSql[] =
120 "DELETE FROM " REQUEST_QUEUE_TABLE_NAME " WHERE request_id=?"; 123 "DELETE FROM " REQUEST_QUEUE_TABLE_NAME " WHERE request_id=?";
121 sql::Statement statement(db->GetCachedStatement(SQL_FROM_HERE, kSql)); 124 sql::Statement statement(db->GetCachedStatement(SQL_FROM_HERE, kSql));
122 statement.BindInt64(0, request_id); 125 statement.BindInt64(0, request_id);
123 if (!statement.Run()) 126 if (!statement.Run())
124 return RequestQueue::UpdateRequestResult::STORE_FAILURE; 127 return RequestQueue::UpdateRequestResult::STORE_FAILURE;
125 else if (db->GetLastChangeCount() == 0) 128 else if (db->GetLastChangeCount() == 0)
126 return RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST; 129 return RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST;
127 else 130 else
128 return RequestQueue::UpdateRequestResult::SUCCESS; 131 return RequestQueue::UpdateRequestResult::SUCCESS;
129 } 132 }
130 133
131 bool ChangeRequestState(sql::Connection* db, 134 bool ChangeRequestState(sql::Connection* db,
132 const int64_t request_id, 135 const int64_t request_id,
133 const SavePageRequest::RequestState new_state) { 136 const SavePageRequest::RequestState new_state) {
134 const char kSql[] = "UPDATE " REQUEST_QUEUE_TABLE_NAME 137 const char kSql[] = "UPDATE " REQUEST_QUEUE_TABLE_NAME
135 " SET state=?" 138 " SET state=?"
136 " WHERE request_id=?"; 139 " WHERE request_id=?";
137 sql::Statement statement(db->GetCachedStatement(SQL_FROM_HERE, kSql)); 140 sql::Statement statement(db->GetCachedStatement(SQL_FROM_HERE, kSql));
138 statement.BindInt64(0, static_cast<int64_t>(new_state)); 141 statement.BindInt64(0, static_cast<int64_t>(new_state));
139 statement.BindInt64(1, request_id); 142 statement.BindInt64(1, request_id);
140 return statement.Run(); 143 return statement.Run();
141 } 144 }
142 145
143 bool DeleteRequestsByIds(sql::Connection* db, 146 // Helper function to delete requests corresponding to passed in requestIds,
144 const std::vector<int64_t>& request_ids, 147 // and fill an outparam with the removed requests.
145 RequestQueue::UpdateMultipleRequestResults& results, 148 bool DeleteRequestsByIds(
146 std::vector<SavePageRequest>& requests) { 149 sql::Connection* db,
150 const std::vector<int64_t>& request_ids,
151 RequestQueue::UpdateMultipleRequestResults& results,
152 std::vector<std::unique_ptr<SavePageRequest>>& requests) {
Bernhard Bauer 2016/09/08 09:01:57 Pointer.
Pete Williamson 2016/09/08 17:27:00 Done.
147 // If you create a transaction but don't Commit() it is automatically 153 // If you create a transaction but don't Commit() it is automatically
148 // rolled back by its destructor when it falls out of scope. 154 // rolled back by its destructor when it falls out of scope.
149 sql::Transaction transaction(db); 155 sql::Transaction transaction(db);
150 if (!transaction.Begin()) { 156 if (!transaction.Begin()) {
151 BuildFailedResultList(request_ids, results); 157 BuildFailedResultList(request_ids, results);
152 return false; 158 return false;
153 } 159 }
154 160
155 // Read the request before we delete it, and if the delete worked, put it on 161 // Read the request before we delete it, and if the delete worked, put it on
156 // the queue of requests that got deleted. 162 // the queue of requests that got deleted.
157 for (int64_t request_id : request_ids) { 163 for (int64_t request_id : request_ids) {
158 SavePageRequest request = GetOneRequest(db, request_id); 164 std::unique_ptr<SavePageRequest> request = GetOneRequest(db, request_id);
159 RequestQueue::UpdateRequestResult result = 165 RequestQueue::UpdateRequestResult result =
160 DeleteRequestById(db, request_id); 166 DeleteRequestById(db, request_id);
161 results.push_back(std::make_pair(request_id, result)); 167 results.push_back(std::make_pair(request_id, result));
162 if (result == RequestQueue::UpdateRequestResult::SUCCESS) 168 if (result == RequestQueue::UpdateRequestResult::SUCCESS)
163 requests.push_back(request); 169 requests.push_back(std::move(request));
164 } 170 }
165 171
166 if (!transaction.Commit()) { 172 if (!transaction.Commit()) {
167 requests.clear(); 173 requests.clear();
168 BuildFailedResultList(request_ids, results); 174 BuildFailedResultList(request_ids, results);
169 return false; 175 return false;
170 } 176 }
171 177
172 return true; 178 return true;
173 } 179 }
174 180
175 bool ChangeRequestsState(sql::Connection* db, 181 bool ChangeRequestsState(
176 const std::vector<int64_t>& request_ids, 182 sql::Connection* db,
177 SavePageRequest::RequestState new_state, 183 const std::vector<int64_t>& request_ids,
178 RequestQueue::UpdateMultipleRequestResults& results, 184 SavePageRequest::RequestState new_state,
179 std::vector<SavePageRequest>& requests) { 185 RequestQueue::UpdateMultipleRequestResults& results,
186 std::vector<std::unique_ptr<SavePageRequest>>& requests) {
Bernhard Bauer 2016/09/08 09:01:57 Pointer.
Pete Williamson 2016/09/08 17:27:00 If it's OK, I'd like to leave this for now - the C
Bernhard Bauer 2016/09/08 19:14:56 OK.
180 // If you create a transaction but don't Commit() it is automatically 187 // If you create a transaction but don't Commit() it is automatically
181 // rolled back by its destructor when it falls out of scope. 188 // rolled back by its destructor when it falls out of scope.
182 sql::Transaction transaction(db); 189 sql::Transaction transaction(db);
183 if (!transaction.Begin()) { 190 if (!transaction.Begin()) {
184 BuildFailedResultList(request_ids, results); 191 BuildFailedResultList(request_ids, results);
185 return false; 192 return false;
186 } 193 }
187 194
188 // Update a request, then get it, and put the item we got on the output list. 195 // Update a request, then get it, and put the item we got on the output list.
189 for (const auto& request_id : request_ids) { 196 for (const auto& request_id : request_ids) {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 scoped_refptr<base::SingleThreadTaskRunner> runner, 294 scoped_refptr<base::SingleThreadTaskRunner> runner,
288 const GetRequestsCallback& callback) { 295 const GetRequestsCallback& callback) {
289 const char kSql[] = 296 const char kSql[] =
290 "SELECT request_id, creation_time, activation_time," 297 "SELECT request_id, creation_time, activation_time,"
291 " last_attempt_time, started_attempt_count, completed_attempt_count," 298 " last_attempt_time, started_attempt_count, completed_attempt_count,"
292 " state, url, client_namespace, client_id" 299 " state, url, client_namespace, client_id"
293 " FROM " REQUEST_QUEUE_TABLE_NAME; 300 " FROM " REQUEST_QUEUE_TABLE_NAME;
294 301
295 sql::Statement statement(db->GetCachedStatement(SQL_FROM_HERE, kSql)); 302 sql::Statement statement(db->GetCachedStatement(SQL_FROM_HERE, kSql));
296 303
297 std::vector<SavePageRequest> result; 304 std::vector<std::unique_ptr<SavePageRequest>> requests;
298 while (statement.Step()) 305 while (statement.Step())
299 result.push_back(MakeSavePageRequest(statement)); 306 requests.push_back(MakeSavePageRequest(statement));
300 307
301 runner->PostTask(FROM_HERE, 308 runner->PostTask(FROM_HERE, base::Bind(callback, statement.Succeeded(),
302 base::Bind(callback, statement.Succeeded(), result)); 309 base::Passed(std::move(requests))));
Bernhard Bauer 2016/09/08 09:01:57 FYI, you can also use base::Passed(&requests), whi
Pete Williamson 2016/09/08 17:27:00 Done everywhere in this file.
303 } 310 }
304 311
305 // static 312 // static
306 void RequestQueueStoreSQL::AddOrUpdateRequestSync( 313 void RequestQueueStoreSQL::AddOrUpdateRequestSync(
307 sql::Connection* db, 314 sql::Connection* db,
308 scoped_refptr<base::SingleThreadTaskRunner> runner, 315 scoped_refptr<base::SingleThreadTaskRunner> runner,
309 const SavePageRequest& request, 316 const SavePageRequest& request,
310 const UpdateCallback& callback) { 317 const UpdateCallback& callback) {
311 // TODO(fgorski): add UMA metrics here. 318 // TODO(fgorski): add UMA metrics here.
312 RequestQueueStore::UpdateStatus status = InsertOrReplace(db, request); 319 RequestQueueStore::UpdateStatus status = InsertOrReplace(db, request);
313 runner->PostTask(FROM_HERE, base::Bind(callback, status)); 320 runner->PostTask(FROM_HERE, base::Bind(callback, status));
314 } 321 }
315 322
316 // static 323 // static
317 void RequestQueueStoreSQL::RemoveRequestsSync( 324 void RequestQueueStoreSQL::RemoveRequestsSync(
318 sql::Connection* db, 325 sql::Connection* db,
319 scoped_refptr<base::SingleThreadTaskRunner> runner, 326 scoped_refptr<base::SingleThreadTaskRunner> runner,
320 const std::vector<int64_t>& request_ids, 327 const std::vector<int64_t>& request_ids,
321 const RemoveCallback& callback) { 328 const RemoveCallback& callback) {
322 RequestQueue::UpdateMultipleRequestResults results; 329 RequestQueue::UpdateMultipleRequestResults results;
323 std::vector<SavePageRequest> requests; 330 std::vector<std::unique_ptr<SavePageRequest>> requests;
324 // TODO(fgorski): add UMA metrics here. 331 // TODO(fgorski): add UMA metrics here.
325 DeleteRequestsByIds(db, request_ids, results, requests); 332 DeleteRequestsByIds(db, request_ids, results, requests);
326 runner->PostTask(FROM_HERE, base::Bind(callback, results, requests)); 333 runner->PostTask(FROM_HERE, base::Bind(callback, results,
334 base::Passed(std::move(requests))));
327 } 335 }
328 336
329 // static 337 // static
330 void RequestQueueStoreSQL::ChangeRequestsStateSync( 338 void RequestQueueStoreSQL::ChangeRequestsStateSync(
331 sql::Connection* db, 339 sql::Connection* db,
332 scoped_refptr<base::SingleThreadTaskRunner> runner, 340 scoped_refptr<base::SingleThreadTaskRunner> runner,
333 const std::vector<int64_t>& request_ids, 341 const std::vector<int64_t>& request_ids,
334 const SavePageRequest::RequestState new_state, 342 const SavePageRequest::RequestState new_state,
335 const UpdateMultipleRequestsCallback& callback) { 343 const UpdateMultipleRequestsCallback& callback) {
336 RequestQueue::UpdateMultipleRequestResults results; 344 RequestQueue::UpdateMultipleRequestResults results;
337 std::vector<SavePageRequest> requests; 345 std::vector<std::unique_ptr<SavePageRequest>> requests;
338 // TODO(fgorski): add UMA metrics here. 346 // TODO(fgorski): add UMA metrics here.
339 offline_pages::ChangeRequestsState(db, request_ids, new_state, results, 347 offline_pages::ChangeRequestsState(db, request_ids, new_state, results,
340 requests); 348 requests);
341 runner->PostTask(FROM_HERE, base::Bind(callback, results, requests)); 349 runner->PostTask(FROM_HERE, base::Bind(callback, results,
350 base::Passed(std::move(requests))));
342 } 351 }
343 352
344 // static 353 // static
345 void RequestQueueStoreSQL::ResetSync( 354 void RequestQueueStoreSQL::ResetSync(
346 sql::Connection* db, 355 sql::Connection* db,
347 const base::FilePath& db_file_path, 356 const base::FilePath& db_file_path,
348 scoped_refptr<base::SingleThreadTaskRunner> runner, 357 scoped_refptr<base::SingleThreadTaskRunner> runner,
349 const ResetCallback& callback) { 358 const ResetCallback& callback) {
350 // This method deletes the content of the whole store and reinitializes it. 359 // This method deletes the content of the whole store and reinitializes it.
351 bool success = db->Raze(); 360 bool success = db->Raze();
(...skipping 10 matching lines...) Expand all
362 // to preserve the async style behavior to prevent bugs. 371 // to preserve the async style behavior to prevent bugs.
363 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, 372 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
364 base::Bind(callback)); 373 base::Bind(callback));
365 return false; 374 return false;
366 } 375 }
367 return true; 376 return true;
368 } 377 }
369 378
370 void RequestQueueStoreSQL::GetRequests(const GetRequestsCallback& callback) { 379 void RequestQueueStoreSQL::GetRequests(const GetRequestsCallback& callback) {
371 DCHECK(db_.get()); 380 DCHECK(db_.get());
372 if (!CheckDb(base::Bind(callback, false, std::vector<SavePageRequest>()))) 381 std::vector<std::unique_ptr<SavePageRequest>> requests;
382 if (!CheckDb(base::Bind(callback, false, base::Passed(std::move(requests)))))
373 return; 383 return;
374 384
375 background_task_runner_->PostTask( 385 background_task_runner_->PostTask(
376 FROM_HERE, base::Bind(&RequestQueueStoreSQL::GetRequestsSync, db_.get(), 386 FROM_HERE, base::Bind(&RequestQueueStoreSQL::GetRequestsSync, db_.get(),
377 base::ThreadTaskRunnerHandle::Get(), callback)); 387 base::ThreadTaskRunnerHandle::Get(), callback));
378 } 388 }
379 389
380 void RequestQueueStoreSQL::AddOrUpdateRequest(const SavePageRequest& request, 390 void RequestQueueStoreSQL::AddOrUpdateRequest(const SavePageRequest& request,
381 const UpdateCallback& callback) { 391 const UpdateCallback& callback) {
382 DCHECK(db_.get()); 392 DCHECK(db_.get());
383 if (!CheckDb(base::Bind(callback, UpdateStatus::FAILED))) 393 if (!CheckDb(base::Bind(callback, UpdateStatus::FAILED)))
384 return; 394 return;
385 395
386 background_task_runner_->PostTask( 396 background_task_runner_->PostTask(
387 FROM_HERE, 397 FROM_HERE,
388 base::Bind(&RequestQueueStoreSQL::AddOrUpdateRequestSync, db_.get(), 398 base::Bind(&RequestQueueStoreSQL::AddOrUpdateRequestSync, db_.get(),
389 base::ThreadTaskRunnerHandle::Get(), request, callback)); 399 base::ThreadTaskRunnerHandle::Get(), request, callback));
390 } 400 }
391 401
392 // RemoveRequestsByRequestId to be more parallell with RemoveRequestsByClientId. 402 // RemoveRequestsByRequestId to be more parallell with RemoveRequestsByClientId.
393 void RequestQueueStoreSQL::RemoveRequests( 403 void RequestQueueStoreSQL::RemoveRequests(
394 const std::vector<int64_t>& request_ids, 404 const std::vector<int64_t>& request_ids,
395 const RemoveCallback& callback) { 405 const RemoveCallback& callback) {
396 // Set up a failed set of results in case we fail the DB check. 406 // Set up a failed set of results in case we fail the DB check.
397 RequestQueue::UpdateMultipleRequestResults results; 407 RequestQueue::UpdateMultipleRequestResults results;
398 std::vector<SavePageRequest> requests; 408 for (int64_t request_id : request_ids) {
399 for (int64_t request_id : request_ids)
400 results.push_back(std::make_pair( 409 results.push_back(std::make_pair(
401 request_id, RequestQueue::UpdateRequestResult::STORE_FAILURE)); 410 request_id, RequestQueue::UpdateRequestResult::STORE_FAILURE));
411 }
402 412
403 if (!CheckDb(base::Bind(callback, results, requests))) 413 if (!CheckDb(base::Bind(
414 callback, results,
415 base::Passed(std::vector<std::unique_ptr<SavePageRequest>>())))) {
404 return; 416 return;
417 }
405 418
406 background_task_runner_->PostTask( 419 background_task_runner_->PostTask(
407 FROM_HERE, 420 FROM_HERE,
408 base::Bind(&RequestQueueStoreSQL::RemoveRequestsSync, db_.get(), 421 base::Bind(&RequestQueueStoreSQL::RemoveRequestsSync, db_.get(),
409 base::ThreadTaskRunnerHandle::Get(), request_ids, callback)); 422 base::ThreadTaskRunnerHandle::Get(), request_ids, callback));
410 } 423 }
411 424
412 void RequestQueueStoreSQL::ChangeRequestsState( 425 void RequestQueueStoreSQL::ChangeRequestsState(
413 const std::vector<int64_t>& request_ids, 426 const std::vector<int64_t>& request_ids,
414 const SavePageRequest::RequestState new_state, 427 const SavePageRequest::RequestState new_state,
415 const UpdateMultipleRequestsCallback& callback) { 428 const UpdateMultipleRequestsCallback& callback) {
416 RequestQueue::UpdateMultipleRequestResults results; 429 RequestQueue::UpdateMultipleRequestResults results;
417 std::vector<SavePageRequest> requests; 430 std::vector<std::unique_ptr<SavePageRequest>> requests;
418 if (!CheckDb(base::Bind(callback, results, requests))) 431 if (!CheckDb(
432 base::Bind(callback, results, base::Passed(std::move(requests))))) {
419 return; 433 return;
434 }
420 435
421 background_task_runner_->PostTask( 436 background_task_runner_->PostTask(
422 FROM_HERE, base::Bind(&RequestQueueStoreSQL::ChangeRequestsStateSync, 437 FROM_HERE, base::Bind(&RequestQueueStoreSQL::ChangeRequestsStateSync,
423 db_.get(), base::ThreadTaskRunnerHandle::Get(), 438 db_.get(), base::ThreadTaskRunnerHandle::Get(),
424 request_ids, new_state, callback)); 439 request_ids, new_state, callback));
425 } 440 }
426 441
427 void RequestQueueStoreSQL::Reset(const ResetCallback& callback) { 442 void RequestQueueStoreSQL::Reset(const ResetCallback& callback) {
428 DCHECK(db_.get()); 443 DCHECK(db_.get());
429 if (!CheckDb(base::Bind(callback, false))) 444 if (!CheckDb(base::Bind(callback, false)))
(...skipping 27 matching lines...) Expand all
457 } 472 }
458 473
459 void RequestQueueStoreSQL::OnResetDone(const ResetCallback& callback, 474 void RequestQueueStoreSQL::OnResetDone(const ResetCallback& callback,
460 bool success) { 475 bool success) {
461 // Complete connection initialization post reset. 476 // Complete connection initialization post reset.
462 OnOpenConnectionDone(success); 477 OnOpenConnectionDone(success);
463 callback.Run(success); 478 callback.Run(success);
464 } 479 }
465 480
466 } // namespace offline_pages 481 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698