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_action
.h" | 5 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_action
.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_condit
ion.h" |
9 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_consta
nts.h" | 10 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_consta
nts.h" |
10 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" | 11 #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" |
11 #include "chrome/common/extensions/extension_constants.h" | 12 #include "chrome/common/extensions/extension_constants.h" |
12 #include "net/url_request/url_request_test_util.h" | 13 #include "net/url_request/url_request_test_util.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
14 | 15 |
15 namespace { | 16 namespace { |
16 const char kUnknownActionType[] = "unknownType"; | 17 const char kUnknownActionType[] = "unknownType"; |
17 } // namespace | 18 } // namespace |
18 | 19 |
(...skipping 30 matching lines...) Expand all Loading... |
49 // Test success | 50 // Test success |
50 input.SetString(keys::kInstanceTypeKey, keys::kCancelRequestType); | 51 input.SetString(keys::kInstanceTypeKey, keys::kCancelRequestType); |
51 error.clear(); | 52 error.clear(); |
52 result = WebRequestAction::Create(input, &error, &bad_message); | 53 result = WebRequestAction::Create(input, &error, &bad_message); |
53 EXPECT_EQ("", error); | 54 EXPECT_EQ("", error); |
54 EXPECT_FALSE(bad_message); | 55 EXPECT_FALSE(bad_message); |
55 ASSERT_TRUE(result.get()); | 56 ASSERT_TRUE(result.get()); |
56 EXPECT_EQ(WebRequestAction::ACTION_CANCEL_REQUEST, result->GetType()); | 57 EXPECT_EQ(WebRequestAction::ACTION_CANCEL_REQUEST, result->GetType()); |
57 } | 58 } |
58 | 59 |
59 TEST(WebRequestActionTest, CreateActionSet) { | |
60 std::string error; | |
61 bool bad_message = false; | |
62 scoped_ptr<WebRequestActionSet> result; | |
63 | |
64 WebRequestActionSet::AnyVector input; | |
65 | |
66 // Test empty input. | |
67 error.clear(); | |
68 result = WebRequestActionSet::Create(input, &error, &bad_message); | |
69 EXPECT_TRUE(error.empty()) << error; | |
70 EXPECT_FALSE(bad_message); | |
71 ASSERT_TRUE(result.get()); | |
72 EXPECT_TRUE(result->actions().empty()); | |
73 EXPECT_EQ(std::numeric_limits<int>::min(), result->GetMinimumPriority()); | |
74 | |
75 DictionaryValue correct_action; | |
76 correct_action.SetString(keys::kInstanceTypeKey, keys::kIgnoreRulesType); | |
77 correct_action.SetInteger(keys::kLowerPriorityThanKey, 10); | |
78 DictionaryValue incorrect_action; | |
79 incorrect_action.SetString(keys::kInstanceTypeKey, kUnknownActionType); | |
80 | |
81 // Test success. | |
82 linked_ptr<json_schema_compiler::any::Any> action1 = make_linked_ptr( | |
83 new json_schema_compiler::any::Any); | |
84 action1->Init(correct_action); | |
85 input.push_back(action1); | |
86 error.clear(); | |
87 result = WebRequestActionSet::Create(input, &error, &bad_message); | |
88 EXPECT_TRUE(error.empty()) << error; | |
89 EXPECT_FALSE(bad_message); | |
90 ASSERT_TRUE(result.get()); | |
91 ASSERT_EQ(1u, result->actions().size()); | |
92 EXPECT_EQ(WebRequestAction::ACTION_IGNORE_RULES, | |
93 result->actions()[0]->GetType()); | |
94 EXPECT_EQ(10, result->GetMinimumPriority()); | |
95 | |
96 // Test failure. | |
97 linked_ptr<json_schema_compiler::any::Any> action2 = make_linked_ptr( | |
98 new json_schema_compiler::any::Any); | |
99 action2->Init(incorrect_action); | |
100 input.push_back(action2); | |
101 error.clear(); | |
102 result = WebRequestActionSet::Create(input, &error, &bad_message); | |
103 EXPECT_NE("", error); | |
104 EXPECT_FALSE(result.get()); | |
105 } | |
106 | |
107 // Test capture group syntax conversions of WebRequestRedirectByRegExAction | 60 // Test capture group syntax conversions of WebRequestRedirectByRegExAction |
108 TEST(WebRequestActionTest, PerlToRe2Style) { | 61 TEST(WebRequestActionTest, PerlToRe2Style) { |
109 #define CallPerlToRe2Style WebRequestRedirectByRegExAction::PerlToRe2Style | 62 #define CallPerlToRe2Style WebRequestRedirectByRegExAction::PerlToRe2Style |
110 // foo$1bar -> foo\1bar | 63 // foo$1bar -> foo\1bar |
111 EXPECT_EQ("foo\\1bar", CallPerlToRe2Style("foo$1bar")); | 64 EXPECT_EQ("foo\\1bar", CallPerlToRe2Style("foo$1bar")); |
112 // foo\$1bar -> foo$1bar | 65 // foo\$1bar -> foo$1bar |
113 EXPECT_EQ("foo$1bar", CallPerlToRe2Style("foo\\$1bar")); | 66 EXPECT_EQ("foo$1bar", CallPerlToRe2Style("foo\\$1bar")); |
114 // foo\\$1bar -> foo\\\1bar | 67 // foo\\$1bar -> foo\\\1bar |
115 EXPECT_EQ("foo\\\\\\1bar", CallPerlToRe2Style("foo\\\\$1bar")); | 68 EXPECT_EQ("foo\\\\\\1bar", CallPerlToRe2Style("foo\\\\$1bar")); |
116 // foo\bar -> foobar | 69 // foo\bar -> foobar |
(...skipping 23 matching lines...) Expand all Loading... |
140 WebRequestActionSet::AnyVector actions; | 93 WebRequestActionSet::AnyVector actions; |
141 actions.push_back(action); | 94 actions.push_back(action); |
142 | 95 |
143 action_set = WebRequestActionSet::Create(actions, &error, &bad_message); | 96 action_set = WebRequestActionSet::Create(actions, &error, &bad_message); |
144 EXPECT_EQ("", error); | 97 EXPECT_EQ("", error); |
145 EXPECT_FALSE(bad_message); | 98 EXPECT_FALSE(bad_message); |
146 ASSERT_TRUE(action.get()); | 99 ASSERT_TRUE(action.get()); |
147 | 100 |
148 // Check that redirect works on regular URLs but not on protected URLs. | 101 // Check that redirect works on regular URLs but not on protected URLs. |
149 net::TestURLRequest regular_request(GURL("http://test.com"), NULL, &context); | 102 net::TestURLRequest regular_request(GURL("http://test.com"), NULL, &context); |
150 std::list<LinkedPtrEventResponseDelta> deltas = | 103 std::list<LinkedPtrEventResponseDelta> deltas; |
151 action_set->CreateDeltas( | 104 DeclarativeWebRequestData request_data(®ular_request, ON_BEFORE_REQUEST); |
152 NULL, "ext1", | 105 WebRequestAction::ApplyInfo apply_info = { |
153 WebRequestRule::RequestData(®ular_request, ON_BEFORE_REQUEST), | 106 NULL, request_data, false, &deltas |
154 false, base::Time()); | 107 }; |
| 108 action_set->Apply("ext1", base::Time(), &apply_info); |
155 EXPECT_EQ(1u, deltas.size()); | 109 EXPECT_EQ(1u, deltas.size()); |
156 | 110 |
157 net::TestURLRequest protected_request(GURL("http://clients1.google.com"), | 111 net::TestURLRequest protected_request(GURL("http://clients1.google.com"), |
158 NULL, &context); | 112 NULL, &context); |
159 deltas = action_set->CreateDeltas( | 113 deltas.clear(); |
160 NULL, "ext1", | 114 request_data = |
161 WebRequestRule::RequestData(&protected_request, ON_BEFORE_REQUEST), | 115 DeclarativeWebRequestData(&protected_request, ON_BEFORE_REQUEST); |
162 false, base::Time()); | 116 action_set->Apply("ext1", base::Time(), &apply_info); |
163 EXPECT_EQ(0u, deltas.size()); | 117 EXPECT_EQ(0u, deltas.size()); |
164 } | 118 } |
165 | 119 |
166 } // namespace extensions | 120 } // namespace extensions |
OLD | NEW |