summaryrefslogtreecommitdiffstats
path: root/toolkit/components/search/tests/xpcshell/test_webextensions_startup_remove.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
commit6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /toolkit/components/search/tests/xpcshell/test_webextensions_startup_remove.js
parentInitial commit. (diff)
downloadthunderbird-upstream.tar.xz
thunderbird-upstream.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/search/tests/xpcshell/test_webextensions_startup_remove.js')
-rw-r--r--toolkit/components/search/tests/xpcshell/test_webextensions_startup_remove.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/toolkit/components/search/tests/xpcshell/test_webextensions_startup_remove.js b/toolkit/components/search/tests/xpcshell/test_webextensions_startup_remove.js
new file mode 100644
index 0000000000..0b55bca424
--- /dev/null
+++ b/toolkit/components/search/tests/xpcshell/test_webextensions_startup_remove.js
@@ -0,0 +1,83 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const ENGINE_ID = "enginetest@example.com";
+let xpi;
+let profile = do_get_profile().clone();
+
+add_task(async function setup() {
+ await SearchTestUtils.useTestEngines("data1");
+ xpi = AddonTestUtils.createTempWebExtensionFile({
+ manifest: {
+ version: "1.0",
+ browser_specific_settings: {
+ gecko: { id: ENGINE_ID },
+ },
+ chrome_settings_overrides: {
+ search_provider: {
+ name: "Test Engine",
+ search_url: `https://example.com/?q={searchTerms}`,
+ },
+ },
+ },
+ });
+ await AddonTestUtils.manuallyInstall(xpi);
+});
+
+add_task(async function test_removeAddonOnStartup() {
+ // First startup the add-on manager and ensure the engine is installed.
+ await AddonTestUtils.promiseStartupManager();
+ let promise = promiseAfterSettings();
+ await Services.search.init();
+
+ let engine = Services.search.getEngineByName("Test Engine");
+ let allEngines = await Services.search.getEngines();
+
+ Assert.ok(!!engine, "Should have installed the test engine");
+
+ await Services.search.setDefault(
+ engine,
+ Ci.nsISearchService.CHANGE_REASON_UNKNOWN
+ );
+ await promise;
+
+ await AddonTestUtils.promiseShutdownManager();
+
+ // Now remove it, reset the search service and start up the add-on manager.
+ // Note: the saved settings will have the engine in. If this didn't work,
+ // the engine would still be present.
+ await IOUtils.remove(
+ PathUtils.join(profile.path, "extensions", `${ENGINE_ID}.xpi`)
+ );
+
+ let removePromise = SearchTestUtils.promiseSearchNotification(
+ SearchUtils.MODIFIED_TYPE.REMOVED,
+ SearchUtils.TOPIC_ENGINE_MODIFIED
+ );
+ Services.search.wrappedJSObject.reset();
+ await AddonTestUtils.promiseStartupManager();
+ await Services.search.init();
+ await removePromise;
+
+ Assert.ok(
+ !Services.search.getEngineByName("Test Engine"),
+ "Should have removed the test engine"
+ );
+
+ let newEngines = await Services.search.getEngines();
+ Assert.deepEqual(
+ newEngines.map(e => e.name),
+ allEngines.map(e => e.name).filter(n => n != "Test Engine"),
+ "Should no longer have the test engine in the full list"
+ );
+ let newDefault = await Services.search.getDefault();
+ Assert.equal(
+ newDefault.name,
+ "engine1",
+ "Should have changed the default engine back to the configuration default"
+ );
+
+ await AddonTestUtils.promiseShutdownManager();
+});