Chromium Code Reviews| Index: chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc |
| diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc |
| index 1b92c1e0d4ca5252bea38c4fabd24ae4dc91a756..4f91ff86f28121f534d5041fa0fe4ef98a4e9677 100644 |
| --- a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc |
| +++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc |
| @@ -25,6 +25,8 @@ |
| #include "chrome/browser/safe_browsing/test_safe_browsing_service.h" |
| #include "chrome/browser/safe_browsing/threat_details.h" |
| #include "chrome/browser/safe_browsing/ui_manager.h" |
| +#include "chrome/browser/ssl/cert_verifier_browser_test.h" |
| +#include "chrome/browser/ssl/chrome_security_state_model_client.h" |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/browser/ui/browser_tabstrip.h" |
| #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| @@ -47,6 +49,9 @@ |
| #include "content/public/test/browser_test_utils.h" |
| #include "content/public/test/test_browser_thread.h" |
| #include "content/public/test/test_utils.h" |
| +#include "net/cert/cert_verify_result.h" |
| +#include "net/cert/mock_cert_verifier.h" |
| +#include "net/test/embedded_test_server/embedded_test_server.h" |
| #include "net/test/url_request/url_request_mock_http_job.h" |
| using chrome_browser_interstitials::SecurityInterstitialIDNTest; |
| @@ -270,7 +275,7 @@ class TestSafeBrowsingBlockingPageFactory |
| // Tests the safe browsing blocking page in a browser. |
| class SafeBrowsingBlockingPageBrowserTest |
| - : public InProcessBrowserTest, |
| + : public CertVerifierBrowserTest, |
| public testing::WithParamInterface<testing::tuple<SBThreatType, bool>> { |
| public: |
| enum Visibility { |
| @@ -279,7 +284,8 @@ class SafeBrowsingBlockingPageBrowserTest |
| VISIBLE = 1 |
| }; |
| - SafeBrowsingBlockingPageBrowserTest() {} |
| + SafeBrowsingBlockingPageBrowserTest() |
| + : https_server_(net::EmbeddedTestServer::TYPE_HTTPS) {} |
| void SetUp() override { |
| // Test UI manager and test database manager should be set before |
| @@ -532,12 +538,26 @@ class SafeBrowsingBlockingPageBrowserTest |
| EXPECT_EQ(expected_tag_name, actual_resource.tag_name()); |
| } |
| + void SetUpMockCertVerifierForHttpsServer(net::CertStatus cert_status, |
| + int net_result) { |
| + ASSERT_TRUE(https_server_.Start()); |
| + scoped_refptr<net::X509Certificate> cert(https_server_.GetCertificate()); |
| + net::CertVerifyResult verify_result; |
| + verify_result.is_issued_by_known_root = true; |
| + verify_result.verified_cert = cert; |
| + verify_result.cert_status = cert_status; |
| + |
| + mock_cert_verifier()->AddResultForCert(cert.get(), verify_result, |
| + net_result); |
| + } |
| + |
| protected: |
| TestThreatDetailsFactory details_factory_; |
| private: |
| TestSafeBrowsingServiceFactory factory_; |
| TestSafeBrowsingBlockingPageFactory blocking_page_factory_; |
| + net::EmbeddedTestServer https_server_; |
| DISALLOW_COPY_AND_ASSIGN(SafeBrowsingBlockingPageBrowserTest); |
| }; |
| @@ -993,6 +1013,37 @@ IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, WhitelistUnsaved) { |
| AssertNoInterstitial(true); |
| } |
| +IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
| + SecurityStatePostInterstitial) { |
| + SetupWarningAndNavigate(); |
| + EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); |
| + AssertNoInterstitial(true); |
| + |
| + WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
| + ASSERT_TRUE(tab); |
| + ChromeSecurityStateModelClient* model_client = |
| + ChromeSecurityStateModelClient::FromWebContents(tab); |
| + ASSERT_TRUE(model_client); |
| + EXPECT_EQ(security_state::SecurityStateModel::SECURITY_ERROR, |
| + model_client->GetSecurityInfo().security_level); |
| +} |
| + |
| +IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
| + HTTPSOverridePostInterstitial) { |
|
estark
2016/08/24 05:15:39
Either I'm missing something or this test is not t
Jialiu Lin
2016/08/24 06:27:20
This test seems very similar to the previous one,
felt
2016/08/24 19:27:19
All of the existing SB tests, including SecuritySt
felt
2016/08/24 19:27:19
Whoops you're right, I was missing an if-statement
|
| + SetUpMockCertVerifierForHttpsServer(0, net::OK); |
| + SetupWarningAndNavigate(); |
| + EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); |
| + AssertNoInterstitial(true); |
| + |
| + WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
| + ASSERT_TRUE(tab); |
| + ChromeSecurityStateModelClient* model_client = |
| + ChromeSecurityStateModelClient::FromWebContents(tab); |
| + ASSERT_TRUE(model_client); |
| + EXPECT_EQ(security_state::SecurityStateModel::SECURITY_ERROR, |
| + model_client->GetSecurityInfo().security_level); |
| +} |
| + |
| INSTANTIATE_TEST_CASE_P( |
| SafeBrowsingBlockingPageBrowserTestWithThreatTypeAndIsolationSetting, |
| SafeBrowsingBlockingPageBrowserTest, |