summaryrefslogtreecommitdiffstats
path: root/docshell/test/navigation/test_bug430723.html
blob: eb53e0d220d548f9a07b799f94645dd6d954e15b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=430723
-->
<head>
  <title>Test for Bug 430723</title>
  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
  <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>  
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=430723">Mozilla Bug 430723</a>
<p id="display"></p>
<div id="content" style="display: none">
  
</div>
<pre id="test">
<script class="testbody" type="text/javascript">
//<![CDATA[

/** Test for Bug 430723 **/

var gTallRedBoxURI = "data:text/html;charset=utf-8;base64,PGh0bWw%2BPGhlYWQ%2BPHNjcmlwdD53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZXNob3cnLCBmdW5jdGlvbigpe29wZW5lci5uZXh0VGVzdCgpO30sIGZhbHNlKTs8L3NjcmlwdD48L2hlYWQ%2BPGJvZHk%2BPGRpdiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MHB4OyB0b3A6MHB4OyB3aWR0aDo1MCU7IGhlaWdodDoxNTAlOyBiYWNrZ3JvdW5kLWNvbG9yOnJlZCI%2BPHA%2BVGhpcyBpcyBhIHZlcnkgdGFsbCByZWQgYm94LjwvcD48L2Rpdj48L2JvZHk%2BPC9odG1sPg%3D%3D";
// <html><head>
// < script > window.addEventListener("pageshow", function(){opener.nextTest();}, false); < /script > 
// </head><body>
// <div style="position:absolute; left:0px; top:0px; width:50%; height:150%; background-color:red">
// <p>This is a very tall red box.</p>
// </div></body></html>

var gTallBlueBoxURI = "data:text/html;charset=utf-8;base64,PGh0bWw%2BPGhlYWQ%2BPHNjcmlwdD53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZXNob3cnLCBmdW5jdGlvbigpe29wZW5lci5uZXh0VGVzdCgpO30sIGZhbHNlKTs8L3NjcmlwdD48L2hlYWQ%2BPGJvZHk%2BPGRpdiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6MHB4OyB0b3A6MHB4OyB3aWR0aDo1MCU7IGhlaWdodDoxNTAlOyBiYWNrZ3JvdW5kLWNvbG9yOmJsdWUiPjxwPlRoaXMgaXMgYSB2ZXJ5IHRhbGwgYmx1ZSBib3guPC9wPjwvZGl2PjwvYm9keT48L2h0bWw%2B";
// <html><head>
// < script > window.addEventListener("pageshow", function(){opener.nextTest();}, false); < /script > 
// </head><body>
// <div style="position:absolute; left:0px; top:0px; width:50%; height:150%; background-color:blue">
// <p>This is a very tall blue box.</p>
// </div></body></html>

window.onload = runTest;

var testWindow;
var testNum = 0;

var smoothScrollPref = "general.smoothScroll";
function runTest() {
  SpecialPowers.pushPrefEnv({"set":[[smoothScrollPref, false]]}, function(){
    testWindow = window.open(gTallRedBoxURI, "testWindow", "width=300,height=300,location=yes,scrollbars=yes");
  });
}

var nextTest =function() {
  testNum++;
  switch (testNum) {
    case 1: setTimeout(step1, 0); break;
    case 2: setTimeout(step2, 0); break;
    case 3: setTimeout(step3, 0); break;
  };
}

var step1 =function() {
  window.is(String(testWindow.location), gTallRedBoxURI, "Ensure red page loaded.");
  
  // Navigate down and up.
  is(testWindow.document.body.scrollTop, 0,
     "Page1: Ensure the scrollpane is at the top before we start scrolling.");
  testWindow.addEventListener("scroll", function () {
    testWindow.removeEventListener("scroll", arguments.callee, true);
    isnot(testWindow.document.body.scrollTop, 0,
          "Page1: Ensure we can scroll down.");
    SimpleTest.executeSoon(step1_2);
  }, true);
  sendKey('DOWN', testWindow);

  function step1_2() {
    testWindow.addEventListener("scroll", function () {
      testWindow.removeEventListener("scroll", arguments.callee, true);
      is(testWindow.document.body.scrollTop, 0,
         "Page1: Ensure we can scroll up, back to the top.");  

      // Nav to blue box page. This should fire step2.
      testWindow.location = gTallBlueBoxURI;
    }, true);
    sendKey('UP', testWindow);
  }
}


var step2 =function() {    
  window.is(String(testWindow.location), gTallBlueBoxURI, "Ensure blue page loaded.");

  // Scroll around a bit.
  is(testWindow.document.body.scrollTop, 0,
     "Page2: Ensure the scrollpane is at the top before we start scrolling.");

  var count = 0;
  testWindow.addEventListener("scroll", function () {
    if (++count < 2) {
      SimpleTest.executeSoon(function () { sendKey('DOWN', testWindow); });
    } else {
      testWindow.removeEventListener("scroll", arguments.callee, true);

      isnot(testWindow.document.body.scrollTop, 0,
            "Page2: Ensure we could scroll.");

      // Navigate backwards. This should fire step3.
      testWindow.history.back();
    }
  }, true);
  sendKey('DOWN', testWindow);
}

var step3 =function() {
  window.is(String(testWindow.location), gTallRedBoxURI,
            "Ensure red page restored from history.");

  // Check we can still scroll with the keys.
  is(testWindow.document.body.scrollTop, 0,
     "Page1Again: Ensure scroll pane at top before we scroll.");  
  testWindow.addEventListener("scroll", function () {
    testWindow.removeEventListener("scroll", arguments.callee, true);

    isnot(testWindow.document.body.scrollTop, 0,
          "Page2Again: Ensure we can still scroll.");  

    testWindow.close();
    window.SimpleTest.finish();
  }, true);
  sendKey('DOWN', testWindow);
}

SimpleTest.waitForExplicitFinish();

//]]>
</script>
</pre>
</body>
</html>