| 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..c6093ab9f5bb1442769626cb7440eea0420ff6d8 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>
 | 
| 
 |