Branch data Line data Source code
1 [ + ]: 2 : import assert from 'node:assert/strict'; 2 : 2 : import { XMLHttpRequest } from '../../../lib/whatwg-xhr.js'; 3 : 2 : import { ProgressEvent } from '../../../lib/whatwg-xhr.js'; 4 : 2 : 5 [ + ]: 2 : export default (activeURL) => { 6 : 1 : 7 : 1 : const xhr = new XMLHttpRequest(); 8 : 1 : 9 : 1 : const remote = `${activeURL}/corsenabled.py`; 10 : 1 : const redirect = `${activeURL}/redirect.py?code=307&location=${remote}`; 11 : 1 : 12 [ + ]: 1 : [remote, redirect].forEach(url => { 13 : 2 : 14 : 2 : const xhr = new XMLHttpRequest(); 15 : 2 : const data = 'On time: ' + url; 16 : 2 : 17 [ + ]: 2 : xhr.upload.onprogress = (e) => { 18 : 2 : assert(e.lengthComputable); 19 : 2 : assert.strictEqual(e.total, data.length); 20 : 2 : 21 : 2 : xhr.upload.onprogress = null; 22 : 2 : xhr.onload = null; 23 : 2 : }; 24 : 2 : 25 : 2 : xhr.onload = () => { 26 : 0 : assert(false); 27 : 0 : } 28 : 2 : 29 : 2 : xhr.open('POST', url); 30 : 2 : xhr.send(data); 31 : 1 : }); 32 : 1 : 33 [ + ]: 1 : [remote, redirect].forEach(url => { 34 : 2 : 35 : 2 : const xhr = new XMLHttpRequest(); 36 : 2 : 37 [ + ]: 2 : xhr.onload = () => { 38 : 2 : xhr.onload = null; 39 : 2 : }; 40 : 2 : 41 : 2 : xhr.open('POST', url); 42 : 2 : xhr.send('Too late: ' + url); 43 : 2 : 44 : 2 : // registered too late 45 : 2 : xhr.upload.onloadstart = () => { 46 : 0 : assert(false); 47 : 2 : }; 48 : 2 : 49 : 2 : // registered too late 50 : 2 : xhr.upload.onprogress = () => { 51 : 0 : assert(false); 52 : 2 : }; 53 : 1 : }); 54 : 1 : } 55 : 2 : 56 : 2 : /* 57 : 2 : * event-upload-progress.any.js 58 : 2 : * 59 : 2 : 60 : 2 : // META: title=XMLHttpRequest: upload progress event 61 : 2 : // META: script=/common/get-host-info.sub.js 62 : 2 : 63 : 2 : const remote = get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/corsenabled.py", 64 : 2 : redirect = "resources/redirect.py?code=307&location=" + remote; 65 : 2 : 66 : 2 : [remote, redirect].forEach(url => { 67 : 2 : async_test(test => { 68 : 2 : const client = new XMLHttpRequest(); 69 : 2 : const data = "On time: " + url; 70 : 2 : client.upload.onprogress = test.step_func_done(e => { 71 : 2 : assert_true(e.lengthComputable); 72 : 2 : assert_equals(e.total, data.length); 73 : 2 : }); 74 : 2 : client.onload = test.unreached_func(); 75 : 2 : client.open("POST", url); 76 : 2 : client.send(data); 77 : 2 : }, "Upload events registered on time (" + url + ")"); 78 : 2 : }); 79 : 2 : 80 : 2 : [remote, redirect].forEach(url => { 81 : 2 : async_test(test => { 82 : 2 : const client = new XMLHttpRequest(); 83 : 2 : client.onload = test.step_func_done(); 84 : 2 : client.open("POST", url); 85 : 2 : client.send("Too late: " + url); 86 : 2 : client.upload.onloadstart = test.unreached_func(); // registered too late 87 : 2 : client.upload.onprogress = test.unreached_func(); // registered too late 88 : 2 : }, "Upload events registered too late (" + url + ")"); 89 : 2 : }); 90 : 2 : 91 : 2 : * 92 : 2 : * event-upload-progress.any.js 93 : 2 : */