Pier Angelo Vendrame pushed to branch tor-browser-140.2.0esr-15.0-1 at The Tor Project / Applications / Tor Browser
Commits:
-
55e239b2
by Pier Angelo Vendrame at 2025-08-28T18:17:11+02:00
3 changed files:
- toolkit/components/search/SearchEngineSelector.sys.mjs
- toolkit/components/search/SearchService.sys.mjs
- toolkit/components/search/content/torBrowserSearchEngines.json
Changes:
... | ... | @@ -2,6 +2,8 @@ |
2 | 2 | * License, v. 2.0. If a copy of the MPL was not distributed with this
|
3 | 3 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
4 | 4 | |
5 | +import { AppConstants } from "resource://gre/modules/AppConstants.sys.mjs";
|
|
6 | + |
|
5 | 7 | /**
|
6 | 8 | * @typedef {import("../uniffi-bindgen-gecko-js/components/generated/RustSearch.sys.mjs").SearchEngineSelector} RustSearchEngineSelector
|
7 | 9 | * We use "Rust" above to avoid conflict with the class name for the JavaScript wrapper.
|
... | ... | @@ -92,30 +94,13 @@ export class SearchEngineSelector { |
92 | 94 | return this._getConfigurationPromise;
|
93 | 95 | }
|
94 | 96 | |
95 | - this._getConfigurationPromise = Promise.all([
|
|
96 | - this._getConfiguration(),
|
|
97 | - this._getConfigurationOverrides(),
|
|
98 | - ]);
|
|
99 | - let remoteSettingsData = await this._getConfigurationPromise;
|
|
100 | - this._configuration = remoteSettingsData[0];
|
|
101 | - this._configurationOverrides = remoteSettingsData[1];
|
|
102 | - delete this._getConfigurationPromise;
|
|
103 | - |
|
104 | - if (!this._configuration?.length) {
|
|
105 | - throw Components.Exception(
|
|
106 | - "Failed to get engine data from Remote Settings",
|
|
107 | - Cr.NS_ERROR_UNEXPECTED
|
|
108 | - );
|
|
109 | - }
|
|
110 | - |
|
111 | - if (!this._listenerAdded) {
|
|
112 | - this._remoteConfig.on("sync", this._onConfigurationUpdated);
|
|
113 | - this._remoteConfigOverrides.on(
|
|
114 | - "sync",
|
|
115 | - this._onConfigurationOverridesUpdated
|
|
116 | - );
|
|
117 | - this._listenerAdded = true;
|
|
118 | - }
|
|
97 | + let { promise, resolve } = Promise.withResolvers();
|
|
98 | + this._getConfigurationPromise = promise;
|
|
99 | + this._configuration = await (
|
|
100 | + await fetch("chrome://global/content/search/torBrowserSearchEngines.json")
|
|
101 | + ).json();
|
|
102 | + this._configurationOverrides = [];
|
|
103 | + resolve(this._configuration);
|
|
119 | 104 | |
120 | 105 | if (lazy.SearchUtils.rustSelectorFeatureGate) {
|
121 | 106 | this.#selector.setSearchConfig(
|
... | ... | @@ -242,6 +227,12 @@ export class SearchEngineSelector { |
242 | 227 | * The new configuration object
|
243 | 228 | */
|
244 | 229 | _onConfigurationUpdated({ data: { current } }) {
|
230 | + // tor-browser#43525: Even though RemoteSettings are a no-op for us, we do
|
|
231 | + // not want them to interfere in any way.
|
|
232 | + if (AppConstants.BASE_BROWSER_VERSION) {
|
|
233 | + return;
|
|
234 | + }
|
|
235 | + |
|
245 | 236 | this._configuration = current;
|
246 | 237 | |
247 | 238 | if (lazy.SearchUtils.rustSelectorFeatureGate) {
|
... | ... | @@ -268,6 +259,12 @@ export class SearchEngineSelector { |
268 | 259 | * The new configuration object
|
269 | 260 | */
|
270 | 261 | _onConfigurationOverridesUpdated({ data: { current } }) {
|
262 | + // tor-browser#43525: Even though RemoteSettings are a no-op for us, we do
|
|
263 | + // not want them to interfere in any way.
|
|
264 | + if (AppConstants.BASE_BROWSER_VERSION) {
|
|
265 | + return;
|
|
266 | + }
|
|
267 | + |
|
271 | 268 | this._configurationOverrides = current;
|
272 | 269 | |
273 | 270 | if (lazy.SearchUtils.rustSelectorFeatureGate) {
|
... | ... | @@ -2628,11 +2628,21 @@ export class SearchService { |
2628 | 2628 | // This is prefixed with _ rather than # because it is
|
2629 | 2629 | // called in test_remove_engine_notification_box.js
|
2630 | 2630 | async _fetchEngineSelectorEngines() {
|
2631 | - // tor-browser#43525: Check this still works.
|
|
2632 | - const engines = await (
|
|
2633 | - await fetch("chrome://global/content/search/torBrowserSearchEngines.json")
|
|
2634 | - ).json();
|
|
2635 | - return { engines, privateDefault: undefined };
|
|
2631 | + let searchEngineSelectorProperties = {
|
|
2632 | + locale: "en-US",
|
|
2633 | + region: lazy.Region.home || "unknown",
|
|
2634 | + channel: lazy.SearchUtils.MODIFIED_APP_CHANNEL,
|
|
2635 | + experiment: this._experimentPrefValue,
|
|
2636 | + distroID: lazy.SearchUtils.distroID ?? "",
|
|
2637 | + };
|
|
2638 | + |
|
2639 | + for (let [key, value] of Object.entries(searchEngineSelectorProperties)) {
|
|
2640 | + this._settings.setMetaDataAttribute(key, value);
|
|
2641 | + }
|
|
2642 | + |
|
2643 | + return this.#engineSelector.fetchEngineConfiguration(
|
|
2644 | + searchEngineSelectorProperties
|
|
2645 | + );
|
|
2636 | 2646 | }
|
2637 | 2647 | |
2638 | 2648 | #setDefaultFromSelector(refinedConfig) {
|
1 | 1 | [
|
2 | 2 | {
|
3 | - "aliases": ["duckduckgo", "ddg"],
|
|
4 | - "name": "DuckDuckGo",
|
|
5 | - "urls": {
|
|
6 | - "search": {
|
|
7 | - "base": "https://duckduckgo.com/",
|
|
8 | - "params": [],
|
|
9 | - "searchTermParamName": "q"
|
|
3 | + "base": {
|
|
4 | + "aliases": ["duckduckgo", "ddg"],
|
|
5 | + "classification": "general",
|
|
6 | + "name": "DuckDuckGo",
|
|
7 | + "urls": {
|
|
8 | + "search": {
|
|
9 | + "base": "https://duckduckgo.com/",
|
|
10 | + "params": [],
|
|
11 | + "searchTermParamName": "q"
|
|
12 | + }
|
|
10 | 13 | }
|
11 | 14 | },
|
12 | 15 | "id": "04e99a38-13ee-47d8-8aa4-64482b3dea99",
|
13 | 16 | "identifier": "ddg",
|
14 | 17 | "recordType": "engine",
|
15 | - "variants": []
|
|
18 | + "variants": [
|
|
19 | + {
|
|
20 | + "environment": {
|
|
21 | + "allRegionsAndLocales": true
|
|
22 | + }
|
|
23 | + }
|
|
24 | + ]
|
|
16 | 25 | },
|
17 | 26 | {
|
18 | - "aliases": ["ddgonion"],
|
|
19 | - "name": "DuckDuckGo (.onion)",
|
|
20 | - "urls": {
|
|
21 | - "search": {
|
|
22 | - "base": "https://duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion/",
|
|
23 | - "params": [],
|
|
24 | - "searchTermParamName": "q"
|
|
27 | + "base": {
|
|
28 | + "aliases": ["ddgonion"],
|
|
29 | + "classification": "general",
|
|
30 | + "name": "DuckDuckGo (.onion)",
|
|
31 | + "urls": {
|
|
32 | + "search": {
|
|
33 | + "base": "https://duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion/",
|
|
34 | + "params": [],
|
|
35 | + "searchTermParamName": "q"
|
|
36 | + }
|
|
25 | 37 | }
|
26 | 38 | },
|
27 | 39 | "id": "1e431da4-a60c-4411-9251-a95a841d451f",
|
28 | 40 | "identifier": "ddg-onion",
|
29 | 41 | "recordType": "engine",
|
30 | - "variants": []
|
|
42 | + "variants": [
|
|
43 | + {
|
|
44 | + "environment": {
|
|
45 | + "allRegionsAndLocales": true
|
|
46 | + }
|
|
47 | + }
|
|
48 | + ]
|
|
31 | 49 | },
|
32 | 50 | {
|
33 | - "aliases": ["startpage"],
|
|
34 | - "name": "Startpage",
|
|
35 | - "urls": {
|
|
36 | - "search": {
|
|
37 | - "base": "https://www.startpage.com/sp/search",
|
|
38 | - "params": [],
|
|
39 | - "searchTermParamName": "q"
|
|
51 | + "base": {
|
|
52 | + "aliases": ["startpage"],
|
|
53 | + "classification": "general",
|
|
54 | + "name": "Startpage",
|
|
55 | + "urls": {
|
|
56 | + "search": {
|
|
57 | + "base": "https://www.startpage.com/sp/search",
|
|
58 | + "params": [],
|
|
59 | + "searchTermParamName": "q"
|
|
60 | + }
|
|
40 | 61 | }
|
41 | 62 | },
|
42 | 63 | "id": "927bbd9f-b2f3-48b4-8974-1c1148028f4d",
|
43 | 64 | "identifier": "startpage",
|
44 | 65 | "recordType": "engine",
|
45 | - "variants": []
|
|
66 | + "variants": [
|
|
67 | + {
|
|
68 | + "environment": {
|
|
69 | + "allRegionsAndLocales": true
|
|
70 | + }
|
|
71 | + }
|
|
72 | + ]
|
|
46 | 73 | },
|
47 | 74 | {
|
48 | - "aliases": ["startpage-onion"],
|
|
49 | - "name": "Startpage (.onion)",
|
|
50 | - "urls": {
|
|
51 | - "search": {
|
|
52 | - "base": "http://startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion/sp/search",
|
|
53 | - "params": [],
|
|
54 | - "searchTermParamName": "q"
|
|
75 | + "base": {
|
|
76 | + "aliases": ["startpage-onion"],
|
|
77 | + "classification": "general",
|
|
78 | + "name": "Startpage (.onion)",
|
|
79 | + "urls": {
|
|
80 | + "search": {
|
|
81 | + "base": "http://startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion/sp/search",
|
|
82 | + "params": [],
|
|
83 | + "searchTermParamName": "q"
|
|
84 | + }
|
|
55 | 85 | }
|
56 | 86 | },
|
57 | 87 | "id": "e7eaba8d-6b9e-43fb-a799-b01b096c03ff",
|
58 | 88 | "identifier": "startpage-onion",
|
59 | 89 | "recordType": "engine",
|
60 | - "variants": []
|
|
90 | + "variants": [
|
|
91 | + {
|
|
92 | + "environment": {
|
|
93 | + "allRegionsAndLocales": true
|
|
94 | + }
|
|
95 | + }
|
|
96 | + ]
|
|
61 | 97 | },
|
62 | 98 | {
|
63 | - "aliases": ["wikipedia"],
|
|
64 | - "classification": "unknown",
|
|
65 | - "name": "Wikipedia (en)",
|
|
66 | - "urls": {
|
|
67 | - "search": {
|
|
68 | - "base": "https://en.wikipedia.org/wiki/Special:Search",
|
|
69 | - "params": [],
|
|
70 | - "searchTermParamName": "search"
|
|
99 | + "base": {
|
|
100 | + "aliases": ["wikipedia"],
|
|
101 | + "classification": "unknown",
|
|
102 | + "name": "Wikipedia (en)",
|
|
103 | + "urls": {
|
|
104 | + "search": {
|
|
105 | + "base": "https://en.wikipedia.org/wiki/Special:Search",
|
|
106 | + "params": [],
|
|
107 | + "searchTermParamName": "search"
|
|
108 | + }
|
|
71 | 109 | }
|
72 | 110 | },
|
73 | 111 | "id": "7f6d23c2-191e-483e-af3a-ce6451e3a8dd",
|
74 | 112 | "identifier": "wikipedia",
|
75 | 113 | "recordType": "engine",
|
76 | - "variants": []
|
|
114 | + "variants": [
|
|
115 | + {
|
|
116 | + "environment": {
|
|
117 | + "allRegionsAndLocales": true
|
|
118 | + }
|
|
119 | + }
|
|
120 | + ]
|
|
121 | + },
|
|
122 | + {
|
|
123 | + "recordType": "defaultEngines",
|
|
124 | + "globalDefault": "ddg",
|
|
125 | + "globalDefaultPrivate": "ddg"
|
|
77 | 126 | }
|
78 | 127 | ] |