| 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 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 } | 207 } |
| 208 | 208 |
| 209 // Callback for Add requests. | 209 // Callback for Add requests. |
| 210 void AddRequestDone(RequestQueue::AddRequestResult result, | 210 void AddRequestDone(RequestQueue::AddRequestResult result, |
| 211 const SavePageRequest& request); | 211 const SavePageRequest& request); |
| 212 | 212 |
| 213 // Callback for getting requests. | 213 // Callback for getting requests. |
| 214 void GetRequestsDone(RequestQueue::GetRequestsResult result, | 214 void GetRequestsDone(RequestQueue::GetRequestsResult result, |
| 215 const std::vector<SavePageRequest>& requests); | 215 const std::vector<SavePageRequest>& requests); |
| 216 | 216 |
| 217 // Callback for removing requests. |
| 218 void RemoveRequestsDone( |
| 219 const RequestQueue::UpdateMultipleRequestResults& results); |
| 220 |
| 217 // Callback for getting request statuses. | 221 // Callback for getting request statuses. |
| 218 void GetQueuedRequestsDone(const std::vector<SavePageRequest>& requests); | 222 void GetQueuedRequestsDone(const std::vector<SavePageRequest>& requests); |
| 219 | 223 |
| 220 void SendOfflinerDoneCallback(const SavePageRequest& request, | 224 void SendOfflinerDoneCallback(const SavePageRequest& request, |
| 221 Offliner::RequestStatus status); | 225 Offliner::RequestStatus status); |
| 222 | 226 |
| 223 RequestQueue::GetRequestsResult last_get_requests_result() const { | 227 RequestQueue::GetRequestsResult last_get_requests_result() const { |
| 224 return last_get_requests_result_; | 228 return last_get_requests_result_; |
| 225 } | 229 } |
| 226 | 230 |
| 227 const std::vector<SavePageRequest>& last_requests() const { | 231 const std::vector<SavePageRequest>& last_requests() const { |
| 228 return last_requests_; | 232 return last_requests_; |
| 229 } | 233 } |
| 230 | 234 |
| 235 const RequestQueue::UpdateMultipleRequestResults& last_remove_results() |
| 236 const { |
| 237 return last_remove_results_; |
| 238 } |
| 239 |
| 231 void EnableOfflinerCallback(bool enable) { | 240 void EnableOfflinerCallback(bool enable) { |
| 232 offliner_->enable_callback(enable); | 241 offliner_->enable_callback(enable); |
| 233 } | 242 } |
| 234 | 243 |
| 235 void SetOfflinerTimeoutForTest(const base::TimeDelta& timeout) { | 244 void SetOfflinerTimeoutForTest(const base::TimeDelta& timeout) { |
| 236 coordinator_->SetOfflinerTimeoutForTest(timeout); | 245 coordinator_->SetOfflinerTimeoutForTest(timeout); |
| 237 } | 246 } |
| 238 | 247 |
| 239 void SetDeviceConditionsForTest(DeviceConditions device_conditions) { | 248 void SetDeviceConditionsForTest(DeviceConditions device_conditions) { |
| 240 coordinator_->SetDeviceConditionsForTest(device_conditions); | 249 coordinator_->SetDeviceConditionsForTest(device_conditions); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 252 return coordinator_->last_offlining_status_; | 261 return coordinator_->last_offlining_status_; |
| 253 } | 262 } |
| 254 | 263 |
| 255 bool OfflinerWasCanceled() const { return offliner_->cancel_called(); } | 264 bool OfflinerWasCanceled() const { return offliner_->cancel_called(); } |
| 256 | 265 |
| 257 ObserverStub observer() { return observer_; } | 266 ObserverStub observer() { return observer_; } |
| 258 | 267 |
| 259 private: | 268 private: |
| 260 RequestQueue::GetRequestsResult last_get_requests_result_; | 269 RequestQueue::GetRequestsResult last_get_requests_result_; |
| 261 std::vector<SavePageRequest> last_requests_; | 270 std::vector<SavePageRequest> last_requests_; |
| 271 RequestQueue::UpdateMultipleRequestResults last_remove_results_; |
| 262 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_; | 272 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_; |
| 263 base::ThreadTaskRunnerHandle task_runner_handle_; | 273 base::ThreadTaskRunnerHandle task_runner_handle_; |
| 264 std::unique_ptr<RequestCoordinator> coordinator_; | 274 std::unique_ptr<RequestCoordinator> coordinator_; |
| 265 OfflinerStub* offliner_; | 275 OfflinerStub* offliner_; |
| 266 base::WaitableEvent waiter_; | 276 base::WaitableEvent waiter_; |
| 267 ObserverStub observer_; | 277 ObserverStub observer_; |
| 268 }; | 278 }; |
| 269 | 279 |
| 270 RequestCoordinatorTest::RequestCoordinatorTest() | 280 RequestCoordinatorTest::RequestCoordinatorTest() |
| 271 : last_get_requests_result_(RequestQueue::GetRequestsResult::STORE_FAILURE), | 281 : last_get_requests_result_(RequestQueue::GetRequestsResult::STORE_FAILURE), |
| (...skipping 25 matching lines...) Expand all Loading... |
| 297 task_runner_->RunUntilIdle(); | 307 task_runner_->RunUntilIdle(); |
| 298 } | 308 } |
| 299 | 309 |
| 300 void RequestCoordinatorTest::GetRequestsDone( | 310 void RequestCoordinatorTest::GetRequestsDone( |
| 301 RequestQueue::GetRequestsResult result, | 311 RequestQueue::GetRequestsResult result, |
| 302 const std::vector<SavePageRequest>& requests) { | 312 const std::vector<SavePageRequest>& requests) { |
| 303 last_get_requests_result_ = result; | 313 last_get_requests_result_ = result; |
| 304 last_requests_ = requests; | 314 last_requests_ = requests; |
| 305 } | 315 } |
| 306 | 316 |
| 317 void RequestCoordinatorTest::RemoveRequestsDone( |
| 318 const RequestQueue::UpdateMultipleRequestResults& results) { |
| 319 last_remove_results_ = results; |
| 320 waiter_.Signal(); |
| 321 } |
| 322 |
| 307 void RequestCoordinatorTest::GetQueuedRequestsDone( | 323 void RequestCoordinatorTest::GetQueuedRequestsDone( |
| 308 const std::vector<SavePageRequest>& requests) { | 324 const std::vector<SavePageRequest>& requests) { |
| 309 last_requests_ = requests; | 325 last_requests_ = requests; |
| 310 waiter_.Signal(); | 326 waiter_.Signal(); |
| 311 } | 327 } |
| 312 | 328 |
| 313 void RequestCoordinatorTest::AddRequestDone( | 329 void RequestCoordinatorTest::AddRequestDone( |
| 314 RequestQueue::AddRequestResult result, | 330 RequestQueue::AddRequestResult result, |
| 315 const SavePageRequest& request) {} | 331 const SavePageRequest& request) {} |
| 316 | 332 |
| (...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 624 net::NetworkChangeNotifier::CONNECTION_3G); | 640 net::NetworkChangeNotifier::CONNECTION_3G); |
| 625 base::Callback<void(bool)> callback = base::Bind( | 641 base::Callback<void(bool)> callback = base::Bind( |
| 626 &RequestCoordinatorTest::EmptyCallbackFunction, base::Unretained(this)); | 642 &RequestCoordinatorTest::EmptyCallbackFunction, base::Unretained(this)); |
| 627 EXPECT_TRUE(coordinator()->StartProcessing(device_conditions, callback)); | 643 EXPECT_TRUE(coordinator()->StartProcessing(device_conditions, callback)); |
| 628 | 644 |
| 629 // Let all the async parts of the start processing pipeline run to completion. | 645 // Let all the async parts of the start processing pipeline run to completion. |
| 630 PumpLoop(); | 646 PumpLoop(); |
| 631 | 647 |
| 632 // Remove the request while it is processing. | 648 // Remove the request while it is processing. |
| 633 std::vector<int64_t> request_ids{kRequestId1}; | 649 std::vector<int64_t> request_ids{kRequestId1}; |
| 634 coordinator()->RemoveRequests(request_ids); | 650 coordinator()->RemoveRequests( |
| 651 request_ids, base::Bind(&RequestCoordinatorTest::RemoveRequestsDone, |
| 652 base::Unretained(this))); |
| 635 | 653 |
| 636 // Let the async callbacks in the cancel run. | 654 // Let the async callbacks in the cancel run. |
| 637 PumpLoop(); | 655 PumpLoop(); |
| 638 | 656 |
| 639 // Since offliner was started, it will have seen cancel call. | 657 // Since offliner was started, it will have seen cancel call. |
| 640 EXPECT_TRUE(OfflinerWasCanceled()); | 658 EXPECT_TRUE(OfflinerWasCanceled()); |
| 641 } | 659 } |
| 642 | 660 |
| 643 TEST_F(RequestCoordinatorTest, WatchdogTimeout) { | 661 TEST_F(RequestCoordinatorTest, WatchdogTimeout) { |
| 644 // Build a request to use with the pre-renderer, and put it on the queue. | 662 // Build a request to use with the pre-renderer, and put it on the queue. |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 782 observer().Clear(); | 800 observer().Clear(); |
| 783 | 801 |
| 784 // Resume the request. | 802 // Resume the request. |
| 785 coordinator()->ResumeRequests(request_ids); | 803 coordinator()->ResumeRequests(request_ids); |
| 786 PumpLoop(); | 804 PumpLoop(); |
| 787 | 805 |
| 788 EXPECT_TRUE(observer().changed_called()); | 806 EXPECT_TRUE(observer().changed_called()); |
| 789 EXPECT_EQ(SavePageRequest::RequestState::AVAILABLE, observer().state()); | 807 EXPECT_EQ(SavePageRequest::RequestState::AVAILABLE, observer().state()); |
| 790 } | 808 } |
| 791 | 809 |
| 792 TEST_F(RequestCoordinatorTest, ObserverdRemoveRequest) { | 810 TEST_F(RequestCoordinatorTest, RemoveRequest) { |
| 793 // Add a request to the queue. | 811 // Add a request to the queue. |
| 794 offline_pages::SavePageRequest request1(kRequestId1, kUrl1, kClientId1, | 812 offline_pages::SavePageRequest request1(kRequestId1, kUrl1, kClientId1, |
| 795 base::Time::Now(), kUserRequested); | 813 base::Time::Now(), kUserRequested); |
| 796 coordinator()->queue()->AddRequest( | 814 coordinator()->queue()->AddRequest( |
| 797 request1, base::Bind(&RequestCoordinatorTest::AddRequestDone, | 815 request1, base::Bind(&RequestCoordinatorTest::AddRequestDone, |
| 798 base::Unretained(this))); | 816 base::Unretained(this))); |
| 799 PumpLoop(); | 817 PumpLoop(); |
| 800 | 818 |
| 801 // Remove the request. | 819 // Remove the request. |
| 802 std::vector<int64_t> request_ids; | 820 std::vector<int64_t> request_ids; |
| 803 request_ids.push_back(kRequestId1); | 821 request_ids.push_back(kRequestId1); |
| 804 coordinator()->RemoveRequests(request_ids); | 822 coordinator()->RemoveRequests( |
| 823 request_ids, base::Bind(&RequestCoordinatorTest::RemoveRequestsDone, |
| 824 base::Unretained(this))); |
| 825 |
| 826 PumpLoop(); |
| 827 WaitForCallback(); |
| 805 PumpLoop(); | 828 PumpLoop(); |
| 806 | 829 |
| 807 EXPECT_TRUE(observer().completed_called()); | 830 EXPECT_TRUE(observer().completed_called()); |
| 808 EXPECT_EQ(RequestCoordinator::SavePageStatus::REMOVED, | 831 EXPECT_EQ(RequestCoordinator::SavePageStatus::REMOVED, |
| 809 observer().last_status()); | 832 observer().last_status()); |
| 833 EXPECT_EQ(1UL, last_remove_results().size()); |
| 834 EXPECT_EQ(kRequestId1, std::get<0>(last_remove_results().at(0))); |
| 810 } | 835 } |
| 811 | 836 |
| 812 } // namespace offline_pages | 837 } // namespace offline_pages |
| OLD | NEW |