| 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 |