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

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

Issue 2363563002: [Offline pages] Implementation of RQStore.UpdateRequests with StoreUpdateResult (Closed)
Patch Set: Updating test, adding handling for store/transaction failures. 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_in_memory_store.h" 5 #include "components/offline_pages/background/request_queue_in_memory_store.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/threading/thread_task_runner_handle.h" 9 #include "base/threading/thread_task_runner_handle.h"
10 #include "components/offline_pages/background/save_page_request.h" 10 #include "components/offline_pages/background/save_page_request.h"
(...skipping 15 matching lines...) Expand all
26 base::ThreadTaskRunnerHandle::Get()->PostTask( 26 base::ThreadTaskRunnerHandle::Get()->PostTask(
27 FROM_HERE, 27 FROM_HERE,
28 base::Bind(callback, true, base::Passed(std::move(result_requests)))); 28 base::Bind(callback, true, base::Passed(std::move(result_requests))));
29 } 29 }
30 30
31 void RequestQueueInMemoryStore::AddRequest(const SavePageRequest& request, 31 void RequestQueueInMemoryStore::AddRequest(const SavePageRequest& request,
32 const AddCallback& callback) { 32 const AddCallback& callback) {
33 RequestsMap::iterator iter = requests_.find(request.request_id()); 33 RequestsMap::iterator iter = requests_.find(request.request_id());
34 ItemActionStatus status; 34 ItemActionStatus status;
35 if (iter == requests_.end()) { 35 if (iter == requests_.end()) {
36 requests_.insert(std::make_pair(request.request_id(), request)); 36 requests_.insert(iter, std::make_pair(request.request_id(), request));
37 status = ItemActionStatus::SUCCESS; 37 status = ItemActionStatus::SUCCESS;
38 } else { 38 } else {
39 status = ItemActionStatus::ALREADY_EXISTS; 39 status = ItemActionStatus::ALREADY_EXISTS;
40 } 40 }
41 41
42 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, 42 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
43 base::Bind(callback, status)); 43 base::Bind(callback, status));
44 } 44 }
45 45
46 void RequestQueueInMemoryStore::AddOrUpdateRequest( 46 void RequestQueueInMemoryStore::UpdateRequests(
47 const SavePageRequest& request, 47 const std::vector<SavePageRequest>& requests,
48 const UpdateCallback& callback) { 48 const UpdateCallback& callback) {
49 RequestsMap::iterator iter = requests_.find(request.request_id()); 49 std::unique_ptr<UpdateRequestsResult> result(
50 if (iter != requests_.end()) 50 new UpdateRequestsResult(StoreState::LOADED));
51 requests_.erase(iter); 51
52 requests_.insert(std::make_pair(request.request_id(), request)); 52 ItemActionStatus status;
53 for (const auto& request : requests) {
54 RequestsMap::iterator iter = requests_.find(request.request_id());
55 if (iter != requests_.end()) {
56 status = ItemActionStatus::SUCCESS;
57 iter->second = request;
58 result->updated_items.push_back(request);
59 } else {
60 status = ItemActionStatus::NOT_FOUND;
61 }
62 result->item_statuses.push_back(
63 std::make_pair(request.request_id(), status));
64 }
65
53 base::ThreadTaskRunnerHandle::Get()->PostTask( 66 base::ThreadTaskRunnerHandle::Get()->PostTask(
54 FROM_HERE, base::Bind(callback, UpdateStatus::UPDATED)); 67 FROM_HERE, base::Bind(callback, base::Passed(&result)));
55 } 68 }
56 69
57 void RequestQueueInMemoryStore::RemoveRequests( 70 void RequestQueueInMemoryStore::RemoveRequests(
58 const std::vector<int64_t>& request_ids, 71 const std::vector<int64_t>& request_ids,
59 const RemoveCallback& callback) { 72 const RemoveCallback& callback) {
60 RequestQueue::UpdateMultipleRequestResults results; 73 RequestQueue::UpdateMultipleRequestResults results;
61 RequestQueue::UpdateRequestResult result; 74 RequestQueue::UpdateRequestResult result;
62 std::vector<std::unique_ptr<SavePageRequest>> requests; 75 std::vector<std::unique_ptr<SavePageRequest>> requests;
63 RequestsMap::iterator iter; 76 RequestsMap::iterator iter;
64 77
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 base::Bind(callback, results, base::Passed(std::move(requests)))); 125 base::Bind(callback, results, base::Passed(std::move(requests))));
113 } 126 }
114 127
115 void RequestQueueInMemoryStore::Reset(const ResetCallback& callback) { 128 void RequestQueueInMemoryStore::Reset(const ResetCallback& callback) {
116 requests_.clear(); 129 requests_.clear();
117 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, 130 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
118 base::Bind(callback, true)); 131 base::Bind(callback, true));
119 } 132 }
120 133
121 } // namespace offline_pages 134 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698