Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Unified Diff: third_party/WebKit/LayoutTests/fast/dom/root-client-size.html

Issue 1935043002: Avoid style recalc and layout when not necessary for client size. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Skip layout for local frame roots only Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/fast/dom/root-client-size.html
diff --git a/third_party/WebKit/LayoutTests/fast/dom/root-client-size.html b/third_party/WebKit/LayoutTests/fast/dom/root-client-size.html
new file mode 100644
index 0000000000000000000000000000000000000000..9efabc5b53769255f7666e8076bb59940b15bd63
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/dom/root-client-size.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<script src="../../resources/js-test.js"></script>
+<style>
+ :root { width: 100%; height: 100% }
+ #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 documentElement in strict mode.");
+
+ shouldBeDefined(window.internals);
+
+ function runClientSizeTest(testClass, expectWidthChange, expectHeightChange, expectedRecalcCount) {
+
+ var origWidth = document.documentElement.clientWidth;
+ var origHeight = document.documentElement.clientHeight;
+ internals.updateStyleAndReturnAffectedElementCount();
+
+ container.classList.add(testClass)
+
+ var afterWidth = document.documentElement.clientWidth;
+ var afterHeight = document.documentElement.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>

Powered by Google App Engine
This is Rietveld 408576698