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" |