Chromium Code Reviews| Index: chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_attribute_unittest.cc |
| diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_attribute_unittest.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_attribute_unittest.cc |
| index 1f3e26b9a69ebc19eba57c99cfd07ea57a7f1515..ea5c8f6e9a9b783fa86e103f71aa2a0ba039702a 100644 |
| --- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_attribute_unittest.cc |
| +++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_attribute_unittest.cc |
| @@ -16,6 +16,7 @@ |
| #include "testing/gtest/include/gtest/gtest.h" |
| using base::DictionaryValue; |
| +using base::FundamentalValue; |
| using base::ListValue; |
| using base::StringValue; |
| using base::Value; |
| @@ -162,6 +163,66 @@ TEST(WebRequestConditionAttributeTest, ContentType) { |
| url_request.response_headers()))); |
| } |
| +// Testing WebRequestConditionAttributeThirdParty. |
| +TEST(WebRequestConditionAttributeTest, ThirdParty) { |
| + // Necessary for TestURLRequest. |
| + MessageLoop message_loop(MessageLoop::TYPE_IO); |
| + |
| + std::string error; |
| + const FundamentalValue value_true(true); |
| + // This attribute matches only third party requests. |
| + scoped_ptr<WebRequestConditionAttribute> third_party_attribute = |
| + WebRequestConditionAttribute::Create(keys::kThirdPartyKey, |
| + &value_true, |
| + &error); |
| + ASSERT_EQ("", error); |
| + ASSERT_TRUE(third_party_attribute.get() != NULL); |
| + const FundamentalValue value_false(false); |
| + // This attribute matches only first party requests. |
| + scoped_ptr<WebRequestConditionAttribute> first_party_attribute = |
| + WebRequestConditionAttribute::Create(keys::kThirdPartyKey, |
| + &value_false, |
| + &error); |
| + ASSERT_EQ("", error); |
| + ASSERT_TRUE(first_party_attribute.get() != NULL); |
| + |
| + const GURL url_a("http://a.com"); |
| + const GURL url_b("http://b.com"); |
| + TestURLRequestContext context; |
| + TestDelegate delegate; |
| + TestURLRequest url_request(url_a, &delegate, &context); |
| + |
| + static const RequestStage request_stages[] = { |
| + ON_BEFORE_REQUEST, |
| + ON_BEFORE_SEND_HEADERS, |
| + ON_SEND_HEADERS, |
| + ON_HEADERS_RECEIVED, |
| + ON_AUTH_REQUIRED, |
| + ON_BEFORE_REDIRECT, |
| + ON_RESPONSE_STARTED, |
| + ON_COMPLETED, |
| + ON_ERROR |
| + }; |
| + |
| + for (size_t i = 0; i < arraysize(request_stages); ++i) { |
|
battre
2012/10/15 07:19:51
maybe you want to add a test case for empty first
vabr (Chromium)
2012/10/15 12:01:43
Done.
|
| + url_request.set_first_party_for_cookies(url_b); |
| + EXPECT_TRUE(third_party_attribute->IsFulfilled(WebRequestRule::RequestData( |
| + &url_request, request_stages[i]))); |
| + |
| + url_request.set_first_party_for_cookies(url_a); |
| + EXPECT_FALSE(third_party_attribute->IsFulfilled(WebRequestRule::RequestData( |
| + &url_request, request_stages[i]))); |
| + |
| + url_request.set_first_party_for_cookies(url_b); |
| + EXPECT_FALSE(first_party_attribute->IsFulfilled(WebRequestRule::RequestData( |
| + &url_request, request_stages[i]))); |
| + |
| + url_request.set_first_party_for_cookies(url_a); |
| + EXPECT_TRUE(first_party_attribute->IsFulfilled(WebRequestRule::RequestData( |
| + &url_request, request_stages[i]))); |
| + } |
| +} |
| + |
| namespace { |
| // Builds a vector of vectors of string pointers from an array of strings. |