1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 registerCleanupFunction(async () => {
6 Services
.prefs
.clearUserPref("security.tls.version.max");
12 add_task(async
function setup() {
13 let h2Port
= Services
.env
.get("MOZHTTP2_PORT");
14 Assert
.notEqual(h2Port
, null);
15 Assert
.notEqual(h2Port
, "");
16 httpsUri
= "https://foo.example.com:" + h2Port
+ "/";
18 await
http3_setup_tests("h3", true);
21 let Listener = function () {};
23 Listener
.prototype = {
26 onStartRequest
: function testOnStartRequest(request
) {
27 Assert
.equal(request
.status
, Cr
.NS_OK
);
28 Assert
.equal(request
.responseStatus
, 200);
31 onDataAvailable
: function testOnDataAvailable(request
, stream
, off
, cnt
) {
32 read_stream(stream
, cnt
);
35 onStopRequest
: function testOnStopRequest(request
) {
38 httpVersion
= request
.protocolVersion
;
40 if (this.expect_http3
) {
41 Assert
.equal(httpVersion
, "h3");
43 Assert
.notEqual(httpVersion
, "h3");
50 function chanPromise(chan
, listener
) {
51 return new Promise(resolve
=> {
52 function finish(result
) {
55 listener
.finish
= finish
;
56 chan
.asyncOpen(listener
);
60 function makeChan(uri
) {
61 let chan
= NetUtil
.newChannel({
63 loadUsingSystemPrincipal
: true,
64 }).QueryInterface(Ci
.nsIHttpChannel
);
65 chan
.loadFlags
= Ci
.nsIChannel
.LOAD_INITIAL_DOCUMENT_URI
;
69 async
function test_http3_used(expect_http3
) {
70 let listener
= new Listener();
71 listener
.expect_http3
= expect_http3
;
72 let chan
= makeChan(httpsUri
);
73 await
chanPromise(chan
, listener
);
76 add_task(async
function test_tls13_pref() {
77 await
test_http3_used(true);
79 await
test_http3_used(true);
82 Services
.prefs
.setIntPref("security.tls.version.max", 3);
83 await
test_http3_used(false);
85 await
test_http3_used(false);
88 Services
.obs
.notifyObservers(null, "net:cancel-all-connections");
89 Services
.prefs
.setIntPref("security.tls.version.max", 4);
90 await
test_http3_used(true);
92 await
test_http3_used(true);