| 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 791ac0693fbea5f90f168d9b13d04d65f9b2a5ca..641d07000a3691c3001c0c323df85adfc2f6ee09 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
|
| @@ -4,12 +4,14 @@
|
|
|
| #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_attribute.h"
|
|
|
| +#include "base/file_path.h"
|
| #include "base/message_loop.h"
|
| #include "base/values.h"
|
| #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_constants.h"
|
| #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_rule.h"
|
| #include "content/public/browser/resource_request_info.h"
|
| #include "net/url_request/url_request_test_util.h"
|
| +#include "net/test/test_server.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| namespace {
|
| @@ -44,6 +46,12 @@ TEST(WebRequestConditionAttributeTest, CreateConditionAttribute) {
|
| EXPECT_FALSE(error.empty());
|
| EXPECT_FALSE(result.get());
|
|
|
| + error.clear();
|
| + result = WebRequestConditionAttribute::Create(
|
| + keys::kContentTypeKey, &string_value, &error);
|
| + EXPECT_FALSE(error.empty());
|
| + EXPECT_FALSE(result.get());
|
| +
|
| // Test success
|
| error.clear();
|
| result = WebRequestConditionAttribute::Create(
|
| @@ -83,4 +91,53 @@ TEST(WebRequestConditionAttributeTest, TestResourceType) {
|
| WebRequestRule::RequestData(&url_request_fail, ON_BEFORE_REQUEST)));
|
| }
|
|
|
| +TEST(WebRequestConditionAttributeTest, TestContentType) {
|
| + // Necessary for TestURLRequest.
|
| + MessageLoop message_loop(MessageLoop::TYPE_IO);
|
| +
|
| + std::string error;
|
| + scoped_ptr<WebRequestConditionAttribute> result;
|
| +
|
| + net::TestServer test_server(
|
| + net::TestServer::TYPE_HTTP,
|
| + net::TestServer::kLocalhost,
|
| + FilePath(FILE_PATH_LITERAL(
|
| + "chrome/test/data/extensions/api_test/webrequest/declarative")));
|
| + ASSERT_TRUE(test_server.Start());
|
| +
|
| + TestURLRequestContext context;
|
| + TestDelegate delegate;
|
| + TestURLRequest url_request(test_server.GetURL("headers.html"),
|
| + &delegate, &context);
|
| + url_request.Start();
|
| + MessageLoop::current()->Run();
|
| +
|
| + ListValue content_types;
|
| + content_types.Append(Value::CreateStringValue("text/html"));
|
| + scoped_ptr<WebRequestConditionAttribute> attribute_ok =
|
| + WebRequestConditionAttribute::Create(
|
| + keys::kContentTypeKey, &content_types, &error);
|
| + EXPECT_EQ("", error);
|
| + ASSERT_TRUE(attribute_ok.get());
|
| +
|
| + EXPECT_FALSE(attribute_ok->IsFulfilled(
|
| + WebRequestRule::RequestData(&url_request, ON_BEFORE_REQUEST,
|
| + url_request.response_headers())));
|
| + EXPECT_TRUE(attribute_ok->IsFulfilled(
|
| + WebRequestRule::RequestData(&url_request, ON_HEADERS_RECEIVED,
|
| + url_request.response_headers())));
|
| +
|
| + content_types.Clear();
|
| + content_types.Append(Value::CreateStringValue("something/invalid"));
|
| + scoped_ptr<WebRequestConditionAttribute> attribute_fail =
|
| + WebRequestConditionAttribute::Create(
|
| + keys::kContentTypeKey, &content_types, &error);
|
| + EXPECT_EQ("", error);
|
| + ASSERT_TRUE(attribute_fail.get());
|
| +
|
| + EXPECT_FALSE(attribute_fail->IsFulfilled(
|
| + WebRequestRule::RequestData(&url_request, ON_HEADERS_RECEIVED,
|
| + url_request.response_headers())));
|
| +}
|
| +
|
| } // namespace extensions
|
|
|