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

Side by Side Diff: chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc

Issue 9844028: Implement rules removal for WebRequestRulesRegistry (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments Created 8 years, 9 months 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_rules_ registry.h" 5 #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_ registry.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/memory/linked_ptr.h" 9 #include "base/memory/linked_ptr.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
11 #include "base/values.h" 11 #include "base/values.h"
12 #include "content/test/test_browser_thread.h" 12 #include "content/test/test_browser_thread.h"
13 #include "net/url_request/url_request_test_util.h" 13 #include "net/url_request/url_request_test_util.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 namespace { 16 namespace {
17 const char kExtensionId[] = "ext1"; 17 const char kExtensionId[] = "ext1";
18 const char kExtensionId2[] = "ext2";
18 const char kRuleId1[] = "rule1"; 19 const char kRuleId1[] = "rule1";
19 const char kRuleId2[] = "rule2"; 20 const char kRuleId2[] = "rule2";
20 21
21 const char kCancelRequestType[] = "experimental.webRequest.CancelRequest"; 22 const char kCancelRequestType[] = "experimental.webRequest.CancelRequest";
22 const char kRequestMatcher[] = "experimental.webRequest.RequestMatcher"; 23 const char kRequestMatcher[] = "experimental.webRequest.RequestMatcher";
23 const char kInstanceType[] = "instanceType"; 24 const char kInstanceType[] = "instanceType";
24 } 25 }
25 26
26 namespace extensions { 27 namespace extensions {
27 28
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 matches.end()); 134 matches.end());
134 135
135 GURL foobar_url("http://www.foobar.com"); 136 GURL foobar_url("http://www.foobar.com");
136 TestURLRequest foobar_request(foobar_url, NULL); 137 TestURLRequest foobar_request(foobar_url, NULL);
137 matches = registry->GetMatches(&foobar_request); 138 matches = registry->GetMatches(&foobar_request);
138 EXPECT_EQ(1u, matches.size()); 139 EXPECT_EQ(1u, matches.size());
139 EXPECT_TRUE(matches.find(std::make_pair(kExtensionId, kRuleId2)) != 140 EXPECT_TRUE(matches.find(std::make_pair(kExtensionId, kRuleId2)) !=
140 matches.end()); 141 matches.end());
141 } 142 }
142 143
144 TEST_F(WebRequestRulesRegistryTest, RemoveRulesImpl) {
145 scoped_refptr<WebRequestRulesRegistry> registry(new WebRequestRulesRegistry);
146 std::string error;
147
148 // Setup RulesRegistry to contain two rules.
149 std::vector<linked_ptr<RulesRegistry::Rule> > rules_to_add;
150 rules_to_add.push_back(CreateRule1());
151 rules_to_add.push_back(CreateRule2());
152 error = registry->AddRules(kExtensionId, rules_to_add);
153 EXPECT_TRUE(error.empty());
154
155 // Verify initial state.
156 std::vector<linked_ptr<RulesRegistry::Rule> > registered_rules;
157 registry->GetAllRules(kExtensionId, &registered_rules);
158 EXPECT_EQ(2u, registered_rules.size());
159
160 // Remove first rule.
161 std::vector<std::string> rules_to_remove;
162 rules_to_remove.push_back(kRuleId1);
163 error = registry->RemoveRules(kExtensionId, rules_to_remove);
164 EXPECT_TRUE(error.empty());
165
166 // Verify that only one rule is left.
167 registered_rules.clear();
168 registry->GetAllRules(kExtensionId, &registered_rules);
169 EXPECT_EQ(1u, registered_rules.size());
170
171 // Now rules_to_remove contains both rules, i.e. one that does not exist in
172 // the rules registry anymore. Effectively we only remove the second rule.
173 rules_to_remove.push_back(kRuleId2);
174 error = registry->RemoveRules(kExtensionId, rules_to_remove);
175 EXPECT_TRUE(error.empty());
176
177 // Verify that everything is gone.
178 registered_rules.clear();
179 registry->GetAllRules(kExtensionId, &registered_rules);
180 EXPECT_EQ(0u, registered_rules.size());
181
182 EXPECT_TRUE(registry->IsEmpty());
183 }
184
185 TEST_F(WebRequestRulesRegistryTest, RemoveAllRulesImpl) {
186 scoped_refptr<WebRequestRulesRegistry> registry(new WebRequestRulesRegistry);
187 std::string error;
188
189 // Setup RulesRegistry to contain two rules, one for each extension.
190 std::vector<linked_ptr<RulesRegistry::Rule> > rules_to_add(1);
191 rules_to_add[0] = CreateRule1();
192 error = registry->AddRules(kExtensionId, rules_to_add);
193 EXPECT_TRUE(error.empty());
194
195 rules_to_add[0] = CreateRule2();
196 error = registry->AddRules(kExtensionId2, rules_to_add);
197 EXPECT_TRUE(error.empty());
198
199 // Verify initial state.
200 std::vector<linked_ptr<RulesRegistry::Rule> > registered_rules;
201 registry->GetAllRules(kExtensionId, &registered_rules);
202 EXPECT_EQ(1u, registered_rules.size());
203 registered_rules.clear();
204 registry->GetAllRules(kExtensionId2, &registered_rules);
205 EXPECT_EQ(1u, registered_rules.size());
206
207 // Remove rule of first extension.
208 error = registry->RemoveAllRules(kExtensionId);
209 EXPECT_TRUE(error.empty());
210
211 // Verify that only the first rule is deleted.
212 registered_rules.clear();
213 registry->GetAllRules(kExtensionId, &registered_rules);
214 EXPECT_EQ(0u, registered_rules.size());
215 registered_rules.clear();
216 registry->GetAllRules(kExtensionId2, &registered_rules);
217 EXPECT_EQ(1u, registered_rules.size());
218
219 // Test removing rules if none exist.
220 error = registry->RemoveAllRules(kExtensionId);
221 EXPECT_TRUE(error.empty());
222
223 // Remove rule from second extension.
224 error = registry->RemoveAllRules(kExtensionId2);
225 EXPECT_TRUE(error.empty());
226
227 EXPECT_TRUE(registry->IsEmpty());
228 }
229
143 } // namespace extensions 230 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698