Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 <!DOCTYPE HTML>
2 <html>
3 <head>
4 <title>Test for mapping of scrollTop/scrollLeft to viewport</title>
5 <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
6 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
7 </head>
8 <body onload="doTest()">
9 <p id="display"></p>
11 <iframe id="quirks"></iframe>
12 <iframe id="standards"></iframe>
13 <iframe id="xml"></iframe>
15 <pre id="test">
16 <script type="application/javascript">
17 SimpleTest.waitForExplicitFinish();
19 var quirks = document.getElementById("quirks");
20 var standards = document.getElementById("standards");
21 var xml = document.getElementById("xml");
23 quirks.src = "data:text/html,<html><body style='height:2000px; width:2000px;'>";
24 standards.src = "data:text/html,<!DOCTYPE HTML><html><body style='height:2000px; width:2000px;'>";
25 xml.src = "data:text/xml,<?xml-stylesheet href='data:text/css,html { display:block; height:2000px; width:2000px; }'?><foo><html></html></foo>";
27 function subtest(winProp, elemProp, win, correctElement, elemToSet, otherElem1, otherElem2) {
28 win.scrollTo(50, 50);
29 elemToSet[elemProp] = 100;
30 if (elemToSet == correctElement) {
31 is(win[winProp], 100, "Setting " + elemToSet.name + "." + elemProp + " should scroll");
32 is(elemToSet[elemProp], 100, "Reading back " + elemToSet.name + "." + elemProp + " after scrolling");
33 } else {
34 is(win[winProp], 50, "Setting " + elemToSet.name + "." + elemProp + " should not scroll");
35 is(elemToSet[elemProp], 0, "Reading back " + elemToSet.name + "." + elemProp + " after not scrolling");
36 }
37 if (otherElem1 == correctElement) {
38 is(otherElem1[elemProp], 50, "Reading back " + otherElem1.name + "." + elemProp + " (correct element) after not scrolling");
39 } else {
40 is(otherElem1[elemProp], 0, "Reading back " + otherElem1.name + "." + elemProp + " (irrelevant element)");
41 }
42 if (otherElem2 == correctElement) {
43 is(otherElem2[elemProp], 50, "Reading back " + otherElem2.name + "." + elemProp + " (correct element) after not scrolling");
44 } else {
45 is(otherElem2[elemProp], 0, "Reading back " + otherElem2.name + "." + elemProp + " (irrelevant element)");
46 }
47 }
49 function testScroll(winProp, elemProp, win, elemToSet, otherElem1, otherElem2) {
50 subtest(winProp, elemProp, win, elemToSet, elemToSet, otherElem1, otherElem2);
51 subtest(winProp, elemProp, win, elemToSet, otherElem1, elemToSet, otherElem2);
52 subtest(winProp, elemProp, win, elemToSet, otherElem2, elemToSet, otherElem1);
53 }
55 function doTest() {
56 var quirksRoot = quirks.contentDocument.documentElement;
57 quirksRoot.name = "quirks HTML";
58 var quirksBody = quirks.contentDocument.body;
59 quirksBody.name = "quirks BODY";
60 var quirksBody2 = quirks.contentDocument.createElement("body");
61 quirksBody2.name = "quirks other BODY";
62 quirksRoot.appendChild(quirksBody2);
63 testScroll("scrollX", "scrollLeft", quirks.contentWindow, quirksBody, quirksRoot, quirksBody2);
64 testScroll("scrollY", "scrollTop", quirks.contentWindow, quirksBody, quirksRoot, quirksBody2);
66 var standardsRoot = standards.contentDocument.documentElement;
67 standardsRoot.name = "standards HTML";
68 var standardsBody = standards.contentDocument.body;
69 standardsBody.name = "standards BODY";
70 var standardsBody2 = standards.contentDocument.createElement("body");
71 standardsBody2.name = "standards other BODY";
72 standardsRoot.appendChild(standardsBody2);
73 testScroll("scrollX", "scrollLeft", standards.contentWindow, standardsRoot, standardsBody, standardsBody2);
74 testScroll("scrollY", "scrollTop", standards.contentWindow, standardsRoot, standardsBody, standardsBody2);
76 var xmlRoot = xml.contentDocument.documentElement;
77 xmlRoot.name = "XML root";
78 var xmlOther = xmlRoot.firstChild;
79 xmlOther.name = "XML other";
80 testScroll("scrollX", "scrollLeft", xml.contentWindow, xmlRoot, xmlOther, xmlOther);
81 testScroll("scrollY", "scrollTop", xml.contentWindow, xmlRoot, xmlOther, xmlOther);
83 SimpleTest.finish();
84 }
85 </script>
87 </pre>
88 </body>
89 </html>