| 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 |
| 11 #include "base/bind.h" | 11 #include "base/bind.h" |
| 12 #include "base/location.h" | 12 #include "base/location.h" |
| 13 #include "base/logging.h" | 13 #include "base/logging.h" |
| 14 #include "base/synchronization/waitable_event.h" | 14 #include "base/synchronization/waitable_event.h" |
| 15 #include "base/sys_info.h" |
| 15 #include "base/test/test_mock_time_task_runner.h" | 16 #include "base/test/test_mock_time_task_runner.h" |
| 16 #include "base/threading/thread_task_runner_handle.h" | 17 #include "base/threading/thread_task_runner_handle.h" |
| 17 #include "base/time/time.h" | 18 #include "base/time/time.h" |
| 18 #include "components/offline_pages/background/device_conditions.h" | 19 #include "components/offline_pages/background/device_conditions.h" |
| 19 #include "components/offline_pages/background/offliner.h" | 20 #include "components/offline_pages/background/offliner.h" |
| 20 #include "components/offline_pages/background/offliner_factory.h" | 21 #include "components/offline_pages/background/offliner_factory.h" |
| 21 #include "components/offline_pages/background/offliner_policy.h" | 22 #include "components/offline_pages/background/offliner_policy.h" |
| 22 #include "components/offline_pages/background/request_queue.h" | 23 #include "components/offline_pages/background/request_queue.h" |
| 23 #include "components/offline_pages/background/request_queue_in_memory_store.h" | 24 #include "components/offline_pages/background/request_queue_in_memory_store.h" |
| 24 #include "components/offline_pages/background/save_page_request.h" | 25 #include "components/offline_pages/background/save_page_request.h" |
| (...skipping 850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 875 WaitForCallback(); | 876 WaitForCallback(); |
| 876 PumpLoop(); | 877 PumpLoop(); |
| 877 | 878 |
| 878 EXPECT_TRUE(observer().completed_called()); | 879 EXPECT_TRUE(observer().completed_called()); |
| 879 EXPECT_EQ(RequestCoordinator::SavePageStatus::REMOVED, | 880 EXPECT_EQ(RequestCoordinator::SavePageStatus::REMOVED, |
| 880 observer().last_status()); | 881 observer().last_status()); |
| 881 EXPECT_EQ(1UL, last_remove_results().size()); | 882 EXPECT_EQ(1UL, last_remove_results().size()); |
| 882 EXPECT_EQ(kRequestId1, std::get<0>(last_remove_results().at(0))); | 883 EXPECT_EQ(kRequestId1, std::get<0>(last_remove_results().at(0))); |
| 883 } | 884 } |
| 884 | 885 |
| 885 TEST_F(RequestCoordinatorTest, SavePageStartsProcessingWhenConnected) { | 886 TEST_F(RequestCoordinatorTest, |
| 887 SavePageStartsProcessingWhenConnectedAndNotLowEndDevice) { |
| 886 SetNetworkConditionsForTest( | 888 SetNetworkConditionsForTest( |
| 887 net::NetworkChangeNotifier::ConnectionType::CONNECTION_3G); | 889 net::NetworkChangeNotifier::ConnectionType::CONNECTION_3G); |
| 888 EXPECT_TRUE(coordinator()->SavePageLater(kUrl1, kClientId1, kUserRequested)); | 890 EXPECT_TRUE(coordinator()->SavePageLater(kUrl1, kClientId1, kUserRequested)); |
| 889 PumpLoop(); | 891 PumpLoop(); |
| 890 EXPECT_TRUE(is_busy()); | 892 |
| 893 // Now whether processing triggered immediately depends on whether test |
| 894 // is run on svelte device or not. |
| 895 if (base::SysInfo::IsLowEndDevice()) { |
| 896 EXPECT_FALSE(is_busy()); |
| 897 } else { |
| 898 EXPECT_TRUE(is_busy()); |
| 899 } |
| 891 } | 900 } |
| 892 | 901 |
| 893 TEST_F(RequestCoordinatorTest, SavePageDoesntStartProcessingWhenDisconnected) { | 902 TEST_F(RequestCoordinatorTest, SavePageDoesntStartProcessingWhenDisconnected) { |
| 894 SetNetworkConditionsForTest( | 903 SetNetworkConditionsForTest( |
| 895 net::NetworkChangeNotifier::ConnectionType::CONNECTION_NONE); | 904 net::NetworkChangeNotifier::ConnectionType::CONNECTION_NONE); |
| 896 EXPECT_TRUE(coordinator()->SavePageLater(kUrl1, kClientId1, kUserRequested)); | 905 EXPECT_TRUE(coordinator()->SavePageLater(kUrl1, kClientId1, kUserRequested)); |
| 897 PumpLoop(); | 906 PumpLoop(); |
| 898 EXPECT_FALSE(is_busy()); | 907 EXPECT_FALSE(is_busy()); |
| 899 } | 908 } |
| 900 | 909 |
| 901 TEST_F(RequestCoordinatorTest, ResumeStartsProcessingWhenConnected) { | 910 TEST_F(RequestCoordinatorTest, |
| 911 ResumeStartsProcessingWhenConnectedAndNotLowEndDevice) { |
| 902 SetNetworkConditionsForTest( | 912 SetNetworkConditionsForTest( |
| 903 net::NetworkChangeNotifier::ConnectionType::CONNECTION_NONE); | 913 net::NetworkChangeNotifier::ConnectionType::CONNECTION_NONE); |
| 904 | 914 |
| 905 // Add a request to the queue. | 915 // Add a request to the queue. |
| 906 offline_pages::SavePageRequest request1(kRequestId1, kUrl1, kClientId1, | 916 offline_pages::SavePageRequest request1(kRequestId1, kUrl1, kClientId1, |
| 907 base::Time::Now(), kUserRequested); | 917 base::Time::Now(), kUserRequested); |
| 908 coordinator()->queue()->AddRequest( | 918 coordinator()->queue()->AddRequest( |
| 909 request1, base::Bind(&RequestCoordinatorTest::AddRequestDone, | 919 request1, base::Bind(&RequestCoordinatorTest::AddRequestDone, |
| 910 base::Unretained(this))); | 920 base::Unretained(this))); |
| 911 PumpLoop(); | 921 PumpLoop(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 927 PumpLoop(); | 937 PumpLoop(); |
| 928 | 938 |
| 929 // Now simulate being connected. | 939 // Now simulate being connected. |
| 930 SetNetworkConditionsForTest( | 940 SetNetworkConditionsForTest( |
| 931 net::NetworkChangeNotifier::ConnectionType::CONNECTION_3G); | 941 net::NetworkChangeNotifier::ConnectionType::CONNECTION_3G); |
| 932 | 942 |
| 933 // Resume the request while connected. | 943 // Resume the request while connected. |
| 934 coordinator()->ResumeRequests(request_ids); | 944 coordinator()->ResumeRequests(request_ids); |
| 935 EXPECT_FALSE(is_busy()); | 945 EXPECT_FALSE(is_busy()); |
| 936 PumpLoop(); | 946 PumpLoop(); |
| 937 EXPECT_TRUE(is_busy()); | 947 |
| 948 // Now whether processing triggered immediately depends on whether test |
| 949 // is run on svelte device or not. |
| 950 if (base::SysInfo::IsLowEndDevice()) { |
| 951 EXPECT_FALSE(is_busy()); |
| 952 } else { |
| 953 EXPECT_TRUE(is_busy()); |
| 954 } |
| 938 } | 955 } |
| 939 | 956 |
| 940 } // namespace offline_pages | 957 } // namespace offline_pages |
| OLD | NEW |