sendorder.https.any.js (2189B)
1 // META: global=window,worker 2 // META: script=/common/get-host-info.sub.js 3 // META: script=resources/webtransport-test-helpers.sub.js 4 // META: script=/common/utils.js 5 6 7 promise_test(async t => { 8 // Establish a WebTransport session. 9 const wt = new WebTransport(webtransport_url('echo.py')); 10 await wt.ready; 11 12 // Create a bidirectional stream with sendorder 13 const {readable, writable} = await wt.createBidirectionalStream({sendOrder: 3}); 14 assert_equals(writable.sendOrder, 3); 15 16 // Write a message to the writable end, and close it. 17 const writer = writable.getWriter(); 18 const encoder = new TextEncoder(); 19 writer.write(encoder.encode('Hello World')).catch(() => {}); 20 await writer.close(); 21 22 // Read the data on the readable end. 23 const reply = await read_stream_as_string(readable); 24 25 // Check that the message from the readable end matches the writable end. 26 assert_equals(reply, 'Hello World'); 27 }, 'WebTransport client should be able to create and handle a bidirectional stream with sendOrder'); 28 29 promise_test(async t => { 30 // Establish a WebTransport session. 31 const wt = new WebTransport(webtransport_url('echo.py')); 32 await wt.ready; 33 34 // Create a bidirectional stream with sendorder 35 const {readable, writable} = await wt.createBidirectionalStream(); 36 assert_equals(writable.sendOrder, null); 37 // modify it 38 writable.sendOrder = 4; 39 assert_equals(writable.sendOrder, 4); 40 }, 'WebTransport client should be able to modify unset sendOrder after stream creation'); 41 42 promise_test(async t => { 43 // Establish a WebTransport session. 44 const wt = new WebTransport(webtransport_url('echo.py')); 45 await wt.ready; 46 47 // Create a bidirectional stream without sendorder 48 const {readable, writable} = await wt.createBidirectionalStream({sendOrder: 3}); 49 assert_equals(writable.sendOrder, 3); 50 // modify it 51 writable.sendOrder = 5; 52 assert_equals(writable.sendOrder, 5); 53 writable.sendOrder = null; 54 assert_equals(writable.sendOrder, null); 55 // Note: this doesn't verify the underlying stack actually changes priority, just the API 56 // for controlling sendOrder 57 }, 'WebTransport client should be able to modify existing sendOrder after stream creation');