blob: be51a6052f3f7283621fab6e7c66d1f44894ce2e [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
</head>
<body>
<script>
function getOrCreate(id, tagName)
{
var element = document.getElementById(id);
if (element)
return element;
element = document.createElement(tagName);
element.id = id;
var parent = document.body || document.documentElement;
var refNode = parent.firstChild;
parent.insertBefore(element, refNode);
return element;
}
function debug(msg)
{
var span = document.createElement("span");
getOrCreate("console", "div").appendChild(span); // insert it first so XHTML knows the namespace
span.innerHTML = msg + '<br />';
}
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
var verbose = false;
var sab = new SharedArrayBuffer(3 * 4);
var didStart = new Int32Array(sab, 0, 1);
var shouldGo = new Int32Array(sab, 4, 1);
var didEnd = new Int32Array(sab, 8, 1);
var numWorkers = 0;
function startWorker(file)
{
if (verbose)
debug("Starting worker: " + file);
numWorkers++;
var worker = new Worker(file);
worker.onmessage = function(event) {
if (event.data == "done") {
if (verbose)
debug("Finished worker: " + file);
if (--numWorkers)
return;
debug("All workers done!");
done();
return;
}
if (event.data.indexOf("Error") == 0) {
debug("Test failed: "+ event.data);
if (window.testRunner)
testRunner.notifyDone();
}
if (verbose)
debug("Event from " + file + ": " + event.data);
};
worker.postMessage({didStart: didStart, shouldGo: shouldGo, didEnd: didEnd, shouldShareBuffer: true});
}
function done()
{
if (didStart[0] != 1)
throw "Error: Bad value at didStart[0]: " + didStart[0];
if (shouldGo[0] != 1)
throw "Error: Bad value at shouldGo[0]: " + shouldGo[0];
if (didEnd[0] != 1)
throw "Error: Bad value at didEnd[0]: " + didEnd[0];
debug("Test passed!");
if (window.testRunner)
testRunner.notifyDone();
}
startWorker("multi-memory-worker-1.js");
startWorker("multi-memory-worker-2.js");
</script>
</body>
</html>