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

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

Issue 2249303002: Simplify Observer callbacks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: CR nits - fix TODOs 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 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 const RequestQueue::UpdateMultipleRequestResults& results, 157 const RequestQueue::UpdateMultipleRequestResults& results,
158 const std::vector<SavePageRequest>& requests) { 158 const std::vector<SavePageRequest>& requests) {
159 for (SavePageRequest request : requests) 159 for (SavePageRequest request : requests)
160 NotifyChanged(request); 160 NotifyChanged(request);
161 } 161 }
162 162
163 void RequestCoordinator::RemoveRequestsCallback( 163 void RequestCoordinator::RemoveRequestsCallback(
164 const RequestQueue::UpdateMultipleRequestResults& results, 164 const RequestQueue::UpdateMultipleRequestResults& results,
165 const std::vector<SavePageRequest>& requests) { 165 const std::vector<SavePageRequest>& requests) {
166 for (SavePageRequest request : requests) 166 for (SavePageRequest request : requests)
167 NotifyRemoved(request); 167 NotifyCompleted(request, SavePageStatus::REMOVED);
168 } 168 }
169 169
170 void RequestCoordinator::StopProcessing() { 170 void RequestCoordinator::StopProcessing() {
171 is_canceled_ = true; 171 is_canceled_ = true;
172 if (offliner_ && is_busy_) { 172 if (offliner_ && is_busy_) {
173 // TODO(dougarnett): Find current request and mark attempt aborted. 173 // TODO(dougarnett): Find current request and mark attempt aborted.
174 offliner_->Cancel(); 174 offliner_->Cancel();
175 } 175 }
176 176
177 // Stopping offliner means it will not call callback. 177 // Stopping offliner means it will not call callback.
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 if (status == Offliner::RequestStatus::FOREGROUND_CANCELED) { 305 if (status == Offliner::RequestStatus::FOREGROUND_CANCELED) {
306 // Update the request for the canceled attempt. 306 // Update the request for the canceled attempt.
307 // TODO(dougarnett): See if we can conclusively identify other attempt 307 // TODO(dougarnett): See if we can conclusively identify other attempt
308 // aborted cases to treat this way (eg, for Render Process Killed). 308 // aborted cases to treat this way (eg, for Render Process Killed).
309 SavePageRequest updated_request(request); 309 SavePageRequest updated_request(request);
310 updated_request.MarkAttemptAborted(); 310 updated_request.MarkAttemptAborted();
311 queue_->UpdateRequest(updated_request, 311 queue_->UpdateRequest(updated_request,
312 base::Bind(&RequestCoordinator::UpdateRequestCallback, 312 base::Bind(&RequestCoordinator::UpdateRequestCallback,
313 weak_ptr_factory_.GetWeakPtr(), 313 weak_ptr_factory_.GetWeakPtr(),
314 updated_request.client_id())); 314 updated_request.client_id()));
315 NotifyFailed(updated_request, SavePageStatus::FOREGROUND_CANCELED); 315 NotifyCompleted(updated_request, SavePageStatus::FOREGROUND_CANCELED);
316 316
317 } else if (status == Offliner::RequestStatus::SAVED) { 317 } else if (status == Offliner::RequestStatus::SAVED) {
318 // Remove the request from the queue if it succeeded. 318 // Remove the request from the queue if it succeeded.
319 std::vector<int64_t> remove_requests; 319 std::vector<int64_t> remove_requests;
320 remove_requests.push_back(request.request_id()); 320 remove_requests.push_back(request.request_id());
321 queue_->RemoveRequests( 321 queue_->RemoveRequests(
322 remove_requests, base::Bind(&RequestCoordinator::RemoveRequestsCallback, 322 remove_requests, base::Bind(&RequestCoordinator::RemoveRequestsCallback,
323 weak_ptr_factory_.GetWeakPtr())); 323 weak_ptr_factory_.GetWeakPtr()));
324 NotifySucceeded(request); 324 NotifyCompleted(request, SavePageStatus::SUCCESS);
325 } else if (request.completed_attempt_count() + 1 >= 325 } else if (request.completed_attempt_count() + 1 >=
326 policy_->GetMaxCompletedTries()) { 326 policy_->GetMaxCompletedTries()) {
327 // Remove from the request queue if we exceeeded max retries. The +1 327 // Remove from the request queue if we exceeeded max retries. The +1
328 // represents the request that just completed. Since we call 328 // represents the request that just completed. Since we call
329 // MarkAttemptCompleted within the if branches, the completed_attempt_count 329 // MarkAttemptCompleted within the if branches, the completed_attempt_count
330 // has not yet been updated when we are checking the if condition. 330 // has not yet been updated when we are checking the if condition.
331 std::vector<int64_t> remove_requests; 331 std::vector<int64_t> remove_requests;
332 remove_requests.push_back(request.request_id()); 332 remove_requests.push_back(request.request_id());
333 queue_->RemoveRequests( 333 queue_->RemoveRequests(
334 remove_requests, base::Bind(&RequestCoordinator::RemoveRequestsCallback, 334 remove_requests, base::Bind(&RequestCoordinator::RemoveRequestsCallback,
335 weak_ptr_factory_.GetWeakPtr())); 335 weak_ptr_factory_.GetWeakPtr()));
336 NotifyFailed(request, SavePageStatus::RETRY_COUNT_EXCEEDED); 336 NotifyCompleted(request, SavePageStatus::RETRY_COUNT_EXCEEDED);
337 } else { 337 } else {
338 // If we failed, but are not over the limit, update the request in the 338 // If we failed, but are not over the limit, update the request in the
339 // queue. 339 // queue.
340 SavePageRequest updated_request(request); 340 SavePageRequest updated_request(request);
341 updated_request.MarkAttemptCompleted(); 341 updated_request.MarkAttemptCompleted();
342 queue_->UpdateRequest(updated_request, 342 queue_->UpdateRequest(updated_request,
343 base::Bind(&RequestCoordinator::UpdateRequestCallback, 343 base::Bind(&RequestCoordinator::UpdateRequestCallback,
344 weak_ptr_factory_.GetWeakPtr(), 344 weak_ptr_factory_.GetWeakPtr(),
345 updated_request.client_id())); 345 updated_request.client_id()));
346 NotifyChanged(updated_request); 346 NotifyChanged(updated_request);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 } 385 }
386 386
387 void RequestCoordinator::RemoveObserver(Observer* observer) { 387 void RequestCoordinator::RemoveObserver(Observer* observer) {
388 observers_.RemoveObserver(observer); 388 observers_.RemoveObserver(observer);
389 } 389 }
390 390
391 void RequestCoordinator::NotifyAdded(const SavePageRequest& request) { 391 void RequestCoordinator::NotifyAdded(const SavePageRequest& request) {
392 FOR_EACH_OBSERVER(Observer, observers_, OnAdded(request)); 392 FOR_EACH_OBSERVER(Observer, observers_, OnAdded(request));
393 } 393 }
394 394
395 void RequestCoordinator::NotifySucceeded(const SavePageRequest& request) { 395 void RequestCoordinator::NotifyCompleted(const SavePageRequest& request,
396 FOR_EACH_OBSERVER(Observer, observers_, OnSucceeded(request)); 396 SavePageStatus status) {
397 } 397 FOR_EACH_OBSERVER(Observer, observers_, OnCompleted(request, status));
398
399 void RequestCoordinator::NotifyFailed(const SavePageRequest& request,
400 SavePageStatus status) {
401 FOR_EACH_OBSERVER(Observer, observers_, OnFailed(request, status));
402 } 398 }
403 399
404 void RequestCoordinator::NotifyChanged(const SavePageRequest& request) { 400 void RequestCoordinator::NotifyChanged(const SavePageRequest& request) {
405 FOR_EACH_OBSERVER(Observer, observers_, OnChanged(request)); 401 FOR_EACH_OBSERVER(Observer, observers_, OnChanged(request));
406 } 402 }
407 403
408 void RequestCoordinator::NotifyRemoved(const SavePageRequest& request) {
409 FOR_EACH_OBSERVER(Observer, observers_,
410 OnRemoved(request, SavePageStatus::REMOVED_BY_CLIENT));
411 }
412
413 void RequestCoordinator::GetOffliner() { 404 void RequestCoordinator::GetOffliner() {
414 if (!offliner_) { 405 if (!offliner_) {
415 offliner_ = factory_->GetOffliner(policy_.get()); 406 offliner_ = factory_->GetOffliner(policy_.get());
416 } 407 }
417 } 408 }
418 409
419 } // namespace offline_pages 410 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698