Chromium Code Reviews| Index: chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc |
| diff --git a/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc b/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc |
| index 5878376b182a80665758be80b75b39912bb9a254..edefa8f054f459eae80dd7ecff97fad2622818d5 100644 |
| --- a/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc |
| +++ b/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc |
| @@ -320,6 +320,11 @@ IncidentReportingService::IncidentReportingService( |
| content::BrowserThread::GetBlockingPool() |
| ->GetTaskRunnerWithShutdownBehavior( |
| base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)), |
| + extended_reporting_only_delayed_analysis_callbacks_( |
| + base::TimeDelta::FromMilliseconds(kDefaultCallbackIntervalMs), |
| + content::BrowserThread::GetBlockingPool() |
| + ->GetTaskRunnerWithShutdownBehavior( |
| + base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)), |
| download_metadata_manager_(content::BrowserThread::GetBlockingPool()), |
| receiver_weak_ptr_factory_(this), |
| weak_ptr_factory_(this) { |
| @@ -387,6 +392,26 @@ void IncidentReportingService::RegisterDelayedAnalysisCallback( |
| delayed_analysis_callbacks_.Start(); |
| } |
| +void IncidentReportingService:: |
| + RegisterExtendedReportingOnlyDelayedAnalysisCallback( |
| + const DelayedAnalysisCallback& callback) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| + // |callback| will be run on the blocking pool. The receiver will bounce back |
| + // to the origin thread if needed. |
| + extended_reporting_only_delayed_analysis_callbacks_.RegisterCallback( |
| + base::Bind(callback, base::Passed(GetIncidentReceiver()))); |
| + |
| + // Start running the callbacks if any profiles have opted into Safebrowsing |
| + // extended reporting. If none are now, running will commence if/when such a |
| + // profile is added. |
| + Profile* profile = FindEligibleProfile(); |
| + if (profile && |
| + profile->GetPrefs()->GetBoolean( |
| + prefs::kSafeBrowsingExtendedReportingEnabled)) |
|
veranika
2016/02/05 22:15:10
Wouldn't it be better to use IncidentReportingServ
proberge
2016/02/05 22:26:10
isEnabledForProfile can return true for a profile
|
| + extended_reporting_only_delayed_analysis_callbacks_.Start(); |
| +} |
| + |
| void IncidentReportingService::AddDownloadManager( |
| content::DownloadManager* download_manager) { |
| download_metadata_manager_.AddDownloadManager(download_manager); |
| @@ -413,6 +438,8 @@ IncidentReportingService::IncidentReportingService( |
| this, |
| &IncidentReportingService::OnCollationTimeout), |
| delayed_analysis_callbacks_(delayed_task_interval, delayed_task_runner), |
| + extended_reporting_only_delayed_analysis_callbacks_(delayed_task_interval, |
| + delayed_task_runner), |
| download_metadata_manager_(content::BrowserThread::GetBlockingPool()), |
| receiver_weak_ptr_factory_(this), |
| weak_ptr_factory_(this) { |
| @@ -472,6 +499,12 @@ void IncidentReportingService::OnProfileAdded(Profile* profile) { |
| // if they're already running. |
| delayed_analysis_callbacks_.Start(); |
| + if (profile && |
| + profile->GetPrefs()->GetBoolean( |
| + prefs::kSafeBrowsingExtendedReportingEnabled)) { |
|
veranika
2016/02/05 22:15:10
Same here.
proberge
2016/02/05 22:26:10
Acknowledged.
|
| + extended_reporting_only_delayed_analysis_callbacks_.Start(); |
| + } |
| + |
| // Start a new report if there are process-wide incidents, or incidents for |
| // this profile. |
| if ((GetProfileContext(nullptr) && |