| <!doctype html> | 
 | <html> | 
 |  <head> | 
 |  <title>ProgressEvent: firing events for HTTP with no Content-Length</title> | 
 |  <script src="/resources/testharness.js"></script> | 
 |  <script src="/resources/testharnessreport.js"></script> | 
 |  </head> | 
 |  <body> | 
 |  <div id="log"></div> | 
 |  <script> | 
 |  async_test(t => { | 
 |  const xhr = new XMLHttpRequest(); | 
 |  let progressHappened = false; | 
 |  | 
 |  xhr.onprogress = t.step_func(pe => { | 
 |  assert_equals(pe.type, "progress"); | 
 |  assert_greater_than_equal(pe.loaded, 0, "loaded"); | 
 |  assert_false(pe.lengthComputable, "lengthComputable"); | 
 |  assert_equals(pe.total, 0, "total"); | 
 |  progressHappened = true; | 
 |  }); | 
 |  | 
 |  // "loadstart", "error", "abort", "load" tests are out of scope. | 
 |  // They SHOULD be tested in each spec that implement ProgressEvent. | 
 |  | 
 |  xhr.onloadend = t.step_func_done(() => { | 
 |  assert_true(progressHappened); | 
 |  }); | 
 |  | 
 |  xhr.open("GET", "resources/trickle.py?ms=0&count=100", true); | 
 |  xhr.send(null); | 
 |  }); | 
 |  </script> | 
 |  </body> | 
 | </html> |