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

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

Issue 1673733002: Support new Safe Browsing list "goog-badresource-shavar" in SafeBrowsingDatabase. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Post-merge test fix Created 4 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
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 #include "chrome/browser/safe_browsing/safe_browsing_database.h" 5 #include "chrome/browser/safe_browsing/safe_browsing_database.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <algorithm> 9 #include <algorithm>
10 #include <iterator> 10 #include <iterator>
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 const base::FilePath::CharType kSideEffectFreeWhitelistDBFile[] = 65 const base::FilePath::CharType kSideEffectFreeWhitelistDBFile[] =
66 FILE_PATH_LITERAL(" Side-Effect Free Whitelist"); 66 FILE_PATH_LITERAL(" Side-Effect Free Whitelist");
67 // Filename suffix for the csd malware IP blacklist store. 67 // Filename suffix for the csd malware IP blacklist store.
68 const base::FilePath::CharType kIPBlacklistDBFile[] = 68 const base::FilePath::CharType kIPBlacklistDBFile[] =
69 FILE_PATH_LITERAL(" IP Blacklist"); 69 FILE_PATH_LITERAL(" IP Blacklist");
70 // Filename suffix for the unwanted software blacklist store. 70 // Filename suffix for the unwanted software blacklist store.
71 const base::FilePath::CharType kUnwantedSoftwareDBFile[] = 71 const base::FilePath::CharType kUnwantedSoftwareDBFile[] =
72 FILE_PATH_LITERAL(" UwS List"); 72 FILE_PATH_LITERAL(" UwS List");
73 const base::FilePath::CharType kModuleWhitelistDBFile[] = 73 const base::FilePath::CharType kModuleWhitelistDBFile[] =
74 FILE_PATH_LITERAL(" Module Whitelist"); 74 FILE_PATH_LITERAL(" Module Whitelist");
75 // Filename suffix for the resource blacklist store.
76 const base::FilePath::CharType kResourceBlacklistDBFile[] =
77 FILE_PATH_LITERAL(" Resource Blacklist");
75 78
76 // Filename suffix for browse store. 79 // Filename suffix for browse store.
77 // TODO(shess): "Safe Browsing Bloom Prefix Set" is full of win. 80 // TODO(shess): "Safe Browsing Bloom Prefix Set" is full of win.
78 // Unfortunately, to change the name implies lots of transition code 81 // Unfortunately, to change the name implies lots of transition code
79 // for little benefit. If/when file formats change (say to put all 82 // for little benefit. If/when file formats change (say to put all
80 // the data in one file), that would be a convenient point to rectify 83 // the data in one file), that would be a convenient point to rectify
81 // this. 84 // this.
82 const base::FilePath::CharType kBrowseDBFile[] = FILE_PATH_LITERAL(" Bloom"); 85 const base::FilePath::CharType kBrowseDBFile[] = FILE_PATH_LITERAL(" Bloom");
83 86
84 // Maximum number of entries we allow in any of the whitelists, excluding the 87 // Maximum number of entries we allow in any of the whitelists, excluding the
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 bool enable_module_whitelist) override { 289 bool enable_module_whitelist) override {
287 return new SafeBrowsingDatabaseNew( 290 return new SafeBrowsingDatabaseNew(
288 db_task_runner, CreateStore(true, db_task_runner), // browse_store 291 db_task_runner, CreateStore(true, db_task_runner), // browse_store
289 CreateStore(enable_download_protection, db_task_runner), 292 CreateStore(enable_download_protection, db_task_runner),
290 CreateStore(enable_client_side_whitelist, db_task_runner), 293 CreateStore(enable_client_side_whitelist, db_task_runner),
291 CreateStore(enable_download_whitelist, db_task_runner), 294 CreateStore(enable_download_whitelist, db_task_runner),
292 CreateStore(true, db_task_runner), // inclusion_whitelist_store 295 CreateStore(true, db_task_runner), // inclusion_whitelist_store
293 CreateStore(enable_extension_blacklist, db_task_runner), 296 CreateStore(enable_extension_blacklist, db_task_runner),
294 CreateStore(enable_ip_blacklist, db_task_runner), 297 CreateStore(enable_ip_blacklist, db_task_runner),
295 CreateStore(enable_unwanted_software_list, db_task_runner), 298 CreateStore(enable_unwanted_software_list, db_task_runner),
296 CreateStore(enable_module_whitelist, db_task_runner)); 299 CreateStore(enable_module_whitelist, db_task_runner),
300 CreateStore(true, db_task_runner)); // resource_blacklist_store
297 } 301 }
298 302
299 SafeBrowsingDatabaseFactoryImpl() {} 303 SafeBrowsingDatabaseFactoryImpl() {}
300 304
301 private: 305 private:
302 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingDatabaseFactoryImpl); 306 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingDatabaseFactoryImpl);
303 }; 307 };
304 308
305 // static 309 // static
306 SafeBrowsingDatabaseFactory* SafeBrowsingDatabase::factory_ = NULL; 310 SafeBrowsingDatabaseFactory* SafeBrowsingDatabase::factory_ = NULL;
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 return base::FilePath(db_filename.value() + kUnwantedSoftwareDBFile); 401 return base::FilePath(db_filename.value() + kUnwantedSoftwareDBFile);
398 } 402 }
399 403
400 // static 404 // static
401 base::FilePath SafeBrowsingDatabase::ModuleWhitelistDBFilename( 405 base::FilePath SafeBrowsingDatabase::ModuleWhitelistDBFilename(
402 const base::FilePath& db_filename) { 406 const base::FilePath& db_filename) {
403 return base::FilePath(db_filename.value() + kModuleWhitelistDBFile); 407 return base::FilePath(db_filename.value() + kModuleWhitelistDBFile);
404 } 408 }
405 409
406 // static 410 // static
411 base::FilePath SafeBrowsingDatabase::ResourceBlacklistDBFilename(
412 const base::FilePath& db_filename) {
413 return base::FilePath(db_filename.value() + kResourceBlacklistDBFile);
414 }
415
416 // static
407 void SafeBrowsingDatabase::GetDownloadUrlPrefixes( 417 void SafeBrowsingDatabase::GetDownloadUrlPrefixes(
408 const std::vector<GURL>& urls, 418 const std::vector<GURL>& urls,
409 std::vector<SBPrefix>* prefixes) { 419 std::vector<SBPrefix>* prefixes) {
410 std::vector<SBFullHash> full_hashes; 420 std::vector<SBFullHash> full_hashes;
411 for (size_t i = 0; i < urls.size(); ++i) 421 for (size_t i = 0; i < urls.size(); ++i)
412 UrlToFullHashes(urls[i], false, &full_hashes); 422 UrlToFullHashes(urls[i], false, &full_hashes);
413 423
414 for (size_t i = 0; i < full_hashes.size(); ++i) 424 for (size_t i = 0; i < full_hashes.size(); ++i)
415 prefixes->push_back(full_hashes[i].prefix); 425 prefixes->push_back(full_hashes[i].prefix);
416 } 426 }
(...skipping 13 matching lines...) Expand all
430 } else if (list_id == INCLUSIONWHITELIST) { 440 } else if (list_id == INCLUSIONWHITELIST) {
431 return inclusion_whitelist_store_.get(); 441 return inclusion_whitelist_store_.get();
432 } else if (list_id == EXTENSIONBLACKLIST) { 442 } else if (list_id == EXTENSIONBLACKLIST) {
433 return extension_blacklist_store_.get(); 443 return extension_blacklist_store_.get();
434 } else if (list_id == IPBLACKLIST) { 444 } else if (list_id == IPBLACKLIST) {
435 return ip_blacklist_store_.get(); 445 return ip_blacklist_store_.get();
436 } else if (list_id == UNWANTEDURL) { 446 } else if (list_id == UNWANTEDURL) {
437 return unwanted_software_store_.get(); 447 return unwanted_software_store_.get();
438 } else if (list_id == MODULEWHITELIST) { 448 } else if (list_id == MODULEWHITELIST) {
439 return module_whitelist_store_.get(); 449 return module_whitelist_store_.get();
450 } else if (list_id == RESOURCEBLACKLIST) {
451 return resource_blacklist_store_.get();
440 } 452 }
441 return NULL; 453 return NULL;
442 } 454 }
443 455
444 // static 456 // static
445 void SafeBrowsingDatabase::RecordFailure(FailureType failure_type) { 457 void SafeBrowsingDatabase::RecordFailure(FailureType failure_type) {
446 UMA_HISTOGRAM_ENUMERATION("SB2.DatabaseFailure", failure_type, 458 UMA_HISTOGRAM_ENUMERATION("SB2.DatabaseFailure", failure_type,
447 FAILURE_DATABASE_MAX); 459 FAILURE_DATABASE_MAX);
448 } 460 }
449 461
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 SafeBrowsingDatabaseNew::SafeBrowsingDatabaseNew( 629 SafeBrowsingDatabaseNew::SafeBrowsingDatabaseNew(
618 const scoped_refptr<base::SequencedTaskRunner>& db_task_runner, 630 const scoped_refptr<base::SequencedTaskRunner>& db_task_runner,
619 SafeBrowsingStore* browse_store, 631 SafeBrowsingStore* browse_store,
620 SafeBrowsingStore* download_store, 632 SafeBrowsingStore* download_store,
621 SafeBrowsingStore* csd_whitelist_store, 633 SafeBrowsingStore* csd_whitelist_store,
622 SafeBrowsingStore* download_whitelist_store, 634 SafeBrowsingStore* download_whitelist_store,
623 SafeBrowsingStore* inclusion_whitelist_store, 635 SafeBrowsingStore* inclusion_whitelist_store,
624 SafeBrowsingStore* extension_blacklist_store, 636 SafeBrowsingStore* extension_blacklist_store,
625 SafeBrowsingStore* ip_blacklist_store, 637 SafeBrowsingStore* ip_blacklist_store,
626 SafeBrowsingStore* unwanted_software_store, 638 SafeBrowsingStore* unwanted_software_store,
627 SafeBrowsingStore* module_whitelist_store) 639 SafeBrowsingStore* module_whitelist_store,
640 SafeBrowsingStore* resource_blacklist_store)
628 : db_task_runner_(db_task_runner), 641 : db_task_runner_(db_task_runner),
629 state_manager_(db_task_runner_), 642 state_manager_(db_task_runner_),
630 db_state_manager_(db_task_runner_), 643 db_state_manager_(db_task_runner_),
631 browse_store_(browse_store), 644 browse_store_(browse_store),
632 download_store_(download_store), 645 download_store_(download_store),
633 csd_whitelist_store_(csd_whitelist_store), 646 csd_whitelist_store_(csd_whitelist_store),
634 download_whitelist_store_(download_whitelist_store), 647 download_whitelist_store_(download_whitelist_store),
635 inclusion_whitelist_store_(inclusion_whitelist_store), 648 inclusion_whitelist_store_(inclusion_whitelist_store),
636 extension_blacklist_store_(extension_blacklist_store), 649 extension_blacklist_store_(extension_blacklist_store),
637 ip_blacklist_store_(ip_blacklist_store), 650 ip_blacklist_store_(ip_blacklist_store),
638 unwanted_software_store_(unwanted_software_store), 651 unwanted_software_store_(unwanted_software_store),
639 module_whitelist_store_(module_whitelist_store), 652 module_whitelist_store_(module_whitelist_store),
653 resource_blacklist_store_(resource_blacklist_store),
640 reset_factory_(this) { 654 reset_factory_(this) {
641 DCHECK(browse_store_.get()); 655 DCHECK(browse_store_.get());
642 } 656 }
643 657
644 SafeBrowsingDatabaseNew::~SafeBrowsingDatabaseNew() { 658 SafeBrowsingDatabaseNew::~SafeBrowsingDatabaseNew() {
645 // The DCHECK is disabled due to crbug.com/338486 . 659 // The DCHECK is disabled due to crbug.com/338486 .
646 // DCHECK(db_task_runner_->RunsTasksOnCurrentThread()); 660 // DCHECK(db_task_runner_->RunsTasksOnCurrentThread());
647 } 661 }
648 662
649 void SafeBrowsingDatabaseNew::Init(const base::FilePath& filename_base) { 663 void SafeBrowsingDatabaseNew::Init(const base::FilePath& filename_base) {
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
794 if (module_whitelist_store_->GetAddFullHashes(&full_hashes)) { 808 if (module_whitelist_store_->GetAddFullHashes(&full_hashes)) {
795 LoadWhitelist(full_hashes, SBWhitelistId::MODULE); 809 LoadWhitelist(full_hashes, SBWhitelistId::MODULE);
796 } else { 810 } else {
797 state_manager_.BeginWriteTransaction()->WhitelistEverything( 811 state_manager_.BeginWriteTransaction()->WhitelistEverything(
798 SBWhitelistId::MODULE); 812 SBWhitelistId::MODULE);
799 } 813 }
800 } else { 814 } else {
801 state_manager_.BeginWriteTransaction()->WhitelistEverything( 815 state_manager_.BeginWriteTransaction()->WhitelistEverything(
802 SBWhitelistId::MODULE); // Just to be safe. 816 SBWhitelistId::MODULE); // Just to be safe.
803 } 817 }
818
819 if (resource_blacklist_store_.get()) {
820 resource_blacklist_store_->Init(
821 ResourceBlacklistDBFilename(db_state_manager_.filename_base()),
822 base::Bind(&SafeBrowsingDatabaseNew::HandleCorruptDatabase,
823 base::Unretained(this)));
824 }
804 } 825 }
805 826
806 bool SafeBrowsingDatabaseNew::ResetDatabase() { 827 bool SafeBrowsingDatabaseNew::ResetDatabase() {
807 DCHECK(db_task_runner_->RunsTasksOnCurrentThread()); 828 DCHECK(db_task_runner_->RunsTasksOnCurrentThread());
808 829
809 // Delete files on disk. 830 // Delete files on disk.
810 // TODO(shess): Hard to see where one might want to delete without a 831 // TODO(shess): Hard to see where one might want to delete without a
811 // reset. Perhaps inline |Delete()|? 832 // reset. Perhaps inline |Delete()|?
812 if (!Delete()) 833 if (!Delete())
813 return false; 834 return false;
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
976 << " mask:" << base::HexEncode(mask.data(), mask.size()) 997 << " mask:" << base::HexEncode(mask.data(), mask.size())
977 << " subnet:" << base::HexEncode(subnet.data(), subnet.size()) 998 << " subnet:" << base::HexEncode(subnet.data(), subnet.size())
978 << " hash:" << base::HexEncode(hash.data(), hash.size()); 999 << " hash:" << base::HexEncode(hash.data(), hash.size());
979 if (it->second.count(hash) > 0) { 1000 if (it->second.count(hash) > 0) {
980 return true; 1001 return true;
981 } 1002 }
982 } 1003 }
983 return false; 1004 return false;
984 } 1005 }
985 1006
1007 bool SafeBrowsingDatabaseNew::ContainsResourceUrlPrefixes(
1008 const std::vector<SBPrefix>& prefixes,
1009 std::vector<SBPrefix>* prefix_hits) {
1010 DCHECK(db_task_runner_->RunsTasksOnCurrentThread());
1011
1012 if (!resource_blacklist_store_)
1013 return false;
1014
1015 return MatchAddPrefixes(resource_blacklist_store_.get(),
1016 RESOURCEBLACKLIST % 2, prefixes, prefix_hits);
1017 }
1018
986 bool SafeBrowsingDatabaseNew::ContainsDownloadWhitelistedString( 1019 bool SafeBrowsingDatabaseNew::ContainsDownloadWhitelistedString(
987 const std::string& str) { 1020 const std::string& str) {
988 std::vector<SBFullHash> hashes; 1021 std::vector<SBFullHash> hashes;
989 hashes.push_back(SBFullHashForString(str)); 1022 hashes.push_back(SBFullHashForString(str));
990 return ContainsWhitelistedHashes(SBWhitelistId::DOWNLOAD, hashes); 1023 return ContainsWhitelistedHashes(SBWhitelistId::DOWNLOAD, hashes);
991 } 1024 }
992 1025
993 bool SafeBrowsingDatabaseNew::ContainsModuleWhitelistedString( 1026 bool SafeBrowsingDatabaseNew::ContainsModuleWhitelistedString(
994 const std::string& str) { 1027 const std::string& str) {
995 std::vector<SBFullHash> hashes; 1028 std::vector<SBFullHash> hashes;
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
1220 return false; 1253 return false;
1221 } 1254 }
1222 1255
1223 if (module_whitelist_store_.get() && 1256 if (module_whitelist_store_.get() &&
1224 !module_whitelist_store_->BeginUpdate()) { 1257 !module_whitelist_store_->BeginUpdate()) {
1225 RecordFailure(FAILURE_WHITELIST_DATABASE_UPDATE_BEGIN); 1258 RecordFailure(FAILURE_WHITELIST_DATABASE_UPDATE_BEGIN);
1226 HandleCorruptDatabase(); 1259 HandleCorruptDatabase();
1227 return false; 1260 return false;
1228 } 1261 }
1229 1262
1263 if (resource_blacklist_store_ && !resource_blacklist_store_->BeginUpdate()) {
1264 RecordFailure(FAILURE_RESOURCE_BLACKLIST_UPDATE_BEGIN);
1265 HandleCorruptDatabase();
1266 return false;
1267 }
1268
1230 // Cached fullhash results must be cleared on every database update (whether 1269 // Cached fullhash results must be cleared on every database update (whether
1231 // successful or not). 1270 // successful or not).
1232 state_manager_.BeginWriteTransaction()->clear_prefix_gethash_cache(); 1271 state_manager_.BeginWriteTransaction()->clear_prefix_gethash_cache();
1233 1272
1234 UpdateChunkRangesForLists(browse_store_.get(), kMalwareList, kPhishingList, 1273 UpdateChunkRangesForLists(browse_store_.get(), kMalwareList, kPhishingList,
1235 lists); 1274 lists);
1236 1275
1237 // NOTE(shess): |download_store_| used to contain kBinHashList, which has been 1276 // NOTE(shess): |download_store_| used to contain kBinHashList, which has been
1238 // deprecated. Code to delete the list from the store shows ~15k hits/day as 1277 // deprecated. Code to delete the list from the store shows ~15k hits/day as
1239 // of Feb 2014, so it has been removed. Everything _should_ be resilient to 1278 // of Feb 2014, so it has been removed. Everything _should_ be resilient to
(...skipping 12 matching lines...) Expand all
1252 kExtensionBlacklist, lists); 1291 kExtensionBlacklist, lists);
1253 1292
1254 UpdateChunkRangesForList(ip_blacklist_store_.get(), kIPBlacklist, lists); 1293 UpdateChunkRangesForList(ip_blacklist_store_.get(), kIPBlacklist, lists);
1255 1294
1256 UpdateChunkRangesForList(unwanted_software_store_.get(), kUnwantedUrlList, 1295 UpdateChunkRangesForList(unwanted_software_store_.get(), kUnwantedUrlList,
1257 lists); 1296 lists);
1258 1297
1259 UpdateChunkRangesForList(module_whitelist_store_.get(), kModuleWhitelist, 1298 UpdateChunkRangesForList(module_whitelist_store_.get(), kModuleWhitelist,
1260 lists); 1299 lists);
1261 1300
1301 UpdateChunkRangesForList(resource_blacklist_store_.get(), kResourceBlacklist,
1302 lists);
1303
1262 db_state_manager_.reset_corruption_detected(); 1304 db_state_manager_.reset_corruption_detected();
1263 db_state_manager_.reset_change_detected(); 1305 db_state_manager_.reset_change_detected();
1264 return true; 1306 return true;
1265 } 1307 }
1266 1308
1267 void SafeBrowsingDatabaseNew::UpdateFinished(bool update_succeeded) { 1309 void SafeBrowsingDatabaseNew::UpdateFinished(bool update_succeeded) {
1268 DCHECK(db_task_runner_->RunsTasksOnCurrentThread()); 1310 DCHECK(db_task_runner_->RunsTasksOnCurrentThread());
1269 1311
1270 // The update may have failed due to corrupt storage (for instance, 1312 // The update may have failed due to corrupt storage (for instance,
1271 // an excessive number of invalid add_chunks and sub_chunks). 1313 // an excessive number of invalid add_chunks and sub_chunks).
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1303 } 1345 }
1304 1346
1305 if (unwanted_software_store_ && 1347 if (unwanted_software_store_ &&
1306 !unwanted_software_store_->CheckValidity()) { 1348 !unwanted_software_store_->CheckValidity()) {
1307 DLOG(ERROR) << "Unwanted software url list database corrupt."; 1349 DLOG(ERROR) << "Unwanted software url list database corrupt.";
1308 } 1350 }
1309 1351
1310 if (module_whitelist_store_ && !module_whitelist_store_->CheckValidity()) { 1352 if (module_whitelist_store_ && !module_whitelist_store_->CheckValidity()) {
1311 DLOG(ERROR) << "Module digest whitelist database corrupt."; 1353 DLOG(ERROR) << "Module digest whitelist database corrupt.";
1312 } 1354 }
1355
1356 if (resource_blacklist_store_ &&
1357 !resource_blacklist_store_->CheckValidity()) {
1358 DLOG(ERROR) << "Resources blacklist url list database corrupt.";
1359 }
1313 } 1360 }
1314 1361
1315 if (db_state_manager_.corruption_detected()) 1362 if (db_state_manager_.corruption_detected())
1316 return; 1363 return;
1317 1364
1318 // Unroll the transaction if there was a protocol error or if the 1365 // Unroll the transaction if there was a protocol error or if the
1319 // transaction was empty. This will leave the prefix set, the 1366 // transaction was empty. This will leave the prefix set, the
1320 // pending hashes, and the prefix miss cache in place. 1367 // pending hashes, and the prefix miss cache in place.
1321 if (!update_succeeded || !db_state_manager_.change_detected()) { 1368 if (!update_succeeded || !db_state_manager_.change_detected()) {
1322 // Track empty updates to answer questions at http://crbug.com/72216 . 1369 // Track empty updates to answer questions at http://crbug.com/72216 .
1323 if (update_succeeded && !db_state_manager_.change_detected()) 1370 if (update_succeeded && !db_state_manager_.change_detected())
1324 UMA_HISTOGRAM_COUNTS("SB2.DatabaseUpdateKilobytes", 0); 1371 UMA_HISTOGRAM_COUNTS("SB2.DatabaseUpdateKilobytes", 0);
1325 browse_store_->CancelUpdate(); 1372 browse_store_->CancelUpdate();
1326 if (download_store_.get()) 1373 if (download_store_.get())
1327 download_store_->CancelUpdate(); 1374 download_store_->CancelUpdate();
1328 if (csd_whitelist_store_.get()) 1375 if (csd_whitelist_store_.get())
1329 csd_whitelist_store_->CancelUpdate(); 1376 csd_whitelist_store_->CancelUpdate();
1330 if (download_whitelist_store_.get()) 1377 if (download_whitelist_store_.get())
1331 download_whitelist_store_->CancelUpdate(); 1378 download_whitelist_store_->CancelUpdate();
1332 if (inclusion_whitelist_store_.get()) 1379 if (inclusion_whitelist_store_.get())
1333 inclusion_whitelist_store_->CancelUpdate(); 1380 inclusion_whitelist_store_->CancelUpdate();
1334 if (extension_blacklist_store_) 1381 if (extension_blacklist_store_)
1335 extension_blacklist_store_->CancelUpdate(); 1382 extension_blacklist_store_->CancelUpdate();
1336 if (ip_blacklist_store_) 1383 if (ip_blacklist_store_)
1337 ip_blacklist_store_->CancelUpdate(); 1384 ip_blacklist_store_->CancelUpdate();
1338 if (unwanted_software_store_) 1385 if (unwanted_software_store_)
1339 unwanted_software_store_->CancelUpdate(); 1386 unwanted_software_store_->CancelUpdate();
1340 if (module_whitelist_store_) 1387 if (module_whitelist_store_)
1341 module_whitelist_store_->CancelUpdate(); 1388 module_whitelist_store_->CancelUpdate();
1389 if (resource_blacklist_store_)
1390 resource_blacklist_store_->CancelUpdate();
1342 return; 1391 return;
1343 } 1392 }
1344 1393
1345 if (download_store_) { 1394 if (download_store_) {
1346 UpdateHashPrefixStore(DownloadDBFilename(db_state_manager_.filename_base()), 1395 UpdateHashPrefixStore(DownloadDBFilename(db_state_manager_.filename_base()),
1347 download_store_.get(), 1396 download_store_.get(),
1348 FAILURE_DOWNLOAD_DATABASE_UPDATE_FINISH); 1397 FAILURE_DOWNLOAD_DATABASE_UPDATE_FINISH);
1349 } 1398 }
1350 1399
1351 UpdatePrefixSetUrlStore(BrowseDBFilename(db_state_manager_.filename_base()), 1400 UpdatePrefixSetUrlStore(BrowseDBFilename(db_state_manager_.filename_base()),
(...skipping 27 matching lines...) Expand all
1379 unwanted_software_store_.get(), PrefixSetId::UNWANTED_SOFTWARE, 1428 unwanted_software_store_.get(), PrefixSetId::UNWANTED_SOFTWARE,
1380 FAILURE_UNWANTED_SOFTWARE_DATABASE_UPDATE_FINISH, 1429 FAILURE_UNWANTED_SOFTWARE_DATABASE_UPDATE_FINISH,
1381 FAILURE_UNWANTED_SOFTWARE_PREFIX_SET_WRITE, true); 1430 FAILURE_UNWANTED_SOFTWARE_PREFIX_SET_WRITE, true);
1382 } 1431 }
1383 1432
1384 if (module_whitelist_store_) { 1433 if (module_whitelist_store_) {
1385 UpdateWhitelistStore( 1434 UpdateWhitelistStore(
1386 ModuleWhitelistDBFilename(db_state_manager_.filename_base()), 1435 ModuleWhitelistDBFilename(db_state_manager_.filename_base()),
1387 module_whitelist_store_.get(), SBWhitelistId::MODULE); 1436 module_whitelist_store_.get(), SBWhitelistId::MODULE);
1388 } 1437 }
1438
1439 if (resource_blacklist_store_) {
1440 UpdateHashPrefixStore(
1441 ResourceBlacklistDBFilename(db_state_manager_.filename_base()),
1442 resource_blacklist_store_.get(),
1443 FAILURE_RESOURCE_BLACKLIST_UPDATE_FINISH);
1444 }
1389 } 1445 }
1390 1446
1391 void SafeBrowsingDatabaseNew::UpdateWhitelistStore( 1447 void SafeBrowsingDatabaseNew::UpdateWhitelistStore(
1392 const base::FilePath& store_filename, 1448 const base::FilePath& store_filename,
1393 SafeBrowsingStore* store, 1449 SafeBrowsingStore* store,
1394 SBWhitelistId whitelist_id) { 1450 SBWhitelistId whitelist_id) {
1395 DCHECK(db_task_runner_->RunsTasksOnCurrentThread()); 1451 DCHECK(db_task_runner_->RunsTasksOnCurrentThread());
1396 1452
1397 if (!store) 1453 if (!store)
1398 return; 1454 return;
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
1662 const bool r9 = base::DeleteFile( 1718 const bool r9 = base::DeleteFile(
1663 IpBlacklistDBFilename(db_state_manager_.filename_base()), false); 1719 IpBlacklistDBFilename(db_state_manager_.filename_base()), false);
1664 if (!r9) 1720 if (!r9)
1665 RecordFailure(FAILURE_IP_BLACKLIST_DELETE); 1721 RecordFailure(FAILURE_IP_BLACKLIST_DELETE);
1666 1722
1667 const bool r10 = base::DeleteFile( 1723 const bool r10 = base::DeleteFile(
1668 UnwantedSoftwareDBFilename(db_state_manager_.filename_base()), false); 1724 UnwantedSoftwareDBFilename(db_state_manager_.filename_base()), false);
1669 if (!r10) 1725 if (!r10)
1670 RecordFailure(FAILURE_UNWANTED_SOFTWARE_PREFIX_SET_DELETE); 1726 RecordFailure(FAILURE_UNWANTED_SOFTWARE_PREFIX_SET_DELETE);
1671 1727
1672 return r1 && r2 && r3 && r4 && r5 && r6 && r7 && r8 && r9 && r10; 1728 const bool r11 = base::DeleteFile(
1729 ResourceBlacklistDBFilename(db_state_manager_.filename_base()), false);
1730 if (!r11)
1731 RecordFailure(FAILURE_RESOURCE_BLACKLIST_DELETE);
1732
1733 return r1 && r2 && r3 && r4 && r5 && r6 && r7 && r8 && r9 && r10 && r11;
1673 } 1734 }
1674 1735
1675 void SafeBrowsingDatabaseNew::WritePrefixSet(const base::FilePath& db_filename, 1736 void SafeBrowsingDatabaseNew::WritePrefixSet(const base::FilePath& db_filename,
1676 PrefixSetId prefix_set_id, 1737 PrefixSetId prefix_set_id,
1677 FailureType write_failure_type) { 1738 FailureType write_failure_type) {
1678 DCHECK(db_task_runner_->RunsTasksOnCurrentThread()); 1739 DCHECK(db_task_runner_->RunsTasksOnCurrentThread());
1679 1740
1680 // Do not grab the lock to avoid contention while writing to disk. This is 1741 // Do not grab the lock to avoid contention while writing to disk. This is
1681 // safe as only this task runner can ever modify |state_manager_|'s prefix 1742 // safe as only this task runner can ever modify |state_manager_|'s prefix
1682 // sets anyways. 1743 // sets anyways.
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
1838 histogram_name.append(".ExtensionBlacklist"); 1899 histogram_name.append(".ExtensionBlacklist");
1839 else if (base::EndsWith(filename, kIPBlacklistDBFile, 1900 else if (base::EndsWith(filename, kIPBlacklistDBFile,
1840 base::CompareCase::SENSITIVE)) 1901 base::CompareCase::SENSITIVE))
1841 histogram_name.append(".IPBlacklist"); 1902 histogram_name.append(".IPBlacklist");
1842 else if (base::EndsWith(filename, kUnwantedSoftwareDBFile, 1903 else if (base::EndsWith(filename, kUnwantedSoftwareDBFile,
1843 base::CompareCase::SENSITIVE)) 1904 base::CompareCase::SENSITIVE))
1844 histogram_name.append(".UnwantedSoftware"); 1905 histogram_name.append(".UnwantedSoftware");
1845 else if (base::EndsWith(filename, kModuleWhitelistDBFile, 1906 else if (base::EndsWith(filename, kModuleWhitelistDBFile,
1846 base::CompareCase::SENSITIVE)) 1907 base::CompareCase::SENSITIVE))
1847 histogram_name.append(".ModuleWhitelist"); 1908 histogram_name.append(".ModuleWhitelist");
1909 else if (base::EndsWith(filename, kResourceBlacklistDBFile,
1910 base::CompareCase::SENSITIVE))
1911 histogram_name.append(".ResourceBlacklist");
1848 else 1912 else
1849 NOTREACHED(); // Add support for new lists above. 1913 NOTREACHED(); // Add support for new lists above.
1850 1914
1851 // Histogram properties as in UMA_HISTOGRAM_COUNTS macro. 1915 // Histogram properties as in UMA_HISTOGRAM_COUNTS macro.
1852 base::HistogramBase* histogram_pointer = base::Histogram::FactoryGet( 1916 base::HistogramBase* histogram_pointer = base::Histogram::FactoryGet(
1853 histogram_name, 1, 1000000, 50, 1917 histogram_name, 1, 1000000, 50,
1854 base::HistogramBase::kUmaTargetedHistogramFlag); 1918 base::HistogramBase::kUmaTargetedHistogramFlag);
1855 1919
1856 histogram_pointer->Add(file_size_kilobytes); 1920 histogram_pointer->Add(file_size_kilobytes);
1857 } 1921 }
1858 1922
1859 } // namespace safe_browsing 1923 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698