| 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 30e5beb801cd139b7fad3f114dcead603725e136..ae74bb5e4fb5570f6ae0d53f8bd131ec4057f638 100644
|
| --- a/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
|
| +++ b/chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
|
| @@ -249,8 +249,9 @@ IncidentReportingService::UploadContext::~UploadContext() {
|
| IncidentReportingService::IncidentReportingService(
|
| SafeBrowsingService* safe_browsing_service,
|
| const scoped_refptr<net::URLRequestContextGetter>& request_context_getter)
|
| - : database_manager_(safe_browsing_service ?
|
| - safe_browsing_service->database_manager() : NULL),
|
| + : database_manager_(safe_browsing_service
|
| + ? safe_browsing_service->database_manager()
|
| + : NULL),
|
| url_request_context_getter_(request_context_getter),
|
| collect_environment_data_fn_(&CollectEnvironmentData),
|
| environment_collection_task_runner_(
|
| @@ -268,6 +269,7 @@ IncidentReportingService::IncidentReportingService(
|
| content::BrowserThread::GetBlockingPool()
|
| ->GetTaskRunnerWithShutdownBehavior(
|
| base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)),
|
| + download_metadata_manager_(content::BrowserThread::GetBlockingPool()),
|
| receiver_weak_ptr_factory_(this),
|
| weak_ptr_factory_(this) {
|
| notification_registrar_.Add(this,
|
| @@ -276,6 +278,16 @@ IncidentReportingService::IncidentReportingService(
|
| notification_registrar_.Add(this,
|
| chrome::NOTIFICATION_PROFILE_DESTROYED,
|
| content::NotificationService::AllSources());
|
| + DownloadProtectionService* download_protection_service =
|
| + (safe_browsing_service ?
|
| + safe_browsing_service->download_protection_service() :
|
| + NULL);
|
| + if (download_protection_service) {
|
| + client_download_request_subscription_ =
|
| + download_protection_service->RegisterClientDownloadRequestCallback(
|
| + base::Bind(&IncidentReportingService::OnClientDownloadRequest,
|
| + base::Unretained(this)));
|
| + }
|
| }
|
|
|
| IncidentReportingService::~IncidentReportingService() {
|
| @@ -333,13 +345,19 @@ void IncidentReportingService::RegisterDelayedAnalysisCallback(
|
| delayed_analysis_callbacks_.Start();
|
| }
|
|
|
| +void IncidentReportingService::AddDownloadManager(
|
| + content::DownloadManager* download_manager) {
|
| + download_metadata_manager_.AddDownloadManager(download_manager);
|
| +}
|
| +
|
| IncidentReportingService::IncidentReportingService(
|
| SafeBrowsingService* safe_browsing_service,
|
| const scoped_refptr<net::URLRequestContextGetter>& request_context_getter,
|
| base::TimeDelta delayed_task_interval,
|
| const scoped_refptr<base::TaskRunner>& delayed_task_runner)
|
| - : database_manager_(safe_browsing_service ?
|
| - safe_browsing_service->database_manager() : NULL),
|
| + : database_manager_(safe_browsing_service
|
| + ? safe_browsing_service->database_manager()
|
| + : NULL),
|
| url_request_context_getter_(request_context_getter),
|
| collect_environment_data_fn_(&CollectEnvironmentData),
|
| environment_collection_task_runner_(
|
| @@ -353,6 +371,7 @@ IncidentReportingService::IncidentReportingService(
|
| this,
|
| &IncidentReportingService::OnCollationTimeout),
|
| delayed_analysis_callbacks_(delayed_task_interval, delayed_task_runner),
|
| + download_metadata_manager_(content::BrowserThread::GetBlockingPool()),
|
| receiver_weak_ptr_factory_(this),
|
| weak_ptr_factory_(this) {
|
| notification_registrar_.Add(this,
|
| @@ -427,7 +446,10 @@ void IncidentReportingService::OnProfileAdded(Profile* profile) {
|
|
|
| scoped_ptr<LastDownloadFinder> IncidentReportingService::CreateDownloadFinder(
|
| const LastDownloadFinder::LastDownloadCallback& callback) {
|
| - return LastDownloadFinder::Create(callback).Pass();
|
| + return LastDownloadFinder::Create(
|
| + base::Bind(&DownloadMetadataManager::GetDownloadDetails,
|
| + base::Unretained(&download_metadata_manager_)),
|
| + callback).Pass();
|
| }
|
|
|
| scoped_ptr<IncidentReportUploader> IncidentReportingService::StartReportUpload(
|
| @@ -945,6 +967,13 @@ void IncidentReportingService::OnReportUploadResult(
|
| // else retry?
|
| }
|
|
|
| +void IncidentReportingService::OnClientDownloadRequest(
|
| + content::DownloadItem* download,
|
| + const ClientDownloadRequest* request) {
|
| + if (!download->GetBrowserContext()->IsOffTheRecord())
|
| + download_metadata_manager_.SetRequest(download, request);
|
| +}
|
| +
|
| void IncidentReportingService::Observe(
|
| int type,
|
| const content::NotificationSource& source,
|
|
|