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

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

Issue 11572061: Create DeclarativeConditionSet, DeclarativeActionSet, and DeclarativeRule templates (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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_attribute.h" 5 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condit ion_attribute.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/memory/scoped_vector.h" 9 #include "base/memory/scoped_vector.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
11 #include "base/values.h" 11 #include "base/values.h"
12 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condit ion.h"
12 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_consta nts.h" 13 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_consta nts.h"
13 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_rule.h "
14 #include "content/public/browser/resource_request_info.h" 14 #include "content/public/browser/resource_request_info.h"
15 #include "net/url_request/url_request_test_util.h" 15 #include "net/url_request/url_request_test_util.h"
16 #include "net/test/test_server.h" 16 #include "net/test/test_server.h"
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 18
19 using base::DictionaryValue; 19 using base::DictionaryValue;
20 using base::FundamentalValue; 20 using base::FundamentalValue;
21 using base::ListValue; 21 using base::ListValue;
22 using base::StringValue; 22 using base::StringValue;
23 using base::Value; 23 using base::Value;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 keys::kResourceTypeKey, &resource_types, &error); 83 keys::kResourceTypeKey, &resource_types, &error);
84 EXPECT_EQ("", error); 84 EXPECT_EQ("", error);
85 ASSERT_TRUE(attribute.get()); 85 ASSERT_TRUE(attribute.get());
86 86
87 net::TestURLRequestContext context; 87 net::TestURLRequestContext context;
88 net::TestURLRequest url_request_ok( 88 net::TestURLRequest url_request_ok(
89 GURL("http://www.example.com"), NULL, &context); 89 GURL("http://www.example.com"), NULL, &context);
90 content::ResourceRequestInfo::AllocateForTesting(&url_request_ok, 90 content::ResourceRequestInfo::AllocateForTesting(&url_request_ok,
91 ResourceType::MAIN_FRAME, NULL, -1, -1); 91 ResourceType::MAIN_FRAME, NULL, -1, -1);
92 EXPECT_TRUE(attribute->IsFulfilled( 92 EXPECT_TRUE(attribute->IsFulfilled(
93 WebRequestRule::RequestData(&url_request_ok, ON_BEFORE_REQUEST))); 93 DeclarativeWebRequestData(&url_request_ok, ON_BEFORE_REQUEST)));
94 94
95 net::TestURLRequest url_request_fail( 95 net::TestURLRequest url_request_fail(
96 GURL("http://www.example.com"), NULL, &context); 96 GURL("http://www.example.com"), NULL, &context);
97 content::ResourceRequestInfo::AllocateForTesting(&url_request_ok, 97 content::ResourceRequestInfo::AllocateForTesting(&url_request_ok,
98 ResourceType::SUB_FRAME, NULL, -1, -1); 98 ResourceType::SUB_FRAME, NULL, -1, -1);
99 EXPECT_FALSE(attribute->IsFulfilled( 99 EXPECT_FALSE(attribute->IsFulfilled(
100 WebRequestRule::RequestData(&url_request_fail, ON_BEFORE_REQUEST))); 100 DeclarativeWebRequestData(&url_request_fail, ON_BEFORE_REQUEST)));
101 } 101 }
102 102
103 TEST(WebRequestConditionAttributeTest, ContentType) { 103 TEST(WebRequestConditionAttributeTest, ContentType) {
104 // Necessary for TestURLRequest. 104 // Necessary for TestURLRequest.
105 MessageLoop message_loop(MessageLoop::TYPE_IO); 105 MessageLoop message_loop(MessageLoop::TYPE_IO);
106 106
107 std::string error; 107 std::string error;
108 scoped_ptr<WebRequestConditionAttribute> result; 108 scoped_ptr<WebRequestConditionAttribute> result;
109 109
110 net::TestServer test_server( 110 net::TestServer test_server(
(...skipping 11 matching lines...) Expand all
122 MessageLoop::current()->Run(); 122 MessageLoop::current()->Run();
123 123
124 ListValue content_types; 124 ListValue content_types;
125 content_types.Append(Value::CreateStringValue("text/plain")); 125 content_types.Append(Value::CreateStringValue("text/plain"));
126 scoped_ptr<WebRequestConditionAttribute> attribute_include = 126 scoped_ptr<WebRequestConditionAttribute> attribute_include =
127 WebRequestConditionAttribute::Create( 127 WebRequestConditionAttribute::Create(
128 keys::kContentTypeKey, &content_types, &error); 128 keys::kContentTypeKey, &content_types, &error);
129 EXPECT_EQ("", error); 129 EXPECT_EQ("", error);
130 ASSERT_TRUE(attribute_include.get()); 130 ASSERT_TRUE(attribute_include.get());
131 EXPECT_FALSE(attribute_include->IsFulfilled( 131 EXPECT_FALSE(attribute_include->IsFulfilled(
132 WebRequestRule::RequestData(&url_request, ON_BEFORE_REQUEST, 132 DeclarativeWebRequestData(&url_request, ON_BEFORE_REQUEST,
133 url_request.response_headers()))); 133 url_request.response_headers())));
134 EXPECT_TRUE(attribute_include->IsFulfilled( 134 EXPECT_TRUE(attribute_include->IsFulfilled(
135 WebRequestRule::RequestData(&url_request, ON_HEADERS_RECEIVED, 135 DeclarativeWebRequestData(&url_request, ON_HEADERS_RECEIVED,
136 url_request.response_headers()))); 136 url_request.response_headers())));
137 137
138 scoped_ptr<WebRequestConditionAttribute> attribute_exclude = 138 scoped_ptr<WebRequestConditionAttribute> attribute_exclude =
139 WebRequestConditionAttribute::Create( 139 WebRequestConditionAttribute::Create(
140 keys::kExcludeContentTypeKey, &content_types, &error); 140 keys::kExcludeContentTypeKey, &content_types, &error);
141 EXPECT_EQ("", error); 141 EXPECT_EQ("", error);
142 ASSERT_TRUE(attribute_exclude.get()); 142 ASSERT_TRUE(attribute_exclude.get());
143 EXPECT_FALSE(attribute_exclude->IsFulfilled( 143 EXPECT_FALSE(attribute_exclude->IsFulfilled(
144 WebRequestRule::RequestData(&url_request, ON_HEADERS_RECEIVED, 144 DeclarativeWebRequestData(&url_request, ON_HEADERS_RECEIVED,
145 url_request.response_headers()))); 145 url_request.response_headers())));
146 146
147 content_types.Clear(); 147 content_types.Clear();
148 content_types.Append(Value::CreateStringValue("something/invalid")); 148 content_types.Append(Value::CreateStringValue("something/invalid"));
149 scoped_ptr<WebRequestConditionAttribute> attribute_unincluded = 149 scoped_ptr<WebRequestConditionAttribute> attribute_unincluded =
150 WebRequestConditionAttribute::Create( 150 WebRequestConditionAttribute::Create(
151 keys::kContentTypeKey, &content_types, &error); 151 keys::kContentTypeKey, &content_types, &error);
152 EXPECT_EQ("", error); 152 EXPECT_EQ("", error);
153 ASSERT_TRUE(attribute_unincluded.get()); 153 ASSERT_TRUE(attribute_unincluded.get());
154 EXPECT_FALSE(attribute_unincluded->IsFulfilled( 154 EXPECT_FALSE(attribute_unincluded->IsFulfilled(
155 WebRequestRule::RequestData(&url_request, ON_HEADERS_RECEIVED, 155 DeclarativeWebRequestData(&url_request, ON_HEADERS_RECEIVED,
156 url_request.response_headers()))); 156 url_request.response_headers())));
157 157
158 scoped_ptr<WebRequestConditionAttribute> attribute_unexcluded = 158 scoped_ptr<WebRequestConditionAttribute> attribute_unexcluded =
159 WebRequestConditionAttribute::Create( 159 WebRequestConditionAttribute::Create(
160 keys::kExcludeContentTypeKey, &content_types, &error); 160 keys::kExcludeContentTypeKey, &content_types, &error);
161 EXPECT_EQ("", error); 161 EXPECT_EQ("", error);
162 ASSERT_TRUE(attribute_unexcluded.get()); 162 ASSERT_TRUE(attribute_unexcluded.get());
163 EXPECT_TRUE(attribute_unexcluded->IsFulfilled( 163 EXPECT_TRUE(attribute_unexcluded->IsFulfilled(
164 WebRequestRule::RequestData(&url_request, ON_HEADERS_RECEIVED, 164 DeclarativeWebRequestData(&url_request, ON_HEADERS_RECEIVED,
165 url_request.response_headers()))); 165 url_request.response_headers())));
166 } 166 }
167 167
168 // Testing WebRequestConditionAttributeThirdParty. 168 // Testing WebRequestConditionAttributeThirdParty.
169 TEST(WebRequestConditionAttributeTest, ThirdParty) { 169 TEST(WebRequestConditionAttributeTest, ThirdParty) {
170 // Necessary for TestURLRequest. 170 // Necessary for TestURLRequest.
171 MessageLoop message_loop(MessageLoop::TYPE_IO); 171 MessageLoop message_loop(MessageLoop::TYPE_IO);
172 172
173 std::string error; 173 std::string error;
174 const FundamentalValue value_true(true); 174 const FundamentalValue value_true(true);
175 // This attribute matches only third party requests. 175 // This attribute matches only third party requests.
(...skipping 17 matching lines...) Expand all
193 const GURL url_b("http://b.com"); 193 const GURL url_b("http://b.com");
194 net::TestURLRequestContext context; 194 net::TestURLRequestContext context;
195 net::TestDelegate delegate; 195 net::TestDelegate delegate;
196 net::TestURLRequest url_request(url_a, &delegate, &context); 196 net::TestURLRequest url_request(url_a, &delegate, &context);
197 197
198 for (unsigned int i = 1; i <= kLastActiveStage; i <<= 1) { 198 for (unsigned int i = 1; i <= kLastActiveStage; i <<= 1) {
199 if (!(kActiveStages & i)) 199 if (!(kActiveStages & i))
200 continue; 200 continue;
201 const RequestStage stage = static_cast<RequestStage>(i); 201 const RequestStage stage = static_cast<RequestStage>(i);
202 url_request.set_first_party_for_cookies(url_empty); 202 url_request.set_first_party_for_cookies(url_empty);
203 EXPECT_FALSE(third_party_attribute->IsFulfilled(WebRequestRule::RequestData( 203 EXPECT_FALSE(third_party_attribute->IsFulfilled(DeclarativeWebRequestData(
204 &url_request, stage))); 204 &url_request, stage)));
205 EXPECT_TRUE(first_party_attribute->IsFulfilled(WebRequestRule::RequestData( 205 EXPECT_TRUE(first_party_attribute->IsFulfilled(DeclarativeWebRequestData(
206 &url_request, stage))); 206 &url_request, stage)));
207 207
208 url_request.set_first_party_for_cookies(url_b); 208 url_request.set_first_party_for_cookies(url_b);
209 EXPECT_TRUE(third_party_attribute->IsFulfilled(WebRequestRule::RequestData( 209 EXPECT_TRUE(third_party_attribute->IsFulfilled(DeclarativeWebRequestData(
210 &url_request, stage))); 210 &url_request, stage)));
211 EXPECT_FALSE(first_party_attribute->IsFulfilled(WebRequestRule::RequestData( 211 EXPECT_FALSE(first_party_attribute->IsFulfilled(DeclarativeWebRequestData(
212 &url_request, stage))); 212 &url_request, stage)));
213 213
214 url_request.set_first_party_for_cookies(url_a); 214 url_request.set_first_party_for_cookies(url_a);
215 EXPECT_FALSE(third_party_attribute->IsFulfilled(WebRequestRule::RequestData( 215 EXPECT_FALSE(third_party_attribute->IsFulfilled(DeclarativeWebRequestData(
216 &url_request, stage))); 216 &url_request, stage)));
217 EXPECT_TRUE(first_party_attribute->IsFulfilled(WebRequestRule::RequestData( 217 EXPECT_TRUE(first_party_attribute->IsFulfilled(DeclarativeWebRequestData(
218 &url_request, stage))); 218 &url_request, stage)));
219 } 219 }
220 } 220 }
221 221
222 // Testing WebRequestConditionAttributeStages. This iterates over all stages, 222 // Testing WebRequestConditionAttributeStages. This iterates over all stages,
223 // and tests a couple of "stage" attributes -- one created with an empty set of 223 // and tests a couple of "stage" attributes -- one created with an empty set of
224 // applicable stages, one for each stage applicable for that stage, and one 224 // applicable stages, one for each stage applicable for that stage, and one
225 // applicable in all stages. 225 // applicable in all stages.
226 TEST(WebRequestConditionAttributeTest, Stages) { 226 TEST(WebRequestConditionAttributeTest, Stages) {
227 // Necessary for TestURLRequest. 227 // Necessary for TestURLRequest.
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 EXPECT_EQ("", error); 276 EXPECT_EQ("", error);
277 ASSERT_TRUE(one_stage_attributes.back() != NULL); 277 ASSERT_TRUE(one_stage_attributes.back() != NULL);
278 } 278 }
279 279
280 const GURL url_empty; 280 const GURL url_empty;
281 net::TestURLRequestContext context; 281 net::TestURLRequestContext context;
282 net::TestDelegate delegate; 282 net::TestDelegate delegate;
283 net::TestURLRequest url_request(url_empty, &delegate, &context); 283 net::TestURLRequest url_request(url_empty, &delegate, &context);
284 284
285 for (size_t i = 0; i < arraysize(active_stages); ++i) { 285 for (size_t i = 0; i < arraysize(active_stages); ++i) {
286 EXPECT_FALSE(empty_attribute->IsFulfilled(WebRequestRule::RequestData( 286 EXPECT_FALSE(empty_attribute->IsFulfilled(DeclarativeWebRequestData(
287 &url_request, active_stages[i].first))); 287 &url_request, active_stages[i].first)));
288 288
289 for (size_t j = 0; j < one_stage_attributes.size(); ++j) { 289 for (size_t j = 0; j < one_stage_attributes.size(); ++j) {
290 EXPECT_EQ( 290 EXPECT_EQ(
291 i == j, 291 i == j,
292 one_stage_attributes[j]->IsFulfilled(WebRequestRule::RequestData( 292 one_stage_attributes[j]->IsFulfilled(DeclarativeWebRequestData(
293 &url_request, active_stages[i].first))); 293 &url_request, active_stages[i].first)));
294 } 294 }
295 295
296 EXPECT_TRUE(attribute_with_all->IsFulfilled(WebRequestRule::RequestData( 296 EXPECT_TRUE(attribute_with_all->IsFulfilled(DeclarativeWebRequestData(
297 &url_request, active_stages[i].first))); 297 &url_request, active_stages[i].first)));
298 } 298 }
299 } 299 }
300 300
301 namespace { 301 namespace {
302 302
303 // Builds a vector of vectors of string pointers from an array of strings. 303 // Builds a vector of vectors of string pointers from an array of strings.
304 // |array| is in fact a sequence of arrays. The array |sizes| captures the sizes 304 // |array| is in fact a sequence of arrays. The array |sizes| captures the sizes
305 // of all parts of |array|, and |size| is the length of |sizes| itself. 305 // of all parts of |array|, and |size| is the length of |sizes| itself.
306 // Example (this is pseudo-code, not C++): 306 // Example (this is pseudo-code, not C++):
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 ASSERT_TRUE(temp.get()); 379 ASSERT_TRUE(temp.get());
380 contains_headers.Append(temp.release()); 380 contains_headers.Append(temp.release());
381 } 381 }
382 382
383 std::string error; 383 std::string error;
384 scoped_ptr<WebRequestConditionAttribute> attribute = 384 scoped_ptr<WebRequestConditionAttribute> attribute =
385 WebRequestConditionAttribute::Create(key, &contains_headers, &error); 385 WebRequestConditionAttribute::Create(key, &contains_headers, &error);
386 ASSERT_EQ("", error); 386 ASSERT_EQ("", error);
387 ASSERT_TRUE(attribute.get()); 387 ASSERT_TRUE(attribute.get());
388 388
389 *result = attribute->IsFulfilled(WebRequestRule::RequestData( 389 *result = attribute->IsFulfilled(DeclarativeWebRequestData(
390 url_request, stage, url_request->response_headers())); 390 url_request, stage, url_request->response_headers()));
391 } 391 }
392 392
393 } // namespace 393 } // namespace
394 394
395 // Here we test WebRequestConditionAttributeRequestHeaders for matching 395 // Here we test WebRequestConditionAttributeRequestHeaders for matching
396 // correctly against request headers. This test is not as extensive as 396 // correctly against request headers. This test is not as extensive as
397 // "ResponseHeaders" (below), because the header-matching code is shared 397 // "ResponseHeaders" (below), because the header-matching code is shared
398 // by both types of condition attributes, so it is enough to test it once. 398 // by both types of condition attributes, so it is enough to test it once.
399 TEST(WebRequestConditionAttributeTest, RequestHeaders) { 399 TEST(WebRequestConditionAttributeTest, RequestHeaders) {
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 keys::kValueEqualsKey, "valueB" 650 keys::kValueEqualsKey, "valueB"
651 }; 651 };
652 const size_t kExistingSize[] = { arraysize(kExisting) }; 652 const size_t kExistingSize[] = { arraysize(kExisting) };
653 GetArrayAsVector(kExisting, kExistingSize, 1u, &tests); 653 GetArrayAsVector(kExisting, kExistingSize, 1u, &tests);
654 MatchAndCheck( 654 MatchAndCheck(
655 tests, keys::kExcludeResponseHeadersKey, stage, &url_request, &result); 655 tests, keys::kExcludeResponseHeadersKey, stage, &url_request, &result);
656 EXPECT_FALSE(result); 656 EXPECT_FALSE(result);
657 } 657 }
658 658
659 } // namespace extensions 659 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698