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

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

Issue 2372043002: [Offline pages] Applying TaskQueue to RequestQueue::ChangeRequestsState (Closed)
Patch Set: Addressing feedback from dougarnett Created 4 years, 2 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 27 matching lines...) Expand all
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::UpdateRequests( 46 void RequestQueueInMemoryStore::UpdateRequests(
47 const std::vector<SavePageRequest>& requests, 47 const std::vector<SavePageRequest>& requests,
48 const UpdateCallback& callback) { 48 const RequestQueue::UpdateCallback& callback) {
49 std::unique_ptr<UpdateRequestsResult> result( 49 std::unique_ptr<UpdateRequestsResult> result(
50 new UpdateRequestsResult(StoreState::LOADED)); 50 new UpdateRequestsResult(StoreState::LOADED));
51 51
52 ItemActionStatus status; 52 ItemActionStatus status;
53 for (const auto& request : requests) { 53 for (const auto& request : requests) {
54 RequestsMap::iterator iter = requests_.find(request.request_id()); 54 RequestsMap::iterator iter = requests_.find(request.request_id());
55 if (iter != requests_.end()) { 55 if (iter != requests_.end()) {
56 status = ItemActionStatus::SUCCESS; 56 status = ItemActionStatus::SUCCESS;
57 iter->second = request; 57 iter->second = request;
58 result->updated_items.push_back(request); 58 result->updated_items.push_back(request);
(...skipping 30 matching lines...) Expand all
89 result = RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST; 89 result = RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST;
90 } 90 }
91 results.push_back(std::make_pair(request_id, result)); 91 results.push_back(std::make_pair(request_id, result));
92 } 92 }
93 93
94 base::ThreadTaskRunnerHandle::Get()->PostTask( 94 base::ThreadTaskRunnerHandle::Get()->PostTask(
95 FROM_HERE, 95 FROM_HERE,
96 base::Bind(callback, results, base::Passed(std::move(requests)))); 96 base::Bind(callback, results, base::Passed(std::move(requests))));
97 } 97 }
98 98
99 void RequestQueueInMemoryStore::ChangeRequestsState(
100 const std::vector<int64_t>& request_ids,
101 const SavePageRequest::RequestState new_state,
102 const UpdateMultipleRequestsCallback& callback) {
103 RequestQueue::UpdateMultipleRequestResults results;
104 std::vector<std::unique_ptr<SavePageRequest>> requests;
105 RequestQueue::UpdateRequestResult result;
106 for (int64_t request_id : request_ids) {
107 auto pair = requests_.find(request_id);
108 // If we find this request id, modify it, and return the modified request in
109 // the request list.
110 if (pair != requests_.end()) {
111 pair->second.set_request_state(new_state);
112 std::unique_ptr<SavePageRequest> request(
113 new SavePageRequest(pair->second));
114 requests.push_back(std::move(request));
115 result = RequestQueue::UpdateRequestResult::SUCCESS;
116 } else {
117 result = RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST;;
118 }
119
120 results.push_back(std::make_pair(request_id, result));
121 }
122
123 base::ThreadTaskRunnerHandle::Get()->PostTask(
124 FROM_HERE,
125 base::Bind(callback, results, base::Passed(std::move(requests))));
126 }
127
128 void RequestQueueInMemoryStore::Reset(const ResetCallback& callback) { 99 void RequestQueueInMemoryStore::Reset(const ResetCallback& callback) {
129 requests_.clear(); 100 requests_.clear();
130 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, 101 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
131 base::Bind(callback, true)); 102 base::Bind(callback, true));
132 } 103 }
133 104
134 } // namespace offline_pages 105 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698