| 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)(
|
|
|