Index: chrome/browser/chromeos/net/network_portal_detector_unittest.cc |
diff --git a/chrome/browser/chromeos/net/network_portal_detector_unittest.cc b/chrome/browser/chromeos/net/network_portal_detector_unittest.cc |
index 25af6dfd67d327a587351cc4aa35be6edbccdc41..4d5c84e377f02d3bd87fe03f0712a5e0e989cf0b 100644 |
--- a/chrome/browser/chromeos/net/network_portal_detector_unittest.cc |
+++ b/chrome/browser/chromeos/net/network_portal_detector_unittest.cc |
@@ -80,6 +80,14 @@ class NetworkPortalDetectorTest |
return network_portal_detector()->state(); |
} |
+ void enable_lazy_detection() { |
+ network_portal_detector()->EnableLazyDetection(); |
+ } |
+ |
+ void disable_lazy_detection() { |
+ network_portal_detector()->DisableLazyDetection(); |
+ } |
+ |
bool is_state_idle() { |
return (NetworkPortalDetector::STATE_IDLE == state()); |
} |
@@ -108,6 +116,10 @@ class NetworkPortalDetectorTest |
network_portal_detector()->set_min_time_between_attempts_for_testing(delta); |
} |
+ void set_lazy_check_interval(const base::TimeDelta& delta) { |
+ network_portal_detector()->set_lazy_check_interval_for_testing(delta); |
+ } |
+ |
void set_time_ticks(const base::TimeTicks& time_ticks) { |
network_portal_detector()->set_time_ticks_for_testing(time_ticks); |
} |
@@ -458,4 +470,85 @@ TEST_F(NetworkPortalDetectorTest, NoResponseButBehindPortal) { |
wifi1_network()); |
} |
+TEST_F(NetworkPortalDetectorTest, LazyDetectionForOnlineNetwork) { |
+ ASSERT_TRUE(is_state_idle()); |
+ set_min_time_between_attempts(base::TimeDelta()); |
+ set_lazy_check_interval(base::TimeDelta()); |
+ |
+ SetConnected(wifi1_network()); |
+ enable_lazy_detection(); |
+ CompleteURLFetch(net::OK, 204, NULL); |
+ |
+ ASSERT_EQ(3, attempt_count()); |
+ ASSERT_TRUE(is_state_portal_detection_pending()); |
+ CheckPortalState( |
+ NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE, 204, |
+ wifi1_network()); |
+ |
+ // To run CaptivePortalDetector::DetectCaptivePortal(). |
+ MessageLoop::current()->RunUntilIdle(); |
+ |
+ CompleteURLFetch(net::OK, 204, NULL); |
+ |
+ ASSERT_EQ(3, attempt_count()); |
+ ASSERT_TRUE(is_state_portal_detection_pending()); |
+ CheckPortalState( |
+ NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE, 204, |
+ wifi1_network()); |
+ |
+ // To run CaptivePortalDetector::DetectCaptivePortal(). |
+ MessageLoop::current()->RunUntilIdle(); |
+ |
+ disable_lazy_detection(); |
+ ASSERT_TRUE(is_state_idle()); |
+} |
+ |
+TEST_F(NetworkPortalDetectorTest, LazyDetectionForPortalNetwork) { |
+ ASSERT_TRUE(is_state_idle()); |
+ set_min_time_between_attempts(base::TimeDelta()); |
+ set_lazy_check_interval(base::TimeDelta()); |
+ |
+ SetConnected(wifi1_network()); |
+ enable_lazy_detection(); |
+ |
+ CompleteURLFetch(net::ERR_CONNECTION_CLOSED, |
+ net::URLFetcher::RESPONSE_CODE_INVALID, |
+ NULL); |
+ ASSERT_EQ(1, attempt_count()); |
+ ASSERT_TRUE(is_state_portal_detection_pending()); |
+ CheckPortalState(NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN, -1, |
+ wifi1_network()); |
+ |
+ // To run CaptivePortalDetector::DetectCaptivePortal(). |
+ MessageLoop::current()->RunUntilIdle(); |
+ |
+ CompleteURLFetch(net::ERR_CONNECTION_CLOSED, |
+ net::URLFetcher::RESPONSE_CODE_INVALID, |
+ NULL); |
+ ASSERT_EQ(2, attempt_count()); |
+ ASSERT_TRUE(is_state_portal_detection_pending()); |
+ CheckPortalState(NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN, -1, |
+ wifi1_network()); |
+ |
+ // To run CaptivePortalDetector::DetectCaptivePortal(). |
+ MessageLoop::current()->RunUntilIdle(); |
+ |
+ CompleteURLFetch(net::OK, 200, NULL); |
+ ASSERT_EQ(3, attempt_count()); |
+ ASSERT_TRUE(is_state_portal_detection_pending()); |
+ CheckPortalState(NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL, 200, |
+ wifi1_network()); |
+ |
+ // To run CaptivePortalDetector::DetectCaptivePortal(). |
+ MessageLoop::current()->RunUntilIdle(); |
+ CompleteURLFetch(net::OK, 200, NULL); |
+ ASSERT_EQ(3, attempt_count()); |
+ ASSERT_TRUE(is_state_portal_detection_pending()); |
+ CheckPortalState(NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL, 200, |
+ wifi1_network()); |
+ |
+ disable_lazy_detection(); |
+ ASSERT_TRUE(is_state_idle()); |
+} |
+ |
} // namespace chromeos |