summaryrefslogtreecommitdiffstats
path: root/toolkit/components/search/tests/xpcshell/test_settings_broken.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_settings_broken.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_settings_broken.js')
-rw-r--r--toolkit/components/search/tests/xpcshell/test_settings_broken.js131
1 files changed, 131 insertions, 0 deletions
diff --git a/toolkit/components/search/tests/xpcshell/test_settings_broken.js b/toolkit/components/search/tests/xpcshell/test_settings_broken.js
new file mode 100644
index 0000000000..12298155f1
--- /dev/null
+++ b/toolkit/components/search/tests/xpcshell/test_settings_broken.js
@@ -0,0 +1,131 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/*
+ * Test initializing from broken search settings. This is one where the engines
+ * array for some reason has lost all the default engines, but retained either
+ * one or two, or a user-supplied engine. We don't know why this happens, but
+ * we have seen it (bug 1578807).
+ */
+
+"use strict";
+
+const { getAppInfo } = ChromeUtils.importESModule(
+ "resource://testing-common/AppInfo.sys.mjs"
+);
+
+const enginesSettings = {
+ version: SearchUtils.SETTINGS_VERSION,
+ buildID: "TBD",
+ appVersion: "TBD",
+ locale: "en-US",
+ metaData: {
+ searchDefault: "Test search engine",
+ searchDefaultHash: "TBD",
+ // Intentionally in the past, but shouldn't actually matter for this test.
+ searchDefaultExpir: 1567694909002,
+ current: "",
+ hash: "TBD",
+ visibleDefaultEngines:
+ "engine,engine-pref,engine-rel-searchform-purpose,engine-chromeicon,engine-resourceicon,engine-reordered",
+ visibleDefaultEnginesHash: "TBD",
+ },
+ engines: [
+ // This is a user-installed engine - the only one that was listed due to the
+ // original issue.
+ {
+ _name: "A second test engine",
+ _shortName: "engine2",
+ _loadPath: "[profile]/searchplugins/engine2.xml",
+ description: "A second test search engine (based on DuckDuckGo)",
+ _iconURL:
+ "data:image/x-icon;base64,AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAEAgQAhIOEAMjHyABIR0gA6ejpAGlqaQCpqKkAKCgoAPz9/AAZGBkAmJiYANjZ2ABXWFcAent6ALm6uQA8OjwAiIiIiIiIiIiIiI4oiL6IiIiIgzuIV4iIiIhndo53KIiIiB/WvXoYiIiIfEZfWBSIiIEGi/foqoiIgzuL84i9iIjpGIoMiEHoiMkos3FojmiLlUipYliEWIF+iDe0GoRa7D6GPbjcu1yIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+ _iconMapObj: {
+ '{"width":16,"height":16}':
+ "data:image/x-icon;base64,AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAEAgQAhIOEAMjHyABIR0gA6ejpAGlqaQCpqKkAKCgoAPz9/AAZGBkAmJiYANjZ2ABXWFcAent6ALm6uQA8OjwAiIiIiIiIiIiIiI4oiL6IiIiIgzuIV4iIiIhndo53KIiIiB/WvXoYiIiIfEZfWBSIiIEGi/foqoiIgzuL84i9iIjpGIoMiEHoiMkos3FojmiLlUipYliEWIF+iDe0GoRa7D6GPbjcu1yIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
+ },
+ _isBuiltin: false,
+ _metaData: {
+ order: 1,
+ },
+ _urls: [
+ {
+ template: "https://duckduckgo.com/?q={searchTerms}",
+ rels: [],
+ resultDomain: "duckduckgo.com",
+ params: [],
+ },
+ ],
+ queryCharset: "UTF-8",
+ filePath: "TBD",
+ },
+ ],
+};
+
+add_task(async function setup() {
+ await AddonTestUtils.promiseStartupManager();
+
+ // Allow telemetry probes which may otherwise be disabled for some applications (e.g. Thunderbird)
+ Services.prefs.setBoolPref(
+ "toolkit.telemetry.testing.overrideProductsCheck",
+ true
+ );
+
+ await SearchTestUtils.useTestEngines();
+ Services.prefs.setCharPref(SearchUtils.BROWSER_SEARCH_PREF + "region", "US");
+ Services.locale.availableLocales = ["en-US"];
+ Services.locale.requestedLocales = ["en-US"];
+
+ // We dynamically generate the hashes because these depend on the profile.
+ enginesSettings.metaData.searchDefaultHash = SearchUtils.getVerificationHash(
+ enginesSettings.metaData.searchDefault
+ );
+ enginesSettings.metaData.hash = SearchUtils.getVerificationHash(
+ enginesSettings.metaData.current
+ );
+ enginesSettings.metaData.visibleDefaultEnginesHash =
+ SearchUtils.getVerificationHash(
+ enginesSettings.metaData.visibleDefaultEngines
+ );
+ const appInfo = getAppInfo();
+ enginesSettings.buildID = appInfo.platformBuildID;
+ enginesSettings.appVersion = appInfo.version;
+
+ await IOUtils.writeJSON(
+ PathUtils.join(PathUtils.profileDir, SETTINGS_FILENAME),
+ enginesSettings,
+ { compress: true }
+ );
+});
+
+add_task(async function test_cached_engine_properties() {
+ info("init search service");
+
+ const initResult = await Services.search.init();
+
+ info("init'd search service");
+ Assert.ok(
+ Components.isSuccessCode(initResult),
+ "Should have successfully created the search service"
+ );
+
+ const engines = await Services.search.getEngines();
+
+ const expectedEngines = [
+ // Default engines
+ "Test search engine",
+ // Rest of engines in order
+ "engine-resourceicon",
+ "engine-chromeicon",
+ "engine-pref",
+ "engine-rel-searchform-purpose",
+ "Test search engine (Reordered)",
+ "A second test engine",
+ ];
+
+ Assert.deepEqual(
+ engines.map(e => e.name),
+ expectedEngines,
+ "Should have the expected default engines"
+ );
+});