Chromium Code Reviews| Index: components/offline_pages/background/request_coordinator_unittest.cc |
| diff --git a/components/offline_pages/background/request_coordinator_unittest.cc b/components/offline_pages/background/request_coordinator_unittest.cc |
| index ca13ae5a8da5ee00e1dd58fb1b74b8943e341a4a..d677f827da2772161b99bdfbc29843408187e7bf 100644 |
| --- a/components/offline_pages/background/request_coordinator_unittest.cc |
| +++ b/components/offline_pages/background/request_coordinator_unittest.cc |
| @@ -30,7 +30,12 @@ namespace offline_pages { |
| namespace { |
| // put test constants here |
| const GURL kUrl("http://universe.com/everything"); |
| -const ClientId kClientId("bookmark", "42"); |
| +const GURL kUrl2("http://universe.com/nothing"); |
| +const std::string kClientNamespace("bookmark"); |
| +const std::string kId1("42"); |
| +const std::string kId2("life*universe+everything"); |
| +const ClientId kClientId(kClientNamespace, kId1); |
| +const ClientId kClientId2(kClientNamespace, kId2); |
| const int kRequestId(1); |
| const long kTestTimeoutSeconds = 1; |
| const long kTestTimeBudgetSeconds = 200; |
| @@ -138,7 +143,7 @@ class RequestCoordinatorTest |
| return coordinator_->is_busy(); |
| } |
| - // Empty callback function |
| + // Empty callback function. |
| void EmptyCallbackFunction(bool result) { |
| } |
| @@ -147,7 +152,7 @@ class RequestCoordinatorTest |
| waiter_.Signal(); |
| } |
| - // Callback for Add requests |
| + // Callback for Add requests. |
| void AddRequestDone(RequestQueue::AddRequestResult result, |
| const SavePageRequest& request); |
| @@ -155,6 +160,9 @@ class RequestCoordinatorTest |
| void GetRequestsDone(RequestQueue::GetRequestsResult result, |
| const std::vector<SavePageRequest>& requests); |
| + // Callback for getting request statuses. |
| + void GetQueuedRequestsDone(const std::vector<ClientId>& statuses); |
|
dougarnett
2016/08/03 04:27:19
statuses => client_ids
Pete Williamson
2016/08/03 20:13:45
Done.
|
| + |
| void SendOfflinerDoneCallback(const SavePageRequest& request, |
| Offliner::RequestStatus status); |
| @@ -166,6 +174,10 @@ class RequestCoordinatorTest |
| return last_requests_; |
| } |
| + const std::vector<ClientId>& last_client_ids() const { |
| + return last_client_ids_; |
| + } |
| + |
| void EnableOfflinerCallback(bool enable) { |
| offliner_->enable_callback(enable); |
| } |
| @@ -195,6 +207,7 @@ class RequestCoordinatorTest |
| private: |
| RequestQueue::GetRequestsResult last_get_requests_result_; |
| std::vector<SavePageRequest> last_requests_; |
| + std::vector<ClientId> last_client_ids_; |
| scoped_refptr<base::TestMockTimeTaskRunner> task_runner_; |
| base::ThreadTaskRunnerHandle task_runner_handle_; |
| std::unique_ptr<RequestCoordinator> coordinator_; |
| @@ -238,6 +251,12 @@ void RequestCoordinatorTest::GetRequestsDone( |
| last_requests_ = requests; |
| } |
| +void RequestCoordinatorTest::GetQueuedRequestsDone( |
| + const std::vector<ClientId>& client_ids) { |
| + last_client_ids_ = client_ids; |
| + waiter_.Signal(); |
| +} |
| + |
| void RequestCoordinatorTest::AddRequestDone( |
| RequestQueue::AddRequestResult result, |
| const SavePageRequest& request) {} |
| @@ -516,9 +535,8 @@ TEST_F(RequestCoordinatorTest, PrerendererTimeout) { |
| last_offlining_status()); |
| } |
| - |
| TEST_F(RequestCoordinatorTest, TimeBudgetExceeded) { |
| - // Build a request to use with the pre-renderer, and put it on the queue. |
| + // Build two requests to use with the pre-renderer, and put it on the queue. |
| offline_pages::SavePageRequest request1( |
| kRequestId, kUrl, kClientId, base::Time::Now(), kUserRequested); |
| offline_pages::SavePageRequest request2( |
| @@ -528,8 +546,8 @@ TEST_F(RequestCoordinatorTest, TimeBudgetExceeded) { |
| request1, |
| base::Bind(&RequestCoordinatorTest::AddRequestDone, |
| base::Unretained(this))); |
| - coordinator()->queue()->AddRequest( |
| - request1, |
| + coordinator()->queue()->AddRequest( |
| + request1, // TODO(petewil): This is a bug, should be request2. |
| base::Bind(&RequestCoordinatorTest::AddRequestDone, |
| base::Unretained(this))); |
| PumpLoop(); |
| @@ -563,4 +581,35 @@ TEST_F(RequestCoordinatorTest, TimeBudgetExceeded) { |
| EXPECT_EQ(1UL, last_requests().size()); |
| } |
| +TEST_F(RequestCoordinatorTest, GetQueuedRequests) { |
| + // Add two requests to the queue. |
| + offline_pages::SavePageRequest request1(kRequestId, kUrl, kClientId, |
| + base::Time::Now(), kUserRequested); |
| + offline_pages::SavePageRequest request2(kRequestId + 1, kUrl2, kClientId2, |
| + base::Time::Now(), kUserRequested); |
| + coordinator()->queue()->AddRequest( |
| + request1, base::Bind(&RequestCoordinatorTest::AddRequestDone, |
| + base::Unretained(this))); |
| + coordinator()->queue()->AddRequest( |
| + request2, base::Bind(&RequestCoordinatorTest::AddRequestDone, |
| + base::Unretained(this))); |
| + PumpLoop(); |
| + |
| + // Start the async status fetching. |
| + coordinator()->GetQueuedRequests( |
| + kClientNamespace, |
| + base::Bind(&RequestCoordinatorTest::GetQueuedRequestsDone, |
| + base::Unretained(this))); |
| + PumpLoop(); |
| + |
| + // Wait for async get to finish. |
| + WaitForCallback(); |
| + PumpLoop(); |
| + |
| + // Check that the statuses found in the callback match what we expect. |
| + EXPECT_EQ(2UL, last_client_ids().size()); |
| + EXPECT_EQ(kId1, last_client_ids().at(0).id); |
| + EXPECT_EQ(kId2, last_client_ids().at(1).id); |
| +} |
| + |
| } // namespace offline_pages |