Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(86)

Side by Side Diff: third_party/WebKit/LayoutTests/transitions/cancel-transition.html

Issue 2615123002: CSS Transitions: fix flaky cancel-transition.html (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2
3 <html> 2 <html>
4 <head> 3 <head>
4 <meta charset="utf-8">
5 <script src="../resources/testharness.js"></script>
6 <script src="../resources/testharnessreport.js"></script>
5 <style> 7 <style>
6 #container { 8 #container {
7 width: 700px; 9 width: 700px;
8 background-color: #fcc; 10 background-color: #fcc;
9 } 11 }
10 12
11 #container div { 13 #container div {
12 position: relative; 14 position: relative;
13 background-color: #933; 15 background-color: #933;
14 width: 200px; 16 width: 200px;
15 height: 50px; 17 height: 50px;
16 left: 50px; 18 left: 50px;
17 margin-top: 10px; 19 margin-top: 10px;
18 } 20 }
19 #container.run #left { 21 #container.run #left {
20 left: 450px; 22 left: 450px;
21 transition-property: left; 23 transition-property: left;
22 transition-duration: 1s; 24 transition-duration: 4s;
23 transition-timing-function: linear; 25 transition-timing-function: linear;
24 } 26 }
25 #container.run #translate { 27 #container.run #translate {
26 transform: translate(400px, 0px); 28 transform: translate(400px, 0px);
27 transition-property: transform; 29 transition-property: transform;
28 transition-duration: 1s; 30 transition-duration: 4s;
31 transition-delay: -1s;
29 transition-timing-function: linear; 32 transition-timing-function: linear;
30 } 33 }
31 </style> 34 </style>
35 </head>
36 <body>
37 <p>
38 Test removes the transition properties while the transition is running, then adds them back in.
39 If working properly the transitions should start from the beginning. But there was a bug that
suzyh_UTC10 (ex-contributor) 2017/01/06 00:14:07 Reference bug number, if you can find it. Not sur
Eric Willigers 2017/01/06 01:39:01 Done.
40 would cause the transition to continue to run (although with no visible effect). So when you
41 restarted, it would pick up where it left off.
42 </p>
43 <div id="container">
44 <div id="left">left</div>
45 <div id="translate">translate</div>
46 </div>
32 <script> 47 <script>
33 if (window.testRunner) { 48 'use strict';
34 testRunner.dumpAsText(); 49 function wait() {
suzyh_UTC10 (ex-contributor) 2017/01/06 00:14:07 Please give this a more descriptive name than 'wai
Eric Willigers 2017/01/06 01:39:01 Done.
35 testRunner.waitUntilDone(); 50 return container.animate({visibility: ['visible', 'visible']}, 40).rea dy;
36 } 51 }
37 52
38 function isEqual(actual, desired, tolerance) 53 async_test(t => {
39 { 54 getComputedStyle(container).height; // force style recalc
40 var diff = Math.abs(actual - desired); 55 container.className = 'run';
41 return diff < tolerance; 56 getComputedStyle(container).height; // force transition start
suzyh_UTC10 (ex-contributor) 2017/01/06 00:14:07 Nit: Reword as "force style recalc - transition wi
Eric Willigers 2017/01/06 01:39:01 Done.
42 } 57 wait().then(() => {
43 58 container.className = '';
suzyh_UTC10 (ex-contributor) 2017/01/06 00:14:07 Perhaps before cancelling the transition here, we
Eric Willigers 2017/01/06 01:39:01 Done.
44 function cancelTransition() 59 getComputedStyle(container).height; // force transition cancel
45 { 60 }).then(wait).then(t.step_func_done(() => {
46 document.getElementById("container").className = ""; 61 container.className = 'run'; // restart transition
47 document.body.offsetHeight; 62 assert_equals(getComputedStyle(left).left, '50px');
48 } 63 assert_equals(getComputedStyle(translate).transform, 'matrix(1, 0, 0, 1, 100, 0)');
49 64 }));
50 function restartTransition() 65 }, 'Transition restarts from the beginning');
51 {
52 document.getElementById("container").className = "run";
53 document.body.offsetHeight;
54 // The transition should restart at the beginning here. After 250 it should be halfway done.
55 setTimeout(check, 500);
56 }
57
58 function check()
59 {
60 var left = parseFloat(window.getComputedStyle(document.getElementByI d('left')).left);
61 result = "left: ";
62 if (!isEqual(left, 250, 50))
63 result += "<span style='color:red'>FAIL (was: " + left + ", expe cted: 250)</span>";
64 else
65 result += "<span style='color:green'>PASS</span>";
66
67 result += ", transform: ";
68
69 var transform = window.getComputedStyle(document.getElementById('tra nslate')).transform;
70 transform = transform.split("(");
71 transform = transform[1].split(",");
72 if (!isEqual(transform[4], 200, 50))
73 result += "<span style='color:red'>FAIL (was: " + transform[4] + ", expected: 200)</span>";
74 else
75 result += "<span style='color:green'>PASS</span>";
76
77 document.getElementById('result').innerHTML = result;
78 if (window.testRunner)
79 testRunner.notifyDone();
80 }
81
82 function start()
83 {
84 document.getElementById("container").className = "run";
85 document.body.offsetHeight;
86 setTimeout("cancelTransition()", 200);
87 setTimeout("restartTransition()", 400);
88 }
89 </script> 66 </script>
90 </head>
91 <body onload="start()">
92 <p>
93 Test removes the transition properties while the transition is running, then adds them back in.
94 If working properly the transitions should start from the beginning. But the re was a bug that
95 would cause the transition to continue to run (although with no visible effe ct). So when you
96 restarted, it would pick up where it left off.
97 </p>
98 <div id="container">
99 <div id="left">left</div>
100 <div id="translate">translate</div>
101 </div>
102 <div id="result"></div>
103 </body> 67 </body>
104 </html> 68 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698