summaryrefslogtreecommitdiffstats
path: root/toolkit/components/search/tests/xpcshell/test_migrateWebExtensionEngine.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /toolkit/components/search/tests/xpcshell/test_migrateWebExtensionEngine.js
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/search/tests/xpcshell/test_migrateWebExtensionEngine.js')
-rw-r--r--toolkit/components/search/tests/xpcshell/test_migrateWebExtensionEngine.js91
1 files changed, 91 insertions, 0 deletions
diff --git a/toolkit/components/search/tests/xpcshell/test_migrateWebExtensionEngine.js b/toolkit/components/search/tests/xpcshell/test_migrateWebExtensionEngine.js
new file mode 100644
index 0000000000..562fd9191c
--- /dev/null
+++ b/toolkit/components/search/tests/xpcshell/test_migrateWebExtensionEngine.js
@@ -0,0 +1,91 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const kExtensionID = "simple@tests.mozilla.org";
+
+add_setup(async function () {
+ useHttpServer("opensearch");
+ await AddonTestUtils.promiseStartupManager();
+ await SearchTestUtils.useTestEngines("data1");
+ await Services.search.init();
+});
+
+add_task(async function test_migrateLegacyEngine() {
+ let engine = await SearchTestUtils.promiseNewSearchEngine({
+ url: gDataUrl + "simple.xml",
+ });
+
+ // Modify the loadpath so it looks like a legacy plugin loadpath
+ engine.wrappedJSObject._loadPath = `jar:[profile]/extensions/${kExtensionID}.xpi!/simple.xml`;
+ engine.wrappedJSObject._extensionID = null;
+
+ await Services.search.setDefault(
+ engine,
+ Ci.nsISearchService.CHANGE_REASON_UNKNOWN
+ );
+
+ // This should replace the existing engine
+ let extension = await SearchTestUtils.installSearchExtension(
+ {
+ id: "simple",
+ name: "simple",
+ search_url: "https://example.com/",
+ },
+ { skipUnload: true }
+ );
+
+ engine = Services.search.getEngineByName("simple");
+ Assert.equal(engine.wrappedJSObject._loadPath, "[addon]" + kExtensionID);
+ Assert.equal(engine.wrappedJSObject._extensionID, kExtensionID);
+
+ Assert.equal(
+ (await Services.search.getDefault()).name,
+ "simple",
+ "Should have kept the default engine the same"
+ );
+
+ await extension.unload();
+});
+
+add_task(async function test_migrateLegacyEngineDifferentName() {
+ let engine = await SearchTestUtils.promiseNewSearchEngine({
+ url: gDataUrl + "simple.xml",
+ });
+
+ // Modify the loadpath so it looks like an legacy plugin loadpath
+ engine.wrappedJSObject._loadPath = `jar:[profile]/extensions/${kExtensionID}.xpi!/simple.xml`;
+ engine.wrappedJSObject._extensionID = null;
+
+ await Services.search.setDefault(
+ engine,
+ Ci.nsISearchService.CHANGE_REASON_UNKNOWN
+ );
+
+ // This should replace the existing engine - it has the same id, but a different name.
+ let extension = await SearchTestUtils.installSearchExtension(
+ {
+ id: "simple",
+ name: "simple search",
+ search_url: "https://example.com/",
+ },
+ { skipUnload: true }
+ );
+
+ engine = Services.search.getEngineByName("simple");
+ Assert.equal(engine, null, "Should have removed the old engine");
+
+ // The engine should have changed its name.
+ engine = Services.search.getEngineByName("simple search");
+ Assert.equal(engine.wrappedJSObject._loadPath, "[addon]" + kExtensionID);
+ Assert.equal(engine.wrappedJSObject._extensionID, kExtensionID);
+
+ Assert.equal(
+ (await Services.search.getDefault()).name,
+ "simple search",
+ "Should have made the new engine default"
+ );
+
+ await extension.unload();
+});