<!DOCTYPE html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<style>
#parent>div {
  width: 100px;
  height: 100px;
  background-color: green;
}
</style>

<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 applied (not animated) to the element */
function assertAnimationComposited(compositableProperty, cancelProperty, isStillComposited) {
  var element = document.createElement('div');
  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");
      });
      element.style[cancelProperty] = keyframeValueMap[cancelProperty];

      requestAnimationFrame(function() {
        requestAnimationFrame(function() {

          asyncHandle.step(function() {
            assert_equals(internals.isCompositedAnimation(animation), isStillComposited, description)
          });

          animation.cancel();
          asyncHandle.done();
        });
      });
    });
  });
}

assertAnimationComposited('transform', 'transform', true);
assertAnimationComposited('translate', 'translate', true);
assertAnimationComposited('rotate', 'rotate', true);
assertAnimationComposited('scale', 'scale', true);

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('rotate', 'transform', false);
assertAnimationComposited('rotate', 'scale', false);
assertAnimationComposited('rotate', 'translate', false);

assertAnimationComposited('scale', 'transform', false);
assertAnimationComposited('scale', 'rotate', false);
assertAnimationComposited('scale', 'translate', false);

assertAnimationComposited('opacity', 'transform', true);
assertAnimationComposited('opacity', 'translate', true);
assertAnimationComposited('opacity', 'rotate', true);
assertAnimationComposited('opacity', 'scale', true);
</script>
