| OLD | NEW |
| (Empty) |
| 1 <!DOCTYPE html> | |
| 2 <script src="../../resources/testharness.js"></script> | |
| 3 <script src="../../resources/testharnessreport.js"></script> | |
| 4 <script src="resources/keyframes-test.js"></script> | |
| 5 <script> | |
| 6 var keyframeA = {opacity: '0.5', left: '50px'}; | |
| 7 var keyframeB = {opacity: '0', left: '0px'}; | |
| 8 var keyframeC = {opacity: '0.75', left: '75px'}; | |
| 9 | |
| 10 var keyframeBExpectations = { | |
| 11 0: {opacity: '0.5', left: '50px'}, | |
| 12 0.25: {opacity: '0.25', left: '25px'}, | |
| 13 0.5: {opacity: '0', left: '0px'}, // Corresponds to keyframeB (offset unspecif
ied). | |
| 14 0.75: {opacity: '0.375', left: '37.5px'}, | |
| 15 1: {opacity: '0.75', left: '75px'}, | |
| 16 }; | |
| 17 | |
| 18 var offsetKeyframeA = {opacity: keyframeA.opacity, left: keyframeA.left, offset:
0}; | |
| 19 var offsetKeyframeB = {opacity: keyframeB.opacity, left: keyframeB.left, offset:
0.25}; | |
| 20 var offsetKeyframeC = {opacity: keyframeC.opacity, left: keyframeC.left, offset:
1}; | |
| 21 | |
| 22 var offsetKeyframeBExpectations = { | |
| 23 0: {opacity: '0.5', left: '50px'}, | |
| 24 0.125: {opacity: '0.25', left: '25px'}, | |
| 25 0.25: {opacity: '0', left: '0px'}, // Corresponds to offsetKeyframeB (offset 0
.25). | |
| 26 0.5: {opacity: '0.25', left: '25px'}, | |
| 27 0.75: {opacity: '0.5', left: '50px'}, | |
| 28 1: {opacity: '0.75', left: '75px'}, | |
| 29 }; | |
| 30 | |
| 31 test(function() { | |
| 32 assertAnimationStyles([ | |
| 33 offsetKeyframeA, | |
| 34 keyframeB, | |
| 35 keyframeC, | |
| 36 ], keyframeBExpectations, 'with first offset specified'); | |
| 37 assertAnimationStyles([ | |
| 38 keyframeA, | |
| 39 offsetKeyframeB, | |
| 40 keyframeC, | |
| 41 ], offsetKeyframeBExpectations, 'with second offset specified'); | |
| 42 assertAnimationStyles([ | |
| 43 keyframeA, | |
| 44 keyframeB, | |
| 45 offsetKeyframeC, | |
| 46 ], keyframeBExpectations, 'with third offset specified'); | |
| 47 }, | |
| 48 'element.animate() with 3 keyframes and 1 offset specified', | |
| 49 { | |
| 50 help: 'http://dev.w3.org/fxtf/web-animations/#keyframe-animation-effects', | |
| 51 assert: [ | |
| 52 'element.animate() should start an animation when three keyframes', | |
| 53 'are provided with matching properties and one offset specified.', | |
| 54 'The keyframes must maintain their ordering and get distributed', | |
| 55 'correctly.', | |
| 56 ], | |
| 57 author: 'Alan Cutter', | |
| 58 }); | |
| 59 | |
| 60 test(function() { | |
| 61 assertAnimationStyles([ | |
| 62 keyframeA, | |
| 63 offsetKeyframeB, | |
| 64 offsetKeyframeC, | |
| 65 ], offsetKeyframeBExpectations, 'with first offset unspecified'); | |
| 66 assertAnimationStyles([ | |
| 67 offsetKeyframeA, | |
| 68 keyframeB, | |
| 69 offsetKeyframeC, | |
| 70 ], keyframeBExpectations, 'with second offset unspecified'); | |
| 71 assertAnimationStyles([ | |
| 72 offsetKeyframeA, | |
| 73 offsetKeyframeB, | |
| 74 keyframeC, | |
| 75 ], offsetKeyframeBExpectations, 'with third offset unspecified'); | |
| 76 }, | |
| 77 'element.animate() with 3 keyframes and 2 offsets specified', | |
| 78 { | |
| 79 help: 'http://dev.w3.org/fxtf/web-animations/#keyframe-animation-effects', | |
| 80 assert: [ | |
| 81 'element.animate() should start an animation when three keyframes', | |
| 82 'are provided with matching properties and two offsets specified.', | |
| 83 'The keyframes must maintain their ordering and get distributed', | |
| 84 'correctly.', | |
| 85 ], | |
| 86 author: 'Alan Cutter', | |
| 87 }); | |
| 88 | |
| 89 test(function() { | |
| 90 assertAnimationStyles([ | |
| 91 offsetKeyframeA, | |
| 92 offsetKeyframeB, | |
| 93 offsetKeyframeC, | |
| 94 ], offsetKeyframeBExpectations, 'with ordered offsets'); | |
| 95 assert_throws({name: 'TypeError'}, function() { | |
| 96 assertAnimationStyles([ | |
| 97 offsetKeyframeA, | |
| 98 offsetKeyframeC, | |
| 99 offsetKeyframeB, | |
| 100 ], offsetKeyframeBExpectations, 'with unordered offsets (1)'); | |
| 101 }); | |
| 102 | |
| 103 assert_throws({name: 'TypeError'}, function() { | |
| 104 assertAnimationStyles([ | |
| 105 offsetKeyframeB, | |
| 106 offsetKeyframeA, | |
| 107 offsetKeyframeC, | |
| 108 ], offsetKeyframeBExpectations, 'with unordered offsets (2)'); | |
| 109 }); | |
| 110 | |
| 111 assert_throws({name: 'TypeError'}, function() { | |
| 112 assertAnimationStyles([ | |
| 113 offsetKeyframeB, | |
| 114 offsetKeyframeC, | |
| 115 offsetKeyframeA, | |
| 116 ], offsetKeyframeBExpectations, 'with unordered offsets (3)'); | |
| 117 }); | |
| 118 | |
| 119 assert_throws({name: 'TypeError'}, function() { | |
| 120 assertAnimationStyles([ | |
| 121 offsetKeyframeC, | |
| 122 offsetKeyframeA, | |
| 123 offsetKeyframeB, | |
| 124 ], offsetKeyframeBExpectations, 'with unordered offsets (4)'); | |
| 125 }); | |
| 126 | |
| 127 assert_throws({name: 'TypeError'}, function() { | |
| 128 assertAnimationStyles([ | |
| 129 offsetKeyframeC, | |
| 130 offsetKeyframeB, | |
| 131 offsetKeyframeA, | |
| 132 ], offsetKeyframeBExpectations, 'with unordered offsets (5)'); | |
| 133 }); | |
| 134 }, | |
| 135 'element.animate() with 3 keyframes and 3 offsets specified', | |
| 136 { | |
| 137 help: 'http://dev.w3.org/fxtf/web-animations/#keyframe-animation-effects', | |
| 138 assert: [ | |
| 139 'element.animate() should start an animation when three keyframes', | |
| 140 'are provided with matching properties and all offsets specified.', | |
| 141 'The keyframes must maintain their ordering and get distributed', | |
| 142 'correctly.', | |
| 143 ], | |
| 144 author: 'Alan Cutter', | |
| 145 }); | |
| 146 </script> | |
| OLD | NEW |