Index: content/common/plugin_list_unittest.cc |
diff --git a/content/common/plugin_list_unittest.cc b/content/common/plugin_list_unittest.cc |
index 342200edfc2a0303c9c7062c04b4ce64f535aebc..a9e592ef4bf419602cdbc781d361af8df13f0572 100644 |
--- a/content/common/plugin_list_unittest.cc |
+++ b/content/common/plugin_list_unittest.cc |
@@ -7,6 +7,7 @@ |
#include "base/strings/string16.h" |
#include "base/strings/utf_string_conversions.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+#include "url/gurl.h" |
namespace content { |
@@ -15,6 +16,8 @@ namespace { |
base::FilePath::CharType kFooPath[] = FILE_PATH_LITERAL("/plugins/foo.plugin"); |
base::FilePath::CharType kBarPath[] = FILE_PATH_LITERAL("/plugins/bar.plugin"); |
const char* kFooName = "Foo Plugin"; |
+const char* kFooMimeType = "application/x-foo-mime-type"; |
+const char* kFooFileType = "foo"; |
bool Equals(const WebPluginInfo& a, const WebPluginInfo& b) { |
return (a.name == b.name && |
@@ -51,6 +54,8 @@ class PluginListTest : public testing::Test { |
virtual void SetUp() { |
plugin_list_.DisablePluginsDiscovery(); |
plugin_list_.RegisterInternalPlugin(bar_plugin_, false); |
+ foo_plugin_.mime_types.push_back( |
+ WebPluginMimeType(kFooMimeType, kFooFileType, std::string())); |
plugin_list_.RegisterInternalPlugin(foo_plugin_, false); |
} |
@@ -81,6 +86,56 @@ TEST_F(PluginListTest, BadPluginDescription) { |
ASSERT_TRUE(Contains(plugins, plugin_3043)); |
} |
+TEST_F(PluginListTest, GetPluginInfoArray) { |
+ const char kTargetUrl[] = "http://example.com/test.foo"; |
+ GURL target_url(kTargetUrl); |
+ std::vector<WebPluginInfo> plugins; |
+ std::vector<std::string> actual_mime_types; |
+ |
+ // The file type of the URL is supported by foo_plugin_. However, |
+ // GetPluginInfoArray should not match foo_plugin_ because the MIME type is |
+ // application/octet-stream. |
+ plugin_list_.GetPluginInfoArray(target_url, |
+ "application/octet-stream", |
+ false, // allow_wildcard |
+ NULL, // use_stale |
+ false, // include_npapi |
+ &plugins, |
+ &actual_mime_types); |
+ EXPECT_EQ(0u, plugins.size()); |
+ EXPECT_EQ(0u, actual_mime_types.size()); |
+ |
+ // foo_plugin_ matches due to the MIME type. |
+ plugins.clear(); |
+ actual_mime_types.clear(); |
+ plugin_list_.GetPluginInfoArray(target_url, |
+ kFooMimeType, |
+ false, // allow_wildcard |
+ NULL, // use_stale |
+ false, // include_npapi |
+ &plugins, |
+ &actual_mime_types); |
+ EXPECT_EQ(1u, plugins.size()); |
+ EXPECT_TRUE(Contains(plugins, foo_plugin_)); |
+ ASSERT_EQ(1u, actual_mime_types.size()); |
+ EXPECT_EQ(kFooMimeType, actual_mime_types.front()); |
+ |
+ // foo_plugin_ matches due to the file type and empty MIME type. |
+ plugins.clear(); |
+ actual_mime_types.clear(); |
+ plugin_list_.GetPluginInfoArray(target_url, |
+ "", |
+ false, // allow_wildcard |
+ NULL, // use_stale |
+ false, // include_npapi |
+ &plugins, |
+ &actual_mime_types); |
+ EXPECT_EQ(1u, plugins.size()); |
+ EXPECT_TRUE(Contains(plugins, foo_plugin_)); |
+ ASSERT_EQ(1u, actual_mime_types.size()); |
+ EXPECT_EQ(kFooMimeType, actual_mime_types.front()); |
+} |
+ |
#if defined(OS_POSIX) && !defined(OS_MACOSX) |
// Test parsing a simple description: Real Audio. |