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 |