Index: chrome/browser/ui/views/download/download_danger_prompt_views.cc |
diff --git a/chrome/browser/ui/views/download/download_danger_prompt_views.cc b/chrome/browser/ui/views/download/download_danger_prompt_views.cc |
index 050d591035ada262e89f03b2544727ea9f2496be..cb3f6ceefe63571ecde13d3f360119d88c59f225 100644 |
--- a/chrome/browser/ui/views/download/download_danger_prompt_views.cc |
+++ b/chrome/browser/ui/views/download/download_danger_prompt_views.cc |
@@ -330,11 +330,15 @@ void DownloadDangerPromptViews::RunDone(Action action) { |
OnDone done = done_; |
done_.Reset(); |
if (download_ != NULL) { |
- const bool accept = action == DownloadDangerPrompt::ACCEPT; |
- RecordDownloadDangerPrompt(accept, *download_); |
- if (!download_->GetURL().is_empty() && |
- !download_->GetBrowserContext()->IsOffTheRecord()) { |
- SendSafeBrowsingDownloadRecoveryReport(accept, *download_); |
+ // If this download is no longer dangerous, or is already canceled or |
+ // completed, don't send any report. |
+ if (download_->IsDangerous() && !download_->IsDone()) { |
+ const bool accept = action == DownloadDangerPrompt::ACCEPT; |
+ RecordDownloadDangerPrompt(accept, *download_); |
+ if (!download_->GetURL().is_empty() && |
+ !download_->GetBrowserContext()->IsOffTheRecord()) { |
+ SendSafeBrowsingDownloadRecoveryReport(accept, *download_); |
+ } |
} |
download_->RemoveObserver(this); |
download_ = NULL; |