| Index: LayoutTests/compositing/overflow/build-paint-order-list-where-opt-in-decisions-can-affect-each-other.html
|
| diff --git a/LayoutTests/compositing/overflow/build-paint-order-list-where-opt-in-decisions-can-affect-each-other.html b/LayoutTests/compositing/overflow/build-paint-order-list-where-opt-in-decisions-can-affect-each-other.html
|
| deleted file mode 100644
|
| index c7e31e1807127c418e816b5d573e39530edb05ba..0000000000000000000000000000000000000000
|
| --- a/LayoutTests/compositing/overflow/build-paint-order-list-where-opt-in-decisions-can-affect-each-other.html
|
| +++ /dev/null
|
| @@ -1,192 +0,0 @@
|
| -<!DOCTYPE html>
|
| -
|
| -<html><head>
|
| - <style>
|
| - .filler {
|
| - background-color: #CC9900;
|
| - border-style: solid;
|
| - border-width: 1px;
|
| - width: 400px;
|
| - height: 100px;
|
| - }
|
| -
|
| - .negativechild {
|
| - z-index: -1;
|
| - position: relative;
|
| - }
|
| -
|
| - #parentscrollinglayer {
|
| - background-color: #CC9999;
|
| - height: 200px;
|
| - width: 500px;
|
| - overflow-y: scroll;
|
| - }
|
| -
|
| - #childscrollinglayer {
|
| - position: relative;
|
| - background-color: #990066;
|
| - height: 200px;
|
| - width: 300px;
|
| - overflow-x: scroll;
|
| - }
|
| - </style>
|
| -
|
| - <script src="resources/build-paint-order-lists.js"></script>
|
| - <script>
|
| - var debugMode = false;
|
| -
|
| - if (window.internals)
|
| - window.internals.settings.setAcceleratedCompositingForOverflowScrollEnabled(true);
|
| -
|
| - if (window.testRunner)
|
| - testRunner.dumpAsText();
|
| -
|
| - function write(str)
|
| - {
|
| - var pre = document.getElementById('console');
|
| - var text = document.createTextNode(str + '\n');
|
| - pre.appendChild(text);
|
| - }
|
| -
|
| - function getStackingOrder()
|
| - {
|
| - var divElements = [];
|
| - // Force a style recalc.
|
| - document.body.offsetTop;
|
| -
|
| - var stackingOrder = window.internals.nodesFromRect(document, 100, 75, 200, 200, 200, 200, false, false, false);
|
| -
|
| - for (var i = 0; i < stackingOrder.length; ++i)
|
| - if (stackingOrder[i].nodeName === "DIV")
|
| - divElements.push(stackingOrder[i]);
|
| -
|
| - return divElements;
|
| - }
|
| -
|
| - function compareStackingOrderWithPaintOrder(stackingOrder, paintOrder)
|
| - {
|
| - if (debugMode) {
|
| - write("paint:")
|
| - for (var i = 0; i < paintOrder.length; i++)
|
| - write(paintOrder[i].id + " " + paintOrder[i].className + " " + paintOrder[i].tagName);
|
| -
|
| - write("stacking:")
|
| - for (var i = 0; i < stackingOrder.length; i++)
|
| - write(stackingOrder[i].id + " " + stackingOrder[i].className + " " + stackingOrder[i].tagName);
|
| - }
|
| -
|
| - for (var i = 0, j = 0; i < stackingOrder.length && j < paintOrder.length; i++) {
|
| - // Ignore elements with class "filler negativechild". These elements are
|
| - // irrelevant to stacking order, since they do not overlap with the
|
| - // elements we care about. They exist in the paint order lists because
|
| - // they are still descendants of the same stacking context, but they
|
| - // will not affect visual layout.
|
| - while (j < paintOrder.length && paintOrder[paintOrder.length - j - 1].className === "filler negativechild")
|
| - j++;
|
| -
|
| - if (j >= paintOrder.length)
|
| - break;
|
| -
|
| - if (stackingOrder[i] === paintOrder[paintOrder.length - j - 1])
|
| - j++;
|
| - }
|
| -
|
| - if (debugMode)
|
| - write(stackingOrder.length + " " + i + " " + paintOrder.length + " " + j);
|
| -
|
| - return j === paintOrder.length;
|
| - }
|
| -
|
| - function doTest()
|
| - {
|
| - var parentscrollinglayer = document.getElementById('parentscrollinglayer');
|
| - var childscrollinglayer = document.getElementById('childscrollinglayer');
|
| -
|
| - if (window.internals) {
|
| - var failure = false;
|
| -
|
| - // Here we want to compare paint order lists before and after promotion
|
| - // to the actual stacking order as determined by hit-testing. So we
|
| - // first force the element not to promote, then compute its paint and
|
| - // stacking order lists. We then force the element to opt in, and
|
| - // generate the paint and stacking order lists after opt-in.
|
| - //
|
| - // The paint order lists should exactly match the stacking order lists
|
| - // (modulo children that fall outside of the hit-testing area
|
| - // on-screen), both before and after promotion.
|
| - parentscrollinglayer.style.webkitTransform = 'translateZ(0px)';
|
| - document.body.offsetTop;
|
| -
|
| - window.internals.setNeedsCompositedScrolling(parentscrollinglayer,
|
| - window.internals.COMPOSITED_SCROLLING_ALWAYS_OFF);
|
| - parentscrollinglayer.style.webkitTransform = '';
|
| -
|
| - var oldStackingOrder = getStackingOrder();
|
| - var oldPaintOrder = getPaintOrder(childscrollinglayer);
|
| -
|
| - window.internals.setNeedsCompositedScrolling(parentscrollinglayer,
|
| - window.internals.COMPOSITED_SCROLLING_ALWAYS_ON);
|
| - parentscrollinglayer.style.webkitTransform = 'translateZ(0px)';
|
| -
|
| - var newStackingOrder = getStackingOrder();
|
| - var newPaintOrder = getPaintOrder(childscrollinglayer);
|
| -
|
| - window.internals.setNeedsCompositedScrolling(parentscrollinglayer,
|
| - window.internals.DO_NOT_FORCE_COMPOSITED_SCROLLING);
|
| -
|
| - // The getPaintOrder() function should return a pair of paint orders.
|
| - // One before promotion and one after. This pair of lists should remain
|
| - // identical whether the element is actually currently promoted or not,
|
| - // its purpose is to generate hypothetical pre- and post-lists to
|
| - // determine if the element is promotable.
|
| - if (!comparePaintOrderLists(oldPaintOrder, newPaintOrder)) {
|
| - failure = true;
|
| - write("FAIL - paint order lists not identical before/after promotion");
|
| - }
|
| -
|
| - if (!compareStackingOrderWithPaintOrder(oldStackingOrder, oldPaintOrder.beforePromote)) {
|
| - failure = true;
|
| - write("FAIL - paint order list before promote doesn't match stacking order");
|
| - }
|
| -
|
| - if (!compareStackingOrderWithPaintOrder(newStackingOrder, oldPaintOrder.afterPromote)) {
|
| - failure = true;
|
| - write("FAIL - paint order list after promote doesn't match stacking order");
|
| - }
|
| -
|
| - var childScrollingLayerOccurrences = countOccurrencesOfElementInPaintOrderList(oldPaintOrder.beforePromote, childscrollinglayer);
|
| - if (childScrollingLayerOccurrences !== 1) {
|
| - failure = true;
|
| - write("FAIL - paint order list before promote contains " + childScrollingLayerOccurrences + " occurrences of child scrolling layer. Should be exactly 1.");
|
| - }
|
| -
|
| - childScrollingLayerOccurrences = countOccurrencesOfElementInPaintOrderList(oldPaintOrder.afterPromote, childscrollinglayer);
|
| - if (childScrollingLayerOccurrences !== 1) {
|
| - failure = true;
|
| - write("FAIL - paint order list after promote contains " + childScrollingLayerOccurrences + " occurrences of child scrolling layer. Should be exactly 1.");
|
| - }
|
| -
|
| - if(!failure)
|
| - write("PASS - did not crash.");
|
| - }
|
| - }
|
| -
|
| - window.addEventListener('load', doTest, false);
|
| - </script>
|
| -</head>
|
| -<body>
|
| -<div class="filler"></div>
|
| -<div id="parentscrollinglayer">
|
| - <div id="childscrollinglayer">
|
| - <div class="filler"></div>
|
| - </div>
|
| - <div class="filler"></div>
|
| - <div class="filler"></div>
|
| -</div>
|
| -<div id="fillerchild1" class="filler negativechild"></div>
|
| -<div id="fillerchild2" class="filler negativechild"></div>
|
| -<div id="fillerchild3" class="filler negativechild"></div>
|
| -<div id="fillerchild4" class="filler negativechild"></div>
|
| -<pre id="console"></pre>
|
| -</body>
|
| -</html>
|
|
|