2011-01-08 Charlie Reis <creis@chromium.org>
[WebKit.git] / LayoutTests / http / tests / navigation / forward-and-cancel.html
1 <script>
2 // Test steps:
3 // 1. Start on a page with no frames (this page).
4 // 2. Navigate to a page with a frame tree (Grandparent, Parent, Child, Uncle).
5 // 3. Navigate child frame to a slowly loading URL.
6 // 4. Go back to about:blank in child frame.
7 //    Important to use about:blank, which can commit immediately while walking the tree.
8 // 5. Go forward to slow URL, but stop before the navigation commits.
9 //    Important to cancel the load and ensure the history is not corrupted.
10 // 6. Go back to start page with no frames.
11 //    Important for testing that subframes can be removed.
12 if (window.layoutTestController) {
13     layoutTestController.dumpBackForwardList();
14     layoutTestController.dumpAsText();
15     layoutTestController.queueLoad("resources/forward-and-cancel-frames-container.html");
16     layoutTestController.queueLoadingScript("frames[0].clickLink();");
17     layoutTestController.queueBackNavigation(1);
18
19     // Go forward to slow URL in child frame, but stop right away.  This should
20     // reset the backForward list to the previous entry.
21     layoutTestController.queueNonLoadingScript("setTimeout('history.forward();',0); setTimeout('window.stop();',10);");
22
23     // Now go back to make sure the backForwardList is not corrupted.
24     layoutTestController.queueNonLoadingScript("setTimeout('history.back();',50);");
25
26     // Wait until we get back to this page.
27     layoutTestController.queueLoadingScript("layoutTestController.waitUntilDone();");
28 }
29 </script>
30 <p>This test checks that the backForward list is not corrupted when a frame load is canceled.
31 <p>If testing manually, <a href="resources/forward-and-cancel-frames-container.html">click here</a>.
32
33 <script>
34 if (window.layoutTestController) {
35     // Only notify done when we return to this page a second time.
36     if (!window.localStorage.started) {
37         window.localStorage.started = true;
38     } else {
39         delete window.localStorage.started;
40         layoutTestController.notifyDone();
41     }
42 }
43 </script>