| 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 | 46 |
| 47 // Callback for adding requests. | 47 // Callback for adding requests. |
| 48 void AddRequestDone(AddRequestResult result, const SavePageRequest& request); | 48 void AddRequestDone(AddRequestResult result, const SavePageRequest& request); |
| 49 // Callback for getting requests. | 49 // Callback for getting requests. |
| 50 void GetRequestsDone(GetRequestsResult result, | 50 void GetRequestsDone(GetRequestsResult result, |
| 51 std::vector<std::unique_ptr<SavePageRequest>> requests); | 51 std::vector<std::unique_ptr<SavePageRequest>> requests); |
| 52 | 52 |
| 53 void UpdateRequestDone(UpdateRequestResult result); | 53 void UpdateRequestDone(UpdateRequestResult result); |
| 54 void UpdateRequestsDone(std::unique_ptr<UpdateRequestsResult> result); | 54 void UpdateRequestsDone(std::unique_ptr<UpdateRequestsResult> result); |
| 55 | 55 |
| 56 void ClearResults(); |
| 57 |
| 56 RequestQueue* queue() { return queue_.get(); } | 58 RequestQueue* queue() { return queue_.get(); } |
| 57 | 59 |
| 58 AddRequestResult last_add_result() const { return last_add_result_; } | 60 AddRequestResult last_add_result() const { return last_add_result_; } |
| 59 SavePageRequest* last_added_request() { | 61 SavePageRequest* last_added_request() { |
| 60 return last_added_request_.get(); | 62 return last_added_request_.get(); |
| 61 } | 63 } |
| 62 | 64 |
| 63 UpdateRequestResult last_update_result() const { return last_update_result_; } | 65 UpdateRequestResult last_update_result() const { return last_update_result_; } |
| 64 | 66 |
| 65 GetRequestsResult last_get_requests_result() const { | 67 GetRequestsResult last_get_requests_result() const { |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 | 124 |
| 123 void RequestQueueTest::UpdateRequestDone(UpdateRequestResult result) { | 125 void RequestQueueTest::UpdateRequestDone(UpdateRequestResult result) { |
| 124 last_update_result_ = result; | 126 last_update_result_ = result; |
| 125 } | 127 } |
| 126 | 128 |
| 127 void RequestQueueTest::UpdateRequestsDone( | 129 void RequestQueueTest::UpdateRequestsDone( |
| 128 std::unique_ptr<UpdateRequestsResult> result) { | 130 std::unique_ptr<UpdateRequestsResult> result) { |
| 129 update_requests_result_ = std::move(result); | 131 update_requests_result_ = std::move(result); |
| 130 } | 132 } |
| 131 | 133 |
| 134 void RequestQueueTest::ClearResults() { |
| 135 last_add_result_ = AddRequestResult::STORE_FAILURE; |
| 136 last_update_result_ = UpdateRequestResult::STORE_FAILURE; |
| 137 last_get_requests_result_ = GetRequestsResult::STORE_FAILURE; |
| 138 last_added_request_.reset(nullptr); |
| 139 update_requests_result_.reset(nullptr); |
| 140 last_requests_.clear(); |
| 141 } |
| 142 |
| 132 TEST_F(RequestQueueTest, GetRequestsEmpty) { | 143 TEST_F(RequestQueueTest, GetRequestsEmpty) { |
| 133 queue()->GetRequests( | 144 queue()->GetRequests( |
| 134 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); | 145 base::Bind(&RequestQueueTest::GetRequestsDone, base::Unretained(this))); |
| 135 PumpLoop(); | 146 PumpLoop(); |
| 136 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); | 147 ASSERT_EQ(GetRequestsResult::SUCCESS, last_get_requests_result()); |
| 137 ASSERT_EQ(0ul, last_requests().size()); | 148 ASSERT_EQ(0ul, last_requests().size()); |
| 138 } | 149 } |
| 139 | 150 |
| 140 TEST_F(RequestQueueTest, AddRequest) { | 151 TEST_F(RequestQueueTest, AddRequest) { |
| 141 base::Time creation_time = base::Time::Now(); | 152 base::Time creation_time = base::Time::Now(); |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 433 base::Bind(&RequestQueueTest::UpdateRequestsDone, | 444 base::Bind(&RequestQueueTest::UpdateRequestsDone, |
| 434 base::Unretained(this))); | 445 base::Unretained(this))); |
| 435 PumpLoop(); | 446 PumpLoop(); |
| 436 ASSERT_EQ(1ul, update_requests_result()->item_statuses.size()); | 447 ASSERT_EQ(1ul, update_requests_result()->item_statuses.size()); |
| 437 EXPECT_EQ(kRequestId, update_requests_result()->item_statuses.at(0).first); | 448 EXPECT_EQ(kRequestId, update_requests_result()->item_statuses.at(0).first); |
| 438 EXPECT_EQ(ItemActionStatus::NOT_FOUND, | 449 EXPECT_EQ(ItemActionStatus::NOT_FOUND, |
| 439 update_requests_result()->item_statuses.at(0).second); | 450 update_requests_result()->item_statuses.at(0).second); |
| 440 EXPECT_EQ(0ul, update_requests_result()->updated_items.size()); | 451 EXPECT_EQ(0ul, update_requests_result()->updated_items.size()); |
| 441 } | 452 } |
| 442 | 453 |
| 454 TEST_F(RequestQueueTest, MarkAttemptAborted) { |
| 455 base::Time creation_time = base::Time::Now(); |
| 456 SavePageRequest request(kRequestId, kUrl, kClientId, creation_time, |
| 457 kUserRequested); |
| 458 queue()->AddRequest(request, base::Bind(&RequestQueueTest::AddRequestDone, |
| 459 base::Unretained(this))); |
| 460 PumpLoop(); |
| 461 |
| 462 // Start request. |
| 463 queue()->MarkAttemptStarted(kRequestId, |
| 464 base::Bind(&RequestQueueTest::UpdateRequestsDone, |
| 465 base::Unretained(this))); |
| 466 PumpLoop(); |
| 467 ClearResults(); |
| 468 |
| 469 queue()->MarkAttemptAborted(kRequestId, |
| 470 base::Bind(&RequestQueueTest::UpdateRequestsDone, |
| 471 base::Unretained(this))); |
| 472 PumpLoop(); |
| 473 |
| 474 ASSERT_TRUE(update_requests_result()); |
| 475 EXPECT_EQ(1UL, update_requests_result()->item_statuses.size()); |
| 476 EXPECT_EQ(kRequestId, update_requests_result()->item_statuses.at(0).first); |
| 477 EXPECT_EQ(ItemActionStatus::SUCCESS, |
| 478 update_requests_result()->item_statuses.at(0).second); |
| 479 EXPECT_EQ(1UL, update_requests_result()->updated_items.size()); |
| 480 EXPECT_EQ(SavePageRequest::RequestState::AVAILABLE, |
| 481 update_requests_result()->updated_items.at(0).request_state()); |
| 482 } |
| 483 |
| 484 TEST_F(RequestQueueTest, MarkAttemptAbortedRequestNotPresent) { |
| 485 // First add a request. Retry count will be set to 0. |
| 486 base::Time creation_time = base::Time::Now(); |
| 487 // This request is never put into the queue. |
| 488 SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time, |
| 489 kUserRequested); |
| 490 |
| 491 queue()->MarkAttemptAborted(kRequestId, |
| 492 base::Bind(&RequestQueueTest::UpdateRequestsDone, |
| 493 base::Unretained(this))); |
| 494 PumpLoop(); |
| 495 ASSERT_EQ(1ul, update_requests_result()->item_statuses.size()); |
| 496 EXPECT_EQ(kRequestId, update_requests_result()->item_statuses.at(0).first); |
| 497 EXPECT_EQ(ItemActionStatus::NOT_FOUND, |
| 498 update_requests_result()->item_statuses.at(0).second); |
| 499 EXPECT_EQ(0ul, update_requests_result()->updated_items.size()); |
| 500 } |
| 501 |
| 443 } // namespace offline_pages | 502 } // namespace offline_pages |
| OLD | NEW |