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 : import { prepare_xhr_for_event_order_test } from './xmlhttprequest-event-order.js?q1';
5 : 2 : import { assert_xhr_event_order_matches } from './xmlhttprequest-event-order.js?q1';
6 : 2 :
7 [ + ]: 2 : export default (activeURL) => {
8 : 1 :
9 : 1 : let xhr = new XMLHttpRequest();
10 : 1 :
11 : 1 : prepare_xhr_for_event_order_test(xhr);
12 : 1 :
13 [ + ]: 1 : xhr.addEventListener('loadstart', () => {
14 : 1 : let readyState = xhr.readyState;
15 : 1 : if(readyState === 1){
16 : 1 : xhr.abort();
17 : 1 : assert_xhr_event_order_matches([
18 : 1 : 1,
19 : 1 : 'loadstart(0,0,false)',
20 : 1 : 4,
21 : 1 : 'upload.abort(0,0,false)',
22 : 1 : 'upload.loadend(0,0,false)',
23 : 1 : 'abort(0,0,false)',
24 : 1 : 'loadend(0,0,false)'
25 : 1 : ]);
26 : 1 : assert(xhr.readyState === 0, 'state should be UNSENT');
27 [ - ]: 1 : }
28 : 0 : else{
29 : 0 : assert(false, `'loadstart' event should not fire in readyState ${readyState}`);
30 : 0 : }
31 : 1 : });
32 : 1 :
33 [ + ]: 1 : xhr.upload.onloadend = () => {};
34 : 1 :
35 : 1 : xhr.open('POST', `${activeURL}/content.py`);
36 : 1 : xhr.send('Test Message');
37 : 1 : }
38 : 2 :
39 : 2 : /*
40 : 2 : * abort-event-order.htm
41 : 2 : *
42 : 2 :
43 : 2 : <!DOCTYPE html>
44 : 2 : <html>
45 : 2 : <head>
46 : 2 : <link rel='help' href='https://xhr.spec.whatwg.org/#the-abort()-method' data-tested-assertations='following-sibling::ol/li[4]/ol/li[3] following-sibling::ol/li[4]/ol/li[5] following-sibling::ol/li[4]/ol/li[6] following-sibling::ol/li[4]/ol/li[7]/ol/li[3] following-sibling::ol/li[4]/ol/li[7]/ol/li[4] following-sibling::ol/li[5]' />
47 : 2 : <script src='/resources/testharness.js'></script>
48 : 2 : <script src='/resources/testharnessreport.js'></script>
49 : 2 : <script src='resources/xmlhttprequest-event-order.js'></script>
50 : 2 : <title>XMLHttpRequest: The abort() method: abort and loadend events</title>
51 : 2 : </head>
52 : 2 :
53 : 2 : <body>
54 : 2 : <div id='log'></div>
55 : 2 :
56 : 2 : <script type='text/javascript'>
57 : 2 : var test = async_test();
58 : 2 :
59 : 2 : test.step(function()
60 : 2 : {
61 : 2 : var xhr = new XMLHttpRequest();
62 : 2 : prepare_xhr_for_event_order_test(xhr);
63 : 2 :
64 : 2 : xhr.addEventListener('loadstart', function() {
65 : 2 : test.step(function()
66 : 2 : {
67 : 2 : var readyState = xhr.readyState;
68 : 2 : if (readyState == 1)
69 : 2 : {
70 : 2 : xhr.abort();
71 : 2 : VerifyResult();
72 : 2 : } else {
73 : 2 : assert_unreached('Loadstart event should not fire in readyState '+readyState);
74 : 2 : }
75 : 2 : });
76 : 2 : });
77 : 2 :
78 : 2 : function VerifyResult()
79 : 2 : {
80 : 2 : test.step(function()
81 : 2 : {
82 : 2 : assert_xhr_event_order_matches([1, 'loadstart(0,0,false)', 4, 'upload.abort(0,0,false)', 'upload.loadend(0,0,false)', 'abort(0,0,false)', 'loadend(0,0,false)']);
83 : 2 :
84 : 2 : assert_equals(xhr.readyState, 0, 'state should be UNSENT');
85 : 2 : test.done();
86 : 2 : });
87 : 2 : };
88 : 2 :
89 : 2 : xhr.open('POST', './resources/content.py', true);
90 : 2 : xhr.send('Test Message');
91 : 2 : });
92 : 2 : </script>
93 : 2 : </body>
94 : 2 : </html>
95 : 2 :
96 : 2 : *
97 : 2 : * abort-event-order.htm
98 : 2 : */
|