Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(299)

Side by Side Diff: chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc

Issue 330753002: Browser and unit tests for the SB interstitial V3 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed rebase-induced bugs Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 5 // This test creates a fake safebrowsing service, where we can inject
6 // malware and phishing urls. It then uses a real browser to go to 6 // malware and phishing urls. It then uses a real browser to go to
7 // these urls, and sends "goback" or "proceed" commands and verifies 7 // these urls, and sends "goback" or "proceed" commands and verifies
8 // they work. 8 // they work.
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 298
299 FakeMalwareDetails* get_details() { 299 FakeMalwareDetails* get_details() {
300 return details_; 300 return details_;
301 } 301 }
302 302
303 private: 303 private:
304 FakeMalwareDetails* details_; 304 FakeMalwareDetails* details_;
305 }; 305 };
306 306
307 // A SafeBrowingBlockingPage class that lets us wait until it's hidden. 307 // A SafeBrowingBlockingPage class that lets us wait until it's hidden.
308 class TestSafeBrowsingBlockingPage : public SafeBrowsingBlockingPageV2 { 308 class TestSafeBrowsingBlockingPageV2 : public SafeBrowsingBlockingPageV2 {
309 public: 309 public:
310 TestSafeBrowsingBlockingPage(SafeBrowsingUIManager* manager, 310 TestSafeBrowsingBlockingPageV2(SafeBrowsingUIManager* manager,
311 WebContents* web_contents, 311 WebContents* web_contents,
312 const UnsafeResourceList& unsafe_resources) 312 const UnsafeResourceList& unsafe_resources)
313 : SafeBrowsingBlockingPageV2(manager, web_contents, unsafe_resources), 313 : SafeBrowsingBlockingPageV2(manager, web_contents, unsafe_resources),
314 wait_for_delete_(false) { 314 wait_for_delete_(false) {
315 // Don't wait the whole 3 seconds for the browser test. 315 // Don't wait the whole 3 seconds for the browser test.
316 malware_details_proceed_delay_ms_ = 100; 316 malware_details_proceed_delay_ms_ = 100;
317 } 317 }
318 318
319 virtual ~TestSafeBrowsingBlockingPage() { 319 virtual ~TestSafeBrowsingBlockingPageV2() {
320 LOG(INFO) << __FUNCTION__; 320 LOG(INFO) << __FUNCTION__;
321 if (!wait_for_delete_) 321 if (!wait_for_delete_)
322 return; 322 return;
323 323
324 // Notify that we are gone 324 // Notify that we are gone
325 base::MessageLoopForUI::current()->Quit(); 325 base::MessageLoopForUI::current()->Quit();
326 wait_for_delete_ = false; 326 wait_for_delete_ = false;
327 } 327 }
328 328
329 void WaitForDelete() { 329 void WaitForDelete() {
(...skipping 13 matching lines...) Expand all
343 } 343 }
344 virtual void OnDontProceed() OVERRIDE { 344 virtual void OnDontProceed() OVERRIDE {
345 LOG(INFO) << __FUNCTION__; 345 LOG(INFO) << __FUNCTION__;
346 SafeBrowsingBlockingPageV2::OnDontProceed(); 346 SafeBrowsingBlockingPageV2::OnDontProceed();
347 } 347 }
348 348
349 private: 349 private:
350 bool wait_for_delete_; 350 bool wait_for_delete_;
351 }; 351 };
352 352
353 // A SafeBrowingBlockingPage class that lets us wait until it's hidden.
354 class TestSafeBrowsingBlockingPageV3 : public SafeBrowsingBlockingPageV3 {
355 public:
356 TestSafeBrowsingBlockingPageV3(SafeBrowsingUIManager* manager,
357 WebContents* web_contents,
358 const UnsafeResourceList& unsafe_resources)
359 : SafeBrowsingBlockingPageV3(manager, web_contents, unsafe_resources),
360 wait_for_delete_(false) {
361 // Don't wait the whole 3 seconds for the browser test.
362 malware_details_proceed_delay_ms_ = 100;
363 }
364
365 virtual ~TestSafeBrowsingBlockingPageV3() {
366 LOG(INFO) << __FUNCTION__;
367 if (!wait_for_delete_)
368 return;
369
370 // Notify that we are gone
371 base::MessageLoopForUI::current()->Quit();
372 wait_for_delete_ = false;
373 }
374
375 void WaitForDelete() {
376 LOG(INFO) << __FUNCTION__;
377 wait_for_delete_ = true;
378 content::RunMessageLoop();
379 }
380
381 // InterstitialPageDelegate methods:
382 virtual void CommandReceived(const std::string& command) OVERRIDE {
383 LOG(INFO) << __FUNCTION__ << " " << command;
384 SafeBrowsingBlockingPageV3::CommandReceived(command);
385 }
386 virtual void OnProceed() OVERRIDE {
387 LOG(INFO) << __FUNCTION__;
388 SafeBrowsingBlockingPageV3::OnProceed();
389 }
390 virtual void OnDontProceed() OVERRIDE {
391 LOG(INFO) << __FUNCTION__;
392 SafeBrowsingBlockingPageV3::OnDontProceed();
393 }
394
395 private:
396 bool wait_for_delete_;
397 };
398
353 class TestSafeBrowsingBlockingPageFactory 399 class TestSafeBrowsingBlockingPageFactory
354 : public SafeBrowsingBlockingPageFactory { 400 : public SafeBrowsingBlockingPageFactory {
355 public: 401 public:
356 TestSafeBrowsingBlockingPageFactory() { } 402 TestSafeBrowsingBlockingPageFactory() : version_(2) { }
357 virtual ~TestSafeBrowsingBlockingPageFactory() { } 403 virtual ~TestSafeBrowsingBlockingPageFactory() { }
358 404
359 virtual SafeBrowsingBlockingPage* CreateSafeBrowsingPage( 405 virtual SafeBrowsingBlockingPage* CreateSafeBrowsingPage(
360 SafeBrowsingUIManager* delegate, 406 SafeBrowsingUIManager* delegate,
361 WebContents* web_contents, 407 WebContents* web_contents,
362 const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources) 408 const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources)
363 OVERRIDE { 409 OVERRIDE {
364 return new TestSafeBrowsingBlockingPage(delegate, web_contents, 410 if (version_ == 3) {
365 unsafe_resources); 411 return new TestSafeBrowsingBlockingPageV3(delegate, web_contents,
412 unsafe_resources);
413 }
414 return new TestSafeBrowsingBlockingPageV2(delegate, web_contents,
415 unsafe_resources);
366 } 416 }
417
418 void SetTestVersion(int version) {
419 version_ = version;
420 }
421
422 private:
423 int version_;
367 }; 424 };
368 425
369 } // namespace 426 } // namespace
370 427
371 // Tests the safe browsing blocking page in a browser. 428 // Tests the safe browsing blocking page in a browser.
372 class SafeBrowsingBlockingPageTest : public InProcessBrowserTest { 429 class SafeBrowsingBlockingPageBrowserTest
430 : public InProcessBrowserTest,
431 public testing::WithParamInterface<int> {
373 public: 432 public:
374 enum Visibility { 433 enum Visibility {
375 VISIBILITY_ERROR = -1, 434 VISIBILITY_ERROR = -1,
376 HIDDEN = 0, 435 HIDDEN = 0,
377 VISIBLE = 1, 436 VISIBLE = 1
378 }; 437 };
379 438
380 SafeBrowsingBlockingPageTest() { 439 SafeBrowsingBlockingPageBrowserTest() {
381 } 440 }
382 441
383 virtual void SetUp() OVERRIDE { 442 virtual void SetUp() OVERRIDE {
384 SafeBrowsingService::RegisterFactory(&factory_); 443 SafeBrowsingService::RegisterFactory(&factory_);
385 SafeBrowsingBlockingPage::RegisterFactory(&blocking_page_factory_); 444 SafeBrowsingBlockingPage::RegisterFactory(&blocking_page_factory_);
445 blocking_page_factory_.SetTestVersion(GetParam());
386 MalwareDetails::RegisterFactory(&details_factory_); 446 MalwareDetails::RegisterFactory(&details_factory_);
387 InProcessBrowserTest::SetUp(); 447 InProcessBrowserTest::SetUp();
388 } 448 }
389 449
390 virtual void TearDown() OVERRIDE { 450 virtual void TearDown() OVERRIDE {
391 InProcessBrowserTest::TearDown(); 451 InProcessBrowserTest::TearDown();
392 SafeBrowsingBlockingPage::RegisterFactory(NULL); 452 SafeBrowsingBlockingPage::RegisterFactory(NULL);
393 SafeBrowsingService::RegisterFactory(NULL); 453 SafeBrowsingService::RegisterFactory(NULL);
394 MalwareDetails::RegisterFactory(NULL); 454 MalwareDetails::RegisterFactory(NULL);
395 } 455 }
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 ASSERT_TRUE(interstitial_page); 525 ASSERT_TRUE(interstitial_page);
466 interstitial_page->Proceed(); 526 interstitial_page->Proceed();
467 } 527 }
468 528
469 void AssertNoInterstitial(bool wait_for_delete) { 529 void AssertNoInterstitial(bool wait_for_delete) {
470 WebContents* contents = 530 WebContents* contents =
471 browser()->tab_strip_model()->GetActiveWebContents(); 531 browser()->tab_strip_model()->GetActiveWebContents();
472 532
473 if (contents->ShowingInterstitialPage() && wait_for_delete) { 533 if (contents->ShowingInterstitialPage() && wait_for_delete) {
474 // We'll get notified when the interstitial is deleted. 534 // We'll get notified when the interstitial is deleted.
475 TestSafeBrowsingBlockingPage* page = 535 if (GetParam() == 3) {
476 static_cast<TestSafeBrowsingBlockingPage*>( 536 TestSafeBrowsingBlockingPageV3* page =
477 contents->GetInterstitialPage()->GetDelegateForTesting()); 537 static_cast<TestSafeBrowsingBlockingPageV3*>(
478 page->WaitForDelete(); 538 contents->GetInterstitialPage()->GetDelegateForTesting());
539 page->WaitForDelete();
540 } else {
541 TestSafeBrowsingBlockingPageV2* page =
542 static_cast<TestSafeBrowsingBlockingPageV2*>(
543 contents->GetInterstitialPage()->GetDelegateForTesting());
544 page->WaitForDelete();
545 }
479 } 546 }
480 547
481 // Can't use InterstitialPage::GetInterstitialPage() because that 548 // Can't use InterstitialPage::GetInterstitialPage() because that
482 // gets updated after the TestSafeBrowsingBlockingPage destructor 549 // gets updated after the TestSafeBrowsingBlockingPage destructor
483 ASSERT_FALSE(contents->ShowingInterstitialPage()); 550 ASSERT_FALSE(contents->ShowingInterstitialPage());
484 } 551 }
485 552
486 bool YesInterstitial() { 553 bool YesInterstitial() {
487 WebContents* contents = 554 WebContents* contents =
488 browser()->tab_strip_model()->GetActiveWebContents(); 555 browser()->tab_strip_model()->GetActiveWebContents();
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 return true; 690 return true;
624 } 691 }
625 692
626 protected: 693 protected:
627 TestMalwareDetailsFactory details_factory_; 694 TestMalwareDetailsFactory details_factory_;
628 695
629 private: 696 private:
630 TestSafeBrowsingServiceFactory factory_; 697 TestSafeBrowsingServiceFactory factory_;
631 TestSafeBrowsingBlockingPageFactory blocking_page_factory_; 698 TestSafeBrowsingBlockingPageFactory blocking_page_factory_;
632 699
633 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingBlockingPageTest); 700 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingBlockingPageBrowserTest);
634 }; 701 };
635 702
703 INSTANTIATE_TEST_CASE_P(SafeBrowsingInterstitialVersions,
704 SafeBrowsingBlockingPageBrowserTest,
705 testing::Values(2, 3));
706
636 // TODO(linux_aura) http://crbug.com/163931 707 // TODO(linux_aura) http://crbug.com/163931
637 // TODO(win_aura) http://crbug.com/154081 708 // TODO(win_aura) http://crbug.com/154081
638 #if defined(USE_AURA) && !defined(OS_CHROMEOS) 709 #if defined(USE_AURA) && !defined(OS_CHROMEOS)
639 #define MAYBE_MalwareRedirectInIFrameCanceled DISABLED_MalwareRedirectInIFrameCa nceled 710 #define MAYBE_MalwareRedirectInIFrameCanceled DISABLED_MalwareRedirectInIFrameCa nceled
640 #else 711 #else
641 #define MAYBE_MalwareRedirectInIFrameCanceled MalwareRedirectInIFrameCanceled 712 #define MAYBE_MalwareRedirectInIFrameCanceled MalwareRedirectInIFrameCanceled
642 #endif 713 #endif
643 IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageTest, 714 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
644 MAYBE_MalwareRedirectInIFrameCanceled) { 715 MAYBE_MalwareRedirectInIFrameCanceled) {
645 // 1. Test the case that redirect is a subresource. 716 // 1. Test the case that redirect is a subresource.
646 MalwareRedirectCancelAndProceed("openWinIFrame"); 717 MalwareRedirectCancelAndProceed("openWinIFrame");
647 // If the redirect was from subresource but canceled, "proceed" will continue 718 // If the redirect was from subresource but canceled, "proceed" will continue
648 // with the rest of resources. 719 // with the rest of resources.
649 AssertNoInterstitial(true); 720 AssertNoInterstitial(true);
650 } 721 }
651 722
652 IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageTest, 723 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
653 MalwareRedirectCanceled) { 724 MalwareRedirectCanceled) {
654 // 2. Test the case that redirect is the only resource. 725 // 2. Test the case that redirect is the only resource.
655 MalwareRedirectCancelAndProceed("openWin"); 726 MalwareRedirectCancelAndProceed("openWin");
656 // Clicking proceed won't do anything if the main request is cancelled 727 // Clicking proceed won't do anything if the main request is cancelled
657 // already. See crbug.com/76460. 728 // already. See crbug.com/76460.
658 EXPECT_TRUE(YesInterstitial()); 729 EXPECT_TRUE(YesInterstitial());
659 } 730 }
660 731
661 IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageTest, MalwareDontProceed) { 732 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
733 MalwareDontProceed) {
662 #if defined(OS_WIN) && defined(USE_ASH) 734 #if defined(OS_WIN) && defined(USE_ASH)
663 // Disable this test in Metro+Ash for now (http://crbug.com/262796). 735 // Disable this test in Metro+Ash for now (http://crbug.com/262796).
664 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 736 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests))
665 return; 737 return;
666 #endif 738 #endif
667 739
668 SetupWarningAndNavigate(SB_THREAT_TYPE_URL_MALWARE); 740 SetupWarningAndNavigate(SB_THREAT_TYPE_URL_MALWARE);
669 741
670 EXPECT_EQ(VISIBLE, GetVisibility("malware-icon")); 742 if (GetParam() == 2) {
671 EXPECT_EQ(HIDDEN, GetVisibility("subresource-icon")); 743 EXPECT_EQ(VISIBLE, GetVisibility("malware-icon"));
672 EXPECT_EQ(HIDDEN, GetVisibility("phishing-icon")); 744 EXPECT_EQ(HIDDEN, GetVisibility("subresource-icon"));
673 EXPECT_EQ(VISIBLE, GetVisibility("check-report")); 745 EXPECT_EQ(HIDDEN, GetVisibility("phishing-icon"));
674 EXPECT_EQ(HIDDEN, GetVisibility("show-diagnostic-link")); 746 EXPECT_EQ(VISIBLE, GetVisibility("check-report"));
675 EXPECT_EQ(HIDDEN, GetVisibility("report-error-link")); 747 EXPECT_EQ(HIDDEN, GetVisibility("show-diagnostic-link"));
676 EXPECT_EQ(HIDDEN, GetVisibility("proceed")); 748 EXPECT_EQ(HIDDEN, GetVisibility("report-error-link"));
677 EXPECT_TRUE(Click("see-more-link")); 749 EXPECT_EQ(HIDDEN, GetVisibility("proceed"));
678 EXPECT_EQ(VISIBLE, GetVisibility("show-diagnostic-link")); 750 EXPECT_TRUE(Click("see-more-link"));
679 EXPECT_EQ(HIDDEN, GetVisibility("report-error-link")); 751 EXPECT_EQ(VISIBLE, GetVisibility("show-diagnostic-link"));
680 EXPECT_EQ(VISIBLE, GetVisibility("proceed")); 752 EXPECT_EQ(HIDDEN, GetVisibility("report-error-link"));
753 EXPECT_EQ(VISIBLE, GetVisibility("proceed"));
754 EXPECT_TRUE(ClickAndWaitForDetach("back"));
755 } else {
756 EXPECT_EQ(VISIBLE, GetVisibility("primary-button"));
757 EXPECT_EQ(HIDDEN, GetVisibility("details"));
758 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link"));
759 EXPECT_EQ(HIDDEN, GetVisibility("error-code"));
760 EXPECT_TRUE(Click("details-button"));
761 EXPECT_EQ(VISIBLE, GetVisibility("details"));
762 EXPECT_EQ(VISIBLE, GetVisibility("proceed-link"));
763 EXPECT_EQ(HIDDEN, GetVisibility("error-code"));
764 EXPECT_TRUE(ClickAndWaitForDetach("primary-button"));
765 }
681 766
682 EXPECT_TRUE(ClickAndWaitForDetach("back"));
683 AssertNoInterstitial(false); // Assert the interstitial is gone 767 AssertNoInterstitial(false); // Assert the interstitial is gone
684 EXPECT_EQ(GURL(url::kAboutBlankURL), // Back to "about:blank" 768 EXPECT_EQ(GURL(url::kAboutBlankURL), // Back to "about:blank"
685 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); 769 browser()->tab_strip_model()->GetActiveWebContents()->GetURL());
686 } 770 }
687 771
688 IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageTest, MalwareProceed) { 772 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, MalwareProceed) {
689 GURL url = SetupWarningAndNavigate(SB_THREAT_TYPE_URL_MALWARE); 773 GURL url = SetupWarningAndNavigate(SB_THREAT_TYPE_URL_MALWARE);
690 774
691 EXPECT_TRUE(ClickAndWaitForDetach("proceed")); 775 if (GetParam() == 2)
776 EXPECT_TRUE(ClickAndWaitForDetach("proceed"));
777 else
778 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link"));
692 AssertNoInterstitial(true); // Assert the interstitial is gone. 779 AssertNoInterstitial(true); // Assert the interstitial is gone.
693 EXPECT_EQ(url, 780 EXPECT_EQ(url,
694 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); 781 browser()->tab_strip_model()->GetActiveWebContents()->GetURL());
695 } 782 }
696 783
697 IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageTest, 784 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
698 MalwareLearnMore) { 785 MalwareLearnMoreV2) {
786 if (GetParam() == 3) return; // Don't have this link in V3.
699 SetupWarningAndNavigate(SB_THREAT_TYPE_URL_MALWARE); 787 SetupWarningAndNavigate(SB_THREAT_TYPE_URL_MALWARE);
700 788
701 EXPECT_TRUE(ClickAndWaitForDetach("learn-more-link")); 789 EXPECT_TRUE(ClickAndWaitForDetach("learn-more-link"));
702 AssertNoInterstitial(false); // Assert the interstitial is gone 790 AssertNoInterstitial(false); // Assert the interstitial is gone
703 791
704 // We are in the help page. 792 // We are in the help page.
705 EXPECT_EQ( 793 EXPECT_EQ(
706 "/transparencyreport/safebrowsing/", 794 "/transparencyreport/safebrowsing/",
707 browser()->tab_strip_model()->GetActiveWebContents()->GetURL().path()); 795 browser()->tab_strip_model()->GetActiveWebContents()->GetURL().path());
708 } 796 }
709 797
710 IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageTest, 798 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
711 MalwareIframeDontProceed) { 799 MalwareIframeDontProceed) {
712 #if defined(OS_WIN) && defined(USE_ASH) 800 #if defined(OS_WIN) && defined(USE_ASH)
713 // Disable this test in Metro+Ash for now (http://crbug.com/262796). 801 // Disable this test in Metro+Ash for now (http://crbug.com/262796).
714 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 802 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests))
715 return; 803 return;
716 #endif 804 #endif
717 805
718 SetupMalwareIframeWarningAndNavigate(); 806 SetupMalwareIframeWarningAndNavigate();
719 807
720 EXPECT_EQ(HIDDEN, GetVisibility("malware-icon")); 808 if (GetParam() == 2) {
721 EXPECT_EQ(VISIBLE, GetVisibility("subresource-icon")); 809 EXPECT_EQ(HIDDEN, GetVisibility("malware-icon"));
722 EXPECT_EQ(HIDDEN, GetVisibility("phishing-icon")); 810 EXPECT_EQ(VISIBLE, GetVisibility("subresource-icon"));
723 EXPECT_EQ(VISIBLE, GetVisibility("check-report")); 811 EXPECT_EQ(HIDDEN, GetVisibility("phishing-icon"));
724 EXPECT_EQ(HIDDEN, GetVisibility("show-diagnostic-link")); 812 EXPECT_EQ(VISIBLE, GetVisibility("check-report"));
725 EXPECT_EQ(HIDDEN, GetVisibility("report-error-link")); 813 EXPECT_EQ(HIDDEN, GetVisibility("show-diagnostic-link"));
726 EXPECT_EQ(HIDDEN, GetVisibility("proceed")); 814 EXPECT_EQ(HIDDEN, GetVisibility("report-error-link"));
727 EXPECT_TRUE(Click("see-more-link")); 815 EXPECT_EQ(HIDDEN, GetVisibility("proceed"));
728 EXPECT_EQ(VISIBLE, GetVisibility("show-diagnostic-link")); 816 EXPECT_TRUE(Click("see-more-link"));
729 EXPECT_EQ(HIDDEN, GetVisibility("report-error-link")); 817 EXPECT_EQ(VISIBLE, GetVisibility("show-diagnostic-link"));
730 EXPECT_EQ(VISIBLE, GetVisibility("proceed")); 818 EXPECT_EQ(HIDDEN, GetVisibility("report-error-link"));
819 EXPECT_EQ(VISIBLE, GetVisibility("proceed"));
820 EXPECT_TRUE(ClickAndWaitForDetach("back"));
821 } else {
822 EXPECT_EQ(VISIBLE, GetVisibility("primary-button"));
823 EXPECT_EQ(HIDDEN, GetVisibility("details"));
824 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link"));
825 EXPECT_EQ(HIDDEN, GetVisibility("error-code"));
826 EXPECT_TRUE(Click("details-button"));
827 EXPECT_EQ(VISIBLE, GetVisibility("details"));
828 EXPECT_EQ(VISIBLE, GetVisibility("proceed-link"));
829 EXPECT_EQ(HIDDEN, GetVisibility("error-code"));
830 EXPECT_TRUE(ClickAndWaitForDetach("primary-button"));
831 }
731 832
732 EXPECT_TRUE(ClickAndWaitForDetach("back"));
733 AssertNoInterstitial(false); // Assert the interstitial is gone 833 AssertNoInterstitial(false); // Assert the interstitial is gone
734 834
735 EXPECT_EQ(GURL(url::kAboutBlankURL), // Back to "about:blank" 835 EXPECT_EQ(GURL(url::kAboutBlankURL), // Back to "about:blank"
736 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); 836 browser()->tab_strip_model()->GetActiveWebContents()->GetURL());
737 } 837 }
738 838
739 IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageTest, MalwareIframeProceed) { 839 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
840 MalwareIframeProceed) {
740 GURL url = SetupMalwareIframeWarningAndNavigate(); 841 GURL url = SetupMalwareIframeWarningAndNavigate();
741 842
742 EXPECT_TRUE(ClickAndWaitForDetach("proceed")); 843 if (GetParam() == 2)
844 EXPECT_TRUE(ClickAndWaitForDetach("proceed"));
845 else
846 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link"));
743 AssertNoInterstitial(true); // Assert the interstitial is gone 847 AssertNoInterstitial(true); // Assert the interstitial is gone
744 848
745 EXPECT_EQ(url, 849 EXPECT_EQ(url,
746 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); 850 browser()->tab_strip_model()->GetActiveWebContents()->GetURL());
747 } 851 }
748 852
749 // http://crbug.com/273302 853 // http://crbug.com/273302
750 #if defined(OS_WIN) 854 #if defined(OS_WIN)
751 // Temporarily re-enabled to get some logs. 855 // Temporarily re-enabled to get some logs.
752 #define MAYBE_MalwareIframeReportDetails MalwareIframeReportDetails 856 #define MAYBE_MalwareIframeReportDetails MalwareIframeReportDetails
753 #else 857 #else
754 #define MAYBE_MalwareIframeReportDetails MalwareIframeReportDetails 858 #define MAYBE_MalwareIframeReportDetails MalwareIframeReportDetails
755 #endif 859 #endif
756 IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageTest, 860 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
757 MAYBE_MalwareIframeReportDetails) { 861 MAYBE_MalwareIframeReportDetails) {
862 // TODO(felt): Enable for V3 when the checkbox is added.
863 if (GetParam() == 3) return;
864
758 scoped_refptr<content::MessageLoopRunner> malware_report_sent_runner( 865 scoped_refptr<content::MessageLoopRunner> malware_report_sent_runner(
759 new content::MessageLoopRunner); 866 new content::MessageLoopRunner);
760 SetReportSentCallback(malware_report_sent_runner->QuitClosure()); 867 SetReportSentCallback(malware_report_sent_runner->QuitClosure());
761 868
762 GURL url = SetupMalwareIframeWarningAndNavigate(); 869 GURL url = SetupMalwareIframeWarningAndNavigate();
763 870
764 LOG(INFO) << "1"; 871 LOG(INFO) << "1";
765 872
766 // If the DOM details from renderer did not already return, wait for them. 873 // If the DOM details from renderer did not already return, wait for them.
767 details_factory_.get_details()->WaitForDOM(); 874 details_factory_.get_details()->WaitForDOM();
(...skipping 20 matching lines...) Expand all
788 safe_browsing::ClientMalwareReportRequest report; 895 safe_browsing::ClientMalwareReportRequest report;
789 ASSERT_TRUE(report.ParseFromString(serialized)); 896 ASSERT_TRUE(report.ParseFromString(serialized));
790 // Verify the report is complete. 897 // Verify the report is complete.
791 EXPECT_TRUE(report.complete()); 898 EXPECT_TRUE(report.complete());
792 LOG(INFO) << "8"; 899 LOG(INFO) << "8";
793 } 900 }
794 901
795 // Verifies that the "proceed anyway" link isn't available when it is disabled 902 // Verifies that the "proceed anyway" link isn't available when it is disabled
796 // by the corresponding policy. Also verifies that sending the "proceed" 903 // by the corresponding policy. Also verifies that sending the "proceed"
797 // command anyway doesn't advance to the malware site. 904 // command anyway doesn't advance to the malware site.
798 IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageTest, ProceedDisabled) { 905 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, ProceedDisabled) {
799 #if defined(OS_WIN) && defined(USE_ASH) 906 #if defined(OS_WIN) && defined(USE_ASH)
800 // Disable this test in Metro+Ash for now (http://crbug.com/262796). 907 // Disable this test in Metro+Ash for now (http://crbug.com/262796).
801 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 908 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests))
802 return; 909 return;
803 #endif 910 #endif
911 if (GetParam() == 3) return;
804 912
805 // Simulate a policy disabling the "proceed anyway" link. 913 // Simulate a policy disabling the "proceed anyway" link.
806 browser()->profile()->GetPrefs()->SetBoolean( 914 browser()->profile()->GetPrefs()->SetBoolean(
807 prefs::kSafeBrowsingProceedAnywayDisabled, true); 915 prefs::kSafeBrowsingProceedAnywayDisabled, true);
808 916
809 SetupWarningAndNavigate(SB_THREAT_TYPE_URL_MALWARE); 917 SetupWarningAndNavigate(SB_THREAT_TYPE_URL_MALWARE);
810 918
811 EXPECT_EQ(VISIBLE, GetVisibility("check-report")); 919 if (GetParam() == 2) {
812 EXPECT_EQ(HIDDEN, GetVisibility("show-diagnostic-link")); 920 EXPECT_EQ(VISIBLE, GetVisibility("check-report"));
813 EXPECT_EQ(HIDDEN, GetVisibility("proceed")); 921 EXPECT_EQ(HIDDEN, GetVisibility("show-diagnostic-link"));
814 EXPECT_EQ(HIDDEN, GetVisibility("proceed-span")); 922 EXPECT_EQ(HIDDEN, GetVisibility("proceed"));
815 EXPECT_TRUE(Click("see-more-link")); 923 EXPECT_EQ(HIDDEN, GetVisibility("proceed-span"));
816 EXPECT_EQ(VISIBLE, GetVisibility("show-diagnostic-link")); 924 EXPECT_TRUE(Click("see-more-link"));
817 EXPECT_EQ(HIDDEN, GetVisibility("proceed")); 925 EXPECT_EQ(VISIBLE, GetVisibility("show-diagnostic-link"));
818 EXPECT_EQ(HIDDEN, GetVisibility("proceed-span")); 926 EXPECT_EQ(HIDDEN, GetVisibility("proceed"));
927 EXPECT_EQ(HIDDEN, GetVisibility("proceed-span"));
928 EXPECT_TRUE(ClickAndWaitForDetach("proceed"));
929 } else {
930 EXPECT_EQ(VISIBLE, GetVisibility("primary-button"));
931 EXPECT_EQ(HIDDEN, GetVisibility("details"));
932 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link"));
933 EXPECT_EQ(HIDDEN, GetVisibility("final-paragraph"));
934 EXPECT_TRUE(Click("details-button"));
935 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link"));
936 EXPECT_EQ(HIDDEN, GetVisibility("final-paragraph"));
937 SendCommand("proceed");
938 }
819 939
820 // The "proceed" command should go back instead, if proceeding is disabled. 940 // The "proceed" command should go back instead, if proceeding is disabled.
821 EXPECT_TRUE(ClickAndWaitForDetach("proceed"));
822 AssertNoInterstitial(true); 941 AssertNoInterstitial(true);
823 EXPECT_EQ(GURL(url::kAboutBlankURL), // Back to "about:blank" 942 EXPECT_EQ(GURL(url::kAboutBlankURL), // Back to "about:blank"
824 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); 943 browser()->tab_strip_model()->GetActiveWebContents()->GetURL());
825 } 944 }
826 945
827 // Verifies that the reporting checkbox is hidden on non-HTTP pages. 946 // Verifies that the reporting checkbox is hidden on non-HTTP pages.
828 // TODO(mattm): Should also verify that no report is sent, but there isn't a 947 // TODO(mattm): Should also verify that no report is sent, but there isn't a
829 // good way to do that in the current design. 948 // good way to do that in the current design.
830 IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageTest, ReportingDisabled) { 949 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest, ReportingDisabled) {
831 #if defined(OS_WIN) && defined(USE_ASH) 950 #if defined(OS_WIN) && defined(USE_ASH)
832 // Disable this test in Metro+Ash for now (http://crbug.com/262796). 951 // Disable this test in Metro+Ash for now (http://crbug.com/262796).
833 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 952 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests))
834 return; 953 return;
835 #endif 954 #endif
955 // TODO(felt): Enable for V3 when the checkbox is added.
956 if (GetParam() == 3) return;
836 957
837 browser()->profile()->GetPrefs()->SetBoolean( 958 browser()->profile()->GetPrefs()->SetBoolean(
838 prefs::kSafeBrowsingExtendedReportingEnabled, true); 959 prefs::kSafeBrowsingExtendedReportingEnabled, true);
839 960
840 net::SpawnedTestServer https_server( 961 net::SpawnedTestServer https_server(
841 net::SpawnedTestServer::TYPE_HTTPS, net::SpawnedTestServer::kLocalhost, 962 net::SpawnedTestServer::TYPE_HTTPS, net::SpawnedTestServer::kLocalhost,
842 base::FilePath(FILE_PATH_LITERAL("chrome/test/data"))); 963 base::FilePath(FILE_PATH_LITERAL("chrome/test/data")));
843 ASSERT_TRUE(https_server.Start()); 964 ASSERT_TRUE(https_server.Start());
844 GURL url = https_server.GetURL(kEmptyPage); 965 GURL url = https_server.GetURL(kEmptyPage);
845 SetURLThreatType(url, SB_THREAT_TYPE_URL_MALWARE); 966 SetURLThreatType(url, SB_THREAT_TYPE_URL_MALWARE);
846 ui_test_utils::NavigateToURL(browser(), url); 967 ui_test_utils::NavigateToURL(browser(), url);
847 ASSERT_TRUE(WaitForReady()); 968 ASSERT_TRUE(WaitForReady());
848 969
849 EXPECT_EQ(HIDDEN, GetVisibility("check-report")); 970 EXPECT_EQ(HIDDEN, GetVisibility("check-report"));
850 EXPECT_EQ(HIDDEN, GetVisibility("show-diagnostic-link")); 971 EXPECT_EQ(HIDDEN, GetVisibility("show-diagnostic-link"));
851 EXPECT_EQ(HIDDEN, GetVisibility("proceed")); 972 EXPECT_EQ(HIDDEN, GetVisibility("proceed"));
852 EXPECT_TRUE(Click("see-more-link")); 973 EXPECT_TRUE(Click("see-more-link"));
853 EXPECT_EQ(VISIBLE, GetVisibility("show-diagnostic-link")); 974 EXPECT_EQ(VISIBLE, GetVisibility("show-diagnostic-link"));
854 EXPECT_EQ(VISIBLE, GetVisibility("proceed")); 975 EXPECT_EQ(VISIBLE, GetVisibility("proceed"));
855 976
856 EXPECT_TRUE(ClickAndWaitForDetach("back")); 977 EXPECT_TRUE(ClickAndWaitForDetach("back"));
857 AssertNoInterstitial(false); // Assert the interstitial is gone 978 AssertNoInterstitial(false); // Assert the interstitial is gone
858 EXPECT_EQ(GURL(url::kAboutBlankURL), // Back to "about:blank" 979 EXPECT_EQ(GURL(url::kAboutBlankURL), // Back to "about:blank"
859 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); 980 browser()->tab_strip_model()->GetActiveWebContents()->GetURL());
860 } 981 }
861 982
862 IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageTest, PhishingDontProceed) { 983 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
984 PhishingDontProceed) {
863 #if defined(OS_WIN) && defined(USE_ASH) 985 #if defined(OS_WIN) && defined(USE_ASH)
864 // Disable this test in Metro+Ash for now (http://crbug.com/262796). 986 // Disable this test in Metro+Ash for now (http://crbug.com/262796).
865 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 987 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests))
866 return; 988 return;
867 #endif 989 #endif
868 990
869 SetupWarningAndNavigate(SB_THREAT_TYPE_URL_PHISHING); 991 SetupWarningAndNavigate(SB_THREAT_TYPE_URL_PHISHING);
870 992
871 EXPECT_EQ(HIDDEN, GetVisibility("malware-icon")); 993 if (GetParam() == 2) {
872 EXPECT_EQ(HIDDEN, GetVisibility("subresource-icon")); 994 EXPECT_EQ(HIDDEN, GetVisibility("malware-icon"));
873 EXPECT_EQ(VISIBLE, GetVisibility("phishing-icon")); 995 EXPECT_EQ(HIDDEN, GetVisibility("subresource-icon"));
874 EXPECT_EQ(HIDDEN, GetVisibility("check-report")); 996 EXPECT_EQ(VISIBLE, GetVisibility("phishing-icon"));
875 EXPECT_EQ(HIDDEN, GetVisibility("show-diagnostic-link")); 997 EXPECT_EQ(HIDDEN, GetVisibility("check-report"));
876 EXPECT_EQ(HIDDEN, GetVisibility("report-error-link")); 998 EXPECT_EQ(HIDDEN, GetVisibility("show-diagnostic-link"));
877 EXPECT_EQ(HIDDEN, GetVisibility("proceed")); 999 EXPECT_EQ(HIDDEN, GetVisibility("report-error-link"));
878 EXPECT_TRUE(Click("see-more-link")); 1000 EXPECT_EQ(HIDDEN, GetVisibility("proceed"));
879 EXPECT_EQ(HIDDEN, GetVisibility("show-diagnostic-link")); 1001 EXPECT_TRUE(Click("see-more-link"));
880 EXPECT_EQ(VISIBLE, GetVisibility("report-error-link")); 1002 EXPECT_EQ(HIDDEN, GetVisibility("show-diagnostic-link"));
881 EXPECT_EQ(VISIBLE, GetVisibility("proceed")); 1003 EXPECT_EQ(VISIBLE, GetVisibility("report-error-link"));
1004 EXPECT_EQ(VISIBLE, GetVisibility("proceed"));
1005 EXPECT_TRUE(ClickAndWaitForDetach("back"));
1006 } else {
1007 EXPECT_EQ(VISIBLE, GetVisibility("primary-button"));
1008 EXPECT_EQ(HIDDEN, GetVisibility("details"));
1009 EXPECT_EQ(HIDDEN, GetVisibility("proceed-link"));
1010 EXPECT_EQ(HIDDEN, GetVisibility("error-code"));
1011 EXPECT_TRUE(Click("details-button"));
1012 EXPECT_EQ(VISIBLE, GetVisibility("details"));
1013 EXPECT_EQ(VISIBLE, GetVisibility("proceed-link"));
1014 EXPECT_EQ(HIDDEN, GetVisibility("error-code"));
1015 EXPECT_TRUE(ClickAndWaitForDetach("primary-button"));
1016 }
882 1017
883 EXPECT_TRUE(ClickAndWaitForDetach("back"));
884 AssertNoInterstitial(false); // Assert the interstitial is gone 1018 AssertNoInterstitial(false); // Assert the interstitial is gone
885 EXPECT_EQ(GURL(url::kAboutBlankURL), // We are back to "about:blank". 1019 EXPECT_EQ(GURL(url::kAboutBlankURL), // We are back to "about:blank".
886 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); 1020 browser()->tab_strip_model()->GetActiveWebContents()->GetURL());
887 } 1021 }
888 1022
889 // http://crbug.com/247763 1023 // http://crbug.com/247763
890 #if defined(OS_WIN) 1024 #if defined(OS_WIN)
891 // Temporarily re-enabled to get some logs. 1025 // Temporarily re-enabled to get some logs.
892 #define MAYBE_PhishingProceed PhishingProceed 1026 #define MAYBE_PhishingProceed PhishingProceed
893 #else 1027 #else
894 #define MAYBE_PhishingProceed PhishingProceed 1028 #define MAYBE_PhishingProceed PhishingProceed
895 #endif 1029 #endif
896 1030 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
897 IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageTest, MAYBE_PhishingProceed) { 1031 MAYBE_PhishingProceed) {
898 GURL url = SetupWarningAndNavigate(SB_THREAT_TYPE_URL_PHISHING); 1032 GURL url = SetupWarningAndNavigate(SB_THREAT_TYPE_URL_PHISHING);
899 LOG(INFO) << "1"; 1033 LOG(INFO) << "1";
900 1034
901 EXPECT_TRUE(ClickAndWaitForDetach("proceed")); 1035 if (GetParam() == 2)
1036 EXPECT_TRUE(ClickAndWaitForDetach("proceed"));
1037 else
1038 EXPECT_TRUE(ClickAndWaitForDetach("proceed-link"));
902 LOG(INFO) << "2"; 1039 LOG(INFO) << "2";
903 AssertNoInterstitial(true); // Assert the interstitial is gone 1040 AssertNoInterstitial(true); // Assert the interstitial is gone
904 LOG(INFO) << "3"; 1041 LOG(INFO) << "3";
905 EXPECT_EQ(url, 1042 EXPECT_EQ(url,
906 browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); 1043 browser()->tab_strip_model()->GetActiveWebContents()->GetURL());
907 LOG(INFO) << "4"; 1044 LOG(INFO) << "4";
908 } 1045 }
909 1046
910 IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageTest, PhishingReportError) { 1047 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
1048 PhishingReportErrorV2) {
1049 if (GetParam() == 3) return; // Not supported in V3.
911 SetupWarningAndNavigate(SB_THREAT_TYPE_URL_PHISHING); 1050 SetupWarningAndNavigate(SB_THREAT_TYPE_URL_PHISHING);
912 1051
913 EXPECT_TRUE(ClickAndWaitForDetach("report-error-link")); 1052 EXPECT_TRUE(ClickAndWaitForDetach("report-error-link"));
914 AssertNoInterstitial(false); // Assert the interstitial is gone 1053 AssertNoInterstitial(false); // Assert the interstitial is gone
915 1054
916 // We are in the error reporting page. 1055 // We are in the error reporting page.
917 EXPECT_EQ( 1056 EXPECT_EQ(
918 "/safebrowsing/report_error/", 1057 "/safebrowsing/report_error/",
919 browser()->tab_strip_model()->GetActiveWebContents()->GetURL().path()); 1058 browser()->tab_strip_model()->GetActiveWebContents()->GetURL().path());
920 } 1059 }
921 1060
922 // See crbug.com/248447 1061 // See crbug.com/248447
923 #if defined(OS_WIN) 1062 #if defined(OS_WIN)
924 // Temporarily re-enabled to get some logs. 1063 // Temporarily re-enabled to get some logs.
925 #define MAYBE_PhishingLearnMore PhishingLearnMore 1064 #define MAYBE_PhishingLearnMore PhishingLearnMore
926 #else 1065 #else
927 #define MAYBE_PhishingLearnMore PhishingLearnMore 1066 #define MAYBE_PhishingLearnMore PhishingLearnMore
928 #endif 1067 #endif
929 1068
930 IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageTest, MAYBE_PhishingLearnMore) { 1069 IN_PROC_BROWSER_TEST_P(SafeBrowsingBlockingPageBrowserTest,
1070 MAYBE_PhishingLearnMore) {
931 SetupWarningAndNavigate(SB_THREAT_TYPE_URL_PHISHING); 1071 SetupWarningAndNavigate(SB_THREAT_TYPE_URL_PHISHING);
932 LOG(INFO) << "1"; 1072 LOG(INFO) << "1";
933 1073
934 EXPECT_TRUE(ClickAndWaitForDetach("learn-more-link")); 1074 if (GetParam() == 2)
1075 EXPECT_TRUE(ClickAndWaitForDetach("learn-more-link"));
1076 else
1077 EXPECT_TRUE(ClickAndWaitForDetach("help-link"));
935 LOG(INFO) << "2"; 1078 LOG(INFO) << "2";
936 AssertNoInterstitial(false); // Assert the interstitial is gone 1079 AssertNoInterstitial(false); // Assert the interstitial is gone
937 1080
938 LOG(INFO) << "3"; 1081 LOG(INFO) << "3";
939 // We are in the help page. 1082 // We are in the help page.
940 EXPECT_EQ( 1083 EXPECT_EQ(
941 "/transparencyreport/safebrowsing/", 1084 "/transparencyreport/safebrowsing/",
942 browser()->tab_strip_model()->GetActiveWebContents()->GetURL().path()); 1085 browser()->tab_strip_model()->GetActiveWebContents()->GetURL().path());
943 LOG(INFO) << "4"; 1086 LOG(INFO) << "4";
944 } 1087 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698