Chromium Code Reviews| Index: net/filter/filter.cc |
| diff --git a/net/filter/filter.cc b/net/filter/filter.cc |
| index f9c3712cf4ac1c788583f1731882709f90f8906b..7b864d4de14c73850c9e0c423be99caa098e7d3e 100644 |
| --- a/net/filter/filter.cc |
| +++ b/net/filter/filter.cc |
| @@ -28,6 +28,7 @@ |
| #include "base/values.h" |
| #include "net/base/io_buffer.h" |
| #include "net/base/sdch_net_log_params.h" |
| +#include "net/filter/brotli_filter.h" |
| #include "net/filter/gzip_filter.h" |
| #include "net/filter/sdch_filter.h" |
| #include "net/url_request/url_request_context.h" |
| @@ -38,6 +39,7 @@ namespace net { |
| namespace { |
| // Filter types (using canonical lower case only): |
| +const char kBrotli[] = "br"; |
| const char kDeflate[] = "deflate"; |
| const char kGZip[] = "gzip"; |
| const char kXGZip[] = "x-gzip"; |
| @@ -62,6 +64,8 @@ void LogSdchProblem(const FilterContext& filter_context, |
| std::string FilterTypeAsString(Filter::FilterType type_id) { |
| switch (type_id) { |
| + case Filter::FILTER_TYPE_BROTLI: |
| + return "FILTER_TYPE_BROTLI"; |
| case Filter::FILTER_TYPE_DEFLATE: |
| return "FILTER_TYPE_DEFLATE"; |
| case Filter::FILTER_TYPE_GZIP: |
| @@ -184,7 +188,9 @@ bool Filter::FlushStreamBuffer(int stream_data_len) { |
| Filter::FilterType Filter::ConvertEncodingToType( |
| const std::string& filter_type) { |
| FilterType type_id; |
| - if (base::LowerCaseEqualsASCII(filter_type, kDeflate)) { |
| + if (base::LowerCaseEqualsASCII(filter_type, kBrotli)) { |
| + type_id = FILTER_TYPE_BROTLI; |
| + } else if (base::LowerCaseEqualsASCII(filter_type, kDeflate)) { |
| type_id = FILTER_TYPE_DEFLATE; |
| } else if (base::LowerCaseEqualsASCII(filter_type, kGZip) || |
| base::LowerCaseEqualsASCII(filter_type, kXGZip)) { |
| @@ -350,6 +356,16 @@ Filter::FilterStatus Filter::CopyOut(char* dest_buffer, int* dest_len) { |
| } |
| // static |
| +Filter* Filter::InitBrotliFilter(FilterType type_id, int buffer_size) { |
| + scoped_ptr<Filter> brotli_filter(CreateBrotliFilter(type_id)); |
| + if (!brotli_filter.get()) { |
| + return nullptr; |
| + } |
|
Ryan Sleevi
2015/12/28 19:30:53
no braces here, but a newline between 363 (well, 3
eustas
2015/12/29 13:15:39
Fixed.
|
| + brotli_filter->InitBuffer(buffer_size); |
| + return brotli_filter.release(); |
| +} |
| + |
| +// static |
| Filter* Filter::InitGZipFilter(FilterType type_id, int buffer_size) { |
| scoped_ptr<GZipFilter> gz_filter(new GZipFilter(type_id)); |
| gz_filter->InitBuffer(buffer_size); |
| @@ -372,6 +388,9 @@ Filter* Filter::PrependNewFilter(FilterType type_id, |
| Filter* filter_list) { |
| scoped_ptr<Filter> first_filter; // Soon to be start of chain. |
| switch (type_id) { |
| + case FILTER_TYPE_BROTLI: |
| + first_filter.reset(InitBrotliFilter(type_id, buffer_size)); |
| + break; |
| case FILTER_TYPE_GZIP_HELPING_SDCH: |
| case FILTER_TYPE_DEFLATE: |
| case FILTER_TYPE_GZIP: |