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::CaptivePortalDetector; | |
mmenke
2014/04/21 14:32:43
If we're going to share the captive_portal namespa
stevenjb
2014/04/21 16:42:27
Done.
| |
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 namespace captive_portal { |
62 | 63 |
63 namespace { | 64 namespace { |
64 | 65 |
65 // Path of the fake login page, when using the TestServer. | 66 // Path of the fake login page, when using the TestServer. |
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
678 public: | 679 public: |
679 explicit CaptivePortalObserver(Profile* profile); | 680 explicit CaptivePortalObserver(Profile* profile); |
680 | 681 |
681 // Runs the message loop until until at exactly |update_count| capitive portal | 682 // Runs the message loop until until at exactly |update_count| capitive portal |
682 // results have been received, since this creation of |this|. Expects no | 683 // results have been received, since this creation of |this|. Expects no |
683 // additional captive portal results. | 684 // additional captive portal results. |
684 void WaitForResults(int num_results_to_wait_for); | 685 void WaitForResults(int num_results_to_wait_for); |
685 | 686 |
686 int num_results_received() const { return num_results_received_; } | 687 int num_results_received() const { return num_results_received_; } |
687 | 688 |
688 Result captive_portal_result() const { | 689 CaptivePortalResult captive_portal_result() const { |
689 return captive_portal_result_; | 690 return captive_portal_result_; |
690 } | 691 } |
691 | 692 |
692 private: | 693 private: |
693 // Records results and exits the message loop, if needed. | 694 // Records results and exits the message loop, if needed. |
694 virtual void Observe(int type, | 695 virtual void Observe(int type, |
695 const content::NotificationSource& source, | 696 const content::NotificationSource& source, |
696 const content::NotificationDetails& details) OVERRIDE; | 697 const content::NotificationDetails& details) OVERRIDE; |
697 | 698 |
698 // Number of times OnPortalResult has been called since construction. | 699 // Number of times OnPortalResult has been called since construction. |
699 int num_results_received_; | 700 int num_results_received_; |
700 | 701 |
701 // If WaitForResults was called, the total number of updates for which to | 702 // If WaitForResults was called, the total number of updates for which to |
702 // wait. Value doesn't matter when |waiting_for_result_| is false. | 703 // wait. Value doesn't matter when |waiting_for_result_| is false. |
703 int num_results_to_wait_for_; | 704 int num_results_to_wait_for_; |
704 | 705 |
705 bool waiting_for_result_; | 706 bool waiting_for_result_; |
706 | 707 |
707 Profile* profile_; | 708 Profile* profile_; |
708 | 709 |
709 CaptivePortalService* captive_portal_service_; | 710 CaptivePortalService* captive_portal_service_; |
710 | 711 |
711 // Last result received. | 712 // Last result received. |
712 Result captive_portal_result_; | 713 CaptivePortalResult captive_portal_result_; |
713 | 714 |
714 content::NotificationRegistrar registrar_; | 715 content::NotificationRegistrar registrar_; |
715 | 716 |
716 DISALLOW_COPY_AND_ASSIGN(CaptivePortalObserver); | 717 DISALLOW_COPY_AND_ASSIGN(CaptivePortalObserver); |
717 }; | 718 }; |
718 | 719 |
719 CaptivePortalObserver::CaptivePortalObserver(Profile* profile) | 720 CaptivePortalObserver::CaptivePortalObserver(Profile* profile) |
720 : num_results_received_(0), | 721 : num_results_received_(0), |
721 num_results_to_wait_for_(0), | 722 num_results_to_wait_for_(0), |
722 waiting_for_result_(false), | 723 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 | 829 // active tab will end up being navigated. It should be 1, except for the |
829 // Link Doctor page, which acts like two navigations. | 830 // Link Doctor page, which acts like two navigations. |
830 void NavigateToPageExpectNoTest(Browser* browser, | 831 void NavigateToPageExpectNoTest(Browser* browser, |
831 const GURL& url, | 832 const GURL& url, |
832 int expected_navigations); | 833 int expected_navigations); |
833 | 834 |
834 // Navigates |browser|'s active tab to an SSL tab that takes a while to load, | 835 // 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 | 836 // triggering a captive portal check, which is expected to give the result |
836 // |expected_result|. The page finishes loading, with a timeout, after the | 837 // |expected_result|. The page finishes loading, with a timeout, after the |
837 // captive portal check. | 838 // captive portal check. |
838 void SlowLoadNoCaptivePortal(Browser* browser, Result expected_result); | 839 void SlowLoadNoCaptivePortal(Browser* browser, |
840 CaptivePortalResult expected_result); | |
839 | 841 |
840 // Navigates |browser|'s active tab to an SSL timeout, expecting a captive | 842 // 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 | 843 // portal check to be triggered and return a result which will indicates |
842 // there's no detected captive portal. | 844 // there's no detected captive portal. |
843 void FastTimeoutNoCaptivePortal(Browser* browser, Result expected_result); | 845 void FastTimeoutNoCaptivePortal(Browser* browser, |
846 CaptivePortalResult expected_result); | |
844 | 847 |
845 // Navigates the active tab to a slow loading SSL page, which will then | 848 // 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 | 849 // 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 | 850 // portal. The slow loading page will continue to load after the function |
848 // returns, until URLRequestTimeoutOnDemandJob::FailJobs() is called, | 851 // returns, until URLRequestTimeoutOnDemandJob::FailJobs() is called, |
849 // at which point it will timeout. | 852 // at which point it will timeout. |
850 // | 853 // |
851 // When |expect_login_tab| is false, no login tab is expected to be opened, | 854 // 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 | 855 // because one already exists, and the function returns once the captive |
853 // portal test is complete. | 856 // 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()); | 1047 EXPECT_EQ(0, portal_observer.num_results_received()); |
1045 EXPECT_FALSE(CheckPending(browser)); | 1048 EXPECT_FALSE(CheckPending(browser)); |
1046 EXPECT_EQ(1, browser->tab_strip_model()->count()); | 1049 EXPECT_EQ(1, browser->tab_strip_model()->count()); |
1047 EXPECT_EQ(expected_navigations, navigation_observer.num_navigations()); | 1050 EXPECT_EQ(expected_navigations, navigation_observer.num_navigations()); |
1048 EXPECT_EQ(0, NumLoadingTabs()); | 1051 EXPECT_EQ(0, NumLoadingTabs()); |
1049 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, | 1052 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, |
1050 GetStateOfTabReloaderAt(browser, 0)); | 1053 GetStateOfTabReloaderAt(browser, 0)); |
1051 } | 1054 } |
1052 | 1055 |
1053 void CaptivePortalBrowserTest::SlowLoadNoCaptivePortal( | 1056 void CaptivePortalBrowserTest::SlowLoadNoCaptivePortal( |
1054 Browser* browser, Result expected_result) { | 1057 Browser* browser, |
1058 CaptivePortalResult expected_result) { | |
1055 CaptivePortalTabReloader* tab_reloader = | 1059 CaptivePortalTabReloader* tab_reloader = |
1056 GetTabReloader(browser->tab_strip_model()->GetActiveWebContents()); | 1060 GetTabReloader(browser->tab_strip_model()->GetActiveWebContents()); |
1057 ASSERT_TRUE(tab_reloader); | 1061 ASSERT_TRUE(tab_reloader); |
1058 SetSlowSSLLoadTime(tab_reloader, base::TimeDelta()); | 1062 SetSlowSSLLoadTime(tab_reloader, base::TimeDelta()); |
1059 | 1063 |
1060 MultiNavigationObserver navigation_observer; | 1064 MultiNavigationObserver navigation_observer; |
1061 CaptivePortalObserver portal_observer(browser->profile()); | 1065 CaptivePortalObserver portal_observer(browser->profile()); |
1062 ui_test_utils::NavigateToURLWithDisposition(browser, | 1066 ui_test_utils::NavigateToURLWithDisposition(browser, |
1063 GURL(kMockHttpsUrl), | 1067 GURL(kMockHttpsUrl), |
1064 CURRENT_TAB, | 1068 CURRENT_TAB, |
(...skipping 18 matching lines...) Expand all Loading... | |
1083 ASSERT_EQ(1, browser->tab_strip_model()->count()); | 1087 ASSERT_EQ(1, browser->tab_strip_model()->count()); |
1084 EXPECT_EQ(1, portal_observer.num_results_received()); | 1088 EXPECT_EQ(1, portal_observer.num_results_received()); |
1085 EXPECT_FALSE(CheckPending(browser)); | 1089 EXPECT_FALSE(CheckPending(browser)); |
1086 EXPECT_EQ(0, NumLoadingTabs()); | 1090 EXPECT_EQ(0, NumLoadingTabs()); |
1087 | 1091 |
1088 // Set a slow SSL load time to prevent the timer from triggering. | 1092 // Set a slow SSL load time to prevent the timer from triggering. |
1089 SetSlowSSLLoadTime(tab_reloader, base::TimeDelta::FromDays(1)); | 1093 SetSlowSSLLoadTime(tab_reloader, base::TimeDelta::FromDays(1)); |
1090 } | 1094 } |
1091 | 1095 |
1092 void CaptivePortalBrowserTest::FastTimeoutNoCaptivePortal( | 1096 void CaptivePortalBrowserTest::FastTimeoutNoCaptivePortal( |
1093 Browser* browser, Result expected_result) { | 1097 Browser* browser, |
1098 CaptivePortalResult expected_result) { | |
1094 ASSERT_NE(expected_result, RESULT_BEHIND_CAPTIVE_PORTAL); | 1099 ASSERT_NE(expected_result, RESULT_BEHIND_CAPTIVE_PORTAL); |
1095 | 1100 |
1096 // Set the load time to be large, so the timer won't trigger. The value is | 1101 // 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. | 1102 // not restored at the end of the function. |
1098 CaptivePortalTabReloader* tab_reloader = | 1103 CaptivePortalTabReloader* tab_reloader = |
1099 GetTabReloader(browser->tab_strip_model()->GetActiveWebContents()); | 1104 GetTabReloader(browser->tab_strip_model()->GetActiveWebContents()); |
1100 ASSERT_TRUE(tab_reloader); | 1105 ASSERT_TRUE(tab_reloader); |
1101 SetSlowSSLLoadTime(tab_reloader, base::TimeDelta::FromHours(1)); | 1106 SetSlowSSLLoadTime(tab_reloader, base::TimeDelta::FromHours(1)); |
1102 | 1107 |
1103 MultiNavigationObserver navigation_observer; | 1108 MultiNavigationObserver navigation_observer; |
(...skipping 1089 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2193 base::Bind(&AddHstsHost, | 2198 base::Bind(&AddHstsHost, |
2194 make_scoped_refptr(browser()->profile()->GetRequestContext()), | 2199 make_scoped_refptr(browser()->profile()->GetRequestContext()), |
2195 http_timeout_url.host())); | 2200 http_timeout_url.host())); |
2196 | 2201 |
2197 SlowLoadBehindCaptivePortal(browser(), true, http_timeout_url, 1, 1); | 2202 SlowLoadBehindCaptivePortal(browser(), true, http_timeout_url, 1, 1); |
2198 Login(browser(), 1, 0); | 2203 Login(browser(), 1, 0); |
2199 FailLoadsAfterLogin(browser(), 1); | 2204 FailLoadsAfterLogin(browser(), 1); |
2200 } | 2205 } |
2201 | 2206 |
2202 } // namespace captive_portal | 2207 } // namespace captive_portal |
OLD | NEW |