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:
Harrison G 2015-08-07 09:03:51 -04:00
parent 0a0fd30eb3
commit e40b141409
4 changed files with 40 additions and 2 deletions

View file

@ -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,

View file

@ -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"
}
]
}
},

View file

@ -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>