Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_bypass_stats.cc |
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_bypass_stats.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_bypass_stats.cc |
index bef98bf0bea26a075368a4912ea803f8f0d0669a..cd4ce095d929e1283304f3b4d3d5b75af809f799 100644 |
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_bypass_stats.cc |
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_bypass_stats.cc |
@@ -289,26 +289,37 @@ void DataReductionProxyBypassStats::RecordBypassedBytesHistograms( |
return; |
} |
+ std::string mime_type; |
+ request.GetMimeType(&mime_type); |
+ // MIME types are named by <media-type>/<subtype>. Check to see if the media |
+ // type is audio or video in order to record audio/video bypasses separately |
+ // for current bypasses and for the triggering requests of short bypasses. |
+ if ((last_bypass_type_ == BYPASS_EVENT_TYPE_CURRENT || |
+ (triggering_request_ && last_bypass_type_ == BYPASS_EVENT_TYPE_SHORT)) && |
+ (mime_type.compare(0, 6, "audio/") == 0 || |
+ mime_type.compare(0, 6, "video/") == 0)) { |
+ RecordBypassedBytes(last_bypass_type_, |
+ DataReductionProxyBypassStats::AUDIO_VIDEO, |
+ content_length); |
+ triggering_request_ = false; |
+ return; |
+ } |
+ |
+ // Report current bypasses of MIME type "application/octet-stream" separately. |
+ if (last_bypass_type_ == BYPASS_EVENT_TYPE_CURRENT && |
+ mime_type.find("application/octet-stream") != std::string::npos) { |
+ RecordBypassedBytes(last_bypass_type_, |
+ DataReductionProxyBypassStats::APPLICATION_OCTET_STREAM, |
+ content_length); |
+ return; |
+ } |
+ |
// Only record separate triggering request UMA for short, medium, and long |
// bypass events. |
if (triggering_request_ && |
(last_bypass_type_ == BYPASS_EVENT_TYPE_SHORT || |
last_bypass_type_ == BYPASS_EVENT_TYPE_MEDIUM || |
last_bypass_type_ == BYPASS_EVENT_TYPE_LONG)) { |
- std::string mime_type; |
- request.GetMimeType(&mime_type); |
- // MIME types are named by <media-type>/<subtype>. Check to see if the |
- // media type is audio or video. Only record when triggered by short bypass, |
- // there isn't an audio or video bucket for medium or long bypasses. |
- if (last_bypass_type_ == BYPASS_EVENT_TYPE_SHORT && |
- (mime_type.compare(0, 6, "audio/") == 0 || |
- mime_type.compare(0, 6, "video/") == 0)) { |
- RecordBypassedBytes(last_bypass_type_, |
- DataReductionProxyBypassStats::AUDIO_VIDEO, |
- content_length); |
- return; |
- } |
- |
RecordBypassedBytes(last_bypass_type_, |
DataReductionProxyBypassStats::TRIGGERING_REQUEST, |
content_length); |
@@ -415,10 +426,30 @@ void DataReductionProxyBypassStats::RecordBypassedBytes( |
content_length); |
break; |
case DataReductionProxyBypassStats::AUDIO_VIDEO: |
- if (last_bypass_type_ == BYPASS_EVENT_TYPE_SHORT) { |
- UMA_HISTOGRAM_COUNTS( |
- "DataReductionProxy.BypassedBytes.ShortAudioVideo", |
- content_length); |
+ switch (bypass_type) { |
+ case BYPASS_EVENT_TYPE_CURRENT: |
+ UMA_HISTOGRAM_COUNTS( |
+ "DataReductionProxy.BypassedBytes.CurrentAudioVideo", |
+ content_length); |
+ break; |
+ case BYPASS_EVENT_TYPE_SHORT: |
+ UMA_HISTOGRAM_COUNTS( |
+ "DataReductionProxy.BypassedBytes.ShortAudioVideo", |
+ content_length); |
+ break; |
+ default: |
+ NOTREACHED(); |
+ } |
+ break; |
+ case DataReductionProxyBypassStats::APPLICATION_OCTET_STREAM: |
+ switch (bypass_type) { |
+ case BYPASS_EVENT_TYPE_CURRENT: |
+ UMA_HISTOGRAM_COUNTS( |
+ "DataReductionProxy.BypassedBytes.CurrentApplicationOctetStream", |
+ content_length); |
+ break; |
+ default: |
+ NOTREACHED(); |
} |
break; |
case DataReductionProxyBypassStats::TRIGGERING_REQUEST: |