Bug 478845 Disable mochitest of test plugin if test plugin is absent r=ted.mielczarek, jwalden

This commit is contained in:
Ginn Chen 2009-04-23 14:27:04 +08:00
parent 9521f5d189
commit fc1e6ae42b
4 changed files with 48 additions and 28 deletions

View File

@ -7,6 +7,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=391728
<title>Test for Bug 391728</title>
<script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/PluginUtils.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
@ -28,18 +29,6 @@ var gUnknown = [];
var gBlocked = [];
var gDisabled = [];
function get_test_plugin() {
var ph = Components.classes["@mozilla.org/plugin/host;1"]
.getService(Components.interfaces.nsIPluginHost);
var tags = ph.getPluginTags({});
// Find the test plugin
for (var i = 0; i < tags.length; i++) {
if (tags[i].name == "Test Plug-in")
return tags[i];
}
}
function disabled_plugin_detected(event) {
gDisabled.push(event.target.id);
}
@ -59,21 +48,22 @@ function init_test() {
.getService(Components.interfaces.nsIPrefBranch);
prefs.setBoolPref("extensions.blocklist.enabled", false);
var plugin = get_test_plugin();
ok(plugin, "Test plugin was not found");
if (!PluginUtils.withTestPlugin(start_test))
SimpleTest.finish();
}
function start_test(plugin) {
is(plugin.description, "Plug-in for testing purposes.", "Test plugin had an incorrect description");
is(plugin.version, "1.0.0.0", "Test plugin had an incorrect version");
ok(!plugin.disabled, "Test plugin should not be disabled");
ok(!plugin.blocklisted, "Test plugin should not be blocklisted");
var frame = document.getElementById("testframe");
frame.addEventListener("load", frame_loaded, true);
load_frame(test_normal, "file_bug391728");
}
function finish_test() {
var plugin = get_test_plugin();
function finish_test(plugin) {
plugin.disabled = false;
plugin.blocklisted = false;
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
@ -91,9 +81,13 @@ function load_frame(nextTest, file) {
frame.src = file + ".html?" + Math.random();
}
function next_text() {
PluginUtils.withTestPlugin(gNextTest);
}
function frame_loaded() {
// We must delay to wait for the plugin sources to be loaded :(
setTimeout(gNextTest, 500);
setTimeout(next_text, 500);
}
function test_style(expected) {
@ -121,51 +115,48 @@ function test_list(list) {
}
}
function test_normal() {
function test_normal(plugin) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
is(gUnknown.length, 0, "Should not have been any unknown plugins");
is(gDisabled.length, 0, "Should not have been any disabled plugins");
is(gBlocked.length, 0, "Should not have been any blocked plugins");
test_style("solid");
var plugin = get_test_plugin();
plugin.disabled = true;
load_frame(test_disabled, "file_bug391728");
}
function test_disabled() {
function test_disabled(plugin) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
is(gUnknown.length, 0, "Should not have been any unknown plugins");
is(gDisabled.length, PLUGIN_COUNT, "Should have been disabled plugins");
test_list(gDisabled);
is(gBlocked.length, 0, "Should not have been any blocked plugins");
test_style("dotted");
var plugin = get_test_plugin();
ok(plugin.disabled, "Plugin lost its disabled status");
plugin.disabled = false;
plugin.blocklisted = true;
load_frame(test_blocked, "file_bug391728");
}
function test_blocked() {
function test_blocked(plugin) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
is(gUnknown.length, 0, "Should not have been any unknown plugins");
is(gDisabled.length, 0, "Should not have been any disabled plugins");
is(gBlocked.length, PLUGIN_COUNT, "Should have been blocked plugins");
test_list(gBlocked);
test_style("dashed");
var plugin = get_test_plugin();
ok(plugin.blocklisted, "Plugin lost its blocklist status");
load_frame(test_unknown, "file_bug391728_2");
}
function test_unknown() {
function test_unknown(plugin) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
is(gUnknown.length, PLUGIN_COUNT, "Should have been unknown plugins");
test_list(gUnknown);
is(gDisabled.length, 0, "Should not have been any disabled plugins");
is(gBlocked.length, 0, "Should not have been any blocked plugins");
test_style("none");
finish_test();
finish_test(plugin);
}
SimpleTest.waitForExplicitFinish();

View File

@ -73,7 +73,7 @@ TOOL_DIRS += default/mac
endif
ifdef ENABLE_TESTS
ifneq (,$(filter WINNT Darwin Linux OS2,$(OS_ARCH)))
ifneq (,$(filter WINNT Darwin Linux OS2 SunOS,$(OS_ARCH)))
DIRS += test
TOOL_DIRS += sdk
endif

View File

@ -52,6 +52,7 @@ _SIMPLETEST_FILES = MozillaFileLogger.js \
setup.js \
EventUtils.js \
WindowSnapshot.js \
PluginUtils.js \
$(NULL)
libs:: $(_SIMPLETEST_FILES)

View File

@ -0,0 +1,28 @@
var PluginUtils =
{
withTestPlugin : function(callback)
{
if (typeof Components == "undefined")
{
todo(false, "Not a Mozilla-based browser");
return false;
}
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var ph = Components.classes["@mozilla.org/plugin/host;1"]
.getService(Components.interfaces.nsIPluginHost);
var tags = ph.getPluginTags({});
// Find the test plugin
for (var i = 0; i < tags.length; i++)
{
if (tags[i].name == "Test Plug-in")
{
callback(tags[i]);
return true;
}
}
todo(false, "Need a test plugin on this platform");
return false;
}
};