| OLD | NEW |
| (Empty) |
| 1 <!DOCTYPE html> | |
| 2 <style> | |
| 3 #box { | |
| 4 position: absolute; | |
| 5 left: 0; | |
| 6 top: 0; | |
| 7 width: 100px; | |
| 8 height: 100px; | |
| 9 background: green; | |
| 10 box-shadow: 1.4px 1.4px blue; | |
| 11 } | |
| 12 </style> | |
| 13 <div id="box"></div> | |
| 14 <script src="../../resources/js-test.js"></script> | |
| 15 <script src="../../resources/run-after-layout-and-paint.js"></script> | |
| 16 <script> | |
| 17 var jsTestIsAsync = true; | |
| 18 description('Tests whether a repaint rect encompasses box-shadow with subpixel o
ffset when the shadow changes.'); | |
| 19 | |
| 20 // Accepts [x, y, width, height] rects. Checks if the first argument contains th
e second. | |
| 21 function rectContainsRect(outer, inner) { | |
| 22 return outer[0] <= inner[0] | |
| 23 && outer[1] <= inner[1] | |
| 24 && outer[0] + outer[2] >= inner[0] + inner[2] | |
| 25 && outer[1] + outer[3] >= inner[1] + inner[3]; | |
| 26 } | |
| 27 | |
| 28 if (!window.internals) { | |
| 29 testFailed('Test requires window.internals.'); | |
| 30 finishJSTest(); | |
| 31 } else { | |
| 32 var box = document.getElementById('box'); | |
| 33 runAfterLayoutAndPaint(function() { | |
| 34 internals.startTrackingRepaints(document); | |
| 35 box.style.boxShadow = 'none'; | |
| 36 | |
| 37 runAfterLayoutAndPaint(function() { | |
| 38 var layerTree = JSON.parse(internals.layerTreeAsText(document, inter
nals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS)); | |
| 39 var repaintRects = layerTree.children[0].repaintRects; | |
| 40 var shadowRect = [1.4, 1.4, 100, 100]; | |
| 41 if (repaintRects.some(repaintRect => rectContainsRect(repaintRect, s
hadowRect))) | |
| 42 testPassed('Subpixel shadow was repainted.'); | |
| 43 else | |
| 44 testFailed('Subpixel shadow ' + JSON.stringify(shadowRect) + ' w
as not repainted. Repaint rects were ' + JSON.stringify(repaintRects) + '.'); | |
| 45 | |
| 46 internals.stopTrackingRepaints(document); | |
| 47 box.remove(); | |
| 48 finishJSTest(); | |
| 49 }); | |
| 50 }); | |
| 51 } | |
| 52 </script> | |
| OLD | NEW |