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

Unified 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: 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 side-by-side diff with in-line comments
Download patch
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, &registered_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, &registered_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, &registered_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, &registered_rules);
+ EXPECT_EQ(1u, registered_rules.size());
+ registered_rules.clear();
+ registry->GetAllRules(kExtensionId2, &registered_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, &registered_rules);
+ EXPECT_EQ(0u, registered_rules.size());
+ registered_rules.clear();
+ registry->GetAllRules(kExtensionId2, &registered_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

Powered by Google App Engine
This is Rietveld 408576698