content/base/test/test_viewport_scroll.html

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/content/base/test/test_viewport_scroll.html	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,89 @@
     1.4 +<!DOCTYPE HTML>
     1.5 +<html>
     1.6 +<head>
     1.7 +  <title>Test for mapping of scrollTop/scrollLeft to viewport</title>
     1.8 +  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
     1.9 +  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
    1.10 +</head>
    1.11 +<body onload="doTest()">
    1.12 +<p id="display"></p>
    1.13 +
    1.14 +<iframe id="quirks"></iframe>
    1.15 +<iframe id="standards"></iframe>
    1.16 +<iframe id="xml"></iframe>
    1.17 +
    1.18 +<pre id="test">
    1.19 +<script type="application/javascript">
    1.20 +SimpleTest.waitForExplicitFinish();
    1.21 +
    1.22 +var quirks = document.getElementById("quirks");
    1.23 +var standards = document.getElementById("standards");
    1.24 +var xml = document.getElementById("xml");
    1.25 +
    1.26 +quirks.src = "data:text/html,<html><body style='height:2000px; width:2000px;'>";
    1.27 +standards.src = "data:text/html,<!DOCTYPE HTML><html><body style='height:2000px; width:2000px;'>";
    1.28 +xml.src = "data:text/xml,<?xml-stylesheet href='data:text/css,html { display:block; height:2000px; width:2000px; }'?><foo><html></html></foo>";
    1.29 +
    1.30 +function subtest(winProp, elemProp, win, correctElement, elemToSet, otherElem1, otherElem2) {
    1.31 +  win.scrollTo(50, 50);
    1.32 +  elemToSet[elemProp] = 100;
    1.33 +  if (elemToSet == correctElement) {
    1.34 +    is(win[winProp], 100, "Setting " + elemToSet.name + "." + elemProp + " should scroll");
    1.35 +    is(elemToSet[elemProp], 100, "Reading back " + elemToSet.name + "." + elemProp + " after scrolling");
    1.36 +  } else {
    1.37 +    is(win[winProp], 50, "Setting " + elemToSet.name + "." + elemProp + " should not scroll");
    1.38 +    is(elemToSet[elemProp], 0, "Reading back " + elemToSet.name + "." + elemProp + " after not scrolling");
    1.39 +  }
    1.40 +  if (otherElem1 == correctElement) {
    1.41 +    is(otherElem1[elemProp], 50, "Reading back " + otherElem1.name + "." + elemProp + " (correct element) after not scrolling");
    1.42 +  } else {
    1.43 +    is(otherElem1[elemProp], 0, "Reading back " + otherElem1.name + "." + elemProp + " (irrelevant element)");
    1.44 +  }
    1.45 +  if (otherElem2 == correctElement) {
    1.46 +    is(otherElem2[elemProp], 50, "Reading back " + otherElem2.name + "." + elemProp + " (correct element) after not scrolling");
    1.47 +  } else {
    1.48 +    is(otherElem2[elemProp], 0, "Reading back " + otherElem2.name + "." + elemProp + " (irrelevant element)");
    1.49 +  }
    1.50 +}
    1.51 +
    1.52 +function testScroll(winProp, elemProp, win, elemToSet, otherElem1, otherElem2) {
    1.53 +  subtest(winProp, elemProp, win, elemToSet, elemToSet, otherElem1, otherElem2);
    1.54 +  subtest(winProp, elemProp, win, elemToSet, otherElem1, elemToSet, otherElem2);
    1.55 +  subtest(winProp, elemProp, win, elemToSet, otherElem2, elemToSet, otherElem1);
    1.56 +}
    1.57 +
    1.58 +function doTest() {
    1.59 +  var quirksRoot = quirks.contentDocument.documentElement;
    1.60 +  quirksRoot.name = "quirks HTML";
    1.61 +  var quirksBody = quirks.contentDocument.body;
    1.62 +  quirksBody.name = "quirks BODY";
    1.63 +  var quirksBody2 = quirks.contentDocument.createElement("body");
    1.64 +  quirksBody2.name = "quirks other BODY";
    1.65 +  quirksRoot.appendChild(quirksBody2);
    1.66 +  testScroll("scrollX", "scrollLeft", quirks.contentWindow, quirksBody, quirksRoot, quirksBody2);
    1.67 +  testScroll("scrollY", "scrollTop", quirks.contentWindow, quirksBody, quirksRoot, quirksBody2);
    1.68 +
    1.69 +  var standardsRoot = standards.contentDocument.documentElement;
    1.70 +  standardsRoot.name = "standards HTML";
    1.71 +  var standardsBody = standards.contentDocument.body;
    1.72 +  standardsBody.name = "standards BODY";
    1.73 +  var standardsBody2 = standards.contentDocument.createElement("body");
    1.74 +  standardsBody2.name = "standards other BODY";
    1.75 +  standardsRoot.appendChild(standardsBody2);
    1.76 +  testScroll("scrollX", "scrollLeft", standards.contentWindow, standardsRoot, standardsBody, standardsBody2);
    1.77 +  testScroll("scrollY", "scrollTop", standards.contentWindow, standardsRoot, standardsBody, standardsBody2);
    1.78 +
    1.79 +  var xmlRoot = xml.contentDocument.documentElement;
    1.80 +  xmlRoot.name = "XML root";
    1.81 +  var xmlOther = xmlRoot.firstChild;
    1.82 +  xmlOther.name = "XML other";
    1.83 +  testScroll("scrollX", "scrollLeft", xml.contentWindow, xmlRoot, xmlOther, xmlOther);
    1.84 +  testScroll("scrollY", "scrollTop", xml.contentWindow, xmlRoot, xmlOther, xmlOther);
    1.85 +
    1.86 +  SimpleTest.finish();
    1.87 +}
    1.88 +</script>
    1.89 +
    1.90 +</pre>
    1.91 +</body>
    1.92 +</html>

mercurial