| Index: components/offline_pages/background/request_coordinator.cc
|
| diff --git a/components/offline_pages/background/request_coordinator.cc b/components/offline_pages/background/request_coordinator.cc
|
| index 768a4c36b0bfff444a778cee892a1724de316512..de008ff6031cdb1420e0cb9cc29344b7556f1335 100644
|
| --- a/components/offline_pages/background/request_coordinator.cc
|
| +++ b/components/offline_pages/background/request_coordinator.cc
|
| @@ -152,11 +152,13 @@ bool RequestCoordinator::CancelActiveRequestIfItMatches(
|
| }
|
|
|
| void RequestCoordinator::RemoveRequests(
|
| - const std::vector<int64_t>& request_ids) {
|
| + const std::vector<int64_t>& request_ids,
|
| + const RemoveRequestsCallback& callback) {
|
| bool canceled = CancelActiveRequestIfItMatches(request_ids);
|
| - queue_->RemoveRequests(request_ids,
|
| - base::Bind(&RequestCoordinator::RemoveRequestsCallback,
|
| - weak_ptr_factory_.GetWeakPtr()));
|
| + queue_->RemoveRequests(
|
| + request_ids,
|
| + base::Bind(&RequestCoordinator::HandleRemovedRequestsAndCallback,
|
| + weak_ptr_factory_.GetWeakPtr(), callback));
|
| if (canceled)
|
| TryNextRequest();
|
| }
|
| @@ -210,7 +212,15 @@ void RequestCoordinator::UpdateMultipleRequestsCallback(
|
| NotifyChanged(request);
|
| }
|
|
|
| -void RequestCoordinator::RemoveRequestsCallback(
|
| +void RequestCoordinator::HandleRemovedRequestsAndCallback(
|
| + const RemoveRequestsCallback& callback,
|
| + const RequestQueue::UpdateMultipleRequestResults& results,
|
| + const std::vector<SavePageRequest>& requests) {
|
| + callback.Run(results);
|
| + HandleRemovedRequests(results, requests);
|
| +}
|
| +
|
| +void RequestCoordinator::HandleRemovedRequests(
|
| const RequestQueue::UpdateMultipleRequestResults& results,
|
| const std::vector<SavePageRequest>& requests) {
|
| for (SavePageRequest request : requests)
|
| @@ -356,7 +366,7 @@ void RequestCoordinator::OfflinerDoneCallback(const SavePageRequest& request,
|
| std::vector<int64_t> remove_requests;
|
| remove_requests.push_back(request.request_id());
|
| queue_->RemoveRequests(
|
| - remove_requests, base::Bind(&RequestCoordinator::RemoveRequestsCallback,
|
| + remove_requests, base::Bind(&RequestCoordinator::HandleRemovedRequests,
|
| weak_ptr_factory_.GetWeakPtr()));
|
| NotifyCompleted(request, SavePageStatus::SUCCESS);
|
| } else if (request.completed_attempt_count() + 1 >=
|
| @@ -368,7 +378,7 @@ void RequestCoordinator::OfflinerDoneCallback(const SavePageRequest& request,
|
| std::vector<int64_t> remove_requests;
|
| remove_requests.push_back(request.request_id());
|
| queue_->RemoveRequests(
|
| - remove_requests, base::Bind(&RequestCoordinator::RemoveRequestsCallback,
|
| + remove_requests, base::Bind(&RequestCoordinator::HandleRemovedRequests,
|
| weak_ptr_factory_.GetWeakPtr()));
|
| NotifyCompleted(request, SavePageStatus::RETRY_COUNT_EXCEEDED);
|
| } else {
|
|
|