diff options
author | rdsmith <rdsmith@chromium.org> | 2014-11-18 12:38:31 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-11-18 20:38:54 +0000 |
commit | 10be0065bb90a24353dbc53d9af7fdf04121645a (patch) | |
tree | 100d39249d232bc5798e99ff6416a1244f26dcd6 /net/filter | |
parent | cc5d84f104bd4151b070ac2bc06c4129e4c7acab (diff) | |
download | chromium_src-10be0065bb90a24353dbc53d9af7fdf04121645a.zip chromium_src-10be0065bb90a24353dbc53d9af7fdf04121645a.tar.gz chromium_src-10be0065bb90a24353dbc53d9af7fdf04121645a.tar.bz2 |
Display final filter list for URLRequests in net-internals output.
BUG=None
R=bnc@chromium.org
R=mmenke@chromium.org
Review URL: https://codereview.chromium.org/732253003
Cr-Commit-Position: refs/heads/master@{#304663}
Diffstat (limited to 'net/filter')
-rw-r--r-- | net/filter/filter.cc | 36 | ||||
-rw-r--r-- | net/filter/filter.h | 9 | ||||
-rw-r--r-- | net/filter/filter_unittest.cc | 2 | ||||
-rw-r--r-- | net/filter/gzip_filter.cc | 5 | ||||
-rw-r--r-- | net/filter/gzip_filter.h | 2 | ||||
-rw-r--r-- | net/filter/sdch_filter.cc | 5 | ||||
-rw-r--r-- | net/filter/sdch_filter.h | 2 |
7 files changed, 49 insertions, 12 deletions
diff --git a/net/filter/filter.cc b/net/filter/filter.cc index c9a56bd..53d6583f 100644 --- a/net/filter/filter.cc +++ b/net/filter/filter.cc @@ -64,6 +64,24 @@ void LogSdchProblem(const FilterContext& filter_context, base::Bind(&NetLogSdchResourceProblemCallback, problem)); } +std::string FilterTypeAsString(Filter::FilterType type_id) { + switch (type_id) { + case Filter::FILTER_TYPE_DEFLATE: + return "FILTER_TYPE_DEFLATE"; + case Filter::FILTER_TYPE_GZIP: + return "FILTER_TYPE_GZIP"; + case Filter::FILTER_TYPE_GZIP_HELPING_SDCH: + return "FILTER_TYPE_GZIP_HELPING_SDCH"; + case Filter::FILTER_TYPE_SDCH: + return "FILTER_TYPE_SDCH"; + case Filter::FILTER_TYPE_SDCH_POSSIBLE : + return "FILTER_TYPE_SDCH_POSSIBLE "; + case Filter::FILTER_TYPE_UNSUPPORTED: + return "FILTER_TYPE_UNSUPPORTED"; + } + return ""; +} + } // namespace FilterContext::~FilterContext() { @@ -340,12 +358,22 @@ void Filter::FixupEncodingTypes( return; } -Filter::Filter() +std::string Filter::OrderedFilterList() const { + if (next_filter_) { + return FilterTypeAsString(type_id_) + "," + + next_filter_->OrderedFilterList(); + } else { + return FilterTypeAsString(type_id_); + } +} + +Filter::Filter(FilterType type_id) : stream_buffer_(NULL), stream_buffer_size_(0), next_stream_data_(NULL), stream_data_len_(0), - last_status_(FILTER_NEED_MORE_DATA) {} + last_status_(FILTER_NEED_MORE_DATA), + type_id_(type_id) {} Filter::FilterStatus Filter::CopyOut(char* dest_buffer, int* dest_len) { int out_len; @@ -370,7 +398,7 @@ Filter::FilterStatus Filter::CopyOut(char* dest_buffer, int* dest_len) { // static Filter* Filter::InitGZipFilter(FilterType type_id, int buffer_size) { - scoped_ptr<GZipFilter> gz_filter(new GZipFilter()); + scoped_ptr<GZipFilter> gz_filter(new GZipFilter(type_id)); gz_filter->InitBuffer(buffer_size); return gz_filter->InitDecoding(type_id) ? gz_filter.release() : NULL; } @@ -379,7 +407,7 @@ Filter* Filter::InitGZipFilter(FilterType type_id, int buffer_size) { Filter* Filter::InitSdchFilter(FilterType type_id, const FilterContext& filter_context, int buffer_size) { - scoped_ptr<SdchFilter> sdch_filter(new SdchFilter(filter_context)); + scoped_ptr<SdchFilter> sdch_filter(new SdchFilter(type_id, filter_context)); sdch_filter->InitBuffer(buffer_size); return sdch_filter->InitDecoding(type_id) ? sdch_filter.release() : NULL; } diff --git a/net/filter/filter.h b/net/filter/filter.h index 13489ef..cec8398a 100644 --- a/net/filter/filter.h +++ b/net/filter/filter.h @@ -225,12 +225,15 @@ class NET_EXPORT_PRIVATE Filter { static void FixupEncodingTypes(const FilterContext& filter_context, std::vector<FilterType>* encoding_types); + // Returns a string describing the FilterTypes implemented by this filter. + std::string OrderedFilterList() const; + protected: friend class GZipUnitTest; friend class SdchFilterChainingTest; FRIEND_TEST_ALL_PREFIXES(FilterTest, ThreeFilterChain); - Filter(); + explicit Filter(FilterType type_id); // Filters the data stored in stream_buffer_ and writes the output into the // dest_buffer passed in. @@ -294,10 +297,14 @@ class NET_EXPORT_PRIVATE Filter { // An optional filter to process output from this filter. scoped_ptr<Filter> next_filter_; + // Remember what status or local filter last returned so we can better handle // chained filters. FilterStatus last_status_; + // The filter type this filter was constructed from. + FilterType type_id_; + DISALLOW_COPY_AND_ASSIGN(Filter); }; diff --git a/net/filter/filter_unittest.cc b/net/filter/filter_unittest.cc index 506284d..5b2446c 100644 --- a/net/filter/filter_unittest.cc +++ b/net/filter/filter_unittest.cc @@ -13,7 +13,7 @@ namespace { class PassThroughFilter : public Filter { public: - PassThroughFilter() {} + PassThroughFilter() : Filter(FILTER_TYPE_UNSUPPORTED) {} FilterStatus ReadFilteredData(char* dest_buffer, int* dest_len) override { return CopyOut(dest_buffer, dest_len); diff --git a/net/filter/gzip_filter.cc b/net/filter/gzip_filter.cc index 36fe01c..6d15ee9 100644 --- a/net/filter/gzip_filter.cc +++ b/net/filter/gzip_filter.cc @@ -10,8 +10,9 @@ namespace net { -GZipFilter::GZipFilter() - : decoding_status_(DECODING_UNINITIALIZED), +GZipFilter::GZipFilter(FilterType type) + : Filter(type), + decoding_status_(DECODING_UNINITIALIZED), decoding_mode_(DECODE_MODE_UNKNOWN), gzip_header_status_(GZIP_CHECK_HEADER_IN_PROGRESS), zlib_header_added_(false), diff --git a/net/filter/gzip_filter.h b/net/filter/gzip_filter.h index 597c2e7..42dc320 100644 --- a/net/filter/gzip_filter.h +++ b/net/filter/gzip_filter.h @@ -73,7 +73,7 @@ class GZipFilter : public Filter { static const int kGZipFooterSize = 8; // Only to be instantiated by Filter::Factory. - GZipFilter(); + GZipFilter(FilterType type); friend class Filter; // Parses and verifies the GZip header. diff --git a/net/filter/sdch_filter.cc b/net/filter/sdch_filter.cc index d03ff7f..d1eb7f4 100644 --- a/net/filter/sdch_filter.cc +++ b/net/filter/sdch_filter.cc @@ -99,8 +99,9 @@ base::Value* NetLogSdchResponseCorruptionDetectionCallback( } // namespace -SdchFilter::SdchFilter(const FilterContext& filter_context) - : filter_context_(filter_context), +SdchFilter::SdchFilter(FilterType type, const FilterContext& filter_context) + : Filter(type), + filter_context_(filter_context), decoding_status_(DECODING_UNINITIALIZED), dictionary_hash_(), dictionary_hash_is_plausible_(false), diff --git a/net/filter/sdch_filter.h b/net/filter/sdch_filter.h index a1a6607..bc7788c 100644 --- a/net/filter/sdch_filter.h +++ b/net/filter/sdch_filter.h @@ -54,7 +54,7 @@ class NET_EXPORT_PRIVATE SdchFilter : public Filter { }; // Only to be instantiated by Filter::Factory. - explicit SdchFilter(const FilterContext& filter_context); + SdchFilter(FilterType type, const FilterContext& filter_context); friend class Filter; // Identify the suggested dictionary, and initialize underlying decompressor. |