Index: webkit/glue/plugins/plugin_lib_unittest.cc |
diff --git a/webkit/glue/plugins/plugin_lib_unittest.cc b/webkit/glue/plugins/plugin_lib_unittest.cc |
index d2de72efe89aa11ee210296205bd249e87dcd045..0ab9da3e2ca523668e89b25473729292a5b4d8b1 100644 |
--- a/webkit/glue/plugins/plugin_lib_unittest.cc |
+++ b/webkit/glue/plugins/plugin_lib_unittest.cc |
@@ -12,9 +12,9 @@ |
// Test parsing a simple description: Real Audio. |
TEST(MIMEDescriptionParse, Simple) { |
std::vector<WebPluginMimeType> types; |
- ASSERT_TRUE(NPAPI::PluginLib::ParseMIMEDescription( |
- "audio/x-pn-realaudio-plugin:rpm:RealAudio document;", |
- &types)); |
+ NPAPI::PluginLib::ParseMIMEDescription( |
+ "audio/x-pn-realaudio-plugin:rpm:RealAudio document;", |
+ &types); |
ASSERT_EQ(1U, types.size()); |
const WebPluginMimeType& type = types[0]; |
EXPECT_EQ("audio/x-pn-realaudio-plugin", type.mime_type); |
@@ -26,12 +26,12 @@ TEST(MIMEDescriptionParse, Simple) { |
// Test parsing a multi-entry description: QuickTime as provided by Totem. |
TEST(MIMEDescriptionParse, Multi) { |
std::vector<WebPluginMimeType> types; |
- ASSERT_TRUE(NPAPI::PluginLib::ParseMIMEDescription( |
- "video/quicktime:mov:QuickTime video;video/mp4:mp4:MPEG-4 " |
- "video;image/x-macpaint:pntg:MacPaint Bitmap image;image/x" |
- "-quicktime:pict, pict1, pict2:QuickTime image;video/x-m4v" |
- ":m4v:MPEG-4 video;", |
- &types)); |
+ NPAPI::PluginLib::ParseMIMEDescription( |
+ "video/quicktime:mov:QuickTime video;video/mp4:mp4:MPEG-4 " |
+ "video;image/x-macpaint:pntg:MacPaint Bitmap image;image/x" |
+ "-quicktime:pict, pict1, pict2:QuickTime image;video/x-m4v" |
+ ":m4v:MPEG-4 video;", |
+ &types); |
ASSERT_EQ(5U, types.size()); |
@@ -48,24 +48,57 @@ TEST(MIMEDescriptionParse, Multi) { |
// This comes from loading Totem with LANG=ja_JP.UTF-8. |
TEST(MIMEDescriptionParse, JapaneseUTF8) { |
std::vector<WebPluginMimeType> types; |
- ASSERT_TRUE(NPAPI::PluginLib::ParseMIMEDescription( |
- "audio/x-ogg:ogg:Ogg \xe3\x82\xaa\xe3\x83\xbc\xe3\x83\x87" |
- "\xe3\x82\xa3\xe3\x83\xaa", |
- &types)); |
+ NPAPI::PluginLib::ParseMIMEDescription( |
+ "audio/x-ogg:ogg:Ogg \xe3\x82\xaa\xe3\x83\xbc\xe3\x83\x87" |
+ "\xe3\x82\xa3\xe3\x83\xaa", |
+ &types); |
ASSERT_EQ(1U, types.size()); |
// Check we got the right number of Unicode characters out of the parse. |
EXPECT_EQ(9U, types[0].description.size()); |
} |
-/* |
+// Test that we handle corner cases gracefully. |
+TEST(MIMEDescriptionParse, CornerCases) { |
+ std::vector<WebPluginMimeType> types; |
+ NPAPI::PluginLib::ParseMIMEDescription("mime/type:", &types); |
+ EXPECT_TRUE(types.empty()); |
-TODO(evanm): write a test that covers the following, which does *not* |
-parse properly with the current code. |
+ types.clear(); |
+ NPAPI::PluginLib::ParseMIMEDescription("mime/type:ext1:", &types); |
+ ASSERT_EQ(1U, types.size()); |
+ EXPECT_EQ("mime/type", types[0].mime_type); |
+ EXPECT_EQ(1U, types[0].file_extensions.size()); |
+ EXPECT_EQ("ext1", types[0].file_extensions[0]); |
+ EXPECT_EQ(L"", types[0].description); |
+} |
-application/x-java-vm:class,jar:IcedTea;application/x-java-applet:class,jar:IcedTea;application/x-java-applet;version=1.1:class,jar:IcedTea;application/x-java-applet;version=1.1.1:class,jar:IcedTea;application/x-java-applet;version=1.1.2:class,jar:IcedTea;application/x-java-applet;version=1.1.3:class,jar:IcedTea;application/x-java-applet;version=1.2:class,jar:IcedTea;application/x-java-applet;version=1.2.1:class,jar:IcedTea;application/x-java-applet;version=1.2.2:class,jar:IcedTea;application/x-java-applet;version=1.3:class,jar:IcedTea;application/x-java-applet;version=1.3.1:class,jar:IcedTea;application/x-java-applet;version=1.4:class,jar:IcedTea |
- */ |
+// This Java plugin has embedded semicolons in the mime type. |
+TEST(MIMEDescriptionParse, ComplicatedJava) { |
+ std::vector<WebPluginMimeType> types; |
+ NPAPI::PluginLib::ParseMIMEDescription( |
+ "application/x-java-vm:class,jar:IcedTea;application/x-java" |
+ "-applet:class,jar:IcedTea;application/x-java-applet;versio" |
+ "n=1.1:class,jar:IcedTea;application/x-java-applet;version=" |
+ "1.1.1:class,jar:IcedTea;application/x-java-applet;version=" |
+ "1.1.2:class,jar:IcedTea;application/x-java-applet;version=" |
+ "1.1.3:class,jar:IcedTea;application/x-java-applet;version=" |
+ "1.2:class,jar:IcedTea;application/x-java-applet;version=1." |
+ "2.1:class,jar:IcedTea;application/x-java-applet;version=1." |
+ "2.2:class,jar:IcedTea;application/x-java-applet;version=1." |
+ "3:class,jar:IcedTea;application/x-java-applet;version=1.3." |
+ "1:class,jar:IcedTea;application/x-java-applet;version=1.4:" |
+ "class,jar:IcedTea", |
+ &types); |
+ ASSERT_EQ(12U, types.size()); |
+ for (size_t i = 0; i < types.size(); ++i) |
+ EXPECT_EQ(L"IcedTea", types[i].description); |
+ |
+ // Verify that the mime types with semis are coming through ok. |
+ EXPECT_TRUE(types[4].mime_type.find(';') != std::string::npos); |
+} |
#endif // defined(OS_LINUX) |
+ |