242 lines
5 KiB
JavaScript
242 lines
5 KiB
JavaScript
"use strict";
|
|
Services.env.set("MOZ_DISABLE_NONLOCAL_CONNECTIONS", "0");
|
|
Services.prefs.setBoolPref("network.dns.native-is-localhost", true);
|
|
|
|
async function testHeader(domain, expectHeader, isHttps) {
|
|
Services.prefs.setCharPref("network.dns.localDomains", "www" + domain);
|
|
var URL = isHttps ? "https://www" + domain : "http://www" + domain;
|
|
|
|
let { req } = await new Promise(resolve => {
|
|
let chan = NetUtil.newChannel({
|
|
uri: URL,
|
|
loadUsingSystemPrincipal: true,
|
|
});
|
|
chan.asyncOpen(
|
|
new ChannelListener(
|
|
req1 => resolve({ req: req1 }),
|
|
null,
|
|
CL_EXPECT_FAILURE
|
|
)
|
|
);
|
|
});
|
|
|
|
if (expectHeader) {
|
|
Assert.equal(
|
|
req
|
|
.QueryInterface(Ci.nsIHttpChannel)
|
|
.getRequestHeader("X-Search-Subdivision"),
|
|
"1"
|
|
);
|
|
} else {
|
|
Assert.throws(
|
|
() => {
|
|
req
|
|
.QueryInterface(Ci.nsIHttpChannel)
|
|
.getRequestHeader("X-Search-Subdivision");
|
|
},
|
|
/NS_ERROR_NOT_AVAILABLE/,
|
|
"search header missing"
|
|
);
|
|
}
|
|
}
|
|
|
|
add_task(async function googleDomainSearchHeaderChecker() {
|
|
const googleStandardDomains = [
|
|
".google.com",
|
|
".google.ad",
|
|
".google.ae",
|
|
".google.com.af",
|
|
".google.com.ag",
|
|
".google.al",
|
|
".google.am",
|
|
".google.co.ao",
|
|
".google.com.ar",
|
|
".google.as",
|
|
".google.at",
|
|
".google.com.au",
|
|
".google.az",
|
|
".google.ba",
|
|
".google.com.bd",
|
|
".google.be",
|
|
".google.bf",
|
|
".google.bg",
|
|
".google.com.bh",
|
|
".google.bi",
|
|
".google.bj",
|
|
".google.com.bn",
|
|
".google.com.bo",
|
|
".google.com.br",
|
|
".google.bs",
|
|
".google.bt",
|
|
".google.co.bw",
|
|
".google.by",
|
|
".google.com.bz",
|
|
".google.ca",
|
|
".google.cd",
|
|
".google.cf",
|
|
".google.cg",
|
|
".google.ch",
|
|
".google.ci",
|
|
".google.co.ck",
|
|
".google.cl",
|
|
".google.cm",
|
|
".google.cn",
|
|
".google.com.co",
|
|
".google.co.cr",
|
|
".google.com.cu",
|
|
".google.cv",
|
|
".google.com.cy",
|
|
".google.cz",
|
|
".google.de",
|
|
".google.dj",
|
|
".google.dk",
|
|
".google.dm",
|
|
".google.com.do",
|
|
".google.dz",
|
|
".google.com.ec",
|
|
".google.ee",
|
|
".google.com.eg",
|
|
".google.es",
|
|
".google.com.et",
|
|
".google.fi",
|
|
".google.com.fj",
|
|
".google.fm",
|
|
".google.fr",
|
|
".google.ga",
|
|
".google.ge",
|
|
".google.gg",
|
|
".google.com.gh",
|
|
".google.com.gi",
|
|
".google.gl",
|
|
".google.gm",
|
|
".google.gr",
|
|
".google.com.gt",
|
|
".google.gy",
|
|
".google.com.hk",
|
|
".google.hn",
|
|
".google.hr",
|
|
".google.ht",
|
|
".google.hu",
|
|
".google.co.id",
|
|
".google.ie",
|
|
".google.co.il",
|
|
".google.im",
|
|
".google.co.in",
|
|
".google.iq",
|
|
".google.is",
|
|
".google.it",
|
|
".google.je",
|
|
".google.com.jm",
|
|
".google.jo",
|
|
".google.co.jp",
|
|
".google.co.ke",
|
|
".google.com.kh",
|
|
".google.ki",
|
|
".google.kg",
|
|
".google.co.kr",
|
|
".google.com.kw",
|
|
".google.kz",
|
|
".google.la",
|
|
".google.com.lb",
|
|
".google.li",
|
|
".google.lk",
|
|
".google.co.ls",
|
|
".google.lt",
|
|
".google.lu",
|
|
".google.lv",
|
|
".google.com.ly",
|
|
".google.co.ma",
|
|
".google.md",
|
|
".google.me",
|
|
".google.mg",
|
|
".google.mk",
|
|
".google.ml",
|
|
".google.com.mm",
|
|
".google.mn",
|
|
".google.com.mt",
|
|
".google.mu",
|
|
".google.mv",
|
|
".google.mw",
|
|
".google.com.mx",
|
|
".google.com.my",
|
|
".google.co.mz",
|
|
".google.com.na",
|
|
".google.com.ng",
|
|
".google.com.ni",
|
|
".google.ne",
|
|
".google.nl",
|
|
".google.no",
|
|
".google.com.np",
|
|
".google.nr",
|
|
".google.nu",
|
|
".google.co.nz",
|
|
".google.com.om",
|
|
".google.com.pa",
|
|
".google.com.pe",
|
|
".google.com.pg",
|
|
".google.com.ph",
|
|
".google.com.pk",
|
|
".google.pl",
|
|
".google.pn",
|
|
".google.com.pr",
|
|
".google.ps",
|
|
".google.pt",
|
|
".google.com.py",
|
|
".google.com.qa",
|
|
".google.ro",
|
|
".google.ru",
|
|
".google.rw",
|
|
".google.com.sa",
|
|
".google.com.sb",
|
|
".google.sc",
|
|
".google.se",
|
|
".google.com.sg",
|
|
".google.sh",
|
|
".google.si",
|
|
".google.sk",
|
|
".google.com.sl",
|
|
".google.sn",
|
|
".google.so",
|
|
".google.sm",
|
|
".google.sr",
|
|
".google.st",
|
|
".google.com.sv",
|
|
".google.td",
|
|
".google.tg",
|
|
".google.co.th",
|
|
".google.com.tj",
|
|
".google.tl",
|
|
".google.tm",
|
|
".google.tn",
|
|
".google.to",
|
|
".google.com.tr",
|
|
".google.tt",
|
|
".google.com.tw",
|
|
".google.co.tz",
|
|
".google.com.ua",
|
|
".google.co.ug",
|
|
".google.co.uk",
|
|
".google.com.uy",
|
|
".google.co.uz",
|
|
".google.com.vc",
|
|
".google.co.ve",
|
|
".google.co.vi",
|
|
".google.com.vn",
|
|
".google.vu",
|
|
".google.ws",
|
|
".google.rs",
|
|
".google.co.za",
|
|
".google.co.zm",
|
|
".google.co.zw",
|
|
".google.cat",
|
|
];
|
|
|
|
googleStandardDomains.forEach(domain => {
|
|
testHeader(domain, true, true);
|
|
//tests if we don't send any header for google-domain http requests
|
|
testHeader(domain, false, false);
|
|
});
|
|
|
|
//tests if we don't send any header for non-google domains
|
|
testHeader("googlelike.com", false, true);
|
|
});
|