From d3b510ca27134ea7ac6d1ab37e7123d9289f22a0 Mon Sep 17 00:00:00 2001 From: rdsmith Date: Thu, 4 Feb 2016 15:13:15 -0800 Subject: [PATCH] Log what filter causes a decoding error. BUG=584326 R=xunjieli@chromium.org Review URL: https://codereview.chromium.org/1670643003 Cr-Commit-Position: refs/heads/master@{#373651} --- net/filter/filter.cc | 2 ++ net/filter/filter.h | 7 ++++++- net/url_request/url_request_job.cc | 2 ++ tools/metrics/histograms/histograms.xml | 21 +++++++++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/net/filter/filter.cc b/net/filter/filter.cc index 466aa109fd70b7..502ce5bb5d7742 100644 --- a/net/filter/filter.cc +++ b/net/filter/filter.cc @@ -78,6 +78,8 @@ std::string FilterTypeAsString(Filter::FilterType type_id) { return "FILTER_TYPE_SDCH_POSSIBLE "; case Filter::FILTER_TYPE_UNSUPPORTED: return "FILTER_TYPE_UNSUPPORTED"; + case Filter::FILTER_TYPE_MAX: + return "FILTER_TYPE_MAX"; } return ""; } diff --git a/net/filter/filter.h b/net/filter/filter.h index e9df3dbc9dbc65..31d08d4980fc48 100644 --- a/net/filter/filter.h +++ b/net/filter/filter.h @@ -151,7 +151,8 @@ class NET_EXPORT_PRIVATE Filter { FILTER_ERROR }; - // Specifies type of filters that can be created. + // Specifies type of filters that can be created. Do not change the values + // of this enum; it is preserved in a histogram. enum FilterType { FILTER_TYPE_BROTLI, FILTER_TYPE_DEFLATE, @@ -160,6 +161,8 @@ class NET_EXPORT_PRIVATE Filter { FILTER_TYPE_SDCH, FILTER_TYPE_SDCH_POSSIBLE, // Sdch possible, but pass through allowed. FILTER_TYPE_UNSUPPORTED, + + FILTER_TYPE_MAX }; virtual ~Filter(); @@ -233,6 +236,8 @@ class NET_EXPORT_PRIVATE Filter { // Returns a string describing the FilterTypes implemented by this filter. std::string OrderedFilterList() const; + FilterType type() const { return type_id_; } + protected: friend class BrotliUnitTest; friend class GZipUnitTest; diff --git a/net/url_request/url_request_job.cc b/net/url_request/url_request_job.cc index 7ceff553d748a8..cbefc9e3f06845 100644 --- a/net/url_request/url_request_job.cc +++ b/net/url_request/url_request_job.cc @@ -749,6 +749,8 @@ Error URLRequestJob::ReadFilteredData(int* bytes_read) { << " Filter Error"; filter_needs_more_output_space_ = false; error = ERR_CONTENT_DECODING_FAILED; + UMA_HISTOGRAM_ENUMERATION("Net.ContentDecodingFailed.FilterType", + filter_->type(), Filter::FILTER_TYPE_MAX); break; } default: { diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 100e02afdb3a74..6b9b776376510c 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml @@ -23390,6 +23390,13 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries. + + rdsmith@chromium.org + + For each CONTENT_DECODING_FAILED, record the filter that failed. + + + @@ -72609,6 +72616,20 @@ To add a new entry, add it with any value and run test to compute valid value. + + + Specific content decoding filter. See net::Filter::FilterType for more + details + + + + + + + + + +