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 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
181 report_ = serialized; | 181 report_ = serialized; |
182 | 182 |
183 EXPECT_FALSE(threat_details_done_callback_.is_null()); | 183 EXPECT_FALSE(threat_details_done_callback_.is_null()); |
184 if (!threat_details_done_callback_.is_null()) { | 184 if (!threat_details_done_callback_.is_null()) { |
185 threat_details_done_callback_.Run(); | 185 threat_details_done_callback_.Run(); |
186 threat_details_done_callback_ = base::Closure(); | 186 threat_details_done_callback_ = base::Closure(); |
187 } | 187 } |
188 threat_details_done_ = true; | 188 threat_details_done_ = true; |
189 } | 189 } |
190 | 190 |
191 void MaybeReportSafeBrowsingHit(const HitReport& hit_report, | |
192 WebContents* web_contents) override { | |
193 if (SafeBrowsingUIManager::ShouldSendHitReport(hit_report, web_contents)) { | |
194 hit_report_sent_ = true; | |
195 } | |
196 } | |
197 | |
198 bool hit_report_sent() { return hit_report_sent_; } | |
199 | |
191 void set_threat_details_done_callback(const base::Closure& callback) { | 200 void set_threat_details_done_callback(const base::Closure& callback) { |
192 EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 201 EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
193 EXPECT_TRUE(threat_details_done_callback_.is_null()); | 202 EXPECT_TRUE(threat_details_done_callback_.is_null()); |
194 threat_details_done_callback_ = callback; | 203 threat_details_done_callback_ = callback; |
195 } | 204 } |
196 | 205 |
197 std::string GetReport() { | 206 std::string GetReport() { |
198 EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 207 EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
199 return report_; | 208 return report_; |
200 } | 209 } |
201 | 210 |
202 protected: | 211 protected: |
203 ~FakeSafeBrowsingUIManager() override {} | 212 ~FakeSafeBrowsingUIManager() override {} |
204 | 213 |
205 private: | 214 private: |
206 std::string report_; | 215 std::string report_; |
207 base::Closure threat_details_done_callback_; | 216 base::Closure threat_details_done_callback_; |
208 bool threat_details_done_; | 217 bool threat_details_done_; |
218 bool hit_report_sent_ = false; | |
Jialiu Lin
2017/05/18 22:32:12
nit: since all the other members are initialized i
mortonm
2017/05/19 20:21:03
Done.
| |
209 | 219 |
210 DISALLOW_COPY_AND_ASSIGN(FakeSafeBrowsingUIManager); | 220 DISALLOW_COPY_AND_ASSIGN(FakeSafeBrowsingUIManager); |
211 }; | 221 }; |
212 | 222 |
213 } // namespace | 223 } // namespace |
214 | 224 |
215 class TestThreatDetailsFactory : public ThreatDetailsFactory { | 225 class TestThreatDetailsFactory : public ThreatDetailsFactory { |
216 public: | 226 public: |
217 TestThreatDetailsFactory() : details_() {} | 227 TestThreatDetailsFactory() : details_() {} |
218 ~TestThreatDetailsFactory() override {} | 228 ~TestThreatDetailsFactory() override {} |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
372 | 382 |
373 void ClearBadURL(const GURL& url) { | 383 void ClearBadURL(const GURL& url) { |
374 TestSafeBrowsingService* service = factory_.test_safe_browsing_service(); | 384 TestSafeBrowsingService* service = factory_.test_safe_browsing_service(); |
375 ASSERT_TRUE(service); | 385 ASSERT_TRUE(service); |
376 | 386 |
377 static_cast<FakeSafeBrowsingDatabaseManager*>( | 387 static_cast<FakeSafeBrowsingDatabaseManager*>( |
378 service->database_manager().get()) | 388 service->database_manager().get()) |
379 ->ClearBadURL(url); | 389 ->ClearBadURL(url); |
380 } | 390 } |
381 | 391 |
382 // The basic version of this method, which uses a HTTP test URL. | 392 // The basic version of this method, which uses an HTTP test URL. |
383 GURL SetupWarningAndNavigate() { | 393 GURL SetupWarningAndNavigate(bool is_incognito) { |
384 return SetupWarningAndNavigateToURL( | 394 return SetupWarningAndNavigateToURL( |
385 net::URLRequestMockHTTPJob::GetMockUrl(kEmptyPage)); | 395 net::URLRequestMockHTTPJob::GetMockUrl(kEmptyPage), is_incognito); |
386 } | 396 } |
387 | 397 |
388 // Navigates to a warning on a valid HTTPS website. | 398 // Navigates to a warning on a valid HTTPS website. |
389 GURL SetupWarningAndNavigateToValidHTTPS() { | 399 GURL SetupWarningAndNavigateToValidHTTPS() { |
390 EXPECT_TRUE(https_server_.Start()); | 400 EXPECT_TRUE(https_server_.Start()); |
391 scoped_refptr<net::X509Certificate> cert(https_server_.GetCertificate()); | 401 scoped_refptr<net::X509Certificate> cert(https_server_.GetCertificate()); |
392 net::CertVerifyResult verify_result; | 402 net::CertVerifyResult verify_result; |
393 verify_result.is_issued_by_known_root = true; | 403 verify_result.is_issued_by_known_root = true; |
394 verify_result.verified_cert = cert; | 404 verify_result.verified_cert = cert; |
395 verify_result.cert_status = 0; | 405 verify_result.cert_status = 0; |
396 mock_cert_verifier()->AddResultForCert(cert.get(), verify_result, net::OK); | 406 mock_cert_verifier()->AddResultForCert(cert.get(), verify_result, net::OK); |
397 GURL url = https_server_.GetURL(kHTTPSPage); | 407 GURL url = https_server_.GetURL(kHTTPSPage); |
398 return SetupWarningAndNavigateToURL(url); | 408 return SetupWarningAndNavigateToURL(url, false); |
399 } | 409 } |
400 | 410 |
401 // Navigates through an HTTPS interstitial, then opens up a SB warning on that | 411 // Navigates through an HTTPS interstitial, then opens up a SB warning on that |
402 // same URL. | 412 // same URL. |
403 GURL SetupWarningAndNavigateToInvalidHTTPS() { | 413 GURL SetupWarningAndNavigateToInvalidHTTPS() { |
404 https_server_.SetSSLConfig(net::EmbeddedTestServer::CERT_EXPIRED); | 414 https_server_.SetSSLConfig(net::EmbeddedTestServer::CERT_EXPIRED); |
405 EXPECT_TRUE(https_server_.Start()); | 415 EXPECT_TRUE(https_server_.Start()); |
406 GURL url = https_server_.GetURL(kHTTPSPage); | 416 GURL url = https_server_.GetURL(kHTTPSPage); |
407 | 417 |
408 // Proceed through the HTTPS interstitial. | 418 // Proceed through the HTTPS interstitial. |
409 ui_test_utils::NavigateToURL(browser(), url); | 419 ui_test_utils::NavigateToURL(browser(), url); |
410 EXPECT_TRUE(WaitForReady()); | 420 EXPECT_TRUE(WaitForReady(browser())); |
411 InterstitialPage* https_warning = browser() | 421 InterstitialPage* https_warning = browser() |
412 ->tab_strip_model() | 422 ->tab_strip_model() |
413 ->GetActiveWebContents() | 423 ->GetActiveWebContents() |
414 ->GetInterstitialPage(); | 424 ->GetInterstitialPage(); |
415 EXPECT_EQ(SSLBlockingPage::kTypeForTesting, | 425 EXPECT_EQ(SSLBlockingPage::kTypeForTesting, |
416 https_warning->GetDelegateForTesting()->GetTypeForTesting()); | 426 https_warning->GetDelegateForTesting()->GetTypeForTesting()); |
417 https_warning->Proceed(); | 427 https_warning->Proceed(); |
418 content::WaitForInterstitialDetach( | 428 content::WaitForInterstitialDetach( |
419 browser()->tab_strip_model()->GetActiveWebContents()); | 429 browser()->tab_strip_model()->GetActiveWebContents()); |
420 | 430 |
421 return SetupWarningAndNavigateToURL(url); | 431 return SetupWarningAndNavigateToURL(url, false); |
422 } | 432 } |
423 | 433 |
424 // Adds a safebrowsing threat results to the fake safebrowsing service, | 434 // Adds a safebrowsing threat results to the fake safebrowsing service, |
425 // navigates to a page with an iframe containing the threat site, and returns | 435 // navigates to a page with an iframe containing the threat site, and returns |
426 // the url of the parent page. | 436 // the url of the parent page. |
427 GURL SetupThreatIframeWarningAndNavigate() { | 437 GURL SetupThreatIframeWarningAndNavigate() { |
428 GURL url = net::URLRequestMockHTTPJob::GetMockUrl(kCrossSiteMaliciousPage); | 438 GURL url = net::URLRequestMockHTTPJob::GetMockUrl(kCrossSiteMaliciousPage); |
429 GURL iframe_url = net::URLRequestMockHTTPJob::GetMockUrl(kMaliciousIframe); | 439 GURL iframe_url = net::URLRequestMockHTTPJob::GetMockUrl(kMaliciousIframe); |
430 SetURLThreatType(iframe_url, testing::get<0>(GetParam())); | 440 SetURLThreatType(iframe_url, testing::get<0>(GetParam())); |
431 | 441 |
432 ui_test_utils::NavigateToURL(browser(), url); | 442 ui_test_utils::NavigateToURL(browser(), url); |
433 EXPECT_TRUE(WaitForReady()); | 443 EXPECT_TRUE(WaitForReady(browser())); |
434 return url; | 444 return url; |
435 } | 445 } |
436 | 446 |
437 // Adds a safebrowsing threat results to the fake safebrowsing service, and | 447 // Adds a safebrowsing threat results to the fake safebrowsing service, and |
438 // navigates to a page with a cross-origin iframe containing the threat site. | 448 // navigates to a page with a cross-origin iframe containing the threat site. |
439 // Returns the url of the parent page and sets |iframe_url| to the malicious | 449 // Returns the url of the parent page and sets |iframe_url| to the malicious |
440 // cross-origin iframe. | 450 // cross-origin iframe. |
441 GURL SetupCrossOriginThreatIframeWarningAndNavigate(GURL* iframe_url) { | 451 GURL SetupCrossOriginThreatIframeWarningAndNavigate(GURL* iframe_url) { |
442 content::SetupCrossSiteRedirector(embedded_test_server()); | 452 content::SetupCrossSiteRedirector(embedded_test_server()); |
443 EXPECT_TRUE(embedded_test_server()->Start()); | 453 EXPECT_TRUE(embedded_test_server()->Start()); |
444 GURL url = embedded_test_server()->GetURL( | 454 GURL url = embedded_test_server()->GetURL( |
445 std::string("/") + kPageWithCrossOriginMaliciousIframe); | 455 std::string("/") + kPageWithCrossOriginMaliciousIframe); |
446 *iframe_url = | 456 *iframe_url = |
447 embedded_test_server()->GetURL(std::string("/") + kMaliciousIframe); | 457 embedded_test_server()->GetURL(std::string("/") + kMaliciousIframe); |
448 GURL::Replacements replace_host; | 458 GURL::Replacements replace_host; |
449 replace_host.SetHostStr(kCrossOriginMaliciousIframeHost); | 459 replace_host.SetHostStr(kCrossOriginMaliciousIframeHost); |
450 *iframe_url = iframe_url->ReplaceComponents(replace_host); | 460 *iframe_url = iframe_url->ReplaceComponents(replace_host); |
451 SetURLThreatType(*iframe_url, testing::get<0>(GetParam())); | 461 SetURLThreatType(*iframe_url, testing::get<0>(GetParam())); |
452 | 462 |
453 ui_test_utils::NavigateToURL(browser(), url); | 463 ui_test_utils::NavigateToURL(browser(), url); |
454 EXPECT_TRUE(WaitForReady()); | 464 EXPECT_TRUE(WaitForReady(browser())); |
455 return url; | 465 return url; |
456 } | 466 } |
457 | 467 |
458 void SendCommand( | 468 void SendCommand( |
459 security_interstitials::SecurityInterstitialCommands command) { | 469 security_interstitials::SecurityInterstitialCommands command) { |
460 WebContents* contents = | 470 WebContents* contents = |
461 browser()->tab_strip_model()->GetActiveWebContents(); | 471 browser()->tab_strip_model()->GetActiveWebContents(); |
462 // We use InterstitialPage::GetInterstitialPage(tab) instead of | 472 // We use InterstitialPage::GetInterstitialPage(tab) instead of |
463 // tab->GetInterstitialPage() because the tab doesn't have a pointer | 473 // tab->GetInterstitialPage() because the tab doesn't have a pointer |
464 // to its interstital page until it gets a command from the renderer | 474 // to its interstital page until it gets a command from the renderer |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
543 } | 553 } |
544 | 554 |
545 content::RenderFrameHost* GetRenderFrameHost() { | 555 content::RenderFrameHost* GetRenderFrameHost() { |
546 InterstitialPage* interstitial = InterstitialPage::GetInterstitialPage( | 556 InterstitialPage* interstitial = InterstitialPage::GetInterstitialPage( |
547 browser()->tab_strip_model()->GetActiveWebContents()); | 557 browser()->tab_strip_model()->GetActiveWebContents()); |
548 if (!interstitial) | 558 if (!interstitial) |
549 return NULL; | 559 return NULL; |
550 return interstitial->GetMainFrame(); | 560 return interstitial->GetMainFrame(); |
551 } | 561 } |
552 | 562 |
553 bool WaitForReady() { | 563 bool WaitForReady(Browser* browser) { |
554 InterstitialPage* interstitial = InterstitialPage::GetInterstitialPage( | 564 InterstitialPage* interstitial = InterstitialPage::GetInterstitialPage( |
555 browser()->tab_strip_model()->GetActiveWebContents()); | 565 browser->tab_strip_model()->GetActiveWebContents()); |
556 if (!interstitial) | 566 if (!interstitial) |
557 return false; | 567 return false; |
558 return content::WaitForRenderFrameReady(interstitial->GetMainFrame()); | 568 return content::WaitForRenderFrameReady(interstitial->GetMainFrame()); |
559 } | 569 } |
560 | 570 |
561 Visibility GetVisibility(const std::string& node_id) { | 571 Visibility GetVisibility(const std::string& node_id) { |
562 content::RenderFrameHost* rfh = GetRenderFrameHost(); | 572 content::RenderFrameHost* rfh = GetRenderFrameHost(); |
563 if (!rfh) | 573 if (!rfh) |
564 return VISIBILITY_ERROR; | 574 return VISIBILITY_ERROR; |
565 | 575 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
612 if (!Click(node_id)) | 622 if (!Click(node_id)) |
613 return false; | 623 return false; |
614 content::WaitForInterstitialDetach( | 624 content::WaitForInterstitialDetach( |
615 browser()->tab_strip_model()->GetActiveWebContents()); | 625 browser()->tab_strip_model()->GetActiveWebContents()); |
616 return true; | 626 return true; |
617 } | 627 } |
618 | 628 |
619 void TestReportingDisabledAndDontProceed(const GURL& url) { | 629 void TestReportingDisabledAndDontProceed(const GURL& url) { |
620 SetURLThreatType(url, testing::get<0>(GetParam())); | 630 SetURLThreatType(url, testing::get<0>(GetParam())); |
621 ui_test_utils::NavigateToURL(browser(), url); | 631 ui_test_utils::NavigateToURL(browser(), url); |
622 ASSERT_TRUE(WaitForReady()); | 632 ASSERT_TRUE(WaitForReady(browser())); |
623 | 633 |
624 EXPECT_EQ(HIDDEN, GetVisibility("extended-reporting-opt-in")); | 634 EXPECT_EQ(HIDDEN, GetVisibility("extended-reporting-opt-in")); |
625 EXPECT_EQ(HIDDEN, GetVisibility("opt-in-checkbox")); | 635 EXPECT_EQ(HIDDEN, GetVisibility("opt-in-checkbox")); |
626 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link")); | 636 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link")); |
627 EXPECT_EQ(VISIBLE, GetVisibility("learn-more-link")); | 637 EXPECT_EQ(VISIBLE, GetVisibility("learn-more-link")); |
628 EXPECT_TRUE(Click("details-button")); | 638 EXPECT_TRUE(Click("details-button")); |
629 EXPECT_EQ(VISIBLE, GetVisibility("proceed-link")); | 639 EXPECT_EQ(VISIBLE, GetVisibility("proceed-link")); |
630 | 640 |
631 EXPECT_TRUE(ClickAndWaitForDetach("primary-button")); | 641 EXPECT_TRUE(ClickAndWaitForDetach("primary-button")); |
632 AssertNoInterstitial(false); // Assert the interstitial is gone | 642 AssertNoInterstitial(false); // Assert the interstitial is gone |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
691 SecurityStateTabHelper* helper = | 701 SecurityStateTabHelper* helper = |
692 SecurityStateTabHelper::FromWebContents(tab); | 702 SecurityStateTabHelper::FromWebContents(tab); |
693 ASSERT_TRUE(helper); | 703 ASSERT_TRUE(helper); |
694 security_state::SecurityInfo security_info; | 704 security_state::SecurityInfo security_info; |
695 helper->GetSecurityInfo(&security_info); | 705 helper->GetSecurityInfo(&security_info); |
696 EXPECT_EQ(security_state::NONE, security_info.security_level); | 706 EXPECT_EQ(security_state::NONE, security_info.security_level); |
697 EXPECT_EQ(security_state::MALICIOUS_CONTENT_STATUS_NONE, | 707 EXPECT_EQ(security_state::MALICIOUS_CONTENT_STATUS_NONE, |
698 security_info.malicious_content_status); | 708 security_info.malicious_content_status); |
699 } | 709 } |
700 | 710 |
711 bool hit_report_sent() { | |
712 return static_cast<FakeSafeBrowsingUIManager*>( | |
713 factory_.test_safe_browsing_service()->ui_manager().get()) | |
714 ->hit_report_sent(); | |
715 } | |
716 | |
701 protected: | 717 protected: |
702 TestThreatDetailsFactory details_factory_; | 718 TestThreatDetailsFactory details_factory_; |
703 | 719 |
704 private: | 720 private: |
705 // Adds a safebrowsing result of the current test threat to the fake | 721 // Adds a safebrowsing result of the current test threat to the fake |
706 // safebrowsing service, navigates to that page, and returns the url. | 722 // safebrowsing service, navigates to that page, and returns the url. |
707 // The various wrappers supply different URLs. | 723 // The various wrappers supply different URLs. |
708 GURL SetupWarningAndNavigateToURL(GURL url) { | 724 GURL SetupWarningAndNavigateToURL(GURL url, bool is_incognito) { |
709 SetURLThreatType(url, testing::get<0>(GetParam())); | 725 SetURLThreatType(url, testing::get<0>(GetParam())); |
710 ui_test_utils::NavigateToURL(browser(), url); | 726 if (is_incognito) { |
711 EXPECT_TRUE(WaitForReady()); | 727 Browser* incognito_browser = CreateIncognitoBrowser(); |
728 ui_test_utils::NavigateToURL(incognito_browser, url); | |
729 EXPECT_TRUE(WaitForReady(incognito_browser)); | |
730 } else { | |
731 ui_test_utils::NavigateToURL(browser(), url); | |
732 EXPECT_TRUE(WaitForReady(browser())); | |
733 } | |
712 return url; | 734 return url; |
713 } | 735 } |
714 | 736 |
715 TestSafeBrowsingServiceFactory factory_; | 737 TestSafeBrowsingServiceFactory factory_; |
716 TestSafeBrowsingBlockingPageFactory blocking_page_factory_; | 738 TestSafeBrowsingBlockingPageFactory blocking_page_factory_; |
717 net::EmbeddedTestServer https_server_; | 739 net::EmbeddedTestServer https_server_; |
740 // Browser* incognito_browser; | |
Jialiu Lin
2017/05/18 22:32:12
You probably need this one. See my comments below.
mortonm
2017/05/19 20:21:03
Done.
| |
718 | 741 |
719 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingBlockingPageBrowserTest); | 742 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingBlockingPageBrowserTest); |
720 }; | 743 }; |
721 | 744 |
722 // TODO(linux_aura) https://crbug.com/163931 | 745 // TODO(linux_aura) https://crbug.com/163931 |
723 // TODO(win_aura) https://crbug.com/154081 | 746 // TODO(win_aura) https://crbug.com/154081 |
724 #if defined(USE_AURA) && !defined(OS_CHROMEOS) | 747 #if defined(USE_AURA) && !defined(OS_CHROMEOS) |
725 #define MAYBE_RedirectInIFrameCanceled DISABLED_RedirectInIFrameCanceled | 748 #define MAYBE_RedirectInIFrameCanceled DISABLED_RedirectInIFrameCanceled |
726 #else | 749 #else |
727 #define MAYBE_RedirectInIFrameCanceled RedirectInIFrameCanceled | 750 #define MAYBE_RedirectInIFrameCanceled RedirectInIFrameCanceled |
728 #endif | 751 #endif |
729 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, | 752 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
730 MAYBE_RedirectInIFrameCanceled) { | 753 MAYBE_RedirectInIFrameCanceled) { |
731 // 1. Test the case that redirect is a subresource. | 754 // 1. Test the case that redirect is a subresource. |
732 MalwareRedirectCancelAndProceed("openWinIFrame"); | 755 MalwareRedirectCancelAndProceed("openWinIFrame"); |
733 // If the redirect was from subresource but canceled, "proceed" will continue | 756 // If the redirect was from subresource but canceled, "proceed" will continue |
734 // with the rest of resources. | 757 // with the rest of resources. |
735 AssertNoInterstitial(true); | 758 AssertNoInterstitial(true); |
736 } | 759 } |
737 | 760 |
738 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, RedirectCanceled) { | 761 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, RedirectCanceled) { |
739 // 2. Test the case that redirect is the only resource. | 762 // 2. Test the case that redirect is the only resource. |
740 MalwareRedirectCancelAndProceed("openWin"); | 763 MalwareRedirectCancelAndProceed("openWin"); |
741 // Clicking proceed won't do anything if the main request is cancelled | 764 // Clicking proceed won't do anything if the main request is cancelled |
742 // already. See crbug.com/76460. | 765 // already. See crbug.com/76460. |
743 EXPECT_TRUE(YesInterstitial()); | 766 EXPECT_TRUE(YesInterstitial()); |
744 } | 767 } |
745 | 768 |
746 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, DontProceed) { | 769 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, DontProceed) { |
747 SetupWarningAndNavigate(); | 770 SetupWarningAndNavigate(false); |
748 | 771 |
749 EXPECT_EQ(VISIBLE, GetVisibility("primary-button")); | 772 EXPECT_EQ(VISIBLE, GetVisibility("primary-button")); |
750 EXPECT_EQ(HIDDEN, GetVisibility("details")); | 773 EXPECT_EQ(HIDDEN, GetVisibility("details")); |
751 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link")); | 774 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link")); |
752 EXPECT_EQ(HIDDEN, GetVisibility("error-code")); | 775 EXPECT_EQ(HIDDEN, GetVisibility("error-code")); |
753 EXPECT_TRUE(Click("details-button")); | 776 EXPECT_TRUE(Click("details-button")); |
754 EXPECT_EQ(VISIBLE, GetVisibility("details")); | 777 EXPECT_EQ(VISIBLE, GetVisibility("details")); |
755 EXPECT_EQ(VISIBLE, GetVisibility("proceed-link")); | 778 EXPECT_EQ(VISIBLE, GetVisibility("proceed-link")); |
756 EXPECT_EQ(HIDDEN, GetVisibility("error-code")); | 779 EXPECT_EQ(HIDDEN, GetVisibility("error-code")); |
757 EXPECT_TRUE(ClickAndWaitForDetach("primary-button")); | 780 EXPECT_TRUE(ClickAndWaitForDetach("primary-button")); |
758 | 781 |
759 AssertNoInterstitial(false); // Assert the interstitial is gone | 782 AssertNoInterstitial(false); // Assert the interstitial is gone |
760 EXPECT_EQ(GURL(url::kAboutBlankURL), // Back to "about:blank" | 783 EXPECT_EQ(GURL(url::kAboutBlankURL), // Back to "about:blank" |
761 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); | 784 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); |
762 } | 785 } |
763 | 786 |
764 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, Proceed) { | 787 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, Proceed) { |
765 GURL url = SetupWarningAndNavigate(); | 788 GURL url = SetupWarningAndNavigate(false); |
766 | 789 |
767 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); | 790 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); |
768 AssertNoInterstitial(true); // Assert the interstitial is gone. | 791 AssertNoInterstitial(true); // Assert the interstitial is gone. |
769 EXPECT_EQ(url, | 792 EXPECT_EQ(url, |
770 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); | 793 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); |
771 } | 794 } |
772 | 795 |
773 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, IframeDontProceed) { | 796 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, IframeDontProceed) { |
774 SetupThreatIframeWarningAndNavigate(); | 797 SetupThreatIframeWarningAndNavigate(); |
775 | 798 |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
901 // Navigate to a safe page which contains multiple potential DOM details. | 924 // Navigate to a safe page which contains multiple potential DOM details. |
902 // (Despite the name, kMaliciousPage is not the page flagged as bad in this | 925 // (Despite the name, kMaliciousPage is not the page flagged as bad in this |
903 // test.) | 926 // test.) |
904 GURL safe_url(net::URLRequestMockHTTPJob::GetMockUrl(kMaliciousPage)); | 927 GURL safe_url(net::URLRequestMockHTTPJob::GetMockUrl(kMaliciousPage)); |
905 ui_test_utils::NavigateToURL(browser(), safe_url); | 928 ui_test_utils::NavigateToURL(browser(), safe_url); |
906 | 929 |
907 EXPECT_EQ(nullptr, details_factory_.get_details()); | 930 EXPECT_EQ(nullptr, details_factory_.get_details()); |
908 | 931 |
909 // Start navigation to bad page (kEmptyPage), which will be blocked before it | 932 // Start navigation to bad page (kEmptyPage), which will be blocked before it |
910 // is committed. | 933 // is committed. |
911 GURL url = SetupWarningAndNavigate(); | 934 GURL url = SetupWarningAndNavigate(false); |
912 | 935 |
913 ThreatDetails* threat_details = details_factory_.get_details(); | 936 ThreatDetails* threat_details = details_factory_.get_details(); |
914 EXPECT_EQ(expect_threat_details, threat_details != nullptr); | 937 EXPECT_EQ(expect_threat_details, threat_details != nullptr); |
915 | 938 |
916 // Go back. | 939 // Go back. |
917 EXPECT_EQ(VISIBLE, GetVisibility("extended-reporting-opt-in")); | 940 EXPECT_EQ(VISIBLE, GetVisibility("extended-reporting-opt-in")); |
918 EXPECT_TRUE(Click("opt-in-checkbox")); | 941 EXPECT_TRUE(Click("opt-in-checkbox")); |
919 EXPECT_TRUE(ClickAndWaitForDetach("primary-button")); | 942 EXPECT_TRUE(ClickAndWaitForDetach("primary-button")); |
920 AssertNoInterstitial(true); // Assert the interstitial is gone | 943 AssertNoInterstitial(true); // Assert the interstitial is gone |
921 | 944 |
(...skipping 30 matching lines...) Expand all Loading... | |
952 // Navigate to a safe page which contains multiple potential DOM details. | 975 // Navigate to a safe page which contains multiple potential DOM details. |
953 // (Despite the name, kMaliciousPage is not the page flagged as bad in this | 976 // (Despite the name, kMaliciousPage is not the page flagged as bad in this |
954 // test.) | 977 // test.) |
955 ui_test_utils::NavigateToURL( | 978 ui_test_utils::NavigateToURL( |
956 browser(), net::URLRequestMockHTTPJob::GetMockUrl(kMaliciousPage)); | 979 browser(), net::URLRequestMockHTTPJob::GetMockUrl(kMaliciousPage)); |
957 | 980 |
958 EXPECT_EQ(nullptr, details_factory_.get_details()); | 981 EXPECT_EQ(nullptr, details_factory_.get_details()); |
959 | 982 |
960 // Start navigation to bad page (kEmptyPage), which will be blocked before it | 983 // Start navigation to bad page (kEmptyPage), which will be blocked before it |
961 // is committed. | 984 // is committed. |
962 GURL url = SetupWarningAndNavigate(); | 985 GURL url = SetupWarningAndNavigate(false); |
963 | 986 |
964 ThreatDetails* threat_details = details_factory_.get_details(); | 987 ThreatDetails* threat_details = details_factory_.get_details(); |
965 EXPECT_EQ(expect_threat_details, threat_details != nullptr); | 988 EXPECT_EQ(expect_threat_details, threat_details != nullptr); |
966 | 989 |
967 // Proceed through the warning. | 990 // Proceed through the warning. |
968 EXPECT_EQ(VISIBLE, GetVisibility("extended-reporting-opt-in")); | 991 EXPECT_EQ(VISIBLE, GetVisibility("extended-reporting-opt-in")); |
969 EXPECT_TRUE(Click("opt-in-checkbox")); | 992 EXPECT_TRUE(Click("opt-in-checkbox")); |
970 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); | 993 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); |
971 AssertNoInterstitial(true); // Assert the interstitial is gone | 994 AssertNoInterstitial(true); // Assert the interstitial is gone |
972 | 995 |
(...skipping 16 matching lines...) Expand all Loading... | |
989 } | 1012 } |
990 | 1013 |
991 // Verifies that the "proceed anyway" link isn't available when it is disabled | 1014 // Verifies that the "proceed anyway" link isn't available when it is disabled |
992 // by the corresponding policy. Also verifies that sending the "proceed" | 1015 // by the corresponding policy. Also verifies that sending the "proceed" |
993 // command anyway doesn't advance to the unsafe site. | 1016 // command anyway doesn't advance to the unsafe site. |
994 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, ProceedDisabled) { | 1017 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, ProceedDisabled) { |
995 // Simulate a policy disabling the "proceed anyway" link. | 1018 // Simulate a policy disabling the "proceed anyway" link. |
996 browser()->profile()->GetPrefs()->SetBoolean( | 1019 browser()->profile()->GetPrefs()->SetBoolean( |
997 prefs::kSafeBrowsingProceedAnywayDisabled, true); | 1020 prefs::kSafeBrowsingProceedAnywayDisabled, true); |
998 | 1021 |
999 SetupWarningAndNavigate(); | 1022 SetupWarningAndNavigate(false); |
1000 | 1023 |
1001 EXPECT_EQ(VISIBLE, GetVisibility("primary-button")); | 1024 EXPECT_EQ(VISIBLE, GetVisibility("primary-button")); |
1002 EXPECT_EQ(HIDDEN, GetVisibility("details")); | 1025 EXPECT_EQ(HIDDEN, GetVisibility("details")); |
1003 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link")); | 1026 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link")); |
1004 EXPECT_EQ(HIDDEN, GetVisibility("final-paragraph")); | 1027 EXPECT_EQ(HIDDEN, GetVisibility("final-paragraph")); |
1005 EXPECT_TRUE(Click("details-button")); | 1028 EXPECT_TRUE(Click("details-button")); |
1006 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link")); | 1029 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link")); |
1007 EXPECT_EQ(HIDDEN, GetVisibility("final-paragraph")); | 1030 EXPECT_EQ(HIDDEN, GetVisibility("final-paragraph")); |
1008 SendCommand(security_interstitials::CMD_PROCEED); | 1031 SendCommand(security_interstitials::CMD_PROCEED); |
1009 | 1032 |
(...skipping 14 matching lines...) Expand all Loading... | |
1024 TestReportingDisabledAndDontProceed( | 1047 TestReportingDisabledAndDontProceed( |
1025 net::URLRequestMockHTTPJob::GetMockUrl(kEmptyPage)); | 1048 net::URLRequestMockHTTPJob::GetMockUrl(kEmptyPage)); |
1026 } | 1049 } |
1027 | 1050 |
1028 // Verifies that the reporting checkbox is still shown if the page is reloaded | 1051 // Verifies that the reporting checkbox is still shown if the page is reloaded |
1029 // while the interstitial is showing. | 1052 // while the interstitial is showing. |
1030 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, | 1053 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
1031 ReloadWhileInterstitialShowing) { | 1054 ReloadWhileInterstitialShowing) { |
1032 // Start navigation to bad page (kEmptyPage), which will be blocked before it | 1055 // Start navigation to bad page (kEmptyPage), which will be blocked before it |
1033 // is committed. | 1056 // is committed. |
1034 const GURL url = SetupWarningAndNavigate(); | 1057 const GURL url = SetupWarningAndNavigate(false); |
1035 | 1058 |
1036 // Checkbox should be showing. | 1059 // Checkbox should be showing. |
1037 EXPECT_EQ(VISIBLE, GetVisibility("extended-reporting-opt-in")); | 1060 EXPECT_EQ(VISIBLE, GetVisibility("extended-reporting-opt-in")); |
1038 | 1061 |
1039 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); | 1062 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
1040 ASSERT_TRUE(tab); | 1063 ASSERT_TRUE(tab); |
1041 // Security indicator should be showing. | 1064 // Security indicator should be showing. |
1042 ExpectSecurityIndicatorDowngrade(tab, 0u); | 1065 ExpectSecurityIndicatorDowngrade(tab, 0u); |
1043 | 1066 |
1044 // Check navigation entry state. | 1067 // Check navigation entry state. |
1045 const NavigationController& controller = tab->GetController(); | 1068 const NavigationController& controller = tab->GetController(); |
1046 ASSERT_TRUE(controller.GetVisibleEntry()); | 1069 ASSERT_TRUE(controller.GetVisibleEntry()); |
1047 EXPECT_EQ(url, controller.GetVisibleEntry()->GetURL()); | 1070 EXPECT_EQ(url, controller.GetVisibleEntry()->GetURL()); |
1048 ASSERT_TRUE(controller.GetPendingEntry()); | 1071 ASSERT_TRUE(controller.GetPendingEntry()); |
1049 EXPECT_EQ(url, controller.GetPendingEntry()->GetURL()); | 1072 EXPECT_EQ(url, controller.GetPendingEntry()->GetURL()); |
1050 | 1073 |
1051 // "Reload" the tab. | 1074 // "Reload" the tab. |
1052 SetupWarningAndNavigate(); | 1075 SetupWarningAndNavigate(false); |
1053 | 1076 |
1054 // Checkbox should be showing. | 1077 // Checkbox should be showing. |
1055 EXPECT_EQ(VISIBLE, GetVisibility("extended-reporting-opt-in")); | 1078 EXPECT_EQ(VISIBLE, GetVisibility("extended-reporting-opt-in")); |
1056 | 1079 |
1057 // TODO(crbug.com/666172): Security indicator should be showing. | 1080 // TODO(crbug.com/666172): Security indicator should be showing. |
1058 // Call |ExpectSecurityIndicatorDowngrade(tab, 0u);| here once the bug is | 1081 // Call |ExpectSecurityIndicatorDowngrade(tab, 0u);| here once the bug is |
1059 // fixed. | 1082 // fixed. |
1060 | 1083 |
1061 // Check navigation entry state. | 1084 // Check navigation entry state. |
1062 ASSERT_TRUE(controller.GetVisibleEntry()); | 1085 ASSERT_TRUE(controller.GetVisibleEntry()); |
1063 EXPECT_EQ(url, controller.GetVisibleEntry()->GetURL()); | 1086 EXPECT_EQ(url, controller.GetVisibleEntry()->GetURL()); |
1064 ASSERT_TRUE(controller.GetPendingEntry()); | 1087 ASSERT_TRUE(controller.GetPendingEntry()); |
1065 EXPECT_EQ(url, controller.GetPendingEntry()->GetURL()); | 1088 EXPECT_EQ(url, controller.GetPendingEntry()->GetURL()); |
1066 } | 1089 } |
1067 | 1090 |
1068 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, LearnMore) { | 1091 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, LearnMore) { |
1069 SetupWarningAndNavigate(); | 1092 SetupWarningAndNavigate(false); |
1070 EXPECT_TRUE(ClickAndWaitForDetach("learn-more-link")); | 1093 EXPECT_TRUE(ClickAndWaitForDetach("learn-more-link")); |
1071 AssertNoInterstitial(false); // Assert the interstitial is gone | 1094 AssertNoInterstitial(false); // Assert the interstitial is gone |
1072 | 1095 |
1073 // We are in the help page. | 1096 // We are in the help page. |
1074 EXPECT_EQ( | 1097 EXPECT_EQ( |
1075 GURL("https://support.google.com/chrome/answer/99020").GetWithEmptyPath(), | 1098 GURL("https://support.google.com/chrome/answer/99020").GetWithEmptyPath(), |
1076 browser() | 1099 browser() |
1077 ->tab_strip_model() | 1100 ->tab_strip_model() |
1078 ->GetActiveWebContents() | 1101 ->GetActiveWebContents() |
1079 ->GetURL() | 1102 ->GetURL() |
(...skipping 17 matching lines...) Expand all Loading... | |
1097 const std::string interaction_histogram = | 1120 const std::string interaction_histogram = |
1098 "interstitial." + prefix + ".interaction"; | 1121 "interstitial." + prefix + ".interaction"; |
1099 | 1122 |
1100 // TODO(nparker): Check for *.from_device as well. | 1123 // TODO(nparker): Check for *.from_device as well. |
1101 | 1124 |
1102 // Histograms should start off empty. | 1125 // Histograms should start off empty. |
1103 histograms.ExpectTotalCount(decision_histogram, 0); | 1126 histograms.ExpectTotalCount(decision_histogram, 0); |
1104 histograms.ExpectTotalCount(interaction_histogram, 0); | 1127 histograms.ExpectTotalCount(interaction_histogram, 0); |
1105 | 1128 |
1106 // After navigating to the page, the totals should be set. | 1129 // After navigating to the page, the totals should be set. |
1107 SetupWarningAndNavigate(); | 1130 SetupWarningAndNavigate(false); |
1108 histograms.ExpectTotalCount(decision_histogram, 1); | 1131 histograms.ExpectTotalCount(decision_histogram, 1); |
1109 histograms.ExpectBucketCount(decision_histogram, | 1132 histograms.ExpectBucketCount(decision_histogram, |
1110 security_interstitials::MetricsHelper::SHOW, 1); | 1133 security_interstitials::MetricsHelper::SHOW, 1); |
1111 histograms.ExpectTotalCount(interaction_histogram, 1); | 1134 histograms.ExpectTotalCount(interaction_histogram, 1); |
1112 histograms.ExpectBucketCount( | 1135 histograms.ExpectBucketCount( |
1113 interaction_histogram, | 1136 interaction_histogram, |
1114 security_interstitials::MetricsHelper::TOTAL_VISITS, 1); | 1137 security_interstitials::MetricsHelper::TOTAL_VISITS, 1); |
1115 | 1138 |
1116 // Decision should be recorded. | 1139 // Decision should be recorded. |
1117 EXPECT_TRUE(ClickAndWaitForDetach("primary-button")); | 1140 EXPECT_TRUE(ClickAndWaitForDetach("primary-button")); |
(...skipping 23 matching lines...) Expand all Loading... | |
1141 NOTREACHED(); | 1164 NOTREACHED(); |
1142 const std::string decision_histogram = "interstitial." + prefix + ".decision"; | 1165 const std::string decision_histogram = "interstitial." + prefix + ".decision"; |
1143 const std::string interaction_histogram = | 1166 const std::string interaction_histogram = |
1144 "interstitial." + prefix + ".interaction"; | 1167 "interstitial." + prefix + ".interaction"; |
1145 | 1168 |
1146 // Histograms should start off empty. | 1169 // Histograms should start off empty. |
1147 histograms.ExpectTotalCount(decision_histogram, 0); | 1170 histograms.ExpectTotalCount(decision_histogram, 0); |
1148 histograms.ExpectTotalCount(interaction_histogram, 0); | 1171 histograms.ExpectTotalCount(interaction_histogram, 0); |
1149 | 1172 |
1150 // After navigating to the page, the totals should be set. | 1173 // After navigating to the page, the totals should be set. |
1151 GURL url = SetupWarningAndNavigate(); | 1174 GURL url = SetupWarningAndNavigate(false); |
1152 histograms.ExpectTotalCount(decision_histogram, 1); | 1175 histograms.ExpectTotalCount(decision_histogram, 1); |
1153 histograms.ExpectBucketCount(decision_histogram, | 1176 histograms.ExpectBucketCount(decision_histogram, |
1154 security_interstitials::MetricsHelper::SHOW, 1); | 1177 security_interstitials::MetricsHelper::SHOW, 1); |
1155 histograms.ExpectTotalCount(interaction_histogram, 1); | 1178 histograms.ExpectTotalCount(interaction_histogram, 1); |
1156 histograms.ExpectBucketCount( | 1179 histograms.ExpectBucketCount( |
1157 interaction_histogram, | 1180 interaction_histogram, |
1158 security_interstitials::MetricsHelper::TOTAL_VISITS, 1); | 1181 security_interstitials::MetricsHelper::TOTAL_VISITS, 1); |
1159 | 1182 |
1160 // Decision should be recorded. | 1183 // Decision should be recorded. |
1161 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); | 1184 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); |
1162 AssertNoInterstitial(true); // Assert the interstitial is gone. | 1185 AssertNoInterstitial(true); // Assert the interstitial is gone. |
1163 histograms.ExpectTotalCount(decision_histogram, 2); | 1186 histograms.ExpectTotalCount(decision_histogram, 2); |
1164 histograms.ExpectBucketCount( | 1187 histograms.ExpectBucketCount( |
1165 decision_histogram, security_interstitials::MetricsHelper::PROCEED, 1); | 1188 decision_histogram, security_interstitials::MetricsHelper::PROCEED, 1); |
1166 histograms.ExpectTotalCount(interaction_histogram, 1); | 1189 histograms.ExpectTotalCount(interaction_histogram, 1); |
1167 histograms.ExpectBucketCount( | 1190 histograms.ExpectBucketCount( |
1168 interaction_histogram, | 1191 interaction_histogram, |
1169 security_interstitials::MetricsHelper::TOTAL_VISITS, 1); | 1192 security_interstitials::MetricsHelper::TOTAL_VISITS, 1); |
1170 } | 1193 } |
1171 | 1194 |
1172 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, WhitelistRevisit) { | 1195 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, WhitelistRevisit) { |
1173 GURL url = SetupWarningAndNavigate(); | 1196 GURL url = SetupWarningAndNavigate(false); |
1174 | 1197 |
1175 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); | 1198 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); |
1176 AssertNoInterstitial(true); // Assert the interstitial is gone. | 1199 AssertNoInterstitial(true); // Assert the interstitial is gone. |
1177 EXPECT_EQ(url, | 1200 EXPECT_EQ(url, |
1178 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); | 1201 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); |
1179 | 1202 |
1180 // Unrelated pages should not be whitelisted now. | 1203 // Unrelated pages should not be whitelisted now. |
1181 ui_test_utils::NavigateToURL(browser(), GURL(kUnrelatedUrl)); | 1204 ui_test_utils::NavigateToURL(browser(), GURL(kUnrelatedUrl)); |
1182 AssertNoInterstitial(false); | 1205 AssertNoInterstitial(false); |
1183 | 1206 |
(...skipping 14 matching lines...) Expand all Loading... | |
1198 // Unrelated pages should not be whitelisted now. | 1221 // Unrelated pages should not be whitelisted now. |
1199 ui_test_utils::NavigateToURL(browser(), GURL(kUnrelatedUrl)); | 1222 ui_test_utils::NavigateToURL(browser(), GURL(kUnrelatedUrl)); |
1200 AssertNoInterstitial(false); | 1223 AssertNoInterstitial(false); |
1201 | 1224 |
1202 // The whitelisted page should remain whitelisted. | 1225 // The whitelisted page should remain whitelisted. |
1203 ui_test_utils::NavigateToURL(browser(), url); | 1226 ui_test_utils::NavigateToURL(browser(), url); |
1204 AssertNoInterstitial(false); | 1227 AssertNoInterstitial(false); |
1205 } | 1228 } |
1206 | 1229 |
1207 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, WhitelistUnsaved) { | 1230 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, WhitelistUnsaved) { |
1208 GURL url = SetupWarningAndNavigate(); | 1231 GURL url = SetupWarningAndNavigate(false); |
1209 | 1232 |
1210 // Navigate without making a decision. | 1233 // Navigate without making a decision. |
1211 ui_test_utils::NavigateToURL(browser(), GURL(kUnrelatedUrl)); | 1234 ui_test_utils::NavigateToURL(browser(), GURL(kUnrelatedUrl)); |
1212 AssertNoInterstitial(false); | 1235 AssertNoInterstitial(false); |
1213 | 1236 |
1214 // The non-whitelisted page should now show an interstitial. | 1237 // The non-whitelisted page should now show an interstitial. |
1215 ui_test_utils::NavigateToURL(browser(), url); | 1238 ui_test_utils::NavigateToURL(browser(), url); |
1216 EXPECT_TRUE(WaitForReady()); | 1239 EXPECT_TRUE(WaitForReady(browser())); |
1217 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); | 1240 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); |
1218 AssertNoInterstitial(true); | 1241 AssertNoInterstitial(true); |
1219 } | 1242 } |
1220 | 1243 |
1244 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, | |
1245 VerifyHitReportSentOnSBERAndNotIncognito) { | |
1246 // The extended reporting opt-in is presented in the interstitial for malware, | |
1247 // phishing, and UwS threats. | |
1248 const bool expect_threat_details = | |
1249 SafeBrowsingBlockingPage::ShouldReportThreatDetails( | |
1250 testing::get<0>(GetParam())); | |
1251 | |
1252 scoped_refptr<content::MessageLoopRunner> threat_report_sent_runner( | |
1253 new content::MessageLoopRunner); | |
1254 if (expect_threat_details) | |
1255 SetReportSentCallback(threat_report_sent_runner->QuitClosure()); | |
1256 | |
1257 browser()->profile()->GetPrefs()->SetBoolean( | |
1258 prefs::kSafeBrowsingExtendedReportingEnabled, true); // set up SBER | |
1259 GURL url = SetupWarningAndNavigate(false); // not incognito | |
1260 EXPECT_TRUE(hit_report_sent()); | |
1261 } | |
1262 | |
1263 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, | |
1264 VerifyHitReportNotSentOnIncognito) { | |
1265 // The extended reporting opt-in is presented in the interstitial for malware, | |
1266 // phishing, and UwS threats. | |
1267 const bool expect_threat_details = | |
1268 SafeBrowsingBlockingPage::ShouldReportThreatDetails( | |
1269 testing::get<0>(GetParam())); | |
1270 | |
1271 scoped_refptr<content::MessageLoopRunner> threat_report_sent_runner( | |
1272 new content::MessageLoopRunner); | |
1273 if (expect_threat_details) | |
1274 SetReportSentCallback(threat_report_sent_runner->QuitClosure()); | |
1275 | |
1276 browser()->profile()->GetPrefs()->SetBoolean( | |
Jialiu Lin
2017/05/18 22:32:12
You're configuring the extended reporting prefs on
mortonm
2017/05/19 20:21:03
Done.
| |
1277 prefs::kSafeBrowsingExtendedReportingEnabled, true); // set up SBER | |
1278 GURL url = SetupWarningAndNavigate(true); // incognito | |
1279 EXPECT_FALSE(hit_report_sent()); | |
1280 } | |
1281 | |
1282 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, | |
1283 VerifyHitReportNotSentWithoutSBER) { | |
1284 // The extended reporting opt-in is presented in the interstitial for malware, | |
1285 // phishing, and UwS threats. | |
1286 const bool expect_threat_details = | |
1287 SafeBrowsingBlockingPage::ShouldReportThreatDetails( | |
1288 testing::get<0>(GetParam())); | |
1289 | |
1290 scoped_refptr<content::MessageLoopRunner> threat_report_sent_runner( | |
1291 new content::MessageLoopRunner); | |
1292 if (expect_threat_details) | |
1293 SetReportSentCallback(threat_report_sent_runner->QuitClosure()); | |
1294 | |
1295 browser()->profile()->GetPrefs()->SetBoolean( | |
1296 prefs::kSafeBrowsingExtendedReportingEnabled, false); // no SBER | |
1297 GURL url = SetupWarningAndNavigate(false); // not incognito | |
1298 EXPECT_FALSE(hit_report_sent()); | |
1299 } | |
1300 | |
1221 namespace { | 1301 namespace { |
1222 | 1302 |
1223 class SecurityStyleTestObserver : public content::WebContentsObserver { | 1303 class SecurityStyleTestObserver : public content::WebContentsObserver { |
1224 public: | 1304 public: |
1225 explicit SecurityStyleTestObserver(content::WebContents* web_contents) | 1305 explicit SecurityStyleTestObserver(content::WebContents* web_contents) |
1226 : content::WebContentsObserver(web_contents), | 1306 : content::WebContentsObserver(web_contents), |
1227 latest_security_style_(blink::kWebSecurityStyleUnknown), | 1307 latest_security_style_(blink::kWebSecurityStyleUnknown), |
1228 latest_security_style_explanations_() {} | 1308 latest_security_style_explanations_() {} |
1229 | 1309 |
1230 blink::WebSecurityStyle latest_security_style() const { | 1310 blink::WebSecurityStyle latest_security_style() const { |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1279 // https://crbug.com/659709. | 1359 // https://crbug.com/659709. |
1280 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, | 1360 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
1281 SecurityStateGoBack) { | 1361 SecurityStateGoBack) { |
1282 // Navigate to a page so that there is somewhere to go back to. | 1362 // Navigate to a page so that there is somewhere to go back to. |
1283 GURL start_url = | 1363 GURL start_url = |
1284 net::URLRequestMockHTTPJob::GetMockUrl("http://example.test"); | 1364 net::URLRequestMockHTTPJob::GetMockUrl("http://example.test"); |
1285 ui_test_utils::NavigateToURL(browser(), start_url); | 1365 ui_test_utils::NavigateToURL(browser(), start_url); |
1286 | 1366 |
1287 // The security indicator should be downgraded while the interstitial shows. | 1367 // The security indicator should be downgraded while the interstitial shows. |
1288 GURL bad_url = net::URLRequestMockHTTPJob::GetMockUrl(kEmptyPage); | 1368 GURL bad_url = net::URLRequestMockHTTPJob::GetMockUrl(kEmptyPage); |
1289 SetupWarningAndNavigate(); | 1369 SetupWarningAndNavigate(false); |
1290 WebContents* error_tab = browser()->tab_strip_model()->GetActiveWebContents(); | 1370 WebContents* error_tab = browser()->tab_strip_model()->GetActiveWebContents(); |
1291 ASSERT_TRUE(error_tab); | 1371 ASSERT_TRUE(error_tab); |
1292 ExpectSecurityIndicatorDowngrade(error_tab, 0u); | 1372 ExpectSecurityIndicatorDowngrade(error_tab, 0u); |
1293 content::NavigationEntry* entry = | 1373 content::NavigationEntry* entry = |
1294 error_tab->GetController().GetVisibleEntry(); | 1374 error_tab->GetController().GetVisibleEntry(); |
1295 ASSERT_TRUE(entry); | 1375 ASSERT_TRUE(entry); |
1296 ASSERT_EQ(bad_url, entry->GetURL()); | 1376 ASSERT_EQ(bad_url, entry->GetURL()); |
1297 | 1377 |
1298 // Go back. | 1378 // Go back. |
1299 EXPECT_EQ(VISIBLE, GetVisibility("primary-button")); | 1379 EXPECT_EQ(VISIBLE, GetVisibility("primary-button")); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1370 ui_test_utils::NavigateToURL(browser(), main_url); | 1450 ui_test_utils::NavigateToURL(browser(), main_url); |
1371 ExpectNoSecurityIndicatorDowngrade( | 1451 ExpectNoSecurityIndicatorDowngrade( |
1372 browser()->tab_strip_model()->GetActiveWebContents()); | 1452 browser()->tab_strip_model()->GetActiveWebContents()); |
1373 } | 1453 } |
1374 | 1454 |
1375 // Test that the security indicator is downgraded after clicking through a | 1455 // Test that the security indicator is downgraded after clicking through a |
1376 // Safe Browsing interstitial. | 1456 // Safe Browsing interstitial. |
1377 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, | 1457 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, |
1378 SecurityState_HTTP) { | 1458 SecurityState_HTTP) { |
1379 // The security indicator should be downgraded while the interstitial shows. | 1459 // The security indicator should be downgraded while the interstitial shows. |
1380 SetupWarningAndNavigate(); | 1460 SetupWarningAndNavigate(false); |
1381 WebContents* error_tab = browser()->tab_strip_model()->GetActiveWebContents(); | 1461 WebContents* error_tab = browser()->tab_strip_model()->GetActiveWebContents(); |
1382 ASSERT_TRUE(error_tab); | 1462 ASSERT_TRUE(error_tab); |
1383 ExpectSecurityIndicatorDowngrade(error_tab, 0u); | 1463 ExpectSecurityIndicatorDowngrade(error_tab, 0u); |
1384 | 1464 |
1385 // The security indicator should still be downgraded post-interstitial. | 1465 // The security indicator should still be downgraded post-interstitial. |
1386 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); | 1466 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link")); |
1387 AssertNoInterstitial(true); | 1467 AssertNoInterstitial(true); |
1388 WebContents* post_tab = browser()->tab_strip_model()->GetActiveWebContents(); | 1468 WebContents* post_tab = browser()->tab_strip_model()->GetActiveWebContents(); |
1389 ASSERT_TRUE(post_tab); | 1469 ASSERT_TRUE(post_tab); |
1390 ExpectSecurityIndicatorDowngrade(post_tab, 0u); | 1470 ExpectSecurityIndicatorDowngrade(post_tab, 0u); |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1487 | 1567 |
1488 INSTANTIATE_TEST_CASE_P( | 1568 INSTANTIATE_TEST_CASE_P( |
1489 SafeBrowsingBlockingPageIDNTestWithThreatType, | 1569 SafeBrowsingBlockingPageIDNTestWithThreatType, |
1490 SafeBrowsingBlockingPageIDNTest, | 1570 SafeBrowsingBlockingPageIDNTest, |
1491 testing::Combine(testing::Values(false, true), | 1571 testing::Combine(testing::Values(false, true), |
1492 testing::Values(SB_THREAT_TYPE_URL_MALWARE, | 1572 testing::Values(SB_THREAT_TYPE_URL_MALWARE, |
1493 SB_THREAT_TYPE_URL_PHISHING, | 1573 SB_THREAT_TYPE_URL_PHISHING, |
1494 SB_THREAT_TYPE_URL_UNWANTED))); | 1574 SB_THREAT_TYPE_URL_UNWANTED))); |
1495 | 1575 |
1496 } // namespace safe_browsing | 1576 } // namespace safe_browsing |
OLD | NEW |