| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "components/subresource_filter/core/common/test_ruleset_creator.h" | 5 #include "components/subresource_filter/core/common/test_ruleset_creator.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 google::protobuf::io::StringOutputStream output(&ruleset_contents); | 38 google::protobuf::io::StringOutputStream output(&ruleset_contents); |
| 39 UnindexedRulesetWriter ruleset_writer(&output); | 39 UnindexedRulesetWriter ruleset_writer(&output); |
| 40 for (const auto& rule : rules) | 40 for (const auto& rule : rules) |
| 41 ruleset_writer.AddUrlRule(rule); | 41 ruleset_writer.AddUrlRule(rule); |
| 42 ruleset_writer.Finish(); | 42 ruleset_writer.Finish(); |
| 43 | 43 |
| 44 auto* data = reinterpret_cast<const uint8_t*>(ruleset_contents.data()); | 44 auto* data = reinterpret_cast<const uint8_t*>(ruleset_contents.data()); |
| 45 return std::vector<uint8_t>(data, data + ruleset_contents.size()); | 45 return std::vector<uint8_t>(data, data + ruleset_contents.size()); |
| 46 } | 46 } |
| 47 | 47 |
| 48 std::vector<uint8_t> SerializeUnindexedRulesetWithSingleRule( | |
| 49 const proto::UrlRule& rule) { | |
| 50 return SerializeUnindexedRulesetWithMultipleRules({rule}); | |
| 51 } | |
| 52 | |
| 53 std::vector<uint8_t> SerializeIndexedRulesetWithMultipleRules( | 48 std::vector<uint8_t> SerializeIndexedRulesetWithMultipleRules( |
| 54 const std::vector<proto::UrlRule>& rules) { | 49 const std::vector<proto::UrlRule>& rules) { |
| 55 RulesetIndexer indexer; | 50 RulesetIndexer indexer; |
| 56 for (const auto& rule : rules) | 51 for (const auto& rule : rules) |
| 57 EXPECT_TRUE(indexer.AddUrlRule(rule)); | 52 EXPECT_TRUE(indexer.AddUrlRule(rule)); |
| 58 indexer.Finish(); | 53 indexer.Finish(); |
| 59 return std::vector<uint8_t>(indexer.data(), indexer.data() + indexer.size()); | 54 return std::vector<uint8_t>(indexer.data(), indexer.data() + indexer.size()); |
| 60 } | 55 } |
| 61 | 56 |
| 62 } // namespace | 57 } // namespace |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 DCHECK(test_ruleset_pair); | 114 DCHECK(test_ruleset_pair); |
| 120 proto::UrlRule suffix_rule = CreateSuffixRule(suffix); | 115 proto::UrlRule suffix_rule = CreateSuffixRule(suffix); |
| 121 CreateRulesetWithRules({suffix_rule}, test_ruleset_pair); | 116 CreateRulesetWithRules({suffix_rule}, test_ruleset_pair); |
| 122 } | 117 } |
| 123 | 118 |
| 124 void TestRulesetCreator::CreateUnindexedRulesetToDisallowURLsWithPathSuffix( | 119 void TestRulesetCreator::CreateUnindexedRulesetToDisallowURLsWithPathSuffix( |
| 125 base::StringPiece suffix, | 120 base::StringPiece suffix, |
| 126 TestRuleset* test_unindexed_ruleset) { | 121 TestRuleset* test_unindexed_ruleset) { |
| 127 DCHECK(test_unindexed_ruleset); | 122 DCHECK(test_unindexed_ruleset); |
| 128 proto::UrlRule suffix_rule = CreateSuffixRule(suffix); | 123 proto::UrlRule suffix_rule = CreateSuffixRule(suffix); |
| 129 ASSERT_NO_FATAL_FAILURE(CreateTestRulesetFromContents( | 124 ASSERT_NO_FATAL_FAILURE( |
| 130 SerializeUnindexedRulesetWithSingleRule(suffix_rule), | 125 CreateUnindexedRulesetWithRules({suffix_rule}, test_unindexed_ruleset)); |
| 131 test_unindexed_ruleset)); | |
| 132 } | 126 } |
| 133 | 127 |
| 134 void TestRulesetCreator::CreateRulesetToDisallowURLsWithManySuffixes( | 128 void TestRulesetCreator::CreateRulesetToDisallowURLsWithManySuffixes( |
| 135 base::StringPiece suffix, | 129 base::StringPiece suffix, |
| 136 int num_of_suffixes, | 130 int num_of_suffixes, |
| 137 TestRulesetPair* test_ruleset_pair) { | 131 TestRulesetPair* test_ruleset_pair) { |
| 138 DCHECK(test_ruleset_pair); | 132 DCHECK(test_ruleset_pair); |
| 139 | 133 |
| 140 std::vector<proto::UrlRule> rules; | 134 std::vector<proto::UrlRule> rules; |
| 141 for (int i = 0; i < num_of_suffixes; ++i) { | 135 for (int i = 0; i < num_of_suffixes; ++i) { |
| 142 std::string current_suffix = | 136 std::string current_suffix = |
| 143 suffix.as_string() + '_' + base::IntToString(i); | 137 suffix.as_string() + '_' + base::IntToString(i); |
| 144 rules.push_back(CreateSuffixRule(current_suffix)); | 138 rules.push_back(CreateSuffixRule(current_suffix)); |
| 145 } | 139 } |
| 146 CreateRulesetWithRules(rules, test_ruleset_pair); | 140 CreateRulesetWithRules(rules, test_ruleset_pair); |
| 147 } | 141 } |
| 148 | 142 |
| 149 void TestRulesetCreator::CreateRulesetWithRules( | 143 void TestRulesetCreator::CreateRulesetWithRules( |
| 150 const std::vector<proto::UrlRule>& rules, | 144 const std::vector<proto::UrlRule>& rules, |
| 151 TestRulesetPair* test_ruleset_pair) { | 145 TestRulesetPair* test_ruleset_pair) { |
| 152 ASSERT_NO_FATAL_FAILURE(CreateTestRulesetFromContents( | 146 ASSERT_NO_FATAL_FAILURE(CreateTestRulesetFromContents( |
| 153 SerializeUnindexedRulesetWithMultipleRules(rules), | 147 SerializeUnindexedRulesetWithMultipleRules(rules), |
| 154 &test_ruleset_pair->unindexed)); | 148 &test_ruleset_pair->unindexed)); |
| 155 ASSERT_NO_FATAL_FAILURE(CreateTestRulesetFromContents( | 149 ASSERT_NO_FATAL_FAILURE(CreateTestRulesetFromContents( |
| 156 SerializeIndexedRulesetWithMultipleRules(rules), | 150 SerializeIndexedRulesetWithMultipleRules(rules), |
| 157 &test_ruleset_pair->indexed)); | 151 &test_ruleset_pair->indexed)); |
| 158 } | 152 } |
| 159 | 153 |
| 154 void TestRulesetCreator::CreateUnindexedRulesetWithRules( |
| 155 const std::vector<proto::UrlRule>& rules, |
| 156 TestRuleset* test_unindexed_ruleset) { |
| 157 ASSERT_NO_FATAL_FAILURE(CreateTestRulesetFromContents( |
| 158 SerializeUnindexedRulesetWithMultipleRules(rules), |
| 159 test_unindexed_ruleset)); |
| 160 } |
| 161 |
| 160 void TestRulesetCreator::GetUniqueTemporaryPath(base::FilePath* path) { | 162 void TestRulesetCreator::GetUniqueTemporaryPath(base::FilePath* path) { |
| 161 DCHECK(path); | 163 DCHECK(path); |
| 162 ASSERT_TRUE(scoped_temp_dir_.IsValid() || | 164 ASSERT_TRUE(scoped_temp_dir_.IsValid() || |
| 163 scoped_temp_dir_.CreateUniqueTempDir()); | 165 scoped_temp_dir_.CreateUniqueTempDir()); |
| 164 *path = scoped_temp_dir_.GetPath().AppendASCII( | 166 *path = scoped_temp_dir_.GetPath().AppendASCII( |
| 165 base::IntToString(next_unique_file_suffix++)); | 167 base::IntToString(next_unique_file_suffix++)); |
| 166 } | 168 } |
| 167 | 169 |
| 168 void TestRulesetCreator::CreateTestRulesetFromContents( | 170 void TestRulesetCreator::CreateTestRulesetFromContents( |
| 169 std::vector<uint8_t> ruleset_contents, | 171 std::vector<uint8_t> ruleset_contents, |
| 170 TestRuleset* ruleset) { | 172 TestRuleset* ruleset) { |
| 171 DCHECK(ruleset); | 173 DCHECK(ruleset); |
| 172 | 174 |
| 173 ruleset->contents = std::move(ruleset_contents); | 175 ruleset->contents = std::move(ruleset_contents); |
| 174 ASSERT_NO_FATAL_FAILURE(GetUniqueTemporaryPath(&ruleset->path)); | 176 ASSERT_NO_FATAL_FAILURE(GetUniqueTemporaryPath(&ruleset->path)); |
| 175 WriteRulesetContents(ruleset->contents, ruleset->path); | 177 WriteRulesetContents(ruleset->contents, ruleset->path); |
| 176 } | 178 } |
| 177 | 179 |
| 178 } // namespace testing | 180 } // namespace testing |
| 179 } // namespace subresource_filter | 181 } // namespace subresource_filter |
| OLD | NEW |