| 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_queue.h" | 5 #include "components/offline_pages/background/request_queue.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/location.h" | 8 #include "base/location.h" |
| 9 #include "base/threading/thread_task_runner_handle.h" | 9 #include "base/threading/thread_task_runner_handle.h" |
| 10 #include "components/offline_pages/background/request_queue_store.h" | 10 #include "components/offline_pages/background/request_queue_store.h" |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 result = RequestQueue::AddRequestResult::STORE_FAILURE; | 43 result = RequestQueue::AddRequestResult::STORE_FAILURE; |
| 44 break; | 44 break; |
| 45 case ItemActionStatus::NOT_FOUND: | 45 case ItemActionStatus::NOT_FOUND: |
| 46 default: | 46 default: |
| 47 NOTREACHED(); | 47 NOTREACHED(); |
| 48 return; | 48 return; |
| 49 } | 49 } |
| 50 callback.Run(result, request); | 50 callback.Run(result, request); |
| 51 } | 51 } |
| 52 | 52 |
| 53 RequestQueue::UpdateRequestResult ToUpdateRequestResult( |
| 54 ItemActionStatus status) { |
| 55 switch (status) { |
| 56 case ItemActionStatus::SUCCESS: |
| 57 return RequestQueue::UpdateRequestResult::SUCCESS; |
| 58 case ItemActionStatus::STORE_ERROR: |
| 59 return RequestQueue::UpdateRequestResult::STORE_FAILURE; |
| 60 case ItemActionStatus::NOT_FOUND: |
| 61 return RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST; |
| 62 case ItemActionStatus::ALREADY_EXISTS: |
| 63 default: |
| 64 NOTREACHED(); |
| 65 return RequestQueue::UpdateRequestResult::STORE_FAILURE; |
| 66 } |
| 67 } |
| 68 |
| 53 // Completes the update request call. | 69 // Completes the update request call. |
| 54 // TODO(fgorski): For specific cases, check that appropriate items were updated. | 70 // TODO(fgorski): For specific cases, check that appropriate items were updated. |
| 55 void UpdateRequestsDone(const RequestQueue::UpdateRequestCallback& callback, | 71 void UpdateRequestsDone(const RequestQueue::UpdateRequestCallback& callback, |
| 56 std::unique_ptr<UpdateRequestsResult> store_result) { | 72 std::unique_ptr<UpdateRequestsResult> store_result) { |
| 57 RequestQueue::UpdateRequestResult result; | 73 RequestQueue::UpdateRequestResult result; |
| 58 if (store_result->store_state != StoreState::LOADED) { | 74 if (store_result->store_state != StoreState::LOADED) { |
| 59 result = RequestQueue::UpdateRequestResult::STORE_FAILURE; | 75 result = RequestQueue::UpdateRequestResult::STORE_FAILURE; |
| 60 } else if (store_result->item_statuses.size() == 0) { | 76 } else if (store_result->item_statuses.size() == 0) { |
| 61 result = RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST; | 77 result = RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST; |
| 62 } else { | 78 } else { |
| 63 ItemActionStatus status = store_result->item_statuses.begin()->second; | 79 ItemActionStatus status = store_result->item_statuses.begin()->second; |
| 64 if (status == ItemActionStatus::STORE_ERROR) | 80 if (status == ItemActionStatus::STORE_ERROR) |
| 65 result = RequestQueue::UpdateRequestResult::STORE_FAILURE; | 81 result = RequestQueue::UpdateRequestResult::STORE_FAILURE; |
| 66 else if (status == ItemActionStatus::NOT_FOUND) | 82 else if (status == ItemActionStatus::NOT_FOUND) |
| 67 result = RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST; | 83 result = RequestQueue::UpdateRequestResult::REQUEST_DOES_NOT_EXIST; |
| 68 else | 84 else |
| 69 result = RequestQueue::UpdateRequestResult::SUCCESS; | 85 result = RequestQueue::UpdateRequestResult::SUCCESS; |
| 70 } | 86 } |
| 71 | 87 |
| 72 callback.Run(result); | 88 callback.Run(result); |
| 73 } | 89 } |
| 74 | 90 |
| 75 // Handles updating multiple requests at the same time. | 91 // Handles updating multiple requests at the same time. |
| 76 void UpdateMultipleRequestsDone( | 92 void UpdateMultipleRequestsDone( |
| 77 const RequestQueue::UpdateMultipleRequestsCallback& callback, | 93 const RequestQueue::UpdateMultipleRequestsCallback& callback, |
| 78 const RequestQueue::UpdateMultipleRequestResults& results, | 94 std::unique_ptr<UpdateRequestsResult> result) { |
| 79 std::vector<std::unique_ptr<SavePageRequest>> requests) { | 95 RequestQueue::UpdateMultipleRequestResults results; |
| 96 std::vector<std::unique_ptr<SavePageRequest>> requests; |
| 97 for (const auto& item_status : result->item_statuses) { |
| 98 results.push_back(std::make_pair( |
| 99 item_status.first, ToUpdateRequestResult(item_status.second))); |
| 100 } |
| 101 for (const auto& item : result->updated_items) { |
| 102 std::unique_ptr<SavePageRequest> request(new SavePageRequest(item)); |
| 103 requests.push_back(std::move(request)); |
| 104 } |
| 105 |
| 80 callback.Run(results, std::move(requests)); | 106 callback.Run(results, std::move(requests)); |
| 81 } | 107 } |
| 82 | 108 |
| 83 // Completes the remove request call. | 109 // Completes the remove request call. |
| 84 void RemoveRequestsDone( | 110 void RemoveRequestsDone( |
| 85 const RequestQueue::RemoveRequestsCallback& callback, | 111 const RequestQueue::RemoveRequestsCallback& callback, |
| 86 const RequestQueue::UpdateMultipleRequestResults& results, | 112 const RequestQueue::UpdateMultipleRequestResults& results, |
| 87 std::vector<std::unique_ptr<SavePageRequest>> requests) { | 113 std::vector<std::unique_ptr<SavePageRequest>> requests) { |
| 88 callback.Run(results, std::move(requests)); | 114 callback.Run(results, std::move(requests)); |
| 89 } | 115 } |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 const std::vector<int64_t>& request_ids, | 192 const std::vector<int64_t>& request_ids, |
| 167 const SavePageRequest::RequestState new_state, | 193 const SavePageRequest::RequestState new_state, |
| 168 const UpdateMultipleRequestsCallback& callback) { | 194 const UpdateMultipleRequestsCallback& callback) { |
| 169 store_->ChangeRequestsState(request_ids, new_state, | 195 store_->ChangeRequestsState(request_ids, new_state, |
| 170 base::Bind(UpdateMultipleRequestsDone, callback)); | 196 base::Bind(UpdateMultipleRequestsDone, callback)); |
| 171 } | 197 } |
| 172 | 198 |
| 173 void RequestQueue::PurgeRequests(const PurgeRequestsCallback& callback) {} | 199 void RequestQueue::PurgeRequests(const PurgeRequestsCallback& callback) {} |
| 174 | 200 |
| 175 } // namespace offline_pages | 201 } // namespace offline_pages |
| OLD | NEW |