Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(140)

Side by Side Diff: chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_unittest.cc

Issue 11572061: Create DeclarativeConditionSet, DeclarativeActionSet, and DeclarativeRule templates (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix kalman's nit Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/extensions/api/declarative_webrequest/webrequest_condit ion.h" 5 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condit ion.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/test/values_test_util.h" 10 #include "base/test/values_test_util.h"
11 #include "base/values.h" 11 #include "base/values.h"
12 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_consta nts.h" 12 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_consta nts.h"
13 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_rule.h "
14 #include "chrome/common/extensions/matcher/url_matcher_constants.h" 13 #include "chrome/common/extensions/matcher/url_matcher_constants.h"
15 #include "content/public/browser/resource_request_info.h" 14 #include "content/public/browser/resource_request_info.h"
16 #include "net/url_request/url_request_test_util.h" 15 #include "net/url_request/url_request_test_util.h"
17 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
18 17
19 namespace extensions { 18 namespace extensions {
20 19
21 namespace keys = declarative_webrequest_constants; 20 namespace keys = declarative_webrequest_constants;
22 namespace keys2 = url_matcher_constants; 21 namespace keys2 = url_matcher_constants;
23 22
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 "{ \n" 62 "{ \n"
64 " \"resourceType\": [\"main_frame\"], \n" 63 " \"resourceType\": [\"main_frame\"], \n"
65 " \"url\": { \"hostSuffix\": \"example.com\" }, \n" 64 " \"url\": { \"hostSuffix\": \"example.com\" }, \n"
66 " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n" 65 " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n"
67 "}"), 66 "}"),
68 &error); 67 &error);
69 EXPECT_EQ("", error); 68 EXPECT_EQ("", error);
70 ASSERT_TRUE(result.get()); 69 ASSERT_TRUE(result.get());
71 70
72 URLMatcherConditionSet::Vector url_matcher_condition_set; 71 URLMatcherConditionSet::Vector url_matcher_condition_set;
73 url_matcher_condition_set.push_back(result->url_matcher_condition_set()); 72 result->GetURLMatcherConditionSets(&url_matcher_condition_set);
74 matcher.AddConditionSets(url_matcher_condition_set); 73 matcher.AddConditionSets(url_matcher_condition_set);
75 std::set<URLMatcherConditionSet::ID> url_match_ids; 74 std::set<URLMatcherConditionSet::ID> url_match_ids;
76 75
77 net::TestURLRequestContext context; 76 net::TestURLRequestContext context;
78 GURL http_url("http://www.example.com"); 77 GURL http_url("http://www.example.com");
79 net::TestURLRequest match_request(http_url, NULL, &context); 78 net::TestURLRequest match_request(http_url, NULL, &context);
80 url_match_ids = matcher.MatchURL(http_url); 79 url_match_ids = matcher.MatchURL(http_url);
81 EXPECT_EQ(1u, url_match_ids.size()); 80 EXPECT_EQ(1u, url_match_ids.size());
82 content::ResourceRequestInfo::AllocateForTesting(&match_request, 81 content::ResourceRequestInfo::AllocateForTesting(&match_request,
83 ResourceType::MAIN_FRAME, NULL, -1, -1); 82 ResourceType::MAIN_FRAME, NULL, -1, -1);
84 EXPECT_TRUE(result->IsFulfilled( 83 EXPECT_TRUE(result->IsFulfilled(
85 url_match_ids, 84 url_match_ids,
86 WebRequestRule::RequestData(&match_request, ON_BEFORE_REQUEST))); 85 DeclarativeWebRequestData(&match_request, ON_BEFORE_REQUEST)));
87 86
88 GURL https_url("https://www.example.com"); 87 GURL https_url("https://www.example.com");
89 net::TestURLRequest wrong_resource_type(https_url, NULL, &context); 88 net::TestURLRequest wrong_resource_type(https_url, NULL, &context);
90 url_match_ids = matcher.MatchURL(https_url); 89 url_match_ids = matcher.MatchURL(https_url);
91 // Make sure IsFulfilled does not fail because of URL matching. 90 // Make sure IsFulfilled does not fail because of URL matching.
92 EXPECT_EQ(1u, url_match_ids.size()); 91 EXPECT_EQ(1u, url_match_ids.size());
93 content::ResourceRequestInfo::AllocateForTesting(&wrong_resource_type, 92 content::ResourceRequestInfo::AllocateForTesting(&wrong_resource_type,
94 ResourceType::SUB_FRAME, NULL, -1, -1); 93 ResourceType::SUB_FRAME, NULL, -1, -1);
95 EXPECT_FALSE(result->IsFulfilled( 94 EXPECT_FALSE(result->IsFulfilled(
96 url_match_ids, 95 url_match_ids,
97 WebRequestRule::RequestData(&wrong_resource_type, ON_BEFORE_REQUEST))); 96 DeclarativeWebRequestData(&wrong_resource_type, ON_BEFORE_REQUEST)));
98 } 97 }
99 98
100 // Conditions without UrlFilter attributes need to be independent of URL 99 // Conditions without UrlFilter attributes need to be independent of URL
101 // matching results. We test here that: 100 // matching results. We test here that:
102 // 1. A non-empty condition without UrlFilter attributes is fulfilled iff its 101 // 1. A non-empty condition without UrlFilter attributes is fulfilled iff its
103 // attributes are fulfilled. 102 // attributes are fulfilled.
104 // 2. An empty condition (in particular, without UrlFilter attributes) is 103 // 2. An empty condition (in particular, without UrlFilter attributes) is
105 // always fulfilled. 104 // always fulfilled.
106 TEST(WebRequestConditionTest, NoUrlAttributes) { 105 TEST(WebRequestConditionTest, NoUrlAttributes) {
107 // Necessary for TestURLRequest. 106 // Necessary for TestURLRequest.
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 152
154 net::TestURLRequestContext context; 153 net::TestURLRequestContext context;
155 net::TestURLRequest https_request( 154 net::TestURLRequest https_request(
156 GURL("https://www.example.com"), NULL, &context); 155 GURL("https://www.example.com"), NULL, &context);
157 std::set<URLMatcherConditionSet::ID> dummy_match_set; 156 std::set<URLMatcherConditionSet::ID> dummy_match_set;
158 157
159 // 1. A non-empty condition without UrlFilter attributes is fulfilled iff its 158 // 1. A non-empty condition without UrlFilter attributes is fulfilled iff its
160 // attributes are fulfilled. 159 // attributes are fulfilled.
161 EXPECT_FALSE(condition_no_url_false->IsFulfilled( 160 EXPECT_FALSE(condition_no_url_false->IsFulfilled(
162 dummy_match_set, 161 dummy_match_set,
163 WebRequestRule::RequestData(&https_request, ON_BEFORE_REQUEST))); 162 DeclarativeWebRequestData(&https_request, ON_BEFORE_REQUEST)));
164 163
165 EXPECT_TRUE(condition_no_url_true->IsFulfilled( 164 EXPECT_TRUE(condition_no_url_true->IsFulfilled(
166 dummy_match_set, 165 dummy_match_set,
167 WebRequestRule::RequestData(&https_request, ON_BEFORE_REQUEST))); 166 DeclarativeWebRequestData(&https_request, ON_BEFORE_REQUEST)));
168 167
169 // 2. An empty condition (in particular, without UrlFilter attributes) is 168 // 2. An empty condition (in particular, without UrlFilter attributes) is
170 // always fulfilled. 169 // always fulfilled.
171 EXPECT_TRUE(condition_empty->IsFulfilled( 170 EXPECT_TRUE(condition_empty->IsFulfilled(
172 dummy_match_set, 171 dummy_match_set,
173 WebRequestRule::RequestData(&https_request, ON_BEFORE_REQUEST))); 172 DeclarativeWebRequestData(&https_request, ON_BEFORE_REQUEST)));
174 } 173 }
175 174
176 TEST(WebRequestConditionTest, CreateConditionSet) { 175 TEST(WebRequestConditionTest, CreateConditionSet) {
177 // Necessary for TestURLRequest. 176 // Necessary for TestURLRequest.
178 MessageLoop message_loop(MessageLoop::TYPE_IO); 177 MessageLoop message_loop(MessageLoop::TYPE_IO);
179 URLMatcher matcher; 178 URLMatcher matcher;
180 179
181 WebRequestConditionSet::AnyVector conditions; 180 WebRequestConditionSet::AnyVector conditions;
182 181
183 linked_ptr<json_schema_compiler::any::Any> condition1 = make_linked_ptr( 182 linked_ptr<json_schema_compiler::any::Any> condition1 = make_linked_ptr(
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 // Test that the result is correct and matches http://www.example.com and 223 // Test that the result is correct and matches http://www.example.com and
225 // https://www.example.com 224 // https://www.example.com
226 GURL http_url("http://www.example.com"); 225 GURL http_url("http://www.example.com");
227 net::TestURLRequestContext context; 226 net::TestURLRequestContext context;
228 net::TestURLRequest http_request(http_url, NULL, &context); 227 net::TestURLRequest http_request(http_url, NULL, &context);
229 url_match_ids = matcher.MatchURL(http_url); 228 url_match_ids = matcher.MatchURL(http_url);
230 EXPECT_EQ(1u, url_match_ids.size()); 229 EXPECT_EQ(1u, url_match_ids.size());
231 EXPECT_TRUE(result->IsFulfilled( 230 EXPECT_TRUE(result->IsFulfilled(
232 *(url_match_ids.begin()), 231 *(url_match_ids.begin()),
233 url_match_ids, 232 url_match_ids,
234 WebRequestRule::RequestData(&http_request, ON_BEFORE_REQUEST))); 233 DeclarativeWebRequestData(&http_request, ON_BEFORE_REQUEST)));
235 234
236 GURL https_url("https://www.example.com"); 235 GURL https_url("https://www.example.com");
237 url_match_ids = matcher.MatchURL(https_url); 236 url_match_ids = matcher.MatchURL(https_url);
238 EXPECT_EQ(1u, url_match_ids.size()); 237 EXPECT_EQ(1u, url_match_ids.size());
239 net::TestURLRequest https_request(https_url, NULL, &context); 238 net::TestURLRequest https_request(https_url, NULL, &context);
240 EXPECT_TRUE(result->IsFulfilled( 239 EXPECT_TRUE(result->IsFulfilled(
241 *(url_match_ids.begin()), 240 *(url_match_ids.begin()),
242 url_match_ids, 241 url_match_ids,
243 WebRequestRule::RequestData(&https_request, ON_BEFORE_REQUEST))); 242 DeclarativeWebRequestData(&https_request, ON_BEFORE_REQUEST)));
244 243
245 // Check that both, hostPrefix and hostSuffix are evaluated. 244 // Check that both, hostPrefix and hostSuffix are evaluated.
246 GURL https_foo_url("https://foo.example.com"); 245 GURL https_foo_url("https://foo.example.com");
247 url_match_ids = matcher.MatchURL(https_foo_url); 246 url_match_ids = matcher.MatchURL(https_foo_url);
248 EXPECT_EQ(0u, url_match_ids.size()); 247 EXPECT_EQ(0u, url_match_ids.size());
249 net::TestURLRequest https_foo_request(https_foo_url, NULL, &context); 248 net::TestURLRequest https_foo_request(https_foo_url, NULL, &context);
250 EXPECT_FALSE(result->IsFulfilled( 249 EXPECT_FALSE(result->IsFulfilled(
251 -1, 250 -1,
252 url_match_ids, 251 url_match_ids,
253 WebRequestRule::RequestData(&https_foo_request, ON_BEFORE_REQUEST))); 252 DeclarativeWebRequestData(&https_foo_request, ON_BEFORE_REQUEST)));
254 } 253 }
255 254
256 TEST(WebRequestConditionTest, TestPortFilter) { 255 TEST(WebRequestConditionTest, TestPortFilter) {
257 // Necessary for TestURLRequest. 256 // Necessary for TestURLRequest.
258 MessageLoop message_loop(MessageLoop::TYPE_IO); 257 MessageLoop message_loop(MessageLoop::TYPE_IO);
259 URLMatcher matcher; 258 URLMatcher matcher;
260 259
261 linked_ptr<json_schema_compiler::any::Any> any_condition = 260 linked_ptr<json_schema_compiler::any::Any> any_condition =
262 make_linked_ptr(new json_schema_compiler::any::Any); 261 make_linked_ptr(new json_schema_compiler::any::Any);
263 any_condition->Init(*base::test::ParseJson( 262 any_condition->Init(*base::test::ParseJson(
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 // filters. 335 // filters.
337 " \"requestHeaders\": [{}], \n" 336 " \"requestHeaders\": [{}], \n"
338 " \"responseHeaders\": [{}], \n" 337 " \"responseHeaders\": [{}], \n"
339 "}"), 338 "}"),
340 &error); 339 &error);
341 EXPECT_FALSE(error.empty()); 340 EXPECT_FALSE(error.empty());
342 EXPECT_FALSE(result.get()); 341 EXPECT_FALSE(result.get());
343 } 342 }
344 343
345 } // namespace extensions 344 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698