Support nested requestAnimationFrame in the presence of reftest-wait.

This commit is contained in:
Alan Jeffrey 2017-06-19 13:58:41 -05:00
parent e41b7d06b4
commit eb0eceb16c
4 changed files with 49 additions and 13 deletions

View file

@ -1491,19 +1491,15 @@ impl<Window: WindowMethods> IOCompositor<Window> {
};
if wait_for_stable_image {
match self.is_ready_to_paint_image_output() {
Ok(()) => {
// The current image is ready to output. However, if there are animations active,
// tick those instead and continue waiting for the image output to be stable AND
// all active animations to complete.
if self.animations_active() {
self.process_animations();
return Err(UnableToComposite::NotReadyToPaintImage(NotReadyToPaint::AnimationsActive));
}
}
Err(result) => {
return Err(UnableToComposite::NotReadyToPaintImage(result))
}
// The current image may be ready to output. However, if there are animations active,
// tick those instead and continue waiting for the image output to be stable AND
// all active animations to complete.
if self.animations_active() {
self.process_animations();
return Err(UnableToComposite::NotReadyToPaintImage(NotReadyToPaint::AnimationsActive));
}
if let Err(result) = self.is_ready_to_paint_image_output() {
return Err(UnableToComposite::NotReadyToPaintImage(result))
}
}

View file

@ -6533,6 +6533,18 @@
{}
]
],
"mozilla/request_animation_frame_reftest_wait.html": [
[
"/_mozilla/mozilla/request_animation_frame_reftest_wait.html",
[
[
"/_mozilla/mozilla/request_animation_frame_reftest_wait_ref.html",
"=="
]
],
{}
]
],
"mozilla/restyle-out-of-document.html": [
[
"/_mozilla/mozilla/restyle-out-of-document.html",
@ -11037,6 +11049,11 @@
{}
]
],
"mozilla/request_animation_frame_reftest_wait_ref.html": [
[
{}
]
],
"mozilla/resources/background-green.css": [
[
{}
@ -31446,6 +31463,14 @@
"df273cf90396cc2d3d3159ce72176122ab9518e5",
"support"
],
"mozilla/request_animation_frame_reftest_wait.html": [
"9c5ce337c92c9954475309f3865a9b47b59fbe4d",
"reftest"
],
"mozilla/request_animation_frame_reftest_wait_ref.html": [
"585548dfc915e3d53690e68ef07098044df39f1f",
"support"
],
"mozilla/resources/background-green.css": [
"bb230110dd1cf4647e020d7172bc375e972c7b41",
"support"

View file

@ -0,0 +1,12 @@
<html class="reftest-wait">
<title>Mix requestAnimationFrame with reftest-wait</title>
<link rel=match href=/_mozilla/mozilla/request_animation_frame_reftest_wait_ref.html>
<script>
// A regression test for https://github.com/servo/servo/issues/17408
requestAnimationFrame(function() {
requestAnimationFrame(function() {
document.documentElement.classList.remove("reftest-wait");
});
});
</script>
</html>

View file

@ -0,0 +1,3 @@
<html>
<title>Mix requestAnimationFrame with reftest-wait</title>
</html>