XMLHttpRequestUpload's loadstart event not correct initialized
[WebKit-https.git] / LayoutTests / http / tests / xmlhttprequest / upload-onabort-progressevent-attributes.html
1 <html>
2 <head>
3 <title>Test case for bug 120828 (abort case)</title>
4 </head>
5 <body>
6 <p>Test case for <a href="https://bugs.webkit.org/show_bug.cgi?id=120828"> bug 120828</a>: Correctly set XHR loadend attributes (loaded and total).</p>
7 <p>Upload case: verify that abort and loadend events have their ProgressEvent attributes (loaded, total and lengthComputable) correctly set.</p>
8 <p id=console></p>
9 <script type="text/javascript">
10 if (window.testRunner) {
11     testRunner.dumpAsText();
12     testRunner.waitUntilDone();
13 }
14
15 var status = "PASS";
16 var total = 1;
17 var loaded = 1;
18 var uploadedData = "d";
19
20 function onProgressEvent(e)
21 {
22     if (!e.lengthComputable)
23         fail("Event " + e.type + " lengthComputable is false");
24     if (e.total != total || e.loaded != loaded)
25         fail("Event " + e.type + " total/loaded values not matching: " 
26             + "(" + e.loaded + " / " + e.total + "), expected (" + loaded + " / " + total + ")");
27 }
28
29 function onErrorProgressEvent(e)
30 {
31     if (e.lengthComputable)
32         fail("Event " + e.type + " lengthComputable is true");
33     if (e.total != 0 || e.loaded != 0)
34         fail("Event " + e.type + " total/loaded values not matching: "
35             + "(" + e.loaded + " / " + e.total + "), expected (0 / 0)");
36 }
37
38 function onUnexpectedProgressEvent(e)
39 {
40     fail("unexpected ProgressEvent: " + e.type);
41 }
42
43 function fail(msg)
44 {
45     status = "FAILED: " + msg;
46     completeTest();
47     status = "";
48 }
49
50 function completeTest()
51 {
52     log(status);
53     if (window.testRunner)
54         testRunner.notifyDone();
55 }
56
57 function test()
58 {
59     var req = new XMLHttpRequest();
60     req.upload.onerror = onUnexpectedProgressEvent;
61     req.upload.onload = onUnexpectedProgressEvent;
62     req.upload.onabort = onErrorProgressEvent;
63     req.upload.onprogress = function(e) {
64         onProgressEvent(e);
65         req.abort();
66     }
67     req.upload.onloadend = function(e) {
68         onErrorProgressEvent(e);
69         completeTest();
70     }
71
72     req.open("POST", "resources/post-echo.cgi", true);
73     req.send(uploadedData);
74 }
75
76
77 function log(message)
78 {
79     var consoleElt = document.getElementById("console");
80     consoleElt.innerHTML += message + "<br/>";
81 }
82
83 test(); 
84
85 </script>
86 </body>
87 </html>