"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); });