mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 927349 part 24 - Add a test that empty animations still start; r=heycam
This commit is contained in:
parent
c19abe5f2e
commit
7d5b0d8661
@ -18,3 +18,4 @@ skip-if = buildapp == 'mulet'
|
||||
[css-transitions/test_animation-target.html]
|
||||
[css-transitions/test_element-get-animation-players.html]
|
||||
skip-if = buildapp == 'mulet'
|
||||
[mozilla/test_deferred_start.html]
|
||||
|
61
dom/animation/test/mozilla/test_deferred_start.html
Normal file
61
dom/animation/test/mozilla/test_deferred_start.html
Normal file
@ -0,0 +1,61 @@
|
||||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="../testcommon.js"></script>
|
||||
<div id="log"></div>
|
||||
<style>
|
||||
@keyframes empty { }
|
||||
</style>
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
function waitForDocLoad() {
|
||||
return new Promise(function(resolve, reject) {
|
||||
if (document.readyState === 'complete') {
|
||||
resolve();
|
||||
} else {
|
||||
window.addEventListener('load', resolve);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async_test(function(t) {
|
||||
var div = addDiv(t);
|
||||
var cs = window.getComputedStyle(div);
|
||||
|
||||
// Test that empty animations actually start.
|
||||
//
|
||||
// Normally we tie the start of animations to when their first frame of
|
||||
// the animation is rendered. However, for animations that don't actually
|
||||
// trigger a paint (e.g. because they are empty, or are animating something
|
||||
// that doesn't render or is offscreen) we want to make sure they still
|
||||
// start.
|
||||
//
|
||||
// Before we start, wait for the document to finish loading. This is because
|
||||
// during loading we will have other paint events taking place which might,
|
||||
// by luck, happen to trigger animations that otherwise would not have been
|
||||
// triggered, leading to false positives.
|
||||
//
|
||||
// As a result, it's better to wait until we have a more stable state before
|
||||
// continuing.
|
||||
var promiseCallbackDone = false;
|
||||
waitForDocLoad().then(function() {
|
||||
div.style.animation = 'empty 1000s';
|
||||
var player = div.getAnimationPlayers()[0];
|
||||
|
||||
player.ready.then(function() {
|
||||
promiseCallbackDone = true;
|
||||
}).catch(function() {
|
||||
assert_unreached('ready promise was rejected');
|
||||
});
|
||||
|
||||
}).then(waitForFrame).then(t.step_func(function() {
|
||||
assert_true(promiseCallbackDone,
|
||||
'ready promise callback was called before the next'
|
||||
+ ' requestAnimationFrame callback');
|
||||
t.done();
|
||||
}));
|
||||
}, 'AnimationPlayer.ready is resolved for an empty animation');
|
||||
|
||||
</script>
|
Loading…
Reference in New Issue
Block a user