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

Unified Diff: webkit/plugins/npapi/plugin_group_unittest.cc

Issue 7901015: Revert 101269 - Store plug-in enabled/disabled state in PluginPrefs instead of WebPluginInfo, to ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 3 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 | « webkit/plugins/npapi/plugin_group.cc ('k') | webkit/plugins/npapi/plugin_lib_mac.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/plugins/npapi/plugin_group_unittest.cc
===================================================================
--- webkit/plugins/npapi/plugin_group_unittest.cc (revision 101271)
+++ webkit/plugins/npapi/plugin_group_unittest.cc (working copy)
@@ -87,6 +87,12 @@
static PluginGroup* CreatePluginGroup(const WebPluginInfo& wpi) {
return PluginGroup::FromWebPluginInfo(wpi);
}
+ protected:
+ virtual void TearDown() {
+ PluginGroup::SetPolicyEnforcedPluginPatterns(std::set<string16>(),
+ std::set<string16>(),
+ std::set<string16>());
+ }
};
TEST_F(PluginGroupTest, PluginGroupMatch) {
@@ -96,7 +102,7 @@
EXPECT_TRUE(group->Match(kPlugin3045r));
EXPECT_FALSE(group->Match(kPluginNoVersion));
group->AddPlugin(kPlugin3045);
- EXPECT_FALSE(group->IsVulnerable(kPlugin3045));
+ EXPECT_FALSE(group->IsVulnerable());
group.reset(PluginGroupTest::CreatePluginGroup(kPluginDef));
EXPECT_FALSE(group->Match(kPluginNoVersion));
@@ -120,6 +126,45 @@
EXPECT_TRUE(group->Match(kPlugin4043));
}
+TEST_F(PluginGroupTest, PluginGroupDescription) {
+ string16 desc3043(ASCIIToUTF16("MyPlugin version 3.0.43"));
+ string16 desc3045(ASCIIToUTF16("MyPlugin version 3.0.45"));
+
+ PluginGroupDefinition plugindefs[] =
+ { kPluginDef, kPluginDef3, kPluginDef34 };
+ for (size_t i = 0; i < arraysize(plugindefs); ++i) {
+ WebPluginInfo plugin3043(kPlugin3043);
+ WebPluginInfo plugin3045(kPlugin3045);
+ {
+ scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup(
+ plugindefs[i]));
+ EXPECT_TRUE(group->Match(plugin3043));
+ group->AddPlugin(plugin3043);
+ EXPECT_EQ(desc3043, group->description());
+ EXPECT_TRUE(group->IsVulnerable());
+ EXPECT_TRUE(group->Match(plugin3045));
+ group->AddPlugin(plugin3045);
+ EXPECT_EQ(desc3043, group->description());
+ EXPECT_TRUE(group->IsVulnerable());
+ }
+ {
+ // Disable the second plugin.
+ plugin3045.enabled =
+ webkit::WebPluginInfo::USER_DISABLED_POLICY_UNMANAGED;
+ scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup(
+ plugindefs[i]));
+ EXPECT_TRUE(group->Match(plugin3043));
+ group->AddPlugin(plugin3043);
+ EXPECT_EQ(desc3043, group->description());
+ EXPECT_TRUE(group->IsVulnerable());
+ EXPECT_TRUE(group->Match(plugin3045));
+ group->AddPlugin(plugin3045);
+ EXPECT_EQ(desc3043, group->description());
+ EXPECT_TRUE(group->IsVulnerable());
+ }
+ }
+}
+
TEST_F(PluginGroupTest, PluginGroupDefinition) {
for (size_t i = 0; i < arraysize(kPluginDefinitions); ++i) {
scoped_ptr<PluginGroup> def_group(
@@ -143,12 +188,117 @@
};
for (size_t i = 0; i < arraysize(versions); i++) {
- scoped_ptr<Version> version(PluginGroup::CreateVersionFromString(
- ASCIIToUTF16(versions[i][0])));
- EXPECT_STREQ(versions[i][1], version->GetString().c_str());
+ const WebPluginInfo plugin = WebPluginInfo(
+ ASCIIToUTF16("Blah Plugin"), FilePath(FILE_PATH_LITERAL("blahfile")),
+ ASCIIToUTF16(versions[i][0]), string16());
+ scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup(plugin));
+ EXPECT_TRUE(group->Match(plugin));
+ group->AddPlugin(plugin);
+ scoped_ptr<DictionaryValue> data(group->GetDataForUI());
+ std::string version;
+ data->GetString("version", &version);
+ EXPECT_EQ(versions[i][1], version);
}
}
+TEST_F(PluginGroupTest, DisabledByPolicy) {
+ std::set<string16> disabled_plugins;
+ disabled_plugins.insert(ASCIIToUTF16("Disable this!"));
+ disabled_plugins.insert(ASCIIToUTF16("*Google*"));
+ PluginGroup::SetPolicyEnforcedPluginPatterns(disabled_plugins,
+ std::set<string16>(),
+ std::set<string16>());
+
+ EXPECT_FALSE(PluginGroup::IsPluginNameDisabledByPolicy(ASCIIToUTF16("42")));
+ EXPECT_TRUE(PluginGroup::IsPluginNameDisabledByPolicy(
+ ASCIIToUTF16("Disable this!")));
+ EXPECT_TRUE(PluginGroup::IsPluginNameDisabledByPolicy(
+ ASCIIToUTF16("Google Earth")));
+}
+
+TEST_F(PluginGroupTest, EnabledByPolicy) {
+ std::set<string16> enabled_plugins;
+ enabled_plugins.insert(ASCIIToUTF16("Enable that!"));
+ enabled_plugins.insert(ASCIIToUTF16("PDF*"));
+ PluginGroup::SetPolicyEnforcedPluginPatterns(std::set<string16>(),
+ std::set<string16>(),
+ enabled_plugins);
+
+ EXPECT_FALSE(PluginGroup::IsPluginNameEnabledByPolicy(ASCIIToUTF16("42")));
+ EXPECT_TRUE(PluginGroup::IsPluginNameEnabledByPolicy(
+ ASCIIToUTF16("Enable that!")));
+ EXPECT_TRUE(PluginGroup::IsPluginNameEnabledByPolicy(
+ ASCIIToUTF16("PDF Reader")));
+}
+
+TEST_F(PluginGroupTest, EnabledAndDisabledByPolicy) {
+ const string16 k42(ASCIIToUTF16("42"));
+ const string16 kEnabled(ASCIIToUTF16("Enabled"));
+ const string16 kEnabled2(ASCIIToUTF16("Enabled 2"));
+ const string16 kEnabled3(ASCIIToUTF16("Enabled 3"));
+ const string16 kException(ASCIIToUTF16("Exception"));
+ const string16 kException2(ASCIIToUTF16("Exception 2"));
+ const string16 kGoogleMars(ASCIIToUTF16("Google Mars"));
+ const string16 kGoogleEarth(ASCIIToUTF16("Google Earth"));
+
+ std::set<string16> disabled_plugins;
+ std::set<string16> disabled_plugins_exceptions;
+ std::set<string16> enabled_plugins;
+
+ disabled_plugins.insert(kEnabled);
+ disabled_plugins_exceptions.insert(kEnabled);
+ enabled_plugins.insert(kEnabled);
+
+ disabled_plugins_exceptions.insert(kException);
+
+ disabled_plugins.insert(kEnabled2);
+ enabled_plugins.insert(kEnabled2);
+
+ disabled_plugins.insert(kException2);
+ disabled_plugins_exceptions.insert(kException2);
+
+ disabled_plugins_exceptions.insert(kEnabled3);
+ enabled_plugins.insert(kEnabled3);
+
+ PluginGroup::SetPolicyEnforcedPluginPatterns(disabled_plugins,
+ disabled_plugins_exceptions,
+ enabled_plugins);
+
+ EXPECT_FALSE(PluginGroup::IsPluginNameEnabledByPolicy(k42));
+ EXPECT_FALSE(PluginGroup::IsPluginNameDisabledByPolicy(k42));
+
+ EXPECT_TRUE(PluginGroup::IsPluginNameEnabledByPolicy(kEnabled));
+ EXPECT_FALSE(PluginGroup::IsPluginNameDisabledByPolicy(kEnabled));
+ EXPECT_TRUE(PluginGroup::IsPluginNameEnabledByPolicy(kEnabled2));
+ EXPECT_FALSE(PluginGroup::IsPluginNameDisabledByPolicy(kEnabled2));
+ EXPECT_TRUE(PluginGroup::IsPluginNameEnabledByPolicy(kEnabled3));
+ EXPECT_FALSE(PluginGroup::IsPluginNameDisabledByPolicy(kEnabled3));
+
+ EXPECT_FALSE(PluginGroup::IsPluginNameEnabledByPolicy(kException));
+ EXPECT_FALSE(PluginGroup::IsPluginNameDisabledByPolicy(kException));
+ EXPECT_FALSE(PluginGroup::IsPluginNameEnabledByPolicy(kException2));
+ EXPECT_FALSE(PluginGroup::IsPluginNameDisabledByPolicy(kException2));
+
+ disabled_plugins.clear();
+ disabled_plugins_exceptions.clear();
+ enabled_plugins.clear();
+
+ disabled_plugins.insert(ASCIIToUTF16("*"));
+ disabled_plugins_exceptions.insert(ASCIIToUTF16("*Google*"));
+ enabled_plugins.insert(kGoogleEarth);
+
+ PluginGroup::SetPolicyEnforcedPluginPatterns(disabled_plugins,
+ disabled_plugins_exceptions,
+ enabled_plugins);
+
+ EXPECT_TRUE(PluginGroup::IsPluginNameEnabledByPolicy(kGoogleEarth));
+ EXPECT_FALSE(PluginGroup::IsPluginNameDisabledByPolicy(kGoogleEarth));
+ EXPECT_FALSE(PluginGroup::IsPluginNameEnabledByPolicy(kGoogleMars));
+ EXPECT_FALSE(PluginGroup::IsPluginNameDisabledByPolicy(kGoogleMars));
+ EXPECT_FALSE(PluginGroup::IsPluginNameEnabledByPolicy(k42));
+ EXPECT_TRUE(PluginGroup::IsPluginNameDisabledByPolicy(k42));
+}
+
TEST_F(PluginGroupTest, IsVulnerable) {
// Adobe Reader 10
VersionRangeDefinition adobe_reader_version_range[] = {
@@ -168,8 +318,8 @@
adobe_reader_plugin_def));
group->AddPlugin(adobe_reader_plugin);
PluginGroup group_copy(*group); // Exercise the copy constructor.
- EXPECT_FALSE(group_copy.IsVulnerable(adobe_reader_plugin));
- EXPECT_FALSE(group_copy.RequiresAuthorization(adobe_reader_plugin));
+ EXPECT_FALSE(group_copy.IsVulnerable());
+ EXPECT_FALSE(group_copy.RequiresAuthorization());
// Silverlight 4
VersionRangeDefinition silverlight_version_range[] = {
@@ -186,9 +336,63 @@
ASCIIToUTF16("silverlight 4"));
group.reset(PluginGroupTest::CreatePluginGroup(silverlight_plugin_def));
group->AddPlugin(silverlight_plugin);
- EXPECT_FALSE(PluginGroup(*group).IsVulnerable(silverlight_plugin));
- EXPECT_TRUE(PluginGroup(*group).RequiresAuthorization(silverlight_plugin));
+ EXPECT_FALSE(PluginGroup(*group).IsVulnerable());
+ EXPECT_TRUE(PluginGroup(*group).RequiresAuthorization());
}
+TEST_F(PluginGroupTest, WhitelistedIsNotVulnerable) {
+ VersionRangeDefinition version_range[] = {
+ { "0", "6", "5.0", true }
+ };
+ PluginGroupDefinition plugin_def = {
+ "nativehtml5", "NativeHTML5", "NativeHTML5", version_range,
+ arraysize(version_range),
+ "http://bugzilla.mozilla.org/show_bug.cgi?id=649408" };
+ WebPluginInfo plugin(ASCIIToUTF16("NativeHTML5"),
+ FilePath(FILE_PATH_LITERAL("/native.so")),
+ ASCIIToUTF16("4.0"),
+ ASCIIToUTF16("NativeHTML5"));
+ scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup(plugin_def));
+ group->AddPlugin(plugin);
+
+ EXPECT_TRUE(group->IsVulnerable());
+ EXPECT_TRUE(group->RequiresAuthorization());
+
+ std::set<string16> enabled_plugins;
+ enabled_plugins.insert(ASCIIToUTF16("NativeHTML5"));
+ PluginGroup::SetPolicyEnforcedPluginPatterns(std::set<string16>(),
+ std::set<string16>(),
+ enabled_plugins);
+ group->EnforceGroupPolicy();
+
+ EXPECT_FALSE(group->IsVulnerable());
+ EXPECT_FALSE(group->RequiresAuthorization());
+}
+
+TEST_F(PluginGroupTest, MultipleVersions) {
+ scoped_ptr<PluginGroup> group(
+ PluginGroupTest::CreatePluginGroup(kPluginDef3));
+ group->AddPlugin(kPlugin3044);
+ group->AddPlugin(kPlugin3043);
+ EXPECT_EQ(kPlugin3044.desc, group->description());
+ EXPECT_FALSE(group->IsVulnerable());
+
+ group->DisablePlugin(kPlugin3044.path);
+ EXPECT_EQ(kPlugin3043.desc, group->description());
+ EXPECT_TRUE(group->IsVulnerable());
+
+ EXPECT_TRUE(group->EnableGroup(false));
+ EXPECT_EQ(kPlugin3044.desc, group->description());
+ EXPECT_FALSE(group->IsVulnerable());
+
+ EXPECT_TRUE(group->RemovePlugin(kPlugin3044.path));
+ EXPECT_EQ(kPlugin3043.desc, group->description());
+ EXPECT_TRUE(group->IsVulnerable());
+
+ EXPECT_TRUE(group->RemovePlugin(kPlugin3043.path));
+ EXPECT_TRUE(group->IsEmpty());
+ EXPECT_EQ(string16(), group->description());
+}
+
} // namespace npapi
} // namespace webkit
Property changes on: webkit/plugins/npapi/plugin_group_unittest.cc
___________________________________________________________________
Added: svn:mergeinfo
Merged /branches/chrome_webkit_merge_branch/src/webkit/plugins/npapi/plugin_group_unittest.cc:r3734-4217,4606-5108,5177-5263
« no previous file with comments | « webkit/plugins/npapi/plugin_group.cc ('k') | webkit/plugins/npapi/plugin_lib_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698