OLD | NEW |
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/local_database_manager.h" | 5 #include "chrome/browser/safe_browsing/local_database_manager.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
546 SafeBrowsingCheck* check = new SafeBrowsingCheck( | 546 SafeBrowsingCheck* check = new SafeBrowsingCheck( |
547 std::vector<GURL>(1, url), std::vector<SBFullHash>(), client, MALWARE, | 547 std::vector<GURL>(1, url), std::vector<SBFullHash>(), client, MALWARE, |
548 expected_threats); | 548 expected_threats); |
549 check->need_get_hash = cache_hits.empty(); | 549 check->need_get_hash = cache_hits.empty(); |
550 check->prefix_hits.swap(prefix_hits); | 550 check->prefix_hits.swap(prefix_hits); |
551 check->cache_hits.swap(cache_hits); | 551 check->cache_hits.swap(cache_hits); |
552 checks_[check] = base::WrapUnique(check); | 552 checks_[check] = base::WrapUnique(check); |
553 | 553 |
554 BrowserThread::PostTask( | 554 BrowserThread::PostTask( |
555 BrowserThread::IO, FROM_HERE, | 555 BrowserThread::IO, FROM_HERE, |
556 base::Bind(&LocalSafeBrowsingDatabaseManager::OnCheckDone, this, check)); | 556 base::BindOnce(&LocalSafeBrowsingDatabaseManager::OnCheckDone, this, |
| 557 check)); |
557 | 558 |
558 return false; | 559 return false; |
559 } | 560 } |
560 | 561 |
561 bool LocalSafeBrowsingDatabaseManager::CheckUrlForSubresourceFilter( | 562 bool LocalSafeBrowsingDatabaseManager::CheckUrlForSubresourceFilter( |
562 const GURL& url, | 563 const GURL& url, |
563 Client* client) { | 564 Client* client) { |
564 // TODO(melandory): implement Android support. | 565 // TODO(melandory): implement Android support. |
565 NOTREACHED(); | 566 NOTREACHED(); |
566 return true; | 567 return true; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
613 if (!cache_lifetime.is_zero() && MakeDatabaseAvailable()) | 614 if (!cache_lifetime.is_zero() && MakeDatabaseAvailable()) |
614 database_->CacheHashResults(prefixes, full_hashes, cache_lifetime); | 615 database_->CacheHashResults(prefixes, full_hashes, cache_lifetime); |
615 } | 616 } |
616 | 617 |
617 void LocalSafeBrowsingDatabaseManager::GetChunks(GetChunksCallback callback) { | 618 void LocalSafeBrowsingDatabaseManager::GetChunks(GetChunksCallback callback) { |
618 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 619 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
619 DCHECK(enabled_); | 620 DCHECK(enabled_); |
620 DCHECK(!callback.is_null()); | 621 DCHECK(!callback.is_null()); |
621 safe_browsing_task_runner_->PostTask( | 622 safe_browsing_task_runner_->PostTask( |
622 FROM_HERE, | 623 FROM_HERE, |
623 base::Bind(&LocalSafeBrowsingDatabaseManager::GetAllChunksFromDatabase, | 624 base::BindOnce( |
624 this, callback)); | 625 &LocalSafeBrowsingDatabaseManager::GetAllChunksFromDatabase, this, |
| 626 callback)); |
625 } | 627 } |
626 | 628 |
627 void LocalSafeBrowsingDatabaseManager::AddChunks( | 629 void LocalSafeBrowsingDatabaseManager::AddChunks( |
628 const std::string& list, | 630 const std::string& list, |
629 std::unique_ptr<std::vector<std::unique_ptr<SBChunkData>>> chunks, | 631 std::unique_ptr<std::vector<std::unique_ptr<SBChunkData>>> chunks, |
630 AddChunksCallback callback) { | 632 AddChunksCallback callback) { |
631 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 633 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
632 DCHECK(enabled_); | 634 DCHECK(enabled_); |
633 DCHECK(!callback.is_null()); | 635 DCHECK(!callback.is_null()); |
634 safe_browsing_task_runner_->PostTask( | 636 safe_browsing_task_runner_->PostTask( |
635 FROM_HERE, | 637 FROM_HERE, |
636 base::Bind(&LocalSafeBrowsingDatabaseManager::AddDatabaseChunks, this, | 638 base::BindOnce(&LocalSafeBrowsingDatabaseManager::AddDatabaseChunks, this, |
637 list, base::Passed(&chunks), callback)); | 639 list, base::Passed(&chunks), callback)); |
638 } | 640 } |
639 | 641 |
640 void LocalSafeBrowsingDatabaseManager::DeleteChunks( | 642 void LocalSafeBrowsingDatabaseManager::DeleteChunks( |
641 std::unique_ptr<std::vector<SBChunkDelete>> chunk_deletes) { | 643 std::unique_ptr<std::vector<SBChunkDelete>> chunk_deletes) { |
642 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 644 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
643 DCHECK(enabled_); | 645 DCHECK(enabled_); |
644 safe_browsing_task_runner_->PostTask( | 646 safe_browsing_task_runner_->PostTask( |
645 FROM_HERE, | 647 FROM_HERE, |
646 base::Bind(&LocalSafeBrowsingDatabaseManager::DeleteDatabaseChunks, this, | 648 base::BindOnce(&LocalSafeBrowsingDatabaseManager::DeleteDatabaseChunks, |
647 base::Passed(&chunk_deletes))); | 649 this, base::Passed(&chunk_deletes))); |
648 } | 650 } |
649 | 651 |
650 void LocalSafeBrowsingDatabaseManager::UpdateStarted() { | 652 void LocalSafeBrowsingDatabaseManager::UpdateStarted() { |
651 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 653 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
652 DCHECK(enabled_); | 654 DCHECK(enabled_); |
653 DCHECK(!update_in_progress_); | 655 DCHECK(!update_in_progress_); |
654 update_in_progress_ = true; | 656 update_in_progress_ = true; |
655 } | 657 } |
656 | 658 |
657 void LocalSafeBrowsingDatabaseManager::UpdateFinished(bool update_succeeded) { | 659 void LocalSafeBrowsingDatabaseManager::UpdateFinished(bool update_succeeded) { |
658 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 660 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
659 DCHECK(enabled_); | 661 DCHECK(enabled_); |
660 if (update_in_progress_) { | 662 if (update_in_progress_) { |
661 update_in_progress_ = false; | 663 update_in_progress_ = false; |
662 safe_browsing_task_runner_->PostTask( | 664 safe_browsing_task_runner_->PostTask( |
663 FROM_HERE, | 665 FROM_HERE, |
664 base::Bind(&LocalSafeBrowsingDatabaseManager::DatabaseUpdateFinished, | 666 base::BindOnce( |
665 this, update_succeeded)); | 667 &LocalSafeBrowsingDatabaseManager::DatabaseUpdateFinished, this, |
| 668 update_succeeded)); |
666 } | 669 } |
667 } | 670 } |
668 | 671 |
669 void LocalSafeBrowsingDatabaseManager::ResetDatabase() { | 672 void LocalSafeBrowsingDatabaseManager::ResetDatabase() { |
670 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 673 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
671 DCHECK(enabled_); | 674 DCHECK(enabled_); |
672 safe_browsing_task_runner_->PostTask( | 675 safe_browsing_task_runner_->PostTask( |
673 FROM_HERE, | 676 FROM_HERE, |
674 base::Bind(&LocalSafeBrowsingDatabaseManager::OnResetDatabase, this)); | 677 base::BindOnce(&LocalSafeBrowsingDatabaseManager::OnResetDatabase, this)); |
675 } | 678 } |
676 | 679 |
677 void LocalSafeBrowsingDatabaseManager::StartOnIOThread( | 680 void LocalSafeBrowsingDatabaseManager::StartOnIOThread( |
678 net::URLRequestContextGetter* request_context_getter, | 681 net::URLRequestContextGetter* request_context_getter, |
679 const V4ProtocolConfig& config) { | 682 const V4ProtocolConfig& config) { |
680 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 683 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
681 SafeBrowsingDatabaseManager::StartOnIOThread(request_context_getter, config); | 684 SafeBrowsingDatabaseManager::StartOnIOThread(request_context_getter, config); |
682 | 685 |
683 if (enabled_) | 686 if (enabled_) |
684 return; | 687 return; |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
764 // * If |database_| is NULL, then either no creation request is in flight, in | 767 // * If |database_| is NULL, then either no creation request is in flight, in |
765 // which case we don't need to do anything, or one is in flight, in which | 768 // which case we don't need to do anything, or one is in flight, in which |
766 // case the database will be recreated before our deletion request is | 769 // case the database will be recreated before our deletion request is |
767 // handled, and could be used on the IO thread in that time period, leading | 770 // handled, and could be used on the IO thread in that time period, leading |
768 // to the same problem as above. | 771 // to the same problem as above. |
769 // Checking DatabaseAvailable() avoids both of these. | 772 // Checking DatabaseAvailable() avoids both of these. |
770 if (DatabaseAvailable()) { | 773 if (DatabaseAvailable()) { |
771 closing_database_ = true; | 774 closing_database_ = true; |
772 safe_browsing_task_runner_->PostTask( | 775 safe_browsing_task_runner_->PostTask( |
773 FROM_HERE, | 776 FROM_HERE, |
774 base::Bind(&LocalSafeBrowsingDatabaseManager::OnCloseDatabase, this)); | 777 base::BindOnce(&LocalSafeBrowsingDatabaseManager::OnCloseDatabase, |
| 778 this)); |
775 } | 779 } |
776 | 780 |
777 // Delete pending checks, calling back any clients with 'SB_THREAT_TYPE_SAFE'. | 781 // Delete pending checks, calling back any clients with 'SB_THREAT_TYPE_SAFE'. |
778 // We have to do this after the db thread returns because methods on it can | 782 // We have to do this after the db thread returns because methods on it can |
779 // have copies of these pointers, so deleting them might lead to accessing | 783 // have copies of these pointers, so deleting them might lead to accessing |
780 // garbage. | 784 // garbage. |
781 for (const auto& check : checks_) { | 785 for (const auto& check : checks_) { |
782 if (check.first->client) | 786 if (check.first->client) |
783 check.first->OnSafeBrowsingResult(); | 787 check.first->OnSafeBrowsingResult(); |
784 } | 788 } |
785 | 789 |
786 checks_.clear(); | 790 checks_.clear(); |
787 gethash_requests_.clear(); | 791 gethash_requests_.clear(); |
788 } | 792 } |
789 | 793 |
790 bool LocalSafeBrowsingDatabaseManager::DatabaseAvailable() const { | 794 bool LocalSafeBrowsingDatabaseManager::DatabaseAvailable() const { |
791 base::AutoLock lock(database_lock_); | 795 base::AutoLock lock(database_lock_); |
792 return !closing_database_ && (database_ != NULL); | 796 return !closing_database_ && (database_ != NULL); |
793 } | 797 } |
794 | 798 |
795 bool LocalSafeBrowsingDatabaseManager::MakeDatabaseAvailable() { | 799 bool LocalSafeBrowsingDatabaseManager::MakeDatabaseAvailable() { |
796 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 800 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
797 DCHECK(enabled_); | 801 DCHECK(enabled_); |
798 if (DatabaseAvailable()) | 802 if (DatabaseAvailable()) |
799 return true; | 803 return true; |
800 safe_browsing_task_runner_->PostTask( | 804 safe_browsing_task_runner_->PostTask( |
801 FROM_HERE, base::Bind(base::IgnoreResult( | 805 FROM_HERE, |
802 &LocalSafeBrowsingDatabaseManager::GetDatabase), | 806 base::BindOnce( |
803 this)); | 807 base::IgnoreResult(&LocalSafeBrowsingDatabaseManager::GetDatabase), |
| 808 this)); |
804 return false; | 809 return false; |
805 } | 810 } |
806 | 811 |
807 SafeBrowsingDatabase* LocalSafeBrowsingDatabaseManager::GetDatabase() { | 812 SafeBrowsingDatabase* LocalSafeBrowsingDatabaseManager::GetDatabase() { |
808 DCHECK(safe_browsing_task_runner_->RunsTasksOnCurrentThread()); | 813 DCHECK(safe_browsing_task_runner_->RunsTasksOnCurrentThread()); |
809 | 814 |
810 if (database_) | 815 if (database_) |
811 return database_; | 816 return database_; |
812 | 817 |
813 const base::TimeTicks before = base::TimeTicks::Now(); | 818 const base::TimeTicks before = base::TimeTicks::Now(); |
814 std::unique_ptr<SafeBrowsingDatabase> database = SafeBrowsingDatabase::Create( | 819 std::unique_ptr<SafeBrowsingDatabase> database = SafeBrowsingDatabase::Create( |
815 safe_browsing_task_runner_, enable_download_protection_, | 820 safe_browsing_task_runner_, enable_download_protection_, |
816 enable_csd_whitelist_, enable_download_whitelist_, | 821 enable_csd_whitelist_, enable_download_whitelist_, |
817 enable_extension_blacklist_, enable_ip_blacklist_, | 822 enable_extension_blacklist_, enable_ip_blacklist_, |
818 enable_unwanted_software_blacklist_, enable_module_whitelist_); | 823 enable_unwanted_software_blacklist_, enable_module_whitelist_); |
819 | 824 |
820 database->Init(SafeBrowsingService::GetBaseFilename()); | 825 database->Init(SafeBrowsingService::GetBaseFilename()); |
821 { | 826 { |
822 // Acquiring the lock here guarantees correct ordering between the writes to | 827 // Acquiring the lock here guarantees correct ordering between the writes to |
823 // the new database object above, and the setting of |database_| below. | 828 // the new database object above, and the setting of |database_| below. |
824 base::AutoLock lock(database_lock_); | 829 base::AutoLock lock(database_lock_); |
825 database_ = database.release(); | 830 database_ = database.release(); |
826 } | 831 } |
827 | 832 |
828 BrowserThread::PostTask( | 833 BrowserThread::PostTask( |
829 BrowserThread::IO, FROM_HERE, | 834 BrowserThread::IO, FROM_HERE, |
830 base::Bind(&LocalSafeBrowsingDatabaseManager::DatabaseLoadComplete, | 835 base::BindOnce(&LocalSafeBrowsingDatabaseManager::DatabaseLoadComplete, |
831 this)); | 836 this)); |
832 | 837 |
833 UMA_HISTOGRAM_TIMES("SB2.DatabaseOpen", base::TimeTicks::Now() - before); | 838 UMA_HISTOGRAM_TIMES("SB2.DatabaseOpen", base::TimeTicks::Now() - before); |
834 return database_; | 839 return database_; |
835 } | 840 } |
836 | 841 |
837 void LocalSafeBrowsingDatabaseManager::OnCheckDone(SafeBrowsingCheck* check) { | 842 void LocalSafeBrowsingDatabaseManager::OnCheckDone(SafeBrowsingCheck* check) { |
838 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 843 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
839 | 844 |
840 if (!enabled_) | 845 if (!enabled_) |
841 return; | 846 return; |
(...skipping 24 matching lines...) Expand all Loading... |
866 requestors.push_back(check); | 871 requestors.push_back(check); |
867 gethash_requests_[prefix] = requestors; | 872 gethash_requests_[prefix] = requestors; |
868 } | 873 } |
869 | 874 |
870 // Reset the start time so that we can measure the network time without the | 875 // Reset the start time so that we can measure the network time without the |
871 // database time. | 876 // database time. |
872 check->start = base::TimeTicks::Now(); | 877 check->start = base::TimeTicks::Now(); |
873 | 878 |
874 BrowserThread::PostTask( | 879 BrowserThread::PostTask( |
875 BrowserThread::UI, FROM_HERE, | 880 BrowserThread::UI, FROM_HERE, |
876 base::Bind(&LocalSafeBrowsingDatabaseManager::OnRequestFullHash, this, | 881 base::BindOnce(&LocalSafeBrowsingDatabaseManager::OnRequestFullHash, |
877 check)); | 882 this, check)); |
878 } else { | 883 } else { |
879 // We may have cached results for previous GetHash queries. Since | 884 // We may have cached results for previous GetHash queries. Since |
880 // this data comes from cache, don't histogram hits. | 885 // this data comes from cache, don't histogram hits. |
881 HandleOneCheck(check, check->cache_hits); | 886 HandleOneCheck(check, check->cache_hits); |
882 } | 887 } |
883 } | 888 } |
884 | 889 |
885 void LocalSafeBrowsingDatabaseManager::OnRequestFullHash( | 890 void LocalSafeBrowsingDatabaseManager::OnRequestFullHash( |
886 SafeBrowsingCheck* check) { | 891 SafeBrowsingCheck* check) { |
887 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 892 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
888 check->extended_reporting_level = GetExtendedReporting(); | 893 check->extended_reporting_level = GetExtendedReporting(); |
889 BrowserThread::PostTask( | 894 BrowserThread::PostTask( |
890 BrowserThread::IO, FROM_HERE, | 895 BrowserThread::IO, FROM_HERE, |
891 base::Bind(&LocalSafeBrowsingDatabaseManager::RequestFullHash, this, | 896 base::BindOnce(&LocalSafeBrowsingDatabaseManager::RequestFullHash, this, |
892 check)); | 897 check)); |
893 } | 898 } |
894 | 899 |
895 ExtendedReportingLevel | 900 ExtendedReportingLevel |
896 LocalSafeBrowsingDatabaseManager::GetExtendedReporting() { | 901 LocalSafeBrowsingDatabaseManager::GetExtendedReporting() { |
897 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 902 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
898 | 903 |
899 // Determine if the last used profile is opted into extended reporting. | 904 // Determine if the last used profile is opted into extended reporting. |
900 // Note: It is possible that the last used profile is not the one triggers | 905 // Note: It is possible that the last used profile is not the one triggers |
901 // the hash request, but not very likely. | 906 // the hash request, but not very likely. |
902 ExtendedReportingLevel extended_reporting_level = SBER_LEVEL_OFF; | 907 ExtendedReportingLevel extended_reporting_level = SBER_LEVEL_OFF; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
935 database_update_in_progress_ = true; | 940 database_update_in_progress_ = true; |
936 GetDatabase(); // This guarantees that |database_| is non-NULL. | 941 GetDatabase(); // This guarantees that |database_| is non-NULL. |
937 if (database_->UpdateStarted(&lists)) { | 942 if (database_->UpdateStarted(&lists)) { |
938 database_error = false; | 943 database_error = false; |
939 } else { | 944 } else { |
940 database_->UpdateFinished(false); | 945 database_->UpdateFinished(false); |
941 } | 946 } |
942 | 947 |
943 BrowserThread::PostTask( | 948 BrowserThread::PostTask( |
944 BrowserThread::UI, FROM_HERE, | 949 BrowserThread::UI, FROM_HERE, |
945 base::Bind( | 950 base::BindOnce( |
946 &LocalSafeBrowsingDatabaseManager::BeforeGetAllChunksFromDatabase, | 951 &LocalSafeBrowsingDatabaseManager::BeforeGetAllChunksFromDatabase, |
947 this, lists, database_error, callback)); | 952 this, lists, database_error, callback)); |
948 } | 953 } |
949 | 954 |
950 void LocalSafeBrowsingDatabaseManager::BeforeGetAllChunksFromDatabase( | 955 void LocalSafeBrowsingDatabaseManager::BeforeGetAllChunksFromDatabase( |
951 const std::vector<SBListChunkRanges>& lists, | 956 const std::vector<SBListChunkRanges>& lists, |
952 bool database_error, | 957 bool database_error, |
953 GetChunksCallback callback) { | 958 GetChunksCallback callback) { |
954 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 959 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
955 | 960 |
956 ExtendedReportingLevel extended_reporting_level = GetExtendedReporting(); | 961 ExtendedReportingLevel extended_reporting_level = GetExtendedReporting(); |
957 | 962 |
958 BrowserThread::PostTask( | 963 BrowserThread::PostTask( |
959 BrowserThread::IO, FROM_HERE, | 964 BrowserThread::IO, FROM_HERE, |
960 base::Bind(&LocalSafeBrowsingDatabaseManager::OnGetAllChunksFromDatabase, | 965 base::BindOnce( |
961 this, lists, database_error, extended_reporting_level, | 966 &LocalSafeBrowsingDatabaseManager::OnGetAllChunksFromDatabase, this, |
962 callback)); | 967 lists, database_error, extended_reporting_level, callback)); |
963 } | 968 } |
964 | 969 |
965 void LocalSafeBrowsingDatabaseManager::OnGetAllChunksFromDatabase( | 970 void LocalSafeBrowsingDatabaseManager::OnGetAllChunksFromDatabase( |
966 const std::vector<SBListChunkRanges>& lists, | 971 const std::vector<SBListChunkRanges>& lists, |
967 bool database_error, | 972 bool database_error, |
968 ExtendedReportingLevel reporting_level, | 973 ExtendedReportingLevel reporting_level, |
969 GetChunksCallback callback) { | 974 GetChunksCallback callback) { |
970 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 975 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
971 if (enabled_) | 976 if (enabled_) |
972 callback.Run(lists, database_error, reporting_level); | 977 callback.Run(lists, database_error, reporting_level); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1011 | 1016 |
1012 void LocalSafeBrowsingDatabaseManager::AddDatabaseChunks( | 1017 void LocalSafeBrowsingDatabaseManager::AddDatabaseChunks( |
1013 const std::string& list_name, | 1018 const std::string& list_name, |
1014 std::unique_ptr<std::vector<std::unique_ptr<SBChunkData>>> chunks, | 1019 std::unique_ptr<std::vector<std::unique_ptr<SBChunkData>>> chunks, |
1015 AddChunksCallback callback) { | 1020 AddChunksCallback callback) { |
1016 DCHECK(safe_browsing_task_runner_->RunsTasksOnCurrentThread()); | 1021 DCHECK(safe_browsing_task_runner_->RunsTasksOnCurrentThread()); |
1017 if (chunks) | 1022 if (chunks) |
1018 GetDatabase()->InsertChunks(list_name, *chunks); | 1023 GetDatabase()->InsertChunks(list_name, *chunks); |
1019 BrowserThread::PostTask( | 1024 BrowserThread::PostTask( |
1020 BrowserThread::IO, FROM_HERE, | 1025 BrowserThread::IO, FROM_HERE, |
1021 base::Bind(&LocalSafeBrowsingDatabaseManager::OnAddChunksComplete, this, | 1026 base::BindOnce(&LocalSafeBrowsingDatabaseManager::OnAddChunksComplete, |
1022 callback)); | 1027 this, callback)); |
1023 } | 1028 } |
1024 | 1029 |
1025 void LocalSafeBrowsingDatabaseManager::DeleteDatabaseChunks( | 1030 void LocalSafeBrowsingDatabaseManager::DeleteDatabaseChunks( |
1026 std::unique_ptr<std::vector<SBChunkDelete>> chunk_deletes) { | 1031 std::unique_ptr<std::vector<SBChunkDelete>> chunk_deletes) { |
1027 DCHECK(safe_browsing_task_runner_->RunsTasksOnCurrentThread()); | 1032 DCHECK(safe_browsing_task_runner_->RunsTasksOnCurrentThread()); |
1028 if (chunk_deletes) | 1033 if (chunk_deletes) |
1029 GetDatabase()->DeleteChunks(*chunk_deletes); | 1034 GetDatabase()->DeleteChunks(*chunk_deletes); |
1030 } | 1035 } |
1031 | 1036 |
1032 void LocalSafeBrowsingDatabaseManager::DatabaseUpdateFinished( | 1037 void LocalSafeBrowsingDatabaseManager::DatabaseUpdateFinished( |
1033 bool update_succeeded) { | 1038 bool update_succeeded) { |
1034 DCHECK(safe_browsing_task_runner_->RunsTasksOnCurrentThread()); | 1039 DCHECK(safe_browsing_task_runner_->RunsTasksOnCurrentThread()); |
1035 GetDatabase()->UpdateFinished(update_succeeded); | 1040 GetDatabase()->UpdateFinished(update_succeeded); |
1036 DCHECK(database_update_in_progress_); | 1041 DCHECK(database_update_in_progress_); |
1037 database_update_in_progress_ = false; | 1042 database_update_in_progress_ = false; |
1038 BrowserThread::PostTask( | 1043 BrowserThread::PostTask( |
1039 BrowserThread::UI, FROM_HERE, | 1044 BrowserThread::UI, FROM_HERE, |
1040 base::Bind( | 1045 base::BindOnce( |
1041 &LocalSafeBrowsingDatabaseManager::NotifyDatabaseUpdateFinished, this, | 1046 &LocalSafeBrowsingDatabaseManager::NotifyDatabaseUpdateFinished, this, |
1042 update_succeeded)); | 1047 update_succeeded)); |
1043 } | 1048 } |
1044 | 1049 |
1045 void LocalSafeBrowsingDatabaseManager::OnCloseDatabase() { | 1050 void LocalSafeBrowsingDatabaseManager::OnCloseDatabase() { |
1046 DCHECK(safe_browsing_task_runner_->RunsTasksOnCurrentThread()); | 1051 DCHECK(safe_browsing_task_runner_->RunsTasksOnCurrentThread()); |
1047 DCHECK(closing_database_); | 1052 DCHECK(closing_database_); |
1048 | 1053 |
1049 // Because |closing_database_| is true, nothing on the IO thread will be | 1054 // Because |closing_database_| is true, nothing on the IO thread will be |
1050 // accessing the database, so it's safe to delete and then NULL the pointer. | 1055 // accessing the database, so it's safe to delete and then NULL the pointer. |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1241 new base::WeakPtrFactory<LocalSafeBrowsingDatabaseManager>(this)); | 1246 new base::WeakPtrFactory<LocalSafeBrowsingDatabaseManager>(this)); |
1242 SafeBrowsingCheck* check_ptr = check.get(); | 1247 SafeBrowsingCheck* check_ptr = check.get(); |
1243 checks_[check_ptr] = std::move(check); | 1248 checks_[check_ptr] = std::move(check); |
1244 | 1249 |
1245 base::PostTaskAndReplyWithResult( | 1250 base::PostTaskAndReplyWithResult( |
1246 safe_browsing_task_runner_.get(), FROM_HERE, task, | 1251 safe_browsing_task_runner_.get(), FROM_HERE, task, |
1247 base::Bind(&LocalSafeBrowsingDatabaseManager::OnAsyncCheckDone, | 1252 base::Bind(&LocalSafeBrowsingDatabaseManager::OnAsyncCheckDone, |
1248 check_ptr->weak_ptr_factory_->GetWeakPtr(), check_ptr)); | 1253 check_ptr->weak_ptr_factory_->GetWeakPtr(), check_ptr)); |
1249 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 1254 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
1250 FROM_HERE, | 1255 FROM_HERE, |
1251 base::Bind(&LocalSafeBrowsingDatabaseManager::TimeoutCallback, | 1256 base::BindOnce(&LocalSafeBrowsingDatabaseManager::TimeoutCallback, |
1252 check_ptr->weak_ptr_factory_->GetWeakPtr(), check_ptr), | 1257 check_ptr->weak_ptr_factory_->GetWeakPtr(), check_ptr), |
1253 check_timeout_); | 1258 check_timeout_); |
1254 } | 1259 } |
1255 | 1260 |
1256 bool LocalSafeBrowsingDatabaseManager::IsDownloadProtectionEnabled() const { | 1261 bool LocalSafeBrowsingDatabaseManager::IsDownloadProtectionEnabled() const { |
1257 return enable_download_protection_; | 1262 return enable_download_protection_; |
1258 } | 1263 } |
1259 | 1264 |
1260 } // namespace safe_browsing | 1265 } // namespace safe_browsing |
OLD | NEW |