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..058c1905ccb0bb50dc845d7ebaeac8780ac69dd6 100644 |
--- a/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc |
+++ b/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc |
@@ -215,11 +215,11 @@ void IncidentReportingService::Receiver::AddIncidentForProcess( |
scoped_ptr<Incident> incident) { |
if (thread_runner_->BelongsToCurrentThread()) { |
AddIncidentOnMainThread(service_, nullptr, std::move(incident)); |
- } else if (!thread_runner_->PostTask( |
- FROM_HERE, |
- base::Bind(&IncidentReportingService::Receiver::AddIncidentOnMainThread, |
- service_, nullptr, base::Passed(&incident)))) { |
- LogIncidentDataType(DISCARDED, *incident); |
+ } else { |
+ thread_runner_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&IncidentReportingService::Receiver::AddIncidentOnMainThread, |
+ service_, nullptr, base::Passed(&incident))); |
} |
} |
@@ -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(); |
grt (UTC plus 2)
2016/02/11 15:54:59
nit: i think most code in this directory uses brac
proberge
2016/02/11 20:25:21
Done.
|
+} |
+ |
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 && |
grt (UTC plus 2)
2016/02/11 15:54:59
|profile| cannot be null here
proberge
2016/02/11 20:25:21
Done.
|
+ 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) && |