Chromium Code Reviews| 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/safe_browsing_service.h" | 5 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 292 SafeBrowsingService* SafeBrowsingService::CreateSafeBrowsingService() { | 292 SafeBrowsingService* SafeBrowsingService::CreateSafeBrowsingService() { |
| 293 if (!factory_) | 293 if (!factory_) |
| 294 factory_ = g_safe_browsing_service_factory_impl.Pointer(); | 294 factory_ = g_safe_browsing_service_factory_impl.Pointer(); |
| 295 return factory_->CreateSafeBrowsingService(); | 295 return factory_->CreateSafeBrowsingService(); |
| 296 } | 296 } |
| 297 | 297 |
| 298 SafeBrowsingService::SafeBrowsingService() | 298 SafeBrowsingService::SafeBrowsingService() |
| 299 : services_delegate_(ServicesDelegate::Create(this)), | 299 : services_delegate_(ServicesDelegate::Create(this)), |
| 300 enabled_(false), | 300 enabled_(false), |
| 301 enabled_by_prefs_(false), | 301 enabled_by_prefs_(false), |
| 302 maybe_enabled_extended_reporting_by_prefs_(false), | |
| 303 maybe_enabled_scout_reporting_by_prefs_(false), | |
| 302 enabled_v4_only_(safe_browsing::V4FeatureList::IsV4OnlyEnabled()) {} | 304 enabled_v4_only_(safe_browsing::V4FeatureList::IsV4OnlyEnabled()) {} |
| 303 | 305 |
| 304 SafeBrowsingService::~SafeBrowsingService() { | 306 SafeBrowsingService::~SafeBrowsingService() { |
| 305 // We should have already been shut down. If we're still enabled, then the | 307 // We should have already been shut down. If we're still enabled, then the |
| 306 // database isn't going to be closed properly, which could lead to corruption. | 308 // database isn't going to be closed properly, which could lead to corruption. |
| 307 DCHECK(!enabled_); | 309 DCHECK(!enabled_); |
| 308 } | 310 } |
| 309 | 311 |
| 310 void SafeBrowsingService::Initialize() { | 312 void SafeBrowsingService::Initialize() { |
| 311 // Ensure FileTypePolicies's Singleton is instantiated during startup. | 313 // Ensure FileTypePolicies's Singleton is instantiated during startup. |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 664 default: | 666 default: |
| 665 NOTREACHED(); | 667 NOTREACHED(); |
| 666 } | 668 } |
| 667 } | 669 } |
| 668 | 670 |
| 669 void SafeBrowsingService::AddPrefService(PrefService* pref_service) { | 671 void SafeBrowsingService::AddPrefService(PrefService* pref_service) { |
| 670 DCHECK(prefs_map_.find(pref_service) == prefs_map_.end()); | 672 DCHECK(prefs_map_.find(pref_service) == prefs_map_.end()); |
| 671 std::unique_ptr<PrefChangeRegistrar> registrar = | 673 std::unique_ptr<PrefChangeRegistrar> registrar = |
| 672 base::MakeUnique<PrefChangeRegistrar>(); | 674 base::MakeUnique<PrefChangeRegistrar>(); |
| 673 registrar->Init(pref_service); | 675 registrar->Init(pref_service); |
| 674 registrar->Add(prefs::kSafeBrowsingEnabled, | 676 registrar->Add( |
| 675 base::Bind(&SafeBrowsingService::RefreshState, | 677 prefs::kSafeBrowsingEnabled, |
| 676 base::Unretained(this))); | 678 base::Bind(&SafeBrowsingService::RefreshState, base::Unretained(this))); |
| 677 // ClientSideDetectionService will need to be refresh the models | 679 // ClientSideDetectionService will need to be refresh the models |
| 678 // renderers have if extended-reporting changes. | 680 // renderers have if extended-reporting changes. |
| 679 registrar->Add( | 681 registrar->Add( |
| 680 prefs::kSafeBrowsingExtendedReportingEnabled, | 682 prefs::kSafeBrowsingExtendedReportingEnabled, |
| 681 base::Bind(&SafeBrowsingService::RefreshState, base::Unretained(this))); | 683 base::Bind(&SafeBrowsingService::RefreshState, base::Unretained(this))); |
| 682 registrar->Add( | 684 registrar->Add( |
| 683 prefs::kSafeBrowsingScoutReportingEnabled, | 685 prefs::kSafeBrowsingScoutReportingEnabled, |
| 684 base::Bind(&SafeBrowsingService::RefreshState, base::Unretained(this))); | 686 base::Bind(&SafeBrowsingService::RefreshState, base::Unretained(this))); |
| 685 prefs_map_[pref_service] = std::move(registrar); | 687 prefs_map_[pref_service] = std::move(registrar); |
| 686 RefreshState(); | 688 RefreshState(); |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 714 std::unique_ptr<SafeBrowsingService::ShutdownSubscription> | 716 std::unique_ptr<SafeBrowsingService::ShutdownSubscription> |
| 715 SafeBrowsingService::RegisterShutdownCallback( | 717 SafeBrowsingService::RegisterShutdownCallback( |
| 716 const base::Callback<void(void)>& callback) { | 718 const base::Callback<void(void)>& callback) { |
| 717 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 719 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 718 return shutdown_callback_list_.Add(callback); | 720 return shutdown_callback_list_.Add(callback); |
| 719 } | 721 } |
| 720 | 722 |
| 721 void SafeBrowsingService::RefreshState() { | 723 void SafeBrowsingService::RefreshState() { |
| 722 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 724 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 723 // Check if any profile requires the service to be active. | 725 // Check if any profile requires the service to be active. |
| 724 bool enable = false; | 726 enabled_by_prefs_ = false; |
| 727 maybe_enabled_extended_reporting_by_prefs_ = false; | |
|
lpz
2017/01/25 16:24:47
have you considered storing one field with the Ext
vakh (use Gerrit instead)
2017/01/25 22:35:30
Done.
| |
| 728 maybe_enabled_scout_reporting_by_prefs_ = false; | |
| 725 for (const auto& pref : prefs_map_) { | 729 for (const auto& pref : prefs_map_) { |
| 726 if (pref.first->GetBoolean(prefs::kSafeBrowsingEnabled)) { | 730 if (pref.first->GetBoolean(prefs::kSafeBrowsingEnabled)) { |
| 727 enable = true; | 731 enabled_by_prefs_ = true; |
| 728 break; | 732 if (pref.first->GetBoolean( |
| 733 prefs::kSafeBrowsingExtendedReportingEnabled)) { | |
| 734 maybe_enabled_extended_reporting_by_prefs_ = true; | |
| 735 } | |
| 736 if (pref.first->GetBoolean(prefs::kSafeBrowsingScoutReportingEnabled)) { | |
| 737 maybe_enabled_scout_reporting_by_prefs_ = true; | |
| 738 } | |
| 729 } | 739 } |
| 730 } | 740 } |
| 731 | 741 |
| 732 enabled_by_prefs_ = enable; | 742 if (enabled_by_prefs_) |
| 733 | |
| 734 if (enable) | |
| 735 Start(); | 743 Start(); |
| 736 else | 744 else |
| 737 Stop(false); | 745 Stop(false); |
| 738 | 746 |
| 739 state_callback_list_.Notify(); | 747 state_callback_list_.Notify(); |
| 740 | 748 |
| 741 services_delegate_->RefreshState(enable); | 749 services_delegate_->RefreshState(enabled_by_prefs_); |
| 742 } | 750 } |
| 743 | 751 |
| 744 void SafeBrowsingService::SendSerializedDownloadReport( | 752 void SafeBrowsingService::SendSerializedDownloadReport( |
| 745 const std::string& report) { | 753 const std::string& report) { |
| 746 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 754 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 747 BrowserThread::PostTask( | 755 BrowserThread::PostTask( |
| 748 BrowserThread::IO, FROM_HERE, | 756 BrowserThread::IO, FROM_HERE, |
| 749 base::Bind(&SafeBrowsingService::OnSendSerializedDownloadReport, this, | 757 base::Bind(&SafeBrowsingService::OnSendSerializedDownloadReport, this, |
| 750 report)); | 758 report)); |
| 751 } | 759 } |
| 752 | 760 |
| 753 void SafeBrowsingService::OnSendSerializedDownloadReport( | 761 void SafeBrowsingService::OnSendSerializedDownloadReport( |
| 754 const std::string& report) { | 762 const std::string& report) { |
| 755 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 763 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 756 if (ping_manager()) | 764 if (ping_manager()) |
| 757 ping_manager()->ReportThreatDetails(report); | 765 ping_manager()->ReportThreatDetails(report); |
| 758 } | 766 } |
| 759 | 767 |
| 760 void SafeBrowsingService::ProcessResourceRequest( | 768 void SafeBrowsingService::ProcessResourceRequest( |
| 761 const ResourceRequestInfo& request) { | 769 const ResourceRequestInfo& request) { |
| 762 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 770 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 763 services_delegate_->ProcessResourceRequest(&request); | 771 services_delegate_->ProcessResourceRequest(&request); |
| 764 } | 772 } |
| 765 | 773 |
| 766 } // namespace safe_browsing | 774 } // namespace safe_browsing |
| OLD | NEW |