summaryrefslogtreecommitdiffstats
path: root/net/filter
diff options
context:
space:
mode:
authorrdsmith <rdsmith@chromium.org>2014-11-18 12:38:31 -0800
committerCommit bot <commit-bot@chromium.org>2014-11-18 20:38:54 +0000
commit10be0065bb90a24353dbc53d9af7fdf04121645a (patch)
tree100d39249d232bc5798e99ff6416a1244f26dcd6 /net/filter
parentcc5d84f104bd4151b070ac2bc06c4129e4c7acab (diff)
downloadchromium_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.cc36
-rw-r--r--net/filter/filter.h9
-rw-r--r--net/filter/filter_unittest.cc2
-rw-r--r--net/filter/gzip_filter.cc5
-rw-r--r--net/filter/gzip_filter.h2
-rw-r--r--net/filter/sdch_filter.cc5
-rw-r--r--net/filter/sdch_filter.h2
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.