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_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 Loading... |
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, ®istered_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, ®istered_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, ®istered_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, ®istered_rules); |
| 202 EXPECT_EQ(1u, registered_rules.size()); |
| 203 registered_rules.clear(); |
| 204 registry->GetAllRules(kExtensionId2, ®istered_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, ®istered_rules); |
| 214 EXPECT_EQ(0u, registered_rules.size()); |
| 215 registered_rules.clear(); |
| 216 registry->GetAllRules(kExtensionId2, ®istered_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 |
OLD | NEW |