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

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

Issue 14113053: chrome: Use base::MessageLoop. (Part 3) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase again Created 7 years, 6 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_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/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 13 matching lines...) Expand all
24 namespace { 24 namespace {
25 const char kUnknownConditionName[] = "unknownType"; 25 const char kUnknownConditionName[] = "unknownType";
26 } // namespace 26 } // namespace
27 27
28 namespace extensions { 28 namespace extensions {
29 29
30 namespace keys = declarative_webrequest_constants; 30 namespace keys = declarative_webrequest_constants;
31 31
32 TEST(WebRequestConditionAttributeTest, CreateConditionAttribute) { 32 TEST(WebRequestConditionAttributeTest, CreateConditionAttribute) {
33 // Necessary for TestURLRequest. 33 // Necessary for TestURLRequest.
34 MessageLoop message_loop(MessageLoop::TYPE_IO); 34 base::MessageLoop message_loop(base::MessageLoop::TYPE_IO);
35 35
36 std::string error; 36 std::string error;
37 scoped_refptr<const WebRequestConditionAttribute> result; 37 scoped_refptr<const WebRequestConditionAttribute> result;
38 StringValue string_value("main_frame"); 38 StringValue string_value("main_frame");
39 ListValue resource_types; 39 ListValue resource_types;
40 resource_types.Append(Value::CreateStringValue("main_frame")); 40 resource_types.Append(Value::CreateStringValue("main_frame"));
41 41
42 // Test wrong condition name passed. 42 // Test wrong condition name passed.
43 error.clear(); 43 error.clear();
44 result = WebRequestConditionAttribute::Create( 44 result = WebRequestConditionAttribute::Create(
(...skipping 20 matching lines...) Expand all
65 keys::kResourceTypeKey, &resource_types, &error); 65 keys::kResourceTypeKey, &resource_types, &error);
66 EXPECT_EQ("", error); 66 EXPECT_EQ("", error);
67 ASSERT_TRUE(result.get()); 67 ASSERT_TRUE(result.get());
68 EXPECT_EQ(WebRequestConditionAttribute::CONDITION_RESOURCE_TYPE, 68 EXPECT_EQ(WebRequestConditionAttribute::CONDITION_RESOURCE_TYPE,
69 result->GetType()); 69 result->GetType());
70 EXPECT_EQ(std::string(keys::kResourceTypeKey), result->GetName()); 70 EXPECT_EQ(std::string(keys::kResourceTypeKey), result->GetName());
71 } 71 }
72 72
73 TEST(WebRequestConditionAttributeTest, ResourceType) { 73 TEST(WebRequestConditionAttributeTest, ResourceType) {
74 // Necessary for TestURLRequest. 74 // Necessary for TestURLRequest.
75 MessageLoop message_loop(MessageLoop::TYPE_IO); 75 base::MessageLoop message_loop(base::MessageLoop::TYPE_IO);
76 76
77 std::string error; 77 std::string error;
78 ListValue resource_types; 78 ListValue resource_types;
79 // The 'sub_frame' value is chosen arbitrarily, so as the corresponding 79 // The 'sub_frame' value is chosen arbitrarily, so as the corresponding
80 // ResourceType::Type is not 0, the default value. 80 // ResourceType::Type is not 0, the default value.
81 resource_types.Append(Value::CreateStringValue("sub_frame")); 81 resource_types.Append(Value::CreateStringValue("sub_frame"));
82 82
83 scoped_refptr<const WebRequestConditionAttribute> attribute = 83 scoped_refptr<const WebRequestConditionAttribute> attribute =
84 WebRequestConditionAttribute::Create( 84 WebRequestConditionAttribute::Create(
85 keys::kResourceTypeKey, &resource_types, &error); 85 keys::kResourceTypeKey, &resource_types, &error);
(...skipping 12 matching lines...) Expand all
98 net::TestURLRequest url_request_fail( 98 net::TestURLRequest url_request_fail(
99 GURL("http://www.example.com"), NULL, &context, NULL); 99 GURL("http://www.example.com"), NULL, &context, NULL);
100 content::ResourceRequestInfo::AllocateForTesting(&url_request_fail, 100 content::ResourceRequestInfo::AllocateForTesting(&url_request_fail,
101 ResourceType::MAIN_FRAME, NULL, -1, -1); 101 ResourceType::MAIN_FRAME, NULL, -1, -1);
102 EXPECT_FALSE(attribute->IsFulfilled(WebRequestData(&url_request_fail, 102 EXPECT_FALSE(attribute->IsFulfilled(WebRequestData(&url_request_fail,
103 ON_BEFORE_REQUEST))); 103 ON_BEFORE_REQUEST)));
104 } 104 }
105 105
106 TEST(WebRequestConditionAttributeTest, ContentType) { 106 TEST(WebRequestConditionAttributeTest, ContentType) {
107 // Necessary for TestURLRequest. 107 // Necessary for TestURLRequest.
108 MessageLoop message_loop(MessageLoop::TYPE_IO); 108 base::MessageLoop message_loop(base::MessageLoop::TYPE_IO);
109 109
110 std::string error; 110 std::string error;
111 scoped_refptr<const WebRequestConditionAttribute> result; 111 scoped_refptr<const WebRequestConditionAttribute> result;
112 112
113 net::SpawnedTestServer test_server( 113 net::SpawnedTestServer test_server(
114 net::SpawnedTestServer::TYPE_HTTP, 114 net::SpawnedTestServer::TYPE_HTTP,
115 net::SpawnedTestServer::kLocalhost, 115 net::SpawnedTestServer::kLocalhost,
116 base::FilePath(FILE_PATH_LITERAL( 116 base::FilePath(FILE_PATH_LITERAL(
117 "chrome/test/data/extensions/api_test/webrequest/declarative"))); 117 "chrome/test/data/extensions/api_test/webrequest/declarative")));
118 ASSERT_TRUE(test_server.Start()); 118 ASSERT_TRUE(test_server.Start());
119 119
120 net::TestURLRequestContext context; 120 net::TestURLRequestContext context;
121 net::TestDelegate delegate; 121 net::TestDelegate delegate;
122 net::TestURLRequest url_request( 122 net::TestURLRequest url_request(
123 test_server.GetURL("files/headers.html"), &delegate, &context, NULL); 123 test_server.GetURL("files/headers.html"), &delegate, &context, NULL);
124 url_request.Start(); 124 url_request.Start();
125 MessageLoop::current()->Run(); 125 base::MessageLoop::current()->Run();
126 126
127 ListValue content_types; 127 ListValue content_types;
128 content_types.Append(Value::CreateStringValue("text/plain")); 128 content_types.Append(Value::CreateStringValue("text/plain"));
129 scoped_refptr<const WebRequestConditionAttribute> attribute_include = 129 scoped_refptr<const WebRequestConditionAttribute> attribute_include =
130 WebRequestConditionAttribute::Create( 130 WebRequestConditionAttribute::Create(
131 keys::kContentTypeKey, &content_types, &error); 131 keys::kContentTypeKey, &content_types, &error);
132 EXPECT_EQ("", error); 132 EXPECT_EQ("", error);
133 ASSERT_TRUE(attribute_include.get()); 133 ASSERT_TRUE(attribute_include.get());
134 EXPECT_FALSE(attribute_include->IsFulfilled( 134 EXPECT_FALSE(attribute_include->IsFulfilled(
135 WebRequestData(&url_request, ON_BEFORE_REQUEST, 135 WebRequestData(&url_request, ON_BEFORE_REQUEST,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 EXPECT_TRUE(attribute_unexcluded->IsFulfilled( 167 EXPECT_TRUE(attribute_unexcluded->IsFulfilled(
168 WebRequestData(&url_request, ON_HEADERS_RECEIVED, 168 WebRequestData(&url_request, ON_HEADERS_RECEIVED,
169 url_request.response_headers()))); 169 url_request.response_headers())));
170 EXPECT_EQ(std::string(keys::kExcludeContentTypeKey), 170 EXPECT_EQ(std::string(keys::kExcludeContentTypeKey),
171 attribute_unexcluded->GetName()); 171 attribute_unexcluded->GetName());
172 } 172 }
173 173
174 // Testing WebRequestConditionAttributeThirdParty. 174 // Testing WebRequestConditionAttributeThirdParty.
175 TEST(WebRequestConditionAttributeTest, ThirdParty) { 175 TEST(WebRequestConditionAttributeTest, ThirdParty) {
176 // Necessary for TestURLRequest. 176 // Necessary for TestURLRequest.
177 MessageLoop message_loop(MessageLoop::TYPE_IO); 177 base::MessageLoop message_loop(base::MessageLoop::TYPE_IO);
178 178
179 std::string error; 179 std::string error;
180 const FundamentalValue value_true(true); 180 const FundamentalValue value_true(true);
181 // This attribute matches only third party requests. 181 // This attribute matches only third party requests.
182 scoped_refptr<const WebRequestConditionAttribute> third_party_attribute = 182 scoped_refptr<const WebRequestConditionAttribute> third_party_attribute =
183 WebRequestConditionAttribute::Create(keys::kThirdPartyKey, 183 WebRequestConditionAttribute::Create(keys::kThirdPartyKey,
184 &value_true, 184 &value_true,
185 &error); 185 &error);
186 ASSERT_EQ("", error); 186 ASSERT_EQ("", error);
187 ASSERT_TRUE(third_party_attribute.get()); 187 ASSERT_TRUE(third_party_attribute.get());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 stage))); 228 stage)));
229 } 229 }
230 } 230 }
231 231
232 // Testing WebRequestConditionAttributeStages. This iterates over all stages, 232 // Testing WebRequestConditionAttributeStages. This iterates over all stages,
233 // and tests a couple of "stage" attributes -- one created with an empty set of 233 // and tests a couple of "stage" attributes -- one created with an empty set of
234 // applicable stages, one for each stage applicable for that stage, and one 234 // applicable stages, one for each stage applicable for that stage, and one
235 // applicable in all stages. 235 // applicable in all stages.
236 TEST(WebRequestConditionAttributeTest, Stages) { 236 TEST(WebRequestConditionAttributeTest, Stages) {
237 // Necessary for TestURLRequest. 237 // Necessary for TestURLRequest.
238 MessageLoop message_loop(MessageLoop::TYPE_IO); 238 base::MessageLoop message_loop(base::MessageLoop::TYPE_IO);
239 239
240 typedef std::pair<RequestStage, const char*> StageNamePair; 240 typedef std::pair<RequestStage, const char*> StageNamePair;
241 static const StageNamePair active_stages[] = { 241 static const StageNamePair active_stages[] = {
242 StageNamePair(ON_BEFORE_REQUEST, keys::kOnBeforeRequestEnum), 242 StageNamePair(ON_BEFORE_REQUEST, keys::kOnBeforeRequestEnum),
243 StageNamePair(ON_BEFORE_SEND_HEADERS, keys::kOnBeforeSendHeadersEnum), 243 StageNamePair(ON_BEFORE_SEND_HEADERS, keys::kOnBeforeSendHeadersEnum),
244 StageNamePair(ON_HEADERS_RECEIVED, keys::kOnHeadersReceivedEnum), 244 StageNamePair(ON_HEADERS_RECEIVED, keys::kOnHeadersReceivedEnum),
245 StageNamePair(ON_AUTH_REQUIRED, keys::kOnAuthRequiredEnum) 245 StageNamePair(ON_AUTH_REQUIRED, keys::kOnAuthRequiredEnum)
246 }; 246 };
247 247
248 // Check that exactly all active stages are considered in this test. 248 // Check that exactly all active stages are considered in this test.
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 } 404 }
405 405
406 } // namespace 406 } // namespace
407 407
408 // Here we test WebRequestConditionAttributeRequestHeaders for matching 408 // Here we test WebRequestConditionAttributeRequestHeaders for matching
409 // correctly against request headers. This test is not as extensive as 409 // correctly against request headers. This test is not as extensive as
410 // "ResponseHeaders" (below), because the header-matching code is shared 410 // "ResponseHeaders" (below), because the header-matching code is shared
411 // by both types of condition attributes, so it is enough to test it once. 411 // by both types of condition attributes, so it is enough to test it once.
412 TEST(WebRequestConditionAttributeTest, RequestHeaders) { 412 TEST(WebRequestConditionAttributeTest, RequestHeaders) {
413 // Necessary for TestURLRequest. 413 // Necessary for TestURLRequest.
414 MessageLoop message_loop(MessageLoop::TYPE_IO); 414 base::MessageLoop message_loop(base::MessageLoop::TYPE_IO);
415 415
416 net::TestURLRequestContext context; 416 net::TestURLRequestContext context;
417 net::TestDelegate delegate; 417 net::TestDelegate delegate;
418 net::TestURLRequest url_request(GURL("http://example.com"), // Dummy URL. 418 net::TestURLRequest url_request(GURL("http://example.com"), // Dummy URL.
419 &delegate, &context, NULL); 419 &delegate, &context, NULL);
420 url_request.SetExtraRequestHeaderByName( 420 url_request.SetExtraRequestHeaderByName(
421 "Custom-header", "custom/value", true /* overwrite */); 421 "Custom-header", "custom/value", true /* overwrite */);
422 url_request.Start(); 422 url_request.Start();
423 MessageLoop::current()->Run(); 423 base::MessageLoop::current()->Run();
424 424
425 std::vector<std::vector<const std::string*> > tests; 425 std::vector<std::vector<const std::string*> > tests;
426 bool result = false; 426 bool result = false;
427 427
428 const RequestStage stage = ON_BEFORE_SEND_HEADERS; 428 const RequestStage stage = ON_BEFORE_SEND_HEADERS;
429 429
430 // First set of test data -- passing conjunction. 430 // First set of test data -- passing conjunction.
431 const std::string kPassingCondition[] = { 431 const std::string kPassingCondition[] = {
432 keys::kNameContainsKey, "CuStOm", // Header names are case insensitive. 432 keys::kNameContainsKey, "CuStOm", // Header names are case insensitive.
433 keys::kNameEqualsKey, "custom-header", 433 keys::kNameEqualsKey, "custom-header",
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 tests, keys::kExcludeRequestHeadersKey, stage, &url_request, &result); 482 tests, keys::kExcludeRequestHeadersKey, stage, &url_request, &result);
483 EXPECT_FALSE(result); 483 EXPECT_FALSE(result);
484 } 484 }
485 485
486 // Here we test WebRequestConditionAttributeResponseHeaders for: 486 // Here we test WebRequestConditionAttributeResponseHeaders for:
487 // 1. Correct implementation of prefix/suffix/contains/equals matching. 487 // 1. Correct implementation of prefix/suffix/contains/equals matching.
488 // 2. Performing logical disjunction (||) between multiple specifications. 488 // 2. Performing logical disjunction (||) between multiple specifications.
489 // 3. Negating the match in case of 'doesNotContainHeaders'. 489 // 3. Negating the match in case of 'doesNotContainHeaders'.
490 TEST(WebRequestConditionAttributeTest, ResponseHeaders) { 490 TEST(WebRequestConditionAttributeTest, ResponseHeaders) {
491 // Necessary for TestURLRequest. 491 // Necessary for TestURLRequest.
492 MessageLoop message_loop(MessageLoop::TYPE_IO); 492 base::MessageLoop message_loop(base::MessageLoop::TYPE_IO);
493 493
494 net::SpawnedTestServer test_server( 494 net::SpawnedTestServer test_server(
495 net::SpawnedTestServer::TYPE_HTTP, 495 net::SpawnedTestServer::TYPE_HTTP,
496 net::SpawnedTestServer::kLocalhost, 496 net::SpawnedTestServer::kLocalhost,
497 base::FilePath(FILE_PATH_LITERAL( 497 base::FilePath(FILE_PATH_LITERAL(
498 "chrome/test/data/extensions/api_test/webrequest/declarative"))); 498 "chrome/test/data/extensions/api_test/webrequest/declarative")));
499 ASSERT_TRUE(test_server.Start()); 499 ASSERT_TRUE(test_server.Start());
500 500
501 net::TestURLRequestContext context; 501 net::TestURLRequestContext context;
502 net::TestDelegate delegate; 502 net::TestDelegate delegate;
503 net::TestURLRequest url_request(test_server.GetURL("files/headers.html"), 503 net::TestURLRequest url_request(test_server.GetURL("files/headers.html"),
504 &delegate, &context, NULL); 504 &delegate, &context, NULL);
505 url_request.Start(); 505 url_request.Start();
506 MessageLoop::current()->Run(); 506 base::MessageLoop::current()->Run();
507 507
508 // In all the tests below we assume that the server includes the headers 508 // In all the tests below we assume that the server includes the headers
509 // Custom-Header: custom/value 509 // Custom-Header: custom/value
510 // Custom-Header-B: valueA 510 // Custom-Header-B: valueA
511 // Custom-Header-B: valueB 511 // Custom-Header-B: valueB
512 // Custom-Header-C: valueC, valueD 512 // Custom-Header-C: valueC, valueD
513 // Custom-Header-D: 513 // Custom-Header-D:
514 // in the response, but does not include "Non-existing: void". 514 // in the response, but does not include "Non-existing: void".
515 515
516 std::vector< std::vector<const std::string*> > tests; 516 std::vector< std::vector<const std::string*> > tests;
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 keys::kValueEqualsKey, "valueB" 663 keys::kValueEqualsKey, "valueB"
664 }; 664 };
665 const size_t kExistingSize[] = { arraysize(kExisting) }; 665 const size_t kExistingSize[] = { arraysize(kExisting) };
666 GetArrayAsVector(kExisting, kExistingSize, 1u, &tests); 666 GetArrayAsVector(kExisting, kExistingSize, 1u, &tests);
667 MatchAndCheck( 667 MatchAndCheck(
668 tests, keys::kExcludeResponseHeadersKey, stage, &url_request, &result); 668 tests, keys::kExcludeResponseHeadersKey, stage, &url_request, &result);
669 EXPECT_FALSE(result); 669 EXPECT_FALSE(result);
670 } 670 }
671 671
672 } // namespace extensions 672 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698