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

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

Issue 2623733002: Componentize SafeBrowsingBlockingPage for WebView use (Closed)
Patch Set: address final comments Created 3 years, 11 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
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 #include <list> 5 #include <list>
6 6
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "chrome/browser/interstitials/chrome_controller_client.h" 8 #include "chrome/browser/interstitials/chrome_controller_client.h"
9 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h" 10 #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h"
(...skipping 10 matching lines...) Expand all
21 #include "content/public/browser/render_process_host.h" 21 #include "content/public/browser/render_process_host.h"
22 #include "content/public/browser/web_contents.h" 22 #include "content/public/browser/web_contents.h"
23 #include "content/public/test/web_contents_tester.h" 23 #include "content/public/test/web_contents_tester.h"
24 #include "testing/gmock/include/gmock/gmock.h" 24 #include "testing/gmock/include/gmock/gmock.h"
25 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
26 26
27 using content::InterstitialPage; 27 using content::InterstitialPage;
28 using content::NavigationEntry; 28 using content::NavigationEntry;
29 using content::WebContents; 29 using content::WebContents;
30 using content::WebContentsTester; 30 using content::WebContentsTester;
31 using security_interstitials::SafeBrowsingErrorUI;
31 32
32 static const char* kGoogleURL = "http://www.google.com/"; 33 static const char* kGoogleURL = "http://www.google.com/";
33 static const char* kGoodURL = "http://www.goodguys.com/"; 34 static const char* kGoodURL = "http://www.goodguys.com/";
34 static const char* kBadURL = "http://www.badguys.com/"; 35 static const char* kBadURL = "http://www.badguys.com/";
35 static const char* kBadURL2 = "http://www.badguys2.com/"; 36 static const char* kBadURL2 = "http://www.badguys2.com/";
36 static const char* kBadURL3 = "http://www.badguys3.com/"; 37 static const char* kBadURL3 = "http://www.badguys3.com/";
37 38
38 namespace safe_browsing { 39 namespace safe_browsing {
39 40
40 namespace { 41 namespace {
41 42
42 // A SafeBrowingBlockingPage class that does not create windows. 43 // A SafeBrowingBlockingPage class that does not create windows.
43 class TestSafeBrowsingBlockingPage : public SafeBrowsingBlockingPage { 44 class TestSafeBrowsingBlockingPage : public SafeBrowsingBlockingPage {
44 public: 45 public:
45 TestSafeBrowsingBlockingPage(SafeBrowsingUIManager* manager, 46 TestSafeBrowsingBlockingPage(
46 WebContents* web_contents, 47 BaseUIManager* manager,
47 const GURL& main_frame_url, 48 WebContents* web_contents,
48 const UnsafeResourceList& unsafe_resources) 49 const GURL& main_frame_url,
50 const UnsafeResourceList& unsafe_resources,
51 const SafeBrowsingErrorUI::SBErrorDisplayOptions& display_options)
49 : SafeBrowsingBlockingPage(manager, 52 : SafeBrowsingBlockingPage(manager,
50 web_contents, 53 web_contents,
51 main_frame_url, 54 main_frame_url,
52 unsafe_resources) { 55 unsafe_resources,
56 display_options) {
53 // Don't delay details at all for the unittest. 57 // Don't delay details at all for the unittest.
54 threat_details_proceed_delay_ms_ = 0; 58 threat_details_proceed_delay_ms_ = 0;
55 DontCreateViewForTesting(); 59 DontCreateViewForTesting();
56 } 60 }
57 }; 61 };
58 62
59 class TestSafeBrowsingBlockingPageFactory 63 class TestSafeBrowsingBlockingPageFactory
60 : public SafeBrowsingBlockingPageFactory { 64 : public SafeBrowsingBlockingPageFactory {
61 public: 65 public:
62 TestSafeBrowsingBlockingPageFactory() { } 66 TestSafeBrowsingBlockingPageFactory() { }
63 ~TestSafeBrowsingBlockingPageFactory() override {} 67 ~TestSafeBrowsingBlockingPageFactory() override {}
64 68
65 SafeBrowsingBlockingPage* CreateSafeBrowsingPage( 69 SafeBrowsingBlockingPage* CreateSafeBrowsingPage(
66 SafeBrowsingUIManager* manager, 70 BaseUIManager* manager,
67 WebContents* web_contents, 71 WebContents* web_contents,
68 const GURL& main_frame_url, 72 const GURL& main_frame_url,
69 const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources) 73 const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources)
70 override { 74 override {
75 PrefService* prefs =
76 Profile::FromBrowserContext(web_contents->GetBrowserContext())
77 ->GetPrefs();
78 bool is_extended_reporting_opt_in_allowed =
79 prefs->GetBoolean(prefs::kSafeBrowsingExtendedReportingOptInAllowed);
80 bool is_proceed_anyway_disabled =
81 prefs->GetBoolean(prefs::kSafeBrowsingProceedAnywayDisabled);
82 SafeBrowsingErrorUI::SBErrorDisplayOptions display_options(
83 BaseBlockingPage::IsMainPageLoadBlocked(unsafe_resources),
84 is_extended_reporting_opt_in_allowed,
85 web_contents->GetBrowserContext()->IsOffTheRecord(),
86 IsExtendedReportingEnabled(*prefs), IsScout(*prefs),
87 is_proceed_anyway_disabled);
71 return new TestSafeBrowsingBlockingPage(manager, web_contents, 88 return new TestSafeBrowsingBlockingPage(manager, web_contents,
72 main_frame_url, unsafe_resources); 89 main_frame_url, unsafe_resources,
90 display_options);
73 } 91 }
74 }; 92 };
75 93
76 class MockTestingProfile : public TestingProfile { 94 class MockTestingProfile : public TestingProfile {
77 public: 95 public:
78 MockTestingProfile() {} 96 MockTestingProfile() {}
79 virtual ~MockTestingProfile() {} 97 virtual ~MockTestingProfile() {}
80 98
81 MOCK_CONST_METHOD0(IsOffTheRecord, bool()); 99 MOCK_CONST_METHOD0(IsOffTheRecord, bool());
82 }; 100 };
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 SetExtendedReportingPref(profile->GetPrefs(), false); 648 SetExtendedReportingPref(profile->GetPrefs(), false);
631 649
632 // Start a load. 650 // Start a load.
633 controller().LoadURL(GURL(kBadURL), content::Referrer(), 651 controller().LoadURL(GURL(kBadURL), content::Referrer(),
634 ui::PAGE_TRANSITION_TYPED, std::string()); 652 ui::PAGE_TRANSITION_TYPED, std::string());
635 653
636 // Simulate the load causing a safe browsing interstitial to be shown. 654 // Simulate the load causing a safe browsing interstitial to be shown.
637 ShowInterstitial(false, kBadURL); 655 ShowInterstitial(false, kBadURL);
638 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); 656 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage();
639 ASSERT_TRUE(sb_interstitial); 657 ASSERT_TRUE(sb_interstitial);
640 EXPECT_TRUE(sb_interstitial->sb_error_ui_->CanShowExtendedReportingOption()); 658 EXPECT_TRUE(sb_interstitial->sb_error_ui()->CanShowExtendedReportingOption());
641 659
642 base::RunLoop().RunUntilIdle(); 660 base::RunLoop().RunUntilIdle();
643 661
644 // Simulate the user clicking "don't proceed". 662 // Simulate the user clicking "don't proceed".
645 DontProceedThroughInterstitial(sb_interstitial); 663 DontProceedThroughInterstitial(sb_interstitial);
646 664
647 // The interstitial should be gone. 665 // The interstitial should be gone.
648 EXPECT_EQ(CANCEL, user_response()); 666 EXPECT_EQ(CANCEL, user_response());
649 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); 667 EXPECT_FALSE(GetSafeBrowsingBlockingPage());
650 668
(...skipping 13 matching lines...) Expand all
664 SetExtendedReportingPref(profile->GetPrefs(), false); 682 SetExtendedReportingPref(profile->GetPrefs(), false);
665 683
666 // Start a load. 684 // Start a load.
667 controller().LoadURL(GURL(kBadURL), content::Referrer(), 685 controller().LoadURL(GURL(kBadURL), content::Referrer(),
668 ui::PAGE_TRANSITION_TYPED, std::string()); 686 ui::PAGE_TRANSITION_TYPED, std::string());
669 687
670 // Simulate the load causing a safe browsing interstitial to be shown. 688 // Simulate the load causing a safe browsing interstitial to be shown.
671 ShowInterstitial(false, kBadURL); 689 ShowInterstitial(false, kBadURL);
672 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); 690 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage();
673 ASSERT_TRUE(sb_interstitial); 691 ASSERT_TRUE(sb_interstitial);
674 EXPECT_TRUE(sb_interstitial->sb_error_ui_->CanShowExtendedReportingOption()); 692 EXPECT_TRUE(sb_interstitial->sb_error_ui()->CanShowExtendedReportingOption());
675 693
676 base::RunLoop().RunUntilIdle(); 694 base::RunLoop().RunUntilIdle();
677 695
678 EXPECT_FALSE(IsExtendedReportingEnabled(*profile->GetPrefs())); 696 EXPECT_FALSE(IsExtendedReportingEnabled(*profile->GetPrefs()));
679 697
680 // Simulate the user check the report agreement checkbox. 698 // Simulate the user check the report agreement checkbox.
681 sb_interstitial->controller()->SetReportingPreference(true); 699 sb_interstitial->controller()->SetReportingPreference(true);
682 700
683 EXPECT_TRUE(IsExtendedReportingEnabled(*profile->GetPrefs())); 701 EXPECT_TRUE(IsExtendedReportingEnabled(*profile->GetPrefs()));
684 702
(...skipping 15 matching lines...) Expand all
700 SetExtendedReportingPref(profile->GetPrefs(), true); 718 SetExtendedReportingPref(profile->GetPrefs(), true);
701 719
702 // Start a load. 720 // Start a load.
703 controller().LoadURL(GURL(kBadURL), content::Referrer(), 721 controller().LoadURL(GURL(kBadURL), content::Referrer(),
704 ui::PAGE_TRANSITION_TYPED, std::string()); 722 ui::PAGE_TRANSITION_TYPED, std::string());
705 723
706 // Simulate the load causing a safe browsing interstitial to be shown. 724 // Simulate the load causing a safe browsing interstitial to be shown.
707 ShowInterstitial(false, kBadURL); 725 ShowInterstitial(false, kBadURL);
708 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); 726 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage();
709 ASSERT_TRUE(sb_interstitial); 727 ASSERT_TRUE(sb_interstitial);
710 EXPECT_FALSE(sb_interstitial->sb_error_ui_->CanShowExtendedReportingOption()); 728 EXPECT_FALSE(sb_interstitial->sb_error_ui()
729 ->CanShowExtendedReportingOption());
711 730
712 base::RunLoop().RunUntilIdle(); 731 base::RunLoop().RunUntilIdle();
713 732
714 // Simulate the user clicking "don't proceed". 733 // Simulate the user clicking "don't proceed".
715 DontProceedThroughInterstitial(sb_interstitial); 734 DontProceedThroughInterstitial(sb_interstitial);
716 735
717 // The interstitial should be gone. 736 // The interstitial should be gone.
718 EXPECT_EQ(CANCEL, user_response()); 737 EXPECT_EQ(CANCEL, user_response());
719 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); 738 EXPECT_FALSE(GetSafeBrowsingBlockingPage());
720 739
(...skipping 13 matching lines...) Expand all
734 prefs::kSafeBrowsingExtendedReportingOptInAllowed, false); 753 prefs::kSafeBrowsingExtendedReportingOptInAllowed, false);
735 754
736 // Start a load. 755 // Start a load.
737 controller().LoadURL(GURL(kBadURL), content::Referrer(), 756 controller().LoadURL(GURL(kBadURL), content::Referrer(),
738 ui::PAGE_TRANSITION_TYPED, std::string()); 757 ui::PAGE_TRANSITION_TYPED, std::string());
739 758
740 // Simulate the load causing a safe browsing interstitial to be shown. 759 // Simulate the load causing a safe browsing interstitial to be shown.
741 ShowInterstitial(false, kBadURL); 760 ShowInterstitial(false, kBadURL);
742 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage(); 761 SafeBrowsingBlockingPage* sb_interstitial = GetSafeBrowsingBlockingPage();
743 ASSERT_TRUE(sb_interstitial); 762 ASSERT_TRUE(sb_interstitial);
744 EXPECT_FALSE(sb_interstitial->sb_error_ui_->CanShowExtendedReportingOption()); 763 EXPECT_FALSE(sb_interstitial->sb_error_ui()
764 ->CanShowExtendedReportingOption());
745 765
746 base::RunLoop().RunUntilIdle(); 766 base::RunLoop().RunUntilIdle();
747 767
748 // Simulate the user clicking "don't proceed". 768 // Simulate the user clicking "don't proceed".
749 DontProceedThroughInterstitial(sb_interstitial); 769 DontProceedThroughInterstitial(sb_interstitial);
750 770
751 // The interstitial should be gone. 771 // The interstitial should be gone.
752 EXPECT_EQ(CANCEL, user_response()); 772 EXPECT_EQ(CANCEL, user_response());
753 EXPECT_FALSE(GetSafeBrowsingBlockingPage()); 773 EXPECT_FALSE(GetSafeBrowsingBlockingPage());
754 774
755 // No report should have been sent. 775 // No report should have been sent.
756 EXPECT_EQ(0u, ui_manager_->GetThreatDetails()->size()); 776 EXPECT_EQ(0u, ui_manager_->GetThreatDetails()->size());
757 ui_manager_->GetThreatDetails()->clear(); 777 ui_manager_->GetThreatDetails()->clear();
758 } 778 }
759 779
760 } // namespace safe_browsing 780 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc ('k') | chrome/browser/safe_browsing/threat_details.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698