Implement Worker#terminate() (fixes #4427).

Adds support for terminating DOM workers. A closing flag was added to
WorkerGlobalScope per the spec.
This commit is contained in:
Joe Wilm 2015-04-25 21:33:25 -07:00 committed by Keith Yeung
parent dc3f199043
commit 229b176321
13 changed files with 216 additions and 47 deletions

View file

@ -0,0 +1,9 @@
var prev = Date.now()
for (var i=0; true; i++) {
if (i % 100000000 == 0) {
var now = Date.now();
postMessage(now - prev);
prev = now;
}
}

View file

@ -0,0 +1,6 @@
var prev = Date.now()
setInterval(function () {
var now = Date.now();
postMessage(now - prev);
prev = now;
}, 500);

View file

@ -0,0 +1,48 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Worker Test</title>
</head>
<body>
<script>
var workerPath = (function () {
var workerType;
switch (window.location.search.match(/worker=(\w+)/)[1]) {
case 'block':
workerType = 'block';
break;
default:
workerType = 'interval';
break;
}
return './worker_post_' + workerType + '.js';
})();
function startWorker() {
window.w = new Worker(workerPath);
w.onmessage = function(m) {
var p = document.createElement('p');
p.innerHTML = JSON.stringify(m.data);
document.body.appendChild(p);
};
var ps = document.getElementsByTagName('p');
while (ps.length) {
document.body.removeChild(ps[0]);
}
}
function stopWorker() {
if (w) {
w.terminate();
}
window.w = null;
}
</script>
<button onclick="startWorker()">Start Worker</button>
<button onclick="stopWorker()">Stop Worker</button>
</body>
</html>