| 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
|
|
|
|
|