| 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_coordinator.h" | 5 #include "components/offline_pages/background/request_coordinator.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 | 155 |
| 156 // Callback for Add requests. | 156 // Callback for Add requests. |
| 157 void AddRequestDone(RequestQueue::AddRequestResult result, | 157 void AddRequestDone(RequestQueue::AddRequestResult result, |
| 158 const SavePageRequest& request); | 158 const SavePageRequest& request); |
| 159 | 159 |
| 160 // Callback for getting requests. | 160 // Callback for getting requests. |
| 161 void GetRequestsDone(RequestQueue::GetRequestsResult result, | 161 void GetRequestsDone(RequestQueue::GetRequestsResult result, |
| 162 const std::vector<SavePageRequest>& requests); | 162 const std::vector<SavePageRequest>& requests); |
| 163 | 163 |
| 164 // Callback for getting request statuses. | 164 // Callback for getting request statuses. |
| 165 void GetQueuedRequestsDone(const std::vector<ClientId>& client_ids); | 165 void GetQueuedRequestsDone(const std::vector<SavePageRequest>& requests); |
| 166 | 166 |
| 167 void SendOfflinerDoneCallback(const SavePageRequest& request, | 167 void SendOfflinerDoneCallback(const SavePageRequest& request, |
| 168 Offliner::RequestStatus status); | 168 Offliner::RequestStatus status); |
| 169 | 169 |
| 170 RequestQueue::GetRequestsResult last_get_requests_result() const { | 170 RequestQueue::GetRequestsResult last_get_requests_result() const { |
| 171 return last_get_requests_result_; | 171 return last_get_requests_result_; |
| 172 } | 172 } |
| 173 | 173 |
| 174 const std::vector<SavePageRequest>& last_requests() const { | 174 const std::vector<SavePageRequest>& last_requests() const { |
| 175 return last_requests_; | 175 return last_requests_; |
| 176 } | 176 } |
| 177 | 177 |
| 178 const std::vector<ClientId>& last_client_ids() const { | |
| 179 return last_client_ids_; | |
| 180 } | |
| 181 | |
| 182 void EnableOfflinerCallback(bool enable) { | 178 void EnableOfflinerCallback(bool enable) { |
| 183 offliner_->enable_callback(enable); | 179 offliner_->enable_callback(enable); |
| 184 } | 180 } |
| 185 | 181 |
| 186 void SetOfflinerTimeoutForTest(const base::TimeDelta& timeout) { | 182 void SetOfflinerTimeoutForTest(const base::TimeDelta& timeout) { |
| 187 coordinator_->SetOfflinerTimeoutForTest(timeout); | 183 coordinator_->SetOfflinerTimeoutForTest(timeout); |
| 188 } | 184 } |
| 189 | 185 |
| 190 void SetDeviceConditionsForTest(DeviceConditions device_conditions) { | 186 void SetDeviceConditionsForTest(DeviceConditions device_conditions) { |
| 191 coordinator_->SetDeviceConditionsForTest(device_conditions); | 187 coordinator_->SetDeviceConditionsForTest(device_conditions); |
| 192 } | 188 } |
| 193 | 189 |
| 194 void WaitForCallback() { | 190 void WaitForCallback() { |
| 195 waiter_.Wait(); | 191 waiter_.Wait(); |
| 196 } | 192 } |
| 197 | 193 |
| 198 void AdvanceClockBy(base::TimeDelta delta) { | 194 void AdvanceClockBy(base::TimeDelta delta) { |
| 199 task_runner_->FastForwardBy(delta); | 195 task_runner_->FastForwardBy(delta); |
| 200 } | 196 } |
| 201 | 197 |
| 202 Offliner::RequestStatus last_offlining_status() const { | 198 Offliner::RequestStatus last_offlining_status() const { |
| 203 return coordinator_->last_offlining_status_; | 199 return coordinator_->last_offlining_status_; |
| 204 } | 200 } |
| 205 | 201 |
| 206 bool OfflinerWasCanceled() const { return offliner_->cancel_called(); } | 202 bool OfflinerWasCanceled() const { return offliner_->cancel_called(); } |
| 207 | 203 |
| 208 private: | 204 private: |
| 209 RequestQueue::GetRequestsResult last_get_requests_result_; | 205 RequestQueue::GetRequestsResult last_get_requests_result_; |
| 210 std::vector<SavePageRequest> last_requests_; | 206 std::vector<SavePageRequest> last_requests_; |
| 211 std::vector<ClientId> last_client_ids_; | |
| 212 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_; | 207 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_; |
| 213 base::ThreadTaskRunnerHandle task_runner_handle_; | 208 base::ThreadTaskRunnerHandle task_runner_handle_; |
| 214 std::unique_ptr<RequestCoordinator> coordinator_; | 209 std::unique_ptr<RequestCoordinator> coordinator_; |
| 215 OfflinerStub* offliner_; | 210 OfflinerStub* offliner_; |
| 216 base::WaitableEvent waiter_; | 211 base::WaitableEvent waiter_; |
| 217 }; | 212 }; |
| 218 | 213 |
| 219 RequestCoordinatorTest::RequestCoordinatorTest() | 214 RequestCoordinatorTest::RequestCoordinatorTest() |
| 220 : last_get_requests_result_(RequestQueue::GetRequestsResult::STORE_FAILURE), | 215 : last_get_requests_result_(RequestQueue::GetRequestsResult::STORE_FAILURE), |
| 221 task_runner_(new base::TestMockTimeTaskRunner), | 216 task_runner_(new base::TestMockTimeTaskRunner), |
| (...skipping 24 matching lines...) Expand all Loading... |
| 246 } | 241 } |
| 247 | 242 |
| 248 void RequestCoordinatorTest::GetRequestsDone( | 243 void RequestCoordinatorTest::GetRequestsDone( |
| 249 RequestQueue::GetRequestsResult result, | 244 RequestQueue::GetRequestsResult result, |
| 250 const std::vector<SavePageRequest>& requests) { | 245 const std::vector<SavePageRequest>& requests) { |
| 251 last_get_requests_result_ = result; | 246 last_get_requests_result_ = result; |
| 252 last_requests_ = requests; | 247 last_requests_ = requests; |
| 253 } | 248 } |
| 254 | 249 |
| 255 void RequestCoordinatorTest::GetQueuedRequestsDone( | 250 void RequestCoordinatorTest::GetQueuedRequestsDone( |
| 256 const std::vector<ClientId>& client_ids) { | 251 const std::vector<SavePageRequest>& requests) { |
| 257 last_client_ids_ = client_ids; | 252 last_requests_ = requests; |
| 258 waiter_.Signal(); | 253 waiter_.Signal(); |
| 259 } | 254 } |
| 260 | 255 |
| 261 void RequestCoordinatorTest::AddRequestDone( | 256 void RequestCoordinatorTest::AddRequestDone( |
| 262 RequestQueue::AddRequestResult result, | 257 RequestQueue::AddRequestResult result, |
| 263 const SavePageRequest& request) {} | 258 const SavePageRequest& request) {} |
| 264 | 259 |
| 265 void RequestCoordinatorTest::SendOfflinerDoneCallback( | 260 void RequestCoordinatorTest::SendOfflinerDoneCallback( |
| 266 const SavePageRequest& request, Offliner::RequestStatus status) { | 261 const SavePageRequest& request, Offliner::RequestStatus status) { |
| 267 // Using the fact that the test class is a friend, call to the callback | 262 // Using the fact that the test class is a friend, call to the callback |
| (...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 621 // Verify the request gets removed from the queue, and wait for callbacks. | 616 // Verify the request gets removed from the queue, and wait for callbacks. |
| 622 coordinator()->queue()->GetRequests( | 617 coordinator()->queue()->GetRequests( |
| 623 base::Bind(&RequestCoordinatorTest::GetRequestsDone, | 618 base::Bind(&RequestCoordinatorTest::GetRequestsDone, |
| 624 base::Unretained(this))); | 619 base::Unretained(this))); |
| 625 PumpLoop(); | 620 PumpLoop(); |
| 626 | 621 |
| 627 // We should find one request in the queue. | 622 // We should find one request in the queue. |
| 628 EXPECT_EQ(1UL, last_requests().size()); | 623 EXPECT_EQ(1UL, last_requests().size()); |
| 629 } | 624 } |
| 630 | 625 |
| 631 TEST_F(RequestCoordinatorTest, GetQueuedRequests) { | 626 TEST_F(RequestCoordinatorTest, GetAllRequests) { |
| 632 // Add two requests to the queue. | 627 // Add two requests to the queue. |
| 633 offline_pages::SavePageRequest request1(kRequestId1, kUrl1, kClientId1, | 628 offline_pages::SavePageRequest request1(kRequestId1, kUrl1, kClientId1, |
| 634 base::Time::Now(), kUserRequested); | 629 base::Time::Now(), kUserRequested); |
| 635 offline_pages::SavePageRequest request2(kRequestId1 + 1, kUrl2, kClientId2, | 630 offline_pages::SavePageRequest request2(kRequestId1 + 1, kUrl2, kClientId2, |
| 636 base::Time::Now(), kUserRequested); | 631 base::Time::Now(), kUserRequested); |
| 637 coordinator()->queue()->AddRequest( | 632 coordinator()->queue()->AddRequest( |
| 638 request1, base::Bind(&RequestCoordinatorTest::AddRequestDone, | 633 request1, base::Bind(&RequestCoordinatorTest::AddRequestDone, |
| 639 base::Unretained(this))); | 634 base::Unretained(this))); |
| 640 coordinator()->queue()->AddRequest( | 635 coordinator()->queue()->AddRequest( |
| 641 request2, base::Bind(&RequestCoordinatorTest::AddRequestDone, | 636 request2, base::Bind(&RequestCoordinatorTest::AddRequestDone, |
| 642 base::Unretained(this))); | 637 base::Unretained(this))); |
| 643 PumpLoop(); | 638 PumpLoop(); |
| 644 | 639 |
| 645 // Start the async status fetching. | 640 // Start the async status fetching. |
| 646 coordinator()->GetQueuedRequests( | 641 coordinator()->GetAllRequests(base::Bind( |
| 647 kClientNamespace, | 642 &RequestCoordinatorTest::GetQueuedRequestsDone, base::Unretained(this))); |
| 648 base::Bind(&RequestCoordinatorTest::GetQueuedRequestsDone, | |
| 649 base::Unretained(this))); | |
| 650 PumpLoop(); | 643 PumpLoop(); |
| 651 | 644 |
| 652 // Wait for async get to finish. | 645 // Wait for async get to finish. |
| 653 WaitForCallback(); | 646 WaitForCallback(); |
| 654 PumpLoop(); | 647 PumpLoop(); |
| 655 | 648 |
| 656 // Check that the statuses found in the callback match what we expect. | 649 // Check that the statuses found in the callback match what we expect. |
| 657 EXPECT_EQ(2UL, last_client_ids().size()); | 650 EXPECT_EQ(2UL, last_requests().size()); |
| 658 EXPECT_EQ(kId1, last_client_ids().at(0).id); | 651 EXPECT_EQ(kRequestId1, last_requests().at(0).request_id()); |
| 659 EXPECT_EQ(kId2, last_client_ids().at(1).id); | 652 EXPECT_EQ(kRequestId2, last_requests().at(1).request_id()); |
| 660 } | 653 } |
| 661 | 654 |
| 662 } // namespace offline_pages | 655 } // namespace offline_pages |
| OLD | NEW |