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