mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
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:
parent
dc3f199043
commit
229b176321
13 changed files with 216 additions and 47 deletions
9
tests/html/worker/worker_post_block.js
Normal file
9
tests/html/worker/worker_post_block.js
Normal 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;
|
||||
}
|
||||
}
|
6
tests/html/worker/worker_post_interval.js
Normal file
6
tests/html/worker/worker_post_interval.js
Normal file
|
@ -0,0 +1,6 @@
|
|||
var prev = Date.now()
|
||||
setInterval(function () {
|
||||
var now = Date.now();
|
||||
postMessage(now - prev);
|
||||
prev = now;
|
||||
}, 500);
|
48
tests/html/worker/worker_terminate.html
Normal file
48
tests/html/worker/worker_terminate.html
Normal 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>
|
Loading…
Add table
Add a link
Reference in a new issue