Changeset 244800 in webkit
- Timestamp:
- Apr 30, 2019 1:20:37 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 46 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r244797 r244800 192 192 * fast/events/touch/ios/double-tap-for-double-click2-expected.txt: Added. 193 193 * fast/events/touch/ios/double-tap-for-double-click2.html: Added. 194 195 2019-04-30 Simon Fraser <simon.fraser@apple.com> 196 197 Transform is sometimes left in a bad state after an animation 198 https://bugs.webkit.org/show_bug.cgi?id=197401 199 rdar://problem/48179186 200 201 Reviewed by Dean Jackson. 202 203 Share code between all the overlap tests that work by creating dot matrices, and strip 204 out the transforms from the layer tree dumps, because they can vary with timing in these 205 tests. 206 207 * compositing/animation/transform-after-animation-expected.html: Added. 208 * compositing/animation/transform-after-animation.html: Added. 209 * compositing/backing/backing-store-attachment-empty-keyframe-expected.txt: 210 * compositing/layer-creation/animation-overlap-with-children.html: 211 * compositing/layer-creation/mismatched-rotated-transform-animation-overlap-expected.txt: 212 * compositing/layer-creation/mismatched-rotated-transform-animation-overlap.html: 213 * compositing/layer-creation/mismatched-rotated-transform-transition-overlap.html: 214 * compositing/layer-creation/mismatched-transform-transition-overlap.html: 215 * compositing/layer-creation/multiple-keyframes-animation-overlap-expected.txt: 216 * compositing/layer-creation/multiple-keyframes-animation-overlap.html: 217 * compositing/layer-creation/resources/compositing-overlap-utils.js: Added. 218 (makeDots): 219 (layerTreeWithoutTransforms): 220 (dumpLayers): 221 * compositing/layer-creation/scale-rotation-animation-overlap-expected.txt: 222 * compositing/layer-creation/scale-rotation-animation-overlap.html: 223 * compositing/layer-creation/scale-rotation-transition-overlap.html: 224 * compositing/layer-creation/translate-animation-overlap-expected.txt: 225 * compositing/layer-creation/translate-animation-overlap.html: 226 * compositing/layer-creation/translate-scale-animation-overlap-expected.txt: 227 * compositing/layer-creation/translate-scale-animation-overlap.html: 228 * compositing/layer-creation/translate-scale-transition-overlap.html: 229 * compositing/layer-creation/translate-transition-overlap.html: 230 * legacy-animation-engine/compositing/backing/backing-store-attachment-empty-keyframe-expected.txt: 231 * legacy-animation-engine/compositing/backing/backing-store-attachment-empty-keyframe.html: 232 * legacy-animation-engine/compositing/backing/transform-transition-from-outside-view-expected.txt: 233 * legacy-animation-engine/compositing/layer-creation/animation-overlap-with-children.html: 234 * legacy-animation-engine/compositing/layer-creation/mismatched-rotated-transform-animation-overlap-expected.txt: 235 * legacy-animation-engine/compositing/layer-creation/mismatched-rotated-transform-animation-overlap.html: 236 * legacy-animation-engine/compositing/layer-creation/mismatched-rotated-transform-transition-overlap-expected.txt: 237 * legacy-animation-engine/compositing/layer-creation/mismatched-rotated-transform-transition-overlap.html: 238 * legacy-animation-engine/compositing/layer-creation/mismatched-transform-transition-overlap-expected.txt: 239 * legacy-animation-engine/compositing/layer-creation/mismatched-transform-transition-overlap.html: 240 * legacy-animation-engine/compositing/layer-creation/multiple-keyframes-animation-overlap-expected.txt: 241 * legacy-animation-engine/compositing/layer-creation/multiple-keyframes-animation-overlap.html: 242 * legacy-animation-engine/compositing/layer-creation/scale-rotation-animation-overlap-expected.txt: 243 * legacy-animation-engine/compositing/layer-creation/scale-rotation-animation-overlap.html: 244 * legacy-animation-engine/compositing/layer-creation/scale-rotation-transition-overlap-expected.txt: 245 * legacy-animation-engine/compositing/layer-creation/scale-rotation-transition-overlap.html: 246 * legacy-animation-engine/compositing/layer-creation/translate-animation-overlap-expected.txt: 247 * legacy-animation-engine/compositing/layer-creation/translate-animation-overlap.html: 248 * legacy-animation-engine/compositing/layer-creation/translate-scale-animation-overlap-expected.txt: 249 * legacy-animation-engine/compositing/layer-creation/translate-scale-animation-overlap.html: 250 * legacy-animation-engine/compositing/layer-creation/translate-scale-transition-overlap-expected.txt: 251 * legacy-animation-engine/compositing/layer-creation/translate-scale-transition-overlap.html: 252 * legacy-animation-engine/compositing/layer-creation/translate-transition-overlap-expected.txt: 253 * legacy-animation-engine/compositing/layer-creation/translate-transition-overlap.html: 254 * platform/ios/compositing/layer-creation/scale-rotation-animation-overlap-expected.txt: 194 255 195 256 2019-04-29 Javier Fernandez <jfernandez@igalia.com> -
trunk/LayoutTests/compositing/backing/backing-store-attachment-empty-keyframe-expected.txt
r239222 r244800 21 21 (drawsContent 1) 22 22 (backingStoreAttached 1) 23 (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [-520.00 0.00 0.00 1.00]) 23 24 ) 24 25 ) -
trunk/LayoutTests/compositing/layer-creation/animation-overlap-with-children.html
r236541 r244800 53 53 } 54 54 </style> 55 <script src="resources/compositing-overlap-utils.js"></script> 55 56 <script> 56 57 if (window.testRunner) { … … 62 63 { 63 64 var box = document.getElementById('to-animate'); 64 box.addEventListener('webkitAnimationStart', animationStarted, false);65 box.addEventListener('webkitAnimationStart', dumpLayers, false); 65 66 box.classList.add('animating'); 66 67 } 67 68 68 function animationStarted()69 {70 if (window.testRunner) {71 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document);72 testRunner.notifyDone();73 }74 }75 69 window.addEventListener('load', runTest, false); 76 70 </script> -
trunk/LayoutTests/compositing/layer-creation/mismatched-rotated-transform-animation-overlap-expected.txt
r225897 r244800 13 13 (bounds 148.00 128.00) 14 14 (drawsContent 1) 15 (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [10.00 0.00 0.00 1.00])16 15 ) 17 16 (GraphicsLayer -
trunk/LayoutTests/compositing/layer-creation/mismatched-rotated-transform-animation-overlap.html
r236541 r244800 38 38 } 39 39 </style> 40 <script src="resources/compositing-overlap-utils.js"></script> 40 41 <script> 41 42 if (window.testRunner) { … … 44 45 } 45 46 46 function dumpLayers()47 function runTest() 47 48 { 48 if (window.testRunner) { 49 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 50 testRunner.notifyDone(); 51 } 52 } 53 54 function makeDots() 55 { 56 const width = 30; 57 const height = 30; 58 59 const spacing = 10; 60 61 for (var row = 0; row < height; ++row) { 62 for (var col = 0; col < width; ++col) { 63 var dot = document.createElement('div'); 64 dot.className = 'dot'; 65 dot.style.left = spacing * col + 'px'; 66 dot.style.top = spacing * row + 'px'; 67 document.body.appendChild(dot); 68 } 69 } 49 makeDots(30, 30); 70 50 71 51 window.setTimeout(function() { … … 75 55 } 76 56 77 window.addEventListener('load', makeDots, false);57 window.addEventListener('load', runTest, false); 78 58 </script> 79 59 </head> -
trunk/LayoutTests/compositing/layer-creation/mismatched-rotated-transform-transition-overlap.html
r236541 r244800 29 29 } 30 30 </style> 31 <script src="resources/compositing-overlap-utils.js"></script> 31 32 <script> 32 33 if (window.testRunner) { … … 35 36 } 36 37 37 function dumpLayers()38 function runTest() 38 39 { 39 if (window.testRunner) { 40 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 41 testRunner.notifyDone(); 42 } 43 } 44 45 function makeDots() 46 { 47 const width = 30; 48 const height = 30; 49 50 const spacing = 10; 51 52 for (var row = 0; row < height; ++row) { 53 for (var col = 0; col < width; ++col) { 54 var dot = document.createElement('div'); 55 dot.className = 'dot'; 56 dot.style.left = spacing * col + 'px'; 57 dot.style.top = spacing * row + 'px'; 58 document.body.appendChild(dot); 59 } 60 } 40 makeDots(30, 30); 61 41 62 42 window.setTimeout(function() { … … 66 46 } 67 47 68 window.addEventListener('load', makeDots, false);48 window.addEventListener('load', runTest, false); 69 49 </script> 70 50 </head> -
trunk/LayoutTests/compositing/layer-creation/mismatched-transform-transition-overlap.html
r236541 r244800 29 29 } 30 30 </style> 31 <script src="resources/compositing-overlap-utils.js"></script> 31 32 <script> 32 33 if (window.testRunner) { … … 35 36 } 36 37 37 function dumpLayers()38 function runTest() 38 39 { 39 if (window.testRunner) { 40 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 41 testRunner.notifyDone(); 42 } 43 } 44 45 function makeDots() 46 { 47 const width = 30; 48 const height = 30; 49 50 const spacing = 10; 51 52 for (var row = 0; row < height; ++row) { 53 for (var col = 0; col < width; ++col) { 54 var dot = document.createElement('div'); 55 dot.className = 'dot'; 56 dot.style.left = spacing * col + 'px'; 57 dot.style.top = spacing * row + 'px'; 58 document.body.appendChild(dot); 59 } 60 } 40 makeDots(30, 30); 61 41 62 42 window.setTimeout(function() { … … 66 46 } 67 47 68 window.addEventListener('load', makeDots, false);48 window.addEventListener('load', runTest, false); 69 49 </script> 70 50 </head> -
trunk/LayoutTests/compositing/layer-creation/multiple-keyframes-animation-overlap-expected.txt
r225897 r244800 13 13 (bounds 228.00 128.00) 14 14 (drawsContent 1) 15 (transform [1.00 -0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [10.00 0.00 0.00 1.00])16 15 ) 17 16 (GraphicsLayer -
trunk/LayoutTests/compositing/layer-creation/multiple-keyframes-animation-overlap.html
r236541 r244800 46 46 } 47 47 </style> 48 <script src="resources/compositing-overlap-utils.js"></script> 48 49 <script> 49 50 if (window.testRunner) { … … 52 53 } 53 54 54 function dumpLayers()55 function runTest() 55 56 { 56 if (window.testRunner) { 57 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 58 testRunner.notifyDone(); 59 } 60 } 61 62 function makeDots() 63 { 64 const width = 50; 65 const height = 23; 66 67 const spacing = 10; 68 69 for (var row = 0; row < height; ++row) { 70 for (var col = 0; col < width; ++col) { 71 var dot = document.createElement('div'); 72 dot.className = 'dot'; 73 dot.style.left = spacing * col + 'px'; 74 dot.style.top = spacing * row + 'px'; 75 document.body.appendChild(dot); 76 } 77 } 57 makeDots(50, 23); 78 58 79 59 window.setTimeout(function() { … … 83 63 } 84 64 85 window.addEventListener('load', makeDots, false);65 window.addEventListener('load', runTest, false); 86 66 </script> 87 67 </head> -
trunk/LayoutTests/compositing/layer-creation/scale-rotation-animation-overlap-expected.txt
r225897 r244800 13 13 (bounds 148.00 128.00) 14 14 (drawsContent 1) 15 (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [10.00 0.00 0.00 1.00])16 15 ) 17 16 (GraphicsLayer -
trunk/LayoutTests/compositing/layer-creation/scale-rotation-animation-overlap.html
r236541 r244800 46 46 } 47 47 </style> 48 <script src="resources/compositing-overlap-utils.js"></script> 48 49 <script> 49 50 if (window.testRunner) { … … 52 53 } 53 54 54 function dumpLayers()55 function runTest() 55 56 { 56 if (window.testRunner) { 57 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 58 testRunner.notifyDone(); 59 } 60 } 61 62 function makeDots() 63 { 64 const width = 60; 65 const height = 60; 66 67 const spacing = 10; 68 69 for (var row = 0; row < height; ++row) { 70 for (var col = 0; col < width; ++col) { 71 var dot = document.createElement('div'); 72 dot.className = 'dot'; 73 dot.style.left = spacing * col + 'px'; 74 dot.style.top = spacing * row + 'px'; 75 document.body.appendChild(dot); 76 } 77 } 57 makeDots(60, 60); 78 58 79 59 window.setTimeout(function() { … … 83 63 } 84 64 85 window.addEventListener('load', makeDots, false);65 window.addEventListener('load', runTest, false); 86 66 </script> 87 67 </head> -
trunk/LayoutTests/compositing/layer-creation/scale-rotation-transition-overlap.html
r236541 r244800 28 28 } 29 29 </style> 30 <script src="resources/compositing-overlap-utils.js"></script> 30 31 <script> 31 32 if (window.testRunner) { … … 42 43 } 43 44 44 function makeDots()45 function runTest() 45 46 { 46 const width = 42; 47 const height = 42; 48 49 const spacing = 10; 50 51 for (var row = 0; row < height; ++row) { 52 for (var col = 0; col < width; ++col) { 53 var dot = document.createElement('div'); 54 dot.className = 'dot'; 55 dot.style.left = spacing * col + 'px'; 56 dot.style.top = spacing * row + 'px'; 57 document.body.appendChild(dot); 58 } 59 } 47 makeDots(42, 42); 60 48 61 49 window.setTimeout(function() { … … 65 53 } 66 54 67 window.addEventListener('load', makeDots, false);55 window.addEventListener('load', runTest, false); 68 56 </script> 69 57 </head> -
trunk/LayoutTests/compositing/layer-creation/translate-animation-overlap-expected.txt
r225897 r244800 12 12 (bounds 228.00 128.00) 13 13 (drawsContent 1) 14 (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [10.00 0.00 0.00 1.00])15 14 ) 16 15 (GraphicsLayer -
trunk/LayoutTests/compositing/layer-creation/translate-animation-overlap.html
r236541 r244800 35 35 } 36 36 </style> 37 <script src="resources/compositing-overlap-utils.js"></script> 37 38 <script> 38 39 if (window.testRunner) { … … 41 42 } 42 43 43 function dumpLayers()44 function runTest() 44 45 { 45 if (window.testRunner) { 46 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 47 testRunner.notifyDone(); 48 } 49 } 50 51 function makeDots() 52 { 53 const width = 40; 54 const height = 20; 55 56 const spacing = 10; 57 58 for (var row = 0; row < height; ++row) { 59 for (var col = 0; col < width; ++col) { 60 var dot = document.createElement('div'); 61 dot.className = 'dot'; 62 dot.style.left = spacing * col + 'px'; 63 dot.style.top = spacing * row + 'px'; 64 document.body.appendChild(dot); 65 } 66 } 46 makeDots(40, 20); 67 47 68 48 window.setTimeout(function() { … … 72 52 } 73 53 74 window.addEventListener('load', makeDots, false);54 window.addEventListener('load', runTest, false); 75 55 </script> 76 56 </head> -
trunk/LayoutTests/compositing/layer-creation/translate-scale-animation-overlap-expected.txt
r225897 r244800 13 13 (bounds 228.00 128.00) 14 14 (drawsContent 1) 15 (transform [1.00 -0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [10.00 0.00 0.00 1.00])16 15 ) 17 16 (GraphicsLayer -
trunk/LayoutTests/compositing/layer-creation/translate-scale-animation-overlap.html
r236541 r244800 37 37 } 38 38 </style> 39 <script src="resources/compositing-overlap-utils.js"></script> 39 40 <script> 40 41 if (window.testRunner) { … … 43 44 } 44 45 45 function dumpLayers()46 function runTest() 46 47 { 47 if (window.testRunner) { 48 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 49 testRunner.notifyDone(); 50 } 51 } 52 53 function makeDots() 54 { 55 const width = 50; 56 const height = 23; 57 58 const spacing = 10; 59 60 for (var row = 0; row < height; ++row) { 61 for (var col = 0; col < width; ++col) { 62 var dot = document.createElement('div'); 63 dot.className = 'dot'; 64 dot.style.left = spacing * col + 'px'; 65 dot.style.top = spacing * row + 'px'; 66 document.body.appendChild(dot); 67 } 68 } 48 makeDots(50, 23); 69 49 70 50 window.setTimeout(function() { … … 74 54 } 75 55 76 window.addEventListener('load', makeDots, false);56 window.addEventListener('load', runTest, false); 77 57 </script> 78 58 </head> -
trunk/LayoutTests/compositing/layer-creation/translate-scale-transition-overlap.html
r236541 r244800 28 28 } 29 29 </style> 30 <script src="resources/compositing-overlap-utils.js"></script> 30 31 <script> 31 32 if (window.testRunner) { … … 42 43 } 43 44 44 function makeDots()45 function runTest() 45 46 { 46 const width = 50; 47 const height = 23; 48 49 const spacing = 10; 50 51 for (var row = 0; row < height; ++row) { 52 for (var col = 0; col < width; ++col) { 53 var dot = document.createElement('div'); 54 dot.className = 'dot'; 55 dot.style.left = spacing * col + 'px'; 56 dot.style.top = spacing * row + 'px'; 57 document.body.appendChild(dot); 58 } 59 } 47 makeDots(50, 23); 60 48 61 49 window.setTimeout(function() { … … 65 53 } 66 54 67 window.addEventListener('load', makeDots, false);55 window.addEventListener('load', runTest, false); 68 56 </script> 69 57 </head> -
trunk/LayoutTests/compositing/layer-creation/translate-transition-overlap.html
r236541 r244800 28 28 } 29 29 </style> 30 <script src="resources/compositing-overlap-utils.js"></script> 30 31 <script> 31 32 if (window.testRunner) { … … 34 35 } 35 36 36 function dumpLayers()37 function runTest() 37 38 { 38 if (window.testRunner) { 39 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 40 testRunner.notifyDone(); 41 } 42 } 43 44 function makeDots() 45 { 46 const width = 40; 47 const height = 20; 48 49 const spacing = 10; 50 51 for (var row = 0; row < height; ++row) { 52 for (var col = 0; col < width; ++col) { 53 var dot = document.createElement('div'); 54 dot.className = 'dot'; 55 dot.style.left = spacing * col + 'px'; 56 dot.style.top = spacing * row + 'px'; 57 document.body.appendChild(dot); 58 } 59 } 39 makeDots(40, 20); 60 40 61 41 window.setTimeout(function() { … … 65 45 } 66 46 67 window.addEventListener('load', makeDots, false);47 window.addEventListener('load', runTest, false); 68 48 </script> 69 49 </head> -
trunk/LayoutTests/legacy-animation-engine/compositing/backing/backing-store-attachment-empty-keyframe-expected.txt
r239222 r244800 21 21 (drawsContent 1) 22 22 (backingStoreAttached 1) 23 (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [-520.00 0.00 0.00 1.00])24 23 ) 25 24 ) -
trunk/LayoutTests/legacy-animation-engine/compositing/backing/backing-store-attachment-empty-keyframe.html
r239222 r244800 35 35 testRunner.waitUntilDone(); 36 36 } 37 38 function layerTreeWithoutTransforms() 39 { 40 var layerTreeText = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_BACKING_STORE_ATTACHED); 41 var filteredLines = layerTreeText.split("\n").filter(line => line.indexOf('transform') == -1); 42 return filteredLines.join('\n'); 43 } 37 44 38 45 function dumpLayerTree() … … 41 48 return; 42 49 43 var out = document.getElementById('out'); 44 out.innerText = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_BACKING_STORE_ATTACHED); 50 document.getElementById('out').textContent = layerTreeWithoutTransforms(); 45 51 } 46 52 -
trunk/LayoutTests/legacy-animation-engine/compositing/backing/transform-transition-from-outside-view-expected.txt
r230471 r244800 15 15 (drawsContent 1) 16 16 (backingStoreAttached 1) 17 (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [-400.00 0.00 0.00 1.00]) 17 18 (children 1 18 19 (GraphicsLayer -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/animation-overlap-with-children.html
r235960 r244800 53 53 } 54 54 </style> 55 <script src="../../../compositing/layer-creation/resources/compositing-overlap-utils.js"></script> 55 56 <script> 56 57 if (window.testRunner) { … … 62 63 { 63 64 var box = document.getElementById('to-animate'); 64 box.addEventListener('webkitAnimationStart', animationStarted, false);65 box.addEventListener('webkitAnimationStart', dumpLayers, false); 65 66 box.classList.add('animating'); 66 67 } 67 68 function animationStarted() 69 { 70 if (window.testRunner) { 71 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 72 testRunner.notifyDone(); 73 } 74 } 68 75 69 window.addEventListener('load', runTest, false); 76 70 </script> -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/mismatched-rotated-transform-animation-overlap-expected.txt
r230471 r244800 13 13 (bounds 148.00 128.00) 14 14 (drawsContent 1) 15 (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [10.00 0.00 0.00 1.00])16 15 ) 17 16 (GraphicsLayer -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/mismatched-rotated-transform-animation-overlap.html
r235960 r244800 38 38 } 39 39 </style> 40 <script src="../../../compositing/layer-creation/resources/compositing-overlap-utils.js"></script> 40 41 <script> 41 42 if (window.testRunner) { … … 44 45 } 45 46 46 function dumpLayers()47 function runTest() 47 48 { 48 if (window.testRunner) { 49 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 50 testRunner.notifyDone(); 51 } 52 } 53 54 function makeDots() 55 { 56 const width = 30; 57 const height = 30; 58 59 const spacing = 10; 60 61 for (var row = 0; row < height; ++row) { 62 for (var col = 0; col < width; ++col) { 63 var dot = document.createElement('div'); 64 dot.className = 'dot'; 65 dot.style.left = spacing * col + 'px'; 66 dot.style.top = spacing * row + 'px'; 67 document.body.appendChild(dot); 68 } 69 } 49 makeDots(30, 30); 70 50 71 51 window.setTimeout(function() { … … 75 55 } 76 56 77 window.addEventListener('load', makeDots, false);57 window.addEventListener('load', runTest, false); 78 58 </script> 79 59 </head> -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/mismatched-rotated-transform-transition-overlap-expected.txt
r230471 r244800 13 13 (bounds 148.00 128.00) 14 14 (drawsContent 1) 15 (transform [1.30 0.02 0.00 0.00] [-0.02 1.30 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 0.00 1.00])16 15 ) 17 16 (GraphicsLayer -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/mismatched-rotated-transform-transition-overlap.html
r235960 r244800 29 29 } 30 30 </style> 31 <script src="../../../compositing/layer-creation/resources/compositing-overlap-utils.js"></script> 31 32 <script> 32 33 if (window.testRunner) { … … 35 36 } 36 37 37 function dumpLayers()38 function runTest() 38 39 { 39 if (window.testRunner) { 40 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 41 testRunner.notifyDone(); 42 } 43 } 44 45 function makeDots() 46 { 47 const width = 30; 48 const height = 30; 49 50 const spacing = 10; 51 52 for (var row = 0; row < height; ++row) { 53 for (var col = 0; col < width; ++col) { 54 var dot = document.createElement('div'); 55 dot.className = 'dot'; 56 dot.style.left = spacing * col + 'px'; 57 dot.style.top = spacing * row + 'px'; 58 document.body.appendChild(dot); 59 } 60 } 40 makeDots(30, 30); 61 41 62 42 window.setTimeout(function() { … … 65 45 }, 0); 66 46 } 67 68 window.addEventListener('load', makeDots, false);47 48 window.addEventListener('load', runTest, false); 69 49 </script> 70 50 </head> -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/mismatched-transform-transition-overlap-expected.txt
r230471 r244800 13 13 (bounds 148.00 128.00) 14 14 (drawsContent 1) 15 (transform [1.30 0.00 0.00 0.00] [0.00 1.30 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 0.00 1.00])16 15 ) 17 16 (GraphicsLayer -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/mismatched-transform-transition-overlap.html
r235960 r244800 29 29 } 30 30 </style> 31 <script src="../../../compositing/layer-creation/resources/compositing-overlap-utils.js"></script> 31 32 <script> 32 33 if (window.testRunner) { … … 35 36 } 36 37 37 function dumpLayers()38 function runTest() 38 39 { 39 if (window.testRunner) { 40 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 41 testRunner.notifyDone(); 42 } 43 } 44 45 function makeDots() 46 { 47 const width = 30; 48 const height = 30; 49 50 const spacing = 10; 51 52 for (var row = 0; row < height; ++row) { 53 for (var col = 0; col < width; ++col) { 54 var dot = document.createElement('div'); 55 dot.className = 'dot'; 56 dot.style.left = spacing * col + 'px'; 57 dot.style.top = spacing * row + 'px'; 58 document.body.appendChild(dot); 59 } 60 } 40 makeDots(30, 30); 61 41 62 42 window.setTimeout(function() { … … 66 46 } 67 47 68 window.addEventListener('load', makeDots, false);48 window.addEventListener('load', runTest, false); 69 49 </script> 70 50 </head> -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/multiple-keyframes-animation-overlap-expected.txt
r230471 r244800 13 13 (bounds 228.00 128.00) 14 14 (drawsContent 1) 15 (transform [1.00 -0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [10.00 0.00 0.00 1.00])16 15 ) 17 16 (GraphicsLayer -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/multiple-keyframes-animation-overlap.html
r235960 r244800 46 46 } 47 47 </style> 48 <script src="../../../compositing/layer-creation/resources/compositing-overlap-utils.js"></script> 48 49 <script> 49 50 if (window.testRunner) { … … 52 53 } 53 54 54 function dumpLayers()55 function runTest() 55 56 { 56 if (window.testRunner) { 57 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 58 testRunner.notifyDone(); 59 } 60 } 57 makeDots(50, 23); 61 58 62 function makeDots()63 {64 const width = 50;65 const height = 23;66 67 const spacing = 10;68 69 for (var row = 0; row < height; ++row) {70 for (var col = 0; col < width; ++col) {71 var dot = document.createElement('div');72 dot.className = 'dot';73 dot.style.left = spacing * col + 'px';74 dot.style.top = spacing * row + 'px';75 document.body.appendChild(dot);76 }77 }78 79 59 window.setTimeout(function() { 80 60 document.getElementById('target').addEventListener('animationstart', dumpLayers, false); … … 83 63 } 84 64 85 window.addEventListener('load', makeDots, false);65 window.addEventListener('load', runTest, false); 86 66 </script> 87 67 </head> -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/scale-rotation-animation-overlap-expected.txt
r230471 r244800 13 13 (bounds 148.00 128.00) 14 14 (drawsContent 1) 15 (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [10.00 0.00 0.00 1.00])16 15 ) 17 16 (GraphicsLayer -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/scale-rotation-animation-overlap.html
r235960 r244800 46 46 } 47 47 </style> 48 <script src="../../../compositing/layer-creation/resources/compositing-overlap-utils.js"></script> 48 49 <script> 49 50 if (window.testRunner) { … … 52 53 } 53 54 54 function dumpLayers()55 function runTest() 55 56 { 56 if (window.testRunner) { 57 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 58 testRunner.notifyDone(); 59 } 60 } 61 62 function makeDots() 63 { 64 const width = 60; 65 const height = 60; 66 67 const spacing = 10; 68 69 for (var row = 0; row < height; ++row) { 70 for (var col = 0; col < width; ++col) { 71 var dot = document.createElement('div'); 72 dot.className = 'dot'; 73 dot.style.left = spacing * col + 'px'; 74 dot.style.top = spacing * row + 'px'; 75 document.body.appendChild(dot); 76 } 77 } 57 makeDots(60, 60); 78 58 79 59 window.setTimeout(function() { … … 83 63 } 84 64 85 window.addEventListener('load', makeDots, false);65 window.addEventListener('load', runTest, false); 86 66 </script> 87 67 </head> -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/scale-rotation-transition-overlap-expected.txt
r230471 r244800 13 13 (bounds 148.00 128.00) 14 14 (drawsContent 1) 15 (transform [0.92 0.92 0.00 0.00] [-0.92 0.92 0.00 0.00] [0.00 0.00 1.00 0.00] [0.00 0.00 0.00 1.00])16 15 ) 17 16 (GraphicsLayer -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/scale-rotation-transition-overlap.html
r235960 r244800 28 28 } 29 29 </style> 30 <script src="../../../compositing/layer-creation/resources/compositing-overlap-utils.js"></script> 30 31 <script> 31 32 if (window.testRunner) { … … 34 35 } 35 36 36 function dumpLayers()37 function runTest() 37 38 { 38 if (window.testRunner) { 39 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 40 testRunner.notifyDone(); 41 } 42 } 43 44 function makeDots() 45 { 46 const width = 42; 47 const height = 42; 48 49 const spacing = 10; 50 51 for (var row = 0; row < height; ++row) { 52 for (var col = 0; col < width; ++col) { 53 var dot = document.createElement('div'); 54 dot.className = 'dot'; 55 dot.style.left = spacing * col + 'px'; 56 dot.style.top = spacing * row + 'px'; 57 document.body.appendChild(dot); 58 } 59 } 39 makeDots(42, 42); 60 40 61 41 window.setTimeout(function() { … … 65 45 } 66 46 67 window.addEventListener('load', makeDots, false);47 window.addEventListener('load', runTest, false); 68 48 </script> 69 49 </head> -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/translate-animation-overlap-expected.txt
r230471 r244800 12 12 (bounds 228.00 128.00) 13 13 (drawsContent 1) 14 (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [10.00 0.00 0.00 1.00])15 14 ) 16 15 (GraphicsLayer -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/translate-animation-overlap.html
r235960 r244800 35 35 } 36 36 </style> 37 <script src="../../../compositing/layer-creation/resources/compositing-overlap-utils.js"></script> 37 38 <script> 38 39 if (window.testRunner) { … … 41 42 } 42 43 43 function dumpLayers()44 function runTest() 44 45 { 45 if (window.testRunner) { 46 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 47 testRunner.notifyDone(); 48 } 49 } 46 makeDots(40, 20); 50 47 51 function makeDots()52 {53 const width = 40;54 const height = 20;55 56 const spacing = 10;57 58 for (var row = 0; row < height; ++row) {59 for (var col = 0; col < width; ++col) {60 var dot = document.createElement('div');61 dot.className = 'dot';62 dot.style.left = spacing * col + 'px';63 dot.style.top = spacing * row + 'px';64 document.body.appendChild(dot);65 }66 }67 68 48 window.setTimeout(function() { 69 49 document.getElementById('target').addEventListener('animationstart', dumpLayers, false); … … 72 52 } 73 53 74 window.addEventListener('load', makeDots, false);54 window.addEventListener('load', runTest, false); 75 55 </script> 76 56 </head> -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/translate-scale-animation-overlap-expected.txt
r230471 r244800 13 13 (bounds 228.00 128.00) 14 14 (drawsContent 1) 15 (transform [1.00 -0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [10.00 0.00 0.00 1.00])16 15 ) 17 16 (GraphicsLayer -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/translate-scale-animation-overlap.html
r235960 r244800 37 37 } 38 38 </style> 39 <script src="../../../compositing/layer-creation/resources/compositing-overlap-utils.js"></script> 39 40 <script> 40 41 if (window.testRunner) { … … 43 44 } 44 45 45 function dumpLayers()46 function runTest() 46 47 { 47 if (window.testRunner) { 48 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 49 testRunner.notifyDone(); 50 } 51 } 52 53 function makeDots() 54 { 55 const width = 50; 56 const height = 23; 57 58 const spacing = 10; 59 60 for (var row = 0; row < height; ++row) { 61 for (var col = 0; col < width; ++col) { 62 var dot = document.createElement('div'); 63 dot.className = 'dot'; 64 dot.style.left = spacing * col + 'px'; 65 dot.style.top = spacing * row + 'px'; 66 document.body.appendChild(dot); 67 } 68 } 48 makeDots(50, 23); 69 49 70 50 window.setTimeout(function() { … … 74 54 } 75 55 76 window.addEventListener('load', makeDots, false);56 window.addEventListener('load', runTest, false); 77 57 </script> 78 58 </head> -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/translate-scale-transition-overlap-expected.txt
r230471 r244800 13 13 (bounds 228.00 128.00) 14 14 (drawsContent 1) 15 (transform [1.30 0.00 0.00 0.00] [0.00 1.30 0.00 0.00] [0.00 0.00 1.00 0.00] [100.00 0.00 0.00 1.00])16 15 ) 17 16 (GraphicsLayer -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/translate-scale-transition-overlap.html
r235960 r244800 28 28 } 29 29 </style> 30 <script src="../../../compositing/layer-creation/resources/compositing-overlap-utils.js"></script> 30 31 <script> 31 32 if (window.testRunner) { … … 34 35 } 35 36 36 function dumpLayers()37 function runTest() 37 38 { 38 if (window.testRunner) { 39 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 40 testRunner.notifyDone(); 41 } 42 } 43 44 function makeDots() 45 { 46 const width = 50; 47 const height = 23; 48 49 const spacing = 10; 50 51 for (var row = 0; row < height; ++row) { 52 for (var col = 0; col < width; ++col) { 53 var dot = document.createElement('div'); 54 dot.className = 'dot'; 55 dot.style.left = spacing * col + 'px'; 56 dot.style.top = spacing * row + 'px'; 57 document.body.appendChild(dot); 58 } 59 } 39 makeDots(50, 23); 60 40 61 41 window.setTimeout(function() { … … 65 45 } 66 46 67 window.addEventListener('load', makeDots, false);47 window.addEventListener('load', runTest, false); 68 48 </script> 69 49 </head> -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/translate-transition-overlap-expected.txt
r230471 r244800 12 12 (bounds 228.00 128.00) 13 13 (drawsContent 1) 14 (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [100.00 0.00 0.00 1.00])15 14 ) 16 15 (GraphicsLayer -
trunk/LayoutTests/legacy-animation-engine/compositing/layer-creation/translate-transition-overlap.html
r235960 r244800 28 28 } 29 29 </style> 30 <script src="../../../compositing/layer-creation/resources/compositing-overlap-utils.js"></script> 30 31 <script> 31 32 if (window.testRunner) { … … 34 35 } 35 36 36 function dumpLayers()37 function runTest() 37 38 { 38 if (window.testRunner) { 39 document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); 40 testRunner.notifyDone(); 41 } 42 } 43 44 function makeDots() 45 { 46 const width = 40; 47 const height = 20; 48 49 const spacing = 10; 50 51 for (var row = 0; row < height; ++row) { 52 for (var col = 0; col < width; ++col) { 53 var dot = document.createElement('div'); 54 dot.className = 'dot'; 55 dot.style.left = spacing * col + 'px'; 56 dot.style.top = spacing * row + 'px'; 57 document.body.appendChild(dot); 58 } 59 } 39 makeDots(40, 20); 60 40 61 41 window.setTimeout(function() { … … 65 45 } 66 46 67 window.addEventListener('load', makeDots, false);47 window.addEventListener('load', runTest, false); 68 48 </script> 69 49 </head> -
trunk/LayoutTests/platform/ios/compositing/layer-creation/scale-rotation-animation-overlap-expected.txt
r225897 r244800 13 13 (bounds 148.00 128.00) 14 14 (drawsContent 1) 15 (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [10.00 0.00 0.00 1.00])16 15 ) 17 16 (GraphicsLayer -
trunk/LayoutTests/platform/ios/legacy-animation-engine/compositing/layer-creation/scale-rotation-animation-overlap-expected.txt
r230471 r244800 13 13 (bounds 148.00 128.00) 14 14 (drawsContent 1) 15 (transform [1.00 0.00 0.00 0.00] [0.00 1.00 0.00 0.00] [0.00 0.00 1.00 0.00] [10.00 0.00 0.00 1.00])16 15 ) 17 16 (GraphicsLayer -
trunk/Source/WebCore/ChangeLog
r244797 r244800 243 243 * page/ios/FrameIOS.mm: 244 244 (WebCore::Frame::nodeRespondingToDoubleClickEvent): 245 246 2019-04-30 Simon Fraser <simon.fraser@apple.com> 247 248 Transform is sometimes left in a bad state after an animation 249 https://bugs.webkit.org/show_bug.cgi?id=197401 250 rdar://problem/48179186 251 252 Reviewed by Dean Jackson. 253 254 In some more complex compositing scenarios, at the end of an animation we'd 255 fail to push a new transform onto a layer, because updateGeometry() would 256 think there's an animation running (which there is, but in the "Ending" state). 257 258 It's simpler in this code to just always push transform and opacity to the layer; 259 they will get overridden by the animation while it's running. The current code 260 dates from the first landing of the file, and the reason for the if (!isRunningAcceleratedTransformAnimation) 261 check is lost in the sands of time. 262 263 I was not able to get a reliable ref or layer tree test for this, because the next compositing update 264 fixes it, and WTR seems to trigger one. But the added test does show the bug 265 in Safari, and is a good test to have. 266 267 Test: compositing/animation/transform-after-animation.html 268 269 * rendering/RenderLayerBacking.cpp: 270 (WebCore::RenderLayerBacking::updateGeometry): 245 271 246 272 2019-04-29 Youenn Fablet <youenn@apple.com> -
trunk/Source/WebCore/rendering/RenderLayerBacking.cpp
r244509 r244800 1002 1002 1003 1003 bool isRunningAcceleratedTransformAnimation = false; 1004 bool isRunningAcceleratedOpacityAnimation = false;1005 1004 if (RuntimeEnabledFeatures::sharedFeatures().webAnimationsCSSIntegrationEnabled()) { 1006 if (auto* timeline = renderer().documentTimeline()) {1005 if (auto* timeline = renderer().documentTimeline()) 1007 1006 isRunningAcceleratedTransformAnimation = timeline->isRunningAcceleratedAnimationOnRenderer(renderer(), CSSPropertyTransform); 1008 isRunningAcceleratedOpacityAnimation = timeline->isRunningAcceleratedAnimationOnRenderer(renderer(), CSSPropertyOpacity); 1009 } 1010 } else { 1007 } else 1011 1008 isRunningAcceleratedTransformAnimation = renderer().animation().isRunningAcceleratedAnimationOnRenderer(renderer(), CSSPropertyTransform); 1012 isRunningAcceleratedOpacityAnimation = renderer().animation().isRunningAcceleratedAnimationOnRenderer(renderer(), CSSPropertyOpacity); 1013 } 1014 1015 // Set transform property, if it is not animating. We have to do this here because the transform 1016 // is affected by the layer dimensions. 1017 if (!isRunningAcceleratedTransformAnimation) 1018 updateTransform(style); 1019 1020 // Set opacity, if it is not animating. 1021 if (!isRunningAcceleratedOpacityAnimation) 1022 updateOpacity(style); 1023 1009 1010 updateTransform(style); 1011 updateOpacity(style); 1024 1012 updateFilters(style); 1025 1013 #if ENABLE(FILTERS_LEVEL_2)
Note: See TracChangeset
for help on using the changeset viewer.