Null dereference loading Blink layout test fast/frames/navigation-in-pagehide.html
[WebKit-https.git] / LayoutTests / imported / blink / fast / frames / navigation-in-pagehide.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script>
5 var firstFrame;
6 var secondFrame;
7 var callbackCount = 0;
8
9 function start() {
10   if (window.testRunner) {
11     testRunner.dumpAsText();
12     testRunner.waitUntilDone();
13   }
14
15   firstFrame = document.createElement('iframe');
16   document.body.appendChild(firstFrame);
17   var div = document.createElement('div');
18   firstFrame.appendChild(div);
19   secondFrame = document.createElement('iframe');
20   secondFrame.src = 'javascript:window.top.maybeStart();';
21   div.appendChild(secondFrame);
22   var firstFrameRoot = firstFrame.contentDocument.documentElement;
23   document.documentElement.appendChild(div);
24   firstFrameRoot.appendChild(secondFrame);
25 }
26
27 function maybeStart() {
28   if (callbackCount++ > 1) {
29     reallyStart();
30     return;
31   }
32 }
33
34 function reallyStart(frame) {
35   secondFrame.contentWindow.onpagehide = function () {
36     firstFrame.src = 'javascript:window.top.navigateThere();';
37   };
38   firstFrame.src = 'javascript:window.top.navigateHere();';
39
40   if (window.location.hash == '#done') {
41     if (window.testRunner)
42       window.testRunner.notifyDone();
43     return;
44   }
45
46   window.setTimeout(function () {
47     window.location.hash = '#done';
48     window.location.reload();
49   }, 0);
50 }
51
52 function navigateHere() {
53   return 'a';
54 }
55
56 function navigateThere() {
57   firstFrame.src='javascript:window.top.navigateThereNested();';
58   return 'b';
59 }
60
61 function navigateThereNested() {
62   return 'c';
63 }
64 </script>
65 </head>
66 <body onload="start()">
67 <p>This is a simple test that triggering a navigation from a pagehide handler in
68 a frame being navigated doesn't crash.</p>
69 </body>
70 </html>