Chromium Code Reviews| Index: components/offline_pages/background/request_queue_store_unittest.cc |
| diff --git a/components/offline_pages/background/request_queue_store_unittest.cc b/components/offline_pages/background/request_queue_store_unittest.cc |
| index 691a52a2b59ef40d4e7a283036d8b191d0f5122a..719dada865949b702e2a2094e9fcd3edef0f049a 100644 |
| --- a/components/offline_pages/background/request_queue_store_unittest.cc |
| +++ b/components/offline_pages/background/request_queue_store_unittest.cc |
| @@ -389,6 +389,71 @@ TYPED_TEST(RequestQueueStoreTest, RemoveRequestWithSameClientId) { |
| this->ClearResults(); |
| } |
| +TYPED_TEST(RequestQueueStoreTest, PauseAndResumeRequest) { |
| + std::unique_ptr<RequestQueueStore> store(this->BuildStore()); |
| + base::Time creation_time = base::Time::Now(); |
| + |
| + // Create requests and add them to the queue. |
|
fgorski
2016/08/10 16:00:09
I don't think request 2 is added. Fix the comment
Pete Williamson
2016/08/10 21:38:01
Done.
|
| + SavePageRequest request1(kRequestId, kUrl, kClientId, creation_time, |
| + kUserRequested); |
| + SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time, |
| + kUserRequested); |
| + store->AddOrUpdateRequest( |
| + request1, base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, |
| + base::Unretained(this))); |
| + this->PumpLoop(); |
| + this->ClearResults(); |
| + |
| + // Pause a request. |
| + std::vector<int64_t> request_ids{kRequestId}; |
| + store->ChangeRequestsState( |
| + request_ids, SavePageRequest::RequestState::PAUSED, |
| + base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, |
| + base::Unretained(this))); |
| + ASSERT_EQ(LastResult::kNone, this->last_result()); |
| + this->PumpLoop(); |
| + |
| + // Verify pause succeeded |
| + ASSERT_EQ(UpdateStatus::UPDATED, this->last_update_status()); |
| + this->ClearResults(); |
| + |
| + // Get the request from the queue to check it out |
| + store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, |
| + base::Unretained(this))); |
| + this->PumpLoop(); |
| + ASSERT_EQ(LastResult::kTrue, this->last_result()); |
| + // The request should still be in the queue. |
| + ASSERT_EQ(1UL, this->last_requests().size()); |
| + // Request 1 should be paused. |
| + ASSERT_EQ(SavePageRequest::RequestState::PAUSED, |
| + this->last_requests().at(0).request_state()); |
| + this->ClearResults(); |
| + |
| + // Now resume the same request we paused. |
| + store->ChangeRequestsState( |
| + request_ids, SavePageRequest::RequestState::AVAILABLE, |
| + base::Bind(&RequestQueueStoreTestBase::AddOrUpdateDone, |
| + base::Unretained(this))); |
| + ASSERT_EQ(LastResult::kNone, this->last_result()); |
| + this->PumpLoop(); |
| + |
| + // Verify resume succeeded. |
| + ASSERT_EQ(UpdateStatus::UPDATED, this->last_update_status()); |
| + this->ClearResults(); |
| + |
| + // Get the request from the queue to check it out |
| + store->GetRequests(base::Bind(&RequestQueueStoreTestBase::GetRequestsDone, |
| + base::Unretained(this))); |
| + this->PumpLoop(); |
| + ASSERT_EQ(LastResult::kTrue, this->last_result()); |
| + // The request should still be in the queue. |
| + ASSERT_EQ(1UL, this->last_requests().size()); |
| + // Request 1 should be paused. |
| + ASSERT_EQ(SavePageRequest::RequestState::AVAILABLE, |
| + this->last_requests().at(0).request_state()); |
| + this->ClearResults(); |
| +} |
| + |
| TYPED_TEST(RequestQueueStoreTest, ResetStore) { |
| std::unique_ptr<RequestQueueStore> store(this->BuildStore()); |
| base::Time creation_time = base::Time::Now(); |