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 : 4 [ + ]: 2 : export default (activeURL) => { 5 : 1 : 6 : 1 : let xhr = new XMLHttpRequest(); 7 : 1 : let countedLoading = 0; 8 : 1 : 9 [ + ]: 1 : xhr.onreadystatechange = () => { 10 [ + ]: 13 : if(xhr.readyState === 3){ 11 : 10 : countedLoading += 1; 12 : 10 : } 13 : 13 : 14 [ + ]: 13 : if(xhr.readyState === 4) { 15 : 1 : assert(countedLoading > 1, 'LOADING state change may be emitted multiple times'); 16 : 1 : 17 : 1 : xhr.onreadystatechange = null; 18 : 1 : } 19 : 1 : }; 20 : 1 : 21 : 1 : xhr.open('GET', `${activeURL}/trickle.py?count=10`); 22 : 1 : xhr.send(); 23 : 1 : } 24 : 2 : 25 : 2 : /* 26 : 2 : * event-readystatechange-loaded.any.js 27 : 2 : * 28 : 2 : 29 : 2 : // META: title=XMLHttpRequest: the LOADING state change may be emitted multiple times 30 : 2 : 31 : 2 : var test = async_test(); 32 : 2 : 33 : 2 : test.step(function () { 34 : 2 : var client = new XMLHttpRequest(); 35 : 2 : var countedLoading = 0; 36 : 2 : 37 : 2 : client.onreadystatechange = test.step_func(function () { 38 : 2 : if (client.readyState === 3) { 39 : 2 : countedLoading += 1; 40 : 2 : } 41 : 2 : 42 : 2 : if (client.readyState === 4) { 43 : 2 : assert_greater_than(countedLoading, 1, "LOADING state change may be emitted multiple times"); 44 : 2 : 45 : 2 : test.done(); 46 : 2 : } 47 : 2 : }); 48 : 2 : 49 : 2 : client.open("GET", "resources/trickle.py?count=10"); // default timeout in trickle.py is 1/2 sec, so this request will take 5 seconds to complete 50 : 2 : client.send(null); 51 : 2 : }); 52 : 2 : 53 : 2 : * 54 : 2 : * event-readystatechange-loaded.any.js 55 : 2 : */