blob: 4696107e642583fc020bed3191a1fff798328d34 [file] [log] [blame]
<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<!-- Comment out the next line to run this test in Firefox. -->
<script src="../resources/testharnessreport.js"></script>
<style>
.box {
position: relative;
height: 100px;
width: 100px;
background-color: blue;
transition-delay: -0.5s;
transition-duration: 1s;
transition-property: width;
}
#linear {
transition-timing-function: linear;
}
#non-linear {
transition-timing-function: steps(6, start);
}
</style>
<div class="box" id="linear"></div>
<div class="box" id="non-linear"></div>
<script>
function assert_px_approx_equals(actual, expected, epsilon, description) {
var match = /^([\d.]+)px$/.exec(actual);
assert_not_equals(match, null);
assert_approx_equals(Number(match[1]), expected, epsilon, description);
}
test(function() {
var box = document.getElementById('linear');
assert_equals(getComputedStyle(box).width, '100px');
box.style.width = '200px';
assert_equals(getComputedStyle(box).width, '150px');
box.style.width = '100px';
assert_equals(getComputedStyle(box).width, '125px');
box.style.width = '200px';
assert_equals(getComputedStyle(box).width, '162.5px');
}, "Cross-browser check that reversing a transition mid-way adjusts the duration");
test(function() {
var box = document.getElementById('non-linear');
assert_equals(getComputedStyle(box).width, '100px');
box.style.width = '200px';
assert_px_approx_equals(getComputedStyle(box).width, 166.656, 0.01);
box.style.width = '100px';
assert_px_approx_equals(getComputedStyle(box).width, 122.219, 0.01);
box.style.width = '200px';
assert_px_approx_equals(getComputedStyle(box).width, 174.062, 0.01);
}, "Cross-browser check that reversing a transition with a non linear timing function mid-way adjusts the duration");
</script>