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

Side by Side Diff: webkit/plugins/npapi/plugin_group_unittest.cc

Issue 6205004: Re-land: add support for blocking out-of-date plug-ins on Linux.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/plugins/npapi/plugin_group.cc ('k') | webkit/plugins/npapi/plugin_lib.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "webkit/plugins/npapi/plugin_group.h" 5 #include "webkit/plugins/npapi/plugin_group.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/scoped_ptr.h" 10 #include "base/scoped_ptr.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 static const PluginGroupDefinition kPluginDef4 = { 42 static const PluginGroupDefinition kPluginDef4 = {
43 "myplugin-4", "MyPlugin 4", "MyPlugin", kPlugin4VersionRange, 43 "myplugin-4", "MyPlugin 4", "MyPlugin", kPlugin4VersionRange,
44 arraysize(kPlugin4VersionRange), "http://latest" }; 44 arraysize(kPlugin4VersionRange), "http://latest" };
45 static const PluginGroupDefinition kPluginDef34 = { 45 static const PluginGroupDefinition kPluginDef34 = {
46 "myplugin-34", "MyPlugin 3/4", "MyPlugin", kPlugin34VersionRange, 46 "myplugin-34", "MyPlugin 3/4", "MyPlugin", kPlugin34VersionRange,
47 arraysize(kPlugin34VersionRange), "http://latest" }; 47 arraysize(kPlugin34VersionRange), "http://latest" };
48 static const PluginGroupDefinition kPluginDefNotVulnerable = { 48 static const PluginGroupDefinition kPluginDefNotVulnerable = {
49 "myplugin-latest", "MyPlugin", "MyPlugin", NULL, 0, "http://latest" }; 49 "myplugin-latest", "MyPlugin", "MyPlugin", NULL, 0, "http://latest" };
50 50
51 // name, path, version, desc. 51 // name, path, version, desc.
52 static WebPluginInfo kPluginNoVersion = WebPluginInfo(
53 ASCIIToUTF16("MyPlugin"), FilePath(FILE_PATH_LITERAL("myplugin.so.2.0.43")),
54 ASCIIToUTF16(""), ASCIIToUTF16("MyPlugin version 2.0.43"));
52 static WebPluginInfo kPlugin2043 = WebPluginInfo( 55 static WebPluginInfo kPlugin2043 = WebPluginInfo(
53 ASCIIToUTF16("MyPlugin"), FilePath(FILE_PATH_LITERAL("myplugin.so.2.0.43")), 56 ASCIIToUTF16("MyPlugin"), FilePath(FILE_PATH_LITERAL("myplugin.so.2.0.43")),
54 ASCIIToUTF16("2.0.43"), ASCIIToUTF16("MyPlugin version 2.0.43")); 57 ASCIIToUTF16("2.0.43"), ASCIIToUTF16("MyPlugin version 2.0.43"));
55 static WebPluginInfo kPlugin3043 = WebPluginInfo( 58 static WebPluginInfo kPlugin3043 = WebPluginInfo(
56 ASCIIToUTF16("MyPlugin"), FilePath(FILE_PATH_LITERAL("myplugin.so.3.0.43")), 59 ASCIIToUTF16("MyPlugin"), FilePath(FILE_PATH_LITERAL("myplugin.so.3.0.43")),
57 ASCIIToUTF16("3.0.43"), ASCIIToUTF16("MyPlugin version 3.0.43")); 60 ASCIIToUTF16("3.0.43"), ASCIIToUTF16("MyPlugin version 3.0.43"));
58 static WebPluginInfo kPlugin3044 = WebPluginInfo( 61 static WebPluginInfo kPlugin3044 = WebPluginInfo(
59 ASCIIToUTF16("MyPlugin"), FilePath(FILE_PATH_LITERAL("myplugin.so.3.0.44")), 62 ASCIIToUTF16("MyPlugin"), FilePath(FILE_PATH_LITERAL("myplugin.so.3.0.44")),
60 ASCIIToUTF16("3.0.44"), ASCIIToUTF16("MyPlugin version 3.0.44")); 63 ASCIIToUTF16("3.0.44"), ASCIIToUTF16("MyPlugin version 3.0.44"));
61 static WebPluginInfo kPlugin3045 = WebPluginInfo( 64 static WebPluginInfo kPlugin3045 = WebPluginInfo(
62 ASCIIToUTF16("MyPlugin"), FilePath(FILE_PATH_LITERAL("myplugin.so.3.0.45")), 65 ASCIIToUTF16("MyPlugin"), FilePath(FILE_PATH_LITERAL("myplugin.so.3.0.45")),
63 ASCIIToUTF16("3.0.45"), ASCIIToUTF16("MyPlugin version 3.0.45")); 66 ASCIIToUTF16("3.0.45"), ASCIIToUTF16("MyPlugin version 3.0.45"));
67 static WebPluginInfo kPlugin3045r = WebPluginInfo(
68 ASCIIToUTF16("MyPlugin"), FilePath(FILE_PATH_LITERAL("myplugin.so.3.0.45")),
69 ASCIIToUTF16("3.0r45"), ASCIIToUTF16("MyPlugin version 3.0r45"));
64 static WebPluginInfo kPlugin4043 = WebPluginInfo( 70 static WebPluginInfo kPlugin4043 = WebPluginInfo(
65 ASCIIToUTF16("MyPlugin"), FilePath(FILE_PATH_LITERAL("myplugin.so.4.0.43")), 71 ASCIIToUTF16("MyPlugin"), FilePath(FILE_PATH_LITERAL("myplugin.so.4.0.43")),
66 ASCIIToUTF16("4.0.43"), ASCIIToUTF16("MyPlugin version 4.0.43")); 72 ASCIIToUTF16("4.0.43"), ASCIIToUTF16("MyPlugin version 4.0.43"));
67 73
68 class PluginGroupTest : public testing::Test { 74 class PluginGroupTest : public testing::Test {
69 public: 75 public:
70 static PluginGroup* CreatePluginGroup( 76 static PluginGroup* CreatePluginGroup(
71 const PluginGroupDefinition& definition) { 77 const PluginGroupDefinition& definition) {
72 return PluginGroup::FromPluginGroupDefinition(definition); 78 return PluginGroup::FromPluginGroupDefinition(definition);
73 } 79 }
74 static PluginGroup* CreatePluginGroup(const WebPluginInfo& wpi) { 80 static PluginGroup* CreatePluginGroup(const WebPluginInfo& wpi) {
75 return PluginGroup::FromWebPluginInfo(wpi); 81 return PluginGroup::FromWebPluginInfo(wpi);
76 } 82 }
77 protected: 83 protected:
78 virtual void TearDown() { 84 virtual void TearDown() {
79 PluginGroup::SetPolicyDisabledPluginPatterns(std::set<string16>()); 85 PluginGroup::SetPolicyDisabledPluginPatterns(std::set<string16>());
80 } 86 }
81 }; 87 };
82 88
83 TEST(PluginGroupTest, PluginGroupMatch) { 89 TEST(PluginGroupTest, PluginGroupMatch) {
84 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup( 90 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup(
85 kPluginDef3)); 91 kPluginDef3));
86 EXPECT_TRUE(group->Match(kPlugin3045)); 92 EXPECT_TRUE(group->Match(kPlugin3045));
93 EXPECT_TRUE(group->Match(kPlugin3045r));
94 EXPECT_FALSE(group->Match(kPluginNoVersion));
87 group->AddPlugin(kPlugin3045, 0); 95 group->AddPlugin(kPlugin3045, 0);
88 EXPECT_FALSE(group->IsVulnerable()); 96 EXPECT_FALSE(group->IsVulnerable());
97
98 group.reset(PluginGroupTest::CreatePluginGroup(kPluginDef));
99 EXPECT_FALSE(group->Match(kPluginNoVersion));
89 } 100 }
90 101
91 TEST(PluginGroupTest, PluginGroupMatchCorrectVersion) { 102 TEST(PluginGroupTest, PluginGroupMatchCorrectVersion) {
92 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup( 103 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup(
93 kPluginDef3)); 104 kPluginDef3));
94 EXPECT_TRUE(group->Match(kPlugin2043)); 105 EXPECT_TRUE(group->Match(kPlugin2043));
95 EXPECT_TRUE(group->Match(kPlugin3043)); 106 EXPECT_TRUE(group->Match(kPlugin3043));
96 EXPECT_FALSE(group->Match(kPlugin4043)); 107 EXPECT_FALSE(group->Match(kPlugin4043));
97 108
98 group.reset(PluginGroupTest::CreatePluginGroup(kPluginDef4)); 109 group.reset(PluginGroupTest::CreatePluginGroup(kPluginDef4));
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 } 200 }
190 201
191 TEST(PluginGroupTest, VersionExtraction) { 202 TEST(PluginGroupTest, VersionExtraction) {
192 // Some real-world plugin versions (spaces, commata, parentheses, 'r', oh my) 203 // Some real-world plugin versions (spaces, commata, parentheses, 'r', oh my)
193 const char* versions[][2] = { 204 const char* versions[][2] = {
194 { "7.6.6 (1671)", "7.6.6.1671" }, // Quicktime 205 { "7.6.6 (1671)", "7.6.6.1671" }, // Quicktime
195 { "2, 0, 0, 254", "2.0.0.254" }, // DivX 206 { "2, 0, 0, 254", "2.0.0.254" }, // DivX
196 { "3, 0, 0, 0", "3.0.0.0" }, // Picasa 207 { "3, 0, 0, 0", "3.0.0.0" }, // Picasa
197 { "1, 0, 0, 1", "1.0.0.1" }, // Earth 208 { "1, 0, 0, 1", "1.0.0.1" }, // Earth
198 { "10,0,45,2", "10.0.45.2" }, // Flash 209 { "10,0,45,2", "10.0.45.2" }, // Flash
199 { "11.5.7r609", "11.5.7.609"} // Shockwave 210 { "11.5.7r609", "11.5.7.609"}, // Shockwave
211 { "10.1 r102", "10.1.102"}, // Flash
212 { "1.6.0_22", "1.6.0.22"}, // Java
200 }; 213 };
201 214
202 for (size_t i = 0; i < arraysize(versions); i++) { 215 for (size_t i = 0; i < arraysize(versions); i++) {
203 const WebPluginInfo plugin = WebPluginInfo( 216 const WebPluginInfo plugin = WebPluginInfo(
204 ASCIIToUTF16("Blah Plugin"), FilePath(FILE_PATH_LITERAL("blahfile")), 217 ASCIIToUTF16("Blah Plugin"), FilePath(FILE_PATH_LITERAL("blahfile")),
205 ASCIIToUTF16(versions[i][0]), string16()); 218 ASCIIToUTF16(versions[i][0]), string16());
206 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup(plugin)); 219 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup(plugin));
207 EXPECT_TRUE(group->Match(plugin)); 220 EXPECT_TRUE(group->Match(plugin));
208 group->AddPlugin(plugin, 0); 221 group->AddPlugin(plugin, 0);
209 scoped_ptr<DictionaryValue> data(group->GetDataForUI()); 222 scoped_ptr<DictionaryValue> data(group->GetDataForUI());
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 WebPluginInfo silverlight_plugin(ASCIIToUTF16("Silverlight"), 272 WebPluginInfo silverlight_plugin(ASCIIToUTF16("Silverlight"),
260 FilePath(FILE_PATH_LITERAL("/silver.so")), 273 FilePath(FILE_PATH_LITERAL("/silver.so")),
261 ASCIIToUTF16("4.0.50917.0"), 274 ASCIIToUTF16("4.0.50917.0"),
262 ASCIIToUTF16("silverlight 4")); 275 ASCIIToUTF16("silverlight 4"));
263 group.reset(PluginGroupTest::CreatePluginGroup(silverlight_plugin_def)); 276 group.reset(PluginGroupTest::CreatePluginGroup(silverlight_plugin_def));
264 group->AddPlugin(silverlight_plugin, 0); 277 group->AddPlugin(silverlight_plugin, 0);
265 EXPECT_FALSE(PluginGroup(*group).IsVulnerable()); 278 EXPECT_FALSE(PluginGroup(*group).IsVulnerable());
266 } 279 }
267 } // namespace npapi 280 } // namespace npapi
268 } // namespace webkit 281 } // namespace webkit
OLDNEW
« no previous file with comments | « webkit/plugins/npapi/plugin_group.cc ('k') | webkit/plugins/npapi/plugin_lib.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698