Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3786)

Unified Diff: chrome/browser/download/download_danger_prompt.cc

Issue 1436273002: Send safe browsing ThreatDetails to track download CTR when user tries to recover blocked downloads (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nit Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/download/download_danger_prompt.cc
diff --git a/chrome/browser/download/download_danger_prompt.cc b/chrome/browser/download/download_danger_prompt.cc
index f581e42b6408ba8d18ccab4cf71b672b937b6a56..b6f0a099bc9d04ba8c18e7026af4298a4a67d544 100644
--- a/chrome/browser/download/download_danger_prompt.cc
+++ b/chrome/browser/download/download_danger_prompt.cc
@@ -6,19 +6,24 @@
#include "base/bind.h"
#include "base/strings/utf_string_conversions.h"
+#include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/download/chrome_download_manager_delegate.h"
#include "chrome/browser/download/download_stats.h"
#include "chrome/browser/extensions/api/experience_sampling_private/experience_sampling.h"
+#include "chrome/browser/safe_browsing/safe_browsing_service.h"
#include "chrome/browser/ui/tab_modal_confirm_dialog.h"
#include "chrome/browser/ui/tab_modal_confirm_dialog_delegate.h"
+#include "chrome/common/safe_browsing/csd.pb.h"
#include "chrome/grit/chromium_strings.h"
#include "chrome/grit/generated_resources.h"
+#include "content/public/browser/browser_context.h"
#include "content/public/browser/download_danger_type.h"
#include "content/public/browser/download_item.h"
#include "ui/base/l10n/l10n_util.h"
using extensions::ExperienceSamplingEvent;
+using safe_browsing::ClientSafeBrowsingReportRequest;
namespace {
@@ -80,10 +85,8 @@ DownloadDangerPromptImpl::DownloadDangerPromptImpl(
// ExperienceSampling: A malicious download warning is being shown to the
// user, so we start a new SamplingEvent and track it.
sampling_event_.reset(new ExperienceSamplingEvent(
- ExperienceSamplingEvent::kDownloadDangerPrompt,
- download->GetURL(),
- download->GetReferrerUrl(),
- download->GetBrowserContext()));
+ ExperienceSamplingEvent::kDownloadDangerPrompt, download->GetURL(),
+ download->GetReferrerUrl(), download->GetBrowserContext()));
}
DownloadDangerPromptImpl::~DownloadDangerPromptImpl() {
@@ -94,8 +97,12 @@ DownloadDangerPromptImpl::~DownloadDangerPromptImpl() {
void DownloadDangerPromptImpl::InvokeActionForTesting(Action action) {
switch (action) {
- case ACCEPT: Accept(); break;
- case CANCEL: Cancel(); break;
+ case ACCEPT:
+ Accept();
+ break;
+ case CANCEL:
+ Cancel();
+ break;
case DISMISS:
RunDone(DISMISS);
Cancel();
@@ -140,7 +147,7 @@ base::string16 DownloadDangerPromptImpl::GetDialogMessage() {
IDS_PROMPT_DANGEROUS_DOWNLOAD,
download_->GetFileNameToReportUser().LossyDisplayName());
}
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL: // Fall through
+ case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL: // Fall through
case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_CONTENT:
case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_HOST: {
return l10n_util::GetStringFUTF16(
@@ -170,10 +177,10 @@ base::string16 DownloadDangerPromptImpl::GetDialogMessage() {
case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_CONTENT:
case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_HOST: {
return l10n_util::GetStringUTF16(
- IDS_PROMPT_CONFIRM_KEEP_MALICIOUS_DOWNLOAD_LEAD) +
- base::ASCIIToUTF16("\n\n") +
- l10n_util::GetStringUTF16(
- IDS_PROMPT_CONFIRM_KEEP_MALICIOUS_DOWNLOAD_BODY);
+ IDS_PROMPT_CONFIRM_KEEP_MALICIOUS_DOWNLOAD_LEAD) +
+ base::ASCIIToUTF16("\n\n") +
+ l10n_util::GetStringUTF16(
+ IDS_PROMPT_CONFIRM_KEEP_MALICIOUS_DOWNLOAD_BODY);
}
default: {
return l10n_util::GetStringUTF16(
@@ -240,6 +247,11 @@ void DownloadDangerPromptImpl::RunDone(Action action) {
OnDone done = done_;
done_.Reset();
if (download_ != NULL) {
+ if (!download_->GetURL().is_empty() &&
+ !download_->GetBrowserContext()->IsOffTheRecord()) {
+ SendSafeBrowsingDownloadRecoveryReport(
+ action == DownloadDangerPrompt::ACCEPT, download_->GetURL());
+ }
download_->RemoveObserver(this);
download_ = NULL;
}
@@ -256,10 +268,27 @@ DownloadDangerPrompt* DownloadDangerPrompt::Create(
content::WebContents* web_contents,
bool show_context,
const OnDone& done) {
- DownloadDangerPromptImpl* prompt = new DownloadDangerPromptImpl(
- item, web_contents, show_context, done);
+ DownloadDangerPromptImpl* prompt =
+ new DownloadDangerPromptImpl(item, web_contents, show_context, done);
// |prompt| will be deleted when the dialog is done.
TabModalConfirmDialog::Create(prompt, web_contents);
return prompt;
}
#endif
+
+void DownloadDangerPrompt::SendSafeBrowsingDownloadRecoveryReport(
+ bool did_proceed,
+ const GURL& url) {
+ safe_browsing::SafeBrowsingService* sb_service =
+ g_browser_process->safe_browsing_service();
+ ClientSafeBrowsingReportRequest report;
+ report.set_type(ClientSafeBrowsingReportRequest::MALICIOUS_DOWNLOAD_RECOVERY);
+ report.set_url(url.spec());
+ report.set_did_proceed(did_proceed);
+
+ std::string serialized_report;
+ if (report.SerializeToString(&serialized_report))
+ sb_service->SendDownloadRecoveryReport(serialized_report);
+ else
+ DLOG(ERROR) << "Unable to serialize the threat report.";
+}
« no previous file with comments | « chrome/browser/download/download_danger_prompt.h ('k') | chrome/browser/download/download_danger_prompt_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698