summaryrefslogtreecommitdiffstats
path: root/toolkit/components/search/tests/xpcshell/test_opensearch_icons_invalid.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/search/tests/xpcshell/test_opensearch_icons_invalid.js')
-rw-r--r--toolkit/components/search/tests/xpcshell/test_opensearch_icons_invalid.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/toolkit/components/search/tests/xpcshell/test_opensearch_icons_invalid.js b/toolkit/components/search/tests/xpcshell/test_opensearch_icons_invalid.js
new file mode 100644
index 0000000000..6db13a0da8
--- /dev/null
+++ b/toolkit/components/search/tests/xpcshell/test_opensearch_icons_invalid.js
@@ -0,0 +1,56 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/* Test that an installed engine can't use a resource URL for an icon */
+
+"use strict";
+
+add_setup(async function () {
+ let server = useHttpServer("");
+ server.registerContentType("sjs", "sjs");
+ await AddonTestUtils.promiseStartupManager();
+});
+
+add_task(async function test_installedresourceicon() {
+ // Attempts to load a resource:// url as an icon.
+ let engine1 = await SearchTestUtils.promiseNewSearchEngine({
+ url: `${gDataUrl}opensearch/resourceicon.xml`,
+ });
+ // Attempts to load a chrome:// url as an icon.
+ let engine2 = await SearchTestUtils.promiseNewSearchEngine({
+ url: `${gDataUrl}opensearch/chromeicon.xml`,
+ });
+
+ Assert.equal(undefined, engine1.getIconURL());
+ Assert.equal(undefined, engine2.getIconURL());
+});
+
+add_task(async function test_installedhttpplace() {
+ let observed = TestUtils.consoleMessageObserved(msg => {
+ return msg.wrappedJSObject.arguments[0].includes(
+ "Content type does not match expected"
+ );
+ });
+
+ // The easiest way to test adding the icon is via a generated xml, otherwise
+ // we have to somehow insert the address of the server into it.
+ // Attempts to load a non-image page into an image icon.
+ let engine = await SearchTestUtils.promiseNewSearchEngine({
+ url:
+ `${gDataUrl}data/engineMaker.sjs?` +
+ JSON.stringify({
+ baseURL: gDataUrl,
+ image: "head_search.js",
+ name: "invalidicon",
+ method: "GET",
+ }),
+ });
+
+ await observed;
+
+ Assert.equal(
+ undefined,
+ engine.getIconURL(),
+ "Should not have set an iconURI"
+ );
+});