Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
var unsafeAboutModule = {
QueryInterface: ChromeUtils.generateQI(["nsIAboutModule"]),
newChannel(aURI, aLoadInfo) {
var uri = Services.io.newURI("about:blank");
let chan = Services.io.newChannelFromURIWithLoadInfo(uri, aLoadInfo);
chan.owner = Services.scriptSecurityManager.getSystemPrincipal();
return chan;
},
getURIFlags() {
return Ci.nsIAboutModule.URI_SAFE_FOR_UNTRUSTED_CONTENT;
},
};
var factory = {
createInstance(aIID) {
return unsafeAboutModule.QueryInterface(aIID);
},
QueryInterface: ChromeUtils.generateQI(["nsIFactory"]),
};
function run_test() {
let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
let classID = Services.uuid.generateUUID();
registrar.registerFactory(
classID,
"",
"@mozilla.org/network/protocol/about;1?what=unsafe",
factory
);
let aboutUnsafeChan = NetUtil.newChannel({
uri: "about:unsafe",
loadUsingSystemPrincipal: true,
});
Assert.equal(
null,
aboutUnsafeChan.owner,
"URI_SAFE_FOR_UNTRUSTED_CONTENT channel has no owner"
);
registrar.unregisterFactory(classID, factory);
}