| Index: LayoutTests/scrollingcoordinator/non-fast-scrollable-transform-changed.html
|
| diff --git a/LayoutTests/scrollingcoordinator/non-fast-scrollable-transform-changed.html b/LayoutTests/scrollingcoordinator/non-fast-scrollable-transform-changed.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3b711c5dfb84f0592533f3779cd755c0299ee342
|
| --- /dev/null
|
| +++ b/LayoutTests/scrollingcoordinator/non-fast-scrollable-transform-changed.html
|
| @@ -0,0 +1,74 @@
|
| +<!DOCTYPE html>
|
| +<style>
|
| + body {
|
| + margin: 0;
|
| + padding: 0;
|
| + }
|
| +
|
| + #nonFastRegion {
|
| + height: 222px;
|
| + width: 222px;
|
| + border: none;
|
| + overflow: scroll;
|
| + -webkit-transform: translateX(0);
|
| + }
|
| +
|
| + #nonFastRegion > div {
|
| + height: 1000px;
|
| + width: 1000px;
|
| + background: linear-gradient(to bottom, red, white);
|
| + }
|
| +</style>
|
| +
|
| +<div id='nonFastRegion'><div>This should be covered by a green overlay.</div></div>
|
| +
|
| +<p>A single square should be visible covered by a green overlay.</p>
|
| +<div id="console"></div>
|
| +
|
| +<script src="../resources/js-test.js"></script>
|
| +<script src="../resources/run-after-layout-and-paint.js"></script>
|
| +<script src="resources/non-fast-scrollable-region-testing.js"></script>
|
| +<script>
|
| + jsTestIsAsync = true;
|
| + // print result lazily to avoid layouts during the test
|
| + setPrintTestResultsLazily();
|
| + description('This test ensures that transforming a non-fast scrollable area ' +
|
| + 'correctly updates list of non-fast scrollable rects ' +
|
| + '(See http://crbug.com/417345).');
|
| +
|
| + onload = function() {
|
| + runAfterLayoutAndPaint(runTests);
|
| + };
|
| +
|
| + function runTests() {
|
| + nonFastScrollableRects = internals.nonFastScrollableRects(document);
|
| + shouldBe('nonFastScrollableRects.length', '1');
|
| + shouldBeEqualToString('rectToString(nonFastScrollableRects[0])', '[0, 0, 222, 222]');
|
| +
|
| + document.body.style.padding = "10px";
|
| + debug("Trigger style update");
|
| + shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "2");
|
| + debug("Verifying layout hasn't been triggered");
|
| + shouldBe("internals.needsLayoutCount()", "3");
|
| +
|
| + // Updating transforms hits an optimized layout path which is root cause of
|
| + // http://crbug.com/417345
|
| + debug("Update non-fast element's transform");
|
| + document.getElementById('nonFastRegion').style.webkitTransform = 'translateX(100px)';
|
| +
|
| + debug("Trigger style update");
|
| + shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "1");
|
| + debug("Verifying layout still hasn't been triggered");
|
| + shouldBe("internals.needsLayoutCount()", "3");
|
| + debug("Verifying non-fast regions have been updated");
|
| + nonFastScrollableRects = internals.nonFastScrollableRects(document);
|
| + shouldBe('nonFastScrollableRects.length', '1');
|
| + shouldBeEqualToString('rectToString(nonFastScrollableRects[0])', '[100, 0, 222, 222]');
|
| +
|
| + setTimeout(function() {
|
| + // Add green overlays to help visualize the test
|
| + drawNonFastScrollableRegionOverlays();
|
| + finishJSTest();
|
| + }, 0);
|
| + }
|
| +</script>
|
|
|