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>