| OLD | NEW |
| 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 <limits> | 7 #include <limits> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 active_request_->request_id())) { | 240 active_request_->request_id())) { |
| 241 StopPrerendering(Offliner::RequestStatus::REQUEST_COORDINATOR_CANCELED); | 241 StopPrerendering(Offliner::RequestStatus::REQUEST_COORDINATOR_CANCELED); |
| 242 return true; | 242 return true; |
| 243 } | 243 } |
| 244 } | 244 } |
| 245 | 245 |
| 246 return false; | 246 return false; |
| 247 } | 247 } |
| 248 | 248 |
| 249 void RequestCoordinator::AbortRequestAttempt(SavePageRequest* request) { | 249 void RequestCoordinator::AbortRequestAttempt(SavePageRequest* request) { |
| 250 request->MarkAttemptAborted(); | |
| 251 if (request->started_attempt_count() >= policy_->GetMaxStartedTries()) { | 250 if (request->started_attempt_count() >= policy_->GetMaxStartedTries()) { |
| 252 const BackgroundSavePageResult result( | 251 const BackgroundSavePageResult result( |
| 253 BackgroundSavePageResult::START_COUNT_EXCEEDED); | 252 BackgroundSavePageResult::START_COUNT_EXCEEDED); |
| 254 event_logger_.RecordDroppedSavePageRequest(request->client_id().name_space, | 253 event_logger_.RecordDroppedSavePageRequest(request->client_id().name_space, |
| 255 result, request->request_id()); | 254 result, request->request_id()); |
| 256 RemoveAttemptedRequest(*request, result); | 255 RemoveAttemptedRequest(*request, result); |
| 257 } else { | 256 } else { |
| 258 queue_->UpdateRequest( | 257 queue_->MarkAttemptAborted( |
| 259 *request, | 258 request->request_id(), |
| 260 base::Bind(&RequestCoordinator::UpdateRequestCallback, | 259 base::Bind(&RequestCoordinator::MarkAttemptAbortedDone, |
| 261 weak_ptr_factory_.GetWeakPtr(), request->client_id())); | 260 weak_ptr_factory_.GetWeakPtr(), request->request_id(), |
| 261 request->client_id())); |
| 262 } | 262 } |
| 263 } | 263 } |
| 264 | 264 |
| 265 void RequestCoordinator::RemoveAttemptedRequest( | 265 void RequestCoordinator::RemoveAttemptedRequest( |
| 266 const SavePageRequest& request, | 266 const SavePageRequest& request, |
| 267 BackgroundSavePageResult result) { | 267 BackgroundSavePageResult result) { |
| 268 std::vector<int64_t> remove_requests; | 268 std::vector<int64_t> remove_requests; |
| 269 remove_requests.push_back(request.request_id()); | 269 remove_requests.push_back(request.request_id()); |
| 270 queue_->RemoveRequests(remove_requests, | 270 queue_->RemoveRequests(remove_requests, |
| 271 base::Bind(&RequestCoordinator::HandleRemovedRequests, | 271 base::Bind(&RequestCoordinator::HandleRemovedRequests, |
| 272 weak_ptr_factory_.GetWeakPtr(), result)); | 272 weak_ptr_factory_.GetWeakPtr(), result)); |
| 273 RecordAttemptCount(request, result); | 273 RecordAttemptCount(request, result); |
| 274 } | 274 } |
| 275 | 275 |
| 276 void RequestCoordinator::MarkAttemptAbortedDone( |
| 277 int64_t request_id, |
| 278 const ClientId& client_id, |
| 279 std::unique_ptr<UpdateRequestsResult> result) { |
| 280 // If the request succeeded, nothing to do. If it failed, we can't really do |
| 281 // much, so just log it. |
| 282 if (result->store_state != StoreState::LOADED || |
| 283 result->item_statuses.size() != 1 || |
| 284 result->item_statuses.at(0).first != request_id || |
| 285 result->item_statuses.at(0).second != ItemActionStatus::SUCCESS) { |
| 286 DVLOG(1) << "Failed to mark request aborted: " << request_id; |
| 287 event_logger_.RecordUpdateRequestFailed( |
| 288 client_id.name_space, |
| 289 result->store_state != StoreState::LOADED |
| 290 ? RequestQueue::UpdateRequestResult::STORE_FAILURE |
| 291 : RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST); |
| 292 } |
| 293 } |
| 294 |
| 276 void RequestCoordinator::RemoveRequests( | 295 void RequestCoordinator::RemoveRequests( |
| 277 const std::vector<int64_t>& request_ids, | 296 const std::vector<int64_t>& request_ids, |
| 278 const RemoveRequestsCallback& callback) { | 297 const RemoveRequestsCallback& callback) { |
| 279 bool canceled = CancelActiveRequestIfItMatches(request_ids); | 298 bool canceled = CancelActiveRequestIfItMatches(request_ids); |
| 280 queue_->RemoveRequests( | 299 queue_->RemoveRequests( |
| 281 request_ids, | 300 request_ids, |
| 282 base::Bind(&RequestCoordinator::HandleRemovedRequestsAndCallback, | 301 base::Bind(&RequestCoordinator::HandleRemovedRequestsAndCallback, |
| 283 weak_ptr_factory_.GetWeakPtr(), callback, | 302 weak_ptr_factory_.GetWeakPtr(), callback, |
| 284 BackgroundSavePageResult::REMOVED)); | 303 BackgroundSavePageResult::REMOVED)); |
| 285 if (canceled) | 304 if (canceled) |
| (...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 750 | 769 |
| 751 ClientPolicyController* RequestCoordinator::GetPolicyController() { | 770 ClientPolicyController* RequestCoordinator::GetPolicyController() { |
| 752 return policy_controller_.get(); | 771 return policy_controller_.get(); |
| 753 } | 772 } |
| 754 | 773 |
| 755 void RequestCoordinator::Shutdown() { | 774 void RequestCoordinator::Shutdown() { |
| 756 network_quality_estimator_ = nullptr; | 775 network_quality_estimator_ = nullptr; |
| 757 } | 776 } |
| 758 | 777 |
| 759 } // namespace offline_pages | 778 } // namespace offline_pages |
| OLD | NEW |