Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const { TestUtils } = ChromeUtils.importESModule(
);
trr_test_setup();
registerCleanupFunction(async () => {
trr_clear_prefs();
Services.prefs.clearUserPref("network.http.debug-observations");
});
let trrServer;
add_task(async function setup() {
trrServer = new TRRServer();
registerCleanupFunction(async () => {
await trrServer.stop();
});
await trrServer.start();
await trrServer.registerDoHAnswers("example.com", "A", {
answers: [
{
name: "example.com",
ttl: 55,
type: "A",
flush: false,
data: "1.2.3.4",
},
],
});
Services.prefs.setIntPref("network.trr.mode", 3);
Services.prefs.setCharPref(
"network.trr.uri",
`https://foo.example.com:${trrServer.port()}/dns-query`
);
// Perform an initial DNS query to ensure the TRR connection info is
// initialized before we fire application-foreground.
await new TRRDNSListener("example.com", { expectedAnswer: "1.2.3.4" });
});
add_task(async function test_speculative_connect_on_foreground() {
Services.prefs.setBoolPref("network.http.debug-observations", true);
let connectRequestPromise = TestUtils.topicObserved(
"speculative-connect-request"
);
Services.obs.notifyObservers(null, "application-foreground");
let [, hashKey] = await connectRequestPromise;
Assert.ok(
hashKey.includes(`foo.example.com:${trrServer.port()}`),
`Expected speculative connect to TRR server, got: ${hashKey}`
);
});