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

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

Issue 2256373002: Adds request queue removal capability to OfflinePageBridge. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@query-queue
Patch Set: Rename some callbacks. Created 4 years, 4 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 } 106 }
107 107
108 void RequestCoordinator::GetQueuedRequestsCallback( 108 void RequestCoordinator::GetQueuedRequestsCallback(
109 const GetRequestsCallback& callback, 109 const GetRequestsCallback& callback,
110 RequestQueue::GetRequestsResult result, 110 RequestQueue::GetRequestsResult result,
111 const std::vector<SavePageRequest>& requests) { 111 const std::vector<SavePageRequest>& requests) {
112 callback.Run(requests); 112 callback.Run(requests);
113 } 113 }
114 114
115 void RequestCoordinator::RemoveRequests( 115 void RequestCoordinator::RemoveRequests(
116 const std::vector<int64_t>& request_ids) { 116 const std::vector<int64_t>& request_ids,
117 queue_->RemoveRequests(request_ids, 117 const RemoveRequestsCallback& callback) {
118 base::Bind(&RequestCoordinator::RemoveRequestsCallback, 118 queue_->RemoveRequests(
119 weak_ptr_factory_.GetWeakPtr())); 119 request_ids,
120 base::Bind(&RequestCoordinator::HandleRemovedRequestsAndCallback,
121 weak_ptr_factory_.GetWeakPtr(), callback));
120 } 122 }
121 123
122 void RequestCoordinator::PauseRequests( 124 void RequestCoordinator::PauseRequests(
123 const std::vector<int64_t>& request_ids) { 125 const std::vector<int64_t>& request_ids) {
124 queue_->ChangeRequestsState( 126 queue_->ChangeRequestsState(
125 request_ids, SavePageRequest::RequestState::PAUSED, 127 request_ids, SavePageRequest::RequestState::PAUSED,
126 base::Bind(&RequestCoordinator::UpdateMultipleRequestsCallback, 128 base::Bind(&RequestCoordinator::UpdateMultipleRequestsCallback,
127 weak_ptr_factory_.GetWeakPtr())); 129 weak_ptr_factory_.GetWeakPtr()));
128 } 130 }
129 131
(...skipping 27 matching lines...) Expand all
157 } 159 }
158 160
159 // Called in response to updating multiple requests in the request queue. 161 // Called in response to updating multiple requests in the request queue.
160 void RequestCoordinator::UpdateMultipleRequestsCallback( 162 void RequestCoordinator::UpdateMultipleRequestsCallback(
161 const RequestQueue::UpdateMultipleRequestResults& results, 163 const RequestQueue::UpdateMultipleRequestResults& results,
162 const std::vector<SavePageRequest>& requests) { 164 const std::vector<SavePageRequest>& requests) {
163 for (SavePageRequest request : requests) 165 for (SavePageRequest request : requests)
164 NotifyChanged(request); 166 NotifyChanged(request);
165 } 167 }
166 168
167 void RequestCoordinator::RemoveRequestsCallback( 169 void RequestCoordinator::HandleRemovedRequestsAndCallback(
170 const RemoveRequestsCallback& callback,
171 const RequestQueue::UpdateMultipleRequestResults& results,
172 const std::vector<SavePageRequest>& requests) {
173 HandleRemovedRequests(results, requests);
fgorski 2016/08/19 21:51:19 3 things that I am not comfortable here: 1. result
dewittj 2016/08/19 21:56:37 I agree this is concerning; I don't think it's a t
dewittj 2016/08/20 03:22:35 I solved this for my API; However the request coor
174 callback.Run(requests);
175 }
176
177 void RequestCoordinator::HandleRemovedRequests(
168 const RequestQueue::UpdateMultipleRequestResults& results, 178 const RequestQueue::UpdateMultipleRequestResults& results,
169 const std::vector<SavePageRequest>& requests) { 179 const std::vector<SavePageRequest>& requests) {
170 for (SavePageRequest request : requests) 180 for (SavePageRequest request : requests)
171 NotifyCompleted(request, SavePageStatus::REMOVED); 181 NotifyCompleted(request, SavePageStatus::REMOVED);
172 } 182 }
173 183
174 void RequestCoordinator::StopProcessing() { 184 void RequestCoordinator::StopProcessing() {
175 is_canceled_ = true; 185 is_canceled_ = true;
176 if (offliner_ && is_busy_) { 186 if (offliner_ && is_busy_) {
177 // TODO(dougarnett): Find current request and mark attempt aborted. 187 // TODO(dougarnett): Find current request and mark attempt aborted.
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 base::Bind(&RequestCoordinator::UpdateRequestCallback, 326 base::Bind(&RequestCoordinator::UpdateRequestCallback,
317 weak_ptr_factory_.GetWeakPtr(), 327 weak_ptr_factory_.GetWeakPtr(),
318 updated_request.client_id())); 328 updated_request.client_id()));
319 NotifyCompleted(updated_request, SavePageStatus::FOREGROUND_CANCELED); 329 NotifyCompleted(updated_request, SavePageStatus::FOREGROUND_CANCELED);
320 330
321 } else if (status == Offliner::RequestStatus::SAVED) { 331 } else if (status == Offliner::RequestStatus::SAVED) {
322 // Remove the request from the queue if it succeeded. 332 // Remove the request from the queue if it succeeded.
323 std::vector<int64_t> remove_requests; 333 std::vector<int64_t> remove_requests;
324 remove_requests.push_back(request.request_id()); 334 remove_requests.push_back(request.request_id());
325 queue_->RemoveRequests( 335 queue_->RemoveRequests(
326 remove_requests, base::Bind(&RequestCoordinator::RemoveRequestsCallback, 336 remove_requests, base::Bind(&RequestCoordinator::HandleRemovedRequests,
327 weak_ptr_factory_.GetWeakPtr())); 337 weak_ptr_factory_.GetWeakPtr()));
328 NotifyCompleted(request, SavePageStatus::SUCCESS); 338 NotifyCompleted(request, SavePageStatus::SUCCESS);
329 } else if (request.completed_attempt_count() + 1 >= 339 } else if (request.completed_attempt_count() + 1 >=
330 policy_->GetMaxCompletedTries()) { 340 policy_->GetMaxCompletedTries()) {
331 // Remove from the request queue if we exceeeded max retries. The +1 341 // Remove from the request queue if we exceeeded max retries. The +1
332 // represents the request that just completed. Since we call 342 // represents the request that just completed. Since we call
333 // MarkAttemptCompleted within the if branches, the completed_attempt_count 343 // MarkAttemptCompleted within the if branches, the completed_attempt_count
334 // has not yet been updated when we are checking the if condition. 344 // has not yet been updated when we are checking the if condition.
335 std::vector<int64_t> remove_requests; 345 std::vector<int64_t> remove_requests;
336 remove_requests.push_back(request.request_id()); 346 remove_requests.push_back(request.request_id());
337 queue_->RemoveRequests( 347 queue_->RemoveRequests(
338 remove_requests, base::Bind(&RequestCoordinator::RemoveRequestsCallback, 348 remove_requests, base::Bind(&RequestCoordinator::HandleRemovedRequests,
339 weak_ptr_factory_.GetWeakPtr())); 349 weak_ptr_factory_.GetWeakPtr()));
340 NotifyCompleted(request, SavePageStatus::RETRY_COUNT_EXCEEDED); 350 NotifyCompleted(request, SavePageStatus::RETRY_COUNT_EXCEEDED);
341 } else { 351 } else {
342 // If we failed, but are not over the limit, update the request in the 352 // If we failed, but are not over the limit, update the request in the
343 // queue. 353 // queue.
344 SavePageRequest updated_request(request); 354 SavePageRequest updated_request(request);
345 updated_request.MarkAttemptCompleted(); 355 updated_request.MarkAttemptCompleted();
346 queue_->UpdateRequest(updated_request, 356 queue_->UpdateRequest(updated_request,
347 base::Bind(&RequestCoordinator::UpdateRequestCallback, 357 base::Bind(&RequestCoordinator::UpdateRequestCallback,
348 weak_ptr_factory_.GetWeakPtr(), 358 weak_ptr_factory_.GetWeakPtr(),
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 FOR_EACH_OBSERVER(Observer, observers_, OnChanged(request)); 415 FOR_EACH_OBSERVER(Observer, observers_, OnChanged(request));
406 } 416 }
407 417
408 void RequestCoordinator::GetOffliner() { 418 void RequestCoordinator::GetOffliner() {
409 if (!offliner_) { 419 if (!offliner_) {
410 offliner_ = factory_->GetOffliner(policy_.get()); 420 offliner_ = factory_->GetOffliner(policy_.get());
411 } 421 }
412 } 422 }
413 423
414 } // namespace offline_pages 424 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698