OLD | NEW |
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 // TODO(jar): Change file name to *_unittest.cc (with double "t'). | |
6 | |
7 #include <algorithm> | 5 #include <algorithm> |
8 #include <string> | 6 #include <string> |
9 #include <vector> | 7 #include <vector> |
10 | 8 |
11 #include "base/logging.h" | 9 #include "base/logging.h" |
12 #include "base/scoped_ptr.h" | 10 #include "base/scoped_ptr.h" |
13 #include "net/base/filter.h" | 11 #include "net/base/filter.h" |
14 #include "net/base/sdch_filter.h" | 12 #include "net/base/sdch_filter.h" |
15 #include "net/url_request/url_request_http_job.cc" | 13 #include "net/url_request/url_request_http_job.cc" |
16 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 dictionary.append("\n"); | 121 dictionary.append("\n"); |
124 } | 122 } |
125 dictionary.append("\n"); | 123 dictionary.append("\n"); |
126 dictionary.append(kTestVcdiffDictionary, sizeof(kTestVcdiffDictionary) - 1); | 124 dictionary.append(kTestVcdiffDictionary, sizeof(kTestVcdiffDictionary) - 1); |
127 return dictionary; | 125 return dictionary; |
128 } | 126 } |
129 | 127 |
130 //------------------------------------------------------------------------------ | 128 //------------------------------------------------------------------------------ |
131 | 129 |
132 TEST_F(SdchFilterTest, BasicBadDictionary) { | 130 TEST_F(SdchFilterTest, BasicBadDictionary) { |
133 std::vector<std::string> filters; | 131 std::vector<Filter::FilterType> filter_types; |
134 filters.push_back("sdch"); | 132 filter_types.push_back(Filter::FILTER_TYPE_SDCH); |
135 const int kInputBufferSize(30); | 133 const int kInputBufferSize(30); |
136 char output_buffer[20]; | 134 char output_buffer[20]; |
137 scoped_ptr<Filter> filter(Filter::Factory(filters, "missing-mime", | 135 scoped_ptr<Filter> filter(Filter::Factory(filter_types, kInputBufferSize)); |
138 kInputBufferSize)); | |
139 std::string url_string("http://ignore.com"); | 136 std::string url_string("http://ignore.com"); |
140 filter->SetURL(GURL(url_string)); | 137 filter->SetURL(GURL(url_string)); |
141 | 138 |
142 | 139 |
143 // With no input data, try to read output. | 140 // With no input data, try to read output. |
144 int output_bytes_or_buffer_size = sizeof(output_buffer); | 141 int output_bytes_or_buffer_size = sizeof(output_buffer); |
145 Filter::FilterStatus status = filter->ReadData(output_buffer, | 142 Filter::FilterStatus status = filter->ReadData(output_buffer, |
146 &output_bytes_or_buffer_size); | 143 &output_bytes_or_buffer_size); |
147 | 144 |
148 EXPECT_EQ(0, output_bytes_or_buffer_size); | 145 EXPECT_EQ(0, output_bytes_or_buffer_size); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 const std::string kSampleDomain = "sdchtest.com"; | 215 const std::string kSampleDomain = "sdchtest.com"; |
219 std::string dictionary(NewSdchDictionary(kSampleDomain)); | 216 std::string dictionary(NewSdchDictionary(kSampleDomain)); |
220 | 217 |
221 std::string url_string = "http://" + kSampleDomain; | 218 std::string url_string = "http://" + kSampleDomain; |
222 | 219 |
223 GURL url(url_string); | 220 GURL url(url_string); |
224 EXPECT_TRUE(sdch_manager_->AddSdchDictionary(dictionary, url)); | 221 EXPECT_TRUE(sdch_manager_->AddSdchDictionary(dictionary, url)); |
225 | 222 |
226 std::string compressed(NewSdchCompressedData(dictionary)); | 223 std::string compressed(NewSdchCompressedData(dictionary)); |
227 | 224 |
228 std::vector<std::string> filters; | 225 std::vector<Filter::FilterType> filter_types; |
229 filters.push_back("sdch"); | 226 filter_types.push_back(Filter::FILTER_TYPE_SDCH); |
230 | 227 |
231 // Decode with a large buffer (larger than test input, or compressed data). | 228 // Decode with a large buffer (larger than test input, or compressed data). |
232 const int kInputBufferSize(100); | 229 const int kInputBufferSize(100); |
233 scoped_ptr<Filter> filter(Filter::Factory(filters, "missing-mime", | 230 scoped_ptr<Filter> filter(Filter::Factory(filter_types, kInputBufferSize)); |
234 kInputBufferSize)); | |
235 filter->SetURL(url); | 231 filter->SetURL(url); |
236 | 232 |
237 size_t feed_block_size = 100; | 233 size_t feed_block_size = 100; |
238 size_t output_block_size = 100; | 234 size_t output_block_size = 100; |
239 std::string output; | 235 std::string output; |
240 EXPECT_TRUE(FilterTestData(compressed, feed_block_size, output_block_size, | 236 EXPECT_TRUE(FilterTestData(compressed, feed_block_size, output_block_size, |
241 filter.get(), &output)); | 237 filter.get(), &output)); |
242 EXPECT_EQ(output, expanded_); | 238 EXPECT_EQ(output, expanded_); |
243 | 239 |
244 // Decode with really small buffers (size 1) to check for edge effects. | 240 // Decode with really small buffers (size 1) to check for edge effects. |
245 filter.reset((Filter::Factory(filters, "missing-mime", kInputBufferSize))); | 241 filter.reset((Filter::Factory(filter_types, kInputBufferSize))); |
246 filter->SetURL(url); | 242 filter->SetURL(url); |
247 | 243 |
248 feed_block_size = 1; | 244 feed_block_size = 1; |
249 output_block_size = 1; | 245 output_block_size = 1; |
250 output.clear(); | 246 output.clear(); |
251 EXPECT_TRUE(FilterTestData(compressed, feed_block_size, output_block_size, | 247 EXPECT_TRUE(FilterTestData(compressed, feed_block_size, output_block_size, |
252 filter.get(), &output)); | 248 filter.get(), &output)); |
253 EXPECT_EQ(output, expanded_); | 249 EXPECT_EQ(output, expanded_); |
254 } | 250 } |
255 | 251 |
256 TEST_F(SdchFilterTest, CrossDomainDictionaryUse) { | 252 TEST_F(SdchFilterTest, CrossDomainDictionaryUse) { |
257 // Construct a valid SDCH dictionary from a VCDIFF dictionary. | 253 // Construct a valid SDCH dictionary from a VCDIFF dictionary. |
258 const std::string kSampleDomain = "sdchtest.com"; | 254 const std::string kSampleDomain = "sdchtest.com"; |
259 std::string dictionary(NewSdchDictionary(kSampleDomain)); | 255 std::string dictionary(NewSdchDictionary(kSampleDomain)); |
260 | 256 |
261 std::string url_string = "http://" + kSampleDomain; | 257 std::string url_string = "http://" + kSampleDomain; |
262 | 258 |
263 GURL url(url_string); | 259 GURL url(url_string); |
264 EXPECT_TRUE(sdch_manager_->AddSdchDictionary(dictionary, url)); | 260 EXPECT_TRUE(sdch_manager_->AddSdchDictionary(dictionary, url)); |
265 | 261 |
266 std::string compressed(NewSdchCompressedData(dictionary)); | 262 std::string compressed(NewSdchCompressedData(dictionary)); |
267 | 263 |
268 std::vector<std::string> filters; | 264 std::vector<Filter::FilterType> filter_types; |
269 filters.push_back("sdch"); | 265 filter_types.push_back(Filter::FILTER_TYPE_SDCH); |
270 const int kInputBufferSize(100); | 266 const int kInputBufferSize(100); |
271 | 267 |
272 // Decode with content arriving from the "wrong" domain. | 268 // Decode with content arriving from the "wrong" domain. |
273 // This tests CanSet() in the sdch_manager_-> | 269 // This tests CanSet() in the sdch_manager_-> |
274 scoped_ptr<Filter> filter((Filter::Factory(filters, "missing-mime", | 270 scoped_ptr<Filter> filter((Filter::Factory(filter_types, kInputBufferSize))); |
275 kInputBufferSize))); | |
276 GURL wrong_domain_url("http://www.wrongdomain.com"); | 271 GURL wrong_domain_url("http://www.wrongdomain.com"); |
277 filter->SetURL(wrong_domain_url); | 272 filter->SetURL(wrong_domain_url); |
278 | 273 |
279 size_t feed_block_size = 100; | 274 size_t feed_block_size = 100; |
280 size_t output_block_size = 100; | 275 size_t output_block_size = 100; |
281 std::string output; | 276 std::string output; |
282 EXPECT_FALSE(FilterTestData(compressed, feed_block_size, output_block_size, | 277 EXPECT_FALSE(FilterTestData(compressed, feed_block_size, output_block_size, |
283 filter.get(), &output)); | 278 filter.get(), &output)); |
284 EXPECT_EQ(output.size(), 0u); // No output written. | 279 EXPECT_EQ(output.size(), 0u); // No output written. |
285 | 280 |
(...skipping 14 matching lines...) Expand all Loading... |
300 EXPECT_TRUE(sdch_manager_->AddSdchDictionary(dictionary, url)); | 295 EXPECT_TRUE(sdch_manager_->AddSdchDictionary(dictionary, url)); |
301 | 296 |
302 // Create a dictionary with a path restriction, by prefixing dictionary. | 297 // Create a dictionary with a path restriction, by prefixing dictionary. |
303 const std::string path("/special_path/bin"); | 298 const std::string path("/special_path/bin"); |
304 std::string dictionary_with_path("Path: " + path + "\n"); | 299 std::string dictionary_with_path("Path: " + path + "\n"); |
305 dictionary_with_path.append(dictionary); | 300 dictionary_with_path.append(dictionary); |
306 EXPECT_TRUE(sdch_manager_->AddSdchDictionary(dictionary_with_path, url)); | 301 EXPECT_TRUE(sdch_manager_->AddSdchDictionary(dictionary_with_path, url)); |
307 | 302 |
308 std::string compressed_for_path(NewSdchCompressedData(dictionary_with_path)); | 303 std::string compressed_for_path(NewSdchCompressedData(dictionary_with_path)); |
309 | 304 |
310 std::vector<std::string> filters; | 305 std::vector<Filter::FilterType> filter_types; |
311 filters.push_back("sdch"); | 306 filter_types.push_back(Filter::FILTER_TYPE_SDCH); |
312 const int kInputBufferSize(100); | 307 const int kInputBufferSize(100); |
313 | 308 |
314 // Test decode the path data, arriving from a valid path. | 309 // Test decode the path data, arriving from a valid path. |
315 scoped_ptr<Filter> filter((Filter::Factory(filters, "missing-mime", | 310 scoped_ptr<Filter> filter((Filter::Factory(filter_types, kInputBufferSize))); |
316 kInputBufferSize))); | |
317 filter->SetURL(GURL(url_string + path)); | 311 filter->SetURL(GURL(url_string + path)); |
318 | 312 |
319 size_t feed_block_size = 100; | 313 size_t feed_block_size = 100; |
320 size_t output_block_size = 100; | 314 size_t output_block_size = 100; |
321 std::string output; | 315 std::string output; |
322 | 316 |
323 EXPECT_TRUE(FilterTestData(compressed_for_path, feed_block_size, | 317 EXPECT_TRUE(FilterTestData(compressed_for_path, feed_block_size, |
324 output_block_size, filter.get(), &output)); | 318 output_block_size, filter.get(), &output)); |
325 EXPECT_EQ(output, expanded_); | 319 EXPECT_EQ(output, expanded_); |
326 | 320 |
327 // Test decode the path data, arriving from a invalid path. | 321 // Test decode the path data, arriving from a invalid path. |
328 filter.reset((Filter::Factory(filters, "missing-mime", kInputBufferSize))); | 322 filter.reset((Filter::Factory(filter_types, kInputBufferSize))); |
329 filter->SetURL(GURL(url_string)); | 323 filter->SetURL(GURL(url_string)); |
330 | 324 |
331 feed_block_size = 100; | 325 feed_block_size = 100; |
332 output_block_size = 100; | 326 output_block_size = 100; |
333 output.clear(); | 327 output.clear(); |
334 EXPECT_FALSE(FilterTestData(compressed_for_path, feed_block_size, | 328 EXPECT_FALSE(FilterTestData(compressed_for_path, feed_block_size, |
335 output_block_size, filter.get(), &output)); | 329 output_block_size, filter.get(), &output)); |
336 EXPECT_EQ(output.size(), 0u); // No output written. | 330 EXPECT_EQ(output.size(), 0u); // No output written. |
337 | 331 |
338 EXPECT_FALSE(SdchManager::Global()->IsInSupportedDomain(GURL(url_string))); | 332 EXPECT_FALSE(SdchManager::Global()->IsInSupportedDomain(GURL(url_string))); |
(...skipping 15 matching lines...) Expand all Loading... |
354 // Create a dictionary with a port restriction, by prefixing old dictionary. | 348 // Create a dictionary with a port restriction, by prefixing old dictionary. |
355 const std::string port("502"); | 349 const std::string port("502"); |
356 std::string dictionary_with_port("Port: " + port + "\n"); | 350 std::string dictionary_with_port("Port: " + port + "\n"); |
357 dictionary_with_port.append("Port: 80\n"); // Add default port. | 351 dictionary_with_port.append("Port: 80\n"); // Add default port. |
358 dictionary_with_port.append(dictionary); | 352 dictionary_with_port.append(dictionary); |
359 EXPECT_TRUE(sdch_manager_->AddSdchDictionary(dictionary_with_port, | 353 EXPECT_TRUE(sdch_manager_->AddSdchDictionary(dictionary_with_port, |
360 GURL(url_string + ":" + port))); | 354 GURL(url_string + ":" + port))); |
361 | 355 |
362 std::string compressed_for_port(NewSdchCompressedData(dictionary_with_port)); | 356 std::string compressed_for_port(NewSdchCompressedData(dictionary_with_port)); |
363 | 357 |
364 std::vector<std::string> filters; | 358 std::vector<Filter::FilterType> filter_types; |
365 filters.push_back("sdch"); | 359 filter_types.push_back(Filter::FILTER_TYPE_SDCH); |
366 const int kInputBufferSize(100); | 360 const int kInputBufferSize(100); |
367 | 361 |
368 // Test decode the port data, arriving from a valid port. | 362 // Test decode the port data, arriving from a valid port. |
369 scoped_ptr<Filter> filter((Filter::Factory(filters, "missing-mime", | 363 scoped_ptr<Filter> filter((Filter::Factory(filter_types, kInputBufferSize))); |
370 kInputBufferSize))); | |
371 filter->SetURL(GURL(url_string + ":" + port)); | 364 filter->SetURL(GURL(url_string + ":" + port)); |
372 | 365 |
373 size_t feed_block_size = 100; | 366 size_t feed_block_size = 100; |
374 size_t output_block_size = 100; | 367 size_t output_block_size = 100; |
375 std::string output; | 368 std::string output; |
376 EXPECT_TRUE(FilterTestData(compressed_for_port, feed_block_size, | 369 EXPECT_TRUE(FilterTestData(compressed_for_port, feed_block_size, |
377 output_block_size, filter.get(), &output)); | 370 output_block_size, filter.get(), &output)); |
378 EXPECT_EQ(output, expanded_); | 371 EXPECT_EQ(output, expanded_); |
379 | 372 |
380 // Test decode the port data, arriving from a valid (default) port. | 373 // Test decode the port data, arriving from a valid (default) port. |
381 filter.reset((Filter::Factory(filters, "missing-mime", kInputBufferSize))); | 374 filter.reset((Filter::Factory(filter_types, kInputBufferSize))); |
382 filter->SetURL(GURL(url_string)); // Default port. | 375 filter->SetURL(GURL(url_string)); // Default port. |
383 | 376 |
384 feed_block_size = 100; | 377 feed_block_size = 100; |
385 output_block_size = 100; | 378 output_block_size = 100; |
386 output.clear(); | 379 output.clear(); |
387 EXPECT_TRUE(FilterTestData(compressed_for_port, feed_block_size, | 380 EXPECT_TRUE(FilterTestData(compressed_for_port, feed_block_size, |
388 output_block_size, filter.get(), &output)); | 381 output_block_size, filter.get(), &output)); |
389 EXPECT_EQ(output, expanded_); | 382 EXPECT_EQ(output, expanded_); |
390 | 383 |
391 // Test decode the port data, arriving from a invalid port. | 384 // Test decode the port data, arriving from a invalid port. |
392 filter.reset((Filter::Factory(filters, "missing-mime", kInputBufferSize))); | 385 filter.reset((Filter::Factory(filter_types, kInputBufferSize))); |
393 filter->SetURL(GURL(url_string + ":" + port + "1")); | 386 filter->SetURL(GURL(url_string + ":" + port + "1")); |
394 | 387 |
395 feed_block_size = 100; | 388 feed_block_size = 100; |
396 output_block_size = 100; | 389 output_block_size = 100; |
397 output.clear(); | 390 output.clear(); |
398 EXPECT_FALSE(FilterTestData(compressed_for_port, feed_block_size, | 391 EXPECT_FALSE(FilterTestData(compressed_for_port, feed_block_size, |
399 output_block_size, filter.get(), &output)); | 392 output_block_size, filter.get(), &output)); |
400 EXPECT_EQ(output.size(), 0u); // No output written. | 393 EXPECT_EQ(output.size(), 0u); // No output written. |
401 | 394 |
402 EXPECT_FALSE(SdchManager::Global()->IsInSupportedDomain(GURL(url_string))); | 395 EXPECT_FALSE(SdchManager::Global()->IsInSupportedDomain(GURL(url_string))); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
473 | 466 |
474 GURL url(url_string); | 467 GURL url(url_string); |
475 EXPECT_TRUE(sdch_manager_->AddSdchDictionary(dictionary, url)); | 468 EXPECT_TRUE(sdch_manager_->AddSdchDictionary(dictionary, url)); |
476 | 469 |
477 std::string sdch_compressed(NewSdchCompressedData(dictionary)); | 470 std::string sdch_compressed(NewSdchCompressedData(dictionary)); |
478 | 471 |
479 // Use Gzip to compress the sdch sdch_compressed data. | 472 // Use Gzip to compress the sdch sdch_compressed data. |
480 std::string gzip_compressed_sdch = gzip_compress(sdch_compressed); | 473 std::string gzip_compressed_sdch = gzip_compress(sdch_compressed); |
481 | 474 |
482 // Construct a chained filter. | 475 // Construct a chained filter. |
483 std::vector<std::string> filters; | 476 std::vector<Filter::FilterType> filter_types; |
484 filters.push_back("sdch"); | 477 filter_types.push_back(Filter::FILTER_TYPE_SDCH); |
485 filters.push_back("gzip"); | 478 filter_types.push_back(Filter::FILTER_TYPE_GZIP); |
486 | 479 |
487 // First try with a large buffer (larger than test input, or compressed data). | 480 // First try with a large buffer (larger than test input, or compressed data). |
488 const int kInputBufferSize(100); | 481 const int kInputBufferSize(100); |
489 scoped_ptr<Filter> filter(Filter::Factory(filters, "missing-mime", | 482 scoped_ptr<Filter> filter(Filter::Factory(filter_types, kInputBufferSize)); |
490 kInputBufferSize)); | |
491 filter->SetURL(url); | 483 filter->SetURL(url); |
492 | 484 |
493 // Verify that chained filter is waiting for data. | 485 // Verify that chained filter is waiting for data. |
494 char tiny_output_buffer[10]; | 486 char tiny_output_buffer[10]; |
495 int tiny_output_size = sizeof(tiny_output_buffer); | 487 int tiny_output_size = sizeof(tiny_output_buffer); |
496 EXPECT_EQ(Filter::FILTER_NEED_MORE_DATA, | 488 EXPECT_EQ(Filter::FILTER_NEED_MORE_DATA, |
497 filter->ReadData(tiny_output_buffer, &tiny_output_size)); | 489 filter->ReadData(tiny_output_buffer, &tiny_output_size)); |
498 | 490 |
499 size_t feed_block_size = 100; | 491 size_t feed_block_size = 100; |
500 size_t output_block_size = 100; | 492 size_t output_block_size = 100; |
501 std::string output; | 493 std::string output; |
502 EXPECT_TRUE(FilterTestData(gzip_compressed_sdch, feed_block_size, | 494 EXPECT_TRUE(FilterTestData(gzip_compressed_sdch, feed_block_size, |
503 output_block_size, filter.get(), &output)); | 495 output_block_size, filter.get(), &output)); |
504 EXPECT_EQ(output, expanded_); | 496 EXPECT_EQ(output, expanded_); |
505 | 497 |
506 // Next try with a tiny buffer to cover edge effects. | 498 // Next try with a tiny buffer to cover edge effects. |
507 filter.reset(Filter::Factory(filters, "missing-mime", kInputBufferSize)); | 499 filter.reset(Filter::Factory(filter_types, kInputBufferSize)); |
508 filter->SetURL(url); | 500 filter->SetURL(url); |
509 | 501 |
510 feed_block_size = 1; | 502 feed_block_size = 1; |
511 output_block_size = 1; | 503 output_block_size = 1; |
512 output.clear(); | 504 output.clear(); |
513 EXPECT_TRUE(FilterTestData(gzip_compressed_sdch, feed_block_size, | 505 EXPECT_TRUE(FilterTestData(gzip_compressed_sdch, feed_block_size, |
514 output_block_size, filter.get(), &output)); | 506 output_block_size, filter.get(), &output)); |
515 EXPECT_EQ(output, expanded_); | 507 EXPECT_EQ(output, expanded_); |
516 } | 508 } |
517 | 509 |
518 TEST_F(SdchFilterTest, DefaultGzipIfSdch) { | 510 TEST_F(SdchFilterTest, DefaultGzipIfSdch) { |
519 // Construct a valid SDCH dictionary from a VCDIFF dictionary. | 511 // Construct a valid SDCH dictionary from a VCDIFF dictionary. |
520 const std::string kSampleDomain = "sdchtest.com"; | 512 const std::string kSampleDomain = "sdchtest.com"; |
521 std::string dictionary(NewSdchDictionary(kSampleDomain)); | 513 std::string dictionary(NewSdchDictionary(kSampleDomain)); |
522 | 514 |
523 std::string url_string = "http://" + kSampleDomain; | 515 std::string url_string = "http://" + kSampleDomain; |
524 | 516 |
525 GURL url(url_string); | 517 GURL url(url_string); |
526 EXPECT_TRUE(sdch_manager_->AddSdchDictionary(dictionary, url)); | 518 EXPECT_TRUE(sdch_manager_->AddSdchDictionary(dictionary, url)); |
527 | 519 |
528 std::string sdch_compressed(NewSdchCompressedData(dictionary)); | 520 std::string sdch_compressed(NewSdchCompressedData(dictionary)); |
529 | 521 |
530 // Use Gzip to compress the sdch sdch_compressed data. | 522 // Use Gzip to compress the sdch sdch_compressed data. |
531 std::string gzip_compressed_sdch = gzip_compress(sdch_compressed); | 523 std::string gzip_compressed_sdch = gzip_compress(sdch_compressed); |
532 | 524 |
533 // Only claim to have sdch content, but really usethe gzipped sdch content. | 525 // Only claim to have sdch content, but really use the gzipped sdch content. |
534 // System should automatically add the missing (optional) gzip. | 526 // System should automatically add the missing (optional) gzip. |
535 std::vector<std::string> filters; | 527 std::vector<Filter::FilterType> filter_types; |
536 filters.push_back("sdch"); | 528 filter_types.push_back(Filter::FILTER_TYPE_SDCH); |
| 529 Filter::FixupEncodingTypes(true, "anything/mime", &filter_types); |
537 | 530 |
538 // First try with a large buffer (larger than test input, or compressed data). | 531 // First try with a large buffer (larger than test input, or compressed data). |
539 const int kInputBufferSize(100); | 532 const int kInputBufferSize(100); |
540 scoped_ptr<Filter> filter(Filter::Factory(filters, "missing-mime", | 533 scoped_ptr<Filter> filter(Filter::Factory(filter_types, kInputBufferSize)); |
541 kInputBufferSize)); | |
542 filter->SetURL(url); | 534 filter->SetURL(url); |
543 | 535 |
544 // Verify that chained filter is waiting for data. | 536 // Verify that chained filter is waiting for data. |
545 char tiny_output_buffer[10]; | 537 char tiny_output_buffer[10]; |
546 int tiny_output_size = sizeof(tiny_output_buffer); | 538 int tiny_output_size = sizeof(tiny_output_buffer); |
547 EXPECT_EQ(Filter::FILTER_NEED_MORE_DATA, | 539 EXPECT_EQ(Filter::FILTER_NEED_MORE_DATA, |
548 filter->ReadData(tiny_output_buffer, &tiny_output_size)); | 540 filter->ReadData(tiny_output_buffer, &tiny_output_size)); |
549 | 541 |
550 size_t feed_block_size = 100; | 542 size_t feed_block_size = 100; |
551 size_t output_block_size = 100; | 543 size_t output_block_size = 100; |
552 std::string output; | 544 std::string output; |
553 EXPECT_TRUE(FilterTestData(gzip_compressed_sdch, feed_block_size, | 545 EXPECT_TRUE(FilterTestData(gzip_compressed_sdch, feed_block_size, |
554 output_block_size, filter.get(), &output)); | 546 output_block_size, filter.get(), &output)); |
555 EXPECT_EQ(output, expanded_); | 547 EXPECT_EQ(output, expanded_); |
556 | 548 |
557 // Next try with a tiny buffer to cover edge effects. | 549 // Next try with a tiny buffer to cover edge effects. |
558 filter.reset(Filter::Factory(filters, "missing-mime", kInputBufferSize)); | 550 filter.reset(Filter::Factory(filter_types, kInputBufferSize)); |
559 filter->SetURL(url); | 551 filter->SetURL(url); |
560 | 552 |
561 feed_block_size = 1; | 553 feed_block_size = 1; |
562 output_block_size = 1; | 554 output_block_size = 1; |
563 output.clear(); | 555 output.clear(); |
564 EXPECT_TRUE(FilterTestData(gzip_compressed_sdch, feed_block_size, | 556 EXPECT_TRUE(FilterTestData(gzip_compressed_sdch, feed_block_size, |
565 output_block_size, filter.get(), &output)); | 557 output_block_size, filter.get(), &output)); |
566 EXPECT_EQ(output, expanded_); | 558 EXPECT_EQ(output, expanded_); |
567 } | 559 } |
568 | 560 |
(...skipping 13 matching lines...) Expand all Loading... |
582 GURL google_url("http://www.google.com"); | 574 GURL google_url("http://www.google.com"); |
583 | 575 |
584 SdchManager::BlacklistDomain(test_url); | 576 SdchManager::BlacklistDomain(test_url); |
585 EXPECT_FALSE(SdchManager::Global()->IsInSupportedDomain(test_url)); | 577 EXPECT_FALSE(SdchManager::Global()->IsInSupportedDomain(test_url)); |
586 EXPECT_TRUE(SdchManager::Global()->IsInSupportedDomain(google_url)); | 578 EXPECT_TRUE(SdchManager::Global()->IsInSupportedDomain(google_url)); |
587 | 579 |
588 SdchManager::BlacklistDomain(google_url); | 580 SdchManager::BlacklistDomain(google_url); |
589 EXPECT_FALSE(SdchManager::Global()->IsInSupportedDomain(test_url)); | 581 EXPECT_FALSE(SdchManager::Global()->IsInSupportedDomain(test_url)); |
590 EXPECT_FALSE(SdchManager::Global()->IsInSupportedDomain(google_url)); | 582 EXPECT_FALSE(SdchManager::Global()->IsInSupportedDomain(google_url)); |
591 } | 583 } |
592 | |
593 | |
594 // TODO(jar): move this sort of test into filter_unittest.cc, or | |
595 // url_request_http_job_unittest.cc if that is more applicable after refactoring | |
596 // to use array of enums rather than array of strings to express content | |
597 // encodings. | |
598 TEST_F(SdchFilterTest, ContentTypeId) { | |
599 // Check for basic translation of Content-Encoding, including case variations. | |
600 EXPECT_EQ(Filter::FILTER_TYPE_DEFLATE, | |
601 Filter::ConvertEncodingToType("deflate", "nothing")); | |
602 EXPECT_EQ(Filter::FILTER_TYPE_DEFLATE, | |
603 Filter::ConvertEncodingToType("deflAte", "nothing")); | |
604 EXPECT_EQ(Filter::FILTER_TYPE_GZIP, | |
605 Filter::ConvertEncodingToType("gzip", "nothing")); | |
606 EXPECT_EQ(Filter::FILTER_TYPE_GZIP, | |
607 Filter::ConvertEncodingToType("GzIp", "nothing")); | |
608 EXPECT_EQ(Filter::FILTER_TYPE_GZIP, | |
609 Filter::ConvertEncodingToType("x-gzip", "nothing")); | |
610 EXPECT_EQ(Filter::FILTER_TYPE_GZIP, | |
611 Filter::ConvertEncodingToType("X-GzIp", "nothing")); | |
612 EXPECT_EQ(Filter::FILTER_TYPE_BZIP2, | |
613 Filter::ConvertEncodingToType("bzip2", "nothing")); | |
614 EXPECT_EQ(Filter::FILTER_TYPE_BZIP2, | |
615 Filter::ConvertEncodingToType("BZiP2", "nothing")); | |
616 EXPECT_EQ(Filter::FILTER_TYPE_BZIP2, | |
617 Filter::ConvertEncodingToType("x-bzip2", "nothing")); | |
618 EXPECT_EQ(Filter::FILTER_TYPE_BZIP2, | |
619 Filter::ConvertEncodingToType("X-BZiP2", "nothing")); | |
620 EXPECT_EQ(Filter::FILTER_TYPE_SDCH, | |
621 Filter::ConvertEncodingToType("sdch", "nothing")); | |
622 EXPECT_EQ(Filter::FILTER_TYPE_SDCH, | |
623 Filter::ConvertEncodingToType("sDcH", "nothing")); | |
624 EXPECT_EQ(Filter::FILTER_TYPE_UNSUPPORTED, | |
625 Filter::ConvertEncodingToType("weird", "nothing")); | |
626 EXPECT_EQ(Filter::FILTER_TYPE_UNSUPPORTED, | |
627 Filter::ConvertEncodingToType("strange", "nothing")); | |
628 | |
629 // Check to see that apache bug (marking things as gzipped because of their | |
630 // on-disk file type) is ignored. | |
631 EXPECT_EQ(Filter::FILTER_TYPE_UNSUPPORTED, | |
632 Filter::ConvertEncodingToType("gzip", "application/x-gzip")); | |
633 EXPECT_EQ(Filter::FILTER_TYPE_UNSUPPORTED, | |
634 Filter::ConvertEncodingToType("gzip", "application/gzip")); | |
635 EXPECT_EQ(Filter::FILTER_TYPE_UNSUPPORTED, | |
636 Filter::ConvertEncodingToType("gzip", "application/x-gunzip")); | |
637 | |
638 EXPECT_EQ(Filter::FILTER_TYPE_UNSUPPORTED, | |
639 Filter::ConvertEncodingToType("x-gzip", "application/x-gzip")); | |
640 EXPECT_EQ(Filter::FILTER_TYPE_UNSUPPORTED, | |
641 Filter::ConvertEncodingToType("x-gzip", "application/gzip")); | |
642 EXPECT_EQ(Filter::FILTER_TYPE_UNSUPPORTED, | |
643 Filter::ConvertEncodingToType("x-gzip", "application/x-gunzip")); | |
644 } | |
OLD | NEW |