Index: third_party/WebKit/LayoutTests/fast/dom/body-quirk-client-size.html |
diff --git a/third_party/WebKit/LayoutTests/fast/dom/body-quirk-client-size.html b/third_party/WebKit/LayoutTests/fast/dom/body-quirk-client-size.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3b990145806ee1a08eeb8a8ff0a3eafdd82dcf48 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/fast/dom/body-quirk-client-size.html |
@@ -0,0 +1,53 @@ |
+<!-- quirks mode --> |
+<script src="../../resources/js-test.js"></script> |
+<style> |
+ :root, body { width: 100%; height: 100%; margin: 0 } |
+ #container.wide { width: 5000px; height: 10px; } |
+ #container.tall { height: 5000px; width: 10px; } |
+</style> |
+<div id="container"></div> |
+<script> |
+ description("Style recalc when reading clientWidth/clientHeight of body in quirks mode."); |
+ |
+ shouldBeDefined(window.internals); |
+ |
+ function runClientSizeTest(testClass, expectWidthChange, expectHeightChange, expectedRecalcCount) { |
+ |
+ var origWidth = document.body.clientWidth; |
+ var origHeight = document.body.clientHeight; |
+ internals.updateStyleAndReturnAffectedElementCount(); |
+ |
+ container.classList.add(testClass) |
+ |
+ var afterWidth = document.body.clientWidth; |
+ var afterHeight = document.body.clientHeight; |
+ |
+ shouldBe("internals.updateStyleAndReturnAffectedElementCount()", ""+expectedRecalcCount); |
+ |
+ if (expectWidthChange) |
+ shouldBeGreaterThan(""+origWidth, ""+afterWidth); |
+ else |
+ shouldBe(""+origWidth, ""+afterWidth); |
+ |
+ if (expectHeightChange) |
+ shouldBeGreaterThan(""+origHeight, ""+afterHeight); |
+ else |
+ shouldBe(""+origHeight, ""+afterHeight); |
+ |
+ container.classList.remove(testClass) |
+ } |
+ |
+ var originalOverlayScrollbars = internals.runtimeFlags.overlayScrollbarsEnabled; |
+ |
+ internals.settings.setOverlayScrollbarsEnabled(true); |
+ |
+ runClientSizeTest("wide", false, false, 1); |
+ runClientSizeTest("tall", false, false, 1); |
+ |
+ internals.settings.setOverlayScrollbarsEnabled(false); |
+ |
+ runClientSizeTest("wide", false, true, 0); |
+ runClientSizeTest("tall", true, false, 0); |
+ |
+ internals.settings.setOverlayScrollbarsEnabled(originalOverlayScrollbars); |
+</script> |