<!DOCTYPE HTML >
<html >
<head >
<title >Test for postMessages cloning/transferring objects</title >
<script src="/tests/SimpleTest/SimpleTest.js" ></script >
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
<script src="common_postMessages.js" ></script >
</head >
<body >
<input id="fileList" type="file" ></input >
<script type="application/javascript" >
// PostMessage for BroadcastChannel
tests.push(function test_broadcastChannel() {
info("Testing broadcastChannel" );
var bc1 = new BroadcastChannel('postMessagesTest' );
var bc2 = new BroadcastChannel('postMessagesTest' );
var resolve;
function resolvePromise(data) {
if (!resolve) {
ok(false, "Unexpected message!" );
return;
}
let tmp = resolve;
resolve = null;
tmp(data);
}
bc2.onmessage = function(e) {
resolvePromise({ data: e.data, ports: [], error: false });
}
bc2.onmessageerror = function(e) {
resolvePromise({ error: true });
}
runTests({
clonableObjectsEveryWhere: true,
clonableObjectsSameProcess: true,
transferableObjects: false,
send(what, ports) {
return new Promise(function(r, rr) {
if (ports.length) {
rr();
return;
}
resolve = r;
bc1.postMessage(what);
});
},
finished() {
bc1.close();
bc2.close();
next();
}
});
});
// PostMessage for BroadcastChannel in workers
tests.push(function test_broadcastChannel_inWorkers() {
info("Testing broadcastChannel in Workers" );
var bc = new BroadcastChannel('postMessagesTest_inWorkers' );
var resolve;
var w = new Worker('worker_postMessages.js' );
w.postMessage('broadcastChannel' );
w.onmessage = function(e) {
is(e.data, 'ok' , "Worker ready!" );
w.onmessage = function(e1) {
if (!resolve) {
ok(false, "Unexpected message!" );
return;
}
let tmp = resolve;
resolve = null;
tmp({ data: e1.data, ports: e1.ports, error: e1.data === "error" });
}
runTests({
clonableObjectsEveryWhere: true,
clonableObjectsSameProcess: true,
transferableObjects: false,
send(what, ports) {
return new Promise(function(r, rr) {
if (ports.length) {
rr();
return;
}
resolve = r;
bc.postMessage(what);
});
},
finished() {
bc.close();
w.terminate();
next();
}
});
}
});
// PostMessage for BroadcastChannel in SharedWorkers
tests.push(function test_broadcastChannel_inSharedWorkers() {
info("Testing broadcastChannel in SharedWorkers" );
var bc = new BroadcastChannel('postMessagesTest_inWorkers' );
var resolve;
var w = new SharedWorker('worker_postMessages.js' );
w.port.postMessage('broadcastChannel' );
w.port.onmessage = function(e) {
is(e.data, 'ok' , "Worker ready!" );
w.port.onmessage = function(e1) {
if (!resolve) {
ok(false, "Unexpected message!" );
return;
}
let tmp = resolve;
resolve = null;
tmp({ data: e1.data, ports: e1.ports, error: e1.data === "error" });
}
runTests({
clonableObjectsEveryWhere: true,
clonableObjectsSameProcess: false,
transferableObjects: false,
send(what, ports) {
return new Promise(function(r, rr) {
if (ports.length) {
rr();
return;
}
resolve = r;
bc.postMessage(what);
});
},
finished() {
bc.close();
w.port.postMessage("terminate" );
next();
}
});
}
});
SimpleTest.waitForExplicitFinish();
next();
</script >
</body >
</html >
Messung V0.5 C=99 H=100 G=99
¤ Dauer der Verarbeitung: 0.24 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland