Chromium Code Reviews| 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 <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 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 287 RequestQueue::UpdateRequestResult result) { | 287 RequestQueue::UpdateRequestResult result) { |
| 288 // If the request succeeded, nothing to do. If it failed, we can't really do | 288 // If the request succeeded, nothing to do. If it failed, we can't really do |
| 289 // much, so just log it. | 289 // much, so just log it. |
| 290 if (result != RequestQueue::UpdateRequestResult::SUCCESS) { | 290 if (result != RequestQueue::UpdateRequestResult::SUCCESS) { |
| 291 DVLOG(1) << "Failed to update request attempt details. " | 291 DVLOG(1) << "Failed to update request attempt details. " |
| 292 << static_cast<int>(result); | 292 << static_cast<int>(result); |
| 293 event_logger_.RecordUpdateRequestFailed(client_id.name_space, result); | 293 event_logger_.RecordUpdateRequestFailed(client_id.name_space, result); |
| 294 } | 294 } |
| 295 } | 295 } |
| 296 | 296 |
| 297 // Called in response to updating multiple requests in the request queue. | |
| 298 void RequestCoordinator::UpdateMultipleRequestsCallback( | 297 void RequestCoordinator::UpdateMultipleRequestsCallback( |
| 299 const RequestQueue::UpdateMultipleRequestResults& results, | 298 std::unique_ptr<UpdateRequestsResult> result) { |
| 300 std::vector<std::unique_ptr<SavePageRequest>> requests) { | 299 for (const auto& request : result->updated_items) |
| 300 NotifyChanged(request); | |
| 301 | |
| 301 bool available_user_request = false; | 302 bool available_user_request = false; |
| 302 for (const auto& request : requests) { | 303 for (const auto& request : result->updated_items) { |
|
dougarnett
2016/09/29 21:02:49
Could have just one iteration through updated_item
fgorski
2016/09/30 23:14:35
I know, but I prefer this, because it is the same
| |
| 303 NotifyChanged(*(request)); | 304 if (!available_user_request && request.user_requested() && |
| 304 if (!available_user_request && request->user_requested() && | 305 request.request_state() == SavePageRequest::RequestState::AVAILABLE) { |
| 305 request->request_state() == SavePageRequest::RequestState::AVAILABLE) { | 306 available_user_request = true; |
| 306 // TODO(dougarnett): Consider avoiding prospect of N^2 in case | |
| 307 // size of bulk requests can get large (perhaps with easier to consume | |
| 308 // callback interface). | |
| 309 for (std::pair<int64_t, RequestQueue::UpdateRequestResult> pair : | |
| 310 results) { | |
| 311 if (pair.first == request->request_id() && | |
| 312 pair.second == RequestQueue::UpdateRequestResult::SUCCESS) { | |
| 313 // We have a successfully updated, available, user request. | |
| 314 available_user_request = true; | |
| 315 } | |
| 316 } | |
| 317 } | 307 } |
| 318 } | 308 } |
| 319 | 309 |
| 320 if (available_user_request) | 310 if (available_user_request) |
| 321 StartProcessingIfConnected(); | 311 StartProcessingIfConnected(); |
| 322 } | 312 } |
| 323 | 313 |
| 324 void RequestCoordinator::HandleRemovedRequestsAndCallback( | 314 void RequestCoordinator::HandleRemovedRequestsAndCallback( |
| 325 const RemoveRequestsCallback& callback, | 315 const RemoveRequestsCallback& callback, |
| 326 BackgroundSavePageResult status, | 316 BackgroundSavePageResult status, |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 609 if (!offliner_) { | 599 if (!offliner_) { |
| 610 offliner_ = factory_->GetOffliner(policy_.get()); | 600 offliner_ = factory_->GetOffliner(policy_.get()); |
| 611 } | 601 } |
| 612 } | 602 } |
| 613 | 603 |
| 614 void RequestCoordinator::Shutdown() { | 604 void RequestCoordinator::Shutdown() { |
| 615 network_quality_estimator_ = nullptr; | 605 network_quality_estimator_ = nullptr; |
| 616 } | 606 } |
| 617 | 607 |
| 618 } // namespace offline_pages | 608 } // namespace offline_pages |
| OLD | NEW |