| 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..db8ef0eb7ecc7f3b92f1e508bf8c983039349cbd 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(
|
| @@ -720,25 +722,32 @@ 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;
|
| + 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(
|
|
|