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

Unified Diff: LayoutTests/compositing/overflow/universal-acceleration/resources/universal-overflow.js

Issue 22620002: Add layout tests for universal overflow scrolling (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: . Created 7 years, 4 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: LayoutTests/compositing/overflow/universal-acceleration/resources/universal-overflow.js
diff --git a/LayoutTests/compositing/overflow/universal-acceleration/resources/universal-overflow.js b/LayoutTests/compositing/overflow/universal-acceleration/resources/universal-overflow.js
new file mode 100644
index 0000000000000000000000000000000000000000..818589d466230707c1ac39f8e42f718773d0a9d8
--- /dev/null
+++ b/LayoutTests/compositing/overflow/universal-acceleration/resources/universal-overflow.js
@@ -0,0 +1,95 @@
+if (window.internals) {
+ window.internals.settings.setAcceleratedCompositingForOverflowScrollEnabled(true);
+// internals.setUniversalAcceleratedCompositingForOverflowScrollEnabled(true);
Julien - ping for review 2013/08/21 01:34:40 This line is probably unneeded :)
Ian Vollick 2013/08/23 15:02:40 lol. Done.
+}
+
+var isFixedPositioned = true;
+var isContainingBlock = true;
+var hasSibling = true;
+var hasGrandchildren = true;
Julien - ping for review 2013/08/21 01:34:40 These variables are just magical and make it hard
Ian Vollick 2013/08/23 15:02:40 I've rearranged things a bunch and come up with so
+
+function addDomElement(elementType, className, id, parent, description, indent)
+{
+ var element = document.createElement(elementType);
+ element.setAttribute("class", className);
+ element.setAttribute("id", id);
+ if (parent === "body")
+ document.body.appendChild(element);
+ else
+ document.getElementById(parent).appendChild(element);
+
+ if (elementType === "div") {
+ for (var i = 0; i < indent; ++i)
+ description.push(" ");
+ description.push("+ ");
+ description.push(id);
+ if (className) {
+ description.push(", class: ");
+ description.push(className);
+ }
+ description.push("\n");
+ } else {
+ element.innerHTML = description.join("");
+ }
+}
+
+function buildDom(description, indent)
+{
+ var parentElement = "body";
+ if (hasSibling) {
+ addDomElement("div", "", "ancestor", "body", description, indent);
+ indent++;
+ addDomElement("div", "positionFixed", "sibling", "ancestor", description, indent);
+ parentElement = "ancestor";
+ }
+
+ var overflowClass = isContainingBlock
+ ? "positionAbsolute overflow"
+ : "overflow";
+
+ addDomElement("div", overflowClass, "container", parentElement, description, indent);
+ indent++;
+
+ parentElement = "container";
+ if (hasGrandchildren) {
+ addDomElement("div", "", "scrollingContainer", parentElement, description, indent);
+ indent++;
+ parentElement = "scrollingContainer";
+ }
+
+ positionedClass = isFixedPositioned ? "positionFixed" : "positionAbsolute";
+
+ addDomElement("div", positionedClass, "positioned", parentElement, description, indent);
+
+ for (var i = 0; i < 5; ++i) {
+ var scrolledClass = "scrolled";
+ if ((i % 2) == 0) {
Julien - ping for review 2013/08/21 01:34:40 We usually don't put curly braces for single line
Ian Vollick 2013/08/23 15:02:40 Done.
+ scrolledClass += " onTop";
+ }
+ addDomElement("div", scrolledClass, "scrolled", parentElement, description, indent);
+ }
+}
+
+function doTest() {
+ var description = ["This test constructs the following tree:\n"];
+ var indent = 0;
+ buildDom(description, indent)
+
+ if (!window.internals) {
+ addDomElement("pre", "", "console", "body", description, indent);
+ var pre = document.getElementById("console");
+ pre.innerHTML += "\nWe then check that scrolling is accelerated.";
+ } else {
+ testRunner.dumpAsText(true);
+
+ var container = document.getElementById("container");
+ container.scrollTop = container.scrollHeight - container.clientHeight;
+
+ var layerTreeAsText = internals.layerTreeAsText(document);
+
+ addDomElement("pre", "", "console", "body", description, indent);
+ var pre = document.getElementById("console");
+ pre.style.left = "-80000px";
+ pre.innerHTML = layerTreeAsText;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698