blob: 81e30830099036501a317e20bcb25b0d825bb9cb [file] [log] [blame]
<!DOCTYPE html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<div id="parent"></div>
<script>
var keyframeValueMap = {
translate: '10px 10px 10px',
scale: '1 2 3',
rotate: '45deg',
transform: 'translate(10px, 20px)',
opacity: '1'
};
/* Test that animation on compositableProperty on compositor is cancelled when
cancelProperty is animated on the element */
function assertAnimationComposited(compositableProperty, cancelProperty, isStillComposited) {
var element = document.createElement('div');
// The element must have some painted content in order to be
// composited when animated in SPv2.
element.innerText = 'x';
document.getElementById('parent').appendChild(element);
var keyframe = {};
keyframe[compositableProperty] = keyframeValueMap[compositableProperty];
var animation = element.animate([keyframe, keyframe], {
duration: 4000,
iterations: Infinity
});
var description = "Compositor Animation on " + compositableProperty + (isStillComposited ? " is not " : " is ") + "cancelled by " + cancelProperty;
var asyncHandle = async_test(description);
requestAnimationFrame(function() {
requestAnimationFrame(function() {
asyncHandle.step(function() {
assert_true(internals.isCompositedAnimation(animation), compositableProperty + " animation should be composited");
});
var keyframe2 = {};
keyframe2[cancelProperty] = keyframeValueMap[cancelProperty];
animation = element.animate([keyframe2, keyframe2], {
duration: 4000,
iterations: Infinity
});
requestAnimationFrame(function() {
requestAnimationFrame(function() {
asyncHandle.step(function() {
assert_equals(internals.isCompositedAnimation(animation), isStillComposited, description)
});
animation.cancel();
asyncHandle.done();
});
});
});
});
}
assertAnimationComposited('transform', 'transform', false);
assertAnimationComposited('transform', 'translate', false);
assertAnimationComposited('transform', 'rotate', false);
assertAnimationComposited('transform', 'scale', false);
assertAnimationComposited('translate', 'transform', false);
assertAnimationComposited('translate', 'rotate', false);
assertAnimationComposited('translate', 'scale', false);
assertAnimationComposited('translate', 'translate', false);
assertAnimationComposited('rotate', 'transform', false);
assertAnimationComposited('rotate', 'rotate', false);
assertAnimationComposited('rotate', 'scale', false);
assertAnimationComposited('rotate', 'translate', false);
assertAnimationComposited('scale', 'transform', false);
assertAnimationComposited('scale', 'rotate', false);
assertAnimationComposited('scale', 'scale', false);
assertAnimationComposited('scale', 'translate', false);
assertAnimationComposited('opacity', 'transform', true);
assertAnimationComposited('opacity', 'translate', true);
assertAnimationComposited('opacity', 'rotate', true);
assertAnimationComposited('opacity', 'scale', true);
</script>