Index: content/browser/download/download_stats.cc |
diff --git a/content/browser/download/download_stats.cc b/content/browser/download/download_stats.cc |
index 708615419d511191b4d563bd5c0584f514c90476..ea49d2da425ca54d2bf1a2ebee2c2b918853b4ef 100644 |
--- a/content/browser/download/download_stats.cc |
+++ b/content/browser/download/download_stats.cc |
@@ -339,6 +339,10 @@ const base::FilePath::CharType* kDangerousFileTypes[] = { |
FILE_PATH_LITERAL(".udif"), |
}; |
+// The maximum size in KB for the file size metric, file size larger than this |
+// will be kept in overflow bucket. |
+const int64_t kMaxFileSizeKb = 4 * 1024 * 1024; /* 4GB. */ |
+ |
// Maps extensions to their matching UMA histogram int value. |
int GetDangerousFileType(const base::FilePath& file_path) { |
for (size_t i = 0; i < arraysize(kDangerousFileTypes); ++i) { |
@@ -796,6 +800,11 @@ void RecordParallelizableDownloadStats( |
size_t bytes_downloaded_without_parallel_streams, |
base::TimeDelta time_without_parallel_streams, |
bool uses_parallel_requests) { |
+ RecordParallelizableDownloadAverageStats( |
+ bytes_downloaded_with_parallel_streams + |
+ bytes_downloaded_without_parallel_streams, |
+ time_with_parallel_streams + time_without_parallel_streams); |
+ |
int64_t bandwidth_without_parallel_streams = 0; |
if (bytes_downloaded_without_parallel_streams > 0) { |
bandwidth_without_parallel_streams = CalculateBandwidthBytesPerSecond( |
@@ -863,6 +872,22 @@ void RecordParallelizableDownloadStats( |
} |
} |
+void RecordParallelizableDownloadAverageStats( |
+ int64_t bytes_downloaded, |
+ const base::TimeDelta& time_span) { |
+ if (time_span.is_zero() || bytes_downloaded <= 0) |
+ return; |
+ |
+ int64_t average_bandwidth = |
+ CalculateBandwidthBytesPerSecond(bytes_downloaded, time_span); |
+ int64_t file_size_kb = bytes_downloaded / 1024; |
+ RecordBandwidthMetric("Download.ParallelizableDownloadBandwidth", |
+ average_bandwidth); |
+ UMA_HISTOGRAM_LONG_TIMES("Download.Parallelizable.DownloadTime", time_span); |
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Download.Parallelizable.FileSize", file_size_kb, |
+ 1, kMaxFileSizeKb, 50); |
+} |
+ |
void RecordParallelDownloadCreationEvent(ParallelDownloadCreationEvent event) { |
UMA_HISTOGRAM_ENUMERATION("Download.ParallelDownload.CreationEvent", event, |
ParallelDownloadCreationEvent::COUNT); |