Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: os == 'android' OR os == 'win'
- Manifest: netwerk/test/unit/xpcshell.toml
//
// server-initiated WebTransport stream must be handled gracefully.
//
/* import-globals-from head_webtransport.js */
"use strict";
var h3Port;
var host;
registerCleanupFunction(async () => {
Services.prefs.clearUserPref("network.dns.localDomains");
Services.prefs.clearUserPref(
"network.http.http3.alt-svc-mapping-for-testing"
);
});
add_task(async function setup() {
await http3_setup_tests("h3");
h3Port = Services.env.get("MOZHTTP3_PORT");
Assert.notEqual(h3Port, null);
Assert.notEqual(h3Port, "");
host = "foo.example.com:" + h3Port;
});
add_task(async function test_wt_stop_sending_no_error() {
let webTransport = NetUtil.newWebTransport().QueryInterface(
Ci.nsIWebTransport
);
let listener = new WebTransportListener().QueryInterface(
Ci.WebTransportSessionEventListener
);
let pReady = new Promise(resolve => {
listener.ready = resolve;
});
// The server opens a server-initiated bidi stream and, in a later flight,
// sends STOP_SENDING(H3_NO_ERROR) on it. Resolve once that is delivered.
let pStopSending = new Promise(resolve => {
listener.stopSending = resolve;
});
// We don't act on the incoming stream, but a handler must exist since
// onIncomingBidirectionalStreamAvailable calls it.
listener.streamAvailable = () => {};
webTransport.asyncConnect(
true,
[],
Services.scriptSecurityManager.getSystemPrincipal(),
Ci.nsILoadInfo.SEC_ALLOW_CROSS_ORIGIN_SEC_CONTEXT_IS_NULL,
listener
);
await pReady;
await pStopSending;
Assert.ok(true, "STOP_SENDING(H3_NO_ERROR) was handled");
webTransport.closeSession(0, "");
});