| OLD | NEW |
| 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 "chrome/browser/extensions/api/declarative_webrequest/webrequest_condit
ion_attribute.h" | 5 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condit
ion_attribute.h" |
| 6 | 6 |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "base/values.h" | 8 #include "base/values.h" |
| 9 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_consta
nts.h" | 9 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_consta
nts.h" |
| 10 #include "content/public/browser/resource_request_info.h" |
| 10 #include "net/url_request/url_request_test_util.h" | 11 #include "net/url_request/url_request_test_util.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 12 | 13 |
| 13 namespace { | 14 namespace { |
| 14 const char kUnknownConditionName[] = "unknownType"; | 15 const char kUnknownConditionName[] = "unknownType"; |
| 15 } // namespace | 16 } // namespace |
| 16 | 17 |
| 17 namespace extensions { | 18 namespace extensions { |
| 18 | 19 |
| 19 namespace keys = declarative_webrequest_constants; | 20 namespace keys = declarative_webrequest_constants; |
| 20 | 21 |
| 21 TEST(WebRequestConditionAttributeTest, CreateConditionAttribute) { | 22 TEST(WebRequestConditionAttributeTest, CreateConditionAttribute) { |
| 22 // Necessary for TestURLRequest. | 23 // Necessary for TestURLRequest. |
| 23 MessageLoop message_loop(MessageLoop::TYPE_IO); | 24 MessageLoop message_loop(MessageLoop::TYPE_IO); |
| 24 | 25 |
| 25 std::string error; | 26 std::string error; |
| 26 scoped_ptr<WebRequestConditionAttribute> result; | 27 scoped_ptr<WebRequestConditionAttribute> result; |
| 27 StringValue http_string_value("http"); | 28 StringValue string_value("main_frame"); |
| 28 ListValue list_value; | 29 ListValue resource_types; |
| 30 resource_types.Append(Value::CreateStringValue("main_frame")); |
| 29 | 31 |
| 30 // Test wrong condition name passed. | 32 // Test wrong condition name passed. |
| 31 error.clear(); | 33 error.clear(); |
| 32 result = WebRequestConditionAttribute::Create( | 34 result = WebRequestConditionAttribute::Create( |
| 33 kUnknownConditionName, &http_string_value, &error); | 35 kUnknownConditionName, &resource_types, &error); |
| 34 EXPECT_FALSE(error.empty()); | 36 EXPECT_FALSE(error.empty()); |
| 35 EXPECT_FALSE(result.get()); | 37 EXPECT_FALSE(result.get()); |
| 36 | 38 |
| 37 // Test wrong data type passed | 39 // Test wrong data type passed |
| 38 error.clear(); | 40 error.clear(); |
| 39 result = WebRequestConditionAttribute::Create( | 41 result = WebRequestConditionAttribute::Create( |
| 40 kUnknownConditionName, &list_value, &error); | 42 keys::kResourceTypeKey, &string_value, &error); |
| 41 EXPECT_FALSE(error.empty()); | 43 EXPECT_FALSE(error.empty()); |
| 42 EXPECT_FALSE(result.get()); | 44 EXPECT_FALSE(result.get()); |
| 43 | 45 |
| 44 // Test success | 46 // Test success |
| 45 error.clear(); | 47 error.clear(); |
| 46 result = WebRequestConditionAttribute::Create( | 48 result = WebRequestConditionAttribute::Create( |
| 47 keys::kSchemeKey, &http_string_value, &error); | 49 keys::kResourceTypeKey, &resource_types, &error); |
| 48 EXPECT_TRUE(error.empty()); | 50 EXPECT_EQ("", error); |
| 49 ASSERT_TRUE(result.get()); | 51 ASSERT_TRUE(result.get()); |
| 50 EXPECT_EQ(WebRequestConditionAttribute::CONDITION_HAS_SCHEME, | 52 EXPECT_EQ(WebRequestConditionAttribute::CONDITION_RESOURCE_TYPE, |
| 51 result->GetType()); | 53 result->GetType()); |
| 54 } |
| 55 |
| 56 TEST(WebRequestConditionAttributeTest, TestResourceType) { |
| 57 // Necessary for TestURLRequest. |
| 58 MessageLoop message_loop(MessageLoop::TYPE_IO); |
| 59 |
| 60 std::string error; |
| 61 ListValue resource_types; |
| 62 resource_types.Append(Value::CreateStringValue("main_frame")); |
| 63 |
| 64 scoped_ptr<WebRequestConditionAttribute> attribute = |
| 65 WebRequestConditionAttribute::Create( |
| 66 keys::kResourceTypeKey, &resource_types, &error); |
| 67 EXPECT_EQ("", error); |
| 68 ASSERT_TRUE(attribute.get()); |
| 69 |
| 52 TestURLRequest url_request_ok(GURL("http://www.example.com"), NULL); | 70 TestURLRequest url_request_ok(GURL("http://www.example.com"), NULL); |
| 53 EXPECT_TRUE(result->IsFulfilled(&url_request_ok, ON_BEFORE_REQUEST)); | 71 content::ResourceRequestInfo::AllocateForTesting(&url_request_ok, |
| 54 TestURLRequest url_request_fail(GURL("https://www.example.com"), NULL); | 72 ResourceType::MAIN_FRAME, NULL); |
| 55 EXPECT_FALSE(result->IsFulfilled(&url_request_fail, ON_BEFORE_REQUEST)); | 73 EXPECT_TRUE(attribute->IsFulfilled(&url_request_ok, ON_BEFORE_REQUEST)); |
| 74 |
| 75 TestURLRequest url_request_fail(GURL("http://www.example.com"), NULL); |
| 76 content::ResourceRequestInfo::AllocateForTesting(&url_request_ok, |
| 77 ResourceType::SUB_FRAME, NULL); |
| 78 EXPECT_FALSE(attribute->IsFulfilled(&url_request_fail, ON_BEFORE_REQUEST)); |
| 56 } | 79 } |
| 57 | 80 |
| 58 } // namespace extensions | 81 } // namespace extensions |
| OLD | NEW |