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

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

Issue 2621853002: CSS Transitions: Fix flaky interrupted-all-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 2
3 <html> 3 <html>
4 <head> 4 <head>
5 <meta charset="utf-8">
6 <script src="../resources/testharness.js"></script>
7 <script src="../resources/testharnessreport.js"></script>
5 <style> 8 <style>
6 #container { 9 #container {
7 position: relative; 10 position: relative;
8 width: 400px; 11 width: 400px;
9 height: 100px; 12 height: 100px;
10 border: 1px solid black; 13 border: 1px solid black;
11 } 14 }
12 #box { 15 #box {
13 position: absolute; 16 position: absolute;
14 left: 0px; 17 left: 0px;
15 height: 100px; 18 height: 100px;
16 width: 100px; 19 width: 100px;
17 background-color: blue; 20 background-color: blue;
18 transition-duration: 1s; 21 transition-duration: 1s;
19 transition-timing-function: linear; 22 transition-timing-function: linear;
20 } 23 }
21 </style> 24 </style>
22 <script>
23 if (window.testRunner) {
24 testRunner.dumpAsText();
25 testRunner.waitUntilDone();
26 }
27
28 function startTransition()
29 {
30 var box = document.getElementById('box');
31 box.style.left = '300px';
32 box.style.opacity = 0.5;
33 window.setTimeout(function() {
34 box.style.left = '0px';
35
36 window.setTimeout(function() {
37 var boxPos = parseInt(window.getComputedStyle(box).left);
38 document.getElementById('result').innerHTML = (boxPos < 200) ? "PASS" : "FAIL";
39 if (window.testRunner)
40 testRunner.notifyDone();
41 }, 250);
42 }, 500);
43 }
44 window.addEventListener('load', startTransition, false)
45 </script>
46 </head> 25 </head>
47 <body> 26 <body>
48 27
49 <p>Box should start moving left after left style is reset after 500ms</p>
50 <div id="container"> 28 <div id="container">
51 <div id="box"> 29 <div id="box">
52 </div> 30 </div>
53 </div> 31 </div>
54 <div id="result"> 32 <script>
55 </div> 33 'use strict';
34
35 function waitForProgress() {
alancutter (OOO until 2018) 2017/01/11 04:17:29 Please link to bug here as explanation.
Eric Willigers 2017/01/11 06:11:41 Done.
36 var initialLeft = getComputedStyle(box).left;
37 return new Promise(resolve => {
38 function poll() {
39 var currentLeft = getComputedStyle(box).left;
40 if (currentLeft === initialLeft) {
41 requestAnimationFrame(poll);
42 } else {
43 resolve();
44 }
45 }
46 requestAnimationFrame(poll);
47 });
48 }
49
50 async_test(t => {
51 box.offsetTop; // Force style recalc
52 box.style.left = '300px';
53 box.style.opacity = 0.5;
54 var previousLeft;
55 waitForProgress().then(() => {
56 previousLeft = getComputedStyle(box).left;
57 box.style.left = '0px';
58 }).then(waitForProgress).then(t.step_func_done(() => {
59 var currentLeft = getComputedStyle(box).left;
60 assert_less_than(parseFloat(currentLeft), parseFloat(previousLeft));
alancutter (OOO until 2018) 2017/01/10 08:42:42 We should see progress after a single raf.
Eric Willigers 2017/01/11 03:47:22 Ideally we would. See https://bugs.chromium.org/p/
61 }));
62 }, 'Box should start moving left after left style is reset');
63 </script>
56 </body> 64 </body>
57 </html> 65 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698