blob: 97b829e6b28688d60a495eca51cb977944542c46 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
#target {
position: relative;
height: 50px;
width: 50px;
background-color: blue;
}
.animated {
animation: test 10s linear;
animation: test 10s linear;
}
@keyframes test {
from { left: 100px; }
to { left: 200px; }
}
@keyframes test {
from { left: 100px; }
to { left: 200px; }
}
</style>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script type="text/javascript">
var test = async_test("Tests that changing the display property of a running animation to a value other than 'none' does not cause it to terminate or re-start");
var target;
var onStartFunc = test.step_func(onStart);
function go() {
target = document.getElementById('target');
target.addEventListener('animationstart', onStartFunc);
target.classList.add('animated');
}
function onStart(e) {
target.removeEventListener('animationstart', onStartFunc);
target.addEventListener('animationstart', test.step_func(onRestart));
test.step_timeout(setDisplay.bind(null, 0), 20);
}
function checkLeftValue(previousValue, isLast) {
var currentValue = getComputedStyle(target).left;
assert_less_than_equal(parseFloat(previousValue), parseFloat(currentValue), 'Left property should not be reset');
if (isLast)
test.done();
}
var values = [
'inline',
'block',
'inline-block',
'inline-table',
'list-item',
'run-in',
'table',
'table-caption',
'table-column-group',
'table-header-group',
'table-footer-group',
'table-row-group',
'table-cell',
'table-column',
'table-row'
];
function setDisplay(index) {
var isLast = index === values.length - 1;
test.step_timeout(checkLeftValue.bind(null, getComputedStyle(target).left, isLast), 0);
target.style.display = values[index];
if (!isLast) {
test.step_timeout(setDisplay.bind(null, index + 1, true), 20);
}
}
function onRestart(e) {
assert_unreached("Start event fired again");
}
</script>
</head>
<body onload="go()">
<div id="target">target</div>
</body>
</html>