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

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: Rebase to Vaclav's CL and fix Dominic's comments Created 8 years 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 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 net::TestURLRequestContext context; 71 net::TestURLRequestContext context;
73 net::TestURLRequest match_request( 72 net::TestURLRequest match_request(
74 GURL("http://www.example.com"), NULL, &context); 73 GURL("http://www.example.com"), NULL, &context);
74 URLMatcherConditionSet::Vector condition_sets;
75 result->GetURLMatcherConditionSets(&condition_sets);
76 ASSERT_EQ(1U, condition_sets.size());
75 std::set<URLMatcherConditionSet::ID> url_matches; 77 std::set<URLMatcherConditionSet::ID> url_matches;
76 url_matches.insert(result->url_matcher_condition_set_id()); 78 url_matches.insert(condition_sets[0]->id());
77 79
78 content::ResourceRequestInfo::AllocateForTesting(&match_request, 80 content::ResourceRequestInfo::AllocateForTesting(&match_request,
79 ResourceType::MAIN_FRAME, NULL, -1, -1); 81 ResourceType::MAIN_FRAME, NULL, -1, -1);
80 EXPECT_TRUE(result->IsFulfilled( 82 DeclarativeWebRequestData request_data(&match_request, ON_BEFORE_REQUEST);
81 url_matches, 83 request_data.url_matches = &url_matches;
82 WebRequestRule::RequestData(&match_request, ON_BEFORE_REQUEST))); 84 EXPECT_TRUE(result->IsFulfilled(request_data));
83 85
84 net::TestURLRequest wrong_resource_type( 86 net::TestURLRequest wrong_resource_type(
85 GURL("https://www.example.com"), NULL, &context); 87 GURL("https://www.example.com"), NULL, &context);
86 content::ResourceRequestInfo::AllocateForTesting(&wrong_resource_type, 88 content::ResourceRequestInfo::AllocateForTesting(&wrong_resource_type,
87 ResourceType::SUB_FRAME, NULL, -1, -1); 89 ResourceType::SUB_FRAME, NULL, -1, -1);
88 EXPECT_FALSE(result->IsFulfilled( 90 request_data.request = &wrong_resource_type;
89 url_matches, 91 EXPECT_FALSE(result->IsFulfilled(request_data));
90 WebRequestRule::RequestData(&wrong_resource_type, ON_BEFORE_REQUEST)));
91 } 92 }
92 93
93 // The IsFulfilledIndependentlyOfURL method tests that a condition has no 94 // The IsFulfilledIndependentlyOfURL method tests that a condition has no
94 // UrlFilter attributes, and all its (non-UrlFilter) attributes are satisfied. 95 // UrlFilter attributes, and all its (non-UrlFilter) attributes are satisfied.
95 // We test here that: 96 // We test here that:
96 // 1. A non-empty condition without UrlFilter attributes is fulfilled iff its 97 // 1. A non-empty condition without UrlFilter attributes is fulfilled iff its
97 // attributes are fulfilled. 98 // attributes are fulfilled.
98 // 2. An empty condition (in particular, without UrlFilter attributes) is 99 // 2. An empty condition (in particular, without UrlFilter attributes) is
99 // always fulfilled. 100 // always fulfilled.
100 // 3. A condition with a UrlFilter and a non-UrlFilter attribute is never 101 // 3. A condition with a UrlFilter and a non-UrlFilter attribute is never
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 " \"thirdPartyForCookies\": false, \n" 183 " \"thirdPartyForCookies\": false, \n"
183 "}"), 184 "}"),
184 &error); 185 &error);
185 EXPECT_EQ("", error); 186 EXPECT_EQ("", error);
186 ASSERT_TRUE(condition_both.get()); 187 ASSERT_TRUE(condition_both.get());
187 #undef MATCHING_URL_FILTER 188 #undef MATCHING_URL_FILTER
188 189
189 net::TestURLRequestContext context; 190 net::TestURLRequestContext context;
190 net::TestURLRequest https_request(GURL(kUrl), NULL, &context); 191 net::TestURLRequest https_request(GURL(kUrl), NULL, &context);
191 std::set<URLMatcherConditionSet::ID> empty_url_matches; 192 std::set<URLMatcherConditionSet::ID> empty_url_matches;
193 DeclarativeWebRequestData request_data(NULL, ON_BEFORE_REQUEST);
194 request_data.url_matches = &empty_url_matches;
Jeffrey Yasskin 2012/12/19 08:23:06 These assignments into request_data are somewhat a
Jeffrey Yasskin 2012/12/20 01:27:35 And I've reverted them since ConditionSet needed t
192 195
193 // 1. A non-empty condition without UrlFilter attributes is fulfilled iff its 196 // 1. A non-empty condition without UrlFilter attributes is fulfilled iff its
194 // attributes are fulfilled. 197 // attributes are fulfilled.
195 EXPECT_FALSE(condition_no_url_false->IsFulfilled( 198 request_data.request = &https_request;
196 empty_url_matches, 199 EXPECT_FALSE(condition_no_url_false->IsFulfilled(request_data));
197 WebRequestRule::RequestData(&https_request, ON_BEFORE_REQUEST)));
198 200
199 EXPECT_TRUE(condition_no_url_true->IsFulfilled( 201 EXPECT_TRUE(condition_no_url_true->IsFulfilled(request_data));
200 empty_url_matches,
201 WebRequestRule::RequestData(&https_request, ON_BEFORE_REQUEST)));
202 202
203 // 2. An empty condition (in particular, without UrlFilter attributes) is 203 // 2. An empty condition (in particular, without UrlFilter attributes) is
204 // always fulfilled. 204 // always fulfilled.
205 EXPECT_TRUE(condition_empty->IsFulfilled( 205 EXPECT_TRUE(condition_empty->IsFulfilled(request_data));
206 empty_url_matches,
207 WebRequestRule::RequestData(&https_request, ON_BEFORE_REQUEST)));
208 206
209 // 3. A condition with a UrlFilter and a non-UrlFilter attribute is never 207 // 3. A condition with a UrlFilter and a non-UrlFilter attribute is never
210 // fulfilled. 208 // fulfilled.
211 EXPECT_FALSE(condition_both->IsFulfilled( 209 EXPECT_FALSE(condition_both->IsFulfilled(request_data));
212 empty_url_matches,
213 WebRequestRule::RequestData(&https_request, ON_BEFORE_REQUEST)));
214 210
215 // 4. A condition with only a UrlFilter attribute is never fulfilled. 211 // 4. A condition with only a UrlFilter attribute is never fulfilled.
216 EXPECT_FALSE(condition_url->IsFulfilled( 212 EXPECT_FALSE(condition_url->IsFulfilled(request_data));
217 empty_url_matches,
218 WebRequestRule::RequestData(&https_request, ON_BEFORE_REQUEST)));
219 } 213 }
220 214
221 TEST(WebRequestConditionTest, CreateConditionSet) { 215 TEST(WebRequestConditionTest, CreateConditionSet) {
222 // Necessary for TestURLRequest. 216 // Necessary for TestURLRequest.
223 MessageLoop message_loop(MessageLoop::TYPE_IO); 217 MessageLoop message_loop(MessageLoop::TYPE_IO);
224 URLMatcher matcher; 218 URLMatcher matcher;
225 219
226 WebRequestConditionSet::AnyVector conditions; 220 WebRequestConditionSet::AnyVector conditions;
227 221
228 linked_ptr<json_schema_compiler::any::Any> condition1 = make_linked_ptr( 222 linked_ptr<json_schema_compiler::any::Any> condition1 = make_linked_ptr(
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 matcher.AddConditionSets(url_matcher_condition_set); 259 matcher.AddConditionSets(url_matcher_condition_set);
266 260
267 std::set<URLMatcherConditionSet::ID> url_match_ids; 261 std::set<URLMatcherConditionSet::ID> url_match_ids;
268 262
269 // Test that the result is correct and matches http://www.example.com and 263 // Test that the result is correct and matches http://www.example.com and
270 // https://www.example.com 264 // https://www.example.com
271 GURL http_url("http://www.example.com"); 265 GURL http_url("http://www.example.com");
272 net::TestURLRequestContext context; 266 net::TestURLRequestContext context;
273 net::TestURLRequest http_request(http_url, NULL, &context); 267 net::TestURLRequest http_request(http_url, NULL, &context);
274 url_match_ids = matcher.MatchURL(http_url); 268 url_match_ids = matcher.MatchURL(http_url);
275 EXPECT_TRUE(result->IsFulfilled( 269 DeclarativeWebRequestData request_data(NULL, ON_BEFORE_REQUEST);
276 url_match_ids, 270
277 WebRequestRule::RequestData(&http_request, ON_BEFORE_REQUEST))); 271 request_data.request = &http_request;
272 request_data.url_matches = &url_match_ids;
273 EXPECT_TRUE(result->IsFulfilled(request_data));
278 274
279 GURL https_url("https://www.example.com"); 275 GURL https_url("https://www.example.com");
280 url_match_ids = matcher.MatchURL(https_url); 276 url_match_ids = matcher.MatchURL(https_url);
281 net::TestURLRequest https_request(https_url, NULL, &context); 277 net::TestURLRequest https_request(https_url, NULL, &context);
282 EXPECT_TRUE(result->IsFulfilled( 278 request_data.request = &https_request;
283 url_match_ids, 279 request_data.url_matches = &url_match_ids;
284 WebRequestRule::RequestData(&https_request, ON_BEFORE_REQUEST))); 280 EXPECT_TRUE(result->IsFulfilled(request_data));
285 281
286 // Check that both, hostPrefix and hostSuffix are evaluated. 282 // Check that both, hostPrefix and hostSuffix are evaluated.
287 GURL https_foo_url("https://foo.example.com"); 283 GURL https_foo_url("https://foo.example.com");
288 url_match_ids = matcher.MatchURL(https_foo_url); 284 url_match_ids = matcher.MatchURL(https_foo_url);
289 net::TestURLRequest https_foo_request(https_foo_url, NULL, &context); 285 net::TestURLRequest https_foo_request(https_foo_url, NULL, &context);
290 EXPECT_FALSE(result->IsFulfilled( 286 request_data.request = &https_foo_request;
291 url_match_ids, 287 request_data.url_matches = &url_match_ids;
292 WebRequestRule::RequestData(&https_foo_request, ON_BEFORE_REQUEST))); 288 EXPECT_FALSE(result->IsFulfilled(request_data));
293 } 289 }
294 290
295 TEST(WebRequestConditionTest, TestPortFilter) { 291 TEST(WebRequestConditionTest, TestPortFilter) {
296 // Necessary for TestURLRequest. 292 // Necessary for TestURLRequest.
297 MessageLoop message_loop(MessageLoop::TYPE_IO); 293 MessageLoop message_loop(MessageLoop::TYPE_IO);
298 URLMatcher matcher; 294 URLMatcher matcher;
299 295
300 linked_ptr<json_schema_compiler::any::Any> any_condition = 296 linked_ptr<json_schema_compiler::any::Any> any_condition =
301 make_linked_ptr(new json_schema_compiler::any::Any); 297 make_linked_ptr(new json_schema_compiler::any::Any);
302 any_condition->Init(*base::test::ParseJson( 298 any_condition->Init(*base::test::ParseJson(
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 // filters. 371 // filters.
376 " \"requestHeaders\": [{}], \n" 372 " \"requestHeaders\": [{}], \n"
377 " \"responseHeaders\": [{}], \n" 373 " \"responseHeaders\": [{}], \n"
378 "}"), 374 "}"),
379 &error); 375 &error);
380 EXPECT_FALSE(error.empty()); 376 EXPECT_FALSE(error.empty());
381 EXPECT_FALSE(result.get()); 377 EXPECT_FALSE(result.get());
382 } 378 }
383 379
384 } // namespace extensions 380 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698