summaryrefslogtreecommitdiffstats
path: root/chrome/test/unit/test_create_channel_chrome_url.js
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/test/unit/test_create_channel_chrome_url.js')
-rw-r--r--chrome/test/unit/test_create_channel_chrome_url.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/chrome/test/unit/test_create_channel_chrome_url.js b/chrome/test/unit/test_create_channel_chrome_url.js
new file mode 100644
index 0000000000..19c154cba8
--- /dev/null
+++ b/chrome/test/unit/test_create_channel_chrome_url.js
@@ -0,0 +1,36 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+"use strict";
+
+const { NetUtil } = ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
+
+function testURL(url) {
+ Services.io.newChannelFromURI(
+ NetUtil.newURI(url),
+ null, // aLoadingNode
+ Services.scriptSecurityManager.getSystemPrincipal(),
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_ALLOW_CROSS_ORIGIN_SEC_CONTEXT_IS_NULL,
+ Ci.nsIContentPolicy.TYPE_OTHER
+ );
+}
+
+add_task(async function test_create_channel_with_chrome_url() {
+ try {
+ testURL("chrome://path");
+ Assert.ok(false);
+ } catch (e) {
+ // Chrome url fails canonicalization
+ Assert.equal(e.result, Cr.NS_ERROR_FAILURE);
+ }
+
+ try {
+ testURL("chrome://path/path/path");
+ Assert.ok(false);
+ } catch (e) {
+ // Chrome url passes canonicalization
+ Assert.equal(e.result, Cr.NS_ERROR_FILE_NOT_FOUND);
+ }
+});