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

Side by Side Diff: components/safe_browsing_db/v4_local_database_manager.cc

Issue 2622063002: Add the missing callback to client for CheckResourceUrl. (Closed)
Patch Set: Incorporate nparker@ feedback Created 3 years, 11 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 // This file should not be build on Android but is currently getting built. 5 // This file should not be build on Android but is currently getting built.
6 // TODO(vakh): Fix that: http://crbug.com/621647 6 // TODO(vakh): Fix that: http://crbug.com/621647
7 7
8 #include "components/safe_browsing_db/v4_local_database_manager.h" 8 #include "components/safe_browsing_db/v4_local_database_manager.h"
9 9
10 #include <vector> 10 #include <vector>
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 UMA_HISTOGRAM_TIMES("SB2.FilterCheck", diff); 483 UMA_HISTOGRAM_TIMES("SB2.FilterCheck", diff);
484 UMA_HISTOGRAM_CUSTOM_TIMES("SafeBrowsing.V4GetPrefixMatches.Time", diff, 484 UMA_HISTOGRAM_CUSTOM_TIMES("SafeBrowsing.V4GetPrefixMatches.Time", diff,
485 base::TimeDelta::FromMicroseconds(20), 485 base::TimeDelta::FromMicroseconds(20),
486 base::TimeDelta::FromSeconds(1), 50); 486 base::TimeDelta::FromSeconds(1), 50);
487 return !full_hash_to_store_and_hash_prefixes->empty(); 487 return !full_hash_to_store_and_hash_prefixes->empty();
488 } 488 }
489 489
490 void V4LocalDatabaseManager::GetSeverestThreatTypeAndMetadata( 490 void V4LocalDatabaseManager::GetSeverestThreatTypeAndMetadata(
491 SBThreatType* result_threat_type, 491 SBThreatType* result_threat_type,
492 ThreatMetadata* metadata, 492 ThreatMetadata* metadata,
493 FullHash* matching_full_hash,
493 const std::vector<FullHashInfo>& full_hash_infos) { 494 const std::vector<FullHashInfo>& full_hash_infos) {
494 DCHECK(result_threat_type); 495 DCHECK(result_threat_type);
495 DCHECK(metadata); 496 DCHECK(metadata);
497 DCHECK(matching_full_hash);
496 498
497 ThreatSeverity most_severe_yet = kLeastSeverity; 499 ThreatSeverity most_severe_yet = kLeastSeverity;
498 for (const FullHashInfo& fhi : full_hash_infos) { 500 for (const FullHashInfo& fhi : full_hash_infos) {
499 ThreatSeverity severity = GetThreatSeverity(fhi.list_id); 501 ThreatSeverity severity = GetThreatSeverity(fhi.list_id);
500 if (severity < most_severe_yet) { 502 if (severity < most_severe_yet) {
501 most_severe_yet = severity; 503 most_severe_yet = severity;
502 *result_threat_type = GetSBThreatTypeForList(fhi.list_id); 504 *result_threat_type = GetSBThreatTypeForList(fhi.list_id);
503 *metadata = fhi.metadata; 505 *metadata = fhi.metadata;
506 *matching_full_hash = fhi.full_hash;
504 } 507 }
505 } 508 }
506 } 509 }
507 510
508 StoresToCheck V4LocalDatabaseManager::GetStoresForFullHashRequests() { 511 StoresToCheck V4LocalDatabaseManager::GetStoresForFullHashRequests() {
509 StoresToCheck stores_for_full_hash; 512 StoresToCheck stores_for_full_hash;
510 for (auto it : list_infos_) { 513 for (auto it : list_infos_) {
511 stores_for_full_hash.insert(it.list_id()); 514 stores_for_full_hash.insert(it.list_id());
512 } 515 }
513 return stores_for_full_hash; 516 return stores_for_full_hash;
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 } 591 }
589 592
590 const auto it = pending_checks_.find(check.get()); 593 const auto it = pending_checks_.find(check.get());
591 if (it == pending_checks_.end()) { 594 if (it == pending_checks_.end()) {
592 // The check has since been cancelled. 595 // The check has since been cancelled.
593 return; 596 return;
594 } 597 }
595 598
596 // Find out the most severe threat, if any, to report to the client. 599 // Find out the most severe threat, if any, to report to the client.
597 GetSeverestThreatTypeAndMetadata(&check->result_threat_type, 600 GetSeverestThreatTypeAndMetadata(&check->result_threat_type,
598 &check->url_metadata, full_hash_infos); 601 &check->url_metadata,
602 &check->matching_full_hash, full_hash_infos);
599 pending_checks_.erase(it); 603 pending_checks_.erase(it);
600 RespondToClient(std::move(check)); 604 RespondToClient(std::move(check));
601 } 605 }
602 606
603 void V4LocalDatabaseManager::PerformFullHashCheck( 607 void V4LocalDatabaseManager::PerformFullHashCheck(
604 std::unique_ptr<PendingCheck> check, 608 std::unique_ptr<PendingCheck> check,
605 const FullHashToStoreAndHashPrefixesMap& 609 const FullHashToStoreAndHashPrefixesMap&
606 full_hash_to_store_and_hash_prefixes) { 610 full_hash_to_store_and_hash_prefixes) {
607 DCHECK_CURRENTLY_ON(BrowserThread::IO); 611 DCHECK_CURRENTLY_ON(BrowserThread::IO);
608 612
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 646
643 for (std::unique_ptr<PendingCheck>& it : checks) { 647 for (std::unique_ptr<PendingCheck>& it : checks) {
644 RespondToClient(std::move(it)); 648 RespondToClient(std::move(it));
645 } 649 }
646 } 650 }
647 651
648 void V4LocalDatabaseManager::RespondToClient( 652 void V4LocalDatabaseManager::RespondToClient(
649 std::unique_ptr<PendingCheck> check) { 653 std::unique_ptr<PendingCheck> check) {
650 DCHECK(check.get()); 654 DCHECK(check.get());
651 655
652 if (check->client_callback_type == ClientCallbackType::CHECK_BROWSE_URL) { 656 switch (check->client_callback_type) {
653 DCHECK_EQ(1u, check->urls.size()); 657 case ClientCallbackType::CHECK_BROWSE_URL:
654 check->client->OnCheckBrowseUrlResult( 658 DCHECK_EQ(1u, check->urls.size());
655 check->urls[0], check->result_threat_type, check->url_metadata); 659 check->client->OnCheckBrowseUrlResult(
656 } else if (check->client_callback_type == 660 check->urls[0], check->result_threat_type, check->url_metadata);
657 ClientCallbackType::CHECK_DOWNLOAD_URLS) { 661 break;
658 check->client->OnCheckDownloadUrlResult(check->urls, 662
659 check->result_threat_type); 663 case ClientCallbackType::CHECK_DOWNLOAD_URLS:
660 } else if (check->client_callback_type == 664 check->client->OnCheckDownloadUrlResult(check->urls,
661 ClientCallbackType::CHECK_EXTENSION_IDS) { 665 check->result_threat_type);
662 const std::set<FullHash> extension_ids(check->full_hashes.begin(), 666 break;
663 check->full_hashes.end()); 667
664 check->client->OnCheckExtensionsResult(extension_ids); 668 case ClientCallbackType::CHECK_RESOURCE_URL:
665 } else { 669 DCHECK_EQ(1u, check->urls.size());
666 NOTREACHED() << "Unexpected client_callback_type encountered"; 670 check->client->OnCheckResourceUrlResult(
671 check->urls[0], check->result_threat_type, check->matching_full_hash);
672 break;
673
674 case ClientCallbackType::CHECK_EXTENSION_IDS: {
675 const std::set<FullHash> extension_ids(check->full_hashes.begin(),
676 check->full_hashes.end());
677 check->client->OnCheckExtensionsResult(extension_ids);
678 break;
679 }
680
681 case ClientCallbackType::CHECK_OTHER:
682 NOTREACHED() << "Unexpected client_callback_type encountered";
667 } 683 }
668 } 684 }
669 685
670 void V4LocalDatabaseManager::SetupDatabase() { 686 void V4LocalDatabaseManager::SetupDatabase() {
671 DCHECK(!base_path_.empty()); 687 DCHECK(!base_path_.empty());
672 DCHECK(!list_infos_.empty()); 688 DCHECK(!list_infos_.empty());
673 DCHECK_CURRENTLY_ON(BrowserThread::IO); 689 DCHECK_CURRENTLY_ON(BrowserThread::IO);
674 690
675 // Only get a new task runner if there isn't one already. If the service has 691 // Only get a new task runner if there isn't one already. If the service has
676 // previously been started and stopped, a task runner could already exist. 692 // previously been started and stopped, a task runner could already exist.
(...skipping 30 matching lines...) Expand all
707 db_updated_callback_); 723 db_updated_callback_);
708 } 724 }
709 725
710 bool V4LocalDatabaseManager::AreStoresAvailableNow( 726 bool V4LocalDatabaseManager::AreStoresAvailableNow(
711 const StoresToCheck& stores_to_check) const { 727 const StoresToCheck& stores_to_check) const {
712 return enabled_ && v4_database_ && 728 return enabled_ && v4_database_ &&
713 v4_database_->AreStoresAvailable(stores_to_check); 729 v4_database_->AreStoresAvailable(stores_to_check);
714 } 730 }
715 731
716 } // namespace safe_browsing 732 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698