tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

xhr-content-length.https.window.js (2360B)


      1 // META: script=resources/test-helpers.sub.js
      2 
      3 let frame;
      4 
      5 promise_test(async (t) => {
      6  const scope = "resources/empty.html";
      7  const script = "resources/xhr-content-length-worker.js";
      8  const registration = await service_worker_unregister_and_register(t, script, scope);
      9  await wait_for_state(t, registration.installing, "activated");
     10  frame = await with_iframe(scope);
     11 }, "Setup");
     12 
     13 promise_test(async t => {
     14  const xhr = new frame.contentWindow.XMLHttpRequest();
     15  xhr.open("GET", "test?type=no-content-length");
     16  xhr.send();
     17  const event = await new Promise(resolve => xhr.onload = resolve);
     18  assert_equals(xhr.getResponseHeader("content-length"), null);
     19  assert_false(event.lengthComputable);
     20  assert_equals(event.total, 0);
     21  assert_equals(event.loaded, xhr.responseText.length);
     22 }, `Synthetic response without Content-Length header`);
     23 
     24 promise_test(async t => {
     25  const xhr = new frame.contentWindow.XMLHttpRequest();
     26  xhr.open("GET", "test?type=larger-content-length");
     27  xhr.send();
     28  const event = await new Promise(resolve => xhr.onload = resolve);
     29  assert_equals(xhr.getResponseHeader("content-length"), "10000");
     30  assert_true(event.lengthComputable);
     31  assert_equals(event.total, 10000);
     32  assert_equals(event.loaded, xhr.responseText.length);
     33 }, `Synthetic response with Content-Length header with value larger than response body length`);
     34 
     35 promise_test(async t => {
     36  const xhr = new frame.contentWindow.XMLHttpRequest();
     37  xhr.open("GET", "test?type=double-content-length");
     38  xhr.send();
     39  const event = await new Promise(resolve => xhr.onload = resolve);
     40  assert_equals(xhr.getResponseHeader("content-length"), "10000, 10000");
     41  assert_true(event.lengthComputable);
     42  assert_equals(event.total, 10000);
     43  assert_equals(event.loaded, xhr.responseText.length);
     44 }, `Synthetic response with two Content-Length headers value larger than response body length`);
     45 
     46 promise_test(async t => {
     47  const xhr = new frame.contentWindow.XMLHttpRequest();
     48  xhr.open("GET", "test?type=bogus-content-length");
     49  xhr.send();
     50  const event = await new Promise(resolve => xhr.onload = resolve);
     51  assert_equals(xhr.getResponseHeader("content-length"), "test");
     52  assert_false(event.lengthComputable);
     53  assert_equals(event.total, 0);
     54  assert_equals(event.loaded, xhr.responseText.length);
     55 }, `Synthetic response with bogus Content-Length header`);