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

Unified Diff: chrome/browser/extensions/blacklist_unittest.cc

Issue 11415216: Make Blacklist::IsBlacklist asynchronous (it will need to be for safe (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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/blacklist_unittest.cc
diff --git a/chrome/browser/extensions/blacklist_unittest.cc b/chrome/browser/extensions/blacklist_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..dc9fc0ca9ccdd1eea64e6f0f150d0ca3788e14c8
--- /dev/null
+++ b/chrome/browser/extensions/blacklist_unittest.cc
@@ -0,0 +1,116 @@
+// Copyright 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/message_loop.h"
+#include "chrome/browser/extensions/blacklist.h"
+#include "chrome/browser/extensions/extension_prefs.h"
+#include "chrome/browser/extensions/test_blacklist.h"
+#include "chrome/browser/extensions/test_extension_prefs.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace extensions {
+namespace {
+
+class BlacklistTest : public testing::Test {
+ public:
+ BlacklistTest()
+ : prefs_(message_loop_.message_loop_proxy()),
+ blacklist_(prefs_.prefs()) {
+ }
+
+ bool IsBlacklisted(const Extension* extension) {
+ return TestBlacklist(&blacklist_).IsBlacklisted(extension->id());
+ }
+
+ void SetFromUpdater(const std::vector<std::string>& ids,
+ const std::string& version) {
+ blacklist_.SetFromUpdater(ids, version);
+ }
+
+ protected:
+ MessageLoop message_loop_;
+
+ TestExtensionPrefs prefs_;
+
+ Blacklist blacklist_;
+};
+
+TEST_F(BlacklistTest, SetFromUpdater) {
+ scoped_refptr<const Extension> extension_a = prefs_.AddExtension("a");
+ scoped_refptr<const Extension> extension_b = prefs_.AddExtension("b");
+ scoped_refptr<const Extension> extension_c = prefs_.AddExtension("c");
+ scoped_refptr<const Extension> extension_d = prefs_.AddExtension("d");
+
+ // c, d, start blacklisted.
+ prefs_.prefs()->SetExtensionBlacklisted(extension_c->id(), true);
+ prefs_.prefs()->SetExtensionBlacklisted(extension_d->id(), true);
+
+ EXPECT_FALSE(IsBlacklisted(extension_a));
+ EXPECT_FALSE(IsBlacklisted(extension_b));
+ EXPECT_TRUE(IsBlacklisted(extension_c));
+ EXPECT_TRUE(IsBlacklisted(extension_d));
+
+ // Mix up the blacklist.
+ {
+ std::vector<std::string> blacklist;
+ blacklist.push_back(extension_b->id());
+ blacklist.push_back(extension_c->id());
+ SetFromUpdater(blacklist, "1");
+ }
+ EXPECT_FALSE(IsBlacklisted(extension_a));
+ EXPECT_TRUE(IsBlacklisted(extension_b));
+ EXPECT_TRUE(IsBlacklisted(extension_c));
+ EXPECT_FALSE(IsBlacklisted(extension_d));
+
+ // No-op, just in case.
+ {
+ std::vector<std::string> blacklist;
+ blacklist.push_back(extension_b->id());
+ blacklist.push_back(extension_c->id());
+ SetFromUpdater(blacklist, "2");
+ }
+ EXPECT_FALSE(IsBlacklisted(extension_a));
+ EXPECT_TRUE(IsBlacklisted(extension_b));
+ EXPECT_TRUE(IsBlacklisted(extension_c));
+ EXPECT_FALSE(IsBlacklisted(extension_d));
+
+ // Strictly increase the blacklist.
+ {
+ std::vector<std::string> blacklist;
+ blacklist.push_back(extension_a->id());
+ blacklist.push_back(extension_b->id());
+ blacklist.push_back(extension_c->id());
+ blacklist.push_back(extension_d->id());
+ SetFromUpdater(blacklist, "3");
+ }
+ EXPECT_TRUE(IsBlacklisted(extension_a));
+ EXPECT_TRUE(IsBlacklisted(extension_b));
+ EXPECT_TRUE(IsBlacklisted(extension_c));
+ EXPECT_TRUE(IsBlacklisted(extension_d));
+
+ // Strictly decrease the blacklist.
+ {
+ std::vector<std::string> blacklist;
+ blacklist.push_back(extension_a->id());
+ blacklist.push_back(extension_b->id());
+ SetFromUpdater(blacklist, "4");
+ }
+ EXPECT_TRUE(IsBlacklisted(extension_a));
+ EXPECT_TRUE(IsBlacklisted(extension_b));
+ EXPECT_FALSE(IsBlacklisted(extension_c));
+ EXPECT_FALSE(IsBlacklisted(extension_d));
+
+ // Clear the blacklist.
+ {
+ std::vector<std::string> blacklist;
+ SetFromUpdater(blacklist, "5");
+ }
+ EXPECT_FALSE(IsBlacklisted(extension_a));
+ EXPECT_FALSE(IsBlacklisted(extension_b));
+ EXPECT_FALSE(IsBlacklisted(extension_c));
+ EXPECT_FALSE(IsBlacklisted(extension_d));
+}
+
+} // namespace extensions
+} // namespace

Powered by Google App Engine
This is Rietveld 408576698