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

Side by Side Diff: components/offline_pages/background/request_coordinator.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: More compile fixes 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_coordinator.h" 5 #include "components/offline_pages/background/request_coordinator.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 // Get all matching requests from the request queue, send them to our 106 // Get all matching requests from the request queue, send them to our
107 // callback. We bind the namespace and callback to the front of the callback 107 // callback. We bind the namespace and callback to the front of the callback
108 // param set. 108 // param set.
109 queue_->GetRequests(base::Bind(&RequestCoordinator::GetQueuedRequestsCallback, 109 queue_->GetRequests(base::Bind(&RequestCoordinator::GetQueuedRequestsCallback,
110 weak_ptr_factory_.GetWeakPtr(), callback)); 110 weak_ptr_factory_.GetWeakPtr(), callback));
111 } 111 }
112 112
113 void RequestCoordinator::GetQueuedRequestsCallback( 113 void RequestCoordinator::GetQueuedRequestsCallback(
114 const GetRequestsCallback& callback, 114 const GetRequestsCallback& callback,
115 RequestQueue::GetRequestsResult result, 115 RequestQueue::GetRequestsResult result,
116 const std::vector<SavePageRequest>& requests) { 116 std::vector<std::unique_ptr<SavePageRequest>> requests) {
117 callback.Run(requests); 117 callback.Run(std::move(requests));
118 } 118 }
119 119
120 void RequestCoordinator::StopPrerendering() { 120 void RequestCoordinator::StopPrerendering() {
121 if (offliner_ && is_busy_) { 121 if (offliner_ && is_busy_) {
122 offliner_->Cancel(); 122 offliner_->Cancel();
123 // Find current request and mark attempt aborted. 123 // Find current request and mark attempt aborted.
124 active_request_->MarkAttemptAborted(); 124 active_request_->MarkAttemptAborted();
125 queue_->UpdateRequest(*(active_request_.get()), 125 queue_->UpdateRequest(*(active_request_.get()),
126 base::Bind(&RequestCoordinator::UpdateRequestCallback, 126 base::Bind(&RequestCoordinator::UpdateRequestCallback,
127 weak_ptr_factory_.GetWeakPtr(), 127 weak_ptr_factory_.GetWeakPtr(),
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 if (result != RequestQueue::UpdateRequestResult::SUCCESS) { 220 if (result != RequestQueue::UpdateRequestResult::SUCCESS) {
221 DVLOG(1) << "Failed to update request attempt details. " 221 DVLOG(1) << "Failed to update request attempt details. "
222 << static_cast<int>(result); 222 << static_cast<int>(result);
223 event_logger_.RecordUpdateRequestFailed(client_id.name_space, result); 223 event_logger_.RecordUpdateRequestFailed(client_id.name_space, result);
224 } 224 }
225 } 225 }
226 226
227 // Called in response to updating multiple requests in the request queue. 227 // Called in response to updating multiple requests in the request queue.
228 void RequestCoordinator::UpdateMultipleRequestsCallback( 228 void RequestCoordinator::UpdateMultipleRequestsCallback(
229 const RequestQueue::UpdateMultipleRequestResults& results, 229 const RequestQueue::UpdateMultipleRequestResults& results,
230 const std::vector<SavePageRequest>& requests) { 230 std::vector<std::unique_ptr<SavePageRequest>> requests) {
231 bool available_user_request = false; 231 bool available_user_request = false;
232 for (SavePageRequest request : requests) { 232 for (const auto& request : requests) {
233 NotifyChanged(request); 233 NotifyChanged(*(request));
234 if (!available_user_request && request.user_requested() && 234 if (!available_user_request && request->user_requested() &&
235 request.request_state() == SavePageRequest::RequestState::AVAILABLE) { 235 request->request_state() == SavePageRequest::RequestState::AVAILABLE) {
236 // TODO(dougarnett): Consider avoiding prospect of N^2 in case 236 // TODO(dougarnett): Consider avoiding prospect of N^2 in case
237 // size of bulk requests can get large (perhaps with easier to consume 237 // size of bulk requests can get large (perhaps with easier to consume
238 // callback interface). 238 // callback interface).
239 for (std::pair<int64_t, RequestQueue::UpdateRequestResult> pair : 239 for (std::pair<int64_t, RequestQueue::UpdateRequestResult> pair :
240 results) { 240 results) {
241 if (pair.first == request.request_id() && 241 if (pair.first == request->request_id() &&
242 pair.second == RequestQueue::UpdateRequestResult::SUCCESS) { 242 pair.second == RequestQueue::UpdateRequestResult::SUCCESS) {
243 // We have a successfully updated, available, user request. 243 // We have a successfully updated, available, user request.
244 available_user_request = true; 244 available_user_request = true;
245 } 245 }
246 } 246 }
247 } 247 }
248 } 248 }
249 249
250 if (available_user_request) 250 if (available_user_request)
251 StartProcessingIfConnected(); 251 StartProcessingIfConnected();
252 } 252 }
253 253
254 void RequestCoordinator::HandleRemovedRequestsAndCallback( 254 void RequestCoordinator::HandleRemovedRequestsAndCallback(
255 const RemoveRequestsCallback& callback, 255 const RemoveRequestsCallback& callback,
256 SavePageStatus status, 256 SavePageStatus status,
257 const RequestQueue::UpdateMultipleRequestResults& results, 257 const RequestQueue::UpdateMultipleRequestResults& results,
258 const std::vector<SavePageRequest>& requests) { 258 std::vector<std::unique_ptr<SavePageRequest>> requests) {
259 callback.Run(results); 259 callback.Run(results);
260 HandleRemovedRequests(status, results, requests); 260 HandleRemovedRequests(status, results, std::move(requests));
261 } 261 }
262 262
263 void RequestCoordinator::HandleRemovedRequests( 263 void RequestCoordinator::HandleRemovedRequests(
264 SavePageStatus status, 264 SavePageStatus status,
265 const RequestQueue::UpdateMultipleRequestResults& results, 265 const RequestQueue::UpdateMultipleRequestResults& results,
266 const std::vector<SavePageRequest>& requests) { 266 std::vector<std::unique_ptr<SavePageRequest>> requests) {
267 for (SavePageRequest request : requests) 267 std::vector<std::unique_ptr<SavePageRequest>>::iterator request;
268 NotifyCompleted(request, status); 268 for (request = requests.begin(); request != requests.end(); ++request)
269 NotifyCompleted(*(request->get()), status);
269 } 270 }
270 271
271 void RequestCoordinator::StopProcessing() { 272 void RequestCoordinator::StopProcessing() {
272 is_stopped_ = true; 273 is_stopped_ = true;
273 StopPrerendering(); 274 StopPrerendering();
274 275
275 // Let the scheduler know we are done processing. 276 // Let the scheduler know we are done processing.
276 scheduler_callback_.Run(true); 277 scheduler_callback_.Run(true);
277 } 278 }
278 279
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 FOR_EACH_OBSERVER(Observer, observers_, OnChanged(request)); 506 FOR_EACH_OBSERVER(Observer, observers_, OnChanged(request));
506 } 507 }
507 508
508 void RequestCoordinator::GetOffliner() { 509 void RequestCoordinator::GetOffliner() {
509 if (!offliner_) { 510 if (!offliner_) {
510 offliner_ = factory_->GetOffliner(policy_.get()); 511 offliner_ = factory_->GetOffliner(policy_.get());
511 } 512 }
512 } 513 }
513 514
514 } // namespace offline_pages 515 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698