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..d859b2804acc79a223d6036a18adc9997698cd32 100644 |
--- a/content/browser/download/download_stats.cc |
+++ b/content/browser/download/download_stats.cc |
@@ -389,17 +389,20 @@ void RecordDownloadCompleted(const base::TimeTicks& start, |
void RecordDownloadInterrupted(DownloadInterruptReason reason, |
int64_t received, |
int64_t total, |
- bool uses_parallel_requests) { |
+ bool is_parallelizable, |
+ bool is_parallel_download_enabled) { |
RecordDownloadCount(INTERRUPTED_COUNT); |
- if (uses_parallel_requests) |
- RecordParallelDownloadCount(INTERRUPTED_COUNT); |
+ if (is_parallelizable) { |
+ RecordParallelizableDownloadCount(INTERRUPTED_COUNT, |
+ is_parallel_download_enabled); |
+ } |
std::vector<base::HistogramBase::Sample> samples = |
base::CustomHistogram::ArrayToCustomRanges( |
kAllInterruptReasonCodes, arraysize(kAllInterruptReasonCodes)); |
UMA_HISTOGRAM_CUSTOM_ENUMERATION("Download.InterruptedReason", reason, |
samples); |
- if (uses_parallel_requests) { |
+ if (is_parallel_download_enabled) { |
UMA_HISTOGRAM_CUSTOM_ENUMERATION( |
"Download.InterruptedReason.ParallelDownload", reason, samples); |
} |
@@ -417,7 +420,7 @@ void RecordDownloadInterrupted(DownloadInterruptReason reason, |
1, |
kMaxKb, |
kBuckets); |
- if (uses_parallel_requests) { |
+ if (is_parallel_download_enabled) { |
UMA_HISTOGRAM_CUSTOM_COUNTS( |
"Download.InterruptedReceivedSizeK.ParallelDownload", received_kb, 1, |
kMaxKb, kBuckets); |
@@ -429,7 +432,7 @@ void RecordDownloadInterrupted(DownloadInterruptReason reason, |
1, |
kMaxKb, |
kBuckets); |
- if (uses_parallel_requests) { |
+ if (is_parallel_download_enabled) { |
UMA_HISTOGRAM_CUSTOM_COUNTS( |
"Download.InterruptedTotalSizeK.ParallelDownload", total_kb, 1, |
kMaxKb, kBuckets); |
@@ -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, |
+ is_parallel_download_enabled); |
UMA_HISTOGRAM_CUSTOM_ENUMERATION( |
"Download.InterruptedAtEndReason.ParallelDownload", reason, |
samples); |
@@ -451,7 +455,7 @@ void RecordDownloadInterrupted(DownloadInterruptReason reason, |
1, |
kMaxKb, |
kBuckets); |
- if (uses_parallel_requests) { |
+ if (is_parallel_download_enabled) { |
UMA_HISTOGRAM_CUSTOM_COUNTS( |
"Download.InterruptedOverrunBytes.ParallelDownload", delta_bytes, 1, |
kMaxKb, kBuckets); |
@@ -462,7 +466,7 @@ void RecordDownloadInterrupted(DownloadInterruptReason reason, |
1, |
kMaxKb, |
kBuckets); |
- if (uses_parallel_requests) { |
+ if (is_parallel_download_enabled) { |
UMA_HISTOGRAM_CUSTOM_COUNTS( |
"Download.InterruptedUnderrunBytes.ParallelDownload", -delta_bytes, |
1, kMaxKb, kBuckets); |
@@ -767,9 +771,13 @@ void RecordFileBandwidth(size_t length, |
CalculateBandwidthBytesPerSecond(length, disk_write_time)); |
} |
-void RecordParallelDownloadCount(DownloadCountTypes type) { |
- UMA_HISTOGRAM_ENUMERATION("Download.Counts.ParallelDownload", type, |
- DOWNLOAD_COUNT_TYPES_LAST_ENTRY); |
+void RecordParallelizableDownloadCount(DownloadCountTypes type, |
+ bool is_parallel_download_enabled) { |
+ std::string histogram_name = is_parallel_download_enabled |
+ ? "Download.Counts.ParallelDownload" |
+ : "Download.Counts.ParallelizableDownload"; |
+ base::UmaHistogramEnumeration(histogram_name, type, |
+ DOWNLOAD_COUNT_TYPES_LAST_ENTRY); |
} |
void RecordParallelDownloadRequestCount(int request_count) { |
@@ -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) { |