| 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))
|
| + 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)) {
|
| + 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) &&
|
|
|