3 const dns = Cc["@mozilla.org/network/dns-service;1"].getService(
6 const override = Cc["@mozilla.org/network/native-dns-override;1"].getService(
7 Ci.nsINativeDNSResolverOverride
9 const mainThread = Services.tm.currentThread;
11 function makeListenerBlock(next) {
13 onLookupComplete(inRequest, inRecord, inStatus) {
14 Assert.ok(!Components.isSuccessCode(inStatus));
20 function makeListenerDontBlock(next, expectedAnswer) {
22 onLookupComplete(inRequest, inRecord, inStatus) {
23 Assert.equal(inStatus, Cr.NS_OK);
24 inRecord.QueryInterface(Ci.nsIDNSAddrRecord);
25 var answer = inRecord.getNextAddrAsString();
27 Assert.equal(answer, expectedAnswer);
29 Assert.ok(answer == "127.0.0.1" || answer == "::1");
36 function do_test({ dnsDisabled, mustBlock, testDomain, expectedAnswer }) {
37 return new Promise(resolve => {
38 Services.prefs.setBoolPref("network.dns.disabled", dnsDisabled);
42 Ci.nsIDNSService.RESOLVE_TYPE_DEFAULT,
46 ? makeListenerBlock(resolve)
47 : makeListenerDontBlock(resolve, expectedAnswer),
49 {} // Default origin attributes
52 Assert.ok(mustBlock === true);
59 override.addIPOverride("foo.bar", "127.0.0.1");
60 registerCleanupFunction(function() {
61 override.clearOverrides();
62 Services.prefs.clearUserPref("network.dns.disabled");
67 // IP literals should be resolved even if dns is disabled
68 add_task(async function testIPLiteral() {
72 testDomain: "0x01010101",
73 expectedAnswer: "1.1.1.1",
77 add_task(async function testBlocked() {
81 testDomain: "foo.bar",
85 add_task(async function testNotBlocked() {
89 testDomain: "foo.bar",