Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1351)

Unified Diff: chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_unittest.cc

Issue 11567027: Add a base::ParseJson() function to help tests construct Values. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Move ParseJson into base::test Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 85b503fa46e322a1fbe3488ed7cad137922b3a24..df0771dc38d8a0cb0b384b02e403dcab69a8fc60 100644
--- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_unittest.cc
+++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_condition_unittest.cc
@@ -7,6 +7,7 @@
#include <set>
#include "base/message_loop.h"
+#include "base/test/values_test_util.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"
@@ -28,44 +29,43 @@ TEST(WebRequestConditionTest, CreateCondition) {
std::string error;
scoped_ptr<WebRequestCondition> result;
- DictionaryValue invalid_condition;
- invalid_condition.SetString("invalid", "foobar");
- invalid_condition.SetString(keys::kInstanceTypeKey,
- keys::kRequestMatcherType);
-
- DictionaryValue invalid_condition2;
- invalid_condition2.Set(keys::kUrlKey, new ListValue);
- invalid_condition2.SetString(keys::kInstanceTypeKey,
- keys::kRequestMatcherType);
-
- ListValue* resource_type_list = new ListValue();
- resource_type_list->Append(Value::CreateStringValue("main_frame"));
- DictionaryValue* url_filter = new DictionaryValue();
- url_filter->SetString(keys2::kHostSuffixKey, "example.com");
- DictionaryValue valid_condition;
- valid_condition.Set(keys::kResourceTypeKey, resource_type_list);
- valid_condition.Set(keys::kUrlKey, url_filter);
- valid_condition.SetString(keys::kInstanceTypeKey,
- keys::kRequestMatcherType);
// Test wrong condition name passed.
error.clear();
- result = WebRequestCondition::Create(matcher.condition_factory(),
- invalid_condition, &error);
+ result = WebRequestCondition::Create(
+ matcher.condition_factory(),
+ *base::test::ParseJson(
+ "{ \"invalid\": \"foobar\", \n"
+ " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n"
+ "}"),
+ &error);
EXPECT_FALSE(error.empty());
EXPECT_FALSE(result.get());
// Test wrong datatype in host_suffix.
error.clear();
- result = WebRequestCondition::Create(matcher.condition_factory(),
- invalid_condition2, &error);
+ result = WebRequestCondition::Create(
+ matcher.condition_factory(),
+ *base::test::ParseJson(
+ "{ \n"
+ " \"url\": [], \n"
+ " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n"
+ "}"),
+ &error);
EXPECT_FALSE(error.empty());
EXPECT_FALSE(result.get());
// Test success (can we support multiple criteria?)
error.clear();
- result = WebRequestCondition::Create(matcher.condition_factory(),
- valid_condition, &error);
+ result = WebRequestCondition::Create(
+ matcher.condition_factory(),
+ *base::test::ParseJson(
+ "{ \n"
+ " \"resourceType\": [\"main_frame\"], \n"
+ " \"url\": { \"hostSuffix\": \"example.com\" }, \n"
+ " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n"
+ "}"),
+ &error);
EXPECT_EQ("", error);
ASSERT_TRUE(result.get());
@@ -90,35 +90,31 @@ TEST(WebRequestConditionTest, CreateConditionSet) {
MessageLoop message_loop(MessageLoop::TYPE_IO);
URLMatcher matcher;
- ListValue* http_scheme_list = new ListValue();
- http_scheme_list->Append(Value::CreateStringValue("http"));
- DictionaryValue* http_url_filter = new DictionaryValue();
- http_url_filter->SetString(keys2::kHostSuffixKey, "example.com");
- http_url_filter->Set(keys2::kSchemesKey, http_scheme_list);
- DictionaryValue http_condition;
- http_condition.SetString(keys::kInstanceTypeKey, keys::kRequestMatcherType);
- http_condition.Set(keys::kUrlKey, http_url_filter);
-
- ListValue* https_scheme_list = new ListValue();
- https_scheme_list->Append(Value::CreateStringValue("https"));
- DictionaryValue* https_url_filter = new DictionaryValue();
- https_url_filter->SetString(keys2::kHostSuffixKey, "example.com");
- https_url_filter->SetString(keys2::kHostPrefixKey, "www");
- https_url_filter->Set(keys2::kSchemesKey, https_scheme_list);
- DictionaryValue https_condition;
- https_condition.SetString(keys::kInstanceTypeKey, keys::kRequestMatcherType);
- https_condition.Set(keys::kUrlKey, https_url_filter);
-
WebRequestConditionSet::AnyVector conditions;
linked_ptr<json_schema_compiler::any::Any> condition1 = make_linked_ptr(
new json_schema_compiler::any::Any);
- condition1->Init(http_condition);
+ condition1->Init(*base::test::ParseJson(
+ "{ \n"
+ " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n"
+ " \"url\": { \n"
+ " \"hostSuffix\": \"example.com\", \n"
+ " \"schemes\": [\"http\"], \n"
+ " }, \n"
+ "}"));
conditions.push_back(condition1);
linked_ptr<json_schema_compiler::any::Any> condition2 = make_linked_ptr(
new json_schema_compiler::any::Any);
- condition2->Init(https_condition);
+ condition2->Init(*base::test::ParseJson(
+ "{ \n"
+ " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n"
+ " \"url\": { \n"
+ " \"hostSuffix\": \"example.com\", \n"
+ " \"hostPrefix\": \"www\", \n"
+ " \"schemes\": [\"https\"], \n"
+ " }, \n"
+ "}"));
conditions.push_back(condition2);
// Test insertion
@@ -184,25 +180,16 @@ TEST(WebRequestConditionTest, TestPortFilter) {
MessageLoop message_loop(MessageLoop::TYPE_IO);
URLMatcher matcher;
- // Allow 80;1000-1010.
- ListValue* port_range = new ListValue();
- port_range->Append(Value::CreateIntegerValue(1000));
- port_range->Append(Value::CreateIntegerValue(1010));
- ListValue* port_ranges = new ListValue();
- port_ranges->Append(Value::CreateIntegerValue(80));
- port_ranges->Append(port_range);
-
- DictionaryValue* url_filter = new DictionaryValue();
- url_filter->Set(keys2::kPortsKey, port_ranges);
- url_filter->SetString(keys2::kHostSuffixKey, "example.com");
-
- DictionaryValue condition;
- condition.SetString(keys::kInstanceTypeKey, keys::kRequestMatcherType);
- condition.Set(keys::kUrlKey, url_filter);
-
linked_ptr<json_schema_compiler::any::Any> any_condition =
make_linked_ptr(new json_schema_compiler::any::Any);
- any_condition->Init(condition);
+ any_condition->Init(*base::test::ParseJson(
+ "{ \n"
+ " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n"
+ " \"url\": { \n"
+ " \"ports\": [80, [1000, 1010]], \n" // Allow 80;1000-1010.
+ " \"hostSuffix\": \"example.com\", \n"
+ " }, \n"
+ "}"));
WebRequestConditionSet::AnyVector conditions;
conditions.push_back(any_condition);
@@ -259,22 +246,20 @@ TEST(WebRequestConditionTest, ConditionsWithConflictingStages) {
DictionaryValue condition_value;
condition_value.SetString(keys::kInstanceTypeKey, keys::kRequestMatcherType);
- // Create two JS arrays, each with one empty object...
- scoped_ptr<ListValue> request_header_filters(new ListValue());
- request_header_filters->Append(new DictionaryValue());
- scoped_ptr<ListValue> response_header_filters(new ListValue());
- response_header_filters->Append(new DictionaryValue());
-
- // ...and pass them as the header filters to the request matcher.
- condition_value.Set(keys::kRequestHeadersKey,
- request_header_filters.release());
- condition_value.Set(keys::kResponseHeadersKey,
- response_header_filters.release());
// Test error on incompatible application stages for involved attributes.
error.clear();
- result = WebRequestCondition::Create(matcher.condition_factory(),
- condition_value, &error);
+ result = WebRequestCondition::Create(
+ matcher.condition_factory(),
+ *base::test::ParseJson(
+ "{ \n"
+ " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n"
+ // Pass a JS array with one empty object to each of the header
+ // filters.
+ " \"requestHeaders\": [{}], \n"
+ " \"responseHeaders\": [{}], \n"
+ "}"),
+ &error);
EXPECT_FALSE(error.empty());
EXPECT_FALSE(result.get());
}

Powered by Google App Engine
This is Rietveld 408576698