| 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 <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/test/test_simple_task_runner.h" | 10 #include "base/test/test_simple_task_runner.h" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 // Callback for adding requests. | 46 // Callback for adding requests. |
| 47 void AddRequestDone(AddRequestResult result, const SavePageRequest& request); | 47 void AddRequestDone(AddRequestResult result, const SavePageRequest& request); |
| 48 // Callback for getting requests. | 48 // Callback for getting requests. |
| 49 void GetRequestsDone(GetRequestsResult result, | 49 void GetRequestsDone(GetRequestsResult result, |
| 50 std::vector<std::unique_ptr<SavePageRequest>> requests); | 50 std::vector<std::unique_ptr<SavePageRequest>> requests); |
| 51 // Callback for removing request. | 51 // Callback for removing request. |
| 52 void RemoveRequestsDone( | 52 void RemoveRequestsDone( |
| 53 const RequestQueue::UpdateMultipleRequestResults& results, | 53 const RequestQueue::UpdateMultipleRequestResults& results, |
| 54 std::vector<std::unique_ptr<SavePageRequest>> requests); | 54 std::vector<std::unique_ptr<SavePageRequest>> requests); |
| 55 | 55 |
| 56 void UpdateMultipleRequestsDone( | |
| 57 const RequestQueue::UpdateMultipleRequestResults& results, | |
| 58 std::vector<std::unique_ptr<SavePageRequest>> requests); | |
| 59 | |
| 60 void UpdateRequestDone(UpdateRequestResult result); | 56 void UpdateRequestDone(UpdateRequestResult result); |
| 57 void UpdateRequestsDone(std::unique_ptr<UpdateRequestsResult> result); |
| 61 | 58 |
| 62 RequestQueue* queue() { return queue_.get(); } | 59 RequestQueue* queue() { return queue_.get(); } |
| 63 | 60 |
| 64 AddRequestResult last_add_result() const { return last_add_result_; } | 61 AddRequestResult last_add_result() const { return last_add_result_; } |
| 65 SavePageRequest* last_added_request() { | 62 SavePageRequest* last_added_request() { |
| 66 return last_added_request_.get(); | 63 return last_added_request_.get(); |
| 67 } | 64 } |
| 68 | 65 |
| 69 const RequestQueue::UpdateMultipleRequestResults& last_remove_results() | 66 const RequestQueue::UpdateMultipleRequestResults& last_remove_results() |
| 70 const { | 67 const { |
| 71 return last_remove_results_; | 68 return last_remove_results_; |
| 72 } | 69 } |
| 73 | 70 |
| 74 const RequestQueue::UpdateMultipleRequestResults& | 71 const RequestQueue::UpdateMultipleRequestResults& |
| 75 last_multiple_update_results() const { | 72 last_multiple_update_results() const { |
| 76 return last_multiple_update_results_; | 73 return last_multiple_update_results_; |
| 77 } | 74 } |
| 78 | 75 |
| 79 UpdateRequestResult last_update_result() const { return last_update_result_; } | 76 UpdateRequestResult last_update_result() const { return last_update_result_; } |
| 80 | 77 |
| 81 GetRequestsResult last_get_requests_result() const { | 78 GetRequestsResult last_get_requests_result() const { |
| 82 return last_get_requests_result_; | 79 return last_get_requests_result_; |
| 83 } | 80 } |
| 81 |
| 84 const std::vector<std::unique_ptr<SavePageRequest>>& last_requests() const { | 82 const std::vector<std::unique_ptr<SavePageRequest>>& last_requests() const { |
| 85 return last_requests_; | 83 return last_requests_; |
| 86 } | 84 } |
| 87 | 85 |
| 86 UpdateRequestsResult* update_requests_result() const { |
| 87 return update_requests_result_.get(); |
| 88 } |
| 89 |
| 88 private: | 90 private: |
| 89 AddRequestResult last_add_result_; | 91 AddRequestResult last_add_result_; |
| 90 std::unique_ptr<SavePageRequest> last_added_request_; | 92 std::unique_ptr<SavePageRequest> last_added_request_; |
| 93 std::unique_ptr<UpdateRequestsResult> update_requests_result_; |
| 91 RequestQueue::UpdateMultipleRequestResults last_remove_results_; | 94 RequestQueue::UpdateMultipleRequestResults last_remove_results_; |
| 92 RequestQueue::UpdateMultipleRequestResults last_multiple_update_results_; | 95 RequestQueue::UpdateMultipleRequestResults last_multiple_update_results_; |
| 93 UpdateRequestResult last_update_result_; | 96 UpdateRequestResult last_update_result_; |
| 94 | 97 |
| 95 GetRequestsResult last_get_requests_result_; | 98 GetRequestsResult last_get_requests_result_; |
| 96 std::vector<std::unique_ptr<SavePageRequest>> last_requests_; | 99 std::vector<std::unique_ptr<SavePageRequest>> last_requests_; |
| 97 | 100 |
| 98 std::unique_ptr<RequestQueue> queue_; | 101 std::unique_ptr<RequestQueue> queue_; |
| 99 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; | 102 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; |
| 100 base::ThreadTaskRunnerHandle task_runner_handle_; | 103 base::ThreadTaskRunnerHandle task_runner_handle_; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 last_requests_ = std::move(requests); | 135 last_requests_ = std::move(requests); |
| 133 } | 136 } |
| 134 | 137 |
| 135 void RequestQueueTest::RemoveRequestsDone( | 138 void RequestQueueTest::RemoveRequestsDone( |
| 136 const RequestQueue::UpdateMultipleRequestResults& results, | 139 const RequestQueue::UpdateMultipleRequestResults& results, |
| 137 std::vector<std::unique_ptr<SavePageRequest>> requests) { | 140 std::vector<std::unique_ptr<SavePageRequest>> requests) { |
| 138 last_remove_results_ = results; | 141 last_remove_results_ = results; |
| 139 last_requests_ = std::move(requests); | 142 last_requests_ = std::move(requests); |
| 140 } | 143 } |
| 141 | 144 |
| 142 void RequestQueueTest::UpdateMultipleRequestsDone( | |
| 143 const RequestQueue::UpdateMultipleRequestResults& results, | |
| 144 std::vector<std::unique_ptr<SavePageRequest>> requests) { | |
| 145 last_multiple_update_results_ = results; | |
| 146 last_requests_ = std::move(requests); | |
| 147 } | |
| 148 | |
| 149 void RequestQueueTest::UpdateRequestDone(UpdateRequestResult result) { | 145 void RequestQueueTest::UpdateRequestDone(UpdateRequestResult result) { |
| 150 last_update_result_ = result; | 146 last_update_result_ = result; |
| 151 } | 147 } |
| 152 | 148 |
| 149 void RequestQueueTest::UpdateRequestsDone( |
| 150 std::unique_ptr<UpdateRequestsResult> result) { |
| 151 update_requests_result_ = std::move(result); |
| 152 } |
| 153 |
| 153 TEST_F(RequestQueueTest, GetRequestsEmpty) { | 154 TEST_F(RequestQueueTest, GetRequestsEmpty) { |
| 154 queue()->GetRequests( | 155 queue()->GetRequests( |
| 155 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); | 156 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); |
| 156 PumpLoop(); | 157 PumpLoop(); |
| 157 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); | 158 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); |
| 158 ASSERT_EQ(0ul, last_requests().size()); | 159 ASSERT_EQ(0ul, last_requests().size()); |
| 159 } | 160 } |
| 160 | 161 |
| 161 TEST_F(RequestQueueTest, AddRequest) { | 162 TEST_F(RequestQueueTest, AddRequest) { |
| 162 base::Time creation_time = base::Time::Now(); | 163 base::Time creation_time = base::Time::Now(); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 queue()->GetRequests( | 252 queue()->GetRequests( |
| 252 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); | 253 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); |
| 253 PumpLoop(); | 254 PumpLoop(); |
| 254 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); | 255 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); |
| 255 ASSERT_EQ(1ul, last_requests().size()); | 256 ASSERT_EQ(1ul, last_requests().size()); |
| 256 | 257 |
| 257 std::vector<int64_t> request_ids; | 258 std::vector<int64_t> request_ids; |
| 258 request_ids.push_back(kRequestId); | 259 request_ids.push_back(kRequestId); |
| 259 | 260 |
| 260 // Pause the request. | 261 // Pause the request. |
| 261 queue()->ChangeRequestsState( | 262 queue()->ChangeRequestsState(request_ids, |
| 262 request_ids, SavePageRequest::RequestState::PAUSED, | 263 SavePageRequest::RequestState::PAUSED, |
| 263 base::Bind(&RequestQueueTest::UpdateMultipleRequestsDone, | 264 base::Bind(&RequestQueueTest::UpdateRequestsDone, |
| 264 base::Unretained(this))); | 265 base::Unretained(this))); |
| 265 PumpLoop(); | 266 PumpLoop(); |
| 266 ASSERT_EQ(1ul, last_multiple_update_results().size()); | 267 ASSERT_EQ(1ul, update_requests_result()->item_statuses.size()); |
| 267 ASSERT_EQ(UpdateRequestResult::SUCCESS, | 268 ASSERT_EQ(kRequestId, update_requests_result()->item_statuses.at(0).first); |
| 268 last_multiple_update_results().at(0).second); | 269 ASSERT_EQ(ItemActionStatus::SUCCESS, |
| 270 update_requests_result()->item_statuses.at(0).second); |
| 271 ASSERT_EQ(1ul, update_requests_result()->updated_items.size()); |
| 272 ASSERT_EQ(SavePageRequest::RequestState::PAUSED, |
| 273 update_requests_result()->updated_items.at(0).request_state()); |
| 269 | 274 |
| 270 queue()->GetRequests( | 275 queue()->GetRequests( |
| 271 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); | 276 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); |
| 272 PumpLoop(); | 277 PumpLoop(); |
| 273 | 278 |
| 274 // Verify the request is paused. | 279 // Verify the request is paused. |
| 275 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); | 280 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); |
| 276 ASSERT_EQ(1ul, last_requests().size()); | 281 ASSERT_EQ(1ul, last_requests().size()); |
| 277 ASSERT_EQ(SavePageRequest::RequestState::PAUSED, | 282 ASSERT_EQ(SavePageRequest::RequestState::PAUSED, |
| 278 last_requests().at(0)->request_state()); | 283 last_requests().at(0)->request_state()); |
| 279 | 284 |
| 280 // Resume the request. | 285 // Resume the request. |
| 281 queue()->ChangeRequestsState( | 286 queue()->ChangeRequestsState(request_ids, |
| 282 request_ids, SavePageRequest::RequestState::AVAILABLE, | 287 SavePageRequest::RequestState::AVAILABLE, |
| 283 base::Bind(&RequestQueueTest::UpdateMultipleRequestsDone, | 288 base::Bind(&RequestQueueTest::UpdateRequestsDone, |
| 284 base::Unretained(this))); | 289 base::Unretained(this))); |
| 285 PumpLoop(); | 290 PumpLoop(); |
| 286 ASSERT_EQ(1ul, last_multiple_update_results().size()); | 291 ASSERT_EQ(1ul, update_requests_result()->item_statuses.size()); |
| 287 ASSERT_EQ(UpdateRequestResult::SUCCESS, | 292 ASSERT_EQ(kRequestId, update_requests_result()->item_statuses.at(0).first); |
| 288 last_multiple_update_results().at(0).second); | 293 ASSERT_EQ(ItemActionStatus::SUCCESS, |
| 294 update_requests_result()->item_statuses.at(0).second); |
| 295 ASSERT_EQ(1ul, update_requests_result()->updated_items.size()); |
| 296 ASSERT_EQ(SavePageRequest::RequestState::AVAILABLE, |
| 297 update_requests_result()->updated_items.at(0).request_state()); |
| 289 | 298 |
| 290 queue()->GetRequests( | 299 queue()->GetRequests( |
| 291 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); | 300 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); |
| 292 PumpLoop(); | 301 PumpLoop(); |
| 293 | 302 |
| 294 // Verify the request is no longer paused. | 303 // Verify the request is no longer paused. |
| 295 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); | 304 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); |
| 296 ASSERT_EQ(1ul, last_requests().size()); | 305 ASSERT_EQ(1ul, last_requests().size()); |
| 297 ASSERT_EQ(SavePageRequest::RequestState::AVAILABLE, | 306 ASSERT_EQ(SavePageRequest::RequestState::AVAILABLE, |
| 298 last_requests().at(0)->request_state()); | 307 last_requests().at(0)->request_state()); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 378 | 387 |
| 379 // Try to update request1 when only request2 is in the queue. | 388 // Try to update request1 when only request2 is in the queue. |
| 380 queue()->UpdateRequest( | 389 queue()->UpdateRequest( |
| 381 request1, | 390 request1, |
| 382 base::Bind(&RequestQueueTest::UpdateRequestDone, base::Unretained(this))); | 391 base::Bind(&RequestQueueTest::UpdateRequestDone, base::Unretained(this))); |
| 383 PumpLoop(); | 392 PumpLoop(); |
| 384 ASSERT_EQ(UpdateRequestResult::REQUEST_DOES_NOT_EXIST, last_update_result()); | 393 ASSERT_EQ(UpdateRequestResult::REQUEST_DOES_NOT_EXIST, last_update_result()); |
| 385 } | 394 } |
| 386 | 395 |
| 387 } // namespace offline_pages | 396 } // namespace offline_pages |
| OLD | NEW |