OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/common/plugin_list.h" | 5 #include "content/common/plugin_list.h" |
6 | 6 |
| 7 #include <string> |
| 8 |
7 #include "base/strings/string16.h" | 9 #include "base/strings/string16.h" |
8 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
10 #include "url/gurl.h" | 12 #include "url/gurl.h" |
11 | 13 |
12 namespace content { | 14 namespace content { |
13 | 15 |
14 namespace { | 16 namespace { |
15 | 17 |
16 base::FilePath::CharType kFooPath[] = FILE_PATH_LITERAL("/plugins/foo.plugin"); | 18 base::FilePath::CharType kFooPath[] = FILE_PATH_LITERAL("/plugins/foo.plugin"); |
(...skipping 12 matching lines...) Expand all Loading... |
29 bool Contains(const std::vector<WebPluginInfo>& list, | 31 bool Contains(const std::vector<WebPluginInfo>& list, |
30 const WebPluginInfo& plugin) { | 32 const WebPluginInfo& plugin) { |
31 for (std::vector<WebPluginInfo>::const_iterator it = list.begin(); | 33 for (std::vector<WebPluginInfo>::const_iterator it = list.begin(); |
32 it != list.end(); ++it) { | 34 it != list.end(); ++it) { |
33 if (Equals(*it, plugin)) | 35 if (Equals(*it, plugin)) |
34 return true; | 36 return true; |
35 } | 37 } |
36 return false; | 38 return false; |
37 } | 39 } |
38 | 40 |
| 41 WebPluginInfo CreateFooPluginWithVersion(const std::string& version) { |
| 42 base::FilePath plugin_path = base::FilePath::FromUTF8Unsafe( |
| 43 std::string("/plugins/foo") + version + std::string(".plugin")); |
| 44 WebPluginInfo plugin(ASCIIToUTF16(kFooName), |
| 45 plugin_path, |
| 46 ASCIIToUTF16(version.c_str()), |
| 47 base::string16()); |
| 48 plugin.mime_types.push_back( |
| 49 WebPluginMimeType(kFooMimeType, kFooFileType, std::string())); |
| 50 return plugin; |
| 51 } |
| 52 |
39 } // namespace | 53 } // namespace |
40 | 54 |
41 class PluginListTest : public testing::Test { | 55 class PluginListTest : public testing::Test { |
42 public: | 56 public: |
43 PluginListTest() | 57 PluginListTest() |
44 : foo_plugin_(ASCIIToUTF16(kFooName), | 58 : foo_plugin_(ASCIIToUTF16(kFooName), |
45 base::FilePath(kFooPath), | 59 base::FilePath(kFooPath), |
46 ASCIIToUTF16("1.2.3"), | 60 ASCIIToUTF16("1.2.3"), |
47 ASCIIToUTF16("foo")), | 61 ASCIIToUTF16("foo")), |
48 bar_plugin_(ASCIIToUTF16("Bar Plugin"), | 62 bar_plugin_(ASCIIToUTF16("Bar Plugin"), |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 NULL, // use_stale | 143 NULL, // use_stale |
130 false, // include_npapi | 144 false, // include_npapi |
131 &plugins, | 145 &plugins, |
132 &actual_mime_types); | 146 &actual_mime_types); |
133 EXPECT_EQ(1u, plugins.size()); | 147 EXPECT_EQ(1u, plugins.size()); |
134 EXPECT_TRUE(Contains(plugins, foo_plugin_)); | 148 EXPECT_TRUE(Contains(plugins, foo_plugin_)); |
135 ASSERT_EQ(1u, actual_mime_types.size()); | 149 ASSERT_EQ(1u, actual_mime_types.size()); |
136 EXPECT_EQ(kFooMimeType, actual_mime_types.front()); | 150 EXPECT_EQ(kFooMimeType, actual_mime_types.front()); |
137 } | 151 } |
138 | 152 |
| 153 TEST_F(PluginListTest, GetPluginInfoArrayVersionOrder) { |
| 154 GURL target_url("http://example.com/test.foo"); |
| 155 |
| 156 // Set up 3 plug-ins that differ in version, randomly ordered. |
| 157 std::vector<WebPluginInfo> test_plugins; |
| 158 WebPluginInfo plugin_v1 = CreateFooPluginWithVersion("1.2.3"); |
| 159 WebPluginInfo plugin_v2 = CreateFooPluginWithVersion("2.3.4"); |
| 160 WebPluginInfo plugin_v3 = CreateFooPluginWithVersion("3.4.5"); |
| 161 test_plugins.push_back(plugin_v3); |
| 162 test_plugins.push_back(plugin_v1); |
| 163 test_plugins.push_back(plugin_v2); |
| 164 plugin_list_.SetPlugins(test_plugins); |
| 165 |
| 166 std::vector<WebPluginInfo> matched_plugins; |
| 167 std::vector<std::string> actual_mime_types; |
| 168 plugin_list_.GetPluginInfoArray(target_url, |
| 169 kFooMimeType, |
| 170 false, // allow_wildcard |
| 171 NULL, // use_stale |
| 172 false, // include_npapi |
| 173 &matched_plugins, |
| 174 &actual_mime_types); |
| 175 |
| 176 EXPECT_EQ(3u, matched_plugins.size()); |
| 177 // Must be ordered from the highest to lowest version. |
| 178 EXPECT_TRUE(Equals(matched_plugins[0], plugin_v3)); |
| 179 EXPECT_TRUE(Equals(matched_plugins[1], plugin_v2)); |
| 180 EXPECT_TRUE(Equals(matched_plugins[2], plugin_v1)); |
| 181 } |
| 182 |
139 #if defined(OS_POSIX) && !defined(OS_MACOSX) | 183 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
140 | 184 |
141 // Test parsing a simple description: Real Audio. | 185 // Test parsing a simple description: Real Audio. |
142 TEST(MIMEDescriptionParse, Simple) { | 186 TEST(MIMEDescriptionParse, Simple) { |
143 std::vector<WebPluginMimeType> types; | 187 std::vector<WebPluginMimeType> types; |
144 PluginList::ParseMIMEDescription( | 188 PluginList::ParseMIMEDescription( |
145 "audio/x-pn-realaudio-plugin:rpm:RealAudio document;", | 189 "audio/x-pn-realaudio-plugin:rpm:RealAudio document;", |
146 &types); | 190 &types); |
147 ASSERT_EQ(1U, types.size()); | 191 ASSERT_EQ(1U, types.size()); |
148 const WebPluginMimeType& type = types[0]; | 192 const WebPluginMimeType& type = types[0]; |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
242 "IcedTea-Web Plugin " | 286 "IcedTea-Web Plugin " |
243 "(using IcedTea-Web 1.2 (1.2-2ubuntu0.10.04.2))", | 287 "(using IcedTea-Web 1.2 (1.2-2ubuntu0.10.04.2))", |
244 &info); | 288 &info); |
245 EXPECT_EQ(ASCIIToUTF16("1.2"), info.version); | 289 EXPECT_EQ(ASCIIToUTF16("1.2"), info.version); |
246 } | 290 } |
247 | 291 |
248 #endif // defined(OS_POSIX) && !defined(OS_MACOSX) | 292 #endif // defined(OS_POSIX) && !defined(OS_MACOSX) |
249 | 293 |
250 | 294 |
251 } // namespace content | 295 } // namespace content |
OLD | NEW |