1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
//
// Tests that calling asyncResolve with the RESOLVE_DISABLE_IPV4 flag doesn't
// return any IPv4 addresses.
//
"use strict";
const gOverride = Cc["@mozilla.org/network/native-dns-override;1"].getService(
Ci.nsINativeDNSResolverOverride
);
const defaultOriginAttributes = {};
add_task(async function test_none() {
let [, inRecord] = await new Promise(resolve => {
let listener = {
onLookupComplete(inRequest, inRecord, inStatus) {
resolve([inRequest, inRecord, inStatus]);
},
QueryInterface: ChromeUtils.generateQI(["nsIDNSListener"]),
};
Services.dns.asyncResolve(
"example.org",
Ci.nsIDNSService.RESOLVE_TYPE_DEFAULT,
Ci.nsIDNSService.RESOLVE_DISABLE_IPV4,
null, // resolverInfo
listener,
null,
defaultOriginAttributes
);
});
if (inRecord && inRecord.QueryInterface(Ci.nsIDNSAddrRecord)) {
while (inRecord.hasMore()) {
let nextIP = inRecord.getNextAddrAsString();
ok(nextIP.includes(":"), `${nextIP} should be IPv6`);
}
}
});
add_task(async function test_some() {
Services.dns.clearCache(true);
gOverride.addIPOverride("example.com", "1.1.1.1");
gOverride.addIPOverride("example.org", "::1:2:3");
let [, inRecord] = await new Promise(resolve => {
let listener = {
onLookupComplete(inRequest, inRecord, inStatus) {
resolve([inRequest, inRecord, inStatus]);
},
QueryInterface: ChromeUtils.generateQI(["nsIDNSListener"]),
};
Services.dns.asyncResolve(
"example.org",
Ci.nsIDNSService.RESOLVE_TYPE_DEFAULT,
Ci.nsIDNSService.RESOLVE_DISABLE_IPV4,
null, // resolverInfo
listener,
null,
defaultOriginAttributes
);
});
ok(inRecord.QueryInterface(Ci.nsIDNSAddrRecord));
equal(inRecord.getNextAddrAsString(), "::1:2:3");
equal(inRecord.hasMore(), false);
});
|