OLD | NEW |
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 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 PluginGroup::SetPolicyDisabledPluginPatterns(std::set<string16>()); | 85 PluginGroup::SetPolicyDisabledPluginPatterns(std::set<string16>()); |
86 } | 86 } |
87 }; | 87 }; |
88 | 88 |
89 TEST(PluginGroupTest, PluginGroupMatch) { | 89 TEST(PluginGroupTest, PluginGroupMatch) { |
90 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup( | 90 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup( |
91 kPluginDef3)); | 91 kPluginDef3)); |
92 EXPECT_TRUE(group->Match(kPlugin3045)); | 92 EXPECT_TRUE(group->Match(kPlugin3045)); |
93 EXPECT_TRUE(group->Match(kPlugin3045r)); | 93 EXPECT_TRUE(group->Match(kPlugin3045r)); |
94 EXPECT_FALSE(group->Match(kPluginNoVersion)); | 94 EXPECT_FALSE(group->Match(kPluginNoVersion)); |
95 group->AddPlugin(kPlugin3045, 0); | 95 group->AddPlugin(kPlugin3045); |
96 EXPECT_FALSE(group->IsVulnerable()); | 96 EXPECT_FALSE(group->IsVulnerable()); |
97 | 97 |
98 group.reset(PluginGroupTest::CreatePluginGroup(kPluginDef)); | 98 group.reset(PluginGroupTest::CreatePluginGroup(kPluginDef)); |
99 EXPECT_FALSE(group->Match(kPluginNoVersion)); | 99 EXPECT_FALSE(group->Match(kPluginNoVersion)); |
100 } | 100 } |
101 | 101 |
102 TEST(PluginGroupTest, PluginGroupMatchCorrectVersion) { | 102 TEST(PluginGroupTest, PluginGroupMatchCorrectVersion) { |
103 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup( | 103 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup( |
104 kPluginDef3)); | 104 kPluginDef3)); |
105 EXPECT_TRUE(group->Match(kPlugin2043)); | 105 EXPECT_TRUE(group->Match(kPlugin2043)); |
(...skipping 17 matching lines...) Expand all Loading... |
123 | 123 |
124 PluginGroupDefinition plugindefs[] = | 124 PluginGroupDefinition plugindefs[] = |
125 { kPluginDef, kPluginDef3, kPluginDef34 }; | 125 { kPluginDef, kPluginDef3, kPluginDef34 }; |
126 for (size_t i = 0; i < arraysize(plugindefs); ++i) { | 126 for (size_t i = 0; i < arraysize(plugindefs); ++i) { |
127 WebPluginInfo plugin3043(kPlugin3043); | 127 WebPluginInfo plugin3043(kPlugin3043); |
128 WebPluginInfo plugin3045(kPlugin3045); | 128 WebPluginInfo plugin3045(kPlugin3045); |
129 { | 129 { |
130 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup( | 130 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup( |
131 plugindefs[i])); | 131 plugindefs[i])); |
132 EXPECT_TRUE(group->Match(plugin3043)); | 132 EXPECT_TRUE(group->Match(plugin3043)); |
133 group->AddPlugin(plugin3043, 0); | 133 group->AddPlugin(plugin3043); |
134 EXPECT_EQ(desc3043, group->description()); | 134 EXPECT_EQ(desc3043, group->description()); |
135 EXPECT_TRUE(group->IsVulnerable()); | 135 EXPECT_TRUE(group->IsVulnerable()); |
136 EXPECT_TRUE(group->Match(plugin3045)); | 136 EXPECT_TRUE(group->Match(plugin3045)); |
137 group->AddPlugin(plugin3045, 1); | 137 group->AddPlugin(plugin3045); |
138 EXPECT_EQ(desc3043, group->description()); | 138 EXPECT_EQ(desc3043, group->description()); |
139 EXPECT_TRUE(group->IsVulnerable()); | 139 EXPECT_TRUE(group->IsVulnerable()); |
140 } | 140 } |
141 | |
142 { | 141 { |
143 // Disable the first plugin. | 142 // Disable the second plugin. |
144 plugin3043.enabled = false; | 143 plugin3045.enabled = |
| 144 webkit::npapi::WebPluginInfo::USER_DISABLED_POLICY_UNMANAGED; |
145 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup( | 145 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup( |
146 plugindefs[i])); | 146 plugindefs[i])); |
147 EXPECT_TRUE(group->Match(plugin3043)); | 147 EXPECT_TRUE(group->Match(plugin3043)); |
148 group->AddPlugin(plugin3043, 0); | 148 group->AddPlugin(plugin3043); |
149 EXPECT_EQ(desc3043, group->description()); | |
150 EXPECT_TRUE(group->IsVulnerable()); | |
151 EXPECT_FALSE(group->Enabled()); | |
152 EXPECT_TRUE(group->Match(plugin3045)); | |
153 group->AddPlugin(plugin3045, 1); | |
154 EXPECT_EQ(desc3045, group->description()); | |
155 EXPECT_FALSE(group->IsVulnerable()); | |
156 } | |
157 | |
158 { | |
159 // Disable the second plugin. | |
160 plugin3045.enabled = false; | |
161 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup( | |
162 plugindefs[i])); | |
163 EXPECT_TRUE(group->Match(plugin3043)); | |
164 group->AddPlugin(plugin3043, 1); | |
165 EXPECT_EQ(desc3043, group->description()); | 149 EXPECT_EQ(desc3043, group->description()); |
166 EXPECT_TRUE(group->IsVulnerable()); | 150 EXPECT_TRUE(group->IsVulnerable()); |
167 EXPECT_TRUE(group->Match(plugin3045)); | 151 EXPECT_TRUE(group->Match(plugin3045)); |
168 group->AddPlugin(plugin3045, 0); | 152 group->AddPlugin(plugin3045); |
169 EXPECT_EQ(desc3043, group->description()); | 153 EXPECT_EQ(desc3043, group->description()); |
170 EXPECT_TRUE(group->IsVulnerable()); | 154 EXPECT_TRUE(group->IsVulnerable()); |
171 } | 155 } |
172 } | 156 } |
173 } | 157 } |
174 | 158 |
175 TEST(PluginGroupTest, PluginGroupDefinition) { | 159 TEST(PluginGroupTest, PluginGroupDefinition) { |
176 const PluginGroupDefinition* definitions = | 160 const PluginGroupDefinition* definitions = |
177 PluginList::GetPluginGroupDefinitions(); | 161 PluginList::GetPluginGroupDefinitions(); |
178 for (size_t i = 0; i < PluginList::GetPluginGroupDefinitionsSize(); ++i) { | 162 for (size_t i = 0; i < PluginList::GetPluginGroupDefinitionsSize(); ++i) { |
179 scoped_ptr<PluginGroup> def_group( | 163 scoped_ptr<PluginGroup> def_group( |
180 PluginGroupTest::CreatePluginGroup(definitions[i])); | 164 PluginGroupTest::CreatePluginGroup(definitions[i])); |
181 ASSERT_TRUE(def_group.get() != NULL); | 165 ASSERT_TRUE(def_group.get() != NULL); |
182 EXPECT_FALSE(def_group->Match(kPlugin2043)); | 166 EXPECT_FALSE(def_group->Match(kPlugin2043)); |
183 } | 167 } |
184 } | 168 } |
185 | 169 |
186 TEST(PluginGroupTest, DisableOutdated) { | 170 TEST(PluginGroupTest, DisableOutdated) { |
187 PluginGroupDefinition plugindefs[] = { kPluginDef3, kPluginDef34 }; | 171 PluginGroupDefinition plugindefs[] = { kPluginDef3, kPluginDef34 }; |
188 for (size_t i = 0; i < 2; ++i) { | 172 for (size_t i = 0; i < 2; ++i) { |
189 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup( | 173 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup( |
190 plugindefs[i])); | 174 plugindefs[i])); |
191 group->AddPlugin(kPlugin3043, 0); | 175 group->AddPlugin(kPlugin3043); |
192 group->AddPlugin(kPlugin3045, 1); | 176 group->AddPlugin(kPlugin3045); |
| 177 |
193 EXPECT_EQ(ASCIIToUTF16("MyPlugin version 3.0.43"), group->description()); | 178 EXPECT_EQ(ASCIIToUTF16("MyPlugin version 3.0.43"), group->description()); |
194 EXPECT_TRUE(group->IsVulnerable()); | 179 EXPECT_TRUE(group->IsVulnerable()); |
195 | 180 |
196 group->DisableOutdatedPlugins(); | 181 group->DisableOutdatedPlugins(); |
197 EXPECT_EQ(ASCIIToUTF16("MyPlugin version 3.0.45"), group->description()); | 182 EXPECT_EQ(ASCIIToUTF16("MyPlugin version 3.0.45"), group->description()); |
198 EXPECT_FALSE(group->IsVulnerable()); | 183 EXPECT_FALSE(group->IsVulnerable()); |
199 } | 184 } |
200 } | 185 } |
201 | 186 |
202 TEST(PluginGroupTest, VersionExtraction) { | 187 TEST(PluginGroupTest, VersionExtraction) { |
203 // Some real-world plugin versions (spaces, commata, parentheses, 'r', oh my) | 188 // Some real-world plugin versions (spaces, commata, parentheses, 'r', oh my) |
204 const char* versions[][2] = { | 189 const char* versions[][2] = { |
205 { "7.6.6 (1671)", "7.6.6.1671" }, // Quicktime | 190 { "7.6.6 (1671)", "7.6.6.1671" }, // Quicktime |
206 { "2, 0, 0, 254", "2.0.0.254" }, // DivX | 191 { "2, 0, 0, 254", "2.0.0.254" }, // DivX |
207 { "3, 0, 0, 0", "3.0.0.0" }, // Picasa | 192 { "3, 0, 0, 0", "3.0.0.0" }, // Picasa |
208 { "1, 0, 0, 1", "1.0.0.1" }, // Earth | 193 { "1, 0, 0, 1", "1.0.0.1" }, // Earth |
209 { "10,0,45,2", "10.0.45.2" }, // Flash | 194 { "10,0,45,2", "10.0.45.2" }, // Flash |
210 { "11.5.7r609", "11.5.7.609"}, // Shockwave | 195 { "11.5.7r609", "11.5.7.609"}, // Shockwave |
211 { "10.1 r102", "10.1.102"}, // Flash | 196 { "10.1 r102", "10.1.102"}, // Flash |
212 { "1.6.0_22", "1.6.0.22"}, // Java | 197 { "1.6.0_22", "1.6.0.22"}, // Java |
213 }; | 198 }; |
214 | 199 |
215 for (size_t i = 0; i < arraysize(versions); i++) { | 200 for (size_t i = 0; i < arraysize(versions); i++) { |
216 const WebPluginInfo plugin = WebPluginInfo( | 201 const WebPluginInfo plugin = WebPluginInfo( |
217 ASCIIToUTF16("Blah Plugin"), FilePath(FILE_PATH_LITERAL("blahfile")), | 202 ASCIIToUTF16("Blah Plugin"), FilePath(FILE_PATH_LITERAL("blahfile")), |
218 ASCIIToUTF16(versions[i][0]), string16()); | 203 ASCIIToUTF16(versions[i][0]), string16()); |
219 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup(plugin)); | 204 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup(plugin)); |
220 EXPECT_TRUE(group->Match(plugin)); | 205 EXPECT_TRUE(group->Match(plugin)); |
221 group->AddPlugin(plugin, 0); | 206 group->AddPlugin(plugin); |
222 scoped_ptr<DictionaryValue> data(group->GetDataForUI()); | 207 scoped_ptr<DictionaryValue> data(group->GetDataForUI()); |
223 std::string version; | 208 std::string version; |
224 data->GetString("version", &version); | 209 data->GetString("version", &version); |
225 EXPECT_EQ(versions[i][1], version); | 210 EXPECT_EQ(versions[i][1], version); |
226 } | 211 } |
227 } | 212 } |
228 | 213 |
229 TEST(PluginGroupTest, DisabledByPolicy) { | 214 TEST(PluginGroupTest, DisabledByPolicy) { |
230 std::set<string16> disabled_plugins; | 215 std::set<string16> disabled_plugins; |
231 disabled_plugins.insert(ASCIIToUTF16("Disable this!")); | 216 disabled_plugins.insert(ASCIIToUTF16("Disable this!")); |
(...skipping 17 matching lines...) Expand all Loading... |
249 PluginGroupDefinition adobe_reader_plugin_def = { | 234 PluginGroupDefinition adobe_reader_plugin_def = { |
250 "adobe-reader", "Adobe Reader", "Adobe Acrobat", | 235 "adobe-reader", "Adobe Reader", "Adobe Acrobat", |
251 adobe_reader_version_range, arraysize(adobe_reader_version_range), | 236 adobe_reader_version_range, arraysize(adobe_reader_version_range), |
252 "http://get.adobe.com/reader/" }; | 237 "http://get.adobe.com/reader/" }; |
253 WebPluginInfo adobe_reader_plugin(ASCIIToUTF16("Adobe Reader"), | 238 WebPluginInfo adobe_reader_plugin(ASCIIToUTF16("Adobe Reader"), |
254 FilePath(FILE_PATH_LITERAL("/reader.so")), | 239 FilePath(FILE_PATH_LITERAL("/reader.so")), |
255 ASCIIToUTF16("10.0.0.396"), | 240 ASCIIToUTF16("10.0.0.396"), |
256 ASCIIToUTF16("adobe reader 10")); | 241 ASCIIToUTF16("adobe reader 10")); |
257 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup( | 242 scoped_ptr<PluginGroup> group(PluginGroupTest::CreatePluginGroup( |
258 adobe_reader_plugin_def)); | 243 adobe_reader_plugin_def)); |
259 group->AddPlugin(adobe_reader_plugin, 0); | 244 group->AddPlugin(adobe_reader_plugin); |
260 PluginGroup group_copy(*group); // Exercise the copy constructor. | 245 PluginGroup group_copy(*group); // Exercise the copy constructor. |
261 EXPECT_FALSE(group_copy.IsVulnerable()); | 246 EXPECT_FALSE(group_copy.IsVulnerable()); |
262 | 247 |
263 // Silverlight 4 | 248 // Silverlight 4 |
264 VersionRangeDefinition silverlight_version_range[] = { | 249 VersionRangeDefinition silverlight_version_range[] = { |
265 { "0", "4", "3.0.50106.0" }, | 250 { "0", "4", "3.0.50106.0" }, |
266 { "4", "5", "" } | 251 { "4", "5", "" } |
267 }; | 252 }; |
268 PluginGroupDefinition silverlight_plugin_def = { | 253 PluginGroupDefinition silverlight_plugin_def = { |
269 "silverlight", "Silverlight", "Silverlight", silverlight_version_range, | 254 "silverlight", "Silverlight", "Silverlight", silverlight_version_range, |
270 arraysize(silverlight_version_range), | 255 arraysize(silverlight_version_range), |
271 "http://www.microsoft.com/getsilverlight/" }; | 256 "http://www.microsoft.com/getsilverlight/" }; |
272 WebPluginInfo silverlight_plugin(ASCIIToUTF16("Silverlight"), | 257 WebPluginInfo silverlight_plugin(ASCIIToUTF16("Silverlight"), |
273 FilePath(FILE_PATH_LITERAL("/silver.so")), | 258 FilePath(FILE_PATH_LITERAL("/silver.so")), |
274 ASCIIToUTF16("4.0.50917.0"), | 259 ASCIIToUTF16("4.0.50917.0"), |
275 ASCIIToUTF16("silverlight 4")); | 260 ASCIIToUTF16("silverlight 4")); |
276 group.reset(PluginGroupTest::CreatePluginGroup(silverlight_plugin_def)); | 261 group.reset(PluginGroupTest::CreatePluginGroup(silverlight_plugin_def)); |
277 group->AddPlugin(silverlight_plugin, 0); | 262 group->AddPlugin(silverlight_plugin); |
278 EXPECT_FALSE(PluginGroup(*group).IsVulnerable()); | 263 EXPECT_FALSE(PluginGroup(*group).IsVulnerable()); |
279 } | 264 } |
280 } // namespace npapi | 265 } // namespace npapi |
281 } // namespace webkit | 266 } // namespace webkit |
OLD | NEW |