OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <limits.h> | 5 #include <limits.h> |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 | 62 |
63 url_request_context->set_sdch_manager(sdch_manager_.get()); | 63 url_request_context->set_sdch_manager(sdch_manager_.get()); |
64 } | 64 } |
65 | 65 |
66 // Attempt to add a dictionary to the manager; returns whether or not | 66 // Attempt to add a dictionary to the manager; returns whether or not |
67 // the attempt succeeded. | 67 // the attempt succeeded. |
68 bool AddSdchDictionary(const std::string& dictionary_text, | 68 bool AddSdchDictionary(const std::string& dictionary_text, |
69 const GURL& gurl) { | 69 const GURL& gurl) { |
70 std::string list; | 70 std::string list; |
71 sdch_manager_->GetAvailDictionaryList(gurl, &list); | 71 sdch_manager_->GetAvailDictionaryList(gurl, &list); |
72 sdch_manager_->AddSdchDictionary(dictionary_text, gurl); | 72 sdch_manager_->AddSdchDictionary(dictionary_text, gurl, BoundNetLog()); |
73 std::string list2; | 73 std::string list2; |
74 sdch_manager_->GetAvailDictionaryList(gurl, &list2); | 74 sdch_manager_->GetAvailDictionaryList(gurl, &list2); |
75 | 75 |
76 // The list of hashes should change iff the addition succeeds. | 76 // The list of hashes should change iff the addition succeeds. |
77 return (list != list2); | 77 return (list != list2); |
78 } | 78 } |
79 | 79 |
80 MockFilterContext* filter_context() { return filter_context_.get(); } | 80 MockFilterContext* filter_context() { return filter_context_.get(); } |
81 | 81 |
82 std::string NewSdchCompressedData(const std::string dictionary) { | 82 std::string NewSdchCompressedData(const std::string dictionary) { |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 dictionary_hash_postfix.size()); | 405 dictionary_hash_postfix.size()); |
406 filter->FlushStreamBuffer(dictionary_hash_postfix.size()); | 406 filter->FlushStreamBuffer(dictionary_hash_postfix.size()); |
407 | 407 |
408 // With a non-existant dictionary specifier, try to read output. | 408 // With a non-existant dictionary specifier, try to read output. |
409 output_bytes_or_buffer_size = sizeof(output_buffer); | 409 output_bytes_or_buffer_size = sizeof(output_buffer); |
410 status = filter->ReadData(output_buffer, &output_bytes_or_buffer_size); | 410 status = filter->ReadData(output_buffer, &output_bytes_or_buffer_size); |
411 | 411 |
412 EXPECT_EQ(0, output_bytes_or_buffer_size); | 412 EXPECT_EQ(0, output_bytes_or_buffer_size); |
413 EXPECT_EQ(Filter::FILTER_ERROR, status); | 413 EXPECT_EQ(Filter::FILTER_ERROR, status); |
414 | 414 |
415 EXPECT_FALSE(sdch_manager_->IsInSupportedDomain(GURL(url_string))); | 415 EXPECT_EQ(SdchManager::DOMAIN_BLACKLIST_INCLUDES_TARGET, |
| 416 sdch_manager_->IsInSupportedDomain(GURL(url_string))); |
416 sdch_manager_->ClearBlacklistings(); | 417 sdch_manager_->ClearBlacklistings(); |
417 EXPECT_TRUE(sdch_manager_->IsInSupportedDomain(GURL(url_string))); | 418 EXPECT_EQ(SdchManager::PROBLEM_CODE_OK, |
| 419 sdch_manager_->IsInSupportedDomain(GURL(url_string))); |
418 } | 420 } |
419 | 421 |
420 TEST_F(SdchFilterTest, DictionaryAddOnce) { | 422 TEST_F(SdchFilterTest, DictionaryAddOnce) { |
421 // Construct a valid SDCH dictionary from a VCDIFF dictionary. | 423 // Construct a valid SDCH dictionary from a VCDIFF dictionary. |
422 const std::string kSampleDomain = "sdchtest.com"; | 424 const std::string kSampleDomain = "sdchtest.com"; |
423 std::string dictionary(NewSdchDictionary(kSampleDomain)); | 425 std::string dictionary(NewSdchDictionary(kSampleDomain)); |
424 | 426 |
425 std::string url_string = "http://" + kSampleDomain; | 427 std::string url_string = "http://" + kSampleDomain; |
426 GURL url(url_string); | 428 GURL url(url_string); |
427 EXPECT_TRUE(AddSdchDictionary(dictionary, url)); | 429 EXPECT_TRUE(AddSdchDictionary(dictionary, url)); |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
660 filter_context()->SetURL(wrong_domain_url); | 662 filter_context()->SetURL(wrong_domain_url); |
661 scoped_ptr<Filter> filter(Filter::Factory(filter_types, *filter_context())); | 663 scoped_ptr<Filter> filter(Filter::Factory(filter_types, *filter_context())); |
662 | 664 |
663 size_t feed_block_size = 100; | 665 size_t feed_block_size = 100; |
664 size_t output_block_size = 100; | 666 size_t output_block_size = 100; |
665 std::string output; | 667 std::string output; |
666 EXPECT_FALSE(FilterTestData(compressed, feed_block_size, output_block_size, | 668 EXPECT_FALSE(FilterTestData(compressed, feed_block_size, output_block_size, |
667 filter.get(), &output)); | 669 filter.get(), &output)); |
668 EXPECT_EQ(output.size(), 0u); // No output written. | 670 EXPECT_EQ(output.size(), 0u); // No output written. |
669 | 671 |
670 EXPECT_TRUE(sdch_manager_->IsInSupportedDomain(GURL(url_string))); | 672 EXPECT_EQ(SdchManager::PROBLEM_CODE_OK, |
671 EXPECT_FALSE(sdch_manager_->IsInSupportedDomain(wrong_domain_url)); | 673 sdch_manager_->IsInSupportedDomain(GURL(url_string))); |
| 674 EXPECT_EQ(SdchManager::DOMAIN_BLACKLIST_INCLUDES_TARGET, |
| 675 sdch_manager_->IsInSupportedDomain(wrong_domain_url)); |
672 sdch_manager_->ClearBlacklistings(); | 676 sdch_manager_->ClearBlacklistings(); |
673 EXPECT_TRUE(sdch_manager_->IsInSupportedDomain(wrong_domain_url)); | 677 EXPECT_EQ(SdchManager::PROBLEM_CODE_OK, |
| 678 sdch_manager_->IsInSupportedDomain(wrong_domain_url)); |
674 } | 679 } |
675 | 680 |
676 TEST_F(SdchFilterTest, DictionaryPathValidation) { | 681 TEST_F(SdchFilterTest, DictionaryPathValidation) { |
677 // Can't test path distinction between dictionaries if we aren't allowed | 682 // Can't test path distinction between dictionaries if we aren't allowed |
678 // more than one dictionary. | 683 // more than one dictionary. |
679 if (SdchManager::kMaxDictionaryCount <= 1) | 684 if (SdchManager::kMaxDictionaryCount <= 1) |
680 return; | 685 return; |
681 | 686 |
682 // Construct a valid SDCH dictionary from a VCDIFF dictionary. | 687 // Construct a valid SDCH dictionary from a VCDIFF dictionary. |
683 const std::string kSampleDomain = "sdchtest.com"; | 688 const std::string kSampleDomain = "sdchtest.com"; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
716 filter_context()->SetURL(GURL(url_string)); | 721 filter_context()->SetURL(GURL(url_string)); |
717 filter.reset(Filter::Factory(filter_types, *filter_context())); | 722 filter.reset(Filter::Factory(filter_types, *filter_context())); |
718 | 723 |
719 feed_block_size = 100; | 724 feed_block_size = 100; |
720 output_block_size = 100; | 725 output_block_size = 100; |
721 output.clear(); | 726 output.clear(); |
722 EXPECT_FALSE(FilterTestData(compressed_for_path, feed_block_size, | 727 EXPECT_FALSE(FilterTestData(compressed_for_path, feed_block_size, |
723 output_block_size, filter.get(), &output)); | 728 output_block_size, filter.get(), &output)); |
724 EXPECT_EQ(output.size(), 0u); // No output written. | 729 EXPECT_EQ(output.size(), 0u); // No output written. |
725 | 730 |
726 EXPECT_FALSE(sdch_manager_->IsInSupportedDomain(GURL(url_string))); | 731 EXPECT_EQ(SdchManager::DOMAIN_BLACKLIST_INCLUDES_TARGET, |
| 732 sdch_manager_->IsInSupportedDomain(GURL(url_string))); |
727 sdch_manager_->ClearBlacklistings(); | 733 sdch_manager_->ClearBlacklistings(); |
728 EXPECT_TRUE(sdch_manager_->IsInSupportedDomain(GURL(url_string))); | 734 EXPECT_EQ(SdchManager::PROBLEM_CODE_OK, |
| 735 sdch_manager_->IsInSupportedDomain(GURL(url_string))); |
729 } | 736 } |
730 | 737 |
731 TEST_F(SdchFilterTest, DictionaryPortValidation) { | 738 TEST_F(SdchFilterTest, DictionaryPortValidation) { |
732 // Can't test port distinction between dictionaries if we aren't allowed | 739 // Can't test port distinction between dictionaries if we aren't allowed |
733 // more than one dictionary. | 740 // more than one dictionary. |
734 if (SdchManager::kMaxDictionaryCount <= 1) | 741 if (SdchManager::kMaxDictionaryCount <= 1) |
735 return; | 742 return; |
736 | 743 |
737 // Construct a valid SDCH dictionary from a VCDIFF dictionary. | 744 // Construct a valid SDCH dictionary from a VCDIFF dictionary. |
738 const std::string kSampleDomain = "sdchtest.com"; | 745 const std::string kSampleDomain = "sdchtest.com"; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
782 filter_context()->SetURL(GURL(url_string + ":" + port + "1")); | 789 filter_context()->SetURL(GURL(url_string + ":" + port + "1")); |
783 filter.reset(Filter::Factory(filter_types, *filter_context())); | 790 filter.reset(Filter::Factory(filter_types, *filter_context())); |
784 | 791 |
785 feed_block_size = 100; | 792 feed_block_size = 100; |
786 output_block_size = 100; | 793 output_block_size = 100; |
787 output.clear(); | 794 output.clear(); |
788 EXPECT_FALSE(FilterTestData(compressed_for_port, feed_block_size, | 795 EXPECT_FALSE(FilterTestData(compressed_for_port, feed_block_size, |
789 output_block_size, filter.get(), &output)); | 796 output_block_size, filter.get(), &output)); |
790 EXPECT_EQ(output.size(), 0u); // No output written. | 797 EXPECT_EQ(output.size(), 0u); // No output written. |
791 | 798 |
792 EXPECT_FALSE(sdch_manager_->IsInSupportedDomain(GURL(url_string))); | 799 EXPECT_EQ(SdchManager::DOMAIN_BLACKLIST_INCLUDES_TARGET, |
| 800 sdch_manager_->IsInSupportedDomain(GURL(url_string))); |
793 sdch_manager_->ClearBlacklistings(); | 801 sdch_manager_->ClearBlacklistings(); |
794 EXPECT_TRUE(sdch_manager_->IsInSupportedDomain(GURL(url_string))); | 802 EXPECT_EQ(SdchManager::PROBLEM_CODE_OK, |
| 803 sdch_manager_->IsInSupportedDomain(GURL(url_string))); |
795 } | 804 } |
796 | 805 |
797 //------------------------------------------------------------------------------ | 806 //------------------------------------------------------------------------------ |
798 // Helper function to perform gzip compression of data. | 807 // Helper function to perform gzip compression of data. |
799 | 808 |
800 static std::string gzip_compress(const std::string &input) { | 809 static std::string gzip_compress(const std::string &input) { |
801 z_stream zlib_stream; | 810 z_stream zlib_stream; |
802 memset(&zlib_stream, 0, sizeof(zlib_stream)); | 811 memset(&zlib_stream, 0, sizeof(zlib_stream)); |
803 int code; | 812 int code; |
804 | 813 |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1170 | 1179 |
1171 feed_block_size = 1; | 1180 feed_block_size = 1; |
1172 output_block_size = 1; | 1181 output_block_size = 1; |
1173 output.clear(); | 1182 output.clear(); |
1174 EXPECT_TRUE(FilterTestData(double_gzip_compressed_sdch, feed_block_size, | 1183 EXPECT_TRUE(FilterTestData(double_gzip_compressed_sdch, feed_block_size, |
1175 output_block_size, filter.get(), &output)); | 1184 output_block_size, filter.get(), &output)); |
1176 EXPECT_EQ(output, expanded_); | 1185 EXPECT_EQ(output, expanded_); |
1177 } | 1186 } |
1178 | 1187 |
1179 } // namespace net | 1188 } // namespace net |
OLD | NEW |