OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/captive_portal/captive_portal_service.h" | 5 #include "chrome/browser/captive_portal/captive_portal_service.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 ASSERT_EQ(base::TimeDelta(), GetTimeUntilNextRequest()); | 163 ASSERT_EQ(base::TimeDelta(), GetTimeUntilNextRequest()); |
164 | 164 |
165 CaptivePortalObserver observer(profile(), service()); | 165 CaptivePortalObserver observer(profile(), service()); |
166 net::TestURLFetcherFactory factory; | 166 net::TestURLFetcherFactory factory; |
167 service()->DetectCaptivePortal(); | 167 service()->DetectCaptivePortal(); |
168 | 168 |
169 EXPECT_EQ(CaptivePortalService::STATE_TIMER_RUNNING, service()->state()); | 169 EXPECT_EQ(CaptivePortalService::STATE_TIMER_RUNNING, service()->state()); |
170 EXPECT_FALSE(FetchingURL()); | 170 EXPECT_FALSE(FetchingURL()); |
171 ASSERT_TRUE(TimerRunning()); | 171 ASSERT_TRUE(TimerRunning()); |
172 | 172 |
173 MessageLoop::current()->RunAllPending(); | 173 MessageLoop::current()->RunUntilIdle(); |
174 EXPECT_EQ(CaptivePortalService::STATE_CHECKING_FOR_PORTAL, | 174 EXPECT_EQ(CaptivePortalService::STATE_CHECKING_FOR_PORTAL, |
175 service()->state()); | 175 service()->state()); |
176 ASSERT_TRUE(FetchingURL()); | 176 ASSERT_TRUE(FetchingURL()); |
177 EXPECT_FALSE(TimerRunning()); | 177 EXPECT_FALSE(TimerRunning()); |
178 | 178 |
179 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); | 179 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
180 if (net_error != net::OK) { | 180 if (net_error != net::OK) { |
181 EXPECT_FALSE(response_headers); | 181 EXPECT_FALSE(response_headers); |
182 fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::FAILED, | 182 fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::FAILED, |
183 net_error)); | 183 net_error)); |
(...skipping 27 matching lines...) Expand all Loading... |
211 AdvanceTime(expected_delay); | 211 AdvanceTime(expected_delay); |
212 ASSERT_EQ(base::TimeDelta(), GetTimeUntilNextRequest()); | 212 ASSERT_EQ(base::TimeDelta(), GetTimeUntilNextRequest()); |
213 | 213 |
214 CaptivePortalObserver observer(profile(), service()); | 214 CaptivePortalObserver observer(profile(), service()); |
215 service()->DetectCaptivePortal(); | 215 service()->DetectCaptivePortal(); |
216 | 216 |
217 EXPECT_EQ(CaptivePortalService::STATE_TIMER_RUNNING, service()->state()); | 217 EXPECT_EQ(CaptivePortalService::STATE_TIMER_RUNNING, service()->state()); |
218 EXPECT_FALSE(FetchingURL()); | 218 EXPECT_FALSE(FetchingURL()); |
219 ASSERT_TRUE(TimerRunning()); | 219 ASSERT_TRUE(TimerRunning()); |
220 | 220 |
221 MessageLoop::current()->RunAllPending(); | 221 MessageLoop::current()->RunUntilIdle(); |
222 EXPECT_FALSE(FetchingURL()); | 222 EXPECT_FALSE(FetchingURL()); |
223 EXPECT_FALSE(TimerRunning()); | 223 EXPECT_FALSE(TimerRunning()); |
224 EXPECT_EQ(1, observer.num_results_received()); | 224 EXPECT_EQ(1, observer.num_results_received()); |
225 EXPECT_EQ(RESULT_INTERNET_CONNECTED, observer.captive_portal_result()); | 225 EXPECT_EQ(RESULT_INTERNET_CONNECTED, observer.captive_portal_result()); |
226 } | 226 } |
227 | 227 |
228 // Tests exponential backoff. Prior to calling, the relevant recheck settings | 228 // Tests exponential backoff. Prior to calling, the relevant recheck settings |
229 // must be set to have a minimum time of 100 seconds, with 2 checks before | 229 // must be set to have a minimum time of 100 seconds, with 2 checks before |
230 // starting exponential backoff. | 230 // starting exponential backoff. |
231 void RunBackoffTest(Result expected_result, int net_error, int status_code) { | 231 void RunBackoffTest(Result expected_result, int net_error, int status_code) { |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 // Check that disabling the captive portal service while a check is running | 385 // Check that disabling the captive portal service while a check is running |
386 // works. | 386 // works. |
387 TEST_F(CaptivePortalServiceTest, CaptivePortalPrefDisabledWhileRunning) { | 387 TEST_F(CaptivePortalServiceTest, CaptivePortalPrefDisabledWhileRunning) { |
388 Initialize(CaptivePortalService::SKIP_OS_CHECK_FOR_TESTING); | 388 Initialize(CaptivePortalService::SKIP_OS_CHECK_FOR_TESTING); |
389 CaptivePortalObserver observer(profile(), service()); | 389 CaptivePortalObserver observer(profile(), service()); |
390 | 390 |
391 // Needed to create the URLFetcher, even if it never returns any results. | 391 // Needed to create the URLFetcher, even if it never returns any results. |
392 net::TestURLFetcherFactory factory; | 392 net::TestURLFetcherFactory factory; |
393 service()->DetectCaptivePortal(); | 393 service()->DetectCaptivePortal(); |
394 | 394 |
395 MessageLoop::current()->RunAllPending(); | 395 MessageLoop::current()->RunUntilIdle(); |
396 EXPECT_TRUE(FetchingURL()); | 396 EXPECT_TRUE(FetchingURL()); |
397 EXPECT_FALSE(TimerRunning()); | 397 EXPECT_FALSE(TimerRunning()); |
398 | 398 |
399 EnableCaptivePortalDetectionPreference(false); | 399 EnableCaptivePortalDetectionPreference(false); |
400 EXPECT_FALSE(FetchingURL()); | 400 EXPECT_FALSE(FetchingURL()); |
401 EXPECT_TRUE(TimerRunning()); | 401 EXPECT_TRUE(TimerRunning()); |
402 EXPECT_EQ(0, observer.num_results_received()); | 402 EXPECT_EQ(0, observer.num_results_received()); |
403 | 403 |
404 MessageLoop::current()->RunAllPending(); | 404 MessageLoop::current()->RunUntilIdle(); |
405 | 405 |
406 EXPECT_FALSE(FetchingURL()); | 406 EXPECT_FALSE(FetchingURL()); |
407 EXPECT_FALSE(TimerRunning()); | 407 EXPECT_FALSE(TimerRunning()); |
408 EXPECT_EQ(1, observer.num_results_received()); | 408 EXPECT_EQ(1, observer.num_results_received()); |
409 | 409 |
410 EXPECT_EQ(RESULT_INTERNET_CONNECTED, observer.captive_portal_result()); | 410 EXPECT_EQ(RESULT_INTERNET_CONNECTED, observer.captive_portal_result()); |
411 } | 411 } |
412 | 412 |
413 // Check that disabling the captive portal service while a check is pending | 413 // Check that disabling the captive portal service while a check is pending |
414 // works. | 414 // works. |
415 TEST_F(CaptivePortalServiceTest, CaptivePortalPrefDisabledWhilePending) { | 415 TEST_F(CaptivePortalServiceTest, CaptivePortalPrefDisabledWhilePending) { |
416 Initialize(CaptivePortalService::SKIP_OS_CHECK_FOR_TESTING); | 416 Initialize(CaptivePortalService::SKIP_OS_CHECK_FOR_TESTING); |
417 set_initial_backoff_no_portal(base::TimeDelta::FromDays(1)); | 417 set_initial_backoff_no_portal(base::TimeDelta::FromDays(1)); |
418 | 418 |
419 // Needed to create the URLFetcher, even if it never returns any results. | 419 // Needed to create the URLFetcher, even if it never returns any results. |
420 net::TestURLFetcherFactory factory; | 420 net::TestURLFetcherFactory factory; |
421 | 421 |
422 CaptivePortalObserver observer(profile(), service()); | 422 CaptivePortalObserver observer(profile(), service()); |
423 service()->DetectCaptivePortal(); | 423 service()->DetectCaptivePortal(); |
424 EXPECT_FALSE(FetchingURL()); | 424 EXPECT_FALSE(FetchingURL()); |
425 EXPECT_TRUE(TimerRunning()); | 425 EXPECT_TRUE(TimerRunning()); |
426 | 426 |
427 EnableCaptivePortalDetectionPreference(false); | 427 EnableCaptivePortalDetectionPreference(false); |
428 EXPECT_FALSE(FetchingURL()); | 428 EXPECT_FALSE(FetchingURL()); |
429 EXPECT_TRUE(TimerRunning()); | 429 EXPECT_TRUE(TimerRunning()); |
430 EXPECT_EQ(0, observer.num_results_received()); | 430 EXPECT_EQ(0, observer.num_results_received()); |
431 | 431 |
432 MessageLoop::current()->RunAllPending(); | 432 MessageLoop::current()->RunUntilIdle(); |
433 | 433 |
434 EXPECT_FALSE(FetchingURL()); | 434 EXPECT_FALSE(FetchingURL()); |
435 EXPECT_FALSE(TimerRunning()); | 435 EXPECT_FALSE(TimerRunning()); |
436 EXPECT_EQ(1, observer.num_results_received()); | 436 EXPECT_EQ(1, observer.num_results_received()); |
437 | 437 |
438 EXPECT_EQ(RESULT_INTERNET_CONNECTED, observer.captive_portal_result()); | 438 EXPECT_EQ(RESULT_INTERNET_CONNECTED, observer.captive_portal_result()); |
439 } | 439 } |
440 | 440 |
441 // Check that disabling the captive portal service while a check is pending | 441 // Check that disabling the captive portal service while a check is pending |
442 // works. | 442 // works. |
443 TEST_F(CaptivePortalServiceTest, CaptivePortalPrefEnabledWhilePending) { | 443 TEST_F(CaptivePortalServiceTest, CaptivePortalPrefEnabledWhilePending) { |
444 Initialize(CaptivePortalService::SKIP_OS_CHECK_FOR_TESTING); | 444 Initialize(CaptivePortalService::SKIP_OS_CHECK_FOR_TESTING); |
445 | 445 |
446 EnableCaptivePortalDetectionPreference(false); | 446 EnableCaptivePortalDetectionPreference(false); |
447 RunDisabledTest(0); | 447 RunDisabledTest(0); |
448 | 448 |
449 CaptivePortalObserver observer(profile(), service()); | 449 CaptivePortalObserver observer(profile(), service()); |
450 service()->DetectCaptivePortal(); | 450 service()->DetectCaptivePortal(); |
451 EXPECT_FALSE(FetchingURL()); | 451 EXPECT_FALSE(FetchingURL()); |
452 EXPECT_TRUE(TimerRunning()); | 452 EXPECT_TRUE(TimerRunning()); |
453 | 453 |
454 net::TestURLFetcherFactory factory; | 454 net::TestURLFetcherFactory factory; |
455 | 455 |
456 EnableCaptivePortalDetectionPreference(true); | 456 EnableCaptivePortalDetectionPreference(true); |
457 EXPECT_FALSE(FetchingURL()); | 457 EXPECT_FALSE(FetchingURL()); |
458 EXPECT_TRUE(TimerRunning()); | 458 EXPECT_TRUE(TimerRunning()); |
459 | 459 |
460 MessageLoop::current()->RunAllPending(); | 460 MessageLoop::current()->RunUntilIdle(); |
461 ASSERT_TRUE(FetchingURL()); | 461 ASSERT_TRUE(FetchingURL()); |
462 EXPECT_FALSE(TimerRunning()); | 462 EXPECT_FALSE(TimerRunning()); |
463 | 463 |
464 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); | 464 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
465 fetcher->set_response_code(200); | 465 fetcher->set_response_code(200); |
466 OnURLFetchComplete(fetcher); | 466 OnURLFetchComplete(fetcher); |
467 EXPECT_FALSE(FetchingURL()); | 467 EXPECT_FALSE(FetchingURL()); |
468 EXPECT_FALSE(TimerRunning()); | 468 EXPECT_FALSE(TimerRunning()); |
469 | 469 |
470 EXPECT_EQ(1, observer.num_results_received()); | 470 EXPECT_EQ(1, observer.num_results_received()); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 | 537 |
538 RunTest(RESULT_NO_RESPONSE, | 538 RunTest(RESULT_NO_RESPONSE, |
539 net::OK, | 539 net::OK, |
540 503, | 540 503, |
541 0, | 541 0, |
542 "HTTP/1.1 503 OK\nRetry-After: Tue, 17 Apr 2012 18:02:51 GMT\n\n"); | 542 "HTTP/1.1 503 OK\nRetry-After: Tue, 17 Apr 2012 18:02:51 GMT\n\n"); |
543 EXPECT_EQ(base::TimeDelta::FromSeconds(51), GetTimeUntilNextRequest()); | 543 EXPECT_EQ(base::TimeDelta::FromSeconds(51), GetTimeUntilNextRequest()); |
544 } | 544 } |
545 | 545 |
546 } // namespace captive_portal | 546 } // namespace captive_portal |
OLD | NEW |