зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset 9900d421e24e (bug 1335475)
This commit is contained in:
Родитель
d4f96dffaf
Коммит
aefe9c93b7
|
@ -44,6 +44,7 @@ skip-if = !crashreporter
|
|||
skip-if = !crashreporter
|
||||
[test_bug1028200-7.html]
|
||||
skip-if = !crashreporter
|
||||
[test_bug406541.html]
|
||||
[test_bug532208.html]
|
||||
[test_bug539565-1.html]
|
||||
[test_bug539565-2.html]
|
||||
|
|
|
@ -0,0 +1,100 @@
|
|||
<!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();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
document.body.appendChild(i);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче