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

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

Issue 172393005: [safe browsing] Remove stale BINHASH code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update histogram info in comment. Created 6 years, 10 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 safebrowsing service using test safebrowsing database 5 // This test creates a safebrowsing service using test safebrowsing database
6 // and a test protocol manager. It is used to test logics in safebrowsing 6 // and a test protocol manager. It is used to test logics in safebrowsing
7 // service. 7 // service.
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 std::vector<GURL> urls(1, url); 92 std::vector<GURL> urls(1, url);
93 return ContainsUrl(safe_browsing_util::kMalwareList, 93 return ContainsUrl(safe_browsing_util::kMalwareList,
94 safe_browsing_util::kPhishingList, 94 safe_browsing_util::kPhishingList,
95 urls, prefix_hits, full_hits); 95 urls, prefix_hits, full_hits);
96 } 96 }
97 virtual bool ContainsDownloadUrl( 97 virtual bool ContainsDownloadUrl(
98 const std::vector<GURL>& urls, 98 const std::vector<GURL>& urls,
99 std::vector<SBPrefix>* prefix_hits) OVERRIDE { 99 std::vector<SBPrefix>* prefix_hits) OVERRIDE {
100 std::vector<SBFullHashResult> full_hits; 100 std::vector<SBFullHashResult> full_hits;
101 bool found = ContainsUrl(safe_browsing_util::kBinUrlList, 101 bool found = ContainsUrl(safe_browsing_util::kBinUrlList,
102 safe_browsing_util::kBinHashList, 102 safe_browsing_util::kBinUrlList,
103 urls, prefix_hits, &full_hits); 103 urls, prefix_hits, &full_hits);
104 if (!found) 104 if (!found)
105 return false; 105 return false;
106 DCHECK_LE(1U, prefix_hits->size()); 106 DCHECK_LE(1U, prefix_hits->size());
107 return true; 107 return true;
108 } 108 }
109 virtual bool ContainsDownloadHashPrefix(const SBPrefix& prefix) OVERRIDE {
110 return download_digest_prefix_.count(prefix) > 0;
111 }
112 virtual bool ContainsCsdWhitelistedUrl(const GURL& url) OVERRIDE { 109 virtual bool ContainsCsdWhitelistedUrl(const GURL& url) OVERRIDE {
113 return true; 110 return true;
114 } 111 }
115 virtual bool ContainsDownloadWhitelistedString( 112 virtual bool ContainsDownloadWhitelistedString(
116 const std::string& str) OVERRIDE { 113 const std::string& str) OVERRIDE {
117 return true; 114 return true;
118 } 115 }
119 virtual bool ContainsDownloadWhitelistedUrl(const GURL& url) OVERRIDE { 116 virtual bool ContainsDownloadWhitelistedUrl(const GURL& url) OVERRIDE {
120 return true; 117 return true;
121 } 118 }
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 } 611 }
615 612
616 void CheckDownloadUrl(const std::vector<GURL>& url_chain) { 613 void CheckDownloadUrl(const std::vector<GURL>& url_chain) {
617 BrowserThread::PostTask( 614 BrowserThread::PostTask(
618 BrowserThread::IO, FROM_HERE, 615 BrowserThread::IO, FROM_HERE,
619 base::Bind(&TestSBClient::CheckDownloadUrlOnIOThread, 616 base::Bind(&TestSBClient::CheckDownloadUrlOnIOThread,
620 this, url_chain)); 617 this, url_chain));
621 content::RunMessageLoop(); // Will stop in OnCheckDownloadUrlResult. 618 content::RunMessageLoop(); // Will stop in OnCheckDownloadUrlResult.
622 } 619 }
623 620
624 void CheckDownloadHash(const std::string& full_hash) {
625 BrowserThread::PostTask(
626 BrowserThread::IO, FROM_HERE,
627 base::Bind(&TestSBClient::CheckDownloadHashOnIOThread,
628 this, full_hash));
629 content::RunMessageLoop(); // Will stop in OnCheckDownloadHashResult.
630 }
631
632 private: 621 private:
633 friend class base::RefCountedThreadSafe<TestSBClient>; 622 friend class base::RefCountedThreadSafe<TestSBClient>;
634 virtual ~TestSBClient() {} 623 virtual ~TestSBClient() {}
635 624
636 void CheckDownloadUrlOnIOThread(const std::vector<GURL>& url_chain) { 625 void CheckDownloadUrlOnIOThread(const std::vector<GURL>& url_chain) {
637 safe_browsing_service_->database_manager()-> 626 safe_browsing_service_->database_manager()->
638 CheckDownloadUrl(url_chain, this); 627 CheckDownloadUrl(url_chain, this);
639 } 628 }
640 629
641 void CheckDownloadHashOnIOThread(const std::string& full_hash) {
642 safe_browsing_service_->database_manager()->
643 CheckDownloadHash(full_hash, this);
644 }
645
646 // Called when the result of checking a download URL is known. 630 // Called when the result of checking a download URL is known.
647 virtual void OnCheckDownloadUrlResult(const std::vector<GURL>& url_chain, 631 virtual void OnCheckDownloadUrlResult(const std::vector<GURL>& url_chain,
648 SBThreatType threat_type) OVERRIDE { 632 SBThreatType threat_type) OVERRIDE {
649 threat_type_ = threat_type; 633 threat_type_ = threat_type;
650 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 634 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
651 base::Bind(&TestSBClient::DownloadCheckDone, this)); 635 base::Bind(&TestSBClient::DownloadCheckDone, this));
652 } 636 }
653 637
654 // Called when the result of checking a download hash is known.
655 virtual void OnCheckDownloadHashResult(const std::string& hash,
656 SBThreatType threat_type) OVERRIDE {
657 threat_type_ = threat_type;
658 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
659 base::Bind(&TestSBClient::DownloadCheckDone, this));
660 }
661
662 void DownloadCheckDone() { 638 void DownloadCheckDone() {
663 base::MessageLoopForUI::current()->Quit(); 639 base::MessageLoopForUI::current()->Quit();
664 } 640 }
665 641
666 SBThreatType threat_type_; 642 SBThreatType threat_type_;
667 SafeBrowsingService* safe_browsing_service_; 643 SafeBrowsingService* safe_browsing_service_;
668 644
669 DISALLOW_COPY_AND_ASSIGN(TestSBClient); 645 DISALLOW_COPY_AND_ASSIGN(TestSBClient);
670 }; 646 };
671 647
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
715 GenUrlFullhashResult(badbin_url, safe_browsing_util::kBinUrlList, 691 GenUrlFullhashResult(badbin_url, safe_browsing_util::kBinUrlList,
716 chunk_id, &full_hash_result); 692 chunk_id, &full_hash_result);
717 SetupResponseForUrl(badbin_url, full_hash_result); 693 SetupResponseForUrl(badbin_url, full_hash_result);
718 694
719 client->CheckDownloadUrl(badbin_urls); 695 client->CheckDownloadUrl(badbin_urls);
720 696
721 // Now, the badbin_url is not safe since it is added to download database. 697 // Now, the badbin_url is not safe since it is added to download database.
722 EXPECT_EQ(SB_THREAT_TYPE_BINARY_MALWARE_URL, client->GetThreatType()); 698 EXPECT_EQ(SB_THREAT_TYPE_BINARY_MALWARE_URL, client->GetThreatType());
723 } 699 }
724 700
725 IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, CheckDownloadHash) {
726 const std::string full_hash = "12345678902234567890323456789012";
727
728 scoped_refptr<TestSBClient> client(new TestSBClient);
729 client->CheckDownloadHash(full_hash);
730
731 // Since badbin_url is not in database, it is considered to be safe.
732 EXPECT_EQ(SB_THREAT_TYPE_SAFE, client->GetThreatType());
733
734 SBFullHashResult full_hash_result;
735 int chunk_id = 0;
736 GenDigestFullhashResult(full_hash, safe_browsing_util::kBinHashList,
737 chunk_id, &full_hash_result);
738 SetupResponseForDigest(full_hash, full_hash_result);
739
740 client->CheckDownloadHash(full_hash);
741
742 // Now, the badbin_url is not safe since it is added to download database.
743 EXPECT_EQ(SB_THREAT_TYPE_BINARY_MALWARE_HASH, client->GetThreatType());
744 }
745
746 IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, CheckDownloadUrlTimedOut) { 701 IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, CheckDownloadUrlTimedOut) {
747 GURL badbin_url = test_server()->GetURL(kMalwareFile); 702 GURL badbin_url = test_server()->GetURL(kMalwareFile);
748 std::vector<GURL> badbin_urls(1, badbin_url); 703 std::vector<GURL> badbin_urls(1, badbin_url);
749 704
750 scoped_refptr<TestSBClient> client(new TestSBClient); 705 scoped_refptr<TestSBClient> client(new TestSBClient);
751 SBFullHashResult full_hash_result; 706 SBFullHashResult full_hash_result;
752 int chunk_id = 0; 707 int chunk_id = 0;
753 GenUrlFullhashResult(badbin_url, safe_browsing_util::kBinUrlList, 708 GenUrlFullhashResult(badbin_url, safe_browsing_util::kBinUrlList,
754 chunk_id, &full_hash_result); 709 chunk_id, &full_hash_result);
755 SetupResponseForUrl(badbin_url, full_hash_result); 710 SetupResponseForUrl(badbin_url, full_hash_result);
(...skipping 12 matching lines...) Expand all
768 SetCheckTimeout(sb_service, base::TimeDelta::FromMilliseconds(1)); 723 SetCheckTimeout(sb_service, base::TimeDelta::FromMilliseconds(1));
769 client->CheckDownloadUrl(badbin_urls); 724 client->CheckDownloadUrl(badbin_urls);
770 725
771 // There should be a timeout and the hash would be considered as safe. 726 // There should be a timeout and the hash would be considered as safe.
772 EXPECT_EQ(SB_THREAT_TYPE_SAFE, client->GetThreatType()); 727 EXPECT_EQ(SB_THREAT_TYPE_SAFE, client->GetThreatType());
773 728
774 // Need to set the timeout back to the default value. 729 // Need to set the timeout back to the default value.
775 SetCheckTimeout(sb_service, default_urlcheck_timeout); 730 SetCheckTimeout(sb_service, default_urlcheck_timeout);
776 } 731 }
777 732
778 IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, CheckDownloadHashTimedOut) {
779 const std::string full_hash = "12345678902234567890323456789012";
780
781 scoped_refptr<TestSBClient> client(new TestSBClient);
782 SBFullHashResult full_hash_result;
783 int chunk_id = 0;
784 GenDigestFullhashResult(full_hash, safe_browsing_util::kBinHashList,
785 chunk_id, &full_hash_result);
786 SetupResponseForDigest(full_hash, full_hash_result);
787 client->CheckDownloadHash(full_hash);
788
789 // The badbin_url is not safe since it is added to download database.
790 EXPECT_EQ(SB_THREAT_TYPE_BINARY_MALWARE_HASH, client->GetThreatType());
791
792 //
793 // Now introducing delays and we should hit timeout.
794 //
795 SafeBrowsingService* sb_service = g_browser_process->safe_browsing_service();
796 base::TimeDelta default_hashcheck_timeout =
797 GetCheckTimeout(sb_service);
798 IntroduceGetHashDelay(base::TimeDelta::FromSeconds(1));
799 SetCheckTimeout(sb_service, base::TimeDelta::FromMilliseconds(1));
800 client->CheckDownloadHash(full_hash);
801
802 // There should be a timeout and the hash would be considered as safe.
803 EXPECT_EQ(SB_THREAT_TYPE_SAFE, client->GetThreatType());
804
805 // Need to set the timeout back to the default value.
806 SetCheckTimeout(sb_service, default_hashcheck_timeout);
807 }
808
809 IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, StartAndStop) { 733 IN_PROC_BROWSER_TEST_F(SafeBrowsingServiceTest, StartAndStop) {
810 CreateCSDService(); 734 CreateCSDService();
811 SafeBrowsingService* sb_service = g_browser_process->safe_browsing_service(); 735 SafeBrowsingService* sb_service = g_browser_process->safe_browsing_service();
812 safe_browsing::ClientSideDetectionService* csd_service = 736 safe_browsing::ClientSideDetectionService* csd_service =
813 sb_service->safe_browsing_detection_service(); 737 sb_service->safe_browsing_detection_service();
814 PrefService* pref_service = browser()->profile()->GetPrefs(); 738 PrefService* pref_service = browser()->profile()->GetPrefs();
815 739
816 ASSERT_TRUE(sb_service != NULL); 740 ASSERT_TRUE(sb_service != NULL);
817 ASSERT_TRUE(csd_service != NULL); 741 ASSERT_TRUE(csd_service != NULL);
818 ASSERT_TRUE(pref_service != NULL); 742 ASSERT_TRUE(pref_service != NULL);
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
1051 content::WindowedNotificationObserver observer( 975 content::WindowedNotificationObserver observer(
1052 chrome::NOTIFICATION_SAFE_BROWSING_UPDATE_COMPLETE, 976 chrome::NOTIFICATION_SAFE_BROWSING_UPDATE_COMPLETE,
1053 content::Source<SafeBrowsingDatabaseManager>( 977 content::Source<SafeBrowsingDatabaseManager>(
1054 sb_service_->database_manager().get())); 978 sb_service_->database_manager().get()));
1055 BrowserThread::PostTask( 979 BrowserThread::PostTask(
1056 BrowserThread::IO, 980 BrowserThread::IO,
1057 FROM_HERE, 981 FROM_HERE,
1058 base::Bind(&SafeBrowsingDatabaseManagerCookieTest::ForceUpdate, this)); 982 base::Bind(&SafeBrowsingDatabaseManagerCookieTest::ForceUpdate, this));
1059 observer.Wait(); 983 observer.Wait();
1060 } 984 }
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/safe_browsing_database_unittest.cc ('k') | chrome/browser/safe_browsing/safe_browsing_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698