Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(356)

Side by Side Diff: chrome/browser/captive_portal/captive_portal_service_unittest.cc

Issue 10795038: Enable captive portal detection by default. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Missed the browser_tests Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/test/test_timeouts.h" 10 #include "base/test/test_timeouts.h"
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 125
126 content::NotificationRegistrar registrar_; 126 content::NotificationRegistrar registrar_;
127 127
128 DISALLOW_COPY_AND_ASSIGN(CaptivePortalObserver); 128 DISALLOW_COPY_AND_ASSIGN(CaptivePortalObserver);
129 }; 129 };
130 130
131 } // namespace 131 } // namespace
132 132
133 class CaptivePortalServiceTest : public testing::Test { 133 class CaptivePortalServiceTest : public testing::Test {
134 public: 134 public:
135 CaptivePortalServiceTest() {} 135 CaptivePortalServiceTest()
136 : was_service_disabled_for_testing_(
137 CaptivePortalService::is_disabled_for_testing()) {
138 }
136 139
137 virtual ~CaptivePortalServiceTest() {} 140 virtual ~CaptivePortalServiceTest() {
141 CaptivePortalService::set_is_disabled_for_testing(
142 was_service_disabled_for_testing_);
143 }
138 144
139 void Initialize(bool enable_on_command_line) { 145 // |enable_service| is whether or not the captive portal service itself
140 if (enable_on_command_line) { 146 // should be disabled. This is different from enabling the captive portal
141 CommandLine::ForCurrentProcess()->AppendSwitch( 147 // detection preference.
142 switches::kCaptivePortalDetection); 148 void Initialize(bool enable_service) {
143 } 149 CaptivePortalService::set_is_disabled_for_testing(!enable_service);
144 150
145 profile_.reset(new TestingProfile()); 151 profile_.reset(new TestingProfile());
146 service_.reset(new TestCaptivePortalService(profile_.get())); 152 service_.reset(new TestCaptivePortalService(profile_.get()));
147 scoped_ptr<TestCaptivePortalService> service_; 153 scoped_ptr<TestCaptivePortalService> service_;
148 154
149 // Use no delays for most tests. 155 // Use no delays for most tests.
150 set_initial_backoff_no_portal(base::TimeDelta()); 156 set_initial_backoff_no_portal(base::TimeDelta());
151 set_initial_backoff_portal(base::TimeDelta()); 157 set_initial_backoff_portal(base::TimeDelta());
152 158
153 // Disable jitter, so can check exact values. 159 // Disable jitter, so can check exact values.
154 set_jitter_factor(0.0); 160 set_jitter_factor(0.0);
155 161
156 // These values make checking exponential backoff easier. 162 // These values make checking exponential backoff easier.
157 set_multiply_factor(2.0); 163 set_multiply_factor(2.0);
158 set_maximum_backoff(base::TimeDelta::FromSeconds(1600)); 164 set_maximum_backoff(base::TimeDelta::FromSeconds(1600));
159 165
160 // This means backoff starts after the first "failure", which is the second 166 // This means backoff starts after the first "failure", which is the second
161 // captive portal test in a row that ends up with the same result. 167 // captive portal test in a row that ends up with the same result.
162 set_num_errors_to_ignore(0); 168 set_num_errors_to_ignore(0);
163 169
164 EnableCaptivePortalDetection(true); 170 EnableCaptivePortalDetectionPreference(true);
165 } 171 }
166 172
167 // Sets the captive portal checking preference. 173 // Sets the captive portal checking preference.
168 void EnableCaptivePortalDetection(bool enabled) { 174 void EnableCaptivePortalDetectionPreference(bool enabled) {
169 profile()->GetPrefs()->SetBoolean(prefs::kAlternateErrorPagesEnabled, 175 profile()->GetPrefs()->SetBoolean(prefs::kAlternateErrorPagesEnabled,
170 enabled); 176 enabled);
171 } 177 }
172 178
173 // Calls the corresponding CaptivePortalService function. 179 // Calls the corresponding CaptivePortalService function.
174 void OnURLFetchComplete(net::URLFetcher* fetcher) { 180 void OnURLFetchComplete(net::URLFetcher* fetcher) {
175 service()->OnURLFetchComplete(fetcher); 181 service()->OnURLFetchComplete(fetcher);
176 } 182 }
177 183
178 // Triggers a captive portal check, then simulates the URL request 184 // Triggers a captive portal check, then simulates the URL request
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 322
317 void set_jitter_factor(double jitter_factor) { 323 void set_jitter_factor(double jitter_factor) {
318 service()->recheck_policy().backoff_policy.jitter_factor = jitter_factor; 324 service()->recheck_policy().backoff_policy.jitter_factor = jitter_factor;
319 } 325 }
320 326
321 TestingProfile* profile() { return profile_.get(); } 327 TestingProfile* profile() { return profile_.get(); }
322 328
323 TestCaptivePortalService* service() { return service_.get(); } 329 TestCaptivePortalService* service() { return service_.get(); }
324 330
325 private: 331 private:
332 // Stores the initial value of CaptivePortalService::is_disabled_for_tests
333 // so it can be restored after the test.
334 const bool was_service_disabled_for_testing_;
335
326 MessageLoop message_loop_; 336 MessageLoop message_loop_;
327 337
328 // Note that the construction order of these matters. 338 // Note that the construction order of these matters.
329 scoped_ptr<TestingProfile> profile_; 339 scoped_ptr<TestingProfile> profile_;
330 scoped_ptr<TestCaptivePortalService> service_; 340 scoped_ptr<TestCaptivePortalService> service_;
331 }; 341 };
332 342
333 // Test when connected to the Internet and get the expected 204 response. 343 // Test when connected to the Internet and get the expected 204 response.
334 TEST_F(CaptivePortalServiceTest, CaptivePortalInternetConnected) { 344 TEST_F(CaptivePortalServiceTest, CaptivePortalInternetConnected) {
335 Initialize(true); 345 Initialize(true);
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 // Check that everything works as expected when captive portal checking is 438 // Check that everything works as expected when captive portal checking is
429 // disabled, including throttling. Then enables it again and runs another test. 439 // disabled, including throttling. Then enables it again and runs another test.
430 TEST_F(CaptivePortalServiceTest, CaptivePortalPrefDisabled) { 440 TEST_F(CaptivePortalServiceTest, CaptivePortalPrefDisabled) {
431 Initialize(true); 441 Initialize(true);
432 442
433 // This value should have no effect on this test. 443 // This value should have no effect on this test.
434 set_initial_backoff_no_portal(base::TimeDelta::FromDays(1)); 444 set_initial_backoff_no_portal(base::TimeDelta::FromDays(1));
435 445
436 set_initial_backoff_portal(base::TimeDelta::FromSeconds(100)); 446 set_initial_backoff_portal(base::TimeDelta::FromSeconds(100));
437 447
438 EnableCaptivePortalDetection(false); 448 EnableCaptivePortalDetectionPreference(false);
439 449
440 RunDisabledTest(0); 450 RunDisabledTest(0);
441 for (int i = 0; i < 6; ++i) 451 for (int i = 0; i < 6; ++i)
442 RunDisabledTest(100); 452 RunDisabledTest(100);
443 453
444 EnableCaptivePortalDetection(true); 454 EnableCaptivePortalDetectionPreference(true);
445 455
446 RunTest(RESULT_BEHIND_CAPTIVE_PORTAL, net::OK, 200, 0, NULL); 456 RunTest(RESULT_BEHIND_CAPTIVE_PORTAL, net::OK, 200, 0, NULL);
447 } 457 }
448 458
449 // Check that disabling the captive portal service while a check is running 459 // Check that disabling the captive portal service while a check is running
450 // works. 460 // works.
451 TEST_F(CaptivePortalServiceTest, CaptivePortalPrefDisabledWhileRunning) { 461 TEST_F(CaptivePortalServiceTest, CaptivePortalPrefDisabledWhileRunning) {
452 Initialize(true); 462 Initialize(true);
453 CaptivePortalObserver observer(profile(), service()); 463 CaptivePortalObserver observer(profile(), service());
454 464
455 // Needed to create the URLFetcher, even if it never returns any results. 465 // Needed to create the URLFetcher, even if it never returns any results.
456 net::TestURLFetcherFactory factory; 466 net::TestURLFetcherFactory factory;
457 service()->DetectCaptivePortal(); 467 service()->DetectCaptivePortal();
458 468
459 MessageLoop::current()->RunAllPending(); 469 MessageLoop::current()->RunAllPending();
460 EXPECT_TRUE(FetchingURL()); 470 EXPECT_TRUE(FetchingURL());
461 EXPECT_FALSE(TimerRunning()); 471 EXPECT_FALSE(TimerRunning());
462 472
463 EnableCaptivePortalDetection(false); 473 EnableCaptivePortalDetectionPreference(false);
464 EXPECT_FALSE(FetchingURL()); 474 EXPECT_FALSE(FetchingURL());
465 EXPECT_TRUE(TimerRunning()); 475 EXPECT_TRUE(TimerRunning());
466 EXPECT_EQ(0, observer.num_results_received()); 476 EXPECT_EQ(0, observer.num_results_received());
467 477
468 MessageLoop::current()->RunAllPending(); 478 MessageLoop::current()->RunAllPending();
469 479
470 EXPECT_FALSE(FetchingURL()); 480 EXPECT_FALSE(FetchingURL());
471 EXPECT_FALSE(TimerRunning()); 481 EXPECT_FALSE(TimerRunning());
472 EXPECT_EQ(1, observer.num_results_received()); 482 EXPECT_EQ(1, observer.num_results_received());
473 483
474 EXPECT_EQ(RESULT_INTERNET_CONNECTED, observer.captive_portal_result()); 484 EXPECT_EQ(RESULT_INTERNET_CONNECTED, observer.captive_portal_result());
475 } 485 }
476 486
477 // Check that disabling the captive portal service while a check is pending 487 // Check that disabling the captive portal service while a check is pending
478 // works. 488 // works.
479 TEST_F(CaptivePortalServiceTest, CaptivePortalPrefDisabledWhilePending) { 489 TEST_F(CaptivePortalServiceTest, CaptivePortalPrefDisabledWhilePending) {
480 Initialize(true); 490 Initialize(true);
481 set_initial_backoff_no_portal(base::TimeDelta::FromDays(1)); 491 set_initial_backoff_no_portal(base::TimeDelta::FromDays(1));
482 492
483 // Needed to create the URLFetcher, even if it never returns any results. 493 // Needed to create the URLFetcher, even if it never returns any results.
484 net::TestURLFetcherFactory factory; 494 net::TestURLFetcherFactory factory;
485 495
486 CaptivePortalObserver observer(profile(), service()); 496 CaptivePortalObserver observer(profile(), service());
487 service()->DetectCaptivePortal(); 497 service()->DetectCaptivePortal();
488 EXPECT_FALSE(FetchingURL()); 498 EXPECT_FALSE(FetchingURL());
489 EXPECT_TRUE(TimerRunning()); 499 EXPECT_TRUE(TimerRunning());
490 500
491 EnableCaptivePortalDetection(false); 501 EnableCaptivePortalDetectionPreference(false);
492 EXPECT_FALSE(FetchingURL()); 502 EXPECT_FALSE(FetchingURL());
493 EXPECT_TRUE(TimerRunning()); 503 EXPECT_TRUE(TimerRunning());
494 EXPECT_EQ(0, observer.num_results_received()); 504 EXPECT_EQ(0, observer.num_results_received());
495 505
496 MessageLoop::current()->RunAllPending(); 506 MessageLoop::current()->RunAllPending();
497 507
498 EXPECT_FALSE(FetchingURL()); 508 EXPECT_FALSE(FetchingURL());
499 EXPECT_FALSE(TimerRunning()); 509 EXPECT_FALSE(TimerRunning());
500 EXPECT_EQ(1, observer.num_results_received()); 510 EXPECT_EQ(1, observer.num_results_received());
501 511
502 EXPECT_EQ(RESULT_INTERNET_CONNECTED, observer.captive_portal_result()); 512 EXPECT_EQ(RESULT_INTERNET_CONNECTED, observer.captive_portal_result());
503 } 513 }
504 514
505 // Check that disabling the captive portal service while a check is pending 515 // Check that disabling the captive portal service while a check is pending
506 // works. 516 // works.
507 TEST_F(CaptivePortalServiceTest, CaptivePortalPrefEnabledWhilePending) { 517 TEST_F(CaptivePortalServiceTest, CaptivePortalPrefEnabledWhilePending) {
508 Initialize(true); 518 Initialize(true);
509 519
510 EnableCaptivePortalDetection(false); 520 EnableCaptivePortalDetectionPreference(false);
511 RunDisabledTest(0); 521 RunDisabledTest(0);
512 522
513 CaptivePortalObserver observer(profile(), service()); 523 CaptivePortalObserver observer(profile(), service());
514 service()->DetectCaptivePortal(); 524 service()->DetectCaptivePortal();
515 EXPECT_FALSE(FetchingURL()); 525 EXPECT_FALSE(FetchingURL());
516 EXPECT_TRUE(TimerRunning()); 526 EXPECT_TRUE(TimerRunning());
517 527
518 net::TestURLFetcherFactory factory; 528 net::TestURLFetcherFactory factory;
519 529
520 EnableCaptivePortalDetection(true); 530 EnableCaptivePortalDetectionPreference(true);
521 EXPECT_FALSE(FetchingURL()); 531 EXPECT_FALSE(FetchingURL());
522 EXPECT_TRUE(TimerRunning()); 532 EXPECT_TRUE(TimerRunning());
523 533
524 MessageLoop::current()->RunAllPending(); 534 MessageLoop::current()->RunAllPending();
525 ASSERT_TRUE(FetchingURL()); 535 ASSERT_TRUE(FetchingURL());
526 EXPECT_FALSE(TimerRunning()); 536 EXPECT_FALSE(TimerRunning());
527 537
528 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); 538 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0);
529 fetcher->set_response_code(200); 539 fetcher->set_response_code(200);
530 OnURLFetchComplete(fetcher); 540 OnURLFetchComplete(fetcher);
531 EXPECT_FALSE(FetchingURL()); 541 EXPECT_FALSE(FetchingURL());
532 EXPECT_FALSE(TimerRunning()); 542 EXPECT_FALSE(TimerRunning());
533 543
534 EXPECT_EQ(1, observer.num_results_received()); 544 EXPECT_EQ(1, observer.num_results_received());
535 EXPECT_EQ(RESULT_BEHIND_CAPTIVE_PORTAL, observer.captive_portal_result()); 545 EXPECT_EQ(RESULT_BEHIND_CAPTIVE_PORTAL, observer.captive_portal_result());
536 } 546 }
537 547
538 // Checks that disabling with a command line flag works as expected. 548 // Checks that disabling for browser tests works as expected.
539 TEST_F(CaptivePortalServiceTest, CaptivePortalDisabledAtCommandLine) { 549 TEST_F(CaptivePortalServiceTest, CaptivePortalDisableForTests) {
540 Initialize(false); 550 Initialize(false);
541 RunDisabledTest(0); 551 RunDisabledTest(0);
542 } 552 }
543 553
544 // Checks that jitter gives us values in the correct range. 554 // Checks that jitter gives us values in the correct range.
545 TEST_F(CaptivePortalServiceTest, CaptivePortalJitter) { 555 TEST_F(CaptivePortalServiceTest, CaptivePortalJitter) {
546 Initialize(true); 556 Initialize(true);
547 set_jitter_factor(0.3); 557 set_jitter_factor(0.3);
548 set_initial_backoff_no_portal(base::TimeDelta::FromSeconds(100)); 558 set_initial_backoff_no_portal(base::TimeDelta::FromSeconds(100));
549 RunTest(RESULT_INTERNET_CONNECTED, net::OK, 204, 0, NULL); 559 RunTest(RESULT_INTERNET_CONNECTED, net::OK, 204, 0, NULL);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 624
615 RunTest(RESULT_NO_RESPONSE, 625 RunTest(RESULT_NO_RESPONSE,
616 net::OK, 626 net::OK,
617 503, 627 503,
618 0, 628 0,
619 "HTTP/1.1 503 OK\nRetry-After: Christmas\n\n"); 629 "HTTP/1.1 503 OK\nRetry-After: Christmas\n\n");
620 EXPECT_EQ(base::TimeDelta::FromSeconds(100), GetTimeUntilNextRequest()); 630 EXPECT_EQ(base::TimeDelta::FromSeconds(100), GetTimeUntilNextRequest());
621 } 631 }
622 632
623 } // namespace captive_portal 633 } // namespace captive_portal
OLDNEW
« no previous file with comments | « chrome/browser/captive_portal/captive_portal_service.cc ('k') | chrome/common/chrome_switches.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698