| 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 "extensions/browser/api/declarative_webrequest/webrequest_condition_att
ribute.h" | 5 #include "extensions/browser/api/declarative_webrequest/webrequest_condition_att
ribute.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 } | 42 } |
| 43 | 43 |
| 44 TEST(WebRequestConditionAttributeTest, CreateConditionAttribute) { | 44 TEST(WebRequestConditionAttributeTest, CreateConditionAttribute) { |
| 45 // Necessary for TestURLRequest. | 45 // Necessary for TestURLRequest. |
| 46 base::MessageLoopForIO message_loop; | 46 base::MessageLoopForIO message_loop; |
| 47 | 47 |
| 48 std::string error; | 48 std::string error; |
| 49 scoped_refptr<const WebRequestConditionAttribute> result; | 49 scoped_refptr<const WebRequestConditionAttribute> result; |
| 50 base::StringValue string_value("main_frame"); | 50 base::StringValue string_value("main_frame"); |
| 51 base::ListValue resource_types; | 51 base::ListValue resource_types; |
| 52 resource_types.Append(new base::StringValue("main_frame")); | 52 resource_types.AppendString("main_frame"); |
| 53 | 53 |
| 54 // Test wrong condition name passed. | 54 // Test wrong condition name passed. |
| 55 error.clear(); | 55 error.clear(); |
| 56 result = WebRequestConditionAttribute::Create( | 56 result = WebRequestConditionAttribute::Create( |
| 57 kUnknownConditionName, &resource_types, &error); | 57 kUnknownConditionName, &resource_types, &error); |
| 58 EXPECT_FALSE(error.empty()); | 58 EXPECT_FALSE(error.empty()); |
| 59 EXPECT_FALSE(result.get()); | 59 EXPECT_FALSE(result.get()); |
| 60 | 60 |
| 61 // Test wrong data type passed | 61 // Test wrong data type passed |
| 62 error.clear(); | 62 error.clear(); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 83 } | 83 } |
| 84 | 84 |
| 85 TEST(WebRequestConditionAttributeTest, ResourceType) { | 85 TEST(WebRequestConditionAttributeTest, ResourceType) { |
| 86 // Necessary for TestURLRequest. | 86 // Necessary for TestURLRequest. |
| 87 base::MessageLoopForIO message_loop; | 87 base::MessageLoopForIO message_loop; |
| 88 | 88 |
| 89 std::string error; | 89 std::string error; |
| 90 base::ListValue resource_types; | 90 base::ListValue resource_types; |
| 91 // The 'sub_frame' value is chosen arbitrarily, so as the corresponding | 91 // The 'sub_frame' value is chosen arbitrarily, so as the corresponding |
| 92 // content::ResourceType is not 0, the default value. | 92 // content::ResourceType is not 0, the default value. |
| 93 resource_types.Append(new base::StringValue("sub_frame")); | 93 resource_types.AppendString("sub_frame"); |
| 94 | 94 |
| 95 scoped_refptr<const WebRequestConditionAttribute> attribute = | 95 scoped_refptr<const WebRequestConditionAttribute> attribute = |
| 96 WebRequestConditionAttribute::Create( | 96 WebRequestConditionAttribute::Create( |
| 97 keys::kResourceTypeKey, &resource_types, &error); | 97 keys::kResourceTypeKey, &resource_types, &error); |
| 98 EXPECT_EQ("", error); | 98 EXPECT_EQ("", error); |
| 99 ASSERT_TRUE(attribute.get()); | 99 ASSERT_TRUE(attribute.get()); |
| 100 EXPECT_EQ(std::string(keys::kResourceTypeKey), attribute->GetName()); | 100 EXPECT_EQ(std::string(keys::kResourceTypeKey), attribute->GetName()); |
| 101 | 101 |
| 102 net::TestURLRequestContext context; | 102 net::TestURLRequestContext context; |
| 103 std::unique_ptr<net::URLRequest> url_request_ok(context.CreateRequest( | 103 std::unique_ptr<net::URLRequest> url_request_ok(context.CreateRequest( |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 ASSERT_TRUE(test_server.Start()); | 146 ASSERT_TRUE(test_server.Start()); |
| 147 | 147 |
| 148 net::TestURLRequestContext context; | 148 net::TestURLRequestContext context; |
| 149 net::TestDelegate delegate; | 149 net::TestDelegate delegate; |
| 150 std::unique_ptr<net::URLRequest> url_request(context.CreateRequest( | 150 std::unique_ptr<net::URLRequest> url_request(context.CreateRequest( |
| 151 test_server.GetURL("/headers.html"), net::DEFAULT_PRIORITY, &delegate)); | 151 test_server.GetURL("/headers.html"), net::DEFAULT_PRIORITY, &delegate)); |
| 152 url_request->Start(); | 152 url_request->Start(); |
| 153 base::MessageLoop::current()->Run(); | 153 base::MessageLoop::current()->Run(); |
| 154 | 154 |
| 155 base::ListValue content_types; | 155 base::ListValue content_types; |
| 156 content_types.Append(new base::StringValue("text/plain")); | 156 content_types.AppendString("text/plain"); |
| 157 scoped_refptr<const WebRequestConditionAttribute> attribute_include = | 157 scoped_refptr<const WebRequestConditionAttribute> attribute_include = |
| 158 WebRequestConditionAttribute::Create( | 158 WebRequestConditionAttribute::Create( |
| 159 keys::kContentTypeKey, &content_types, &error); | 159 keys::kContentTypeKey, &content_types, &error); |
| 160 EXPECT_EQ("", error); | 160 EXPECT_EQ("", error); |
| 161 ASSERT_TRUE(attribute_include.get()); | 161 ASSERT_TRUE(attribute_include.get()); |
| 162 EXPECT_FALSE(attribute_include->IsFulfilled( | 162 EXPECT_FALSE(attribute_include->IsFulfilled( |
| 163 WebRequestData(url_request.get(), ON_BEFORE_REQUEST, | 163 WebRequestData(url_request.get(), ON_BEFORE_REQUEST, |
| 164 url_request->response_headers()))); | 164 url_request->response_headers()))); |
| 165 EXPECT_TRUE(attribute_include->IsFulfilled( | 165 EXPECT_TRUE(attribute_include->IsFulfilled( |
| 166 WebRequestData(url_request.get(), ON_HEADERS_RECEIVED, | 166 WebRequestData(url_request.get(), ON_HEADERS_RECEIVED, |
| 167 url_request->response_headers()))); | 167 url_request->response_headers()))); |
| 168 EXPECT_EQ(std::string(keys::kContentTypeKey), attribute_include->GetName()); | 168 EXPECT_EQ(std::string(keys::kContentTypeKey), attribute_include->GetName()); |
| 169 | 169 |
| 170 scoped_refptr<const WebRequestConditionAttribute> attribute_exclude = | 170 scoped_refptr<const WebRequestConditionAttribute> attribute_exclude = |
| 171 WebRequestConditionAttribute::Create( | 171 WebRequestConditionAttribute::Create( |
| 172 keys::kExcludeContentTypeKey, &content_types, &error); | 172 keys::kExcludeContentTypeKey, &content_types, &error); |
| 173 EXPECT_EQ("", error); | 173 EXPECT_EQ("", error); |
| 174 ASSERT_TRUE(attribute_exclude.get()); | 174 ASSERT_TRUE(attribute_exclude.get()); |
| 175 EXPECT_FALSE(attribute_exclude->IsFulfilled( | 175 EXPECT_FALSE(attribute_exclude->IsFulfilled( |
| 176 WebRequestData(url_request.get(), ON_HEADERS_RECEIVED, | 176 WebRequestData(url_request.get(), ON_HEADERS_RECEIVED, |
| 177 url_request->response_headers()))); | 177 url_request->response_headers()))); |
| 178 | 178 |
| 179 content_types.Clear(); | 179 content_types.Clear(); |
| 180 content_types.Append(new base::StringValue("something/invalid")); | 180 content_types.AppendString("something/invalid"); |
| 181 scoped_refptr<const WebRequestConditionAttribute> attribute_unincluded = | 181 scoped_refptr<const WebRequestConditionAttribute> attribute_unincluded = |
| 182 WebRequestConditionAttribute::Create( | 182 WebRequestConditionAttribute::Create( |
| 183 keys::kContentTypeKey, &content_types, &error); | 183 keys::kContentTypeKey, &content_types, &error); |
| 184 EXPECT_EQ("", error); | 184 EXPECT_EQ("", error); |
| 185 ASSERT_TRUE(attribute_unincluded.get()); | 185 ASSERT_TRUE(attribute_unincluded.get()); |
| 186 EXPECT_FALSE(attribute_unincluded->IsFulfilled( | 186 EXPECT_FALSE(attribute_unincluded->IsFulfilled( |
| 187 WebRequestData(url_request.get(), ON_HEADERS_RECEIVED, | 187 WebRequestData(url_request.get(), ON_HEADERS_RECEIVED, |
| 188 url_request->response_headers()))); | 188 url_request->response_headers()))); |
| 189 | 189 |
| 190 scoped_refptr<const WebRequestConditionAttribute> attribute_unexcluded = | 190 scoped_refptr<const WebRequestConditionAttribute> attribute_unexcluded = |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 base::ListValue* list = NULL; | 382 base::ListValue* list = NULL; |
| 383 if (!dictionary->GetWithoutPathExpansion(*name, &entry)) | 383 if (!dictionary->GetWithoutPathExpansion(*name, &entry)) |
| 384 return std::unique_ptr<base::DictionaryValue>(); | 384 return std::unique_ptr<base::DictionaryValue>(); |
| 385 switch (entry->GetType()) { | 385 switch (entry->GetType()) { |
| 386 case base::Value::TYPE_STRING: | 386 case base::Value::TYPE_STRING: |
| 387 // Replace the present string with a list. | 387 // Replace the present string with a list. |
| 388 list = new base::ListValue; | 388 list = new base::ListValue; |
| 389 // Ignoring return value, we already verified the entry is there. | 389 // Ignoring return value, we already verified the entry is there. |
| 390 dictionary->RemoveWithoutPathExpansion(*name, &entry_owned); | 390 dictionary->RemoveWithoutPathExpansion(*name, &entry_owned); |
| 391 list->Append(entry_owned.release()); | 391 list->Append(entry_owned.release()); |
| 392 list->Append(new base::StringValue(*value)); | 392 list->AppendString(*value); |
| 393 dictionary->SetWithoutPathExpansion(*name, list); | 393 dictionary->SetWithoutPathExpansion(*name, list); |
| 394 break; | 394 break; |
| 395 case base::Value::TYPE_LIST: // Just append to the list. | 395 case base::Value::TYPE_LIST: // Just append to the list. |
| 396 CHECK(entry->GetAsList(&list)); | 396 CHECK(entry->GetAsList(&list)); |
| 397 list->Append(new base::StringValue(*value)); | 397 list->AppendString(*value); |
| 398 break; | 398 break; |
| 399 default: | 399 default: |
| 400 NOTREACHED(); // We never put other Values here. | 400 NOTREACHED(); // We never put other Values here. |
| 401 return std::unique_ptr<base::DictionaryValue>(); | 401 return std::unique_ptr<base::DictionaryValue>(); |
| 402 } | 402 } |
| 403 } else { | 403 } else { |
| 404 dictionary->SetString(*name, *value); | 404 dictionary->SetString(*name, *value); |
| 405 } | 405 } |
| 406 } | 406 } |
| 407 return dictionary; | 407 return dictionary; |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 712 }; | 712 }; |
| 713 const size_t kExistingSize[] = { arraysize(kExisting) }; | 713 const size_t kExistingSize[] = { arraysize(kExisting) }; |
| 714 GetArrayAsVector(kExisting, kExistingSize, 1u, &tests); | 714 GetArrayAsVector(kExisting, kExistingSize, 1u, &tests); |
| 715 MatchAndCheck(tests, keys::kExcludeResponseHeadersKey, stage, | 715 MatchAndCheck(tests, keys::kExcludeResponseHeadersKey, stage, |
| 716 url_request.get(), &result); | 716 url_request.get(), &result); |
| 717 EXPECT_FALSE(result); | 717 EXPECT_FALSE(result); |
| 718 } | 718 } |
| 719 | 719 |
| 720 } // namespace | 720 } // namespace |
| 721 } // namespace extensions | 721 } // namespace extensions |
| OLD | NEW |