Chromium Code Reviews| Index: content/browser/download/download_stats.cc |
| diff --git a/content/browser/download/download_stats.cc b/content/browser/download/download_stats.cc |
| index 72135e29961bb7eec5104228af86ccddaef3d062..62f5f25d2914a57855fbd792a55413363e227932 100644 |
| --- a/content/browser/download/download_stats.cc |
| +++ b/content/browser/download/download_stats.cc |
| @@ -389,10 +389,13 @@ void RecordDownloadCompleted(const base::TimeTicks& start, |
| void RecordDownloadInterrupted(DownloadInterruptReason reason, |
| int64_t received, |
| int64_t total, |
| + bool is_parallelizable, |
| bool uses_parallel_requests) { |
| RecordDownloadCount(INTERRUPTED_COUNT); |
| - if (uses_parallel_requests) |
| - RecordParallelDownloadCount(INTERRUPTED_COUNT); |
| + if (is_parallelizable) { |
| + RecordParallelizableDownloadCount(INTERRUPTED_COUNT, |
| + uses_parallel_requests); |
| + } |
| std::vector<base::HistogramBase::Sample> samples = |
| base::CustomHistogram::ArrayToCustomRanges( |
| @@ -439,8 +442,9 @@ void RecordDownloadInterrupted(DownloadInterruptReason reason, |
| UMA_HISTOGRAM_CUSTOM_ENUMERATION("Download.InterruptedAtEndReason", |
| reason, samples); |
| - if (uses_parallel_requests) { |
| - RecordParallelDownloadCount(INTERRUPTED_AT_END_COUNT); |
| + if (is_parallelizable) { |
| + RecordParallelizableDownloadCount(INTERRUPTED_AT_END_COUNT, |
| + uses_parallel_requests); |
| UMA_HISTOGRAM_CUSTOM_ENUMERATION( |
| "Download.InterruptedAtEndReason.ParallelDownload", reason, |
| samples); |
| @@ -767,8 +771,12 @@ void RecordFileBandwidth(size_t length, |
| CalculateBandwidthBytesPerSecond(length, disk_write_time)); |
| } |
| -void RecordParallelDownloadCount(DownloadCountTypes type) { |
| - UMA_HISTOGRAM_ENUMERATION("Download.Counts.ParallelDownload", type, |
| +void RecordParallelizableDownloadCount(DownloadCountTypes type, |
| + bool uses_parallel_requests) { |
| + std::string histogram_name = uses_parallel_requests |
| + ? "Download.Counts.ParallelDownload" |
| + : "Download.Counts.ParallelizableDownload"; |
| + UMA_HISTOGRAM_ENUMERATION(histogram_name, type, |
|
Ilya Sherman
2017/04/19 00:29:41
UMA_HISTOGRAM macros require a runtime-constant na
qinmin
2017/04/19 22:42:33
Done.
|
| DOWNLOAD_COUNT_TYPES_LAST_ENTRY); |
| } |
| @@ -781,20 +789,40 @@ void RecordParallelDownloadAddStreamSuccess(bool success) { |
| UMA_HISTOGRAM_BOOLEAN("Download.ParallelDownloadAddStreamSuccess", success); |
| } |
| -void RecordParallelDownloadStats( |
| +void RecordParallelizableDownloadStats( |
| size_t bytes_downloaded_with_parallel_streams, |
| base::TimeDelta time_with_parallel_streams, |
| size_t bytes_downloaded_without_parallel_streams, |
| - base::TimeDelta time_without_parallel_streams) { |
| - int64_t bandwidth_without_parallel_streams = CalculateBandwidthBytesPerSecond( |
| - bytes_downloaded_without_parallel_streams, time_without_parallel_streams); |
| - RecordBandwidthMetric( |
| - "Download.BandwidthWithoutParallelStreamsBytesPerSecond", |
| - bandwidth_without_parallel_streams); |
| - RecordBandwidthMetric( |
| - "Download.BandwidthWithParallelStreamsBytesPerSecond", |
| - CalculateBandwidthBytesPerSecond(bytes_downloaded_with_parallel_streams, |
| - time_with_parallel_streams)); |
| + base::TimeDelta time_without_parallel_streams, |
| + bool uses_parallel_requests) { |
| + int64_t bandwidth_without_parallel_streams = 0; |
| + if (bytes_downloaded_without_parallel_streams > 0) { |
| + bandwidth_without_parallel_streams = CalculateBandwidthBytesPerSecond( |
| + bytes_downloaded_without_parallel_streams, |
| + time_without_parallel_streams); |
| + if (uses_parallel_requests) { |
| + RecordBandwidthMetric( |
| + "Download.ParallelizableDownloadBandwidth." |
| + "WithParallelRequestsSingleStream", |
| + bandwidth_without_parallel_streams); |
| + } else { |
| + RecordBandwidthMetric( |
| + "Download.ParallelizableDownloadBandwidth." |
| + "WithoutParallelRequests", |
| + bandwidth_without_parallel_streams); |
| + } |
| + } |
| + |
| + if (!uses_parallel_requests) |
| + return; |
| + |
| + if (bytes_downloaded_with_parallel_streams > 0) { |
| + RecordBandwidthMetric( |
| + "Download.ParallelizableDownloadBandwidth." |
| + "WithParallelRequestsMultipleStreams", |
| + CalculateBandwidthBytesPerSecond(bytes_downloaded_with_parallel_streams, |
| + time_with_parallel_streams)); |
| + } |
| base::TimeDelta time_saved; |
| if (bandwidth_without_parallel_streams > 0) { |