// 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"));
}