| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/url_matcher/url_matcher_factory.h" | 5 #include "components/url_matcher/url_matcher_factory.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| 11 | 11 |
| 12 #include "base/format_macros.h" | 12 #include "base/format_macros.h" |
| 13 #include "base/macros.h" | 13 #include "base/macros.h" |
| 14 #include "base/memory/ptr_util.h" |
| 14 #include "base/strings/stringprintf.h" | 15 #include "base/strings/stringprintf.h" |
| 15 #include "base/values.h" | 16 #include "base/values.h" |
| 16 #include "components/url_matcher/url_matcher_constants.h" | 17 #include "components/url_matcher/url_matcher_constants.h" |
| 17 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
| 18 #include "url/gurl.h" | 19 #include "url/gurl.h" |
| 19 | 20 |
| 20 namespace url_matcher { | 21 namespace url_matcher { |
| 21 | 22 |
| 22 namespace keys = url_matcher_constants; | 23 namespace keys = url_matcher_constants; |
| 23 | 24 |
| 24 TEST(URLMatcherFactoryTest, CreateFromURLFilterDictionary) { | 25 TEST(URLMatcherFactoryTest, CreateFromURLFilterDictionary) { |
| 25 URLMatcher matcher; | 26 URLMatcher matcher; |
| 26 | 27 |
| 27 std::string error; | 28 std::string error; |
| 28 scoped_refptr<URLMatcherConditionSet> result; | 29 scoped_refptr<URLMatcherConditionSet> result; |
| 29 | 30 |
| 30 // Invalid key: {"invalid": "foobar"} | 31 // Invalid key: {"invalid": "foobar"} |
| 31 base::DictionaryValue invalid_condition; | 32 base::DictionaryValue invalid_condition; |
| 32 invalid_condition.SetString("invalid", "foobar"); | 33 invalid_condition.SetString("invalid", "foobar"); |
| 33 | 34 |
| 34 // Invalid value type: {"hostSuffix": []} | 35 // Invalid value type: {"hostSuffix": []} |
| 35 base::DictionaryValue invalid_condition2; | 36 base::DictionaryValue invalid_condition2; |
| 36 invalid_condition2.Set(keys::kHostSuffixKey, new base::ListValue); | 37 invalid_condition2.Set(keys::kHostSuffixKey, |
| 38 base::MakeUnique<base::ListValue>()); |
| 37 | 39 |
| 38 // Invalid regex value: {"urlMatches": "*"} | 40 // Invalid regex value: {"urlMatches": "*"} |
| 39 base::DictionaryValue invalid_condition3; | 41 base::DictionaryValue invalid_condition3; |
| 40 invalid_condition3.SetString(keys::kURLMatchesKey, "*"); | 42 invalid_condition3.SetString(keys::kURLMatchesKey, "*"); |
| 41 | 43 |
| 42 // Invalid regex value: {"originAndPathMatches": "*"} | 44 // Invalid regex value: {"originAndPathMatches": "*"} |
| 43 base::DictionaryValue invalid_condition4; | 45 base::DictionaryValue invalid_condition4; |
| 44 invalid_condition4.SetString(keys::kOriginAndPathMatchesKey, "*"); | 46 invalid_condition4.SetString(keys::kOriginAndPathMatchesKey, "*"); |
| 45 | 47 |
| 46 // Valid values: | 48 // Valid values: |
| 47 // { | 49 // { |
| 48 // "port_range": [80, [1000, 1010]], | 50 // "port_range": [80, [1000, 1010]], |
| 49 // "schemes": ["http"], | 51 // "schemes": ["http"], |
| 50 // "hostSuffix": "example.com" | 52 // "hostSuffix": "example.com" |
| 51 // "hostPrefix": "www" | 53 // "hostPrefix": "www" |
| 52 // } | 54 // } |
| 53 | 55 |
| 54 // Port range: Allow 80;1000-1010. | 56 // Port range: Allow 80;1000-1010. |
| 55 std::unique_ptr<base::ListValue> port_range(new base::ListValue()); | 57 auto port_range = base::MakeUnique<base::ListValue>(); |
| 56 port_range->AppendInteger(1000); | 58 port_range->AppendInteger(1000); |
| 57 port_range->AppendInteger(1010); | 59 port_range->AppendInteger(1010); |
| 58 base::ListValue* port_ranges = new base::ListValue(); | 60 auto port_ranges = base::MakeUnique<base::ListValue>(); |
| 59 port_ranges->AppendInteger(80); | 61 port_ranges->AppendInteger(80); |
| 60 port_ranges->Append(std::move(port_range)); | 62 port_ranges->Append(std::move(port_range)); |
| 61 | 63 |
| 62 base::ListValue* scheme_list = new base::ListValue(); | 64 auto scheme_list = base::MakeUnique<base::ListValue>(); |
| 63 scheme_list->AppendString("http"); | 65 scheme_list->AppendString("http"); |
| 64 | 66 |
| 65 base::DictionaryValue valid_condition; | 67 base::DictionaryValue valid_condition; |
| 66 valid_condition.SetString(keys::kHostSuffixKey, "example.com"); | 68 valid_condition.SetString(keys::kHostSuffixKey, "example.com"); |
| 67 valid_condition.SetString(keys::kHostPrefixKey, "www"); | 69 valid_condition.SetString(keys::kHostPrefixKey, "www"); |
| 68 valid_condition.Set(keys::kPortsKey, port_ranges); | 70 valid_condition.Set(keys::kPortsKey, std::move(port_ranges)); |
| 69 valid_condition.Set(keys::kSchemesKey, scheme_list); | 71 valid_condition.Set(keys::kSchemesKey, std::move(scheme_list)); |
| 70 | 72 |
| 71 // Test wrong condition name passed. | 73 // Test wrong condition name passed. |
| 72 error.clear(); | 74 error.clear(); |
| 73 result = URLMatcherFactory::CreateFromURLFilterDictionary( | 75 result = URLMatcherFactory::CreateFromURLFilterDictionary( |
| 74 matcher.condition_factory(), &invalid_condition, 1, &error); | 76 matcher.condition_factory(), &invalid_condition, 1, &error); |
| 75 EXPECT_FALSE(error.empty()); | 77 EXPECT_FALSE(error.empty()); |
| 76 EXPECT_FALSE(result.get()); | 78 EXPECT_FALSE(result.get()); |
| 77 | 79 |
| 78 // Test wrong datatype in hostSuffix. | 80 // Test wrong datatype in hostSuffix. |
| 79 error.clear(); | 81 error.clear(); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 | 136 |
| 135 // {"hostPrefix": "WWw."} | 137 // {"hostPrefix": "WWw."} |
| 136 base::DictionaryValue invalid_condition3; | 138 base::DictionaryValue invalid_condition3; |
| 137 invalid_condition3.SetString(keys::kHostPrefixKey, "WWw."); | 139 invalid_condition3.SetString(keys::kHostPrefixKey, "WWw."); |
| 138 | 140 |
| 139 // {"hostEquals": "WWW.example.Com"} | 141 // {"hostEquals": "WWW.example.Com"} |
| 140 base::DictionaryValue invalid_condition4; | 142 base::DictionaryValue invalid_condition4; |
| 141 invalid_condition4.SetString(keys::kHostEqualsKey, "WWW.example.Com"); | 143 invalid_condition4.SetString(keys::kHostEqualsKey, "WWW.example.Com"); |
| 142 | 144 |
| 143 // {"scheme": ["HTTP"]} | 145 // {"scheme": ["HTTP"]} |
| 144 base::ListValue* scheme_list = new base::ListValue(); | 146 auto scheme_list = base::MakeUnique<base::ListValue>(); |
| 145 scheme_list->AppendString("HTTP"); | 147 scheme_list->AppendString("HTTP"); |
| 146 base::DictionaryValue invalid_condition5; | 148 base::DictionaryValue invalid_condition5; |
| 147 invalid_condition5.Set(keys::kSchemesKey, scheme_list); | 149 invalid_condition5.Set(keys::kSchemesKey, std::move(scheme_list)); |
| 148 | 150 |
| 149 const base::DictionaryValue* invalid_conditions[] = { | 151 const base::DictionaryValue* invalid_conditions[] = { |
| 150 &invalid_condition1, | 152 &invalid_condition1, |
| 151 &invalid_condition2, | 153 &invalid_condition2, |
| 152 &invalid_condition3, | 154 &invalid_condition3, |
| 153 &invalid_condition4, | 155 &invalid_condition4, |
| 154 &invalid_condition5 | 156 &invalid_condition5 |
| 155 }; | 157 }; |
| 156 | 158 |
| 157 for (size_t i = 0; i < arraysize(invalid_conditions); ++i) { | 159 for (size_t i = 0; i < arraysize(invalid_conditions); ++i) { |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 335 kIsUrlCaseSensitive, kIsUrlLowerCaseEnforced, url), | 337 kIsUrlCaseSensitive, kIsUrlLowerCaseEnforced, url), |
| 336 }; | 338 }; |
| 337 | 339 |
| 338 for (size_t i = 0; i < arraysize(case_tests); ++i) { | 340 for (size_t i = 0; i < arraysize(case_tests); ++i) { |
| 339 SCOPED_TRACE(base::StringPrintf("Iteration: %" PRIuS, i)); | 341 SCOPED_TRACE(base::StringPrintf("Iteration: %" PRIuS, i)); |
| 340 case_tests[i].Test(); | 342 case_tests[i].Test(); |
| 341 } | 343 } |
| 342 } | 344 } |
| 343 | 345 |
| 344 } // namespace url_matcher | 346 } // namespace url_matcher |
| OLD | NEW |