Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Side by Side Diff: net/base/filter_unittest.cc

Issue 62111: Give the filter setup more context so it can figure out whether it's download... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/base/filter.h" 5 #include "net/base/filter.h"
6 #include "net/base/filter_unittest.h" 6 #include "net/base/filter_unittest.h"
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 8
9 class FilterTest : public testing::Test { 9 class FilterTest : public testing::Test {
10 }; 10 };
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 encoding_types.push_back(Filter::FILTER_TYPE_GZIP); 70 encoding_types.push_back(Filter::FILTER_TYPE_GZIP);
71 filter_context.SetMimeType(kGzipMime3); 71 filter_context.SetMimeType(kGzipMime3);
72 Filter::FixupEncodingTypes(filter_context, &encoding_types); 72 Filter::FixupEncodingTypes(filter_context, &encoding_types);
73 EXPECT_TRUE(encoding_types.empty()); 73 EXPECT_TRUE(encoding_types.empty());
74 74
75 // Check to be sure it doesn't remove everything when it has such a type. 75 // Check to be sure it doesn't remove everything when it has such a type.
76 encoding_types.clear(); 76 encoding_types.clear();
77 encoding_types.push_back(Filter::FILTER_TYPE_SDCH); 77 encoding_types.push_back(Filter::FILTER_TYPE_SDCH);
78 filter_context.SetMimeType(kGzipMime1); 78 filter_context.SetMimeType(kGzipMime1);
79 Filter::FixupEncodingTypes(filter_context, &encoding_types); 79 Filter::FixupEncodingTypes(filter_context, &encoding_types);
80 EXPECT_EQ(1U, encoding_types.size()); 80 ASSERT_EQ(1U, encoding_types.size());
81 EXPECT_EQ(Filter::FILTER_TYPE_SDCH, encoding_types.front()); 81 EXPECT_EQ(Filter::FILTER_TYPE_SDCH, encoding_types.front());
82 82
83 // Check to be sure that gzip can survive with other mime types. 83 // Check to be sure that gzip can survive with other mime types.
84 encoding_types.clear(); 84 encoding_types.clear();
85 encoding_types.push_back(Filter::FILTER_TYPE_GZIP); 85 encoding_types.push_back(Filter::FILTER_TYPE_GZIP);
86 filter_context.SetMimeType("other/mime"); 86 filter_context.SetMimeType("other/mime");
87 Filter::FixupEncodingTypes(filter_context, &encoding_types); 87 Filter::FixupEncodingTypes(filter_context, &encoding_types);
88 EXPECT_EQ(1U, encoding_types.size()); 88 ASSERT_EQ(1U, encoding_types.size());
89 EXPECT_EQ(Filter::FILTER_TYPE_GZIP, encoding_types.front()); 89 EXPECT_EQ(Filter::FILTER_TYPE_GZIP, encoding_types.front());
90 } 90 }
91 91
92 TEST(FilterTest, SdchEncoding) { 92 TEST(FilterTest, SdchEncoding) {
93 // Handle content encodings including SDCH. 93 // Handle content encodings including SDCH.
94 const std::string kTextHtmlMime("text/html"); 94 const std::string kTextHtmlMime("text/html");
95 const int kInputBufferSize(100); 95 const int kInputBufferSize(100);
96 MockFilterContext filter_context(kInputBufferSize); 96 MockFilterContext filter_context(kInputBufferSize);
97 filter_context.SetSdchResponse(true); 97 filter_context.SetSdchResponse(true);
98 98
99 std::vector<Filter::FilterType> encoding_types; 99 std::vector<Filter::FilterType> encoding_types;
100 100
101 // Check for most common encoding, and verify it survives unchanged. 101 // Check for most common encoding, and verify it survives unchanged.
102 encoding_types.clear(); 102 encoding_types.clear();
103 encoding_types.push_back(Filter::FILTER_TYPE_SDCH); 103 encoding_types.push_back(Filter::FILTER_TYPE_SDCH);
104 encoding_types.push_back(Filter::FILTER_TYPE_GZIP); 104 encoding_types.push_back(Filter::FILTER_TYPE_GZIP);
105 filter_context.SetMimeType(kTextHtmlMime); 105 filter_context.SetMimeType(kTextHtmlMime);
106 Filter::FixupEncodingTypes(filter_context, &encoding_types); 106 Filter::FixupEncodingTypes(filter_context, &encoding_types);
107 EXPECT_EQ(2U, encoding_types.size()); 107 ASSERT_EQ(2U, encoding_types.size());
108 EXPECT_EQ(Filter::FILTER_TYPE_SDCH, encoding_types[0]); 108 EXPECT_EQ(Filter::FILTER_TYPE_SDCH, encoding_types[0]);
109 EXPECT_EQ(Filter::FILTER_TYPE_GZIP, encoding_types[1]); 109 EXPECT_EQ(Filter::FILTER_TYPE_GZIP, encoding_types[1]);
110 110
111 // Unchanged even with other mime types. 111 // Unchanged even with other mime types.
112 encoding_types.clear(); 112 encoding_types.clear();
113 encoding_types.push_back(Filter::FILTER_TYPE_SDCH); 113 encoding_types.push_back(Filter::FILTER_TYPE_SDCH);
114 encoding_types.push_back(Filter::FILTER_TYPE_GZIP); 114 encoding_types.push_back(Filter::FILTER_TYPE_GZIP);
115 filter_context.SetMimeType("other/type"); 115 filter_context.SetMimeType("other/type");
116 Filter::FixupEncodingTypes(filter_context, &encoding_types); 116 Filter::FixupEncodingTypes(filter_context, &encoding_types);
117 EXPECT_EQ(2U, encoding_types.size()); 117 ASSERT_EQ(2U, encoding_types.size());
118 EXPECT_EQ(Filter::FILTER_TYPE_SDCH, encoding_types[0]); 118 EXPECT_EQ(Filter::FILTER_TYPE_SDCH, encoding_types[0]);
119 EXPECT_EQ(Filter::FILTER_TYPE_GZIP, encoding_types[1]); 119 EXPECT_EQ(Filter::FILTER_TYPE_GZIP, encoding_types[1]);
120 120
121 // Solo SDCH is extended to include optional gunzip. 121 // Solo SDCH is extended to include optional gunzip.
122 encoding_types.clear(); 122 encoding_types.clear();
123 encoding_types.push_back(Filter::FILTER_TYPE_SDCH); 123 encoding_types.push_back(Filter::FILTER_TYPE_SDCH);
124 Filter::FixupEncodingTypes(filter_context, &encoding_types); 124 Filter::FixupEncodingTypes(filter_context, &encoding_types);
125 EXPECT_EQ(2U, encoding_types.size()); 125 ASSERT_EQ(2U, encoding_types.size());
126 EXPECT_EQ(Filter::FILTER_TYPE_SDCH, encoding_types[0]); 126 EXPECT_EQ(Filter::FILTER_TYPE_SDCH, encoding_types[0]);
127 EXPECT_EQ(Filter::FILTER_TYPE_GZIP_HELPING_SDCH, encoding_types[1]); 127 EXPECT_EQ(Filter::FILTER_TYPE_GZIP_HELPING_SDCH, encoding_types[1]);
128 } 128 }
129 129
130 TEST(FilterTest, MissingSdchEncoding) { 130 TEST(FilterTest, MissingSdchEncoding) {
131 // Handle interesting case where entire SDCH encoding assertion "got lost." 131 // Handle interesting case where entire SDCH encoding assertion "got lost."
132 const std::string kTextHtmlMime("text/html"); 132 const std::string kTextHtmlMime("text/html");
133 const int kInputBufferSize(100); 133 const int kInputBufferSize(100);
134 MockFilterContext filter_context(kInputBufferSize); 134 MockFilterContext filter_context(kInputBufferSize);
135 filter_context.SetSdchResponse(true); 135 filter_context.SetSdchResponse(true);
136 136
137 std::vector<Filter::FilterType> encoding_types; 137 std::vector<Filter::FilterType> encoding_types;
138 138
139 // Loss of encoding, but it was an SDCH response with html type. 139 // Loss of encoding, but it was an SDCH response with html type.
140 encoding_types.clear(); 140 encoding_types.clear();
141 filter_context.SetMimeType(kTextHtmlMime); 141 filter_context.SetMimeType(kTextHtmlMime);
142 Filter::FixupEncodingTypes(filter_context, &encoding_types); 142 Filter::FixupEncodingTypes(filter_context, &encoding_types);
143 EXPECT_EQ(2U, encoding_types.size()); 143 ASSERT_EQ(2U, encoding_types.size());
144 EXPECT_EQ(Filter::FILTER_TYPE_SDCH_POSSIBLE, encoding_types[0]); 144 EXPECT_EQ(Filter::FILTER_TYPE_SDCH_POSSIBLE, encoding_types[0]);
145 EXPECT_EQ(Filter::FILTER_TYPE_GZIP_HELPING_SDCH, encoding_types[1]); 145 EXPECT_EQ(Filter::FILTER_TYPE_GZIP_HELPING_SDCH, encoding_types[1]);
146 146
147 // Loss of encoding, but it was an SDCH response with a prefix that says it 147 // Loss of encoding, but it was an SDCH response with a prefix that says it
148 // was an html type. Note that it *should* be the case that a precise match 148 // was an html type. Note that it *should* be the case that a precise match
149 // with "text/html" we be collected by GetMimeType() and passed in, but we 149 // with "text/html" we be collected by GetMimeType() and passed in, but we
150 // coded the fixup defensively (scanning for a prefix of "text/html", so this 150 // coded the fixup defensively (scanning for a prefix of "text/html", so this
151 // is an example which could survive such confusion in the caller). 151 // is an example which could survive such confusion in the caller).
152 encoding_types.clear(); 152 encoding_types.clear();
153 filter_context.SetMimeType("text/html; charset=UTF-8"); 153 filter_context.SetMimeType("text/html; charset=UTF-8");
154 Filter::FixupEncodingTypes(filter_context, &encoding_types); 154 Filter::FixupEncodingTypes(filter_context, &encoding_types);
155 EXPECT_EQ(2U, encoding_types.size()); 155 ASSERT_EQ(2U, encoding_types.size());
156 EXPECT_EQ(Filter::FILTER_TYPE_SDCH_POSSIBLE, encoding_types[0]); 156 EXPECT_EQ(Filter::FILTER_TYPE_SDCH_POSSIBLE, encoding_types[0]);
157 EXPECT_EQ(Filter::FILTER_TYPE_GZIP_HELPING_SDCH, encoding_types[1]); 157 EXPECT_EQ(Filter::FILTER_TYPE_GZIP_HELPING_SDCH, encoding_types[1]);
158 158
159 // No encoding, but it was an SDCH response with non-html type. 159 // No encoding, but it was an SDCH response with non-html type.
160 encoding_types.clear(); 160 encoding_types.clear();
161 filter_context.SetMimeType("other/mime"); 161 filter_context.SetMimeType("other/mime");
162 Filter::FixupEncodingTypes(filter_context, &encoding_types); 162 Filter::FixupEncodingTypes(filter_context, &encoding_types);
163 EXPECT_EQ(2U, encoding_types.size()); 163 ASSERT_EQ(2U, encoding_types.size());
164 EXPECT_EQ(Filter::FILTER_TYPE_SDCH_POSSIBLE, encoding_types[0]); 164 EXPECT_EQ(Filter::FILTER_TYPE_SDCH_POSSIBLE, encoding_types[0]);
165 EXPECT_EQ(Filter::FILTER_TYPE_GZIP_HELPING_SDCH, encoding_types[1]); 165 EXPECT_EQ(Filter::FILTER_TYPE_GZIP_HELPING_SDCH, encoding_types[1]);
166 } 166 }
167
168 TEST(FilterTest, Svgz) {
169 const int kInputBufferSize(100);
170 MockFilterContext filter_context(kInputBufferSize);
171
172 // Check that svgz files are only decompressed when not downloading.
173 const std::string kSvgzMime("image/svg+xml");
174 const std::string kSvgzUrl("http://ignore.com/foo.svgz");
175 const std::string kSvgUrl("http://ignore.com/foo.svg");
176 std::vector<Filter::FilterType> encoding_types;
177
178 // Test svgz extension
179 encoding_types.clear();
180 encoding_types.push_back(Filter::FILTER_TYPE_GZIP);
181 filter_context.SetDownload(false);
182 filter_context.SetMimeType(kSvgzMime);
183 filter_context.SetURL(GURL(kSvgzUrl));
184 Filter::FixupEncodingTypes(filter_context, &encoding_types);
185 ASSERT_EQ(1U, encoding_types.size());
186 EXPECT_EQ(Filter::FILTER_TYPE_GZIP, encoding_types.front());
187
188 encoding_types.clear();
189 encoding_types.push_back(Filter::FILTER_TYPE_GZIP);
190 filter_context.SetDownload(true);
191 filter_context.SetMimeType(kSvgzMime);
192 filter_context.SetURL(GURL(kSvgzUrl));
193 Filter::FixupEncodingTypes(filter_context, &encoding_types);
194 EXPECT_TRUE(encoding_types.empty());
195
196 // Test svg extension
197 encoding_types.clear();
198 encoding_types.push_back(Filter::FILTER_TYPE_GZIP);
199 filter_context.SetDownload(false);
200 filter_context.SetMimeType(kSvgzMime);
201 filter_context.SetURL(GURL(kSvgUrl));
202 Filter::FixupEncodingTypes(filter_context, &encoding_types);
203 ASSERT_EQ(1U, encoding_types.size());
204 EXPECT_EQ(Filter::FILTER_TYPE_GZIP, encoding_types.front());
205
206 encoding_types.clear();
207 encoding_types.push_back(Filter::FILTER_TYPE_GZIP);
208 filter_context.SetDownload(true);
209 filter_context.SetMimeType(kSvgzMime);
210 filter_context.SetURL(GURL(kSvgUrl));
211 Filter::FixupEncodingTypes(filter_context, &encoding_types);
212 ASSERT_EQ(1U, encoding_types.size());
213 EXPECT_EQ(Filter::FILTER_TYPE_GZIP, encoding_types.front());
214 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698