WKWebsiteDataStoreStatisticsResetToConsistentState() should call store.setUseITPDatab...
[WebKit-https.git] / LayoutTests / fast / events / nested-event-remove-node-crash.html
1 <html>
2 <head>
3 <script>
4 function sendXHR()
5 {
6     XHR[numXHRs] = new XMLHttpRequest();
7     XHR[numXHRs].onreadystatechange = handleStateChange;
8     XHR[numXHRs].open("GET", "nested-event-remove-node-crash-expected.txt", true);
9     XHR[numXHRs].send(null);
10     numXHRs = numXHRs + 1;
11 }
12
13 function callback(response)
14 {
15     document.getElementById("replaceMe").innerHTML = "";
16     document.getElementById("replaceMe").innerHTML = response;
17     if (window.testRunner && (run == 2))
18         testRunner.notifyDone();
19 }
20
21 function handleStateChange()
22 {
23     if ((XHR[0].readyState == 4) && (run < 2)) { // yes this looks wrong but it's how to reproduce the bug
24         run = run + 1;
25         callback(XHR[0].responseText);
26     }
27 }
28
29 function test()
30 {
31 /*
32     1. focus a node
33     2. send an XHR who's handler will remove the node
34     3. the focused node's onblur will fire
35     4. the onblur event handler will send off an XHR who's handler will remove the node
36 */
37     var select = document.getElementById("theSelect");
38     select.addEventListener('DOMNodeRemovedFromDocument', function () { sendXHR();GC(); });
39     select.focus();
40     sendXHR();
41     
42     if (window.testRunner) {
43         testRunner.waitUntilDone();
44         testRunner.dumpAsText();
45     }
46 }
47
48 function GC()
49 {
50     // Force GC.
51     if (window.GCController)
52         GCController.collect();
53     else {
54         for (var i = 0; i < 10000; ++i) {
55             ({ });
56         }
57     }
58 }
59
60 /* GLOBALS */
61 var XHR = new Array();
62 var numXHRs = 0;
63 var run = 0;
64
65 </script>
66 </head>
67 <body onload="test()">
68
69 <div id="replaceMe">
70
71 <div>
72 <select id="theSelect" onblur="sendXHR();GC();">
73 </select>
74 </div>
75
76 </div>
77 </body>
78 </html>