tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_viewport_scroll.html (3968B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <title>Test for mapping of scrollTop/scrollLeft to viewport</title>
      5  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
      7 </head>
      8 <body>
      9 <p id="display"></p>
     10 
     11 <iframe id="quirks"></iframe>
     12 <iframe id="standards"></iframe>
     13 <iframe id="xml"></iframe>
     14 
     15 <pre id="test">
     16 <script type="application/javascript">
     17 SimpleTest.waitForExplicitFinish();
     18 window.onload = async () => {
     19  await SpecialPowers.pushPrefEnv({
     20    set: [ ["layout.disable-pixel-alignment", true] ]
     21  });
     22  doTest();
     23 }
     24 
     25 var quirks = document.getElementById("quirks");
     26 var standards = document.getElementById("standards");
     27 var xml = document.getElementById("xml");
     28 
     29 quirks.src = "file_viewport_scroll_quirks.html";
     30 standards.srcdoc = "<!DOCTYPE HTML><html><body style='height:2000px; width:2000px;'>";
     31 xml.src = "file_viewport_scroll_xml.xml";
     32 
     33 function subtest(winProp, elemProp, win, correctElement, elemToSet, otherElem1, otherElem2) {
     34  win.scrollTo(50, 50);
     35  elemToSet[elemProp] = 100;
     36  if (elemToSet == correctElement) {
     37    is(Math.round(win[winProp]), 100, "Setting " + elemToSet.name + "." + elemProp + " should scroll");
     38    is(elemToSet[elemProp], 100, "Reading back " + elemToSet.name + "." + elemProp + " after scrolling");
     39  } else {
     40    is(Math.round(win[winProp]), 50, "Setting " + elemToSet.name + "." + elemProp + " should not scroll");
     41    is(elemToSet[elemProp], 0, "Reading back " + elemToSet.name + "." + elemProp + " after not scrolling");
     42  }
     43  if (otherElem1 == correctElement) {
     44    is(otherElem1[elemProp], 50, "Reading back " + otherElem1.name + "." + elemProp + " (correct element) after not scrolling");
     45  } else {
     46    is(otherElem1[elemProp], 0, "Reading back " + otherElem1.name + "." + elemProp + " (irrelevant element)");
     47  }
     48  if (otherElem2 == correctElement) {
     49    is(otherElem2[elemProp], 50, "Reading back " + otherElem2.name + "." + elemProp + " (correct element) after not scrolling");
     50  } else {
     51    is(otherElem2[elemProp], 0, "Reading back " + otherElem2.name + "." + elemProp + " (irrelevant element)");
     52  }
     53 }
     54 
     55 function testScroll(winProp, elemProp, win, elemToSet, otherElem1, otherElem2) {
     56  subtest(winProp, elemProp, win, elemToSet, elemToSet, otherElem1, otherElem2);
     57  subtest(winProp, elemProp, win, elemToSet, otherElem1, elemToSet, otherElem2);
     58  subtest(winProp, elemProp, win, elemToSet, otherElem2, elemToSet, otherElem1);
     59 }
     60 
     61 function doTest() {
     62  var quirksRoot = quirks.contentDocument.documentElement;
     63  quirksRoot.name = "quirks HTML";
     64  var quirksBody = quirks.contentDocument.body;
     65  quirksBody.name = "quirks BODY";
     66  var quirksBody2 = quirks.contentDocument.createElement("body");
     67  quirksBody2.name = "quirks other BODY";
     68  quirksRoot.appendChild(quirksBody2);
     69  testScroll("scrollX", "scrollLeft", quirks.contentWindow, quirksBody, quirksRoot, quirksBody2);
     70  testScroll("scrollY", "scrollTop", quirks.contentWindow, quirksBody, quirksRoot, quirksBody2);
     71 
     72  var standardsRoot = standards.contentDocument.documentElement;
     73  standardsRoot.name = "standards HTML";
     74  var standardsBody = standards.contentDocument.body;
     75  standardsBody.name = "standards BODY";
     76  var standardsBody2 = standards.contentDocument.createElement("body");
     77  standardsBody2.name = "standards other BODY";
     78  standardsRoot.appendChild(standardsBody2);
     79  testScroll("scrollX", "scrollLeft", standards.contentWindow, standardsRoot, standardsBody, standardsBody2);
     80  testScroll("scrollY", "scrollTop", standards.contentWindow, standardsRoot, standardsBody, standardsBody2);
     81 
     82  var xmlRoot = xml.contentDocument.documentElement;
     83  xmlRoot.name = "XML root";
     84  var xmlOther = xmlRoot.firstChild;
     85  xmlOther.name = "XML other";
     86  testScroll("scrollX", "scrollLeft", xml.contentWindow, xmlRoot, xmlOther, xmlOther);
     87  testScroll("scrollY", "scrollTop", xml.contentWindow, xmlRoot, xmlOther, xmlOther);
     88 
     89  SimpleTest.finish();
     90 }
     91 </script>
     92 
     93 </pre>
     94 </body>
     95 </html>