| <!DOCTYPE html> |
| <title>Test the timing in the worker to be consistent between animation and performance.now().</title> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script id="worker" type="text/worker"> |
| var countWorker = 10; |
| function animate(time) { |
| var timeNow = performance.now(); |
| countWorker--; |
| self.postMessage([time, timeNow, countWorker]); |
| if(countWorker > 0) |
| requestAnimationFrame(animate); |
| }; |
| |
| self.onmessage = function(msg){ |
| requestAnimationFrame(animate); |
| } |
| </script> |
| <script> |
| async_test(function(t) { |
| const blob = new Blob([document.getElementById("worker").textContent]); |
| const worker = new Worker(URL.createObjectURL(blob)); |
| let delta = 0; |
| worker.onmessage = t.step_func(function(pairTime) { |
| const time = pairTime.data[0]; |
| const timeNow = pairTime.data[1]; |
| const count = pairTime.data[2]; |
| if (count == 9) { |
| delta = time - timeNow; |
| } |
| console.log(time, timeNow, count, delta); |
| assert_approx_equals(time, timeNow + delta, 1000, "Times must be close enough"); |
| if(count == 0) |
| t.done(); |
| }); |
| worker.postMessage(""); |
| }, 'Test the timing in the worker to be consistent between animation and performance.now'); |
| </script> |