Index: LayoutTests/http/tests/xmlhttprequest/onloadend-event-after-load.html |
diff --git a/LayoutTests/http/tests/xmlhttprequest/onloadend-event-after-load.html b/LayoutTests/http/tests/xmlhttprequest/onloadend-event-after-load.html |
index 0b2644a07b048ba2c73888eff3272af3941e8fac..bf97ab0d053754583572c7f2e7f8f10a929fd823 100644 |
--- a/LayoutTests/http/tests/xmlhttprequest/onloadend-event-after-load.html |
+++ b/LayoutTests/http/tests/xmlhttprequest/onloadend-event-after-load.html |
@@ -1,64 +1,67 @@ |
-<HTML> |
+<!doctype html> |
+<html> |
<head> |
<title>Test case for bug 40952</title> |
+<script src="../resources/testharness.js"></script> |
+<script src="../resources/testharnessreport.js"></script> |
</head> |
<body> |
<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> |
<p> Verify that a loadend ProgressEvent is dispatched after the load ProgressEvent when an async request completes normally.</p> |
-<p>PASS should appear below:</p> |
-<p id=console></p> |
+<div id="log"></div> |
<script type="text/javascript"> |
-if (window.testRunner) { |
- testRunner.dumpAsText(); |
- testRunner.waitUntilDone(); |
-} |
- |
-function log(message) |
-{ |
- var consoleElt = document.getElementById("console"); |
- consoleElt.appendChild(document.createTextNode(message)); |
-} |
-var xhr = new XMLHttpRequest(); |
+var xhr; |
+var payload = "data"; |
+var expectedLength = payload.length; |
var results = ""; |
var expected = " loadstart readyState=DONE load loadend"; |
+function verifyProgressEvent(context, e, expected) |
+{ |
+ assert_true(e.lengthComputable); |
+ assert_equals(e.loaded, expected, "Expected 'loaded' value for '" + context + "' event."); |
+ assert_equals(e.total, expected, "Expected 'total' value for '" + context + "' event."); |
+} |
+ |
function logProgressEvent(e) { |
results += " " + e.type; |
} |
function logUnexpectedProgressEvent(e) { |
results += " [unexpected ProgressEvent: " + e.type + "]"; |
- completeTest(); |
+ completeTest(); |
} |
function completeTest() |
{ |
- log(results == expected ? "PASS" : "FAILED results : '" + results + "', expected : '" + expected + "'"); |
- if (window.testRunner) |
- testRunner.notifyDone(); |
+ assert_equals(results, expected, "Expected load event sequence"); |
+ testOnloadEndEvent.done(); |
} |
-function test() |
+function loadendHandler(e) |
{ |
- xhr.onreadystatechange = function(e) { |
- if (xhr.readyState == xhr.DONE) |
- results += " readyState=DONE"; |
- } |
- xhr.onloadstart = logProgressEvent; |
- xhr.onabort = logUnexpectedProgressEvent; |
- xhr.onerror = logUnexpectedProgressEvent; |
- xhr.onload = logProgressEvent; |
- xhr.onloadend = function(e) { |
- logProgressEvent(e); |
- completeTest(); |
- } |
- |
- xhr.open("GET", "resources/get.txt", true); |
- xhr.send(); |
+ logProgressEvent(e); |
+ assert_true(e instanceof ProgressEvent); |
+ verifyProgressEvent("onloadend", e, expectedLength); |
+ completeTest(); |
} |
-test(); |
- |
+var testOnloadEndEvent = async_test("Check that 'loadend' events are delivered and have expected values."); |
+testOnloadEndEvent.step(function () { |
+ xhr = new XMLHttpRequest(); |
+ xhr.onreadystatechange = testOnloadEndEvent.step_func(function(e) { |
+ if (xhr.readyState == xhr.DONE) |
+ results += " readyState=DONE"; |
+ }); |
+ xhr.onloadstart = testOnloadEndEvent.step_func(logProgressEvent); |
+ xhr.onabort = testOnloadEndEvent.step_func(logUnexpectedProgressEvent); |
+ xhr.onerror = testOnloadEndEvent.step_func(logUnexpectedProgressEvent); |
+ xhr.onload = testOnloadEndEvent.step_func(logProgressEvent); |
+ xhr.onloadend = testOnloadEndEvent.step_func(loadendHandler); |
+ xhr.open("POST", "resources/post-echo.php", true); |
+ xhr.send(payload); |
+}); |
</script> |
</body> |
+</html> |