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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 URLRequestContext* url_request_context = | 60 URLRequestContext* url_request_context = |
61 filter_context_->GetModifiableURLRequestContext(); | 61 filter_context_->GetModifiableURLRequestContext(); |
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 return sdch_manager_->AddSdchDictionary(dictionary_text, gurl) == SDCH_OK; |
71 sdch_manager_->GetAvailDictionaryList(gurl, &list); | |
72 sdch_manager_->AddSdchDictionary(dictionary_text, gurl); | |
73 std::string list2; | |
74 sdch_manager_->GetAvailDictionaryList(gurl, &list2); | |
75 | |
76 // The list of hashes should change iff the addition succeeds. | |
77 return (list != list2); | |
78 } | 71 } |
79 | 72 |
80 MockFilterContext* filter_context() { return filter_context_.get(); } | 73 MockFilterContext* filter_context() { return filter_context_.get(); } |
81 | 74 |
82 std::string NewSdchCompressedData(const std::string dictionary) { | 75 std::string NewSdchCompressedData(const std::string dictionary) { |
83 std::string client_hash; | 76 std::string client_hash; |
84 std::string server_hash; | 77 std::string server_hash; |
85 SdchManager::GenerateHash(dictionary, &client_hash, &server_hash); | 78 SdchManager::GenerateHash(dictionary, &client_hash, &server_hash); |
86 | 79 |
87 // Build compressed data that refers to our dictionary. | 80 // Build compressed data that refers to our dictionary. |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 dictionary_hash_postfix.size()); | 398 dictionary_hash_postfix.size()); |
406 filter->FlushStreamBuffer(dictionary_hash_postfix.size()); | 399 filter->FlushStreamBuffer(dictionary_hash_postfix.size()); |
407 | 400 |
408 // With a non-existant dictionary specifier, try to read output. | 401 // With a non-existant dictionary specifier, try to read output. |
409 output_bytes_or_buffer_size = sizeof(output_buffer); | 402 output_bytes_or_buffer_size = sizeof(output_buffer); |
410 status = filter->ReadData(output_buffer, &output_bytes_or_buffer_size); | 403 status = filter->ReadData(output_buffer, &output_bytes_or_buffer_size); |
411 | 404 |
412 EXPECT_EQ(0, output_bytes_or_buffer_size); | 405 EXPECT_EQ(0, output_bytes_or_buffer_size); |
413 EXPECT_EQ(Filter::FILTER_ERROR, status); | 406 EXPECT_EQ(Filter::FILTER_ERROR, status); |
414 | 407 |
415 EXPECT_FALSE(sdch_manager_->IsInSupportedDomain(GURL(url_string))); | 408 EXPECT_EQ(SDCH_DOMAIN_BLACKLIST_INCLUDES_TARGET, |
| 409 sdch_manager_->IsInSupportedDomain(GURL(url_string))); |
416 sdch_manager_->ClearBlacklistings(); | 410 sdch_manager_->ClearBlacklistings(); |
417 EXPECT_TRUE(sdch_manager_->IsInSupportedDomain(GURL(url_string))); | 411 EXPECT_EQ(SDCH_OK, sdch_manager_->IsInSupportedDomain(GURL(url_string))); |
418 } | 412 } |
419 | 413 |
420 TEST_F(SdchFilterTest, DictionaryAddOnce) { | 414 TEST_F(SdchFilterTest, DictionaryAddOnce) { |
421 // Construct a valid SDCH dictionary from a VCDIFF dictionary. | 415 // Construct a valid SDCH dictionary from a VCDIFF dictionary. |
422 const std::string kSampleDomain = "sdchtest.com"; | 416 const std::string kSampleDomain = "sdchtest.com"; |
423 std::string dictionary(NewSdchDictionary(kSampleDomain)); | 417 std::string dictionary(NewSdchDictionary(kSampleDomain)); |
424 | 418 |
425 std::string url_string = "http://" + kSampleDomain; | 419 std::string url_string = "http://" + kSampleDomain; |
426 GURL url(url_string); | 420 GURL url(url_string); |
427 EXPECT_TRUE(AddSdchDictionary(dictionary, url)); | 421 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); | 654 filter_context()->SetURL(wrong_domain_url); |
661 scoped_ptr<Filter> filter(Filter::Factory(filter_types, *filter_context())); | 655 scoped_ptr<Filter> filter(Filter::Factory(filter_types, *filter_context())); |
662 | 656 |
663 size_t feed_block_size = 100; | 657 size_t feed_block_size = 100; |
664 size_t output_block_size = 100; | 658 size_t output_block_size = 100; |
665 std::string output; | 659 std::string output; |
666 EXPECT_FALSE(FilterTestData(compressed, feed_block_size, output_block_size, | 660 EXPECT_FALSE(FilterTestData(compressed, feed_block_size, output_block_size, |
667 filter.get(), &output)); | 661 filter.get(), &output)); |
668 EXPECT_EQ(output.size(), 0u); // No output written. | 662 EXPECT_EQ(output.size(), 0u); // No output written. |
669 | 663 |
670 EXPECT_TRUE(sdch_manager_->IsInSupportedDomain(GURL(url_string))); | 664 EXPECT_EQ(SDCH_OK, sdch_manager_->IsInSupportedDomain(GURL(url_string))); |
671 EXPECT_FALSE(sdch_manager_->IsInSupportedDomain(wrong_domain_url)); | 665 EXPECT_EQ(SDCH_DOMAIN_BLACKLIST_INCLUDES_TARGET, |
| 666 sdch_manager_->IsInSupportedDomain(wrong_domain_url)); |
672 sdch_manager_->ClearBlacklistings(); | 667 sdch_manager_->ClearBlacklistings(); |
673 EXPECT_TRUE(sdch_manager_->IsInSupportedDomain(wrong_domain_url)); | 668 EXPECT_EQ(SDCH_OK, sdch_manager_->IsInSupportedDomain(wrong_domain_url)); |
674 } | 669 } |
675 | 670 |
676 TEST_F(SdchFilterTest, DictionaryPathValidation) { | 671 TEST_F(SdchFilterTest, DictionaryPathValidation) { |
677 // Can't test path distinction between dictionaries if we aren't allowed | 672 // Can't test path distinction between dictionaries if we aren't allowed |
678 // more than one dictionary. | 673 // more than one dictionary. |
679 if (SdchManager::kMaxDictionaryCount <= 1) | 674 if (SdchManager::kMaxDictionaryCount <= 1) |
680 return; | 675 return; |
681 | 676 |
682 // Construct a valid SDCH dictionary from a VCDIFF dictionary. | 677 // Construct a valid SDCH dictionary from a VCDIFF dictionary. |
683 const std::string kSampleDomain = "sdchtest.com"; | 678 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)); | 711 filter_context()->SetURL(GURL(url_string)); |
717 filter.reset(Filter::Factory(filter_types, *filter_context())); | 712 filter.reset(Filter::Factory(filter_types, *filter_context())); |
718 | 713 |
719 feed_block_size = 100; | 714 feed_block_size = 100; |
720 output_block_size = 100; | 715 output_block_size = 100; |
721 output.clear(); | 716 output.clear(); |
722 EXPECT_FALSE(FilterTestData(compressed_for_path, feed_block_size, | 717 EXPECT_FALSE(FilterTestData(compressed_for_path, feed_block_size, |
723 output_block_size, filter.get(), &output)); | 718 output_block_size, filter.get(), &output)); |
724 EXPECT_EQ(output.size(), 0u); // No output written. | 719 EXPECT_EQ(output.size(), 0u); // No output written. |
725 | 720 |
726 EXPECT_FALSE(sdch_manager_->IsInSupportedDomain(GURL(url_string))); | 721 EXPECT_EQ(SDCH_DOMAIN_BLACKLIST_INCLUDES_TARGET, |
| 722 sdch_manager_->IsInSupportedDomain(GURL(url_string))); |
727 sdch_manager_->ClearBlacklistings(); | 723 sdch_manager_->ClearBlacklistings(); |
728 EXPECT_TRUE(sdch_manager_->IsInSupportedDomain(GURL(url_string))); | 724 EXPECT_EQ(SDCH_OK, sdch_manager_->IsInSupportedDomain(GURL(url_string))); |
729 } | 725 } |
730 | 726 |
731 TEST_F(SdchFilterTest, DictionaryPortValidation) { | 727 TEST_F(SdchFilterTest, DictionaryPortValidation) { |
732 // Can't test port distinction between dictionaries if we aren't allowed | 728 // Can't test port distinction between dictionaries if we aren't allowed |
733 // more than one dictionary. | 729 // more than one dictionary. |
734 if (SdchManager::kMaxDictionaryCount <= 1) | 730 if (SdchManager::kMaxDictionaryCount <= 1) |
735 return; | 731 return; |
736 | 732 |
737 // Construct a valid SDCH dictionary from a VCDIFF dictionary. | 733 // Construct a valid SDCH dictionary from a VCDIFF dictionary. |
738 const std::string kSampleDomain = "sdchtest.com"; | 734 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")); | 778 filter_context()->SetURL(GURL(url_string + ":" + port + "1")); |
783 filter.reset(Filter::Factory(filter_types, *filter_context())); | 779 filter.reset(Filter::Factory(filter_types, *filter_context())); |
784 | 780 |
785 feed_block_size = 100; | 781 feed_block_size = 100; |
786 output_block_size = 100; | 782 output_block_size = 100; |
787 output.clear(); | 783 output.clear(); |
788 EXPECT_FALSE(FilterTestData(compressed_for_port, feed_block_size, | 784 EXPECT_FALSE(FilterTestData(compressed_for_port, feed_block_size, |
789 output_block_size, filter.get(), &output)); | 785 output_block_size, filter.get(), &output)); |
790 EXPECT_EQ(output.size(), 0u); // No output written. | 786 EXPECT_EQ(output.size(), 0u); // No output written. |
791 | 787 |
792 EXPECT_FALSE(sdch_manager_->IsInSupportedDomain(GURL(url_string))); | 788 EXPECT_EQ(SDCH_DOMAIN_BLACKLIST_INCLUDES_TARGET, |
| 789 sdch_manager_->IsInSupportedDomain(GURL(url_string))); |
793 sdch_manager_->ClearBlacklistings(); | 790 sdch_manager_->ClearBlacklistings(); |
794 EXPECT_TRUE(sdch_manager_->IsInSupportedDomain(GURL(url_string))); | 791 EXPECT_EQ(SDCH_OK, sdch_manager_->IsInSupportedDomain(GURL(url_string))); |
795 } | 792 } |
796 | 793 |
797 //------------------------------------------------------------------------------ | 794 //------------------------------------------------------------------------------ |
798 // Helper function to perform gzip compression of data. | 795 // Helper function to perform gzip compression of data. |
799 | 796 |
800 static std::string gzip_compress(const std::string &input) { | 797 static std::string gzip_compress(const std::string &input) { |
801 z_stream zlib_stream; | 798 z_stream zlib_stream; |
802 memset(&zlib_stream, 0, sizeof(zlib_stream)); | 799 memset(&zlib_stream, 0, sizeof(zlib_stream)); |
803 int code; | 800 int code; |
804 | 801 |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1170 | 1167 |
1171 feed_block_size = 1; | 1168 feed_block_size = 1; |
1172 output_block_size = 1; | 1169 output_block_size = 1; |
1173 output.clear(); | 1170 output.clear(); |
1174 EXPECT_TRUE(FilterTestData(double_gzip_compressed_sdch, feed_block_size, | 1171 EXPECT_TRUE(FilterTestData(double_gzip_compressed_sdch, feed_block_size, |
1175 output_block_size, filter.get(), &output)); | 1172 output_block_size, filter.get(), &output)); |
1176 EXPECT_EQ(output, expanded_); | 1173 EXPECT_EQ(output, expanded_); |
1177 } | 1174 } |
1178 | 1175 |
1179 } // namespace net | 1176 } // namespace net |
OLD | NEW |