"use strict"; const BinaryInputStream = Components.Constructor( "@mozilla.org/binaryinputstream;1", "nsIBinaryInputStream", "setInputStream" ); const BinaryOutputStream = Components.Constructor( "@mozilla.org/binaryoutputstream;1", "nsIBinaryOutputStream", "setOutputStream" ); const Pipe = Components.Constructor("@mozilla.org/pipe;1", "nsIPipe", "init"); function run_test() { var ios = Cc["@mozilla.org/network/io-service;1"].createInstance( Ci.nsIIOService ); var baseURI = ios.newURI("http://example.com/", "UTF-8"); // This depends on the redirector for about:license having the // nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT flag. var aboutLicense = ios.newURI("about:license", "UTF-8", baseURI); var pipe = new Pipe(false, false, 0, 0, null); var output = new BinaryOutputStream(pipe.outputStream); var input = new BinaryInputStream(pipe.inputStream); output.QueryInterface(Ci.nsIObjectOutputStream); input.QueryInterface(Ci.nsIObjectInputStream); output.writeCompoundObject(aboutLicense, Ci.nsIURI, true); var copy = input.readObject(true); copy.QueryInterface(Ci.nsIURI); Assert.equal(copy.asciiSpec, aboutLicense.asciiSpec); Assert.ok(copy.equals(aboutLicense)); }