Chromium Code Reviews| Index: chrome/browser/safe_browsing/safe_browsing_service.cc |
| diff --git a/chrome/browser/safe_browsing/safe_browsing_service.cc b/chrome/browser/safe_browsing/safe_browsing_service.cc |
| index 3071414c2277369dda797e2d03ec740e66339d7e..3893070f32c5208fd01be705bce9efc040237188 100644 |
| --- a/chrome/browser/safe_browsing/safe_browsing_service.cc |
| +++ b/chrome/browser/safe_browsing/safe_browsing_service.cc |
| @@ -299,6 +299,8 @@ SafeBrowsingService::SafeBrowsingService() |
| : services_delegate_(ServicesDelegate::Create(this)), |
| enabled_(false), |
| enabled_by_prefs_(false), |
| + maybe_enabled_extended_reporting_by_prefs_(false), |
| + maybe_enabled_scout_reporting_by_prefs_(false), |
| enabled_v4_only_(safe_browsing::V4FeatureList::IsV4OnlyEnabled()) {} |
| SafeBrowsingService::~SafeBrowsingService() { |
| @@ -671,9 +673,9 @@ void SafeBrowsingService::AddPrefService(PrefService* pref_service) { |
| std::unique_ptr<PrefChangeRegistrar> registrar = |
| base::MakeUnique<PrefChangeRegistrar>(); |
| registrar->Init(pref_service); |
| - registrar->Add(prefs::kSafeBrowsingEnabled, |
| - base::Bind(&SafeBrowsingService::RefreshState, |
| - base::Unretained(this))); |
| + registrar->Add( |
| + prefs::kSafeBrowsingEnabled, |
| + base::Bind(&SafeBrowsingService::RefreshState, base::Unretained(this))); |
| // ClientSideDetectionService will need to be refresh the models |
| // renderers have if extended-reporting changes. |
| registrar->Add( |
| @@ -721,24 +723,30 @@ SafeBrowsingService::RegisterShutdownCallback( |
| void SafeBrowsingService::RefreshState() { |
| DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| // Check if any profile requires the service to be active. |
| - bool enable = false; |
| + enabled_by_prefs_ = false; |
| + 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.
|
| + maybe_enabled_scout_reporting_by_prefs_ = false; |
| for (const auto& pref : prefs_map_) { |
| if (pref.first->GetBoolean(prefs::kSafeBrowsingEnabled)) { |
| - enable = true; |
| - break; |
| + enabled_by_prefs_ = true; |
| + if (pref.first->GetBoolean( |
| + prefs::kSafeBrowsingExtendedReportingEnabled)) { |
| + maybe_enabled_extended_reporting_by_prefs_ = true; |
| + } |
| + if (pref.first->GetBoolean(prefs::kSafeBrowsingScoutReportingEnabled)) { |
| + maybe_enabled_scout_reporting_by_prefs_ = true; |
| + } |
| } |
| } |
| - enabled_by_prefs_ = enable; |
| - |
| - if (enable) |
| + if (enabled_by_prefs_) |
| Start(); |
| else |
| Stop(false); |
| state_callback_list_.Notify(); |
| - services_delegate_->RefreshState(enable); |
| + services_delegate_->RefreshState(enabled_by_prefs_); |
| } |
| void SafeBrowsingService::SendSerializedDownloadReport( |