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

Unified Diff: chrome/browser/chromeos/plugin_selection_policy_unittest.cc

Issue 3717005: This adds a plugin selection policy for selecting allowed plugins (Closed)
Patch Set: fix win build Created 10 years, 2 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
« no previous file with comments | « chrome/browser/chromeos/plugin_selection_policy.cc ('k') | chrome/browser/plugin_service.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/plugin_selection_policy_unittest.cc
diff --git a/chrome/browser/chromeos/plugin_selection_policy_unittest.cc b/chrome/browser/chromeos/plugin_selection_policy_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..455ed3797faa91165ae7d40a48d32090f836072d
--- /dev/null
+++ b/chrome/browser/chromeos/plugin_selection_policy_unittest.cc
@@ -0,0 +1,270 @@
+// Copyright (c) 2010 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 "chrome/browser/chromeos/plugin_selection_policy.h"
+
+#include <string>
+#include <vector>
+
+#include "base/file_path.h"
+#include "base/file_util.h"
+#include "base/ref_counted.h"
+#include "base/scoped_temp_dir.h"
+#include "chrome/browser/browser_thread.h"
+#include "googleurl/src/gurl.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/platform_test.h"
+
+using std::string;
+using std::vector;
+
+#if !defined(OS_CHROMEOS)
+#error This file is meant to be compiled on ChromeOS only.
+#endif
+
+namespace chromeos {
+
+const char kBasicPolicy[] = "# This is a basic policy\n"
+ "plugin test.so\n"
+ "allow foo.com\n"
+ "deny bar.com\n";
+
+const char kNoPluginPolicy[] = "# This is a policy with missing plugin.\n"
+ "# Missing plugin test.so\n"
+ "allow foo.com\n"
+ "deny bar.com\n";
+const char kNoRulesPolicy[] = "# This is a policy with no rules\n"
+ "plugin test.so\n";
+
+const char kEmptyPolicy[] = "# This is an empty policy\n";
+
+const char kCommentTestPolicy[] = "# This is a policy with inline comments.\n"
+ "plugin test.so# like this\n"
+ "allow foo.com # and this\n"
+ "deny bar.com # and this\n";
+
+const char kMultiPluginTestPolicy[] =
+ "# This is a policy with multiple plugins.\n"
+ "plugin allow_foo.so\n"
+ "allow foo.com\n"
+ "deny bar.com\n"
+ "plugin allow_baz_bim1.so\n"
+ "deny google.com\n"
+ "allow baz.com\n"
+ "allow bim.com\n"
+ "plugin allow_baz_bim2.so\n"
+ "deny google.com\n"
+ "allow baz.com\n"
+ "allow bim.com\n";
+
+const char kWhitespaceTestPolicy[] = "# This is a policy with odd whitespace.\n"
+ " plugin\ttest.so# like this\n"
+ "\n\n \n allow\t\tfoo.com # and this\n"
+ "\tdeny bar.com\t\t\t# and this \n";
+
+class PluginSelectionPolicyTest : public PlatformTest {
+ public:
+ PluginSelectionPolicyTest()
+ : loop_(MessageLoop::TYPE_DEFAULT),
+ file_thread_(BrowserThread::FILE, &loop_) {}
+
+ virtual void SetUp() {
+ PlatformTest::SetUp();
+ // Create a policy file to test with.
+ ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
+ }
+
+ protected:
+ bool CreatePolicy(const std::string& name,
+ const std::string& contents,
+ FilePath* path) {
+ FilePath policy_file(temp_dir_.path());
+ policy_file = policy_file.Append(FilePath(name));
+ int bytes_written = file_util::WriteFile(policy_file,
+ contents.c_str(),
+ contents.size());
+ if (path)
+ *path = policy_file;
+ return bytes_written >= 0;
Paweł Hajdan Jr. 2010/10/15 07:17:41 This should be bytes_written == contents.size().
+ }
+
+ private:
+ ScopedTempDir temp_dir_;
+ MessageLoop loop_;
+ BrowserThread file_thread_;
+};
+
+TEST_F(PluginSelectionPolicyTest, Basic) {
+ FilePath path;
+ ASSERT_TRUE(CreatePolicy("basic", kBasicPolicy, &path));
+ scoped_refptr<PluginSelectionPolicy> policy = new PluginSelectionPolicy;
+ EXPECT_TRUE(policy->InitFromFile(path));
+}
+
+TEST_F(PluginSelectionPolicyTest, InitFromFile) {
+ {
+ FilePath path;
+ ASSERT_TRUE(CreatePolicy("basic", kBasicPolicy, &path));
+ scoped_refptr<PluginSelectionPolicy> policy = new PluginSelectionPolicy;
+ EXPECT_TRUE(policy->InitFromFile(path));
+ }
+
+ {
+ FilePath path;
+ ASSERT_TRUE(CreatePolicy("no_plugin", kNoPluginPolicy, &path));
+ scoped_refptr<PluginSelectionPolicy> policy = new PluginSelectionPolicy;
+ EXPECT_FALSE(policy->InitFromFile(path));
+ }
+
+ {
+ FilePath path;
+ ASSERT_TRUE(CreatePolicy("no_rules", kNoRulesPolicy, &path));
+ scoped_refptr<PluginSelectionPolicy> policy = new PluginSelectionPolicy;
+ EXPECT_TRUE(policy->InitFromFile(path));
+ }
+
+ {
+ FilePath path;
+ ASSERT_TRUE(CreatePolicy("empty", kEmptyPolicy, &path));
+ scoped_refptr<PluginSelectionPolicy> policy = new PluginSelectionPolicy;
+ EXPECT_TRUE(policy->InitFromFile(path));
+ }
+
+ {
+ FilePath path;
+ ASSERT_TRUE(CreatePolicy("comment", kCommentTestPolicy, &path));
+ scoped_refptr<PluginSelectionPolicy> policy = new PluginSelectionPolicy;
+ EXPECT_TRUE(policy->InitFromFile(path));
+ }
+
+ {
+ FilePath path;
+ ASSERT_TRUE(CreatePolicy("comment", kMultiPluginTestPolicy, &path));
+ scoped_refptr<PluginSelectionPolicy> policy = new PluginSelectionPolicy;
+ EXPECT_TRUE(policy->InitFromFile(path));
+ }
+
+ {
+ FilePath path;
+ ASSERT_TRUE(CreatePolicy("whitespace", kWhitespaceTestPolicy, &path));
+ scoped_refptr<PluginSelectionPolicy> policy = new PluginSelectionPolicy;
+ EXPECT_TRUE(policy->InitFromFile(path));
+ }
+}
+
+TEST_F(PluginSelectionPolicyTest, IsAllowed) {
+ FilePath path;
+ ASSERT_TRUE(CreatePolicy("basic", kBasicPolicy, &path));
+
+ scoped_refptr<PluginSelectionPolicy> policy1 = new PluginSelectionPolicy;
+ ASSERT_TRUE(policy1->InitFromFile(path));
+ EXPECT_TRUE(policy1->IsAllowed(GURL("http://www.foo.com/blah.html"),
+ FilePath("/usr/local/bin/test.so")));
+ EXPECT_FALSE(policy1->IsAllowed(GURL("http://www.bar.com/blah.html"),
+ FilePath("/usr/local/bin/test.so")));
+ EXPECT_FALSE(policy1->IsAllowed(GURL("http://www.baz.com/blah.html"),
+ FilePath("/usr/local/bin/test.so")));
+ EXPECT_TRUE(policy1->IsAllowed(GURL("http://www.baz.com/blah.html"),
+ FilePath("/usr/local/bin/real.so")));
+
+ scoped_refptr<PluginSelectionPolicy> policy2 = new PluginSelectionPolicy;
+ ASSERT_TRUE(CreatePolicy("no_rules", kNoRulesPolicy, &path));
+ ASSERT_TRUE(policy2->InitFromFile(path));
+ EXPECT_FALSE(policy2->IsAllowed(GURL("http://www.foo.com/blah.html"),
+ FilePath("/usr/local/bin/test.so")));
+ EXPECT_FALSE(policy2->IsAllowed(GURL("http://www.bar.com/blah.html"),
+ FilePath("/usr/local/bin/test.so")));
+ EXPECT_FALSE(policy2->IsAllowed(GURL("http://www.baz.com/blah.html"),
+ FilePath("/usr/local/bin/test.so")));
+ EXPECT_TRUE(policy2->IsAllowed(GURL("http://www.baz.com/blah.html"),
+ FilePath("/usr/local/bin/real.so")));
+
+ scoped_refptr<PluginSelectionPolicy> policy3 = new PluginSelectionPolicy;
+ ASSERT_TRUE(CreatePolicy("empty", kEmptyPolicy, &path));
+ ASSERT_TRUE(policy3->InitFromFile(path));
+ EXPECT_TRUE(policy3->IsAllowed(GURL("http://www.foo.com/blah.html"),
+ FilePath("/usr/local/bin/test.so")));
+ EXPECT_TRUE(policy3->IsAllowed(GURL("http://www.bar.com/blah.html"),
+ FilePath("/usr/local/bin/test.so")));
+ EXPECT_TRUE(policy3->IsAllowed(GURL("http://www.baz.com/blah.html"),
+ FilePath("/usr/local/bin/test.so")));
+ EXPECT_TRUE(policy3->IsAllowed(GURL("http://www.baz.com/blah.html"),
+ FilePath("/usr/local/bin/real.so")));
+}
+
+TEST_F(PluginSelectionPolicyTest, FindFirstAllowed) {
+ FilePath path;
+ ASSERT_TRUE(CreatePolicy("multi", kMultiPluginTestPolicy, &path));
+ scoped_refptr<PluginSelectionPolicy> policy = new PluginSelectionPolicy;
+ ASSERT_TRUE(policy->InitFromFile(path));
+ EXPECT_TRUE(policy->IsAllowed(GURL("http://www.foo.com/blah.html"),
+ FilePath("/usr/local/bin/allow_foo.so")));
+ EXPECT_FALSE(policy->IsAllowed(GURL("http://www.bar.com/blah.html"),
+ FilePath("/usr/local/bin/allow_foo.so")));
+ EXPECT_FALSE(policy->IsAllowed(GURL("http://www.baz.com/blah.html"),
+ FilePath("/usr/local/bin/allow_foo.so")));
+ EXPECT_FALSE(policy->IsAllowed(GURL("http://www.bim.com/blah.html"),
+ FilePath("/usr/local/bin/allow_foo.so")));
+ EXPECT_FALSE(policy->IsAllowed(GURL("http://www.foo.com/blah.html"),
+ FilePath("/usr/local/bin/allow_baz_bim1.so")));
+ EXPECT_FALSE(policy->IsAllowed(GURL("http://www.bar.com/blah.html"),
+ FilePath("/usr/local/bin/allow_baz_bim1.so")));
+ EXPECT_TRUE(policy->IsAllowed(GURL("http://www.baz.com/blah.html"),
+ FilePath("/usr/local/bin/allow_baz_bim1.so")));
+ EXPECT_TRUE(policy->IsAllowed(GURL("http://www.bim.com/blah.html"),
+ FilePath("/usr/local/bin/allow_baz_bim1.so")));
+ EXPECT_FALSE(policy->IsAllowed(GURL("http://www.google.com/blah.html"),
+ FilePath("/usr/local/bin/allow_baz_bim1.so")));
+ EXPECT_FALSE(policy->IsAllowed(GURL("http://www.foo.com/blah.html"),
+ FilePath("/usr/local/bin/allow_baz_bim2.so")));
+ EXPECT_FALSE(policy->IsAllowed(GURL("http://www.bar.com/blah.html"),
+ FilePath("/usr/local/bin/allow_baz_bim2.so")));
+ EXPECT_TRUE(policy->IsAllowed(GURL("http://www.baz.com/blah.html"),
+ FilePath("/usr/local/bin/allow_baz_bim2.so")));
+ EXPECT_TRUE(policy->IsAllowed(GURL("http://www.bim.com/blah.html"),
+ FilePath("/usr/local/bin/allow_baz_bim2.so")));
+ EXPECT_FALSE(policy->IsAllowed(GURL("http://www.google.com/blah.html"),
+ FilePath("/usr/local/bin/allow_baz_bim2.so")));
+ std::vector<WebPluginInfo> info_vector;
+ WebPluginInfo info;
+ // First we test that the one without any policy gets
+ // selected for all if it's first.
+ info.path = FilePath("/usr/local/bin/no_policy.so");
+ info_vector.push_back(info);
+ info.path = FilePath("/usr/local/bin/allow_foo.so");
+ info_vector.push_back(info);
+ info.path = FilePath("/usr/local/bin/allow_baz_bim1.so");
+ info_vector.push_back(info);
+ info.path = FilePath("/usr/local/bin/allow_baz_bim2.so");
+ info_vector.push_back(info);
+ EXPECT_EQ(0, policy->FindFirstAllowed(GURL("http://www.baz.com/blah.html"),
+ info_vector));
+ EXPECT_EQ(0, policy->FindFirstAllowed(GURL("http://www.foo.com/blah.html"),
+ info_vector));
+ EXPECT_EQ(0, policy->FindFirstAllowed(GURL("http://www.bling.com/blah.html"),
+ info_vector));
+ EXPECT_EQ(0, policy->FindFirstAllowed(GURL("http://www.google.com/blah.html"),
+ info_vector));
+
+ // Now move the plugin without any policy to the end.
+ info_vector.clear();
+ info.path = FilePath("/usr/local/bin/allow_foo.so");
+ info_vector.push_back(info);
+ info.path = FilePath("/usr/local/bin/allow_baz_bim1.so");
+ info_vector.push_back(info);
+ info.path = FilePath("/usr/local/bin/allow_baz_bim2.so");
+ info_vector.push_back(info);
+ info.path = FilePath("/usr/local/bin/no_policy.so");
+ info_vector.push_back(info);
+ EXPECT_EQ(1, policy->FindFirstAllowed(GURL("http://www.baz.com/blah.html"),
+ info_vector));
+ EXPECT_EQ(0, policy->FindFirstAllowed(GURL("http://www.foo.com/blah.html"),
+ info_vector));
+ EXPECT_EQ(3, policy->FindFirstAllowed(GURL("http://www.bling.com/blah.html"),
+ info_vector));
+ EXPECT_EQ(3, policy->FindFirstAllowed(GURL("http://www.google.com/blah.html"),
+ info_vector));
+}
+
+} // namespace chromeos
« no previous file with comments | « chrome/browser/chromeos/plugin_selection_policy.cc ('k') | chrome/browser/plugin_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698