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

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

Issue 2473553004: Request Picker task (Closed)
Patch Set: CR fixes per DougArnett Created 4 years, 1 month 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 <unordered_set> 7 #include <unordered_set>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 return ItemActionStatus::NOT_FOUND; 181 return ItemActionStatus::NOT_FOUND;
182 return ItemActionStatus::SUCCESS; 182 return ItemActionStatus::SUCCESS;
183 } 183 }
184 184
185 void PostStoreUpdateResultForIds( 185 void PostStoreUpdateResultForIds(
186 scoped_refptr<base::SingleThreadTaskRunner> runner, 186 scoped_refptr<base::SingleThreadTaskRunner> runner,
187 StoreState store_state, 187 StoreState store_state,
188 const std::vector<int64_t>& item_ids, 188 const std::vector<int64_t>& item_ids,
189 ItemActionStatus action_status, 189 ItemActionStatus action_status,
190 const RequestQueueStore::UpdateCallback& callback) { 190 const RequestQueueStore::UpdateCallback& callback) {
191 std::unique_ptr<UpdateRequestsResult> result( 191 std::unique_ptr<QueueResults::UpdateRequestsResult> result(
192 new UpdateRequestsResult(store_state)); 192 new QueueResults::UpdateRequestsResult(store_state));
193 for (const auto& item_id : item_ids) 193 for (const auto& item_id : item_ids)
194 result->item_statuses.push_back(std::make_pair(item_id, action_status)); 194 result->item_statuses.push_back(std::make_pair(item_id, action_status));
195 runner->PostTask(FROM_HERE, base::Bind(callback, base::Passed(&result))); 195 runner->PostTask(FROM_HERE, base::Bind(callback, base::Passed(&result)));
196 } 196 }
197 197
198 void PostStoreErrorForAllRequests( 198 void PostStoreErrorForAllRequests(
199 scoped_refptr<base::SingleThreadTaskRunner> runner, 199 scoped_refptr<base::SingleThreadTaskRunner> runner,
200 const std::vector<SavePageRequest>& items, 200 const std::vector<SavePageRequest>& items,
201 const RequestQueueStore::UpdateCallback& callback) { 201 const RequestQueueStore::UpdateCallback& callback) {
202 std::vector<int64_t> item_ids; 202 std::vector<int64_t> item_ids;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 247
248 runner->PostTask(FROM_HERE, base::Bind(callback, statement.Succeeded(), 248 runner->PostTask(FROM_HERE, base::Bind(callback, statement.Succeeded(),
249 base::Passed(&requests))); 249 base::Passed(&requests)));
250 } 250 }
251 251
252 void GetRequestsByIdsSync(sql::Connection* db, 252 void GetRequestsByIdsSync(sql::Connection* db,
253 scoped_refptr<base::SingleThreadTaskRunner> runner, 253 scoped_refptr<base::SingleThreadTaskRunner> runner,
254 const std::vector<int64_t>& request_ids, 254 const std::vector<int64_t>& request_ids,
255 const RequestQueueStore::UpdateCallback& callback) { 255 const RequestQueueStore::UpdateCallback& callback) {
256 // TODO(fgorski): Perhaps add metrics here. 256 // TODO(fgorski): Perhaps add metrics here.
257 std::unique_ptr<UpdateRequestsResult> result( 257 std::unique_ptr<QueueResults::UpdateRequestsResult> result(
258 new UpdateRequestsResult(StoreState::LOADED)); 258 new QueueResults::UpdateRequestsResult(StoreState::LOADED));
259 259
260 // If you create a transaction but don't Commit() it is automatically 260 // If you create a transaction but don't Commit() it is automatically
261 // rolled back by its destructor when it falls out of scope. 261 // rolled back by its destructor when it falls out of scope.
262 sql::Transaction transaction(db); 262 sql::Transaction transaction(db);
263 if (!transaction.Begin()) { 263 if (!transaction.Begin()) {
264 PostStoreErrorForAllIds(runner, request_ids, callback); 264 PostStoreErrorForAllIds(runner, request_ids, callback);
265 return; 265 return;
266 } 266 }
267 267
268 // Make sure not to include the same request multiple times, preserving the 268 // Make sure not to include the same request multiple times, preserving the
(...skipping 25 matching lines...) Expand all
294 // TODO(fgorski): add UMA metrics here. 294 // TODO(fgorski): add UMA metrics here.
295 ItemActionStatus status = Insert(db, request); 295 ItemActionStatus status = Insert(db, request);
296 runner->PostTask(FROM_HERE, base::Bind(callback, status)); 296 runner->PostTask(FROM_HERE, base::Bind(callback, status));
297 } 297 }
298 298
299 void UpdateRequestsSync(sql::Connection* db, 299 void UpdateRequestsSync(sql::Connection* db,
300 scoped_refptr<base::SingleThreadTaskRunner> runner, 300 scoped_refptr<base::SingleThreadTaskRunner> runner,
301 const std::vector<SavePageRequest>& requests, 301 const std::vector<SavePageRequest>& requests,
302 const RequestQueueStore::UpdateCallback& callback) { 302 const RequestQueueStore::UpdateCallback& callback) {
303 // TODO(fgorski): add UMA metrics here. 303 // TODO(fgorski): add UMA metrics here.
304 std::unique_ptr<UpdateRequestsResult> result( 304 std::unique_ptr<QueueResults::UpdateRequestsResult> result(
305 new UpdateRequestsResult(StoreState::LOADED)); 305 new QueueResults::UpdateRequestsResult(StoreState::LOADED));
306 306
307 sql::Transaction transaction(db); 307 sql::Transaction transaction(db);
308 if (!transaction.Begin()) { 308 if (!transaction.Begin()) {
309 PostStoreErrorForAllRequests(runner, requests, callback); 309 PostStoreErrorForAllRequests(runner, requests, callback);
310 return; 310 return;
311 } 311 }
312 312
313 for (const auto& request : requests) { 313 for (const auto& request : requests) {
314 ItemActionStatus status = Update(db, request); 314 ItemActionStatus status = Update(db, request);
315 result->item_statuses.push_back( 315 result->item_statuses.push_back(
316 std::make_pair(request.request_id(), status)); 316 std::make_pair(request.request_id(), status));
317 if (status == ItemActionStatus::SUCCESS) 317 if (status == ItemActionStatus::SUCCESS)
318 result->updated_items.push_back(request); 318 result->updated_items.push_back(request);
319 } 319 }
320 320
321 if (!transaction.Commit()) { 321 if (!transaction.Commit()) {
322 PostStoreErrorForAllRequests(runner, requests, callback); 322 PostStoreErrorForAllRequests(runner, requests, callback);
323 return; 323 return;
324 } 324 }
325 325
326 runner->PostTask(FROM_HERE, base::Bind(callback, base::Passed(&result))); 326 runner->PostTask(FROM_HERE, base::Bind(callback, base::Passed(&result)));
327 } 327 }
328 328
329 void RemoveRequestsSync(sql::Connection* db, 329 void RemoveRequestsSync(sql::Connection* db,
330 scoped_refptr<base::SingleThreadTaskRunner> runner, 330 scoped_refptr<base::SingleThreadTaskRunner> runner,
331 const std::vector<int64_t>& request_ids, 331 const std::vector<int64_t>& request_ids,
332 const RequestQueueStore::UpdateCallback& callback) { 332 const RequestQueueStore::UpdateCallback& callback) {
333 // TODO(fgorski): Perhaps add metrics here. 333 // TODO(fgorski): Perhaps add metrics here.
334 std::unique_ptr<UpdateRequestsResult> result( 334 std::unique_ptr<QueueResults::UpdateRequestsResult> result(
335 new UpdateRequestsResult(StoreState::LOADED)); 335 new QueueResults::UpdateRequestsResult(StoreState::LOADED));
336 336
337 // If you create a transaction but don't Commit() it is automatically 337 // If you create a transaction but don't Commit() it is automatically
338 // rolled back by its destructor when it falls out of scope. 338 // rolled back by its destructor when it falls out of scope.
339 sql::Transaction transaction(db); 339 sql::Transaction transaction(db);
340 if (!transaction.Begin()) { 340 if (!transaction.Begin()) {
341 PostStoreErrorForAllIds(runner, request_ids, callback); 341 PostStoreErrorForAllIds(runner, request_ids, callback);
342 return; 342 return;
343 } 343 }
344 344
345 // Read the request before we delete it, and if the delete worked, put it on 345 // Read the request before we delete it, and if the delete worked, put it on
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 // Complete connection initialization post reset. 520 // Complete connection initialization post reset.
521 OnOpenConnectionDone(state); 521 OnOpenConnectionDone(state);
522 callback.Run(state == StoreState::LOADED); 522 callback.Run(state == StoreState::LOADED);
523 } 523 }
524 524
525 StoreState RequestQueueStoreSQL::state() const { 525 StoreState RequestQueueStoreSQL::state() const {
526 return state_; 526 return state_;
527 } 527 }
528 528
529 } // namespace offline_pages 529 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698