Chromium Code Reviews| 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 <utility> | 5 #include <utility> |
| 6 | 6 |
| 7 #include "base/base64.h" | 7 #include "base/base64.h" |
| 8 #include "base/base_switches.h" | 8 #include "base/base_switches.h" |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 61 #include "components/content_settings/core/browser/host_content_settings_map.h" | 61 #include "components/content_settings/core/browser/host_content_settings_map.h" |
| 62 #include "components/network_session_configurator/common/network_switches.h" | 62 #include "components/network_session_configurator/common/network_switches.h" |
| 63 #include "components/network_time/network_time_test_utils.h" | 63 #include "components/network_time/network_time_test_utils.h" |
| 64 #include "components/network_time/network_time_tracker.h" | 64 #include "components/network_time/network_time_tracker.h" |
| 65 #include "components/prefs/testing_pref_service.h" | 65 #include "components/prefs/testing_pref_service.h" |
| 66 #include "components/security_interstitials/core/controller_client.h" | 66 #include "components/security_interstitials/core/controller_client.h" |
| 67 #include "components/security_interstitials/core/metrics_helper.h" | 67 #include "components/security_interstitials/core/metrics_helper.h" |
| 68 #include "components/security_state/core/security_state.h" | 68 #include "components/security_state/core/security_state.h" |
| 69 #include "components/security_state/core/switches.h" | 69 #include "components/security_state/core/switches.h" |
| 70 #include "components/ssl_errors/error_classification.h" | 70 #include "components/ssl_errors/error_classification.h" |
| 71 #include "components/strings/grit/components_strings.h" | |
| 71 #include "components/variations/variations_associated_data.h" | 72 #include "components/variations/variations_associated_data.h" |
| 72 #include "components/variations/variations_switches.h" | 73 #include "components/variations/variations_switches.h" |
| 73 #include "components/web_modal/web_contents_modal_dialog_manager.h" | 74 #include "components/web_modal/web_contents_modal_dialog_manager.h" |
| 74 #include "content/public/browser/browser_context.h" | 75 #include "content/public/browser/browser_context.h" |
| 75 #include "content/public/browser/interstitial_page.h" | 76 #include "content/public/browser/interstitial_page.h" |
| 76 #include "content/public/browser/navigation_controller.h" | 77 #include "content/public/browser/navigation_controller.h" |
| 77 #include "content/public/browser/navigation_entry.h" | 78 #include "content/public/browser/navigation_entry.h" |
| 78 #include "content/public/browser/notification_details.h" | 79 #include "content/public/browser/notification_details.h" |
| 79 #include "content/public/browser/notification_service.h" | 80 #include "content/public/browser/notification_service.h" |
| 80 #include "content/public/browser/render_frame_host.h" | 81 #include "content/public/browser/render_frame_host.h" |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 107 #include "net/test/cert_test_util.h" | 108 #include "net/test/cert_test_util.h" |
| 108 #include "net/test/embedded_test_server/embedded_test_server.h" | 109 #include "net/test/embedded_test_server/embedded_test_server.h" |
| 109 #include "net/test/embedded_test_server/request_handler_util.h" | 110 #include "net/test/embedded_test_server/request_handler_util.h" |
| 110 #include "net/test/spawned_test_server/spawned_test_server.h" | 111 #include "net/test/spawned_test_server/spawned_test_server.h" |
| 111 #include "net/test/test_certificate_data.h" | 112 #include "net/test/test_certificate_data.h" |
| 112 #include "net/test/test_data_directory.h" | 113 #include "net/test/test_data_directory.h" |
| 113 #include "net/url_request/url_request_context.h" | 114 #include "net/url_request/url_request_context.h" |
| 114 #include "net/url_request/url_request_filter.h" | 115 #include "net/url_request/url_request_filter.h" |
| 115 #include "net/url_request/url_request_job.h" | 116 #include "net/url_request/url_request_job.h" |
| 116 #include "net/url_request/url_request_test_util.h" | 117 #include "net/url_request/url_request_test_util.h" |
| 118 #include "ui/base/l10n/l10n_util.h" | |
| 117 | 119 |
| 118 #if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION) | 120 #if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION) |
| 119 #include "chrome/browser/ssl/captive_portal_blocking_page.h" | 121 #include "chrome/browser/ssl/captive_portal_blocking_page.h" |
| 120 #endif | 122 #endif |
| 121 | 123 |
| 122 #if defined(USE_NSS_CERTS) | 124 #if defined(USE_NSS_CERTS) |
| 123 #include "chrome/browser/net/nss_context.h" | 125 #include "chrome/browser/net/nss_context.h" |
| 124 #include "net/cert/nss_cert_database.h" | 126 #include "net/cert/nss_cert_database.h" |
| 125 #endif // defined(USE_NSS_CERTS) | 127 #endif // defined(USE_NSS_CERTS) |
| 126 | 128 |
| (...skipping 3799 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3926 protected: | 3928 protected: |
| 3927 // SecurityInterstitialIDNTest implementation | 3929 // SecurityInterstitialIDNTest implementation |
| 3928 security_interstitials::SecurityInterstitialPage* CreateInterstitial( | 3930 security_interstitials::SecurityInterstitialPage* CreateInterstitial( |
| 3929 content::WebContents* contents, | 3931 content::WebContents* contents, |
| 3930 const GURL& request_url) const override { | 3932 const GURL& request_url) const override { |
| 3931 net::SSLInfo ssl_info; | 3933 net::SSLInfo ssl_info; |
| 3932 ssl_info.cert = | 3934 ssl_info.cert = |
| 3933 net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem"); | 3935 net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem"); |
| 3934 return SSLBlockingPage::Create( | 3936 return SSLBlockingPage::Create( |
| 3935 contents, net::ERR_CERT_CONTAINS_ERRORS, ssl_info, request_url, 0, | 3937 contents, net::ERR_CERT_CONTAINS_ERRORS, ssl_info, request_url, 0, |
| 3936 base::Time::NowFromSystemTime(), nullptr, | 3938 base::Time::NowFromSystemTime(), nullptr, false /* is superfish */, |
| 3937 base::Callback<void(content::CertificateRequestResultType)>()); | 3939 base::Callback<void(content::CertificateRequestResultType)>()); |
| 3938 } | 3940 } |
| 3939 }; | 3941 }; |
| 3940 | 3942 |
| 3941 // Flaky on mac: https://crbug.com/689846 | 3943 // Flaky on mac: https://crbug.com/689846 |
| 3942 #if defined(OS_MACOSX) | 3944 #if defined(OS_MACOSX) |
| 3943 #define MAYBE_SSLBlockingPageDecodesIDN DISABLED_SSLBlockingPageDecodesIDN | 3945 #define MAYBE_SSLBlockingPageDecodesIDN DISABLED_SSLBlockingPageDecodesIDN |
| 3944 #else | 3946 #else |
| 3945 #define MAYBE_SSLBlockingPageDecodesIDN SSLBlockingPageDecodesIDN | 3947 #define MAYBE_SSLBlockingPageDecodesIDN SSLBlockingPageDecodesIDN |
| 3946 #endif | 3948 #endif |
| (...skipping 793 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4740 histograms.ExpectUniqueSample("interstitial.ssl_error_handler.superfish", | 4742 histograms.ExpectUniqueSample("interstitial.ssl_error_handler.superfish", |
| 4741 true, 1); | 4743 true, 1); |
| 4742 } | 4744 } |
| 4743 | 4745 |
| 4744 // Tests that the Superfish histogram is recorded properly when the Superfish | 4746 // Tests that the Superfish histogram is recorded properly when the Superfish |
| 4745 // certificate is not present. | 4747 // certificate is not present. |
| 4746 IN_PROC_BROWSER_TEST_F(SuperfishSSLUITest, NoSuperfishRecorded) { | 4748 IN_PROC_BROWSER_TEST_F(SuperfishSSLUITest, NoSuperfishRecorded) { |
| 4747 SetUpCertVerifier(false /* use superfish cert */); | 4749 SetUpCertVerifier(false /* use superfish cert */); |
| 4748 GURL url(https_server_.GetURL("/ssl/google.html")); | 4750 GURL url(https_server_.GetURL("/ssl/google.html")); |
| 4749 base::HistogramTester histograms; | 4751 base::HistogramTester histograms; |
| 4750 ui_test_utils::NavigateToURL(browser(), url); | 4752 ui_test_utils::NavigateToURL(browser(), url); |
|
meacer
2017/06/22 22:35:37
nit: Inline this while you are at it?
estark
2017/06/22 23:17:48
Done.
| |
| 4751 histograms.ExpectUniqueSample("interstitial.ssl_error_handler.superfish", | 4753 histograms.ExpectUniqueSample("interstitial.ssl_error_handler.superfish", |
| 4752 false, 1); | 4754 false, 1); |
| 4753 } | 4755 } |
| 4754 | 4756 |
| 4757 // Tests that the Superfish interstitial is shown when the Finch feature is | |
| 4758 // enabled and the Superfish certificate is present. | |
| 4759 IN_PROC_BROWSER_TEST_F(SuperfishSSLUITest, SuperfishInterstitial) { | |
| 4760 base::test::ScopedFeatureList scoped_feature_list; | |
| 4761 scoped_feature_list.InitFromCommandLine("SuperfishInterstitial", | |
| 4762 std::string()); | |
| 4763 SetUpCertVerifier(true /* use superfish cert */); | |
| 4764 ui_test_utils::NavigateToURL(browser(), | |
| 4765 https_server_.GetURL("/ssl/google.html")); | |
| 4766 content::WebContents* tab = | |
| 4767 browser()->tab_strip_model()->GetActiveWebContents(); | |
| 4768 content::WaitForInterstitialAttach(tab); | |
| 4769 InterstitialPage* interstitial_page = tab->GetInterstitialPage(); | |
| 4770 ASSERT_TRUE(interstitial_page); | |
| 4771 EXPECT_TRUE(WaitForRenderFrameReady(interstitial_page->GetMainFrame())); | |
| 4772 EXPECT_EQ(SSLBlockingPage::kTypeForTesting, | |
| 4773 interstitial_page->GetDelegateForTesting()->GetTypeForTesting()); | |
| 4774 | |
| 4775 // Look for keywords on the page to check that the Superfish interstitial is | |
| 4776 // showing. | |
| 4777 std::string expected_title = | |
|
meacer
2017/06/22 22:35:37
nit: const
estark
2017/06/22 23:17:48
Done.
| |
| 4778 l10n_util::GetStringUTF8(IDS_SSL_SUPERFISH_HEADING); | |
| 4779 EXPECT_TRUE(chrome_browser_interstitials::IsInterstitialDisplayingText( | |
|
estark
2017/06/22 22:01:05
I spent like an hour trying to rewrite this method
| |
| 4780 interstitial_page, expected_title)); | |
| 4781 } | |
| 4782 | |
| 4783 // Tests that the Superfish interstitial is not shown when the Finch feature is | |
| 4784 // disabled. | |
| 4785 IN_PROC_BROWSER_TEST_F(SuperfishSSLUITest, SuperfishInterstitialDisabled) { | |
| 4786 base::test::ScopedFeatureList scoped_feature_list; | |
| 4787 scoped_feature_list.InitFromCommandLine(std::string(), | |
| 4788 "SuperfishInterstitial"); | |
| 4789 SetUpCertVerifier(true /* use superfish cert */); | |
| 4790 ui_test_utils::NavigateToURL(browser(), | |
| 4791 https_server_.GetURL("/ssl/google.html")); | |
| 4792 content::WebContents* tab = | |
| 4793 browser()->tab_strip_model()->GetActiveWebContents(); | |
| 4794 content::WaitForInterstitialAttach(tab); | |
| 4795 InterstitialPage* interstitial_page = tab->GetInterstitialPage(); | |
| 4796 ASSERT_TRUE(interstitial_page); | |
| 4797 EXPECT_TRUE(WaitForRenderFrameReady(interstitial_page->GetMainFrame())); | |
| 4798 EXPECT_EQ(SSLBlockingPage::kTypeForTesting, | |
| 4799 interstitial_page->GetDelegateForTesting()->GetTypeForTesting()); | |
| 4800 | |
| 4801 // Look for keywords on the page to check that the Superfish interstitial is | |
| 4802 // not showing. | |
| 4803 std::string expected_title = l10n_util::GetStringUTF8(IDS_SSL_V2_HEADING); | |
|
meacer
2017/06/22 22:35:37
const
estark
2017/06/22 23:17:48
Done.
| |
| 4804 EXPECT_TRUE(chrome_browser_interstitials::IsInterstitialDisplayingText( | |
| 4805 interstitial_page, expected_title)); | |
| 4806 } | |
| 4807 | |
| 4755 // TODO(jcampan): more tests to do below. | 4808 // TODO(jcampan): more tests to do below. |
| 4756 | 4809 |
| 4757 // Visit a page over https that contains a frame with a redirect. | 4810 // Visit a page over https that contains a frame with a redirect. |
| 4758 | 4811 |
| 4759 // XMLHttpRequest insecure content in synchronous mode. | 4812 // XMLHttpRequest insecure content in synchronous mode. |
| 4760 | 4813 |
| 4761 // XMLHttpRequest insecure content in asynchronous mode. | 4814 // XMLHttpRequest insecure content in asynchronous mode. |
| 4762 | 4815 |
| 4763 // XMLHttpRequest over bad ssl in synchronous mode. | 4816 // XMLHttpRequest over bad ssl in synchronous mode. |
| 4764 | 4817 |
| 4765 // XMLHttpRequest over OK ssl in synchronous mode. | 4818 // XMLHttpRequest over OK ssl in synchronous mode. |
| OLD | NEW |