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 :
8 : 1 : let expect = [4, '', 'upload.timeout', 'upload.loadend', 'timeout', 'loadend'];
9 : 1 : let actual = [];
10 : 1 :
11 [ + ]: 1 : xhr.onreadystatechange = () => {
12 [ + ]: 2 : if(xhr.readyState === 4) {
13 : 1 : actual.push(xhr.readyState, xhr.response);
14 : 1 : }
15 : 1 : };
16 : 1 :
17 [ + ]: 1 : xhr.onloadend = (e) => {
18 : 1 : assert.strictEqual(e.loaded, 0);
19 : 1 : assert.strictEqual(e.total, 0);
20 : 1 :
21 : 1 : actual.push(e.type);
22 : 1 :
23 : 1 : assert.deepStrictEqual(actual, expect);
24 : 1 : };
25 : 1 :
26 [ + ]: 1 : xhr.ontimeout = (e) => {
27 : 1 : assert.strictEqual(e.loaded, 0);
28 : 1 : assert.strictEqual(e.total, 0);
29 : 1 :
30 : 1 : actual.push(e.type);
31 : 1 : };
32 : 1 :
33 [ + ]: 1 : xhr.upload.onloadend = (e) => {
34 : 1 : assert.strictEqual(e.loaded, 0);
35 : 1 : assert.strictEqual(e.total, 0);
36 : 1 :
37 : 1 : actual.push('upload.' + e.type);
38 : 1 : };
39 : 1 :
40 [ + ]: 1 : xhr.upload.ontimeout = (e) => {
41 : 1 : assert.strictEqual(e.loaded, 0);
42 : 1 : assert.strictEqual(e.total, 0);
43 : 1 :
44 : 1 : actual.push('upload.' + e.type);
45 : 1 : };
46 : 1 :
47 : 1 : let content = '';
48 [ + ]: 1 : for (let i = 0; i < 121026; i++) {
49 : 121026 : content += '[' + i + ']';
50 : 121026 : }
51 : 1 :
52 : 1 : xhr.open('POST', `${activeURL}/trickle.py`);
53 : 1 :
54 : 1 : xhr.timeout = 1;
55 : 1 : xhr.send(content);
56 : 1 : }
57 : 2 :
58 : 2 : /*
59 : 2 : * send-timeout-events.htm
60 : 2 : *
61 : 2 :
62 : 2 : <!DOCTYPE html>
63 : 2 : <html>
64 : 2 : <head>
65 : 2 : <script src="/resources/testharness.js"></script>
66 : 2 : <script src="/resources/testharnessreport.js"></script>
67 : 2 : <title>XMLHttpRequest: The send() method: timeout is not 0 </title>
68 : 2 : </head>
69 : 2 :
70 : 2 : <body>
71 : 2 : <div id="log"></div>
72 : 2 :
73 : 2 : <script type="text/javascript">
74 : 2 : async_test(t => {
75 : 2 : const xhr = new XMLHttpRequest(),
76 : 2 : expect = [4, "", "upload.timeout", "upload.loadend", "timeout", "loadend"];
77 : 2 : let actual = [];
78 : 2 :
79 : 2 : xhr.onreadystatechange = t.step_func(() => {
80 : 2 : if (xhr.readyState == 4) {
81 : 2 : actual.push(xhr.readyState, xhr.response);
82 : 2 : }
83 : 2 : });
84 : 2 :
85 : 2 : xhr.onloadend = t.step_func_done(e => {
86 : 2 : assert_equals(e.loaded, 0);
87 : 2 : assert_equals(e.total, 0);
88 : 2 : actual.push(e.type);
89 : 2 : assert_array_equals(actual, expect);
90 : 2 : });
91 : 2 :
92 : 2 : xhr.ontimeout = t.step_func(e => {
93 : 2 : assert_equals(e.loaded, 0);
94 : 2 : assert_equals(e.total, 0);
95 : 2 : actual.push(e.type);
96 : 2 : });
97 : 2 :
98 : 2 : xhr.upload.onloadend = t.step_func(e => {
99 : 2 : assert_equals(e.loaded, 0);
100 : 2 : assert_equals(e.total, 0);
101 : 2 : actual.push("upload." + e.type);
102 : 2 : });
103 : 2 :
104 : 2 : xhr.upload.ontimeout = t.step_func(e => {
105 : 2 : assert_equals(e.loaded, 0);
106 : 2 : assert_equals(e.total, 0);
107 : 2 : actual.push("upload." + e.type);
108 : 2 : });
109 : 2 :
110 : 2 : let content = "";
111 : 2 : for (var i = 0; i < 121026; i++) {
112 : 2 : content += "[" + i + "]";
113 : 2 : }
114 : 2 :
115 : 2 : xhr.open("POST", "./resources/trickle.py", true);
116 : 2 : xhr.timeout = 1;
117 : 2 : xhr.send(content);
118 : 2 : });
119 : 2 : </script>
120 : 2 : </body>
121 : 2 : </html>
122 : 2 :
123 : 2 : *
124 : 2 : * send-timeout-events.htm
125 : 2 : */
|