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

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

Issue 1871713002: Convert //chrome/browser/extensions from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and fix header Created 4 years, 8 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
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 "extensions/browser/api/declarative_webrequest/webrequest_rules_registr y.h" 5 #include "extensions/browser/api/declarative_webrequest/webrequest_rules_registr y.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory>
9 #include <string> 10 #include <string>
10 #include <vector> 11 #include <vector>
11 12
12 #include "base/json/json_reader.h" 13 #include "base/json/json_reader.h"
13 #include "base/macros.h" 14 #include "base/macros.h"
14 #include "base/memory/linked_ptr.h" 15 #include "base/memory/linked_ptr.h"
15 #include "base/memory/scoped_ptr.h"
16 #include "base/message_loop/message_loop.h" 16 #include "base/message_loop/message_loop.h"
17 #include "base/stl_util.h" 17 #include "base/stl_util.h"
18 #include "base/test/values_test_util.h" 18 #include "base/test/values_test_util.h"
19 #include "base/values.h" 19 #include "base/values.h"
20 #include "chrome/common/extensions/extension_test_util.h" 20 #include "chrome/common/extensions/extension_test_util.h"
21 #include "components/url_matcher/url_matcher_constants.h" 21 #include "components/url_matcher/url_matcher_constants.h"
22 #include "content/public/test/test_browser_thread.h" 22 #include "content/public/test/test_browser_thread.h"
23 #include "extensions/browser/api/declarative/rules_registry_service.h" 23 #include "extensions/browser/api/declarative/rules_registry_service.h"
24 #include "extensions/browser/api/declarative_webrequest/webrequest_constants.h" 24 #include "extensions/browser/api/declarative_webrequest/webrequest_constants.h"
25 #include "extensions/browser/api/web_request/web_request_api_helpers.h" 25 #include "extensions/browser/api/web_request/web_request_api_helpers.h"
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 linked_ptr<api::events::Rule> rule(new api::events::Rule); 181 linked_ptr<api::events::Rule> rule(new api::events::Rule);
182 rule->id.reset(new std::string(kRuleId4)); 182 rule->id.reset(new std::string(kRuleId4));
183 rule->priority.reset(new int(200)); 183 rule->priority.reset(new int(200));
184 rule->actions.push_back(action_dict.CreateDeepCopy()); 184 rule->actions.push_back(action_dict.CreateDeepCopy());
185 rule->conditions.push_back(condition_dict.CreateDeepCopy()); 185 rule->conditions.push_back(condition_dict.CreateDeepCopy());
186 return rule; 186 return rule;
187 } 187 }
188 188
189 // Create a condition with the attributes specified. An example value of 189 // Create a condition with the attributes specified. An example value of
190 // |attributes| is: "\"resourceType\": [\"stylesheet\"], \n". 190 // |attributes| is: "\"resourceType\": [\"stylesheet\"], \n".
191 scoped_ptr<base::Value> CreateCondition(const std::string& attributes) { 191 std::unique_ptr<base::Value> CreateCondition(const std::string& attributes) {
192 std::string json_description = 192 std::string json_description =
193 "{ \n" 193 "{ \n"
194 " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n"; 194 " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n";
195 json_description += attributes; 195 json_description += attributes;
196 json_description += "}"; 196 json_description += "}";
197 197
198 return base::test::ParseJson(json_description); 198 return base::test::ParseJson(json_description);
199 } 199 }
200 200
201 // Create a rule with the ID |rule_id| and with conditions created from the 201 // Create a rule with the ID |rule_id| and with conditions created from the
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 rules.push_back(CreateRule2()); 271 rules.push_back(CreateRule2());
272 272
273 error = registry->AddRules(kExtensionId, rules); 273 error = registry->AddRules(kExtensionId, rules);
274 EXPECT_EQ("", error); 274 EXPECT_EQ("", error);
275 EXPECT_EQ(1, registry->num_clear_cache_calls()); 275 EXPECT_EQ(1, registry->num_clear_cache_calls());
276 276
277 std::set<const WebRequestRule*> matches; 277 std::set<const WebRequestRule*> matches;
278 278
279 GURL http_url("http://www.example.com"); 279 GURL http_url("http://www.example.com");
280 net::TestURLRequestContext context; 280 net::TestURLRequestContext context;
281 scoped_ptr<net::URLRequest> http_request(context.CreateRequest( 281 std::unique_ptr<net::URLRequest> http_request(
282 http_url, net::DEFAULT_PRIORITY, NULL)); 282 context.CreateRequest(http_url, net::DEFAULT_PRIORITY, NULL));
283 WebRequestData request_data(http_request.get(), ON_BEFORE_REQUEST); 283 WebRequestData request_data(http_request.get(), ON_BEFORE_REQUEST);
284 matches = registry->GetMatches(request_data); 284 matches = registry->GetMatches(request_data);
285 EXPECT_EQ(2u, matches.size()); 285 EXPECT_EQ(2u, matches.size());
286 286
287 std::set<WebRequestRule::GlobalRuleId> matches_ids; 287 std::set<WebRequestRule::GlobalRuleId> matches_ids;
288 for (std::set<const WebRequestRule*>::const_iterator it = matches.begin(); 288 for (std::set<const WebRequestRule*>::const_iterator it = matches.begin();
289 it != matches.end(); ++it) 289 it != matches.end(); ++it)
290 matches_ids.insert((*it)->id()); 290 matches_ids.insert((*it)->id());
291 EXPECT_TRUE(ContainsKey(matches_ids, std::make_pair(kExtensionId, kRuleId1))); 291 EXPECT_TRUE(ContainsKey(matches_ids, std::make_pair(kExtensionId, kRuleId1)));
292 EXPECT_TRUE(ContainsKey(matches_ids, std::make_pair(kExtensionId, kRuleId2))); 292 EXPECT_TRUE(ContainsKey(matches_ids, std::make_pair(kExtensionId, kRuleId2)));
293 293
294 GURL foobar_url("http://www.foobar.com"); 294 GURL foobar_url("http://www.foobar.com");
295 scoped_ptr<net::URLRequest> foobar_request(context.CreateRequest( 295 std::unique_ptr<net::URLRequest> foobar_request(
296 foobar_url, net::DEFAULT_PRIORITY, NULL)); 296 context.CreateRequest(foobar_url, net::DEFAULT_PRIORITY, NULL));
297 request_data.request = foobar_request.get(); 297 request_data.request = foobar_request.get();
298 matches = registry->GetMatches(request_data); 298 matches = registry->GetMatches(request_data);
299 EXPECT_EQ(1u, matches.size()); 299 EXPECT_EQ(1u, matches.size());
300 WebRequestRule::GlobalRuleId expected_pair = 300 WebRequestRule::GlobalRuleId expected_pair =
301 std::make_pair(kExtensionId, kRuleId2); 301 std::make_pair(kExtensionId, kRuleId2);
302 EXPECT_EQ(expected_pair, (*matches.begin())->id()); 302 EXPECT_EQ(expected_pair, (*matches.begin())->id());
303 } 303 }
304 304
305 TEST_F(WebRequestRulesRegistryTest, RemoveRulesImpl) { 305 TEST_F(WebRequestRulesRegistryTest, RemoveRulesImpl) {
306 scoped_refptr<TestWebRequestRulesRegistry> registry( 306 scoped_refptr<TestWebRequestRulesRegistry> registry(
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 error = registry->AddRules(kExtensionId, rules_to_add_1); 412 error = registry->AddRules(kExtensionId, rules_to_add_1);
413 EXPECT_EQ("", error); 413 EXPECT_EQ("", error);
414 414
415 std::vector<linked_ptr<api::events::Rule>> rules_to_add_2(1); 415 std::vector<linked_ptr<api::events::Rule>> rules_to_add_2(1);
416 rules_to_add_2[0] = CreateRedirectRule("http://www.bar.com"); 416 rules_to_add_2[0] = CreateRedirectRule("http://www.bar.com");
417 error = registry->AddRules(kExtensionId2, rules_to_add_2); 417 error = registry->AddRules(kExtensionId2, rules_to_add_2);
418 EXPECT_EQ("", error); 418 EXPECT_EQ("", error);
419 419
420 GURL url("http://www.google.com"); 420 GURL url("http://www.google.com");
421 net::TestURLRequestContext context; 421 net::TestURLRequestContext context;
422 scoped_ptr<net::URLRequest> request(context.CreateRequest( 422 std::unique_ptr<net::URLRequest> request(
423 url, net::DEFAULT_PRIORITY, NULL)); 423 context.CreateRequest(url, net::DEFAULT_PRIORITY, NULL));
424 WebRequestData request_data(request.get(), ON_BEFORE_REQUEST); 424 WebRequestData request_data(request.get(), ON_BEFORE_REQUEST);
425 std::list<LinkedPtrEventResponseDelta> deltas = 425 std::list<LinkedPtrEventResponseDelta> deltas =
426 registry->CreateDeltas(NULL, request_data, false); 426 registry->CreateDeltas(NULL, request_data, false);
427 427
428 // The second extension is installed later and will win for this reason 428 // The second extension is installed later and will win for this reason
429 // in conflict resolution. 429 // in conflict resolution.
430 ASSERT_EQ(2u, deltas.size()); 430 ASSERT_EQ(2u, deltas.size());
431 deltas.sort(&helpers::InDecreasingExtensionInstallationTimeOrder); 431 deltas.sort(&helpers::InDecreasingExtensionInstallationTimeOrder);
432 432
433 std::list<LinkedPtrEventResponseDelta>::iterator i = deltas.begin(); 433 std::list<LinkedPtrEventResponseDelta>::iterator i = deltas.begin();
(...skipping 27 matching lines...) Expand all
461 error = registry->AddRules(kExtensionId2, rules_to_add_2); 461 error = registry->AddRules(kExtensionId2, rules_to_add_2);
462 EXPECT_EQ("", error); 462 EXPECT_EQ("", error);
463 463
464 std::vector<linked_ptr<api::events::Rule>> rules_to_add_3(1); 464 std::vector<linked_ptr<api::events::Rule>> rules_to_add_3(1);
465 rules_to_add_3[0] = CreateIgnoreRule(); 465 rules_to_add_3[0] = CreateIgnoreRule();
466 error = registry->AddRules(kExtensionId, rules_to_add_3); 466 error = registry->AddRules(kExtensionId, rules_to_add_3);
467 EXPECT_EQ("", error); 467 EXPECT_EQ("", error);
468 468
469 GURL url("http://www.google.com/index.html"); 469 GURL url("http://www.google.com/index.html");
470 net::TestURLRequestContext context; 470 net::TestURLRequestContext context;
471 scoped_ptr<net::URLRequest> request(context.CreateRequest( 471 std::unique_ptr<net::URLRequest> request(
472 url, net::DEFAULT_PRIORITY, NULL)); 472 context.CreateRequest(url, net::DEFAULT_PRIORITY, NULL));
473 WebRequestData request_data(request.get(), ON_BEFORE_REQUEST); 473 WebRequestData request_data(request.get(), ON_BEFORE_REQUEST);
474 std::list<LinkedPtrEventResponseDelta> deltas = 474 std::list<LinkedPtrEventResponseDelta> deltas =
475 registry->CreateDeltas(NULL, request_data, false); 475 registry->CreateDeltas(NULL, request_data, false);
476 476
477 // The redirect by the first extension is ignored due to the ignore rule. 477 // The redirect by the first extension is ignored due to the ignore rule.
478 ASSERT_EQ(1u, deltas.size()); 478 ASSERT_EQ(1u, deltas.size());
479 LinkedPtrEventResponseDelta effective_rule = *(deltas.begin()); 479 LinkedPtrEventResponseDelta effective_rule = *(deltas.begin());
480 480
481 EXPECT_EQ(kExtensionId2, effective_rule->extension_id); 481 EXPECT_EQ(kExtensionId2, effective_rule->extension_id);
482 EXPECT_EQ(base::Time() + base::TimeDelta::FromDays(2), 482 EXPECT_EQ(base::Time() + base::TimeDelta::FromDays(2),
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 " ], \n" 516 " ], \n"
517 " \"actions\": [ \n" 517 " \"actions\": [ \n"
518 " { \n" 518 " { \n"
519 " \"instanceType\": \"declarativeWebRequest.IgnoreRules\", \n" 519 " \"instanceType\": \"declarativeWebRequest.IgnoreRules\", \n"
520 " \"hasTag\": \"ignore_tag\" \n" 520 " \"hasTag\": \"ignore_tag\" \n"
521 " } \n" 521 " } \n"
522 " ], \n" 522 " ], \n"
523 " \"priority\": 300 \n" 523 " \"priority\": 300 \n"
524 "} "; 524 "} ";
525 525
526 scoped_ptr<base::Value> value1 = base::JSONReader::Read(kRule1); 526 std::unique_ptr<base::Value> value1 = base::JSONReader::Read(kRule1);
527 ASSERT_TRUE(value1.get()); 527 ASSERT_TRUE(value1.get());
528 scoped_ptr<base::Value> value2 = base::JSONReader::Read(kRule2); 528 std::unique_ptr<base::Value> value2 = base::JSONReader::Read(kRule2);
529 ASSERT_TRUE(value2.get()); 529 ASSERT_TRUE(value2.get());
530 530
531 std::vector<linked_ptr<api::events::Rule>> rules; 531 std::vector<linked_ptr<api::events::Rule>> rules;
532 rules.push_back(make_linked_ptr(new api::events::Rule)); 532 rules.push_back(make_linked_ptr(new api::events::Rule));
533 rules.push_back(make_linked_ptr(new api::events::Rule)); 533 rules.push_back(make_linked_ptr(new api::events::Rule));
534 ASSERT_TRUE(api::events::Rule::Populate(*value1, rules[0].get())); 534 ASSERT_TRUE(api::events::Rule::Populate(*value1, rules[0].get()));
535 ASSERT_TRUE(api::events::Rule::Populate(*value2, rules[1].get())); 535 ASSERT_TRUE(api::events::Rule::Populate(*value2, rules[1].get()));
536 536
537 scoped_refptr<WebRequestRulesRegistry> registry( 537 scoped_refptr<WebRequestRulesRegistry> registry(
538 new TestWebRequestRulesRegistry(extension_info_map_)); 538 new TestWebRequestRulesRegistry(extension_info_map_));
539 std::string error = registry->AddRulesImpl(kExtensionId, rules); 539 std::string error = registry->AddRulesImpl(kExtensionId, rules);
540 EXPECT_EQ("", error); 540 EXPECT_EQ("", error);
541 EXPECT_FALSE(registry->IsEmpty()); 541 EXPECT_FALSE(registry->IsEmpty());
542 542
543 GURL url("http://www.foo.com/test"); 543 GURL url("http://www.foo.com/test");
544 net::TestURLRequestContext context; 544 net::TestURLRequestContext context;
545 scoped_ptr<net::URLRequest> request(context.CreateRequest( 545 std::unique_ptr<net::URLRequest> request(
546 url, net::DEFAULT_PRIORITY, NULL)); 546 context.CreateRequest(url, net::DEFAULT_PRIORITY, NULL));
547 WebRequestData request_data(request.get(), ON_BEFORE_REQUEST); 547 WebRequestData request_data(request.get(), ON_BEFORE_REQUEST);
548 std::list<LinkedPtrEventResponseDelta> deltas = 548 std::list<LinkedPtrEventResponseDelta> deltas =
549 registry->CreateDeltas(NULL, request_data, false); 549 registry->CreateDeltas(NULL, request_data, false);
550 550
551 // The redirect by the redirect rule is ignored due to the ignore rule. 551 // The redirect by the redirect rule is ignored due to the ignore rule.
552 std::set<const WebRequestRule*> matches = registry->GetMatches(request_data); 552 std::set<const WebRequestRule*> matches = registry->GetMatches(request_data);
553 EXPECT_EQ(2u, matches.size()); 553 EXPECT_EQ(2u, matches.size());
554 ASSERT_EQ(0u, deltas.size()); 554 ASSERT_EQ(0u, deltas.size());
555 } 555 }
556 556
(...skipping 28 matching lines...) Expand all
585 rules.push_back(CreateCancellingRule(kRuleId3, attributes)); 585 rules.push_back(CreateCancellingRule(kRuleId3, attributes));
586 586
587 error = registry->AddRules(kExtensionId, rules); 587 error = registry->AddRules(kExtensionId, rules);
588 EXPECT_EQ("", error); 588 EXPECT_EQ("", error);
589 EXPECT_EQ(1, registry->num_clear_cache_calls()); 589 EXPECT_EQ(1, registry->num_clear_cache_calls());
590 590
591 std::set<const WebRequestRule*> matches; 591 std::set<const WebRequestRule*> matches;
592 592
593 GURL http_url("http://www.example.com"); 593 GURL http_url("http://www.example.com");
594 net::TestURLRequestContext context; 594 net::TestURLRequestContext context;
595 scoped_ptr<net::URLRequest> http_request(context.CreateRequest( 595 std::unique_ptr<net::URLRequest> http_request(
596 http_url, net::DEFAULT_PRIORITY, NULL)); 596 context.CreateRequest(http_url, net::DEFAULT_PRIORITY, NULL));
597 WebRequestData request_data(http_request.get(), ON_BEFORE_REQUEST); 597 WebRequestData request_data(http_request.get(), ON_BEFORE_REQUEST);
598 matches = registry->GetMatches(request_data); 598 matches = registry->GetMatches(request_data);
599 EXPECT_EQ(1u, matches.size()); 599 EXPECT_EQ(1u, matches.size());
600 WebRequestRule::GlobalRuleId expected_pair = std::make_pair(kExtensionId, 600 WebRequestRule::GlobalRuleId expected_pair = std::make_pair(kExtensionId,
601 kRuleId3); 601 kRuleId3);
602 EXPECT_EQ(expected_pair, (*matches.begin())->id()); 602 EXPECT_EQ(expected_pair, (*matches.begin())->id());
603 } 603 }
604 604
605 // Test that the url and firstPartyForCookiesUrl attributes are evaluated 605 // Test that the url and firstPartyForCookiesUrl attributes are evaluated
606 // against corresponding URLs. Tested on requests where these URLs actually 606 // against corresponding URLs. Tested on requests where these URLs actually
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
644 static_assert(arraysize(urls) == arraysize(firstPartyUrls), 644 static_assert(arraysize(urls) == arraysize(firstPartyUrls),
645 "urls and firstPartyUrls must have the same number " 645 "urls and firstPartyUrls must have the same number "
646 "of elements"); 646 "of elements");
647 static_assert(arraysize(urls) == arraysize(matchingRuleIds), 647 static_assert(arraysize(urls) == arraysize(matchingRuleIds),
648 "urls and matchingRuleIds must have the same number " 648 "urls and matchingRuleIds must have the same number "
649 "of elements"); 649 "of elements");
650 net::TestURLRequestContext context; 650 net::TestURLRequestContext context;
651 651
652 for (size_t i = 0; i < arraysize(matchingRuleIds); ++i) { 652 for (size_t i = 0; i < arraysize(matchingRuleIds); ++i) {
653 // Construct the inputs. 653 // Construct the inputs.
654 scoped_ptr<net::URLRequest> http_request(context.CreateRequest( 654 std::unique_ptr<net::URLRequest> http_request(
655 urls[i], net::DEFAULT_PRIORITY, NULL)); 655 context.CreateRequest(urls[i], net::DEFAULT_PRIORITY, NULL));
656 WebRequestData request_data(http_request.get(), ON_BEFORE_REQUEST); 656 WebRequestData request_data(http_request.get(), ON_BEFORE_REQUEST);
657 http_request->set_first_party_for_cookies(firstPartyUrls[i]); 657 http_request->set_first_party_for_cookies(firstPartyUrls[i]);
658 // Now run both rules on the input. 658 // Now run both rules on the input.
659 matches = registry->GetMatches(request_data); 659 matches = registry->GetMatches(request_data);
660 SCOPED_TRACE(testing::Message("i = ") << i << ", rule id = " 660 SCOPED_TRACE(testing::Message("i = ") << i << ", rule id = "
661 << matchingRuleIds[i]); 661 << matchingRuleIds[i]);
662 // Make sure that the right rule succeeded. 662 // Make sure that the right rule succeeded.
663 EXPECT_EQ(1u, matches.size()); 663 EXPECT_EQ(1u, matches.size());
664 EXPECT_EQ(WebRequestRule::GlobalRuleId(std::make_pair(kExtensionId, 664 EXPECT_EQ(WebRequestRule::GlobalRuleId(std::make_pair(kExtensionId,
665 matchingRuleIds[i])), 665 matchingRuleIds[i])),
(...skipping 19 matching lines...) Expand all
685 " \"actions\": [ \n" 685 " \"actions\": [ \n"
686 " { \n" 686 " { \n"
687 " \"instanceType\": \"declarativeWebRequest.SetRequestHeader\",\n" 687 " \"instanceType\": \"declarativeWebRequest.SetRequestHeader\",\n"
688 " \"name\": \"Content-Type\", \n" 688 " \"name\": \"Content-Type\", \n"
689 " \"value\": \"text/plain\" \n" 689 " \"value\": \"text/plain\" \n"
690 " } \n" 690 " } \n"
691 " ], \n" 691 " ], \n"
692 " \"priority\": 200 \n" 692 " \"priority\": 200 \n"
693 "} "; 693 "} ";
694 694
695 scoped_ptr<base::Value> value = base::JSONReader::Read(kRule); 695 std::unique_ptr<base::Value> value = base::JSONReader::Read(kRule);
696 ASSERT_TRUE(value); 696 ASSERT_TRUE(value);
697 697
698 api::events::Rule rule; 698 api::events::Rule rule;
699 ASSERT_TRUE(api::events::Rule::Populate(*value, &rule)); 699 ASSERT_TRUE(api::events::Rule::Populate(*value, &rule));
700 700
701 std::string error; 701 std::string error;
702 URLMatcher matcher; 702 URLMatcher matcher;
703 scoped_ptr<WebRequestConditionSet> conditions = 703 std::unique_ptr<WebRequestConditionSet> conditions =
704 WebRequestConditionSet::Create( 704 WebRequestConditionSet::Create(NULL, matcher.condition_factory(),
705 NULL, matcher.condition_factory(), rule.conditions, &error); 705 rule.conditions, &error);
706 ASSERT_TRUE(error.empty()) << error; 706 ASSERT_TRUE(error.empty()) << error;
707 ASSERT_TRUE(conditions); 707 ASSERT_TRUE(conditions);
708 708
709 bool bad_message = false; 709 bool bad_message = false;
710 scoped_ptr<WebRequestActionSet> actions = 710 std::unique_ptr<WebRequestActionSet> actions = WebRequestActionSet::Create(
711 WebRequestActionSet::Create( 711 NULL, NULL, rule.actions, &error, &bad_message);
712 NULL, NULL, rule.actions, &error, &bad_message);
713 ASSERT_TRUE(error.empty()) << error; 712 ASSERT_TRUE(error.empty()) << error;
714 ASSERT_FALSE(bad_message); 713 ASSERT_FALSE(bad_message);
715 ASSERT_TRUE(actions); 714 ASSERT_TRUE(actions);
716 715
717 EXPECT_FALSE(WebRequestRulesRegistry::StageChecker( 716 EXPECT_FALSE(WebRequestRulesRegistry::StageChecker(
718 conditions.get(), actions.get(), &error)); 717 conditions.get(), actions.get(), &error));
719 EXPECT_THAT(error, HasSubstr("no time in the request life-cycle")); 718 EXPECT_THAT(error, HasSubstr("no time in the request life-cycle"));
720 EXPECT_THAT(error, HasSubstr(actions->actions().back()->GetName())); 719 EXPECT_THAT(error, HasSubstr(actions->actions().back()->GetName()));
721 } 720 }
722 721
723 TEST(WebRequestRulesRegistrySimpleTest, HostPermissionsChecker) { 722 TEST(WebRequestRulesRegistrySimpleTest, HostPermissionsChecker) {
724 const char kAction[] = // This action requires all URLs host permission. 723 const char kAction[] = // This action requires all URLs host permission.
725 "{ \n" 724 "{ \n"
726 " \"instanceType\": \"declarativeWebRequest.RedirectRequest\",\n" 725 " \"instanceType\": \"declarativeWebRequest.RedirectRequest\",\n"
727 " \"redirectUrl\": \"http://bar.com\" \n" 726 " \"redirectUrl\": \"http://bar.com\" \n"
728 "} "; 727 "} ";
729 scoped_ptr<base::Value> action_value = base::JSONReader::Read(kAction); 728 std::unique_ptr<base::Value> action_value = base::JSONReader::Read(kAction);
730 ASSERT_TRUE(action_value); 729 ASSERT_TRUE(action_value);
731 730
732 WebRequestActionSet::Values actions; 731 WebRequestActionSet::Values actions;
733 actions.push_back(std::move(action_value)); 732 actions.push_back(std::move(action_value));
734 ASSERT_TRUE(actions.back().get()); 733 ASSERT_TRUE(actions.back().get());
735 734
736 std::string error; 735 std::string error;
737 bool bad_message = false; 736 bool bad_message = false;
738 scoped_ptr<WebRequestActionSet> action_set( 737 std::unique_ptr<WebRequestActionSet> action_set(
739 WebRequestActionSet::Create(NULL, NULL, actions, &error, &bad_message)); 738 WebRequestActionSet::Create(NULL, NULL, actions, &error, &bad_message));
740 ASSERT_TRUE(error.empty()) << error; 739 ASSERT_TRUE(error.empty()) << error;
741 ASSERT_FALSE(bad_message); 740 ASSERT_FALSE(bad_message);
742 ASSERT_TRUE(action_set); 741 ASSERT_TRUE(action_set);
743 742
744 scoped_refptr<Extension> extension_no_url( 743 scoped_refptr<Extension> extension_no_url(
745 LoadManifest("permissions", "web_request_no_host.json")); 744 LoadManifest("permissions", "web_request_no_host.json"));
746 scoped_refptr<Extension> extension_some_urls( 745 scoped_refptr<Extension> extension_some_urls(
747 LoadManifest("permissions", "web_request_com_host_permissions.json")); 746 LoadManifest("permissions", "web_request_com_host_permissions.json"));
748 scoped_refptr<Extension> extension_all_urls( 747 scoped_refptr<Extension> extension_all_urls(
(...skipping 26 matching lines...) Expand all
775 " ], \n" 774 " ], \n"
776 " \"actions\": [ \n" 775 " \"actions\": [ \n"
777 " { \n" 776 " { \n"
778 " \"instanceType\": \"declarativeWebRequest.RedirectRequest\",\n" 777 " \"instanceType\": \"declarativeWebRequest.RedirectRequest\",\n"
779 " \"redirectUrl\": \"http://bar.com\" \n" 778 " \"redirectUrl\": \"http://bar.com\" \n"
780 " } \n" 779 " } \n"
781 " ], \n" 780 " ], \n"
782 " \"priority\": 200 \n" 781 " \"priority\": 200 \n"
783 "} "; 782 "} ";
784 783
785 scoped_ptr<base::Value> value = base::JSONReader::Read(kRule); 784 std::unique_ptr<base::Value> value = base::JSONReader::Read(kRule);
786 ASSERT_TRUE(value.get()); 785 ASSERT_TRUE(value.get());
787 786
788 std::vector<linked_ptr<api::events::Rule>> rules; 787 std::vector<linked_ptr<api::events::Rule>> rules;
789 rules.push_back(make_linked_ptr(new api::events::Rule)); 788 rules.push_back(make_linked_ptr(new api::events::Rule));
790 ASSERT_TRUE(api::events::Rule::Populate(*value, rules.back().get())); 789 ASSERT_TRUE(api::events::Rule::Populate(*value, rules.back().get()));
791 790
792 scoped_refptr<WebRequestRulesRegistry> registry( 791 scoped_refptr<WebRequestRulesRegistry> registry(
793 new TestWebRequestRulesRegistry(extension_info_map_)); 792 new TestWebRequestRulesRegistry(extension_info_map_));
794 793
795 URLMatcher matcher; 794 URLMatcher matcher;
796 std::string error = registry->AddRulesImpl(kExtensionId, rules); 795 std::string error = registry->AddRulesImpl(kExtensionId, rules);
797 EXPECT_EQ("", error); 796 EXPECT_EQ("", error);
798 797
799 net::TestURLRequestContext context; 798 net::TestURLRequestContext context;
800 std::list<LinkedPtrEventResponseDelta> deltas; 799 std::list<LinkedPtrEventResponseDelta> deltas;
801 800
802 // No match because match is in the query parameter. 801 // No match because match is in the query parameter.
803 GURL url1("http://bar.com/index.html?foo.com"); 802 GURL url1("http://bar.com/index.html?foo.com");
804 scoped_ptr<net::URLRequest> request1(context.CreateRequest( 803 std::unique_ptr<net::URLRequest> request1(
805 url1, net::DEFAULT_PRIORITY, NULL)); 804 context.CreateRequest(url1, net::DEFAULT_PRIORITY, NULL));
806 WebRequestData request_data1(request1.get(), ON_BEFORE_REQUEST); 805 WebRequestData request_data1(request1.get(), ON_BEFORE_REQUEST);
807 deltas = registry->CreateDeltas(NULL, request_data1, false); 806 deltas = registry->CreateDeltas(NULL, request_data1, false);
808 EXPECT_EQ(0u, deltas.size()); 807 EXPECT_EQ(0u, deltas.size());
809 808
810 // This is a correct match. 809 // This is a correct match.
811 GURL url2("http://foo.com/index.html"); 810 GURL url2("http://foo.com/index.html");
812 scoped_ptr<net::URLRequest> request2(context.CreateRequest( 811 std::unique_ptr<net::URLRequest> request2(
813 url2, net::DEFAULT_PRIORITY, NULL)); 812 context.CreateRequest(url2, net::DEFAULT_PRIORITY, NULL));
814 WebRequestData request_data2(request2.get(), ON_BEFORE_REQUEST); 813 WebRequestData request_data2(request2.get(), ON_BEFORE_REQUEST);
815 deltas = registry->CreateDeltas(NULL, request_data2, false); 814 deltas = registry->CreateDeltas(NULL, request_data2, false);
816 EXPECT_EQ(1u, deltas.size()); 815 EXPECT_EQ(1u, deltas.size());
817 } 816 }
818 817
819 } // namespace extensions 818 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698