Index: chrome/browser/safe_browsing/database_manager_unittest.cc |
diff --git a/chrome/browser/safe_browsing/database_manager_unittest.cc b/chrome/browser/safe_browsing/database_manager_unittest.cc |
deleted file mode 100644 |
index 92e32bea0995aa4d3ca0cdcd09b7b3fe31cf6234..0000000000000000000000000000000000000000 |
--- a/chrome/browser/safe_browsing/database_manager_unittest.cc |
+++ /dev/null |
@@ -1,231 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include <string> |
-#include <vector> |
- |
-#include "base/memory/ref_counted.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/run_loop.h" |
-#include "chrome/browser/safe_browsing/database_manager.h" |
-#include "chrome/browser/safe_browsing/safe_browsing_service.h" |
-#include "content/public/test/test_browser_thread_bundle.h" |
-#include "content/public/test/test_utils.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "testing/platform_test.h" |
-#include "url/gurl.h" |
- |
-using content::TestBrowserThreadBundle; |
- |
-namespace { |
- |
-class TestClient : public SafeBrowsingDatabaseManager::Client { |
- public: |
- TestClient() {} |
- ~TestClient() override {} |
- |
- void OnCheckBrowseUrlResult(const GURL& url, |
- SBThreatType threat_type, |
- const std::string& metadata) override {} |
- |
- void OnCheckDownloadUrlResult(const std::vector<GURL>& url_chain, |
- SBThreatType threat_type) override {} |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(TestClient); |
-}; |
- |
-} // namespace |
- |
-class SafeBrowsingDatabaseManagerTest : public PlatformTest { |
- public: |
- bool RunSBHashTest(const safe_browsing_util::ListType list_type, |
- const std::vector<SBThreatType>& expected_threats, |
- const std::string& result_list); |
- |
- private: |
- TestBrowserThreadBundle thread_bundle_; |
-}; |
- |
-bool SafeBrowsingDatabaseManagerTest::RunSBHashTest( |
- const safe_browsing_util::ListType list_type, |
- const std::vector<SBThreatType>& expected_threats, |
- const std::string& result_list) { |
- scoped_refptr<SafeBrowsingService> sb_service_( |
- SafeBrowsingService::CreateSafeBrowsingService()); |
- scoped_refptr<SafeBrowsingDatabaseManager> db_manager_( |
- new SafeBrowsingDatabaseManager(sb_service_)); |
- const SBFullHash same_full_hash = {}; |
- |
- SafeBrowsingDatabaseManager::SafeBrowsingCheck* check = |
- new SafeBrowsingDatabaseManager::SafeBrowsingCheck( |
- std::vector<GURL>(), |
- std::vector<SBFullHash>(1, same_full_hash), |
- NULL, |
- list_type, |
- expected_threats); |
- db_manager_->checks_.insert(check); |
- |
- const SBFullHashResult full_hash_result = { |
- same_full_hash, |
- safe_browsing_util::GetListId(result_list) |
- }; |
- |
- std::vector<SBFullHashResult> fake_results(1, full_hash_result); |
- bool result = db_manager_->HandleOneCheck(check, fake_results); |
- db_manager_->checks_.erase(check); |
- delete check; |
- return result; |
-} |
- |
-TEST_F(SafeBrowsingDatabaseManagerTest, CheckCorrespondsListType) { |
- std::vector<SBThreatType> malware_threat(1, |
- SB_THREAT_TYPE_BINARY_MALWARE_URL); |
- EXPECT_FALSE(RunSBHashTest(safe_browsing_util::BINURL, |
- malware_threat, |
- safe_browsing_util::kMalwareList)); |
- EXPECT_TRUE(RunSBHashTest(safe_browsing_util::BINURL, |
- malware_threat, |
- safe_browsing_util::kBinUrlList)); |
- |
- // Check for multiple threats |
- std::vector<SBThreatType> multiple_threats; |
- multiple_threats.push_back(SB_THREAT_TYPE_URL_MALWARE); |
- multiple_threats.push_back(SB_THREAT_TYPE_URL_PHISHING); |
- EXPECT_FALSE(RunSBHashTest(safe_browsing_util::MALWARE, |
- multiple_threats, |
- safe_browsing_util::kBinUrlList)); |
- EXPECT_TRUE(RunSBHashTest(safe_browsing_util::MALWARE, |
- multiple_threats, |
- safe_browsing_util::kMalwareList)); |
-} |
- |
-TEST_F(SafeBrowsingDatabaseManagerTest, GetUrlSeverestThreatType) { |
- std::vector<SBFullHashResult> full_hashes; |
- |
- const GURL kMalwareUrl("http://www.malware.com/page.html"); |
- const GURL kPhishingUrl("http://www.phishing.com/page.html"); |
- const GURL kUnwantedUrl("http://www.unwanted.com/page.html"); |
- const GURL kUnwantedAndMalwareUrl( |
- "http://www.unwantedandmalware.com/page.html"); |
- const GURL kSafeUrl("http://www.safe.com/page.html"); |
- |
- const SBFullHash kMalwareHostHash = SBFullHashForString("malware.com/"); |
- const SBFullHash kPhishingHostHash = SBFullHashForString("phishing.com/"); |
- const SBFullHash kUnwantedHostHash = SBFullHashForString("unwanted.com/"); |
- const SBFullHash kUnwantedAndMalwareHostHash = |
- SBFullHashForString("unwantedandmalware.com/"); |
- const SBFullHash kSafeHostHash = SBFullHashForString("www.safe.com/"); |
- |
- { |
- SBFullHashResult full_hash; |
- full_hash.hash = kMalwareHostHash; |
- full_hash.list_id = static_cast<int>(safe_browsing_util::MALWARE); |
- full_hashes.push_back(full_hash); |
- } |
- |
- { |
- SBFullHashResult full_hash; |
- full_hash.hash = kPhishingHostHash; |
- full_hash.list_id = static_cast<int>(safe_browsing_util::PHISH); |
- full_hashes.push_back(full_hash); |
- } |
- |
- { |
- SBFullHashResult full_hash; |
- full_hash.hash = kUnwantedHostHash; |
- full_hash.list_id = static_cast<int>(safe_browsing_util::UNWANTEDURL); |
- full_hashes.push_back(full_hash); |
- } |
- |
- { |
- // Add both MALWARE and UNWANTEDURL list IDs for |
- // kUnwantedAndMalwareHostHash. |
- SBFullHashResult full_hash_malware; |
- full_hash_malware.hash = kUnwantedAndMalwareHostHash; |
- full_hash_malware.list_id = static_cast<int>(safe_browsing_util::MALWARE); |
- full_hashes.push_back(full_hash_malware); |
- |
- SBFullHashResult full_hash_unwanted; |
- full_hash_unwanted.hash = kUnwantedAndMalwareHostHash; |
- full_hash_unwanted.list_id = |
- static_cast<int>(safe_browsing_util::UNWANTEDURL); |
- full_hashes.push_back(full_hash_unwanted); |
- } |
- |
- EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, |
- SafeBrowsingDatabaseManager::GetHashSeverestThreatType( |
- kMalwareHostHash, full_hashes)); |
- |
- EXPECT_EQ(SB_THREAT_TYPE_URL_PHISHING, |
- SafeBrowsingDatabaseManager::GetHashSeverestThreatType( |
- kPhishingHostHash, full_hashes)); |
- |
- EXPECT_EQ(SB_THREAT_TYPE_URL_UNWANTED, |
- SafeBrowsingDatabaseManager::GetHashSeverestThreatType( |
- kUnwantedHostHash, full_hashes)); |
- |
- EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, |
- SafeBrowsingDatabaseManager::GetHashSeverestThreatType( |
- kUnwantedAndMalwareHostHash, full_hashes)); |
- |
- EXPECT_EQ(SB_THREAT_TYPE_SAFE, |
- SafeBrowsingDatabaseManager::GetHashSeverestThreatType( |
- kSafeHostHash, full_hashes)); |
- |
- const size_t kArbitraryValue = 123456U; |
- size_t index = kArbitraryValue; |
- EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, |
- SafeBrowsingDatabaseManager::GetUrlSeverestThreatType( |
- kMalwareUrl, full_hashes, &index)); |
- EXPECT_EQ(0U, index); |
- |
- EXPECT_EQ(SB_THREAT_TYPE_URL_PHISHING, |
- SafeBrowsingDatabaseManager::GetUrlSeverestThreatType( |
- kPhishingUrl, full_hashes, &index)); |
- EXPECT_EQ(1U, index); |
- |
- EXPECT_EQ(SB_THREAT_TYPE_URL_UNWANTED, |
- SafeBrowsingDatabaseManager::GetUrlSeverestThreatType( |
- kUnwantedUrl, full_hashes, &index)); |
- EXPECT_EQ(2U, index); |
- |
- EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, |
- SafeBrowsingDatabaseManager::GetUrlSeverestThreatType( |
- kUnwantedAndMalwareUrl, full_hashes, &index)); |
- EXPECT_EQ(3U, index); |
- |
- index = kArbitraryValue; |
- EXPECT_EQ(SB_THREAT_TYPE_SAFE, |
- SafeBrowsingDatabaseManager::GetUrlSeverestThreatType( |
- kSafeUrl, full_hashes, &index)); |
- EXPECT_EQ(kArbitraryValue, index); |
-} |
- |
-TEST_F(SafeBrowsingDatabaseManagerTest, ServiceStopWithPendingChecks) { |
- scoped_refptr<SafeBrowsingService> sb_service( |
- SafeBrowsingService::CreateSafeBrowsingService()); |
- scoped_refptr<SafeBrowsingDatabaseManager> db_manager( |
- new SafeBrowsingDatabaseManager(sb_service)); |
- TestClient client; |
- |
- // Start the service and flush tasks to ensure database is made available. |
- db_manager->StartOnIOThread(); |
- content::RunAllBlockingPoolTasksUntilIdle(); |
- base::RunLoop().RunUntilIdle(); |
- EXPECT_TRUE(db_manager->DatabaseAvailable()); |
- |
- // Start an extension check operation, which is done asynchronously. |
- std::set<std::string> extension_ids; |
- extension_ids.insert("testtesttesttesttesttesttesttest"); |
- db_manager->CheckExtensionIDs(extension_ids, &client); |
- |
- // Stop the service without first flushing above tasks. |
- db_manager->StopOnIOThread(false); |
- |
- // Now run posted tasks, whish should include the extension check which has |
- // been posted to the safe browsing task runner. This should not crash. |
- content::RunAllBlockingPoolTasksUntilIdle(); |
- base::RunLoop().RunUntilIdle(); |
-} |