Index: chrome/browser/safe_browsing/safe_browsing_database_unittest.cc |
diff --git a/chrome/browser/safe_browsing/safe_browsing_database_unittest.cc b/chrome/browser/safe_browsing/safe_browsing_database_unittest.cc |
index f3b094b0b56fa3de1914afeffac0234baff60a85..b405ad10b6ba75c92890e1ad13d798c60f261b44 100644 |
--- a/chrome/browser/safe_browsing/safe_browsing_database_unittest.cc |
+++ b/chrome/browser/safe_browsing/safe_browsing_database_unittest.cc |
@@ -280,11 +280,13 @@ class SafeBrowsingDatabaseTest : public PlatformTest { |
new SafeBrowsingStoreFile(task_runner_); |
SafeBrowsingStoreFile* unwanted_software_store = |
new SafeBrowsingStoreFile(task_runner_); |
+ SafeBrowsingStoreFile* module_whitelist_store = |
+ new SafeBrowsingStoreFile(task_runner_); |
database_.reset(new SafeBrowsingDatabaseNew( |
task_runner_, browse_store, download_store, csd_whitelist_store, |
download_whitelist_store, inclusion_whitelist_store, |
- extension_blacklist_store, ip_blacklist_store, |
- unwanted_software_store)); |
+ extension_blacklist_store, ip_blacklist_store, unwanted_software_store, |
+ module_whitelist_store)); |
database_->Init(database_filename_); |
} |
@@ -440,10 +442,14 @@ TEST_F(SafeBrowsingDatabaseTest, ListNames) { |
chunks.push_back(AddChunkPrefixValue(11, "www.unwanted.com/software.html")); |
database_->InsertChunks(kUnwantedUrlList, chunks); |
+ chunks.clear(); |
+ chunks.push_back(AddChunkPrefixValue(12, "chrome.dll")); |
+ database_->InsertChunks(kModuleWhitelist, chunks); |
+ |
database_->UpdateFinished(true); |
GetListsInfo(&lists); |
- ASSERT_EQ(9U, lists.size()); |
+ ASSERT_EQ(10U, lists.size()); |
EXPECT_EQ(kMalwareList, lists[0].name); |
EXPECT_EQ("1", lists[0].adds); |
EXPECT_TRUE(lists[0].subs.empty()); |
@@ -471,6 +477,9 @@ TEST_F(SafeBrowsingDatabaseTest, ListNames) { |
EXPECT_EQ(kUnwantedUrlList, lists[8].name); |
EXPECT_EQ("11", lists[8].adds); |
EXPECT_TRUE(lists[8].subs.empty()); |
+ EXPECT_EQ(kModuleWhitelist, lists[9].name); |
+ EXPECT_EQ("12", lists[9].adds); |
+ EXPECT_TRUE(lists[9].subs.empty()); |
database_.reset(); |
} |
@@ -1153,7 +1162,7 @@ TEST_F(SafeBrowsingDatabaseTest, DISABLED_FileCorruptionHandling) { |
base::MessageLoop loop; |
SafeBrowsingStoreFile* store = new SafeBrowsingStoreFile(task_runner_); |
database_.reset(new SafeBrowsingDatabaseNew( |
- task_runner_, store, NULL, NULL, NULL, NULL, NULL, NULL, NULL)); |
+ task_runner_, store, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)); |
database_->Init(database_filename_); |
// This will cause an empty database to be created. |
@@ -1302,6 +1311,12 @@ TEST_F(SafeBrowsingDatabaseTest, Whitelists) { |
using TestListContainsWhitelistedString = |
bool (SafeBrowsingDatabase::*)(const std::string& str); |
+ // Returns true if urls should be tested in this test case (i.e. |
+ // |test_list_contains_whitelisted_url| is not null). |
+ bool TestUrls() const { |
+ return test_list_contains_whitelisted_url != nullptr; |
+ } |
+ |
// Returns true if strings should be tested in this test case (i.e. |
// |test_list_contains_whitelisted_string| is not null). |
bool TestStrings() const { |
@@ -1314,29 +1329,31 @@ TEST_F(SafeBrowsingDatabaseTest, Whitelists) { |
// for strings. |
TestListContainsWhitelistedString test_list_contains_whitelisted_string; |
} const kTestCases[]{ |
- {kCsdWhiteList, |
- &SafeBrowsingDatabase::ContainsCsdWhitelistedUrl, |
+ {kCsdWhiteList, &SafeBrowsingDatabase::ContainsCsdWhitelistedUrl, |
nullptr}, |
{kDownloadWhiteList, |
&SafeBrowsingDatabase::ContainsDownloadWhitelistedUrl, |
&SafeBrowsingDatabase::ContainsDownloadWhitelistedString}, |
{kInclusionWhitelist, |
- &SafeBrowsingDatabase::ContainsInclusionWhitelistedUrl, |
- nullptr}, |
+ &SafeBrowsingDatabase::ContainsInclusionWhitelistedUrl, nullptr}, |
+ {kModuleWhitelist, nullptr, |
+ &SafeBrowsingDatabase::ContainsModuleWhitelistedString}, |
}; |
// If the whitelist is disabled everything should match the whitelist. |
database_.reset(new SafeBrowsingDatabaseNew( |
task_runner_, new SafeBrowsingStoreFile(task_runner_), NULL, NULL, NULL, |
- NULL, NULL, NULL, NULL)); |
+ NULL, NULL, NULL, NULL, NULL)); |
database_->Init(database_filename_); |
for (const auto& test_case : kTestCases) { |
SCOPED_TRACE(std::string("Tested list at fault => ") + |
test_case.test_list_name); |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://www.phishing.com/")))); |
+ if (test_case.TestUrls()) { |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://www.phishing.com/")))); |
+ } |
if (test_case.TestStrings()) { |
EXPECT_TRUE( |
(database_.get()->*test_case.test_list_contains_whitelisted_string)( |
@@ -1363,83 +1380,100 @@ TEST_F(SafeBrowsingDatabaseTest, Whitelists) { |
const char kGoodString[] = "good_string"; |
// Nothing should be whitelisted before the database receives the chunks. |
- EXPECT_FALSE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://") + kGood1Host))); |
- EXPECT_FALSE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://") + kGood1Url1))); |
- EXPECT_FALSE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://") + kGood1Url2))); |
- EXPECT_FALSE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://") + kGood2Url1))); |
- EXPECT_FALSE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://") + kGood3Url1))); |
- if (test_case.TestStrings()) { |
+ if (test_case.TestUrls()) { |
EXPECT_FALSE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
- kGoodString)); |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://") + kGood1Host))); |
+ EXPECT_FALSE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://") + kGood1Url1))); |
+ EXPECT_FALSE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://") + kGood1Url2))); |
+ EXPECT_FALSE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://") + kGood2Url1))); |
+ EXPECT_FALSE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://") + kGood3Url1))); |
+ } |
+ if (test_case.TestStrings()) { |
+ if (test_case.test_list_name == kModuleWhitelist) { |
+ // For the module whitelist, everything should be whitelisted before |
+ // the database receives the chunks. |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
+ kGoodString)); |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
+ "asdf")); |
+ } else { |
+ EXPECT_FALSE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_string)( |
+ kGoodString)); |
+ } |
} |
std::vector<scoped_ptr<SBChunkData>> chunks; |
// Add a few test chunks to the whitelist under test. |
- chunks.push_back(AddChunkFullHash2Value(1, kGood1Url1, kGood1Url2)); |
- chunks.push_back(AddChunkFullHashValue(2, kGood2Url1)); |
+ if (test_case.TestUrls()) { |
+ chunks.push_back(AddChunkFullHash2Value(1, kGood1Url1, kGood1Url2)); |
+ chunks.push_back(AddChunkFullHashValue(2, kGood2Url1)); |
+ chunks.push_back(AddChunkFullHashValue(4, kGood3Url1)); |
+ } |
if (test_case.TestStrings()) |
chunks.push_back(AddChunkFullHashValue(3, kGoodString)); |
- chunks.push_back(AddChunkFullHashValue(4, kGood3Url1)); |
std::vector<SBListChunkRanges> lists; |
ASSERT_TRUE(database_->UpdateStarted(&lists)); |
database_->InsertChunks(test_case.test_list_name, chunks); |
database_->UpdateFinished(true); |
- EXPECT_FALSE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://") + kGood1Host))); |
- |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://") + kGood1Url1))); |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://") + kGood1Url1 + "?a=b"))); |
- |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://") + kGood1Url2))); |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://") + kGood1Url2 + "/c.html"))); |
- |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
- |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://") + kGood2Url1 + "/c"))); |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://") + kGood2Url1 + "/c?bla"))); |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://") + kGood2Url1 + "/c/bla"))); |
- |
- EXPECT_FALSE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://www.google.com/")))); |
- |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://") + kGood3Url1 + "a/b/c/d/e/f/g/"))); |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://a.b.") + kGood3Url1))); |
+ if (test_case.TestUrls()) { |
+ EXPECT_FALSE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://") + kGood1Host))); |
+ |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://") + kGood1Url1))); |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://") + kGood1Url1 + "?a=b"))); |
+ |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://") + kGood1Url2))); |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://") + kGood1Url2 + "/c.html"))); |
+ |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
+ |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://") + kGood2Url1 + "/c"))); |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://") + kGood2Url1 + "/c?bla"))); |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://") + kGood2Url1 + "/c/bla"))); |
+ |
+ EXPECT_FALSE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://www.google.com/")))); |
+ |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://") + kGood3Url1 + "a/b/c/d/e/f/g/"))); |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://a.b.") + kGood3Url1))); |
+ } |
if (test_case.TestStrings()) { |
EXPECT_FALSE( |
@@ -1450,10 +1484,6 @@ TEST_F(SafeBrowsingDatabaseTest, Whitelists) { |
kGoodString)); |
} |
- EXPECT_FALSE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://www.google.com/")))); |
- |
// The malware kill switch is for the CSD whitelist only. |
if (test_case.test_list_name == kCsdWhiteList) { |
// The CSD whitelist killswitch is not present. |
@@ -1490,15 +1520,17 @@ TEST_F(SafeBrowsingDatabaseTest, Whitelists) { |
EXPECT_TRUE(database_->IsMalwareIPMatchKillSwitchOn()); |
} |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://www.google.com/")))); |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://www.phishing_url.com/")))); |
+ if (test_case.TestUrls()) { |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://www.google.com/")))); |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://www.phishing_url.com/")))); |
+ } |
if (test_case.TestStrings()) { |
EXPECT_TRUE( |
@@ -1527,21 +1559,23 @@ TEST_F(SafeBrowsingDatabaseTest, Whitelists) { |
EXPECT_FALSE(database_->IsMalwareIPMatchKillSwitchOn()); |
EXPECT_FALSE(database_->IsCsdWhitelistKillSwitchOn()); |
} |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("https://") + kGood2Url1 + "/c/bla"))); |
- EXPECT_TRUE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("https://") + kGood3Url1))); |
- EXPECT_FALSE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://www.google.com/")))); |
- EXPECT_FALSE( |
- (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
- GURL(std::string("http://www.phishing_url.com/")))); |
+ if (test_case.TestUrls()) { |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("https://") + kGood1Url2 + "/c.html"))); |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("https://") + kGood2Url1 + "/c/bla"))); |
+ EXPECT_TRUE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("https://") + kGood3Url1))); |
+ EXPECT_FALSE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://www.google.com/")))); |
+ EXPECT_FALSE( |
+ (database_.get()->*test_case.test_list_contains_whitelisted_url)( |
+ GURL(std::string("http://www.phishing_url.com/")))); |
+ } |
if (test_case.TestStrings()) { |
EXPECT_TRUE( |
(database_.get()->*test_case.test_list_contains_whitelisted_string)( |