forked from mirrors/gecko-dev
		
	MozReview-Commit-ID: FvTMGjxfRXk --HG-- extra : rebase_source : 8f7fd0903c9ca2f545dce2633eb797345a7517f8
		
			
				
	
	
		
			103 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!doctype html>
 | 
						|
<meta charset=utf-8>
 | 
						|
<script src="/resources/testharness.js"></script>
 | 
						|
<script src="/resources/testharnessreport.js"></script>
 | 
						|
<script src="../testcommon.js"></script>
 | 
						|
<style>
 | 
						|
:root {
 | 
						|
  --var-100px: 100px;
 | 
						|
}
 | 
						|
</style>
 | 
						|
<body>
 | 
						|
<div id="log"></div>
 | 
						|
<script>
 | 
						|
'use strict';
 | 
						|
 | 
						|
function getKeyframes(e) {
 | 
						|
  return e.getAnimations()[0].effect.getKeyframes();
 | 
						|
}
 | 
						|
 | 
						|
function assert_frames_equal(a, b, name) {
 | 
						|
  assert_equals(Object.keys(a).sort().toString(),
 | 
						|
                Object.keys(b).sort().toString(),
 | 
						|
                "properties on " + name);
 | 
						|
  for (var p in a) {
 | 
						|
    assert_equals(a[p], b[p], "value for '" + p + "' on " + name);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
test(function(t) {
 | 
						|
  var div = addDiv(t);
 | 
						|
 | 
						|
  div.style.left = '0px';
 | 
						|
  getComputedStyle(div).transitionProperty;
 | 
						|
  div.style.transition = 'left 100s';
 | 
						|
  div.style.left = '100px';
 | 
						|
 | 
						|
  var frames = getKeyframes(div);
 | 
						|
 | 
						|
  assert_equals(frames.length, 2, "number of frames");
 | 
						|
 | 
						|
  var expected = [
 | 
						|
    { offset: 0, computedOffset: 0, easing: "ease", composite: null,
 | 
						|
      left: "0px" },
 | 
						|
    { offset: 1, computedOffset: 1, easing: "linear", composite: null,
 | 
						|
      left: "100px" },
 | 
						|
  ];
 | 
						|
 | 
						|
  for (var i = 0; i < frames.length; i++) {
 | 
						|
    assert_frames_equal(frames[i], expected[i], "ComputedKeyframe #" + i);
 | 
						|
  }
 | 
						|
}, 'KeyframeEffect.getKeyframes() returns expected frames for a simple'
 | 
						|
   + ' transition');
 | 
						|
 | 
						|
test(function(t) {
 | 
						|
  var div = addDiv(t);
 | 
						|
 | 
						|
  div.style.left = '0px';
 | 
						|
  getComputedStyle(div).transitionProperty;
 | 
						|
  div.style.transition = 'left 100s steps(2,end)';
 | 
						|
  div.style.left = '100px';
 | 
						|
 | 
						|
  var frames = getKeyframes(div);
 | 
						|
 | 
						|
  assert_equals(frames.length, 2, "number of frames");
 | 
						|
 | 
						|
  var expected = [
 | 
						|
    { offset: 0, computedOffset: 0, easing: "steps(2)", composite: null,
 | 
						|
      left: "0px" },
 | 
						|
    { offset: 1, computedOffset: 1, easing: "linear", composite: null,
 | 
						|
      left: "100px" },
 | 
						|
  ];
 | 
						|
 | 
						|
  for (var i = 0; i < frames.length; i++) {
 | 
						|
    assert_frames_equal(frames[i], expected[i], "ComputedKeyframe #" + i);
 | 
						|
  }
 | 
						|
}, 'KeyframeEffect.getKeyframes() returns expected frames for a simple'
 | 
						|
   + ' transition with a non-default easing function');
 | 
						|
 | 
						|
test(function(t) {
 | 
						|
  var div = addDiv(t);
 | 
						|
  div.style.left = '0px';
 | 
						|
  getComputedStyle(div).transitionProperty;
 | 
						|
  div.style.transition = 'left 100s';
 | 
						|
  div.style.left = 'var(--var-100px)';
 | 
						|
 | 
						|
  var frames = getKeyframes(div);
 | 
						|
 | 
						|
  // CSS transition endpoints are based on the computed value so we
 | 
						|
  // shouldn't see the variable reference
 | 
						|
  var expected = [
 | 
						|
    { offset: 0, computedOffset: 0, easing: 'ease', composite: null,
 | 
						|
      left: '0px' },
 | 
						|
    { offset: 1, computedOffset: 1, easing: 'linear', composite: null,
 | 
						|
      left: '100px' },
 | 
						|
  ];
 | 
						|
  for (var i = 0; i < frames.length; i++) {
 | 
						|
    assert_frames_equal(frames[i], expected[i], "ComputedKeyframe #" + i);
 | 
						|
  }
 | 
						|
}, 'KeyframeEffect.getKeyframes() returns expected frames for a'
 | 
						|
   + ' transition with a CSS variable endpoint');
 | 
						|
 | 
						|
</script>
 | 
						|
</body>
 |