| Index: chrome/browser/safe_browsing/download_feedback_service.cc | 
| diff --git a/chrome/browser/safe_browsing/download_feedback_service.cc b/chrome/browser/safe_browsing/download_feedback_service.cc | 
| index 656c80402ce1ae8e200fe6a355bc33149169ce77..6e753a7762b37bea9b18d9da58ded909770bcbe9 100644 | 
| --- a/chrome/browser/safe_browsing/download_feedback_service.cc | 
| +++ b/chrome/browser/safe_browsing/download_feedback_service.cc | 
| @@ -91,19 +91,32 @@ DownloadFeedbackService::~DownloadFeedbackService() { | 
| // static | 
| void DownloadFeedbackService::MaybeStorePingsForDownload( | 
| DownloadProtectionService::DownloadCheckResult result, | 
| +    bool upload_requested, | 
| content::DownloadItem* download, | 
| const std::string& ping, | 
| const std::string& response) { | 
| +  // Is this result worthy of triggering an upload? | 
| +  bool upload_due_to_result = false; | 
| switch (result) { | 
| case DownloadProtectionService::UNKNOWN: | 
| case DownloadProtectionService::SAFE: | 
| case DownloadProtectionService::DANGEROUS: | 
| -      return; | 
| +      upload_due_to_result = false; | 
| +      break; | 
| case DownloadProtectionService::UNCOMMON: | 
| case DownloadProtectionService::DANGEROUS_HOST: | 
| case DownloadProtectionService::POTENTIALLY_UNWANTED: | 
| +      upload_due_to_result = true; | 
| break;  // Fall through. | 
| } | 
| + | 
| +  if (!upload_requested && !upload_due_to_result) | 
| +    return; | 
| + | 
| +  // Log if the result said no upload, but the server requested it anyway. | 
| +  UMA_HISTOGRAM_BOOLEAN("SBDownloadFeedback.UploadRequestedByServer", | 
| +                        !upload_due_to_result && upload_requested); | 
| + | 
| UMA_HISTOGRAM_COUNTS("SBDownloadFeedback.SizeEligibleKB", | 
| download->GetReceivedBytes() / 1024); | 
| if (download->GetReceivedBytes() > DownloadFeedback::kMaxUploadSize) | 
|  |