Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
michael@0 | 1 | // Tests nsIIDNService |
michael@0 | 2 | |
michael@0 | 3 | var reference = [ |
michael@0 | 4 | // The 3rd element indicates whether the second element |
michael@0 | 5 | // is ACE-encoded |
michael@0 | 6 | ["asciihost", "asciihost", false], |
michael@0 | 7 | ["b\u00FCcher", "xn--bcher-kva", true] |
michael@0 | 8 | ]; |
michael@0 | 9 | |
michael@0 | 10 | function run_test() { |
michael@0 | 11 | var idnService = Components.classes["@mozilla.org/network/idn-service;1"] |
michael@0 | 12 | .getService(Components.interfaces.nsIIDNService); |
michael@0 | 13 | |
michael@0 | 14 | for (var i = 0; i < reference.length; ++i) { |
michael@0 | 15 | dump("Testing " + reference[i] + "\n"); |
michael@0 | 16 | // We test the following: |
michael@0 | 17 | // - Converting UTF-8 to ACE and back gives us the expected answer |
michael@0 | 18 | // - Converting the ASCII string UTF-8 -> ACE leaves the string unchanged |
michael@0 | 19 | // - isACE returns true when we expect it to (third array elem true) |
michael@0 | 20 | do_check_eq(idnService.convertUTF8toACE(reference[i][0]), reference[i][1]); |
michael@0 | 21 | do_check_eq(idnService.convertUTF8toACE(reference[i][1]), reference[i][1]); |
michael@0 | 22 | do_check_eq(idnService.convertACEtoUTF8(reference[i][1]), reference[i][0]); |
michael@0 | 23 | do_check_eq(idnService.isACE(reference[i][1]), reference[i][2]); |
michael@0 | 24 | } |
michael@0 | 25 | |
michael@0 | 26 | // add an IDN whitelist pref |
michael@0 | 27 | var pbi = Components.classes["@mozilla.org/preferences-service;1"] |
michael@0 | 28 | .getService(Components.interfaces.nsIPrefBranch); |
michael@0 | 29 | pbi.setBoolPref("network.IDN.whitelist.es", true); |
michael@0 | 30 | |
michael@0 | 31 | // After bug 722299, set network.IDN.restriction_profile to "ASCII" in |
michael@0 | 32 | // order not to change the behaviour of non-whitelisted TLDs |
michael@0 | 33 | var oldProfile = pbi.getCharPref("network.IDN.restriction_profile", "moderate"); |
michael@0 | 34 | pbi.setCharPref("network.IDN.restriction_profile", "ASCII"); |
michael@0 | 35 | |
michael@0 | 36 | // check convertToDisplayIDN against the whitelist |
michael@0 | 37 | var isASCII = {}; |
michael@0 | 38 | do_check_eq(idnService.convertToDisplayIDN("b\u00FCcher.es", isASCII), "b\u00FCcher.es"); |
michael@0 | 39 | do_check_eq(isASCII.value, false); |
michael@0 | 40 | do_check_eq(idnService.convertToDisplayIDN("xn--bcher-kva.es", isASCII), "b\u00FCcher.es"); |
michael@0 | 41 | do_check_eq(isASCII.value, false); |
michael@0 | 42 | do_check_eq(idnService.convertToDisplayIDN("b\u00FCcher.uk", isASCII), "xn--bcher-kva.uk"); |
michael@0 | 43 | do_check_eq(isASCII.value, true); |
michael@0 | 44 | do_check_eq(idnService.convertToDisplayIDN("xn--bcher-kva.uk", isASCII), "xn--bcher-kva.uk"); |
michael@0 | 45 | do_check_eq(isASCII.value, true); |
michael@0 | 46 | |
michael@0 | 47 | // check ACE TLD's are handled by the whitelist |
michael@0 | 48 | pbi.setBoolPref("network.IDN.whitelist.xn--k-dha", true); |
michael@0 | 49 | do_check_eq(idnService.convertToDisplayIDN("test.\u00FCk", isASCII), "test.\u00FCk"); |
michael@0 | 50 | do_check_eq(isASCII.value, false); |
michael@0 | 51 | do_check_eq(idnService.convertToDisplayIDN("test.xn--k-dha", isASCII), "test.\u00FCk"); |
michael@0 | 52 | do_check_eq(isASCII.value, false); |
michael@0 | 53 | |
michael@0 | 54 | // reset pref to default |
michael@0 | 55 | pbi.setCharPref("network.IDN.restriction_profile", oldProfile); |
michael@0 | 56 | } |