Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

"use strict";
// Need profile so that the protocol handler can resolve the path to the underlying file
do_get_profile();
function run_test() {
// Check the protocol handler implements the correct interfaces
let handler = Services.io.getProtocolHandler("moz-newtab-wallpaper");
ok(
handler instanceof Ci.nsIProtocolHandler,
"moz-newtab-wallpaper handler provides nsIProtocolHandler interface"
);
ok(
handler instanceof Ci.nsISubstitutingProtocolHandler,
"moz-newtab-wallpaper handler provides nsISubstitutingProtocolHandler interface"
);
// Create a dummy loadinfo which we can hand to newChannel
let dummyURI = Services.io.newURI("https://www.example.com/");
let dummyChannel = NetUtil.newChannel({
uri: dummyURI,
loadUsingSystemPrincipal: true,
});
let dummyLoadInfo = dummyChannel.loadInfo;
// Test that empty host fails
let emptyHost = Services.io.newURI("moz-newtab-wallpaper://");
Assert.throws(
() => handler.newChannel(emptyHost, dummyLoadInfo),
/NS_ERROR/i,
"moz-newtab-wallpaper URI with empty host must not resolve"
);
// Test that valid host creates a channel (even if file doesn't exist yet)
let validURI = Services.io.newURI("moz-newtab-wallpaper://wallpaper.jpg");
let channel = handler.newChannel(validURI, dummyLoadInfo);
ok(channel, "moz-newtab-wallpaper URI with valid host creates a channel");
}