blob: 32da66277e289d9da8fb8078dcb7719ba37c3185 [file] [log] [blame]
<!DOCTYPE html>
<style type="text/css">
.target {
position: relative;
height: 100px;
width: 100px;
background-color: red;
margin-bottom: 10px;
}
.animated {
animation: test 1s linear;
animation: test 1s linear;
}
#negative-delay {
animation-delay: -500ms;
animation-delay: -500ms;
}
#zero-delay {
animation-delay: 0ms;
animation-delay: 0ms;
}
#positive-delay {
animation-delay: 500ms;
animation-delay: 500ms;
}
@keyframes test {
from { left: 100px; }
to { left: 300px; }
}
@keyframes test {
from { left: 100px; }
to { left: 300px; }
}
</style>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script type="text/javascript">
async_test(t => {
var immediate = true;
window.addEventListener("load", t.step_func(() => {
requestAnimationFrame(t.step_func(() => {
['negative-delay', 'zero-delay', 'positive-delay'].forEach((id) => {
var target = document.getElementById(id);
target.addEventListener('animationstart', onStartEventFired);
target.classList.add('animated');
});
requestAnimationFrame(t.step_func(() => {
immediate = false;
}));
}));
function log(message) {
var div = document.createElement('div');
div.textContent = message;
document.body.appendChild(div);
}
function onStartEventFired(e) {
var id = e.target.id;
var pass = immediate || id == 'positive-delay';
log((pass ? 'PASS' : 'FAIL') + ': ' + id + ': Start event ' + (immediate ? 'fired' : 'did not fire') + ' immediately');
assert_true(pass, 'Start event should be fired');
if (id === 'positive-delay') {
t.done();
}
}
}));
}, "Tests that the start event is fired at the correct time with different start delays");
</script>
<div class="target" id="negative-delay"></div>
<div class="target" id="zero-delay"></div>
<div class="target" id="positive-delay"></div>