Source code

Revision control

Copy as Markdown

Other Tools

/* Any copyright is dedicated to the Public Domain.
"use strict";
const {
ExtensionUtils: { isExtensionUrl },
} = ChromeUtils.importESModule("resource://gre/modules/ExtensionUtils.sys.mjs");
add_task(function test_isExtensionUrl() {
const badUrl = "extension://test";
const goodUrl = "moz-extension://test";
let expectedResults = [
{
url: "",
expected: false,
msg: "Empty string is not a moz-extension scheme url.",
},
{
url: badUrl,
expected: false,
msg: "String is not a moz-extension scheme url.",
},
{
url: goodUrl,
expected: true,
msg: "String is a moz-extension scheme url.",
},
{
url: new URL(badUrl),
expected: false,
msg: "URL is not a moz-extension scheme url.",
},
{
url: new URL(goodUrl),
expected: true,
msg: "URL is a moz-extension scheme url.",
},
{
url: Services.io.newURI(badUrl),
expected: false,
msg: "nsIURI is not a moz-extension scheme url.",
},
{
url: Services.io.newURI(goodUrl),
expected: true,
msg: "nsIURI is a moz-extension scheme url.",
},
{
url: Services.scriptSecurityManager.createContentPrincipal(
Services.io.newURI(badUrl),
{}
),
expected: false,
msg: "nsIPrincipal is not a moz-extension scheme url.",
},
{
url: Services.scriptSecurityManager.createContentPrincipal(
Services.io.newURI(goodUrl),
{}
),
expected: true,
msg: "nsIPrincipal is a moz-extension scheme url.",
},
{
url: null,
expected: false,
msg: "null is not a moz-extension scheme url.",
},
{
url: undefined,
expected: false,
msg: "null is not a moz-extension scheme url.",
},
];
for (const result of expectedResults) {
const { url, expected, msg } = result;
Assert.equal(isExtensionUrl(url), expected, msg);
}
});