summaryrefslogtreecommitdiffstats
path: root/toolkit/components/thumbnails/test/test_thumbnails_interfaces.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/thumbnails/test/test_thumbnails_interfaces.js')
-rw-r--r--toolkit/components/thumbnails/test/test_thumbnails_interfaces.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/toolkit/components/thumbnails/test/test_thumbnails_interfaces.js b/toolkit/components/thumbnails/test/test_thumbnails_interfaces.js
new file mode 100644
index 0000000000..eb70e8011b
--- /dev/null
+++ b/toolkit/components/thumbnails/test/test_thumbnails_interfaces.js
@@ -0,0 +1,54 @@
+"use strict";
+
+// This is an xpcshell test and gets a browser test env applied, so we
+// need to still manually import NetUtil.
+// eslint-disable-next-line mozilla/no-redeclare-with-import-autofix
+const { NetUtil } = ChromeUtils.importESModule(
+ "resource://gre/modules/NetUtil.sys.mjs"
+);
+
+// need profile so that PageThumbsStorageService can resolve the path to the underlying file
+do_get_profile();
+
+function run_test() {
+ // check the protocol handler implements the correct interface
+ let handler = Services.io.getProtocolHandler("moz-page-thumb");
+ ok(
+ handler instanceof Ci.nsIProtocolHandler,
+ "moz-page-thumb handler provides a protocol handler interface"
+ );
+
+ // create a dummy loadinfo which we can hand to newChannel.
+ let dummyURI = Services.io.newURI("https://www.example.com/1");
+ let dummyChannel = NetUtil.newChannel({
+ uri: dummyURI,
+ loadUsingSystemPrincipal: true,
+ });
+ let dummyLoadInfo = dummyChannel.loadInfo;
+
+ // and check that the error cases work as specified
+ let badhost = Services.io.newURI(
+ "moz-page-thumb://wronghost/?url=http%3A%2F%2Fwww.mozilla.org%2F"
+ );
+ Assert.throws(
+ () => handler.newChannel(badhost, dummyLoadInfo),
+ /NS_ERROR_NOT_AVAILABLE/i,
+ "moz-page-thumb object with wrong host must not resolve to a file path"
+ );
+
+ let badQuery = Services.io.newURI(
+ "moz-page-thumb://thumbnail/http%3A%2F%2Fwww.mozilla.org%2F"
+ );
+ Assert.throws(
+ () => handler.newChannel(badQuery, dummyLoadInfo),
+ /NS_ERROR_NOT_AVAILABLE/i,
+ "moz-page-thumb object with malformed query parameters must not resolve to a file path"
+ );
+
+ let noURL = Services.io.newURI("moz-page-thumb://thumbnail/?badStuff");
+ Assert.throws(
+ () => handler.newChannel(noURL, dummyLoadInfo),
+ /NS_ERROR_NOT_AVAILABLE/i,
+ "moz-page-thumb object without a URL parameter must not resolve to a file path"
+ );
+}