| Index: net/base/filter_unittest.cc
|
| ===================================================================
|
| --- net/base/filter_unittest.cc (revision 0)
|
| +++ net/base/filter_unittest.cc (revision 0)
|
| @@ -0,0 +1,133 @@
|
| +// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "net/base/filter.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +class FilterTest : public testing::Test {
|
| +};
|
| +
|
| +TEST(FilterTest, ContentTypeId) {
|
| + // Check for basic translation of Content-Encoding, including case variations.
|
| + EXPECT_EQ(Filter::FILTER_TYPE_DEFLATE,
|
| + Filter::ConvertEncodingToType("deflate"));
|
| + EXPECT_EQ(Filter::FILTER_TYPE_DEFLATE,
|
| + Filter::ConvertEncodingToType("deflAte"));
|
| + EXPECT_EQ(Filter::FILTER_TYPE_GZIP,
|
| + Filter::ConvertEncodingToType("gzip"));
|
| + EXPECT_EQ(Filter::FILTER_TYPE_GZIP,
|
| + Filter::ConvertEncodingToType("GzIp"));
|
| + EXPECT_EQ(Filter::FILTER_TYPE_GZIP,
|
| + Filter::ConvertEncodingToType("x-gzip"));
|
| + EXPECT_EQ(Filter::FILTER_TYPE_GZIP,
|
| + Filter::ConvertEncodingToType("X-GzIp"));
|
| + EXPECT_EQ(Filter::FILTER_TYPE_BZIP2,
|
| + Filter::ConvertEncodingToType("bzip2"));
|
| + EXPECT_EQ(Filter::FILTER_TYPE_BZIP2,
|
| + Filter::ConvertEncodingToType("BZiP2"));
|
| + EXPECT_EQ(Filter::FILTER_TYPE_BZIP2,
|
| + Filter::ConvertEncodingToType("x-bzip2"));
|
| + EXPECT_EQ(Filter::FILTER_TYPE_BZIP2,
|
| + Filter::ConvertEncodingToType("X-BZiP2"));
|
| + EXPECT_EQ(Filter::FILTER_TYPE_SDCH,
|
| + Filter::ConvertEncodingToType("sdch"));
|
| + EXPECT_EQ(Filter::FILTER_TYPE_SDCH,
|
| + Filter::ConvertEncodingToType("sDcH"));
|
| + EXPECT_EQ(Filter::FILTER_TYPE_UNSUPPORTED,
|
| + Filter::ConvertEncodingToType("weird"));
|
| + EXPECT_EQ(Filter::FILTER_TYPE_UNSUPPORTED,
|
| + Filter::ConvertEncodingToType("strange"));
|
| +}
|
| +
|
| +// Check various fixups that modify content encoding lists.
|
| +TEST(FilterTest, ApacheGzip) {
|
| + // 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");
|
| + std::vector<Filter::FilterType> encoding_types;
|
| +
|
| + // 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);
|
| + EXPECT_TRUE(encoding_types.empty());
|
| +
|
| + encoding_types.clear();
|
| + encoding_types.push_back(Filter::FILTER_TYPE_GZIP);
|
| + Filter::FixupEncodingTypes(is_sdch_response, kGzipMime2, &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);
|
| + 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);
|
| + EXPECT_EQ(1, 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);
|
| + EXPECT_EQ(1, 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");
|
| + 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);
|
| + EXPECT_EQ(2, encoding_types.size());
|
| + EXPECT_EQ(Filter::FILTER_TYPE_SDCH, encoding_types[0]);
|
| + EXPECT_EQ(Filter::FILTER_TYPE_GZIP, encoding_types[1]);
|
| +
|
| + // Unchanged even with other mime types.
|
| + 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);
|
| + EXPECT_EQ(2, encoding_types.size());
|
| + EXPECT_EQ(Filter::FILTER_TYPE_SDCH, encoding_types[0]);
|
| + EXPECT_EQ(Filter::FILTER_TYPE_GZIP, encoding_types[1]);
|
| +
|
| + // 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);
|
| + EXPECT_EQ(2, encoding_types.size());
|
| + EXPECT_EQ(Filter::FILTER_TYPE_SDCH, encoding_types[0]);
|
| + EXPECT_EQ(Filter::FILTER_TYPE_GZIP_HELPING_SDCH, encoding_types[1]);
|
| +}
|
| +
|
| +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");
|
| + 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);
|
| + EXPECT_EQ(2, encoding_types.size());
|
| + EXPECT_EQ(Filter::FILTER_TYPE_SDCH, 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);
|
| + EXPECT_TRUE(encoding_types.empty());
|
| +}
|
|
|
| Property changes on: net\base\filter_unittest.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|