netwerk/test/unit/test_bug396389.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/netwerk/test/unit/test_bug396389.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,71 @@
     1.4 +function round_trip(uri) {
     1.5 +  var objectOutStream = Cc["@mozilla.org/binaryoutputstream;1"].
     1.6 +                       createInstance(Ci.nsIObjectOutputStream);
     1.7 +  var pipe = Cc["@mozilla.org/pipe;1"].createInstance(Ci.nsIPipe);
     1.8 +  pipe.init(false, false, 0, 0xffffffff, null);
     1.9 +  objectOutStream.setOutputStream(pipe.outputStream);
    1.10 +  objectOutStream.writeCompoundObject(uri, Ci.nsISupports, true);
    1.11 +  objectOutStream.close();
    1.12 +
    1.13 +  var objectInStream = Cc["@mozilla.org/binaryinputstream;1"].
    1.14 +                       createInstance(Ci.nsIObjectInputStream);
    1.15 +  objectInStream.setInputStream(pipe.inputStream);
    1.16 +  return objectInStream.readObject(true).QueryInterface(Ci.nsIURI);
    1.17 +}
    1.18 +
    1.19 +var prefData =
    1.20 +  [
    1.21 +    {
    1.22 +      name: "network.IDN_show_punycode",
    1.23 +      newVal: false
    1.24 +    },
    1.25 +    {
    1.26 +      name: "network.IDN.whitelist.ch",
    1.27 +      newVal: true
    1.28 +    }
    1.29 +  ];
    1.30 +
    1.31 +function run_test() {
    1.32 +  var ios = Cc["@mozilla.org/network/io-service;1"].
    1.33 +    getService(Ci.nsIIOService);
    1.34 +
    1.35 +  var uri1 = ios.newURI("file:///", null, null);
    1.36 +  do_check_true(uri1 instanceof Ci.nsIFileURL);
    1.37 +
    1.38 +  var uri2 = uri1.clone();
    1.39 +  do_check_true(uri2 instanceof Ci.nsIFileURL);
    1.40 +  do_check_true(uri1.equals(uri2));
    1.41 +
    1.42 +  var uri3 = round_trip(uri1);
    1.43 +  do_check_true(uri3 instanceof Ci.nsIFileURL);
    1.44 +  do_check_true(uri1.equals(uri3));
    1.45 +
    1.46 +  // Make sure our prefs are set such that this test actually means something
    1.47 +  var prefs = Cc["@mozilla.org/preferences-service;1"].
    1.48 +              getService(Ci.nsIPrefBranch);
    1.49 +  for each (var pref in prefData) {
    1.50 +    try {
    1.51 +      pref.oldVal = prefs.getBoolPref(pref.name);
    1.52 +    } catch(e) {
    1.53 +    }
    1.54 +    prefs.setBoolPref(pref.name, pref.newVal);
    1.55 +  }
    1.56 +  
    1.57 +  try {
    1.58 +    // URI stolen from
    1.59 +    // http://lists.w3.org/Archives/Public/public-iri/2004Mar/0012.html
    1.60 +    var uri4 = ios.newURI("http://xn--jos-dma.example.net.ch/", null, null);
    1.61 +    do_check_eq(uri4.asciiHost, "xn--jos-dma.example.net.ch");
    1.62 +    do_check_eq(uri4.host, "jos\u00e9.example.net.ch");
    1.63 +    
    1.64 +    var uri5 = round_trip(uri4);
    1.65 +    do_check_true(uri4.equals(uri5));
    1.66 +    do_check_eq(uri4.host, uri5.host);
    1.67 +    do_check_eq(uri4.asciiHost, uri5.asciiHost);
    1.68 +  } finally {
    1.69 +    for each (var pref in prefData) {
    1.70 +      if (prefs.prefHasUserValue(pref.name))
    1.71 +        prefs.clearUserPref(pref.name);
    1.72 +    }
    1.73 +  }
    1.74 +}

mercurial