mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-11-19 18:38:36 +00:00
101 lines
3.8 KiB
HTML
101 lines
3.8 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<title>Test for Bug 406541</title>
|
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="text/javascript" src="plugin-utils.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
|
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
|
</head>
|
|
<body>
|
|
<script type="application/x-child-payload" id="child-payload">
|
|
// This is injected into the file:/// origin iframe, see below.
|
|
|
|
// appletA should spawn, appletB, with a codebase outside the temp directory,
|
|
// should not.
|
|
var appletA = document.createElement("applet");
|
|
var appletB = document.createElement("applet");
|
|
var appletC = document.createElement("applet");
|
|
appletA.type = appletB.type = appletC.type = "application/x-java-test";
|
|
appletB.setAttribute("codebase", "file:///");
|
|
appletC.setAttribute("codebase", "./subdir_bug406541/");
|
|
document.body.appendChild(appletA);
|
|
document.body.appendChild(appletB);
|
|
document.body.appendChild(appletC);
|
|
function isSpawned(plugin) {
|
|
try {
|
|
var x = plugin.getJavaCodebase();
|
|
return true;
|
|
} catch (e) {}
|
|
return false;
|
|
}
|
|
window.parent.postMessage({ "A": isSpawned(appletA),
|
|
"B": isSpawned(appletB),
|
|
"C": isSpawned(appletC) }, "*");
|
|
</script>
|
|
<script type="application/javascript">
|
|
SimpleTest.waitForExplicitFinish();
|
|
setTestPluginEnabledState(SpecialPowers.Ci.nsIPluginTag.STATE_ENABLED,
|
|
"Java Test Plug-in");
|
|
SpecialPowers.pushPrefEnv({ "set": [
|
|
['plugin.java.mime', 'application/x-java-test']
|
|
] }, runTest);
|
|
|
|
function runTest() {
|
|
// Create a empty file and point an iframe at it
|
|
var Cc = SpecialPowers.Cc;
|
|
var Ci = SpecialPowers.Ci;
|
|
var file = Cc["@mozilla.org/file/directory_service;1"]
|
|
.getService(Ci.nsIProperties)
|
|
.get("TmpD", Ci.nsIFile);
|
|
var subdir = Cc["@mozilla.org/file/directory_service;1"]
|
|
.getService(Ci.nsIProperties)
|
|
.get("TmpD", Ci.nsIFile);
|
|
file.append("test_bug406541.html");
|
|
file.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0600);
|
|
subdir.append("subdir_bug406541");
|
|
subdir.createUnique(Ci.nsIFile.DIRECTORY_TYPE, 0600);
|
|
|
|
var i = document.createElement("iframe");
|
|
var loaded = false;
|
|
i.addEventListener("load", function initialLoad() {
|
|
if (!loaded) {
|
|
// Once loaded, use special powers to point it at the file
|
|
SpecialPowers.wrap(i.contentWindow).location.href = "file://" + file.path;
|
|
loaded = true;
|
|
} else {
|
|
// Inject the child-payload script to the file:/// origin. Let it test
|
|
// applet spawning and send the results in a postMessage. (Because I
|
|
// couldn't get SpecialPowers to let me touch applets cross-origin, then
|
|
// gave up.)
|
|
var innerdoc = SpecialPowers.wrap(i.contentWindow).document;
|
|
var s = innerdoc.createElement("script");
|
|
s.type = "text/javascript";
|
|
s.textContent = document.getElementById("child-payload").textContent;
|
|
var finished = false;
|
|
window.onmessage = function(message) {
|
|
ok(message.data.A, "Plugin A should spawn");
|
|
ok(!message.data.B, "Plugin B should NOT spawn");
|
|
ok(message.data.C, "Plugin C should spawn");
|
|
file.remove(false);
|
|
subdir.remove(false);
|
|
finished = true;
|
|
SimpleTest.finish();
|
|
};
|
|
innerdoc.body.appendChild(s);
|
|
|
|
SimpleTest.executeSoon(function() {
|
|
if (!finished) {
|
|
ok(finished, "Should have received callback by now");
|
|
SimpleTest.finish();
|
|
}
|
|
});
|
|
}
|
|
}, false);
|
|
document.body.appendChild(i);
|
|
}
|
|
</script>
|
|
</body>
|
|
</html>
|