mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
Fix requestAnimationFrame timestamps in queue
This resolves #7044 which involved callbacks in a queue not receiving the same timestamp despite the specification saying they should. An extra test was added to verify the correct behavior.
This commit is contained in:
parent
0a0fd30eb3
commit
e40b141409
4 changed files with 40 additions and 2 deletions
|
@ -957,9 +957,10 @@ impl<'a> DocumentHelpers<'a> for &'a Document {
|
|||
let window = window.r();
|
||||
let performance = window.Performance();
|
||||
let performance = performance.r();
|
||||
let timing = performance.Now();
|
||||
|
||||
for (_, callback) in animation_frame_list {
|
||||
callback(*performance.Now());
|
||||
callback(*timing);
|
||||
}
|
||||
|
||||
window.reflow(ReflowGoal::ForDisplay,
|
||||
|
|
|
@ -28877,6 +28877,12 @@
|
|||
"path": "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html",
|
||||
"url": "/2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html"
|
||||
}
|
||||
],
|
||||
"animation-timing/same-dispatch-time.html": [
|
||||
{
|
||||
"path": "animation-timing/same-dispatch-time.html",
|
||||
"url": "/animation-timing/same-dispatch-time.html"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1016,4 +1016,4 @@
|
|||
"rev": null,
|
||||
"url_base": "/_mozilla/",
|
||||
"version": 2
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>requestAnimationFrame in queue get the same timestamp</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<link rel="help" href="http://w3c.github.io/animation-timing/#dfn-invoke-callbacks-algorithm"/>
|
||||
</head>
|
||||
<body>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
test(function (t) {
|
||||
var a = 0, b = 0;
|
||||
|
||||
/* REASONING:
|
||||
* These two methods that will be called with a timestamp. Because
|
||||
* they execute right after eachother, they're added to the same
|
||||
* queue and SHOULD be timestamped with the same value.
|
||||
*/
|
||||
window.requestAnimationFrame(function() { a = arguments[0]; });
|
||||
window.requestAnimationFrame(function() { b = arguments[0]; });
|
||||
|
||||
setTimeout(function() {
|
||||
assert_true(a != 0);
|
||||
assert_true(b != 0);
|
||||
assert_true(a == b);
|
||||
}, 100);
|
||||
}, "requestAnimationFrame will timestamp events in the same queue with the same time");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Add table
Add a link
Reference in a new issue