| 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 // This test creates a fake safebrowsing service, where we can inject known- | 5 // This test creates a fake safebrowsing service, where we can inject known- |
| 6 // threat urls. It then uses a real browser to go to these urls, and sends | 6 // threat urls. It then uses a real browser to go to these urls, and sends |
| 7 // "goback" or "proceed" commands and verifies they work. | 7 // "goback" or "proceed" commands and verifies they work. |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 #include "chrome/browser/ssl/ssl_blocking_page.h" | 30 #include "chrome/browser/ssl/ssl_blocking_page.h" |
| 31 #include "chrome/browser/ui/browser.h" | 31 #include "chrome/browser/ui/browser.h" |
| 32 #include "chrome/browser/ui/browser_tabstrip.h" | 32 #include "chrome/browser/ui/browser_tabstrip.h" |
| 33 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 33 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 34 #include "chrome/common/pref_names.h" | 34 #include "chrome/common/pref_names.h" |
| 35 #include "chrome/common/url_constants.h" | 35 #include "chrome/common/url_constants.h" |
| 36 #include "chrome/test/base/in_process_browser_test.h" | 36 #include "chrome/test/base/in_process_browser_test.h" |
| 37 #include "chrome/test/base/ui_test_utils.h" | 37 #include "chrome/test/base/ui_test_utils.h" |
| 38 #include "components/prefs/pref_service.h" | 38 #include "components/prefs/pref_service.h" |
| 39 #include "components/safe_browsing_db/database_manager.h" | 39 #include "components/safe_browsing_db/database_manager.h" |
| 40 #include "components/safe_browsing_db/safe_browsing_prefs.h" |
| 40 #include "components/safe_browsing_db/test_database_manager.h" | 41 #include "components/safe_browsing_db/test_database_manager.h" |
| 41 #include "components/safe_browsing_db/util.h" | 42 #include "components/safe_browsing_db/util.h" |
| 42 #include "components/security_interstitials/core/controller_client.h" | 43 #include "components/security_interstitials/core/controller_client.h" |
| 43 #include "components/security_interstitials/core/metrics_helper.h" | 44 #include "components/security_interstitials/core/metrics_helper.h" |
| 44 #include "content/public/browser/interstitial_page.h" | 45 #include "content/public/browser/interstitial_page.h" |
| 45 #include "content/public/browser/navigation_controller.h" | 46 #include "content/public/browser/navigation_controller.h" |
| 46 #include "content/public/browser/notification_types.h" | 47 #include "content/public/browser/notification_types.h" |
| 47 #include "content/public/browser/render_frame_host.h" | 48 #include "content/public/browser/render_frame_host.h" |
| 48 #include "content/public/browser/render_process_host.h" | 49 #include "content/public/browser/render_process_host.h" |
| 49 #include "content/public/browser/web_contents.h" | 50 #include "content/public/browser/web_contents.h" |
| (...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 697 // Set up testing url containing iframe and cross site iframe. | 698 // Set up testing url containing iframe and cross site iframe. |
| 698 GURL url = SetupThreatIframeWarningAndNavigate(); | 699 GURL url = SetupThreatIframeWarningAndNavigate(); |
| 699 | 700 |
| 700 ThreatDetails* threat_details = details_factory_.get_details(); | 701 ThreatDetails* threat_details = details_factory_.get_details(); |
| 701 EXPECT_EQ(expect_threat_details, threat_details != nullptr); | 702 EXPECT_EQ(expect_threat_details, threat_details != nullptr); |
| 702 EXPECT_EQ(VISIBLE, GetVisibility("extended-reporting-opt-in")); | 703 EXPECT_EQ(VISIBLE, GetVisibility("extended-reporting-opt-in")); |
| 703 EXPECT_TRUE(Click("opt-in-checkbox")); | 704 EXPECT_TRUE(Click("opt-in-checkbox")); |
| 704 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); | 705 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); |
| 705 AssertNoInterstitial(true); // Assert the interstitial is gone | 706 AssertNoInterstitial(true); // Assert the interstitial is gone |
| 706 | 707 |
| 707 EXPECT_TRUE(browser()->profile()->GetPrefs()->GetBoolean( | 708 EXPECT_TRUE(IsExtendedReportingEnabled(*browser()->profile()->GetPrefs())); |
| 708 prefs::kSafeBrowsingExtendedReportingEnabled)); | |
| 709 EXPECT_EQ(url, | 709 EXPECT_EQ(url, |
| 710 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); | 710 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 711 | 711 |
| 712 if (expect_threat_details) { | 712 if (expect_threat_details) { |
| 713 threat_report_sent_runner->Run(); | 713 threat_report_sent_runner->Run(); |
| 714 std::string serialized = GetReportSent(); | 714 std::string serialized = GetReportSent(); |
| 715 ClientSafeBrowsingReportRequest report; | 715 ClientSafeBrowsingReportRequest report; |
| 716 ASSERT_TRUE(report.ParseFromString(serialized)); | 716 ASSERT_TRUE(report.ParseFromString(serialized)); |
| 717 // Verify the report is complete. | 717 // Verify the report is complete. |
| 718 EXPECT_TRUE(report.complete()); | 718 EXPECT_TRUE(report.complete()); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 769 | 769 |
| 770 ThreatDetails* threat_details = details_factory_.get_details(); | 770 ThreatDetails* threat_details = details_factory_.get_details(); |
| 771 EXPECT_EQ(expect_threat_details, threat_details != nullptr); | 771 EXPECT_EQ(expect_threat_details, threat_details != nullptr); |
| 772 | 772 |
| 773 // Go back. | 773 // Go back. |
| 774 EXPECT_EQ(VISIBLE, GetVisibility("extended-reporting-opt-in")); | 774 EXPECT_EQ(VISIBLE, GetVisibility("extended-reporting-opt-in")); |
| 775 EXPECT_TRUE(Click("opt-in-checkbox")); | 775 EXPECT_TRUE(Click("opt-in-checkbox")); |
| 776 EXPECT_TRUE(ClickAndWaitForDetach("primary-button")); | 776 EXPECT_TRUE(ClickAndWaitForDetach("primary-button")); |
| 777 AssertNoInterstitial(true); // Assert the interstitial is gone | 777 AssertNoInterstitial(true); // Assert the interstitial is gone |
| 778 | 778 |
| 779 EXPECT_TRUE(browser()->profile()->GetPrefs()->GetBoolean( | 779 EXPECT_TRUE(IsExtendedReportingEnabled(*browser()->profile()->GetPrefs())); |
| 780 prefs::kSafeBrowsingExtendedReportingEnabled)); | |
| 781 EXPECT_EQ(safe_url, | 780 EXPECT_EQ(safe_url, |
| 782 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); | 781 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 783 | 782 |
| 784 if (expect_threat_details) { | 783 if (expect_threat_details) { |
| 785 threat_report_sent_runner->Run(); | 784 threat_report_sent_runner->Run(); |
| 786 std::string serialized = GetReportSent(); | 785 std::string serialized = GetReportSent(); |
| 787 ClientSafeBrowsingReportRequest report; | 786 ClientSafeBrowsingReportRequest report; |
| 788 ASSERT_TRUE(report.ParseFromString(serialized)); | 787 ASSERT_TRUE(report.ParseFromString(serialized)); |
| 789 // Verify the report is complete. | 788 // Verify the report is complete. |
| 790 EXPECT_TRUE(report.complete()); | 789 EXPECT_TRUE(report.complete()); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 821 | 820 |
| 822 ThreatDetails* threat_details = details_factory_.get_details(); | 821 ThreatDetails* threat_details = details_factory_.get_details(); |
| 823 EXPECT_EQ(expect_threat_details, threat_details != nullptr); | 822 EXPECT_EQ(expect_threat_details, threat_details != nullptr); |
| 824 | 823 |
| 825 // Proceed through the warning. | 824 // Proceed through the warning. |
| 826 EXPECT_EQ(VISIBLE, GetVisibility("extended-reporting-opt-in")); | 825 EXPECT_EQ(VISIBLE, GetVisibility("extended-reporting-opt-in")); |
| 827 EXPECT_TRUE(Click("opt-in-checkbox")); | 826 EXPECT_TRUE(Click("opt-in-checkbox")); |
| 828 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); | 827 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); |
| 829 AssertNoInterstitial(true); // Assert the interstitial is gone | 828 AssertNoInterstitial(true); // Assert the interstitial is gone |
| 830 | 829 |
| 831 EXPECT_TRUE(browser()->profile()->GetPrefs()->GetBoolean( | 830 EXPECT_TRUE(IsExtendedReportingEnabled(*browser()->profile()->GetPrefs())); |
| 832 prefs::kSafeBrowsingExtendedReportingEnabled)); | |
| 833 EXPECT_EQ(url, | 831 EXPECT_EQ(url, |
| 834 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); | 832 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 835 | 833 |
| 836 if (expect_threat_details) { | 834 if (expect_threat_details) { |
| 837 threat_report_sent_runner->Run(); | 835 threat_report_sent_runner->Run(); |
| 838 std::string serialized = GetReportSent(); | 836 std::string serialized = GetReportSent(); |
| 839 ClientSafeBrowsingReportRequest report; | 837 ClientSafeBrowsingReportRequest report; |
| 840 ASSERT_TRUE(report.ParseFromString(serialized)); | 838 ASSERT_TRUE(report.ParseFromString(serialized)); |
| 841 // Verify the report is complete. | 839 // Verify the report is complete. |
| 842 EXPECT_TRUE(report.complete()); | 840 EXPECT_TRUE(report.complete()); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 869 // The "proceed" command should go back instead, if proceeding is disabled. | 867 // The "proceed" command should go back instead, if proceeding is disabled. |
| 870 AssertNoInterstitial(true); | 868 AssertNoInterstitial(true); |
| 871 EXPECT_EQ(GURL(url::kAboutBlankURL), // Back to "about:blank" | 869 EXPECT_EQ(GURL(url::kAboutBlankURL), // Back to "about:blank" |
| 872 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); | 870 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); |
| 873 } | 871 } |
| 874 | 872 |
| 875 // Verifies that the reporting checkbox is hidden on non-HTTP pages. | 873 // Verifies that the reporting checkbox is hidden on non-HTTP pages. |
| 876 // TODO(mattm): Should also verify that no report is sent, but there isn't a | 874 // TODO(mattm): Should also verify that no report is sent, but there isn't a |
| 877 // good way to do that in the current design. | 875 // good way to do that in the current design. |
| 878 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, ReportingDisabled) { | 876 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, ReportingDisabled) { |
| 879 browser()->profile()->GetPrefs()->SetBoolean( | 877 browser()->profile()->GetPrefs()->SetBoolean(GetExtendedReportingPrefName(), |
| 880 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 878 true); |
| 881 | 879 |
| 882 TestReportingDisabledAndDontProceed( | 880 TestReportingDisabledAndDontProceed( |
| 883 net::URLRequestMockHTTPJob::GetMockHttpsUrl(kEmptyPage)); | 881 net::URLRequestMockHTTPJob::GetMockHttpsUrl(kEmptyPage)); |
| 884 } | 882 } |
| 885 | 883 |
| 886 // Verifies that the reporting checkbox is hidden when opt-in is | 884 // Verifies that the reporting checkbox is hidden when opt-in is |
| 887 // disabled by policy. | 885 // disabled by policy. |
| 888 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, | 886 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
| 889 ReportingDisabledByPolicy) { | 887 ReportingDisabledByPolicy) { |
| 890 browser()->profile()->GetPrefs()->SetBoolean( | 888 browser()->profile()->GetPrefs()->SetBoolean(GetExtendedReportingPrefName(), |
| 891 prefs::kSafeBrowsingExtendedReportingEnabled, true); | 889 true); |
| 892 browser()->profile()->GetPrefs()->SetBoolean( | 890 browser()->profile()->GetPrefs()->SetBoolean( |
| 893 prefs::kSafeBrowsingExtendedReportingOptInAllowed, false); | 891 prefs::kSafeBrowsingExtendedReportingOptInAllowed, false); |
| 894 | 892 |
| 895 TestReportingDisabledAndDontProceed( | 893 TestReportingDisabledAndDontProceed( |
| 896 net::URLRequestMockHTTPJob::GetMockUrl(kEmptyPage)); | 894 net::URLRequestMockHTTPJob::GetMockUrl(kEmptyPage)); |
| 897 } | 895 } |
| 898 | 896 |
| 899 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, LearnMore) { | 897 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, LearnMore) { |
| 900 SetupWarningAndNavigate(); | 898 SetupWarningAndNavigate(); |
| 901 EXPECT_TRUE(ClickAndWaitForDetach("learn-more-link")); | 899 EXPECT_TRUE(ClickAndWaitForDetach("learn-more-link")); |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1153 | 1151 |
| 1154 INSTANTIATE_TEST_CASE_P( | 1152 INSTANTIATE_TEST_CASE_P( |
| 1155 SafeBrowsingBlockingPageIDNTestWithThreatType, | 1153 SafeBrowsingBlockingPageIDNTestWithThreatType, |
| 1156 SafeBrowsingBlockingPageIDNTest, | 1154 SafeBrowsingBlockingPageIDNTest, |
| 1157 testing::Combine(testing::Values(false, true), | 1155 testing::Combine(testing::Values(false, true), |
| 1158 testing::Values(SB_THREAT_TYPE_URL_MALWARE, | 1156 testing::Values(SB_THREAT_TYPE_URL_MALWARE, |
| 1159 SB_THREAT_TYPE_URL_PHISHING, | 1157 SB_THREAT_TYPE_URL_PHISHING, |
| 1160 SB_THREAT_TYPE_URL_UNWANTED))); | 1158 SB_THREAT_TYPE_URL_UNWANTED))); |
| 1161 | 1159 |
| 1162 } // namespace safe_browsing | 1160 } // namespace safe_browsing |
| OLD | NEW |