Index: chrome/browser/ui/cocoa/download/download_danger_prompt_impl.cc |
diff --git a/chrome/browser/ui/cocoa/download/download_danger_prompt_impl.cc b/chrome/browser/ui/cocoa/download/download_danger_prompt_impl.cc |
index b06411f3755955d4aa94af025f80eda76f6aa989..cec27721ada6b8e745d4ecb207723e1eba669935 100644 |
--- a/chrome/browser/ui/cocoa/download/download_danger_prompt_impl.cc |
+++ b/chrome/browser/ui/cocoa/download/download_danger_prompt_impl.cc |
@@ -243,11 +243,15 @@ void DownloadDangerPromptImpl::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; |