diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /netwerk/test/unit/test_bug464591.js | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'netwerk/test/unit/test_bug464591.js')
-rw-r--r-- | netwerk/test/unit/test_bug464591.js | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/netwerk/test/unit/test_bug464591.js b/netwerk/test/unit/test_bug464591.js new file mode 100644 index 000000000..34d7c46b5 --- /dev/null +++ b/netwerk/test/unit/test_bug464591.js @@ -0,0 +1,81 @@ + +const StandardURL = Components.Constructor("@mozilla.org/network/standard-url;1", + "nsIStandardURL", + "init"); + + // 1.percent-encoded IDN that contains blacklisted character should be converted + // to punycode, not UTF-8 string + // 2.only hostname-valid percent encoded ASCII characters should be decoded + // 3.IDN convertion must not bypassed by %00 +let reference = [ + ["www.example.com%e2%88%95www.mozill%d0%b0.com%e2%81%84www.mozilla.org", + "www.example.xn--comwww-re3c.xn--mozill-8nf.xn--comwww-rq0c.mozilla.org"], + ["www.mozill%61%2f.org", "www.mozilla%2f.org"], // a slash is not valid in the hostname + ["www.e%00xample.com%e2%88%95www.mozill%d0%b0.com%e2%81%84www.mozill%61.org", + "www.e%00xample.xn--comwww-re3c.xn--mozill-8nf.xn--comwww-rq0c.mozilla.org"], +]; + +let prefData = + [ + { + name: "network.enableIDN", + newVal: true + }, + { + name: "network.IDN_show_punycode", + newVal: false + }, + { + name: "network.IDN.whitelist.org", + newVal: true + } + ]; + + let prefIdnBlackList = { + name: "network.IDN.blacklist_chars", + minimumList: "\u2215\u0430\u2044", + }; + +function stringToURL(str) { + return (new StandardURL(Ci.nsIStandardURL.URLTYPE_AUTHORITY, 80, + str, "UTF-8", null)) + .QueryInterface(Ci.nsIURL); +} + +function run_test() { + // Make sure our prefs are set such that this test actually means something + let prefs = Cc["@mozilla.org/preferences-service;1"]. + getService(Ci.nsIPrefBranch); + for (let pref of prefData) { + prefs.setBoolPref(pref.name, pref.newVal); + } + + prefIdnBlackList.set = false; + try { + prefIdnBlackList.oldVal = prefs.getComplexValue(prefIdnBlackList.name, + Ci.nsIPrefLocalizedString).data; + prefs.getComplexValue(prefIdnBlackList.name, + Ci.nsIPrefLocalizedString).data=prefIdnBlackList.minimumList; + prefIdnBlackList.set = true; + } catch (e) { + } + + do_register_cleanup(function() { + for (let pref of prefData) { + prefs.clearUserPref(pref.name); + } + if (prefIdnBlackList.set) { + prefs.getComplexValue(prefIdnBlackList.name, + Ci.nsIPrefLocalizedString).data = prefIdnBlackList.oldVal; + } + }); + + for (let i = 0; i < reference.length; ++i) { + try { + let result = stringToURL("http://" + reference[i][0]).host; + equal(result, reference[i][1]); + } catch (e) { + ok(false, "Error testing "+reference[i][0]); + } + } +} |