63c35bd9d16866837bf212f6bda66202a3af9e51
[WebKit-https.git] / LayoutTests / http / tests / xmlhttprequest / frame-load-cancelled-abort.html
1 <html>
2 <head>
3 <title>Test XMLHttpRequest frame load abort causes unexpected notification activity</title>
4 <meta http-equiv="content-type" content="text/html;charset=utf-8">
5 </head>
6 <body onload="startTest()">
7 <p>Test for <a href="http://bugzilla.opendarwin.org/show_bug.cgi?id=11450">bug 11450</a>
8 REGRESSION: XMLHttpRequest::didFinishLoading() should immediately return if the request has already been aborted</p>
9 <p>If a frame has an active XMLHttpRequest that is still receiving data, and that frame is destroyed<br>
10 (or its load is otherwise stopped) the XMLHttpRequest gets an abort call then a didFinishedLoading call.</p>
11 <p>That didFinishedLoading() call should immediately exit and not update the object's state or do any 
12 other notifications.</p>
13
14 <script>
15     var console_messages = document.createElement("ul");
16     document.body.appendChild(console_messages);
17     
18     var framediv;
19     
20     function startTest()
21     {
22         if (window.layoutTestController)
23             layoutTestController.waitUntilDone();
24         log("Loading subframe to cancel");
25         framediv = document.getElementById('framediv');
26         framediv.innerHTML = '<iframe src="resources/frame-load-to-cancel.html" width=0 height=0 border=0></iframe>';
27     }
28     
29     function subframeLoaded()
30     {
31         log("Body of subframe is loaded.  XMLHttpRequest should be in progress.  Nuking the iframe");
32         framediv.innerHTML = 'Test complete';
33         log("Iframe removed");
34         if (window.layoutTestController)
35             layoutTestController.notifyDone();
36     }
37     
38     function dumpRequestStatus(req) {
39        try { log ("Ready State: " + req.readyState); } catch (ex) { log("Exception getting status: " + ex.message); }
40     }
41     
42     function log(message)
43     {
44         var item = document.createElement("li");
45         item.appendChild(document.createTextNode(message));
46         console_messages.appendChild(item);
47     }
48     
49 </script>
50 <div id="framediv" name="framediv" style="visibility:hidden">
51 iFrame will go here
52 </div>
53 </body>
54 </html>