Chromium Code Reviews| Index: chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_unittest.cc |
| diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_unittest.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_unittest.cc |
| index 2fa6268a3a7b03e66386f9145ef24e6bf5c63da3..7a22a4971e18d197066e4b7b6de022a99750fd27 100644 |
| --- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_unittest.cc |
| +++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_unittest.cc |
| @@ -5,6 +5,7 @@ |
| #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condition.h" |
| #include <set> |
| +#include <vector> |
| #include "base/message_loop.h" |
| #include "base/test/values_test_util.h" |
| @@ -24,15 +25,19 @@ TEST(WebRequestConditionTest, CreateCondition) { |
| // Necessary for TestURLRequest. |
| MessageLoop message_loop(MessageLoop::TYPE_IO); |
| URLMatcher matcher; |
| + URLMatcher first_party_matcher; |
| std::string error; |
| scoped_ptr<WebRequestCondition> result; |
| + std::vector<URLMatcherConditionFactory*> factories; |
| + factories.push_back(matcher.condition_factory()); |
| + factories.push_back(first_party_matcher.condition_factory()); |
| // Test wrong condition name passed. |
| error.clear(); |
| result = WebRequestCondition::Create( |
| - matcher.condition_factory(), |
| + factories, |
| *base::test::ParseJson( |
| "{ \"invalid\": \"foobar\", \n" |
| " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n" |
| @@ -44,7 +49,7 @@ TEST(WebRequestConditionTest, CreateCondition) { |
| // Test wrong datatype in host_suffix. |
| error.clear(); |
| result = WebRequestCondition::Create( |
| - matcher.condition_factory(), |
| + factories, |
| *base::test::ParseJson( |
| "{ \n" |
| " \"url\": [], \n" |
| @@ -57,11 +62,12 @@ TEST(WebRequestConditionTest, CreateCondition) { |
| // Test success (can we support multiple criteria?) |
| error.clear(); |
| result = WebRequestCondition::Create( |
| - matcher.condition_factory(), |
| + factories, |
| *base::test::ParseJson( |
| "{ \n" |
| " \"resourceType\": [\"main_frame\"], \n" |
| " \"url\": { \"hostSuffix\": \"example.com\" }, \n" |
| + " \"firstPartyForCookiesUrl\": { \"hostPrefix\": \"fpfc\"}, \n" |
| " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n" |
| "}"), |
| &error); |
| @@ -69,15 +75,23 @@ TEST(WebRequestConditionTest, CreateCondition) { |
| ASSERT_TRUE(result.get()); |
| URLMatcherConditionSet::Vector url_matcher_condition_set; |
| - result->GetURLMatcherConditionSets(&url_matcher_condition_set); |
| + result->GetURLMatcherConditionSets(&url_matcher_condition_set, 0); |
|
battre
2013/01/21 17:32:08
check return value? also after line 81?
also check
vabr (Chromium)
2013/01/21 18:39:29
Done.
|
| matcher.AddConditionSets(url_matcher_condition_set); |
| - std::set<URLMatcherConditionSet::ID> url_match_ids; |
| + url_matcher_condition_set.clear(); |
| + result->GetURLMatcherConditionSets(&url_matcher_condition_set, 1); |
| + first_party_matcher.AddConditionSets(url_matcher_condition_set); |
| net::TestURLRequestContext context; |
| GURL http_url("http://www.example.com"); |
| + GURL first_party_url("http://fpfc.example.com"); |
| net::TestURLRequest match_request(http_url, NULL, &context); |
| - url_match_ids = matcher.MatchURL(http_url); |
| - EXPECT_EQ(1u, url_match_ids.size()); |
| + std::set<URLMatcherConditionSet::ID> url_match_ids = matcher.MatchURL( |
| + http_url); |
|
battre
2013/01/21 17:32:08
nit: in my opinion a strange indentation
vabr (Chromium)
2013/01/21 18:39:29
Done. I was playing with the automatic indentation
|
| + std::set<URLMatcherConditionSet::ID> first_party_url_match_ids = |
| + first_party_matcher.MatchURL(first_party_url); |
| + url_match_ids.insert(first_party_url_match_ids.begin(), |
| + first_party_url_match_ids.end()); |
| + EXPECT_EQ(2u, url_match_ids.size()); |
| content::ResourceRequestInfo::AllocateForTesting(&match_request, |
| ResourceType::MAIN_FRAME, NULL, -1, -1); |
| EXPECT_TRUE(result->IsFulfilled( |
| @@ -87,8 +101,10 @@ TEST(WebRequestConditionTest, CreateCondition) { |
| GURL https_url("https://www.example.com"); |
| net::TestURLRequest wrong_resource_type(https_url, NULL, &context); |
| url_match_ids = matcher.MatchURL(https_url); |
| + url_match_ids.insert(first_party_url_match_ids.begin(), |
| + first_party_url_match_ids.end()); |
| // Make sure IsFulfilled does not fail because of URL matching. |
| - EXPECT_EQ(1u, url_match_ids.size()); |
| + EXPECT_EQ(2u, url_match_ids.size()); |
| content::ResourceRequestInfo::AllocateForTesting(&wrong_resource_type, |
| ResourceType::SUB_FRAME, NULL, -1, -1); |
| EXPECT_FALSE(result->IsFulfilled( |
| @@ -108,10 +124,16 @@ TEST(WebRequestConditionTest, NoUrlAttributes) { |
| URLMatcher matcher; |
| std::string error; |
| + std::vector<URLMatcherConditionFactory*> factories; |
| + factories.push_back(matcher.condition_factory()); |
| + // The second factory is usually from a different matcher, but in this test |
| + // we don't care, since we never use it. |
| + factories.push_back(matcher.condition_factory()); |
| + |
| // The empty condition. |
| error.clear(); |
| scoped_ptr<WebRequestCondition> condition_empty = WebRequestCondition::Create( |
| - matcher.condition_factory(), |
| + factories, |
| *base::test::ParseJson( |
| "{ \n" |
| " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n" |
| @@ -124,7 +146,7 @@ TEST(WebRequestConditionTest, NoUrlAttributes) { |
| error.clear(); |
| scoped_ptr<WebRequestCondition> condition_no_url_true = |
| WebRequestCondition::Create( |
| - matcher.condition_factory(), |
| + factories, |
| *base::test::ParseJson( |
| "{ \n" |
| " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n" |
| @@ -140,7 +162,7 @@ TEST(WebRequestConditionTest, NoUrlAttributes) { |
| error.clear(); |
| scoped_ptr<WebRequestCondition> condition_no_url_false = |
| WebRequestCondition::Create( |
| - matcher.condition_factory(), |
| + factories, |
| *base::test::ParseJson( |
| "{ \n" |
| " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n" |
| @@ -177,6 +199,12 @@ TEST(WebRequestConditionTest, CreateConditionSet) { |
| MessageLoop message_loop(MessageLoop::TYPE_IO); |
| URLMatcher matcher; |
| + std::vector<URLMatcherConditionFactory*> factories; |
| + factories.push_back(matcher.condition_factory()); |
| + // The second factory is usually from a different matcher, but in this test |
| + // we don't care, since we never use it. |
| + factories.push_back(matcher.condition_factory()); |
| + |
| WebRequestConditionSet::AnyVector conditions; |
| conditions.push_back(linked_ptr<base::Value>(base::test::ParseJson( |
| "{ \n" |
| @@ -199,15 +227,14 @@ TEST(WebRequestConditionTest, CreateConditionSet) { |
| // Test insertion |
| std::string error; |
| scoped_ptr<WebRequestConditionSet> result = |
| - WebRequestConditionSet::Create(matcher.condition_factory(), |
| - conditions, &error); |
| + WebRequestConditionSet::Create(factories, conditions, &error); |
| EXPECT_EQ("", error); |
| ASSERT_TRUE(result.get()); |
| EXPECT_EQ(2u, result->conditions().size()); |
| // Tell the URLMatcher about our shiny new patterns. |
| URLMatcherConditionSet::Vector url_matcher_condition_set; |
| - result->GetURLMatcherConditionSets(&url_matcher_condition_set); |
| + result->GetURLMatcherConditionSets(&url_matcher_condition_set, 0); |
| matcher.AddConditionSets(url_matcher_condition_set); |
| std::set<URLMatcherConditionSet::ID> url_match_ids; |
| @@ -249,6 +276,12 @@ TEST(WebRequestConditionTest, TestPortFilter) { |
| MessageLoop message_loop(MessageLoop::TYPE_IO); |
| URLMatcher matcher; |
| + std::vector<URLMatcherConditionFactory*> factories; |
| + factories.push_back(matcher.condition_factory()); |
| + // The second factory is usually from a different matcher, but in this test |
| + // we don't care, since we never use it. |
| + factories.push_back(matcher.condition_factory()); |
| + |
| WebRequestConditionSet::AnyVector conditions; |
| conditions.push_back(linked_ptr<base::Value>(base::test::ParseJson( |
| "{ \n" |
| @@ -262,15 +295,14 @@ TEST(WebRequestConditionTest, TestPortFilter) { |
| // Test insertion |
| std::string error; |
| scoped_ptr<WebRequestConditionSet> result = |
| - WebRequestConditionSet::Create(matcher.condition_factory(), |
| - conditions, &error); |
| + WebRequestConditionSet::Create(factories, conditions, &error); |
| EXPECT_EQ("", error); |
| ASSERT_TRUE(result.get()); |
| EXPECT_EQ(1u, result->conditions().size()); |
| // Tell the URLMatcher about our shiny new patterns. |
| URLMatcherConditionSet::Vector url_matcher_condition_set; |
| - result->GetURLMatcherConditionSets(&url_matcher_condition_set); |
| + result->GetURLMatcherConditionSets(&url_matcher_condition_set, 0); |
| matcher.AddConditionSets(url_matcher_condition_set); |
| std::set<URLMatcherConditionSet::ID> url_match_ids; |
| @@ -309,14 +341,16 @@ TEST(WebRequestConditionTest, ConditionsWithConflictingStages) { |
| std::string error; |
| scoped_ptr<WebRequestCondition> result; |
| - DictionaryValue condition_value; |
| - condition_value.SetString(keys::kInstanceTypeKey, keys::kRequestMatcherType); |
| - |
| + std::vector<URLMatcherConditionFactory*> factories; |
| + factories.push_back(matcher.condition_factory()); |
| + // The second factory is usually from a different matcher, but in this test |
| + // we don't care, since we never use it. |
| + factories.push_back(matcher.condition_factory()); |
| // Test error on incompatible application stages for involved attributes. |
| error.clear(); |
| result = WebRequestCondition::Create( |
| - matcher.condition_factory(), |
| + factories, |
| *base::test::ParseJson( |
| "{ \n" |
| " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n" |