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

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

Issue 1073633002: Remove PrerenderLocalPredictor, part 2. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@prerender-local-predictor-1
Patch Set: rebase Created 5 years, 8 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 // Unit tests for the SafeBrowsing storage system. 5 // Unit tests for the SafeBrowsing storage system.
6 6
7 #include "chrome/browser/safe_browsing/safe_browsing_database.h" 7 #include "chrome/browser/safe_browsing/safe_browsing_database.h"
8 8
9 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
10 #include "base/files/scoped_temp_dir.h" 10 #include "base/files/scoped_temp_dir.h"
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 SafeBrowsingStoreFile* download_store = 279 SafeBrowsingStoreFile* download_store =
280 new SafeBrowsingStoreFile(task_runner_); 280 new SafeBrowsingStoreFile(task_runner_);
281 SafeBrowsingStoreFile* csd_whitelist_store = 281 SafeBrowsingStoreFile* csd_whitelist_store =
282 new SafeBrowsingStoreFile(task_runner_); 282 new SafeBrowsingStoreFile(task_runner_);
283 SafeBrowsingStoreFile* download_whitelist_store = 283 SafeBrowsingStoreFile* download_whitelist_store =
284 new SafeBrowsingStoreFile(task_runner_); 284 new SafeBrowsingStoreFile(task_runner_);
285 SafeBrowsingStoreFile* inclusion_whitelist_store = 285 SafeBrowsingStoreFile* inclusion_whitelist_store =
286 new SafeBrowsingStoreFile(task_runner_); 286 new SafeBrowsingStoreFile(task_runner_);
287 SafeBrowsingStoreFile* extension_blacklist_store = 287 SafeBrowsingStoreFile* extension_blacklist_store =
288 new SafeBrowsingStoreFile(task_runner_); 288 new SafeBrowsingStoreFile(task_runner_);
289 SafeBrowsingStoreFile* side_effect_free_whitelist_store =
290 new SafeBrowsingStoreFile(task_runner_);
291 SafeBrowsingStoreFile* ip_blacklist_store = 289 SafeBrowsingStoreFile* ip_blacklist_store =
292 new SafeBrowsingStoreFile(task_runner_); 290 new SafeBrowsingStoreFile(task_runner_);
293 SafeBrowsingStoreFile* unwanted_software_store = 291 SafeBrowsingStoreFile* unwanted_software_store =
294 new SafeBrowsingStoreFile(task_runner_); 292 new SafeBrowsingStoreFile(task_runner_);
295 database_.reset(new SafeBrowsingDatabaseNew( 293 database_.reset(new SafeBrowsingDatabaseNew(
296 task_runner_, browse_store, download_store, csd_whitelist_store, 294 task_runner_, browse_store, download_store, csd_whitelist_store,
297 download_whitelist_store, inclusion_whitelist_store, 295 download_whitelist_store, inclusion_whitelist_store,
298 extension_blacklist_store, side_effect_free_whitelist_store, 296 extension_blacklist_store, ip_blacklist_store,
299 ip_blacklist_store, unwanted_software_store)); 297 unwanted_software_store));
300 database_->Init(database_filename_); 298 database_->Init(database_filename_);
301 } 299 }
302 300
303 bool ContainsDownloadUrl(const std::vector<GURL>& urls, 301 bool ContainsDownloadUrl(const std::vector<GURL>& urls,
304 std::vector<SBPrefix>* prefix_hits) { 302 std::vector<SBPrefix>* prefix_hits) {
305 std::vector<SBPrefix> prefixes; 303 std::vector<SBPrefix> prefixes;
306 SafeBrowsingDatabase::GetDownloadUrlPrefixes(urls, &prefixes); 304 SafeBrowsingDatabase::GetDownloadUrlPrefixes(urls, &prefixes);
307 return database_->ContainsDownloadUrlPrefixes(prefixes, prefix_hits); 305 return database_->ContainsDownloadUrlPrefixes(prefixes, prefix_hits);
308 } 306 }
309 307
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 chunks.get()); 436 chunks.get());
439 437
440 chunks.clear(); 438 chunks.clear();
441 chunks.push_back(AddChunkFullHashValue(8, 439 chunks.push_back(AddChunkFullHashValue(8,
442 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" 440 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
443 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")); 441 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
444 database_->InsertChunks(safe_browsing_util::kExtensionBlacklist, 442 database_->InsertChunks(safe_browsing_util::kExtensionBlacklist,
445 chunks.get()); 443 chunks.get());
446 444
447 chunks.clear(); 445 chunks.clear();
448 chunks.push_back(AddChunkFullHashValue(9, "www.sideeffectfree.com"));
449 database_->InsertChunks(safe_browsing_util::kSideEffectFreeWhitelist,
450 chunks.get());
451
452 chunks.clear();
453 chunks.push_back(AddChunkHashedIpValue(10, "::ffff:192.168.1.0", 120)); 446 chunks.push_back(AddChunkHashedIpValue(10, "::ffff:192.168.1.0", 120));
454 database_->InsertChunks(safe_browsing_util::kIPBlacklist, chunks.get()); 447 database_->InsertChunks(safe_browsing_util::kIPBlacklist, chunks.get());
455 448
456 chunks.clear(); 449 chunks.clear();
457 chunks.push_back(AddChunkPrefixValue(11, "www.unwanted.com/software.html")); 450 chunks.push_back(AddChunkPrefixValue(11, "www.unwanted.com/software.html"));
458 database_->InsertChunks(safe_browsing_util::kUnwantedUrlList, chunks.get()); 451 database_->InsertChunks(safe_browsing_util::kUnwantedUrlList, chunks.get());
459 452
460 database_->UpdateFinished(true); 453 database_->UpdateFinished(true);
461 454
462 GetListsInfo(&lists); 455 GetListsInfo(&lists);
463 ASSERT_EQ(10U, lists.size()); 456 ASSERT_EQ(9U, lists.size());
464 EXPECT_EQ(safe_browsing_util::kMalwareList, lists[0].name); 457 EXPECT_EQ(safe_browsing_util::kMalwareList, lists[0].name);
465 EXPECT_EQ("1", lists[0].adds); 458 EXPECT_EQ("1", lists[0].adds);
466 EXPECT_TRUE(lists[0].subs.empty()); 459 EXPECT_TRUE(lists[0].subs.empty());
467 EXPECT_EQ(safe_browsing_util::kPhishingList, lists[1].name); 460 EXPECT_EQ(safe_browsing_util::kPhishingList, lists[1].name);
468 EXPECT_EQ("2", lists[1].adds); 461 EXPECT_EQ("2", lists[1].adds);
469 EXPECT_TRUE(lists[1].subs.empty()); 462 EXPECT_TRUE(lists[1].subs.empty());
470 EXPECT_EQ(safe_browsing_util::kBinUrlList, lists[2].name); 463 EXPECT_EQ(safe_browsing_util::kBinUrlList, lists[2].name);
471 EXPECT_EQ("3", lists[2].adds); 464 EXPECT_EQ("3", lists[2].adds);
472 EXPECT_TRUE(lists[2].subs.empty()); 465 EXPECT_TRUE(lists[2].subs.empty());
473 EXPECT_EQ(safe_browsing_util::kCsdWhiteList, lists[3].name); 466 EXPECT_EQ(safe_browsing_util::kCsdWhiteList, lists[3].name);
474 EXPECT_EQ("5", lists[3].adds); 467 EXPECT_EQ("5", lists[3].adds);
475 EXPECT_TRUE(lists[3].subs.empty()); 468 EXPECT_TRUE(lists[3].subs.empty());
476 EXPECT_EQ(safe_browsing_util::kDownloadWhiteList, lists[4].name); 469 EXPECT_EQ(safe_browsing_util::kDownloadWhiteList, lists[4].name);
477 EXPECT_EQ("6", lists[4].adds); 470 EXPECT_EQ("6", lists[4].adds);
478 EXPECT_TRUE(lists[4].subs.empty()); 471 EXPECT_TRUE(lists[4].subs.empty());
479 EXPECT_EQ(safe_browsing_util::kInclusionWhitelist, lists[5].name); 472 EXPECT_EQ(safe_browsing_util::kInclusionWhitelist, lists[5].name);
480 EXPECT_EQ("7", lists[5].adds); 473 EXPECT_EQ("7", lists[5].adds);
481 EXPECT_TRUE(lists[5].subs.empty()); 474 EXPECT_TRUE(lists[5].subs.empty());
482 EXPECT_EQ(safe_browsing_util::kExtensionBlacklist, lists[6].name); 475 EXPECT_EQ(safe_browsing_util::kExtensionBlacklist, lists[6].name);
483 EXPECT_EQ("8", lists[6].adds); 476 EXPECT_EQ("8", lists[6].adds);
484 EXPECT_TRUE(lists[6].subs.empty()); 477 EXPECT_TRUE(lists[6].subs.empty());
485 EXPECT_EQ(safe_browsing_util::kSideEffectFreeWhitelist, lists[7].name); 478 EXPECT_EQ(safe_browsing_util::kIPBlacklist, lists[7].name);
486 EXPECT_EQ("9", lists[7].adds); 479 EXPECT_EQ("10", lists[7].adds);
487 EXPECT_TRUE(lists[7].subs.empty()); 480 EXPECT_TRUE(lists[7].subs.empty());
488 EXPECT_EQ(safe_browsing_util::kIPBlacklist, lists[8].name); 481 EXPECT_EQ(safe_browsing_util::kUnwantedUrlList, lists[8].name);
489 EXPECT_EQ("10", lists[8].adds); 482 EXPECT_EQ("11", lists[8].adds);
490 EXPECT_TRUE(lists[8].subs.empty()); 483 EXPECT_TRUE(lists[8].subs.empty());
491 EXPECT_EQ(safe_browsing_util::kUnwantedUrlList, lists[9].name);
492 EXPECT_EQ("11", lists[9].adds);
493 EXPECT_TRUE(lists[9].subs.empty());
494 484
495 database_.reset(); 485 database_.reset();
496 } 486 }
497 487
498 // Checks database reading and writing for browse and unwanted PrefixSets. 488 // Checks database reading and writing for browse and unwanted PrefixSets.
499 TEST_F(SafeBrowsingDatabaseTest, BrowseAndUnwantedDatabasesAndPrefixSets) { 489 TEST_F(SafeBrowsingDatabaseTest, BrowseAndUnwantedDatabasesAndPrefixSets) {
500 struct TestCase { 490 struct TestCase {
501 using TestListContainsBadUrl = bool (SafeBrowsingDatabase::*)( 491 using TestListContainsBadUrl = bool (SafeBrowsingDatabase::*)(
502 const GURL& url, 492 const GURL& url,
503 std::vector<SBPrefix>* prefix_hits, 493 std::vector<SBPrefix>* prefix_hits,
504 std::vector<SBFullHashResult>* cache_hits); 494 std::vector<SBFullHashResult>* cache_hits);
505 495
506 const char* test_list_name; 496 const char* test_list_name;
507 size_t expected_list_index; 497 size_t expected_list_index;
508 TestListContainsBadUrl test_list_contains_bad_url; 498 TestListContainsBadUrl test_list_contains_bad_url;
509 } const kTestCases[] { 499 } const kTestCases[] {
510 { safe_browsing_util::kMalwareList, 0U, 500 { safe_browsing_util::kMalwareList, 0U,
511 &SafeBrowsingDatabase::ContainsBrowseUrl }, 501 &SafeBrowsingDatabase::ContainsBrowseUrl },
512 { safe_browsing_util::kPhishingList, 1U, 502 { safe_browsing_util::kPhishingList, 1U,
513 &SafeBrowsingDatabase::ContainsBrowseUrl }, 503 &SafeBrowsingDatabase::ContainsBrowseUrl },
514 { safe_browsing_util::kUnwantedUrlList, 9U, 504 { safe_browsing_util::kUnwantedUrlList, 8U,
515 &SafeBrowsingDatabase::ContainsUnwantedSoftwareUrl }, 505 &SafeBrowsingDatabase::ContainsUnwantedSoftwareUrl },
516 }; 506 };
517 507
518 for (const auto& test_case : kTestCases) { 508 for (const auto& test_case : kTestCases) {
519 SCOPED_TRACE(std::string("Tested list at fault => ") + 509 SCOPED_TRACE(std::string("Tested list at fault => ") +
520 test_case.test_list_name); 510 test_case.test_list_name);
521 511
522 std::vector<SBListChunkRanges> lists; 512 std::vector<SBListChunkRanges> lists;
523 ScopedVector<SBChunkData> chunks; 513 ScopedVector<SBChunkData> chunks;
524 514
(...skipping 593 matching lines...) Expand 10 before | Expand all | Expand 10 after
1118 // TODO(shess): Disabled until ScopedLogMessageIgnorer resolved. 1108 // TODO(shess): Disabled until ScopedLogMessageIgnorer resolved.
1119 // http://crbug.com/56448 1109 // http://crbug.com/56448
1120 TEST_F(SafeBrowsingDatabaseTest, DISABLED_FileCorruptionHandling) { 1110 TEST_F(SafeBrowsingDatabaseTest, DISABLED_FileCorruptionHandling) {
1121 // Re-create the database in a captive message loop so that we can 1111 // Re-create the database in a captive message loop so that we can
1122 // influence task-posting. Database specifically needs to the 1112 // influence task-posting. Database specifically needs to the
1123 // file-backed. 1113 // file-backed.
1124 database_.reset(); 1114 database_.reset();
1125 base::MessageLoop loop; 1115 base::MessageLoop loop;
1126 SafeBrowsingStoreFile* store = new SafeBrowsingStoreFile(task_runner_); 1116 SafeBrowsingStoreFile* store = new SafeBrowsingStoreFile(task_runner_);
1127 database_.reset(new SafeBrowsingDatabaseNew( 1117 database_.reset(new SafeBrowsingDatabaseNew(
1128 task_runner_, store, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)); 1118 task_runner_, store, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
1129 database_->Init(database_filename_); 1119 database_->Init(database_filename_);
1130 1120
1131 // This will cause an empty database to be created. 1121 // This will cause an empty database to be created.
1132 std::vector<SBListChunkRanges> lists; 1122 std::vector<SBListChunkRanges> lists;
1133 ASSERT_TRUE(database_->UpdateStarted(&lists)); 1123 ASSERT_TRUE(database_->UpdateStarted(&lists));
1134 database_->UpdateFinished(true); 1124 database_->UpdateFinished(true);
1135 1125
1136 // Create a sub chunk to insert. 1126 // Create a sub chunk to insert.
1137 ScopedVector<SBChunkData> chunks; 1127 ScopedVector<SBChunkData> chunks;
1138 chunks.push_back(SubChunkPrefixValue(7, 1128 chunks.push_back(SubChunkPrefixValue(7,
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
1293 &SafeBrowsingDatabase::ContainsDownloadWhitelistedUrl, 1283 &SafeBrowsingDatabase::ContainsDownloadWhitelistedUrl,
1294 &SafeBrowsingDatabase::ContainsDownloadWhitelistedString}, 1284 &SafeBrowsingDatabase::ContainsDownloadWhitelistedString},
1295 {safe_browsing_util::kInclusionWhitelist, 1285 {safe_browsing_util::kInclusionWhitelist,
1296 &SafeBrowsingDatabase::ContainsInclusionWhitelistedUrl, 1286 &SafeBrowsingDatabase::ContainsInclusionWhitelistedUrl,
1297 nullptr}, 1287 nullptr},
1298 }; 1288 };
1299 1289
1300 // If the whitelist is disabled everything should match the whitelist. 1290 // If the whitelist is disabled everything should match the whitelist.
1301 database_.reset(new SafeBrowsingDatabaseNew( 1291 database_.reset(new SafeBrowsingDatabaseNew(
1302 task_runner_, new SafeBrowsingStoreFile(task_runner_), NULL, NULL, NULL, 1292 task_runner_, new SafeBrowsingStoreFile(task_runner_), NULL, NULL, NULL,
1303 NULL, NULL, NULL, NULL, NULL)); 1293 NULL, NULL, NULL, NULL));
1304 database_->Init(database_filename_); 1294 database_->Init(database_filename_);
1305 for (const auto& test_case : kTestCases) { 1295 for (const auto& test_case : kTestCases) {
1306 SCOPED_TRACE(std::string("Tested list at fault => ") + 1296 SCOPED_TRACE(std::string("Tested list at fault => ") +
1307 test_case.test_list_name); 1297 test_case.test_list_name);
1308 1298
1309 EXPECT_TRUE( 1299 EXPECT_TRUE(
1310 (database_.get()->*test_case.test_list_contains_whitelisted_url)( 1300 (database_.get()->*test_case.test_list_contains_whitelisted_url)(
1311 GURL(std::string("http://www.phishing.com/")))); 1301 GURL(std::string("http://www.phishing.com/"))));
1312 if (test_case.TestStrings()) { 1302 if (test_case.TestStrings()) {
1313 EXPECT_TRUE( 1303 EXPECT_TRUE(
(...skipping 927 matching lines...) Expand 10 before | Expand all | Expand 10 after
2241 GURL(std::string("http://") + kExampleCollision), 2231 GURL(std::string("http://") + kExampleCollision),
2242 &prefix_hits, &cache_hits)); 2232 &prefix_hits, &cache_hits));
2243 ASSERT_EQ(1U, prefix_hits.size()); 2233 ASSERT_EQ(1U, prefix_hits.size());
2244 EXPECT_EQ(SBPrefixForString(kExampleCollision), prefix_hits[0]); 2234 EXPECT_EQ(SBPrefixForString(kExampleCollision), prefix_hits[0]);
2245 EXPECT_TRUE(cache_hits.empty()); 2235 EXPECT_TRUE(cache_hits.empty());
2246 2236
2247 // This prefix collides, but no full hash match. 2237 // This prefix collides, but no full hash match.
2248 EXPECT_FALSE(database_->ContainsBrowseUrl( 2238 EXPECT_FALSE(database_->ContainsBrowseUrl(
2249 GURL(std::string("http://") + kExampleFine), &prefix_hits, &cache_hits)); 2239 GURL(std::string("http://") + kExampleFine), &prefix_hits, &cache_hits));
2250 } 2240 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698