mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +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 window = window.r();
|
||||||
let performance = window.Performance();
|
let performance = window.Performance();
|
||||||
let performance = performance.r();
|
let performance = performance.r();
|
||||||
|
let timing = performance.Now();
|
||||||
|
|
||||||
for (_, callback) in animation_frame_list {
|
for (_, callback) in animation_frame_list {
|
||||||
callback(*performance.Now());
|
callback(*timing);
|
||||||
}
|
}
|
||||||
|
|
||||||
window.reflow(ReflowGoal::ForDisplay,
|
window.reflow(ReflowGoal::ForDisplay,
|
||||||
|
|
|
@ -28877,6 +28877,12 @@
|
||||||
"path": "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html",
|
"path": "2dcontext/fill-and-stroke-styles/2d.fillStyle.parse.hex8.html",
|
||||||
"url": "/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"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -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