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`);