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

Side by Side Diff: components/offline_pages/background/request_queue.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: Merge 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.h" 5 #include "components/offline_pages/background/request_queue.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/request_queue_store.h" 10 #include "components/offline_pages/background/request_queue_store.h"
11 #include "components/offline_pages/background/save_page_request.h" 11 #include "components/offline_pages/background/save_page_request.h"
12 12
13 namespace offline_pages { 13 namespace offline_pages {
14 14
15 namespace { 15 namespace {
16 // Completes the get requests call. 16 // Completes the get requests call.
17 void GetRequestsDone(const RequestQueue::GetRequestsCallback& callback, 17 void GetRequestsDone(const RequestQueue::GetRequestsCallback& callback,
18 bool success, 18 bool success,
19 const std::vector<SavePageRequest>& requests) { 19 std::vector<std::unique_ptr<SavePageRequest>> requests) {
20 RequestQueue::GetRequestsResult result = 20 RequestQueue::GetRequestsResult result =
21 success ? RequestQueue::GetRequestsResult::SUCCESS 21 success ? RequestQueue::GetRequestsResult::SUCCESS
22 : RequestQueue::GetRequestsResult::STORE_FAILURE; 22 : RequestQueue::GetRequestsResult::STORE_FAILURE;
23 // TODO(fgorski): Filter out expired requests based on policy. 23 // TODO(fgorski): Filter out expired requests based on policy.
24 // This may trigger the purging if necessary. 24 // This may trigger the purging if necessary.
25 // Also this may be turned into a method on the request queue or add a policy 25 // Also this may be turned into a method on the request queue or add a policy
26 // parameter in the process. 26 // parameter in the process.
27 callback.Run(result, requests); 27 callback.Run(result, std::move(requests));
28 } 28 }
29 29
30 // Completes the add request call. 30 // Completes the add request call.
31 void AddRequestDone(const RequestQueue::AddRequestCallback& callback, 31 void AddRequestDone(const RequestQueue::AddRequestCallback& callback,
32 const SavePageRequest& request, 32 const SavePageRequest& request,
33 RequestQueueStore::UpdateStatus status) { 33 RequestQueueStore::UpdateStatus status) {
34 RequestQueue::AddRequestResult result = 34 RequestQueue::AddRequestResult result =
35 (status == RequestQueueStore::UpdateStatus::UPDATED) 35 (status == RequestQueueStore::UpdateStatus::UPDATED)
36 ? RequestQueue::AddRequestResult::SUCCESS 36 ? RequestQueue::AddRequestResult::SUCCESS
37 : RequestQueue::AddRequestResult::STORE_FAILURE; 37 : RequestQueue::AddRequestResult::STORE_FAILURE;
38 callback.Run(result, request); 38 callback.Run(result, request);
39 } 39 }
40 40
41 // Completes the update request call. 41 // Completes the update request call.
42 // TODO(petewil): Move callers to the UpdateMultipleRequestDone callback 42 // TODO(petewil): Move callers to the UpdateMultipleRequestDone callback
43 void UpdateRequestDone(const RequestQueue::UpdateRequestCallback& callback, 43 void UpdateRequestDone(const RequestQueue::UpdateRequestCallback& callback,
44 RequestQueueStore::UpdateStatus status) { 44 RequestQueueStore::UpdateStatus status) {
45 RequestQueue::UpdateRequestResult result = 45 RequestQueue::UpdateRequestResult result =
46 (status == RequestQueueStore::UpdateStatus::UPDATED) 46 (status == RequestQueueStore::UpdateStatus::UPDATED)
47 ? RequestQueue::UpdateRequestResult::SUCCESS 47 ? RequestQueue::UpdateRequestResult::SUCCESS
48 : RequestQueue::UpdateRequestResult::STORE_FAILURE; 48 : RequestQueue::UpdateRequestResult::STORE_FAILURE;
49 callback.Run(result); 49 callback.Run(result);
50 } 50 }
51 51
52 // Handles updating multiple requests at the same time. 52 // Handles updating multiple requests at the same time.
53 void UpdateMultipleRequestsDone( 53 void UpdateMultipleRequestsDone(
54 const RequestQueue::UpdateMultipleRequestsCallback& callback, 54 const RequestQueue::UpdateMultipleRequestsCallback& callback,
55 const RequestQueue::UpdateMultipleRequestResults& results, 55 const RequestQueue::UpdateMultipleRequestResults& results,
56 const std::vector<SavePageRequest>& requests) { 56 std::vector<std::unique_ptr<SavePageRequest>> requests) {
57 callback.Run(results, requests); 57 callback.Run(results, std::move(requests));
58 } 58 }
59 59
60 // Completes the remove request call. 60 // Completes the remove request call.
61 void RemoveRequestsDone( 61 void RemoveRequestsDone(
62 const RequestQueue::RemoveRequestsCallback& callback, 62 const RequestQueue::RemoveRequestsCallback& callback,
63 const RequestQueue::UpdateMultipleRequestResults& results, 63 const RequestQueue::UpdateMultipleRequestResults& results,
64 const std::vector<SavePageRequest>& requests) { 64 std::vector<std::unique_ptr<SavePageRequest>> requests) {
65 callback.Run(results, requests); 65 callback.Run(results, std::move(requests));
66 } 66 }
67 67
68 } // namespace 68 } // namespace
69 69
70 RequestQueue::RequestQueue(std::unique_ptr<RequestQueueStore> store) 70 RequestQueue::RequestQueue(std::unique_ptr<RequestQueueStore> store)
71 : store_(std::move(store)), weak_ptr_factory_(this) {} 71 : store_(std::move(store)), weak_ptr_factory_(this) {}
72 72
73 RequestQueue::~RequestQueue() {} 73 RequestQueue::~RequestQueue() {}
74 74
75 void RequestQueue::GetRequests(const GetRequestsCallback& callback) { 75 void RequestQueue::GetRequests(const GetRequestsCallback& callback) {
(...skipping 25 matching lines...) Expand all
101 } 101 }
102 102
103 // We need a different version of the GetCallback that can take the curried 103 // We need a different version of the GetCallback that can take the curried
104 // update_callback as a parameter, and call back into the request queue store 104 // update_callback as a parameter, and call back into the request queue store
105 // implementation. This must be a member function because we need access to 105 // implementation. This must be a member function because we need access to
106 // the store pointer to call AddOrUpdateRequest. 106 // the store pointer to call AddOrUpdateRequest.
107 void RequestQueue::GetForUpdateDone( 107 void RequestQueue::GetForUpdateDone(
108 const UpdateRequestCallback& update_callback, 108 const UpdateRequestCallback& update_callback,
109 const SavePageRequest& update_request, 109 const SavePageRequest& update_request,
110 bool success, 110 bool success,
111 const std::vector<SavePageRequest>& found_requests) { 111 std::vector<std::unique_ptr<SavePageRequest>> found_requests) {
112 // If the result was not found, return now. 112 // If the result was not found, return now.
113 if (!success) { 113 if (!success) {
114 update_callback.Run( 114 update_callback.Run(
115 RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST); 115 RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST);
116 return; 116 return;
117 } 117 }
118 // If the found result does not contain the request we are looking for, return 118 // If the found result does not contain the request we are looking for, return
119 // now. 119 // now.
120 bool found = false; 120 bool found = false;
121 std::vector<SavePageRequest>::const_iterator iter; 121 std::vector<std::unique_ptr<SavePageRequest>>::const_iterator iter;
122 for (iter = found_requests.begin(); iter != found_requests.end(); ++iter) { 122 for (iter = found_requests.begin(); iter != found_requests.end(); ++iter) {
123 if (iter->request_id() == update_request.request_id()) 123 if ((*iter)->request_id() == update_request.request_id())
124 found = true; 124 found = true;
125 } 125 }
126 if (!found) { 126 if (!found) {
127 update_callback.Run( 127 update_callback.Run(
128 RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST); 128 RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST);
129 return; 129 return;
130 } 130 }
131 131
132 // Since the request exists, update it. 132 // Since the request exists, update it.
133 store_->AddOrUpdateRequest(update_request, 133 store_->AddOrUpdateRequest(update_request,
134 base::Bind(&UpdateRequestDone, update_callback)); 134 base::Bind(&UpdateRequestDone, update_callback));
135 } 135 }
136 136
137 void RequestQueue::RemoveRequests(const std::vector<int64_t>& request_ids, 137 void RequestQueue::RemoveRequests(const std::vector<int64_t>& request_ids,
138 const RemoveRequestsCallback& callback) { 138 const RemoveRequestsCallback& callback) {
139 store_->RemoveRequests(request_ids, base::Bind(RemoveRequestsDone, callback)); 139 store_->RemoveRequests(request_ids, base::Bind(RemoveRequestsDone, callback));
140 } 140 }
141 141
142 void RequestQueue::ChangeRequestsState( 142 void RequestQueue::ChangeRequestsState(
143 const std::vector<int64_t>& request_ids, 143 const std::vector<int64_t>& request_ids,
144 const SavePageRequest::RequestState new_state, 144 const SavePageRequest::RequestState new_state,
145 const UpdateMultipleRequestsCallback& callback) { 145 const UpdateMultipleRequestsCallback& callback) {
146 store_->ChangeRequestsState(request_ids, new_state, 146 store_->ChangeRequestsState(request_ids, new_state,
147 base::Bind(UpdateMultipleRequestsDone, callback)); 147 base::Bind(UpdateMultipleRequestsDone, callback));
148 } 148 }
149 149
150 void RequestQueue::PurgeRequests(const PurgeRequestsCallback& callback) {} 150 void RequestQueue::PurgeRequests(const PurgeRequestsCallback& callback) {}
151 151
152 } // namespace offline_pages 152 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698