Index: chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc |
diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc |
index 8819a320a2df3c14ea7beecce15c3d9ec2fbedd7..75bacc4324ec3565e822f96706968b1513769190 100644 |
--- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc |
+++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc |
@@ -15,6 +15,7 @@ |
namespace { |
const char kExtensionId[] = "ext1"; |
+const char kExtensionId2[] = "ext2"; |
const char kRuleId1[] = "rule1"; |
const char kRuleId2[] = "rule2"; |
@@ -140,4 +141,90 @@ TEST_F(WebRequestRulesRegistryTest, AddRulesImpl) { |
matches.end()); |
} |
+TEST_F(WebRequestRulesRegistryTest, RemoveRulesImpl) { |
+ scoped_refptr<WebRequestRulesRegistry> registry(new WebRequestRulesRegistry); |
+ std::string error; |
+ |
+ // Setup RulesRegistry to contain two rules. |
+ std::vector<linked_ptr<RulesRegistry::Rule> > rules_to_add; |
+ rules_to_add.push_back(CreateRule1()); |
+ rules_to_add.push_back(CreateRule2()); |
+ error = registry->AddRules(kExtensionId, rules_to_add); |
+ EXPECT_TRUE(error.empty()); |
+ |
+ // Verify initial state. |
+ std::vector<linked_ptr<RulesRegistry::Rule> > registered_rules; |
+ registry->GetAllRules(kExtensionId, ®istered_rules); |
+ EXPECT_EQ(2u, registered_rules.size()); |
+ |
+ // Remove first rule. |
+ std::vector<std::string> rules_to_remove; |
+ rules_to_remove.push_back(kRuleId1); |
+ error = registry->RemoveRules(kExtensionId, rules_to_remove); |
+ EXPECT_TRUE(error.empty()); |
+ |
+ // Verify that only one rule is left. |
+ registered_rules.clear(); |
+ registry->GetAllRules(kExtensionId, ®istered_rules); |
+ EXPECT_EQ(1u, registered_rules.size()); |
+ |
+ // Now rules_to_remove contains both rules, i.e. one that does not exist in |
+ // the rules registry anymore. Effectively we only remove the second rule. |
+ rules_to_remove.push_back(kRuleId2); |
+ error = registry->RemoveRules(kExtensionId, rules_to_remove); |
+ EXPECT_TRUE(error.empty()); |
+ |
+ // Verify that everything is gone. |
+ registered_rules.clear(); |
+ registry->GetAllRules(kExtensionId, ®istered_rules); |
+ EXPECT_EQ(0u, registered_rules.size()); |
+ |
+ EXPECT_TRUE(registry->IsCompletelyEmpty()); |
+} |
+ |
+TEST_F(WebRequestRulesRegistryTest, RemoveAllRulesImpl) { |
+ scoped_refptr<WebRequestRulesRegistry> registry(new WebRequestRulesRegistry); |
+ std::string error; |
+ |
+ // Setup RulesRegistry to contain two rules, one for each extension. |
+ std::vector<linked_ptr<RulesRegistry::Rule> > rules_to_add(1); |
+ rules_to_add[0] = CreateRule1(); |
+ error = registry->AddRules(kExtensionId, rules_to_add); |
+ EXPECT_TRUE(error.empty()); |
+ |
+ rules_to_add[0] = CreateRule2(); |
+ error = registry->AddRules(kExtensionId2, rules_to_add); |
+ EXPECT_TRUE(error.empty()); |
+ |
+ // Verify initial state. |
+ std::vector<linked_ptr<RulesRegistry::Rule> > registered_rules; |
+ registry->GetAllRules(kExtensionId, ®istered_rules); |
+ EXPECT_EQ(1u, registered_rules.size()); |
+ registered_rules.clear(); |
+ registry->GetAllRules(kExtensionId2, ®istered_rules); |
+ EXPECT_EQ(1u, registered_rules.size()); |
+ |
+ // Remove rule of first extension. |
+ error = registry->RemoveAllRules(kExtensionId); |
+ EXPECT_TRUE(error.empty()); |
+ |
+ // Verify that only the first rule is deleted. |
+ registered_rules.clear(); |
+ registry->GetAllRules(kExtensionId, ®istered_rules); |
+ EXPECT_EQ(0u, registered_rules.size()); |
+ registered_rules.clear(); |
+ registry->GetAllRules(kExtensionId2, ®istered_rules); |
+ EXPECT_EQ(1u, registered_rules.size()); |
+ |
+ // Test removing rules if none exist. |
+ error = registry->RemoveAllRules(kExtensionId); |
+ EXPECT_TRUE(error.empty()); |
+ |
+ // Remove rule from second extension. |
+ error = registry->RemoveAllRules(kExtensionId2); |
+ EXPECT_TRUE(error.empty()); |
+ |
+ EXPECT_TRUE(registry->IsCompletelyEmpty()); |
+} |
+ |
} // namespace extensions |