diff options
Diffstat (limited to 'chrome/browser/download/chrome_download_manager_delegate.cc')
-rw-r--r-- | chrome/browser/download/chrome_download_manager_delegate.cc | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc index d524121..0d7bf68 100644 --- a/chrome/browser/download/chrome_download_manager_delegate.cc +++ b/chrome/browser/download/chrome_download_manager_delegate.cc @@ -156,8 +156,27 @@ bool ChromeDownloadManagerDelegate::ShouldOpenDownload(DownloadItem* item) { } bool ChromeDownloadManagerDelegate::ShouldCompleteDownload(DownloadItem* item) { - if (!IsExtensionDownload(item)) + if (!IsExtensionDownload(item)) { +#if defined(ENABLE_SAFE_BROWSING) + // Begin the safe browsing download protection check. + SafeBrowsingService* sb_service = + g_browser_process->safe_browsing_service(); + if (sb_service && sb_service->download_protection_service() && + profile_->GetPrefs()->GetBoolean(prefs::kSafeBrowsingEnabled)) { + using safe_browsing::DownloadProtectionService; + sb_service->download_protection_service()->CheckClientDownload( + DownloadProtectionService::DownloadInfo::FromDownloadItem(*item), + base::Bind( + &ChromeDownloadManagerDelegate::CheckClientDownloadDone, + this, item->id())); + // For now, we won't delay the download for this. + } +#else + // Assume safe. +#endif + return true; + } scoped_refptr<CrxInstaller> crx_installer = download_crx_util::OpenChromeExtension(profile_, *item); @@ -227,6 +246,12 @@ void ChromeDownloadManagerDelegate::UpdatePathForItemInPersistentStore( download_history_->UpdateDownloadPath(item, new_path); } +void ChromeDownloadManagerDelegate::CheckClientDownloadDone( + int32 download_id, + safe_browsing::DownloadProtectionService::DownloadCheckResult result) { + // TODO(bryner): notify the user based on this result +} + void ChromeDownloadManagerDelegate::RemoveItemFromPersistentStore( DownloadItem* item) { download_history_->RemoveEntry(item); |