<!doctype html>
<html lang=en>
<meta charset=utf-8>
<title>XMLHttpRequest: The send() method: Fire a progress event named loadstart on upload object (synchronous flag is unset)</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-onprogress" data-tested-assertations="../.." />
<link rel="help" href="https://xhr.spec.whatwg.org/#event-xhr-progress" data-tested-assertations="../.." />
<div id="log"></div>
<script>
  var test = async_test();
  test.step(function() {
    var client = new XMLHttpRequest();
    client.upload.onloadstart = test.step_func(function(e) {
      assert_true(e instanceof ProgressEvent);
      assert_equals(e.total, 7, 'upload.onloadstart: event.total');
      assert_equals(e.loaded, 0, 'upload.onloadstart: event.loaded');
      assert_equals(e.type, "loadstart");
      test.done();
    });
    client.onreadystatechange = test.step_func(function() {
      if (client.readyState === 4)
        assert_unreached("onloadstart not called.");
    });
    client.open("POST", "resources/trickle.py?ms=5&count=8");
    client.send('foo=bar');
  });
</script>
