| Index: LayoutTests/fast/repaint/subpixel-shadow-included-in-invalidation.html
|
| diff --git a/LayoutTests/fast/repaint/subpixel-shadow-included-in-invalidation.html b/LayoutTests/fast/repaint/subpixel-shadow-included-in-invalidation.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1d971e2fd62576d36168fc5bcbcff96bfc2e0f7d
|
| --- /dev/null
|
| +++ b/LayoutTests/fast/repaint/subpixel-shadow-included-in-invalidation.html
|
| @@ -0,0 +1,52 @@
|
| +<!DOCTYPE html>
|
| +<style>
|
| +#box {
|
| + position: absolute;
|
| + left: 0;
|
| + top: 0;
|
| + width: 100px;
|
| + height: 100px;
|
| + background: green;
|
| + box-shadow: 1.4px 1.4px blue;
|
| +}
|
| +</style>
|
| +<div id="box"></div>
|
| +<script src="../../resources/js-test.js"></script>
|
| +<script src="../../resources/run-after-layout-and-paint.js"></script>
|
| +<script>
|
| +var jsTestIsAsync = true;
|
| +description('Tests whether a repaint rect encompasses box-shadow with subpixel offset when the shadow changes.');
|
| +
|
| +// Accepts [x, y, width, height] rects. Checks if the first argument contains the second.
|
| +function rectContainsRect(outer, inner) {
|
| + return outer[0] <= inner[0]
|
| + && outer[1] <= inner[1]
|
| + && outer[0] + outer[2] >= inner[0] + inner[2]
|
| + && outer[1] + outer[3] >= inner[1] + inner[3];
|
| +}
|
| +
|
| +if (!window.internals) {
|
| + testFailed('Test requires window.internals.');
|
| + finishJSTest();
|
| +} else {
|
| + var box = document.getElementById('box');
|
| + runAfterLayoutAndPaint(function() {
|
| + internals.startTrackingRepaints(document);
|
| + box.style.boxShadow = 'none';
|
| +
|
| + runAfterLayoutAndPaint(function() {
|
| + var layerTree = JSON.parse(internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_REPAINT_RECTS));
|
| + var repaintRects = layerTree.children[0].repaintRects;
|
| + var shadowRect = [1.4, 1.4, 100, 100];
|
| + if (repaintRects.some(repaintRect => rectContainsRect(repaintRect, shadowRect)))
|
| + testPassed('Subpixel shadow was repainted.');
|
| + else
|
| + testFailed('Subpixel shadow ' + JSON.stringify(shadowRect) + ' was not repainted. Repaint rects were ' + JSON.stringify(repaintRects) + '.');
|
| +
|
| + internals.stopTrackingRepaints(document);
|
| + box.remove();
|
| + finishJSTest();
|
| + });
|
| + });
|
| +}
|
| +</script>
|
|
|