// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include <gtest/gtest.h> #include "chrome/renderer/plugins/plugin_uma.h" class PluginUMATest : public testing::Test { public: static void ExpectPluginType( PluginUMAReporter::PluginType expected_plugin_type, const std::string& plugin_mime_type, const GURL& plugin_src) { EXPECT_EQ(expected_plugin_type, PluginUMAReporter::GetInstance()->GetPluginType(plugin_mime_type, plugin_src)); } }; TEST_F(PluginUMATest, WindowsMediaPlayer) { ExpectPluginType(PluginUMAReporter::WINDOWS_MEDIA_PLAYER, "application/x-mplayer2", GURL("file://some_file.mov")); ExpectPluginType(PluginUMAReporter::UNSUPPORTED_MIMETYPE, "application/x-mplayer2-some_sufix", GURL("file://some_file.mov")); ExpectPluginType(PluginUMAReporter::UNSUPPORTED_MIMETYPE, "some-prefix-application/x-mplayer2", GURL("file://some_file.mov")); } TEST_F(PluginUMATest, Silverlight) { ExpectPluginType(PluginUMAReporter::SILVERLIGHT, "application/x-silverlight", GURL("aaaa")); ExpectPluginType(PluginUMAReporter::SILVERLIGHT, "application/x-silverlight-some-sufix", GURL("aaaa")); ExpectPluginType(PluginUMAReporter::UNSUPPORTED_MIMETYPE, "some-prefix-application/x-silverlight", GURL("aaaa")); } TEST_F(PluginUMATest, RealPlayer) { ExpectPluginType( PluginUMAReporter::REALPLAYER, "audio/x-pn-realaudio", GURL("some url")); ExpectPluginType(PluginUMAReporter::REALPLAYER, "audio/x-pn-realaudio-some-sufix", GURL("some url")); ExpectPluginType(PluginUMAReporter::UNSUPPORTED_MIMETYPE, "some-prefix-audio/x-pn-realaudio", GURL("some url")); } TEST_F(PluginUMATest, Java) { ExpectPluginType( PluginUMAReporter::JAVA, "application/x-java-applet", GURL("some url")); ExpectPluginType(PluginUMAReporter::JAVA, "application/x-java-applet-some-sufix", GURL("some url")); ExpectPluginType(PluginUMAReporter::JAVA, "some-prefix-application/x-java-applet-sufix", GURL("some url")); } TEST_F(PluginUMATest, QuickTime) { ExpectPluginType( PluginUMAReporter::QUICKTIME, "video/quicktime", GURL("some url")); ExpectPluginType(PluginUMAReporter::UNSUPPORTED_MIMETYPE, "video/quicktime-sufix", GURL("some url")); ExpectPluginType(PluginUMAReporter::UNSUPPORTED_MIMETYPE, "prefix-video/quicktime", GURL("some url")); } TEST_F(PluginUMATest, BrowserPlugin) { ExpectPluginType(PluginUMAReporter::BROWSER_PLUGIN, "application/browser-plugin", GURL("some url")); ExpectPluginType(PluginUMAReporter::UNSUPPORTED_MIMETYPE, "application/browser-plugin-sufix", GURL("some url")); ExpectPluginType(PluginUMAReporter::UNSUPPORTED_MIMETYPE, "prefix-application/browser-plugin", GURL("some url")); } TEST_F(PluginUMATest, ShockwaveFlash) { ExpectPluginType(PluginUMAReporter::SHOCKWAVE_FLASH, "application/x-shockwave-flash", GURL("some url")); ExpectPluginType(PluginUMAReporter::SHOCKWAVE_FLASH, "application/futuresplash", GURL("some url")); ExpectPluginType(PluginUMAReporter::UNSUPPORTED_MIMETYPE, "application/x-futuresplash", GURL("some url")); ExpectPluginType(PluginUMAReporter::UNSUPPORTED_MIMETYPE, "application/shockwave-flash", GURL("some url")); } TEST_F(PluginUMATest, WidevineCdm) { #if defined(ENABLE_PEPPER_CDMS) ExpectPluginType(PluginUMAReporter::WIDEVINE_CDM, #else ExpectPluginType(PluginUMAReporter::UNSUPPORTED_MIMETYPE, #endif "application/x-ppapi-widevine-cdm", GURL("some url")); ExpectPluginType(PluginUMAReporter::UNSUPPORTED_MIMETYPE, "application/x-ppapi-widevine-cdm-sufix", GURL("some url")); ExpectPluginType(PluginUMAReporter::UNSUPPORTED_MIMETYPE, "prefix-application/x-ppapi-widevine-cdm", GURL("some url")); } TEST_F(PluginUMATest, BySrcExtension) { ExpectPluginType( PluginUMAReporter::QUICKTIME, std::string(), GURL("file://file.mov")); // When plugin's mime type is given, we don't check extension. ExpectPluginType(PluginUMAReporter::UNSUPPORTED_MIMETYPE, "unknown-plugin", GURL("http://file.mov")); ExpectPluginType(PluginUMAReporter::WINDOWS_MEDIA_PLAYER, std::string(), GURL("file://file.asx")); ExpectPluginType( PluginUMAReporter::REALPLAYER, std::string(), GURL("file://file.rm")); ExpectPluginType(PluginUMAReporter::QUICKTIME, std::string(), GURL("http://aaa/file.mov?x=aaaa&y=b#c")); ExpectPluginType(PluginUMAReporter::QUICKTIME, std::string(), GURL("http://file.mov?x=aaaa&y=b#c")); ExpectPluginType(PluginUMAReporter::SHOCKWAVE_FLASH, std::string(), GURL("http://file.swf?x=aaaa&y=b#c")); ExpectPluginType(PluginUMAReporter::SHOCKWAVE_FLASH, std::string(), GURL("http://file.spl?x=aaaa&y=b#c")); ExpectPluginType(PluginUMAReporter::UNSUPPORTED_EXTENSION, std::string(), GURL("http://file.unknown_extension")); ExpectPluginType( PluginUMAReporter::UNSUPPORTED_EXTENSION, std::string(), GURL("http://")); ExpectPluginType( PluginUMAReporter::UNSUPPORTED_EXTENSION, std::string(), GURL("mov")); } TEST_F(PluginUMATest, CaseSensitivity) { ExpectPluginType( PluginUMAReporter::QUICKTIME, "video/QUICKTIME", GURL("http://file.aaa")); ExpectPluginType( PluginUMAReporter::QUICKTIME, std::string(), GURL("http://file.MoV")); }