|
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> |
|
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 |
|
19 var quirks = document.getElementById("quirks"); |
|
20 var standards = document.getElementById("standards"); |
|
21 var xml = document.getElementById("xml"); |
|
22 |
|
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>"; |
|
26 |
|
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 } |
|
48 |
|
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 } |
|
54 |
|
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); |
|
65 |
|
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); |
|
75 |
|
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); |
|
82 |
|
83 SimpleTest.finish(); |
|
84 } |
|
85 </script> |
|
86 |
|
87 </pre> |
|
88 </body> |
|
89 </html> |