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

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

Issue 11038031: Adding condition attributes for request headers to Declarative WebRequest (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased (only). Created 8 years, 2 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/file_path.h" 8 #include "base/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 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 return dictionary.Pass(); 291 return dictionary.Pass();
292 } 292 }
293 293
294 // Returns whether the response headers from |url_request| satisfy the match 294 // Returns whether the response headers from |url_request| satisfy the match
295 // criteria given in |tests|. For at least one |i| all tests from |tests[i]| 295 // criteria given in |tests|. For at least one |i| all tests from |tests[i]|
296 // must pass. If |positive_test| is true, the dictionary is interpreted as the 296 // must pass. If |positive_test| is true, the dictionary is interpreted as the
297 // containsHeaders property of a RequestMatcher, otherwise as 297 // containsHeaders property of a RequestMatcher, otherwise as
298 // doesNotContainHeaders. 298 // doesNotContainHeaders.
299 void MatchAndCheck(const std::vector< std::vector<const std::string*> >& tests, 299 void MatchAndCheck(const std::vector< std::vector<const std::string*> >& tests,
300 const std::string& key, 300 const std::string& key,
301 RequestStage stage,
301 net::URLRequest* url_request, 302 net::URLRequest* url_request,
302 bool* result) { 303 bool* result) {
303 ListValue contains_headers; 304 ListValue contains_headers;
304 for (size_t i = 0; i < tests.size(); ++i) { 305 for (size_t i = 0; i < tests.size(); ++i) {
305 scoped_ptr<DictionaryValue> temp(GetDictionaryFromArray(tests[i])); 306 scoped_ptr<DictionaryValue> temp(GetDictionaryFromArray(tests[i]));
306 ASSERT_TRUE(temp.get() != NULL); 307 ASSERT_TRUE(temp.get() != NULL);
307 contains_headers.Append(temp.release()); 308 contains_headers.Append(temp.release());
308 } 309 }
309 310
310 std::string error; 311 std::string error;
311 scoped_ptr<WebRequestConditionAttribute> attribute = 312 scoped_ptr<WebRequestConditionAttribute> attribute =
312 WebRequestConditionAttribute::Create(key, &contains_headers, &error); 313 WebRequestConditionAttribute::Create(key, &contains_headers, &error);
313 ASSERT_EQ("", error); 314 ASSERT_EQ("", error);
314 ASSERT_TRUE(attribute.get() != NULL); 315 ASSERT_TRUE(attribute.get() != NULL);
315 316
316 *result = attribute->IsFulfilled(WebRequestRule::RequestData( 317 *result = attribute->IsFulfilled(WebRequestRule::RequestData(
317 url_request, ON_HEADERS_RECEIVED, url_request->response_headers())); 318 url_request, stage, url_request->response_headers()));
318 } 319 }
319 320
320 } // namespace 321 } // namespace
321 322
323 // Here we test WebRequestConditionAttributeRequestHeaders for matching
324 // correctly against request headers. This test is not as extensive as
325 // "ResponseHeaders" (below), because the header-matching code is shared
326 // by both types of condition attributes, so it is enough to test it once.
327 TEST(WebRequestConditionAttributeTest, RequestHeaders) {
328 // Necessary for TestURLRequest.
329 MessageLoop message_loop(MessageLoop::TYPE_IO);
330
331 TestURLRequestContext context;
332 TestDelegate delegate;
333 TestURLRequest url_request(GURL("http://example.com"), // Dummy URL.
334 &delegate, &context);
335 url_request.SetExtraRequestHeaderByName(
336 "Custom-header", "custom/value", true /* overwrite */);
337 url_request.Start();
338 MessageLoop::current()->Run();
339
340 std::vector<std::vector<const std::string*> > tests;
341 bool result = false;
342
343 const RequestStage stage = ON_BEFORE_SEND_HEADERS;
344
345 // First set of test data -- passing conjunction.
346 const std::string kPassingCondition[] = {
347 keys::kNameContainsKey, "CuStOm", // Header names are case insensitive.
348 keys::kNameEqualsKey, "custom-header",
349 keys::kValueSuffixKey, "alue",
350 keys::kValuePrefixKey, "custom/value"
351 };
352 const size_t kPassingConditionSizes[] = { arraysize(kPassingCondition) };
353 GetArrayAsVector(kPassingCondition, kPassingConditionSizes, 1u, &tests);
354 // Positive filter, passing (conjunction of tests).
355 MatchAndCheck(tests, keys::kRequestHeadersKey, stage, &url_request, &result);
356 EXPECT_TRUE(result);
357 // Negative filter, failing (conjunction of tests).
358 MatchAndCheck(
359 tests, keys::kExcludeRequestHeadersKey, stage, &url_request, &result);
360 EXPECT_FALSE(result);
361
362 // Second set of test data -- failing disjunction.
363 const std::string kFailCondition[] = {
364 keys::kNameSuffixKey, "Custom", // Test 1.
365 keys::kNameEqualsKey, "ustom-valu", // Test 2.
366 keys::kValuePrefixKey, "custom ", // Test 3.
367 keys::kValueContainsKey, " value" // Test 4.
368 };
369 const size_t kFailConditionSizes[] = { 2u, 2u, 2u, 2u };
370 GetArrayAsVector(kFailCondition, kFailConditionSizes, 4u, &tests);
371 // Positive filter, failing (disjunction of tests).
372 MatchAndCheck(tests, keys::kRequestHeadersKey, stage, &url_request, &result);
373 EXPECT_FALSE(result);
374 // Negative filter, passing (disjunction of tests).
375 MatchAndCheck(
376 tests, keys::kExcludeRequestHeadersKey, stage, &url_request, &result);
377 EXPECT_TRUE(result);
378
379 // Third set of test data, corner case -- empty disjunction.
380 GetArrayAsVector(NULL, NULL, 0u, &tests);
381 // Positive filter, failing (no test to pass).
382 MatchAndCheck(tests, keys::kRequestHeadersKey, stage, &url_request, &result);
383 EXPECT_FALSE(result);
384 // Negative filter, passing (no test to fail).
385 MatchAndCheck(
386 tests, keys::kExcludeRequestHeadersKey, stage, &url_request, &result);
387 EXPECT_TRUE(result);
388
389 // Fourth set of test data, corner case -- empty conjunction.
390 const size_t kEmptyConjunctionSizes[] = { 0u };
391 GetArrayAsVector(NULL, kEmptyConjunctionSizes, 1u, &tests);
392 // Positive filter, passing (trivial test).
393 MatchAndCheck(tests, keys::kRequestHeadersKey, stage, &url_request, &result);
394 EXPECT_TRUE(result);
395 // Negative filter, failing.
396 MatchAndCheck(
397 tests, keys::kExcludeRequestHeadersKey, stage, &url_request, &result);
398 EXPECT_FALSE(result);
399 }
400
322 // Here we test WebRequestConditionAttributeResponseHeaders for: 401 // Here we test WebRequestConditionAttributeResponseHeaders for:
323 // 1. Correct implementation of prefix/suffix/contains/equals matching. 402 // 1. Correct implementation of prefix/suffix/contains/equals matching.
324 // 2. Performing logical disjunction (||) between multiple specifications. 403 // 2. Performing logical disjunction (||) between multiple specifications.
325 // 3. Negating the match in case of 'doesNotContainHeaders'. 404 // 3. Negating the match in case of 'doesNotContainHeaders'.
326 TEST(WebRequestConditionAttributeTest, Headers) { 405 TEST(WebRequestConditionAttributeTest, ResponseHeaders) {
327 // Necessary for TestURLRequest. 406 // Necessary for TestURLRequest.
328 MessageLoop message_loop(MessageLoop::TYPE_IO); 407 MessageLoop message_loop(MessageLoop::TYPE_IO);
329 408
330 net::TestServer test_server( 409 net::TestServer test_server(
331 net::TestServer::TYPE_HTTP, 410 net::TestServer::TYPE_HTTP,
332 net::TestServer::kLocalhost, 411 net::TestServer::kLocalhost,
333 FilePath(FILE_PATH_LITERAL( 412 FilePath(FILE_PATH_LITERAL(
334 "chrome/test/data/extensions/api_test/webrequest/declarative"))); 413 "chrome/test/data/extensions/api_test/webrequest/declarative")));
335 ASSERT_TRUE(test_server.Start()); 414 ASSERT_TRUE(test_server.Start());
336 415
337 TestURLRequestContext context; 416 TestURLRequestContext context;
338 TestDelegate delegate; 417 TestDelegate delegate;
339 TestURLRequest url_request(test_server.GetURL("files/headers.html"), 418 TestURLRequest url_request(test_server.GetURL("files/headers.html"),
340 &delegate, &context); 419 &delegate, &context);
341 url_request.Start(); 420 url_request.Start();
342 MessageLoop::current()->Run(); 421 MessageLoop::current()->Run();
343 422
344 // In all the tests below we assume that the server includes the headers 423 // In all the tests below we assume that the server includes the headers
345 // Custom-Header: custom/value 424 // Custom-Header: custom/value
346 // Custom-Header-B: valueA 425 // Custom-Header-B: valueA
347 // Custom-Header-B: valueB 426 // Custom-Header-B: valueB
348 // Custom-Header-C: valueC, valueD 427 // Custom-Header-C: valueC, valueD
349 // Custom-Header-D: 428 // Custom-Header-D:
350 // in the response, but does not include "Non-existing: void". 429 // in the response, but does not include "Non-existing: void".
351 430
352 std::vector< std::vector<const std::string*> > tests; 431 std::vector< std::vector<const std::string*> > tests;
353 bool result; 432 bool result;
354 433
434 const RequestStage stage = ON_HEADERS_RECEIVED;
435
355 // 1.a. -- All these tests should pass. 436 // 1.a. -- All these tests should pass.
356 const std::string kPassingCondition[] = { 437 const std::string kPassingCondition[] = {
357 keys::kNamePrefixKey, "Custom", 438 keys::kNamePrefixKey, "Custom",
358 keys::kNameSuffixKey, "m-header", // Header names are case insensitive. 439 keys::kNameSuffixKey, "m-header", // Header names are case insensitive.
359 keys::kValueContainsKey, "alu", 440 keys::kValueContainsKey, "alu",
360 keys::kValueEqualsKey, "custom/value" 441 keys::kValueEqualsKey, "custom/value"
361 }; 442 };
362 const size_t kPassingConditionSizes[] = { arraysize(kPassingCondition) }; 443 const size_t kPassingConditionSizes[] = { arraysize(kPassingCondition) };
363 GetArrayAsVector(kPassingCondition, kPassingConditionSizes, 1u, &tests); 444 GetArrayAsVector(kPassingCondition, kPassingConditionSizes, 1u, &tests);
364 MatchAndCheck(tests, keys::kResponseHeadersKey, &url_request, &result); 445 MatchAndCheck(tests, keys::kResponseHeadersKey, stage, &url_request, &result);
365 EXPECT_TRUE(result); 446 EXPECT_TRUE(result);
366 447
367 // 1.b. -- None of the following tests in the discjunction should pass. 448 // 1.b. -- None of the following tests in the discjunction should pass.
368 const std::string kFailCondition[] = { 449 const std::string kFailCondition[] = {
369 keys::kNamePrefixKey, " Custom", // Test 1. 450 keys::kNamePrefixKey, " Custom", // Test 1.
370 keys::kNameContainsKey, " -", // Test 2. 451 keys::kNameContainsKey, " -", // Test 2.
371 keys::kValueSuffixKey, "alu", // Test 3. 452 keys::kValueSuffixKey, "alu", // Test 3.
372 keys::kValueEqualsKey, "custom" // Test 4. 453 keys::kValueEqualsKey, "custom" // Test 4.
373 }; 454 };
374 const size_t kFailConditionSizes[] = { 2u, 2u, 2u, 2u }; 455 const size_t kFailConditionSizes[] = { 2u, 2u, 2u, 2u };
375 GetArrayAsVector(kFailCondition, kFailConditionSizes, 4u, &tests); 456 GetArrayAsVector(kFailCondition, kFailConditionSizes, 4u, &tests);
376 MatchAndCheck(tests, keys::kResponseHeadersKey, &url_request, &result); 457 MatchAndCheck(tests, keys::kResponseHeadersKey, stage, &url_request, &result);
377 EXPECT_FALSE(result); 458 EXPECT_FALSE(result);
378 459
379 // 1.c. -- This should fail (mixing name and value from different headers) 460 // 1.c. -- This should fail (mixing name and value from different headers)
380 const std::string kMixingCondition[] = { 461 const std::string kMixingCondition[] = {
381 keys::kNameSuffixKey, "Header-B", 462 keys::kNameSuffixKey, "Header-B",
382 keys::kValueEqualsKey, "custom/value" 463 keys::kValueEqualsKey, "custom/value"
383 }; 464 };
384 const size_t kMixingConditionSizes[] = { arraysize(kMixingCondition) }; 465 const size_t kMixingConditionSizes[] = { arraysize(kMixingCondition) };
385 GetArrayAsVector(kMixingCondition, kMixingConditionSizes, 1u, &tests); 466 GetArrayAsVector(kMixingCondition, kMixingConditionSizes, 1u, &tests);
386 MatchAndCheck(tests, keys::kResponseHeadersKey, &url_request, &result); 467 MatchAndCheck(tests, keys::kResponseHeadersKey, stage, &url_request, &result);
387 EXPECT_FALSE(result); 468 EXPECT_FALSE(result);
388 469
389 // 1.d. -- Test handling multiple values for one header (both should pass). 470 // 1.d. -- Test handling multiple values for one header (both should pass).
390 const std::string kMoreValues1[] = { 471 const std::string kMoreValues1[] = {
391 keys::kNameEqualsKey, "Custom-header-b", 472 keys::kNameEqualsKey, "Custom-header-b",
392 keys::kValueEqualsKey, "valueA" 473 keys::kValueEqualsKey, "valueA"
393 }; 474 };
394 const size_t kMoreValues1Sizes[] = { arraysize(kMoreValues1) }; 475 const size_t kMoreValues1Sizes[] = { arraysize(kMoreValues1) };
395 GetArrayAsVector(kMoreValues1, kMoreValues1Sizes, 1u, &tests); 476 GetArrayAsVector(kMoreValues1, kMoreValues1Sizes, 1u, &tests);
396 MatchAndCheck(tests, keys::kResponseHeadersKey, &url_request, &result); 477 MatchAndCheck(tests, keys::kResponseHeadersKey, stage, &url_request, &result);
397 EXPECT_TRUE(result); 478 EXPECT_TRUE(result);
398 const std::string kMoreValues2[] = { 479 const std::string kMoreValues2[] = {
399 keys::kNameEqualsKey, "Custom-header-b", 480 keys::kNameEqualsKey, "Custom-header-b",
400 keys::kValueEqualsKey, "valueB" 481 keys::kValueEqualsKey, "valueB"
401 }; 482 };
402 const size_t kMoreValues2Sizes[] = { arraysize(kMoreValues2) }; 483 const size_t kMoreValues2Sizes[] = { arraysize(kMoreValues2) };
403 GetArrayAsVector(kMoreValues2, kMoreValues2Sizes, 1u, &tests); 484 GetArrayAsVector(kMoreValues2, kMoreValues2Sizes, 1u, &tests);
404 MatchAndCheck(tests, keys::kResponseHeadersKey, &url_request, &result); 485 MatchAndCheck(tests, keys::kResponseHeadersKey, stage, &url_request, &result);
405 EXPECT_TRUE(result); 486 EXPECT_TRUE(result);
406 487
407 // 1.e. -- This should fail as conjunction but pass as disjunction. 488 // 1.e. -- This should fail as conjunction but pass as disjunction.
408 const std::string kConflict[] = { 489 const std::string kConflict[] = {
409 keys::kNameSuffixKey, "Header", // True for some header. 490 keys::kNameSuffixKey, "Header", // True for some header.
410 keys::kNameContainsKey, "Header-B" // True for a different header. 491 keys::kNameContainsKey, "Header-B" // True for a different header.
411 }; 492 };
412 // First disjunction, no conflict. 493 // First disjunction, no conflict.
413 const size_t kNoConflictSizes[] = { 2u, 2u }; 494 const size_t kNoConflictSizes[] = { 2u, 2u };
414 GetArrayAsVector(kConflict, kNoConflictSizes, 2u, &tests); 495 GetArrayAsVector(kConflict, kNoConflictSizes, 2u, &tests);
415 MatchAndCheck(tests, keys::kResponseHeadersKey, &url_request, &result); 496 MatchAndCheck(tests, keys::kResponseHeadersKey, stage, &url_request, &result);
416 EXPECT_TRUE(result); 497 EXPECT_TRUE(result);
417 // Then conjunction, conflict. 498 // Then conjunction, conflict.
418 const size_t kConflictSizes[] = { arraysize(kConflict) }; 499 const size_t kConflictSizes[] = { arraysize(kConflict) };
419 GetArrayAsVector(kConflict, kConflictSizes, 1u, &tests); 500 GetArrayAsVector(kConflict, kConflictSizes, 1u, &tests);
420 MatchAndCheck(tests, keys::kResponseHeadersKey, &url_request, &result); 501 MatchAndCheck(tests, keys::kResponseHeadersKey, stage, &url_request, &result);
421 EXPECT_FALSE(result); 502 EXPECT_FALSE(result);
422 503
423 // 1.f. -- This should pass, checking for correct treatment of ',' in values. 504 // 1.f. -- This should pass, checking for correct treatment of ',' in values.
424 const std::string kComma[] = { 505 const std::string kComma[] = {
425 keys::kNameSuffixKey, "Header-C", 506 keys::kNameSuffixKey, "Header-C",
426 keys::kValueEqualsKey, "valueC, valueD" 507 keys::kValueEqualsKey, "valueC, valueD"
427 }; 508 };
428 const size_t kCommaSizes[] = { arraysize(kComma) }; 509 const size_t kCommaSizes[] = { arraysize(kComma) };
429 GetArrayAsVector(kComma, kCommaSizes, 1u, &tests); 510 GetArrayAsVector(kComma, kCommaSizes, 1u, &tests);
430 MatchAndCheck(tests, keys::kResponseHeadersKey, &url_request, &result); 511 MatchAndCheck(tests, keys::kResponseHeadersKey, stage, &url_request, &result);
431 EXPECT_TRUE(result); 512 EXPECT_TRUE(result);
432 513
433 // 1.g. -- This should pass, empty values are values as well. 514 // 1.g. -- This should pass, empty values are values as well.
434 const std::string kEmpty[] = { 515 const std::string kEmpty[] = {
435 keys::kNameEqualsKey, "custom-header-d", 516 keys::kNameEqualsKey, "custom-header-d",
436 keys::kValueEqualsKey, "" 517 keys::kValueEqualsKey, ""
437 }; 518 };
438 const size_t kEmptySizes[] = { arraysize(kEmpty) }; 519 const size_t kEmptySizes[] = { arraysize(kEmpty) };
439 GetArrayAsVector(kEmpty, kEmptySizes, 1u, &tests); 520 GetArrayAsVector(kEmpty, kEmptySizes, 1u, &tests);
440 MatchAndCheck(tests, keys::kResponseHeadersKey, &url_request, &result); 521 MatchAndCheck(tests, keys::kResponseHeadersKey, stage, &url_request, &result);
441 EXPECT_TRUE(result); 522 EXPECT_TRUE(result);
442 523
443 // 1.h. -- Values are case-sensitive, this should fail. 524 // 1.h. -- Values are case-sensitive, this should fail.
444 const std::string kLowercase[] = { 525 const std::string kLowercase[] = {
445 keys::kNameEqualsKey, "Custom-header-b", 526 keys::kNameEqualsKey, "Custom-header-b",
446 keys::kValuePrefixKey, "valueb", // valueb != valueB 527 keys::kValuePrefixKey, "valueb", // valueb != valueB
447 keys::kNameEqualsKey, "Custom-header-b", 528 keys::kNameEqualsKey, "Custom-header-b",
448 keys::kValueSuffixKey, "valueb", 529 keys::kValueSuffixKey, "valueb",
449 keys::kNameEqualsKey, "Custom-header-b", 530 keys::kNameEqualsKey, "Custom-header-b",
450 keys::kValueContainsKey, "valueb", 531 keys::kValueContainsKey, "valueb",
451 keys::kNameEqualsKey, "Custom-header-b", 532 keys::kNameEqualsKey, "Custom-header-b",
452 keys::kValueEqualsKey, "valueb" 533 keys::kValueEqualsKey, "valueb"
453 }; 534 };
454 const size_t kLowercaseSizes[] = { 4u, 4u, 4u, 4u }; // As disjunction. 535 const size_t kLowercaseSizes[] = { 4u, 4u, 4u, 4u }; // As disjunction.
455 GetArrayAsVector(kLowercase, kLowercaseSizes, 4u, &tests); 536 GetArrayAsVector(kLowercase, kLowercaseSizes, 4u, &tests);
456 MatchAndCheck(tests, keys::kResponseHeadersKey, &url_request, &result); 537 MatchAndCheck(tests, keys::kResponseHeadersKey, stage, &url_request, &result);
457 EXPECT_FALSE(result); 538 EXPECT_FALSE(result);
458 539
459 // 1.i. -- Names are case-insensitive, this should pass. 540 // 1.i. -- Names are case-insensitive, this should pass.
460 const std::string kUppercase[] = { 541 const std::string kUppercase[] = {
461 keys::kNamePrefixKey, "CUSTOM-HEADER-B", 542 keys::kNamePrefixKey, "CUSTOM-HEADER-B",
462 keys::kNameSuffixKey, "CUSTOM-HEADER-B", 543 keys::kNameSuffixKey, "CUSTOM-HEADER-B",
463 keys::kNameEqualsKey, "CUSTOM-HEADER-B", 544 keys::kNameEqualsKey, "CUSTOM-HEADER-B",
464 keys::kNameContainsKey, "CUSTOM-HEADER-B" 545 keys::kNameContainsKey, "CUSTOM-HEADER-B"
465 }; 546 };
466 const size_t kUppercaseSizes[] = { arraysize(kUppercase) }; // Conjunction. 547 const size_t kUppercaseSizes[] = { arraysize(kUppercase) }; // Conjunction.
467 GetArrayAsVector(kUppercase, kUppercaseSizes, 1u, &tests); 548 GetArrayAsVector(kUppercase, kUppercaseSizes, 1u, &tests);
468 MatchAndCheck(tests, keys::kResponseHeadersKey, &url_request, &result); 549 MatchAndCheck(tests, keys::kResponseHeadersKey, stage, &url_request, &result);
469 EXPECT_TRUE(result); 550 EXPECT_TRUE(result);
470 551
471 // 2.a. -- This should pass as disjunction, because one of the tests passes. 552 // 2.a. -- This should pass as disjunction, because one of the tests passes.
472 const std::string kDisjunction[] = { 553 const std::string kDisjunction[] = {
473 keys::kNamePrefixKey, "Non-existing", // This one fails. 554 keys::kNamePrefixKey, "Non-existing", // This one fails.
474 keys::kNameSuffixKey, "Non-existing", // This one fails. 555 keys::kNameSuffixKey, "Non-existing", // This one fails.
475 keys::kValueEqualsKey, "void", // This one fails. 556 keys::kValueEqualsKey, "void", // This one fails.
476 keys::kValueContainsKey, "alu" // This passes. 557 keys::kValueContainsKey, "alu" // This passes.
477 }; 558 };
478 const size_t kDisjunctionSizes[] = { 2u, 2u, 2u, 2u }; 559 const size_t kDisjunctionSizes[] = { 2u, 2u, 2u, 2u };
479 GetArrayAsVector(kDisjunction, kDisjunctionSizes, 4u, &tests); 560 GetArrayAsVector(kDisjunction, kDisjunctionSizes, 4u, &tests);
480 MatchAndCheck(tests, keys::kResponseHeadersKey, &url_request, &result); 561 MatchAndCheck(tests, keys::kResponseHeadersKey, stage, &url_request, &result);
481 EXPECT_TRUE(result); 562 EXPECT_TRUE(result);
482 563
483 // 3.a. -- This should pass. 564 // 3.a. -- This should pass.
484 const std::string kNonExistent[] = { 565 const std::string kNonExistent[] = {
485 keys::kNameEqualsKey, "Non-existing", 566 keys::kNameEqualsKey, "Non-existing",
486 keys::kValueEqualsKey, "void" 567 keys::kValueEqualsKey, "void"
487 }; 568 };
488 const size_t kNonExistentSizes[] = { arraysize(kNonExistent) }; 569 const size_t kNonExistentSizes[] = { arraysize(kNonExistent) };
489 GetArrayAsVector(kNonExistent, kNonExistentSizes, 1u, &tests); 570 GetArrayAsVector(kNonExistent, kNonExistentSizes, 1u, &tests);
490 MatchAndCheck(tests, keys::kExcludeResponseHeadersKey, &url_request, &result); 571 MatchAndCheck(
572 tests, keys::kExcludeResponseHeadersKey, stage, &url_request, &result);
491 EXPECT_TRUE(result); 573 EXPECT_TRUE(result);
492 574
493 // 3.b. -- This should fail. 575 // 3.b. -- This should fail.
494 const std::string kExisting[] = { 576 const std::string kExisting[] = {
495 keys::kNameEqualsKey, "custom-header-b", 577 keys::kNameEqualsKey, "custom-header-b",
496 keys::kValueEqualsKey, "valueB" 578 keys::kValueEqualsKey, "valueB"
497 }; 579 };
498 const size_t kExistingSize[] = { arraysize(kExisting) }; 580 const size_t kExistingSize[] = { arraysize(kExisting) };
499 GetArrayAsVector(kExisting, kExistingSize, 1u, &tests); 581 GetArrayAsVector(kExisting, kExistingSize, 1u, &tests);
500 MatchAndCheck(tests, keys::kExcludeResponseHeadersKey, &url_request, &result); 582 MatchAndCheck(
583 tests, keys::kExcludeResponseHeadersKey, stage, &url_request, &result);
501 EXPECT_FALSE(result); 584 EXPECT_FALSE(result);
502 } 585 }
503 586
504 } // namespace extensions 587 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698