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 <map> | 5 #include <map> |
6 #include <set> | 6 #include <set> |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 #include "net/base/net_errors.h" | 46 #include "net/base/net_errors.h" |
47 #include "net/http/transport_security_state.h" | 47 #include "net/http/transport_security_state.h" |
48 #include "net/url_request/url_request.h" | 48 #include "net/url_request/url_request.h" |
49 #include "net/url_request/url_request_context.h" | 49 #include "net/url_request/url_request_context.h" |
50 #include "net/url_request/url_request_context_getter.h" | 50 #include "net/url_request/url_request_context_getter.h" |
51 #include "net/url_request/url_request_filter.h" | 51 #include "net/url_request/url_request_filter.h" |
52 #include "net/url_request/url_request_job.h" | 52 #include "net/url_request/url_request_job.h" |
53 #include "net/url_request/url_request_status.h" | 53 #include "net/url_request/url_request_status.h" |
54 #include "testing/gtest/include/gtest/gtest.h" | 54 #include "testing/gtest/include/gtest/gtest.h" |
55 | 55 |
| 56 using captive_portal::CaptivePortalResult; |
56 using content::BrowserThread; | 57 using content::BrowserThread; |
57 using content::URLRequestFailedJob; | 58 using content::URLRequestFailedJob; |
58 using content::URLRequestMockHTTPJob; | 59 using content::URLRequestMockHTTPJob; |
59 using content::WebContents; | 60 using content::WebContents; |
60 | 61 |
61 namespace captive_portal { | |
62 | |
63 namespace { | 62 namespace { |
64 | 63 |
65 // Path of the fake login page, when using the TestServer. | 64 // Path of the fake login page, when using the TestServer. |
66 const char* const kTestServerLoginPath = "files/captive_portal/login.html"; | 65 const char* const kTestServerLoginPath = "files/captive_portal/login.html"; |
67 | 66 |
68 // Path of a page with an iframe that has a mock SSL timeout, when using the | 67 // Path of a page with an iframe that has a mock SSL timeout, when using the |
69 // TestServer. | 68 // TestServer. |
70 const char* const kTestServerIframeTimeoutPath = | 69 const char* const kTestServerIframeTimeoutPath = |
71 "files/captive_portal/iframe_timeout.html"; | 70 "files/captive_portal/iframe_timeout.html"; |
72 | 71 |
(...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
678 public: | 677 public: |
679 explicit CaptivePortalObserver(Profile* profile); | 678 explicit CaptivePortalObserver(Profile* profile); |
680 | 679 |
681 // Runs the message loop until until at exactly |update_count| capitive portal | 680 // Runs the message loop until until at exactly |update_count| capitive portal |
682 // results have been received, since this creation of |this|. Expects no | 681 // results have been received, since this creation of |this|. Expects no |
683 // additional captive portal results. | 682 // additional captive portal results. |
684 void WaitForResults(int num_results_to_wait_for); | 683 void WaitForResults(int num_results_to_wait_for); |
685 | 684 |
686 int num_results_received() const { return num_results_received_; } | 685 int num_results_received() const { return num_results_received_; } |
687 | 686 |
688 Result captive_portal_result() const { | 687 CaptivePortalResult captive_portal_result() const { |
689 return captive_portal_result_; | 688 return captive_portal_result_; |
690 } | 689 } |
691 | 690 |
692 private: | 691 private: |
693 // Records results and exits the message loop, if needed. | 692 // Records results and exits the message loop, if needed. |
694 virtual void Observe(int type, | 693 virtual void Observe(int type, |
695 const content::NotificationSource& source, | 694 const content::NotificationSource& source, |
696 const content::NotificationDetails& details) OVERRIDE; | 695 const content::NotificationDetails& details) OVERRIDE; |
697 | 696 |
698 // Number of times OnPortalResult has been called since construction. | 697 // Number of times OnPortalResult has been called since construction. |
699 int num_results_received_; | 698 int num_results_received_; |
700 | 699 |
701 // If WaitForResults was called, the total number of updates for which to | 700 // If WaitForResults was called, the total number of updates for which to |
702 // wait. Value doesn't matter when |waiting_for_result_| is false. | 701 // wait. Value doesn't matter when |waiting_for_result_| is false. |
703 int num_results_to_wait_for_; | 702 int num_results_to_wait_for_; |
704 | 703 |
705 bool waiting_for_result_; | 704 bool waiting_for_result_; |
706 | 705 |
707 Profile* profile_; | 706 Profile* profile_; |
708 | 707 |
709 CaptivePortalService* captive_portal_service_; | 708 CaptivePortalService* captive_portal_service_; |
710 | 709 |
711 // Last result received. | 710 // Last result received. |
712 Result captive_portal_result_; | 711 CaptivePortalResult captive_portal_result_; |
713 | 712 |
714 content::NotificationRegistrar registrar_; | 713 content::NotificationRegistrar registrar_; |
715 | 714 |
716 DISALLOW_COPY_AND_ASSIGN(CaptivePortalObserver); | 715 DISALLOW_COPY_AND_ASSIGN(CaptivePortalObserver); |
717 }; | 716 }; |
718 | 717 |
719 CaptivePortalObserver::CaptivePortalObserver(Profile* profile) | 718 CaptivePortalObserver::CaptivePortalObserver(Profile* profile) |
720 : num_results_received_(0), | 719 : num_results_received_(0), |
721 num_results_to_wait_for_(0), | 720 num_results_to_wait_for_(0), |
722 waiting_for_result_(false), | 721 waiting_for_result_(false), |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
828 // active tab will end up being navigated. It should be 1, except for the | 827 // active tab will end up being navigated. It should be 1, except for the |
829 // Link Doctor page, which acts like two navigations. | 828 // Link Doctor page, which acts like two navigations. |
830 void NavigateToPageExpectNoTest(Browser* browser, | 829 void NavigateToPageExpectNoTest(Browser* browser, |
831 const GURL& url, | 830 const GURL& url, |
832 int expected_navigations); | 831 int expected_navigations); |
833 | 832 |
834 // Navigates |browser|'s active tab to an SSL tab that takes a while to load, | 833 // Navigates |browser|'s active tab to an SSL tab that takes a while to load, |
835 // triggering a captive portal check, which is expected to give the result | 834 // triggering a captive portal check, which is expected to give the result |
836 // |expected_result|. The page finishes loading, with a timeout, after the | 835 // |expected_result|. The page finishes loading, with a timeout, after the |
837 // captive portal check. | 836 // captive portal check. |
838 void SlowLoadNoCaptivePortal(Browser* browser, Result expected_result); | 837 void SlowLoadNoCaptivePortal(Browser* browser, |
| 838 CaptivePortalResult expected_result); |
839 | 839 |
840 // Navigates |browser|'s active tab to an SSL timeout, expecting a captive | 840 // Navigates |browser|'s active tab to an SSL timeout, expecting a captive |
841 // portal check to be triggered and return a result which will indicates | 841 // portal check to be triggered and return a result which will indicates |
842 // there's no detected captive portal. | 842 // there's no detected captive portal. |
843 void FastTimeoutNoCaptivePortal(Browser* browser, Result expected_result); | 843 void FastTimeoutNoCaptivePortal(Browser* browser, |
| 844 CaptivePortalResult expected_result); |
844 | 845 |
845 // Navigates the active tab to a slow loading SSL page, which will then | 846 // Navigates the active tab to a slow loading SSL page, which will then |
846 // trigger a captive portal test. The test is expected to find a captive | 847 // trigger a captive portal test. The test is expected to find a captive |
847 // portal. The slow loading page will continue to load after the function | 848 // portal. The slow loading page will continue to load after the function |
848 // returns, until URLRequestTimeoutOnDemandJob::FailJobs() is called, | 849 // returns, until URLRequestTimeoutOnDemandJob::FailJobs() is called, |
849 // at which point it will timeout. | 850 // at which point it will timeout. |
850 // | 851 // |
851 // When |expect_login_tab| is false, no login tab is expected to be opened, | 852 // When |expect_login_tab| is false, no login tab is expected to be opened, |
852 // because one already exists, and the function returns once the captive | 853 // because one already exists, and the function returns once the captive |
853 // portal test is complete. | 854 // portal test is complete. |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1044 EXPECT_EQ(0, portal_observer.num_results_received()); | 1045 EXPECT_EQ(0, portal_observer.num_results_received()); |
1045 EXPECT_FALSE(CheckPending(browser)); | 1046 EXPECT_FALSE(CheckPending(browser)); |
1046 EXPECT_EQ(1, browser->tab_strip_model()->count()); | 1047 EXPECT_EQ(1, browser->tab_strip_model()->count()); |
1047 EXPECT_EQ(expected_navigations, navigation_observer.num_navigations()); | 1048 EXPECT_EQ(expected_navigations, navigation_observer.num_navigations()); |
1048 EXPECT_EQ(0, NumLoadingTabs()); | 1049 EXPECT_EQ(0, NumLoadingTabs()); |
1049 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, | 1050 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, |
1050 GetStateOfTabReloaderAt(browser, 0)); | 1051 GetStateOfTabReloaderAt(browser, 0)); |
1051 } | 1052 } |
1052 | 1053 |
1053 void CaptivePortalBrowserTest::SlowLoadNoCaptivePortal( | 1054 void CaptivePortalBrowserTest::SlowLoadNoCaptivePortal( |
1054 Browser* browser, Result expected_result) { | 1055 Browser* browser, |
| 1056 CaptivePortalResult expected_result) { |
1055 CaptivePortalTabReloader* tab_reloader = | 1057 CaptivePortalTabReloader* tab_reloader = |
1056 GetTabReloader(browser->tab_strip_model()->GetActiveWebContents()); | 1058 GetTabReloader(browser->tab_strip_model()->GetActiveWebContents()); |
1057 ASSERT_TRUE(tab_reloader); | 1059 ASSERT_TRUE(tab_reloader); |
1058 SetSlowSSLLoadTime(tab_reloader, base::TimeDelta()); | 1060 SetSlowSSLLoadTime(tab_reloader, base::TimeDelta()); |
1059 | 1061 |
1060 MultiNavigationObserver navigation_observer; | 1062 MultiNavigationObserver navigation_observer; |
1061 CaptivePortalObserver portal_observer(browser->profile()); | 1063 CaptivePortalObserver portal_observer(browser->profile()); |
1062 ui_test_utils::NavigateToURLWithDisposition(browser, | 1064 ui_test_utils::NavigateToURLWithDisposition(browser, |
1063 GURL(kMockHttpsUrl), | 1065 GURL(kMockHttpsUrl), |
1064 CURRENT_TAB, | 1066 CURRENT_TAB, |
(...skipping 18 matching lines...) Expand all Loading... |
1083 ASSERT_EQ(1, browser->tab_strip_model()->count()); | 1085 ASSERT_EQ(1, browser->tab_strip_model()->count()); |
1084 EXPECT_EQ(1, portal_observer.num_results_received()); | 1086 EXPECT_EQ(1, portal_observer.num_results_received()); |
1085 EXPECT_FALSE(CheckPending(browser)); | 1087 EXPECT_FALSE(CheckPending(browser)); |
1086 EXPECT_EQ(0, NumLoadingTabs()); | 1088 EXPECT_EQ(0, NumLoadingTabs()); |
1087 | 1089 |
1088 // Set a slow SSL load time to prevent the timer from triggering. | 1090 // Set a slow SSL load time to prevent the timer from triggering. |
1089 SetSlowSSLLoadTime(tab_reloader, base::TimeDelta::FromDays(1)); | 1091 SetSlowSSLLoadTime(tab_reloader, base::TimeDelta::FromDays(1)); |
1090 } | 1092 } |
1091 | 1093 |
1092 void CaptivePortalBrowserTest::FastTimeoutNoCaptivePortal( | 1094 void CaptivePortalBrowserTest::FastTimeoutNoCaptivePortal( |
1093 Browser* browser, Result expected_result) { | 1095 Browser* browser, |
1094 ASSERT_NE(expected_result, RESULT_BEHIND_CAPTIVE_PORTAL); | 1096 CaptivePortalResult expected_result) { |
| 1097 ASSERT_NE(expected_result, captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL); |
1095 | 1098 |
1096 // Set the load time to be large, so the timer won't trigger. The value is | 1099 // Set the load time to be large, so the timer won't trigger. The value is |
1097 // not restored at the end of the function. | 1100 // not restored at the end of the function. |
1098 CaptivePortalTabReloader* tab_reloader = | 1101 CaptivePortalTabReloader* tab_reloader = |
1099 GetTabReloader(browser->tab_strip_model()->GetActiveWebContents()); | 1102 GetTabReloader(browser->tab_strip_model()->GetActiveWebContents()); |
1100 ASSERT_TRUE(tab_reloader); | 1103 ASSERT_TRUE(tab_reloader); |
1101 SetSlowSSLLoadTime(tab_reloader, base::TimeDelta::FromHours(1)); | 1104 SetSlowSSLLoadTime(tab_reloader, base::TimeDelta::FromHours(1)); |
1102 | 1105 |
1103 MultiNavigationObserver navigation_observer; | 1106 MultiNavigationObserver navigation_observer; |
1104 CaptivePortalObserver portal_observer(browser->profile()); | 1107 CaptivePortalObserver portal_observer(browser->profile()); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1205 ASSERT_EQ(initial_tab_count, tab_strip_model->count()); | 1208 ASSERT_EQ(initial_tab_count, tab_strip_model->count()); |
1206 EXPECT_EQ(initial_active_index, tab_strip_model->active_index()); | 1209 EXPECT_EQ(initial_active_index, tab_strip_model->active_index()); |
1207 } | 1210 } |
1208 | 1211 |
1209 // Wait for all the expect resource loads to actually start, so subsequent | 1212 // Wait for all the expect resource loads to actually start, so subsequent |
1210 // functions can rely on them having started. | 1213 // functions can rely on them having started. |
1211 URLRequestTimeoutOnDemandJob::WaitForJobs(initial_loading_tabs + 1); | 1214 URLRequestTimeoutOnDemandJob::WaitForJobs(initial_loading_tabs + 1); |
1212 | 1215 |
1213 EXPECT_EQ(initial_loading_tabs + 1, NumLoadingTabs()); | 1216 EXPECT_EQ(initial_loading_tabs + 1, NumLoadingTabs()); |
1214 EXPECT_EQ(expected_broken_tabs, NumBrokenTabs()); | 1217 EXPECT_EQ(expected_broken_tabs, NumBrokenTabs()); |
1215 EXPECT_EQ(RESULT_BEHIND_CAPTIVE_PORTAL, | 1218 EXPECT_EQ(captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL, |
1216 portal_observer.captive_portal_result()); | 1219 portal_observer.captive_portal_result()); |
1217 EXPECT_EQ(expected_portal_checks, portal_observer.num_results_received()); | 1220 EXPECT_EQ(expected_portal_checks, portal_observer.num_results_received()); |
1218 EXPECT_FALSE(CheckPending(browser)); | 1221 EXPECT_FALSE(CheckPending(browser)); |
1219 | 1222 |
1220 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, | 1223 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, |
1221 GetStateOfTabReloaderAt(browser, initial_active_index)); | 1224 GetStateOfTabReloaderAt(browser, initial_active_index)); |
1222 | 1225 |
1223 // Reset the load time to be large, so the timer won't trigger on a reload. | 1226 // Reset the load time to be large, so the timer won't trigger on a reload. |
1224 SetSlowSSLLoadTime(tab_reloader, base::TimeDelta::FromHours(1)); | 1227 SetSlowSSLLoadTime(tab_reloader, base::TimeDelta::FromHours(1)); |
1225 } | 1228 } |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1284 navigation_observer.WaitForNavigations(1); | 1287 navigation_observer.WaitForNavigations(1); |
1285 EXPECT_EQ(initial_active_index, tab_strip_model->active_index()); | 1288 EXPECT_EQ(initial_active_index, tab_strip_model->active_index()); |
1286 EXPECT_EQ(1, navigation_observer.NumNavigationsForTab( | 1289 EXPECT_EQ(1, navigation_observer.NumNavigationsForTab( |
1287 tab_strip_model->GetWebContentsAt(initial_active_index))); | 1290 tab_strip_model->GetWebContentsAt(initial_active_index))); |
1288 ASSERT_EQ(initial_tab_count, tab_strip_model->count()); | 1291 ASSERT_EQ(initial_tab_count, tab_strip_model->count()); |
1289 EXPECT_EQ(initial_active_index, tab_strip_model->active_index()); | 1292 EXPECT_EQ(initial_active_index, tab_strip_model->active_index()); |
1290 } | 1293 } |
1291 | 1294 |
1292 EXPECT_EQ(initial_loading_tabs, NumLoadingTabs()); | 1295 EXPECT_EQ(initial_loading_tabs, NumLoadingTabs()); |
1293 EXPECT_EQ(expected_broken_tabs, NumBrokenTabs()); | 1296 EXPECT_EQ(expected_broken_tabs, NumBrokenTabs()); |
1294 EXPECT_EQ(RESULT_BEHIND_CAPTIVE_PORTAL, | 1297 EXPECT_EQ(captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL, |
1295 portal_observer.captive_portal_result()); | 1298 portal_observer.captive_portal_result()); |
1296 EXPECT_EQ(1, portal_observer.num_results_received()); | 1299 EXPECT_EQ(1, portal_observer.num_results_received()); |
1297 EXPECT_FALSE(CheckPending(browser)); | 1300 EXPECT_FALSE(CheckPending(browser)); |
1298 | 1301 |
1299 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, | 1302 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, |
1300 GetStateOfTabReloaderAt(browser, initial_active_index)); | 1303 GetStateOfTabReloaderAt(browser, initial_active_index)); |
1301 } | 1304 } |
1302 | 1305 |
1303 void CaptivePortalBrowserTest::NavigateLoginTab(Browser* browser, | 1306 void CaptivePortalBrowserTest::NavigateLoginTab(Browser* browser, |
1304 int num_loading_tabs, | 1307 int num_loading_tabs, |
(...skipping 13 matching lines...) Expand all Loading... |
1318 | 1321 |
1319 // Do the navigation. | 1322 // Do the navigation. |
1320 content::RenderFrameHost* render_frame_host = | 1323 content::RenderFrameHost* render_frame_host = |
1321 tab_strip_model->GetActiveWebContents()->GetMainFrame(); | 1324 tab_strip_model->GetActiveWebContents()->GetMainFrame(); |
1322 render_frame_host->ExecuteJavaScript(base::ASCIIToUTF16("submitForm()")); | 1325 render_frame_host->ExecuteJavaScript(base::ASCIIToUTF16("submitForm()")); |
1323 | 1326 |
1324 portal_observer.WaitForResults(1); | 1327 portal_observer.WaitForResults(1); |
1325 navigation_observer.WaitForNavigations(1); | 1328 navigation_observer.WaitForNavigations(1); |
1326 | 1329 |
1327 // Check the captive portal result. | 1330 // Check the captive portal result. |
1328 EXPECT_EQ(RESULT_BEHIND_CAPTIVE_PORTAL, | 1331 EXPECT_EQ(captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL, |
1329 portal_observer.captive_portal_result()); | 1332 portal_observer.captive_portal_result()); |
1330 EXPECT_EQ(1, portal_observer.num_results_received()); | 1333 EXPECT_EQ(1, portal_observer.num_results_received()); |
1331 EXPECT_FALSE(CheckPending(browser)); | 1334 EXPECT_FALSE(CheckPending(browser)); |
1332 | 1335 |
1333 // Make sure not much has changed. | 1336 // Make sure not much has changed. |
1334 EXPECT_EQ(initial_tab_count, tab_strip_model->count()); | 1337 EXPECT_EQ(initial_tab_count, tab_strip_model->count()); |
1335 EXPECT_EQ(num_loading_tabs, NumLoadingTabs()); | 1338 EXPECT_EQ(num_loading_tabs, NumLoadingTabs()); |
1336 EXPECT_EQ(num_loading_tabs + num_timed_out_tabs, NumBrokenTabs()); | 1339 EXPECT_EQ(num_loading_tabs + num_timed_out_tabs, NumBrokenTabs()); |
1337 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, | 1340 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, |
1338 GetStateOfTabReloaderAt(browser, login_tab_index)); | 1341 GetStateOfTabReloaderAt(browser, login_tab_index)); |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1564 NavigateToPageExpectNoTest(browser(), url, 1); | 1567 NavigateToPageExpectNoTest(browser(), url, 1); |
1565 } | 1568 } |
1566 | 1569 |
1567 // Check the captive portal result when the test request reports a network | 1570 // Check the captive portal result when the test request reports a network |
1568 // error. The check is triggered by a slow loading page, and the page | 1571 // error. The check is triggered by a slow loading page, and the page |
1569 // errors out only after getting a captive portal result. | 1572 // errors out only after getting a captive portal result. |
1570 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, RequestFails) { | 1573 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, RequestFails) { |
1571 SetUpCaptivePortalService( | 1574 SetUpCaptivePortalService( |
1572 browser()->profile(), | 1575 browser()->profile(), |
1573 URLRequestFailedJob::GetMockHttpUrl(net::ERR_CONNECTION_CLOSED)); | 1576 URLRequestFailedJob::GetMockHttpUrl(net::ERR_CONNECTION_CLOSED)); |
1574 SlowLoadNoCaptivePortal(browser(), RESULT_NO_RESPONSE); | 1577 SlowLoadNoCaptivePortal(browser(), captive_portal::RESULT_NO_RESPONSE); |
1575 } | 1578 } |
1576 | 1579 |
1577 // Same as above, but for the rather unlikely case that the connection times out | 1580 // Same as above, but for the rather unlikely case that the connection times out |
1578 // before the timer triggers. | 1581 // before the timer triggers. |
1579 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, RequestFailsFastTimout) { | 1582 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, RequestFailsFastTimout) { |
1580 SetUpCaptivePortalService( | 1583 SetUpCaptivePortalService( |
1581 browser()->profile(), | 1584 browser()->profile(), |
1582 URLRequestFailedJob::GetMockHttpUrl(net::ERR_CONNECTION_CLOSED)); | 1585 URLRequestFailedJob::GetMockHttpUrl(net::ERR_CONNECTION_CLOSED)); |
1583 FastTimeoutNoCaptivePortal(browser(), RESULT_NO_RESPONSE); | 1586 FastTimeoutNoCaptivePortal(browser(), captive_portal::RESULT_NO_RESPONSE); |
1584 } | 1587 } |
1585 | 1588 |
1586 // Checks the case that captive portal detection is disabled. | 1589 // Checks the case that captive portal detection is disabled. |
1587 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, Disabled) { | 1590 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, Disabled) { |
1588 EnableCaptivePortalDetection(browser()->profile(), false); | 1591 EnableCaptivePortalDetection(browser()->profile(), false); |
1589 SlowLoadNoCaptivePortal(browser(), RESULT_INTERNET_CONNECTED); | 1592 SlowLoadNoCaptivePortal(browser(), captive_portal::RESULT_INTERNET_CONNECTED); |
1590 } | 1593 } |
1591 | 1594 |
1592 // Checks that we look for a captive portal on HTTPS timeouts and don't reload | 1595 // Checks that we look for a captive portal on HTTPS timeouts and don't reload |
1593 // the error tab when the captive portal probe gets a 204 response, indicating | 1596 // the error tab when the captive portal probe gets a 204 response, indicating |
1594 // there is no captive portal. | 1597 // there is no captive portal. |
1595 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, InternetConnected) { | 1598 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, InternetConnected) { |
1596 // Can't just use SetBehindCaptivePortal(false), since then there wouldn't | 1599 // Can't just use SetBehindCaptivePortal(false), since then there wouldn't |
1597 // be a timeout. | 1600 // be a timeout. |
1598 ASSERT_TRUE(test_server()->Start()); | 1601 ASSERT_TRUE(test_server()->Start()); |
1599 SetUpCaptivePortalService(browser()->profile(), | 1602 SetUpCaptivePortalService(browser()->profile(), |
1600 test_server()->GetURL("nocontent")); | 1603 test_server()->GetURL("nocontent")); |
1601 SlowLoadNoCaptivePortal(browser(), RESULT_INTERNET_CONNECTED); | 1604 SlowLoadNoCaptivePortal(browser(), captive_portal::RESULT_INTERNET_CONNECTED); |
1602 } | 1605 } |
1603 | 1606 |
1604 // Checks that no login page is opened when the HTTP test URL redirects to an | 1607 // Checks that no login page is opened when the HTTP test URL redirects to an |
1605 // SSL certificate error. | 1608 // SSL certificate error. |
1606 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, RedirectSSLCertError) { | 1609 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, RedirectSSLCertError) { |
1607 // Need an HTTP TestServer to handle a dynamically created server redirect. | 1610 // Need an HTTP TestServer to handle a dynamically created server redirect. |
1608 ASSERT_TRUE(test_server()->Start()); | 1611 ASSERT_TRUE(test_server()->Start()); |
1609 | 1612 |
1610 net::SpawnedTestServer::SSLOptions ssl_options; | 1613 net::SpawnedTestServer::SSLOptions ssl_options; |
1611 ssl_options.server_certificate = | 1614 ssl_options.server_certificate = |
1612 net::SpawnedTestServer::SSLOptions::CERT_MISMATCHED_NAME; | 1615 net::SpawnedTestServer::SSLOptions::CERT_MISMATCHED_NAME; |
1613 net::SpawnedTestServer https_server( | 1616 net::SpawnedTestServer https_server( |
1614 net::SpawnedTestServer::TYPE_HTTPS, ssl_options, | 1617 net::SpawnedTestServer::TYPE_HTTPS, ssl_options, |
1615 base::FilePath(FILE_PATH_LITERAL("chrome/test/data"))); | 1618 base::FilePath(FILE_PATH_LITERAL("chrome/test/data"))); |
1616 ASSERT_TRUE(https_server.Start()); | 1619 ASSERT_TRUE(https_server.Start()); |
1617 | 1620 |
1618 GURL ssl_login_url = https_server.GetURL(kTestServerLoginPath); | 1621 GURL ssl_login_url = https_server.GetURL(kTestServerLoginPath); |
1619 | 1622 |
1620 CaptivePortalService* captive_portal_service = | 1623 CaptivePortalService* captive_portal_service = |
1621 CaptivePortalServiceFactory::GetForProfile(browser()->profile()); | 1624 CaptivePortalServiceFactory::GetForProfile(browser()->profile()); |
1622 ASSERT_TRUE(captive_portal_service); | 1625 ASSERT_TRUE(captive_portal_service); |
1623 SetUpCaptivePortalService( | 1626 SetUpCaptivePortalService( |
1624 browser()->profile(), | 1627 browser()->profile(), |
1625 test_server()->GetURL(CreateServerRedirect(ssl_login_url.spec()))); | 1628 test_server()->GetURL(CreateServerRedirect(ssl_login_url.spec()))); |
1626 | 1629 |
1627 SlowLoadNoCaptivePortal(browser(), RESULT_NO_RESPONSE); | 1630 SlowLoadNoCaptivePortal(browser(), captive_portal::RESULT_NO_RESPONSE); |
1628 } | 1631 } |
1629 | 1632 |
1630 // A slow SSL load triggers a captive portal check. The user logs on before | 1633 // A slow SSL load triggers a captive portal check. The user logs on before |
1631 // the SSL page times out. We wait for the timeout and subsequent reload. | 1634 // the SSL page times out. We wait for the timeout and subsequent reload. |
1632 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, Login) { | 1635 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, Login) { |
1633 // Load starts, detect captive portal and open up a login tab. | 1636 // Load starts, detect captive portal and open up a login tab. |
1634 SlowLoadBehindCaptivePortal(browser(), true); | 1637 SlowLoadBehindCaptivePortal(browser(), true); |
1635 | 1638 |
1636 // Log in. One loading tab, no timed out ones. | 1639 // Log in. One loading tab, no timed out ones. |
1637 Login(browser(), 1, 0); | 1640 Login(browser(), 1, 0); |
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1941 GetStateOfTabReloaderAt(browser(), 0)); | 1944 GetStateOfTabReloaderAt(browser(), 0)); |
1942 EXPECT_EQ(0, portal_observer.num_results_received()); | 1945 EXPECT_EQ(0, portal_observer.num_results_received()); |
1943 } | 1946 } |
1944 | 1947 |
1945 // Checks that navigating back to a timeout triggers captive portal detection. | 1948 // Checks that navigating back to a timeout triggers captive portal detection. |
1946 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, GoBackToTimeout) { | 1949 IN_PROC_BROWSER_TEST_F(CaptivePortalBrowserTest, GoBackToTimeout) { |
1947 // Disable captive portal detection so the first navigation doesn't open a | 1950 // Disable captive portal detection so the first navigation doesn't open a |
1948 // login tab. | 1951 // login tab. |
1949 EnableCaptivePortalDetection(browser()->profile(), false); | 1952 EnableCaptivePortalDetection(browser()->profile(), false); |
1950 | 1953 |
1951 SlowLoadNoCaptivePortal(browser(), RESULT_INTERNET_CONNECTED); | 1954 SlowLoadNoCaptivePortal(browser(), captive_portal::RESULT_INTERNET_CONNECTED); |
1952 | 1955 |
1953 // Navigate to a working page. | 1956 // Navigate to a working page. |
1954 ui_test_utils::NavigateToURL( | 1957 ui_test_utils::NavigateToURL( |
1955 browser(), URLRequestMockHTTPJob::GetMockUrl( | 1958 browser(), URLRequestMockHTTPJob::GetMockUrl( |
1956 base::FilePath(FILE_PATH_LITERAL("title2.html")))); | 1959 base::FilePath(FILE_PATH_LITERAL("title2.html")))); |
1957 ASSERT_EQ(CaptivePortalTabReloader::STATE_NONE, | 1960 ASSERT_EQ(CaptivePortalTabReloader::STATE_NONE, |
1958 GetStateOfTabReloaderAt(browser(), 0)); | 1961 GetStateOfTabReloaderAt(browser(), 0)); |
1959 | 1962 |
1960 EnableCaptivePortalDetection(browser()->profile(), true); | 1963 EnableCaptivePortalDetection(browser()->profile(), true); |
1961 | 1964 |
(...skipping 10 matching lines...) Expand all Loading... |
1972 | 1975 |
1973 // Wait for the check triggered by the broken tab and for the login tab to | 1976 // Wait for the check triggered by the broken tab and for the login tab to |
1974 // stop loading. | 1977 // stop loading. |
1975 portal_observer.WaitForResults(1); | 1978 portal_observer.WaitForResults(1); |
1976 navigation_observer.WaitForNavigations(1); | 1979 navigation_observer.WaitForNavigations(1); |
1977 // Make sure the request has been issued. | 1980 // Make sure the request has been issued. |
1978 URLRequestTimeoutOnDemandJob::WaitForJobs(1); | 1981 URLRequestTimeoutOnDemandJob::WaitForJobs(1); |
1979 | 1982 |
1980 EXPECT_EQ(1, portal_observer.num_results_received()); | 1983 EXPECT_EQ(1, portal_observer.num_results_received()); |
1981 ASSERT_FALSE(CheckPending(browser())); | 1984 ASSERT_FALSE(CheckPending(browser())); |
1982 ASSERT_EQ(RESULT_BEHIND_CAPTIVE_PORTAL, | 1985 ASSERT_EQ(captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL, |
1983 portal_observer.captive_portal_result()); | 1986 portal_observer.captive_portal_result()); |
1984 | 1987 |
1985 ASSERT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, | 1988 ASSERT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, |
1986 GetStateOfTabReloaderAt(browser(), 0)); | 1989 GetStateOfTabReloaderAt(browser(), 0)); |
1987 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, | 1990 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, |
1988 GetStateOfTabReloaderAt(browser(), 1)); | 1991 GetStateOfTabReloaderAt(browser(), 1)); |
1989 ASSERT_TRUE(IsLoginTab(browser()->tab_strip_model()->GetWebContentsAt(1))); | 1992 ASSERT_TRUE(IsLoginTab(browser()->tab_strip_model()->GetWebContentsAt(1))); |
1990 | 1993 |
1991 ASSERT_EQ(2, tab_strip_model->count()); | 1994 ASSERT_EQ(2, tab_strip_model->count()); |
1992 EXPECT_EQ(1, tab_strip_model->active_index()); | 1995 EXPECT_EQ(1, tab_strip_model->active_index()); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2025 | 2028 |
2026 // Wait for the check triggered by the broken tab and for the login tab to | 2029 // Wait for the check triggered by the broken tab and for the login tab to |
2027 // stop loading. | 2030 // stop loading. |
2028 portal_observer.WaitForResults(1); | 2031 portal_observer.WaitForResults(1); |
2029 navigation_observer.WaitForNavigations(1); | 2032 navigation_observer.WaitForNavigations(1); |
2030 // Make sure the request has been issued. | 2033 // Make sure the request has been issued. |
2031 URLRequestTimeoutOnDemandJob::WaitForJobs(1); | 2034 URLRequestTimeoutOnDemandJob::WaitForJobs(1); |
2032 | 2035 |
2033 ASSERT_EQ(1, portal_observer.num_results_received()); | 2036 ASSERT_EQ(1, portal_observer.num_results_received()); |
2034 ASSERT_FALSE(CheckPending(browser())); | 2037 ASSERT_FALSE(CheckPending(browser())); |
2035 ASSERT_EQ(RESULT_BEHIND_CAPTIVE_PORTAL, | 2038 ASSERT_EQ(captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL, |
2036 portal_observer.captive_portal_result()); | 2039 portal_observer.captive_portal_result()); |
2037 | 2040 |
2038 ASSERT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, | 2041 ASSERT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, |
2039 GetStateOfTabReloaderAt(browser(), 0)); | 2042 GetStateOfTabReloaderAt(browser(), 0)); |
2040 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, | 2043 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, |
2041 GetStateOfTabReloaderAt(browser(), 1)); | 2044 GetStateOfTabReloaderAt(browser(), 1)); |
2042 ASSERT_TRUE(IsLoginTab(tab_strip_model->GetWebContentsAt(1))); | 2045 ASSERT_TRUE(IsLoginTab(tab_strip_model->GetWebContentsAt(1))); |
2043 | 2046 |
2044 ASSERT_EQ(2, tab_strip_model->count()); | 2047 ASSERT_EQ(2, tab_strip_model->count()); |
2045 EXPECT_EQ(1, tab_strip_model->active_index()); | 2048 EXPECT_EQ(1, tab_strip_model->active_index()); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2105 // Check that the only two navigated tabs were the new error tab in the | 2108 // Check that the only two navigated tabs were the new error tab in the |
2106 // backround windows, and the login tab in the active window. | 2109 // backround windows, and the login tab in the active window. |
2107 EXPECT_EQ(1, navigation_observer.NumNavigationsForTab( | 2110 EXPECT_EQ(1, navigation_observer.NumNavigationsForTab( |
2108 inactive_browser->tab_strip_model()->GetWebContentsAt(1))); | 2111 inactive_browser->tab_strip_model()->GetWebContentsAt(1))); |
2109 EXPECT_EQ(1, navigation_observer.NumNavigationsForTab( | 2112 EXPECT_EQ(1, navigation_observer.NumNavigationsForTab( |
2110 active_browser->tab_strip_model()->GetWebContentsAt(1))); | 2113 active_browser->tab_strip_model()->GetWebContentsAt(1))); |
2111 EXPECT_EQ(0, NumLoadingTabs()); | 2114 EXPECT_EQ(0, NumLoadingTabs()); |
2112 | 2115 |
2113 // Check captive portal test results. | 2116 // Check captive portal test results. |
2114 portal_observer.WaitForResults(1); | 2117 portal_observer.WaitForResults(1); |
2115 ASSERT_EQ(RESULT_BEHIND_CAPTIVE_PORTAL, | 2118 ASSERT_EQ(captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL, |
2116 portal_observer.captive_portal_result()); | 2119 portal_observer.captive_portal_result()); |
2117 EXPECT_EQ(1, portal_observer.num_results_received()); | 2120 EXPECT_EQ(1, portal_observer.num_results_received()); |
2118 | 2121 |
2119 // Check the inactive browser. | 2122 // Check the inactive browser. |
2120 EXPECT_EQ(2, inactive_browser->tab_strip_model()->count()); | 2123 EXPECT_EQ(2, inactive_browser->tab_strip_model()->count()); |
2121 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, | 2124 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, |
2122 GetStateOfTabReloaderAt(inactive_browser, 0)); | 2125 GetStateOfTabReloaderAt(inactive_browser, 0)); |
2123 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, | 2126 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, |
2124 GetStateOfTabReloaderAt(inactive_browser, 1)); | 2127 GetStateOfTabReloaderAt(inactive_browser, 1)); |
2125 | 2128 |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2191 content::BrowserThread::PostTask( | 2194 content::BrowserThread::PostTask( |
2192 content::BrowserThread::IO, FROM_HERE, | 2195 content::BrowserThread::IO, FROM_HERE, |
2193 base::Bind(&AddHstsHost, | 2196 base::Bind(&AddHstsHost, |
2194 make_scoped_refptr(browser()->profile()->GetRequestContext()), | 2197 make_scoped_refptr(browser()->profile()->GetRequestContext()), |
2195 http_timeout_url.host())); | 2198 http_timeout_url.host())); |
2196 | 2199 |
2197 SlowLoadBehindCaptivePortal(browser(), true, http_timeout_url, 1, 1); | 2200 SlowLoadBehindCaptivePortal(browser(), true, http_timeout_url, 1, 1); |
2198 Login(browser(), 1, 0); | 2201 Login(browser(), 1, 0); |
2199 FailLoadsAfterLogin(browser(), 1); | 2202 FailLoadsAfterLogin(browser(), 1); |
2200 } | 2203 } |
2201 | |
2202 } // namespace captive_portal | |
OLD | NEW |