4 <title>Test case for bug
40952</title>
5 <script src=
"../resources/testharness.js"></script>
6 <script src=
"../resources/testharnessreport.js"></script>
9 <p> Test case for
<a href=
"https://bugs.webkit.org/show_bug.cgi?id=40952"> bug
40952</a>: Onloadend event is not supported in XMLHttpRequest
</p>
10 <p> Verify that a loadend ProgressEvent is dispatched after the load ProgressEvent when an async upload request completes normally.
</p>
12 <script type=
"text/javascript">
16 var expectedLength
= payload
.length
;
18 var expected
= " loadstart load loadend";
20 function verifyProgressEvent(context
, e
, expected
)
22 assert_true(e
.lengthComputable
);
23 assert_equals(e
.loaded
, expected
, "Expected 'loaded' value for '" + context
+ "' event.");
24 assert_equals(e
.total
, expected
, "Expected 'total' value for '" + context
+ "' event.");
27 function logProgressEvent(e
) {
28 results
+= " " + e
.type
;
31 function logUnexpectedProgressEvent(e
) {
32 results
+= " [unexpected ProgressEvent: " + e
.type
+ "]";
36 function loadendHandler(e
)
39 assert_true(e
instanceof ProgressEvent
);
40 verifyProgressEvent("onloadend", e
, expectedLength
);
44 function completeTest()
46 assert_equals(results
, expected
, "Expected load event sequence");
47 testUploadOnloadEndEvent
.done();
50 var testUploadOnloadEndEvent
= async_test("Check that upload 'loadend' events are delivered and have expected values.");
51 testUploadOnloadEndEvent
.step(function () {
52 xhr
= new XMLHttpRequest();
53 xhr
.upload
.onloadstart
= testUploadOnloadEndEvent
.step_func(logProgressEvent
);
54 xhr
.upload
.onabort
= testUploadOnloadEndEvent
.step_func(logUnexpectedProgressEvent
);
55 xhr
.upload
.onerror
= testUploadOnloadEndEvent
.step_func(logUnexpectedProgressEvent
);
56 xhr
.upload
.onload
= testUploadOnloadEndEvent
.step_func(logProgressEvent
);
57 xhr
.upload
.onloadend
= testUploadOnloadEndEvent
.step_func(loadendHandler
);
58 xhr
.open("POST", "resources/post-echo.php", true);