2010-11-22 Charlie Reis <creis@chromium.org>
[WebKit-https.git] / LayoutTests / fast / history / saves-state-after-frame-nav.html
1 <html>
2 <head>
3 </head>
4 <body>
5 Navigates a subframe and edits a field, then goes back and forward
6 to test if the field state is restored.
7 <pre id="result">FAIL</pre>
8
9 <script>
10
11 function clickLink() {
12   // Simulate a mouse click on a link targeting the frame.
13   var evt = document.createEvent("MouseEvents");
14   evt.initMouseEvent("click", true, true, window,
15       0, 0, 0, 0, 0, false, false, false, false, 0, null);
16   document.getElementById("link").dispatchEvent(evt);
17 }
18
19 function getTextInput() {
20   var frame = document.getElementById("frame");
21   return frame.contentDocument.getElementById("textInput");
22 }
23
24 var stage = "before edit";
25 var textInputValue;
26
27 function frameLoaded() {
28   if (stage == "before edit") {
29     var textInput = getTextInput();
30     if (textInput != null) {
31       // Edit the form and go back.
32       textInput.value = "test";
33       stage = "after edit";
34       history.back();
35     }
36   } else if (stage == "after edit") {
37     // Go forward.
38     stage = "after forward";
39     history.forward();
40   } else if (stage == "after forward") {
41     // Check that the value is still in the form.
42     if (getTextInput().value == "test")
43       document.getElementById("result").innerHTML = "PASS";
44
45     if (window.layoutTestController) {
46       layoutTestController.notifyDone();
47     }
48   }
49 }
50
51 onload = function () {
52   if (window.layoutTestController) {
53     layoutTestController.dumpAsText();
54     layoutTestController.waitUntilDone();
55   }
56   clickLink();
57 }
58
59 </script>
60
61 <a href="resources/subframe-with-form.html" id="link" target="frame">Link</a>
62 <br>
63 <iframe id="frame" src="resources/subframe.html" onload="frameLoaded()"></iframe>
64
65 </body>
66 </html>