[Web Animations] Turn Web Animations with CSS integration on for test runners
[WebKit-https.git] / LayoutTests / animations / change-keyframes.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
3 <html lang="en">
4 <head>
5   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6   <title>Test Changing Keyframes Using CSSOM</title>
7   <style type="text/css" media="screen">
8     #box {
9         position: relative;
10         left: 0;
11         top: 0;
12         height: 100px;
13         width: 100px;
14         background-color: blue;
15         -webkit-animation-duration: 1s;
16         -webkit-animation-timing-function: linear;
17         -webkit-animation-name: "anim";
18     }
19     @-webkit-keyframes "anim" {
20         from { left: 100px; }
21         10%  { left: 200px; }
22         90%  { left: 200px; }
23         to   { left: 300px; }
24     }
25     </style>
26     <script src="resources/animation-test-helpers.js" type="text/javascript" charset="utf-8"></script>
27     <script type="text/javascript" charset="utf-8">
28     
29     const expectedValues = [
30       // [animation-name, time, element-id, property, expected-value, tolerance]
31       [null, 0.5, "box", "left", 200, 10],
32       [null, 1, "box", "top", 100, 10],
33     ];
34
35     function findKeyframesRule(rule)
36     {
37         var ss = document.styleSheets;
38         for (var i = 0; i < ss.length; ++i) {
39             for (var j = 0; j < ss[i].cssRules.length; ++j) {
40                 if (ss[i].cssRules[j].type == window.CSSRule.WEBKIT_KEYFRAMES_RULE && ss[i].cssRules[j].name == rule)
41                     return ss[i].cssRules[j];
42             }
43         }
44         
45         return null;
46     }
47         
48     function change()
49     {
50         // change keyframes
51         var keyframes = findKeyframesRule("anim");
52         keyframes.deleteRule("0%");
53         keyframes.deleteRule("40%");
54         keyframes.deleteRule("60%");
55         keyframes.deleteRule("100%");
56         keyframes.insertRule("0% { top: 50px; }");
57         keyframes.appendRule("10% { top: 100px; }");
58         keyframes.insertRule("90% { top: 100px; }");
59         keyframes.appendRule("100% { top: 150px; }");
60         document.getElementById('box').style.webkitAnimationName = "anim";
61     }
62     
63     function startChange()
64     {
65         document.getElementById('box').style.webkitAnimationName = "none";
66         setTimeout("change()", 0);
67     }
68     
69     function setup()
70     {
71         setTimeout("startChange()", 600);
72     }
73     
74     runAnimationTest(expectedValues, setup);
75     
76   </script>
77 </head>
78 <body>
79 This test performs an animation of the left property and makes sure it is animating. Then it stops
80 the animation, changes the keyframes to an animation of the top property, restarts the animation
81 and makes sure top is animating.
82 <div id="box">
83 </div>
84 <div id="result">
85 </div>
86 </body>
87 </html>