Index: net/base/filter_unittest.cc |
=================================================================== |
--- net/base/filter_unittest.cc (revision 11636) |
+++ net/base/filter_unittest.cc (working copy) |
@@ -3,6 +3,7 @@ |
// found in the LICENSE file. |
#include "net/base/filter.h" |
+#include "net/base/filter_unittest.h" |
#include "testing/gtest/include/gtest/gtest.h" |
class FilterTest : public testing::Test { |
@@ -42,8 +43,11 @@ |
// Check various fixups that modify content encoding lists. |
TEST(FilterTest, ApacheGzip) { |
+ const int kInputBufferSize(100); |
+ MockFilterContext filter_context(kInputBufferSize); |
+ filter_context.SetSdchResponse(false); |
+ |
// Check that redundant gzip mime type removes only solo gzip encoding. |
- const bool is_sdch_response = false; |
const std::string kGzipMime1("application/x-gzip"); |
const std::string kGzipMime2("application/gzip"); |
const std::string kGzipMime3("application/x-gunzip"); |
@@ -52,45 +56,54 @@ |
// First show it removes the gzip, given any gzip style mime type. |
encoding_types.clear(); |
encoding_types.push_back(Filter::FILTER_TYPE_GZIP); |
- Filter::FixupEncodingTypes(is_sdch_response, kGzipMime1, &encoding_types); |
+ filter_context.SetMimeType(kGzipMime1); |
+ Filter::FixupEncodingTypes(filter_context, &encoding_types); |
EXPECT_TRUE(encoding_types.empty()); |
encoding_types.clear(); |
encoding_types.push_back(Filter::FILTER_TYPE_GZIP); |
- Filter::FixupEncodingTypes(is_sdch_response, kGzipMime2, &encoding_types); |
+ filter_context.SetMimeType(kGzipMime2); |
+ Filter::FixupEncodingTypes(filter_context, &encoding_types); |
EXPECT_TRUE(encoding_types.empty()); |
encoding_types.clear(); |
encoding_types.push_back(Filter::FILTER_TYPE_GZIP); |
- Filter::FixupEncodingTypes(is_sdch_response, kGzipMime3, &encoding_types); |
+ filter_context.SetMimeType(kGzipMime3); |
+ Filter::FixupEncodingTypes(filter_context, &encoding_types); |
EXPECT_TRUE(encoding_types.empty()); |
// Check to be sure it doesn't remove everything when it has such a type. |
encoding_types.clear(); |
encoding_types.push_back(Filter::FILTER_TYPE_SDCH); |
- Filter::FixupEncodingTypes(is_sdch_response, kGzipMime1, &encoding_types); |
+ filter_context.SetMimeType(kGzipMime1); |
+ Filter::FixupEncodingTypes(filter_context, &encoding_types); |
EXPECT_EQ(1U, encoding_types.size()); |
EXPECT_EQ(Filter::FILTER_TYPE_SDCH, encoding_types.front()); |
// Check to be sure that gzip can survive with other mime types. |
encoding_types.clear(); |
encoding_types.push_back(Filter::FILTER_TYPE_GZIP); |
- Filter::FixupEncodingTypes(is_sdch_response, "other/mime", &encoding_types); |
+ filter_context.SetMimeType("other/mime"); |
+ Filter::FixupEncodingTypes(filter_context, &encoding_types); |
EXPECT_EQ(1U, encoding_types.size()); |
EXPECT_EQ(Filter::FILTER_TYPE_GZIP, encoding_types.front()); |
} |
TEST(FilterTest, SdchEncoding) { |
// Handle content encodings including SDCH. |
- const bool is_sdch_response = true; |
const std::string kTextHtmlMime("text/html"); |
+ const int kInputBufferSize(100); |
+ MockFilterContext filter_context(kInputBufferSize); |
+ filter_context.SetSdchResponse(true); |
+ |
std::vector<Filter::FilterType> encoding_types; |
// Check for most common encoding, and verify it survives unchanged. |
encoding_types.clear(); |
encoding_types.push_back(Filter::FILTER_TYPE_SDCH); |
encoding_types.push_back(Filter::FILTER_TYPE_GZIP); |
- Filter::FixupEncodingTypes(is_sdch_response, kTextHtmlMime, &encoding_types); |
+ filter_context.SetMimeType(kTextHtmlMime); |
+ Filter::FixupEncodingTypes(filter_context, &encoding_types); |
EXPECT_EQ(2U, encoding_types.size()); |
EXPECT_EQ(Filter::FILTER_TYPE_SDCH, encoding_types[0]); |
EXPECT_EQ(Filter::FILTER_TYPE_GZIP, encoding_types[1]); |
@@ -99,7 +112,8 @@ |
encoding_types.clear(); |
encoding_types.push_back(Filter::FILTER_TYPE_SDCH); |
encoding_types.push_back(Filter::FILTER_TYPE_GZIP); |
- Filter::FixupEncodingTypes(is_sdch_response, "other/type", &encoding_types); |
+ filter_context.SetMimeType("other/type"); |
+ Filter::FixupEncodingTypes(filter_context, &encoding_types); |
EXPECT_EQ(2U, encoding_types.size()); |
EXPECT_EQ(Filter::FILTER_TYPE_SDCH, encoding_types[0]); |
EXPECT_EQ(Filter::FILTER_TYPE_GZIP, encoding_types[1]); |
@@ -107,7 +121,7 @@ |
// Solo SDCH is extended to include optional gunzip. |
encoding_types.clear(); |
encoding_types.push_back(Filter::FILTER_TYPE_SDCH); |
- Filter::FixupEncodingTypes(is_sdch_response, "other/type", &encoding_types); |
+ Filter::FixupEncodingTypes(filter_context, &encoding_types); |
EXPECT_EQ(2U, encoding_types.size()); |
EXPECT_EQ(Filter::FILTER_TYPE_SDCH, encoding_types[0]); |
EXPECT_EQ(Filter::FILTER_TYPE_GZIP_HELPING_SDCH, encoding_types[1]); |
@@ -115,13 +129,17 @@ |
TEST(FilterTest, MissingSdchEncoding) { |
// Handle interesting case where entire SDCH encoding assertion "got lost." |
- const bool is_sdch_response = true; |
const std::string kTextHtmlMime("text/html"); |
+ const int kInputBufferSize(100); |
+ MockFilterContext filter_context(kInputBufferSize); |
+ filter_context.SetSdchResponse(true); |
+ |
std::vector<Filter::FilterType> encoding_types; |
// Loss of encoding, but it was an SDCH response with html type. |
encoding_types.clear(); |
- Filter::FixupEncodingTypes(is_sdch_response, kTextHtmlMime, &encoding_types); |
+ filter_context.SetMimeType(kTextHtmlMime); |
+ Filter::FixupEncodingTypes(filter_context, &encoding_types); |
EXPECT_EQ(2U, encoding_types.size()); |
EXPECT_EQ(Filter::FILTER_TYPE_SDCH_POSSIBLE, encoding_types[0]); |
EXPECT_EQ(Filter::FILTER_TYPE_GZIP_HELPING_SDCH, encoding_types[1]); |
@@ -132,15 +150,16 @@ |
// coded the fixup defensively (scanning for a prefix of "text/html", so this |
// is an example which could survive such confusion in the caller). |
encoding_types.clear(); |
- Filter::FixupEncodingTypes(is_sdch_response, "text/html; charset=UTF-8", |
- &encoding_types); |
+ filter_context.SetMimeType("text/html; charset=UTF-8"); |
+ Filter::FixupEncodingTypes(filter_context, &encoding_types); |
EXPECT_EQ(2U, encoding_types.size()); |
EXPECT_EQ(Filter::FILTER_TYPE_SDCH_POSSIBLE, encoding_types[0]); |
EXPECT_EQ(Filter::FILTER_TYPE_GZIP_HELPING_SDCH, encoding_types[1]); |
// No encoding, but it was an SDCH response with non-html type. |
encoding_types.clear(); |
- Filter::FixupEncodingTypes(is_sdch_response, "other/mime", &encoding_types); |
+ filter_context.SetMimeType("other/mime"); |
+ Filter::FixupEncodingTypes(filter_context, &encoding_types); |
EXPECT_EQ(2U, encoding_types.size()); |
EXPECT_EQ(Filter::FILTER_TYPE_SDCH_POSSIBLE, encoding_types[0]); |
EXPECT_EQ(Filter::FILTER_TYPE_GZIP_HELPING_SDCH, encoding_types[1]); |