clairehurst pushed to branch tor-browser-140.3.0esr-15.0-1 at The Tor Project / Applications / Tor Browser
Commits:
-
e2c37c35
by Henry Wilkes at 2025-10-07T18:06:10+01:00
-
90bf16d7
by Henry Wilkes at 2025-10-07T18:06:11+01:00
-
65eb80ce
by Henry Wilkes at 2025-10-07T18:06:11+01:00
-
9ebd40f1
by Henry Wilkes at 2025-10-07T18:06:12+01:00
-
a696660b
by Henry Wilkes at 2025-10-07T18:06:13+01:00
-
b3c3b0a1
by Henry Wilkes at 2025-10-07T18:06:14+01:00
-
18f6af85
by Henry Wilkes at 2025-10-07T18:06:15+01:00
10 changed files:
- browser/app/profile/000-tor-browser.js
- browser/components/torpreferences/content/builtinBridgeDialog.xhtml
- browser/components/torpreferences/content/connectionPane.js
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/TorBridgeConfigFragment.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorBridgeTransports.kt
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorControllerGV.kt
- mobile/android/fenix/app/src/main/res/values/preference_keys.xml
- mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorSettings.java
- mobile/android/geckoview/src/main/java/org/mozilla/geckoview/androidlegacysettings/TorLegacyAndroidSettings.java
- toolkit/modules/TorSettings.sys.mjs
Changes:
| ... | ... | @@ -62,7 +62,7 @@ pref("torbrowser.settings.bridges.enabled", false); |
| 62 | 62 | // TorBridgeSource. Initially TorBridgeSource.Invalid = -1.
|
| 63 | 63 | pref("torbrowser.settings.bridges.source", -1);
|
| 64 | 64 | pref("torbrowser.settings.bridges.lox_id", "");
|
| 65 | -// obfs4|meek-azure|snowflake|etc.
|
|
| 65 | +// obfs4|meek|snowflake|etc.
|
|
| 66 | 66 | pref("torbrowser.settings.bridges.builtin_type", "");
|
| 67 | 67 | // torbrowser.settings.bridges.bridge_strings.0
|
| 68 | 68 | // torbrowser.settings.bridges.bridge_strings.1
|
| ... | ... | @@ -76,7 +76,7 @@ |
| 76 | 76 | <vbox class="builtin-bridges-option">
|
| 77 | 77 | <hbox>
|
| 78 | 78 | <radio
|
| 79 | - value="meek-azure"
|
|
| 79 | + value="meek"
|
|
| 80 | 80 | data-l10n-id="built-in-dialog-meek-radio-option2"
|
| 81 | 81 | />
|
| 82 | 82 | <html:span class="bridge-status-badge">
|
| ... | ... | @@ -1079,7 +1079,7 @@ const gBuiltinBridgesArea = { |
| 1079 | 1079 | name: "tor-bridges-built-in-snowflake-name",
|
| 1080 | 1080 | description: "tor-bridges-built-in-snowflake-description",
|
| 1081 | 1081 | },
|
| 1082 | - "meek-azure": {
|
|
| 1082 | + meek: {
|
|
| 1083 | 1083 | name: "tor-bridges-built-in-meek-name",
|
| 1084 | 1084 | description: "tor-bridges-built-in-meek-description",
|
| 1085 | 1085 | },
|
| ... | ... | @@ -33,10 +33,10 @@ class TorBridgeConfigFragment : PreferenceFragmentCompat() { |
| 33 | 33 | |
| 34 | 34 | // Initialize radio button group for built-in bridge transport types
|
| 35 | 35 | val radioObfs4 = bindBridgeTransportRadio(TorBridgeTransportConfig.BUILTIN_OBFS4)
|
| 36 | - val radioMeekAzure = bindBridgeTransportRadio(TorBridgeTransportConfig.BUILTIN_MEEK_AZURE)
|
|
| 36 | + val radioMeek = bindBridgeTransportRadio(TorBridgeTransportConfig.BUILTIN_MEEK)
|
|
| 37 | 37 | val radioSnowflake = bindBridgeTransportRadio(TorBridgeTransportConfig.BUILTIN_SNOWFLAKE)
|
| 38 | 38 | |
| 39 | - builtinBridgeRadioGroups.addAll(mutableListOf(radioObfs4, radioMeekAzure, radioSnowflake))
|
|
| 39 | + builtinBridgeRadioGroups.addAll(mutableListOf(radioObfs4, radioMeek, radioSnowflake))
|
|
| 40 | 40 | |
| 41 | 41 | // `*` is Kotlin's "spread" operator, for expanding an Array as a vararg.
|
| 42 | 42 | addToRadioGroup(*builtinBridgeRadioGroups.toTypedArray())
|
| ... | ... | @@ -19,7 +19,7 @@ enum class TorBridgeTransportConfig( |
| 19 | 19 | preferenceKey = R.string.pref_key_tor_network_settings_bridge_config_builtin_bridge_obfs4,
|
| 20 | 20 | transportName = "obfs4"
|
| 21 | 21 | ),
|
| 22 | - BUILTIN_MEEK_AZURE(
|
|
| 22 | + BUILTIN_MEEK(
|
|
| 23 | 23 | preferenceKey = R.string.pref_key_tor_network_settings_bridge_config_builtin_bridge_meek_azure,
|
| 24 | 24 | transportName = "meek"
|
| 25 | 25 | ),
|
| ... | ... | @@ -38,8 +38,8 @@ object TorBridgeTransportConfigUtil { |
| 38 | 38 | return when (bridge) {
|
| 39 | 39 | TorBridgeTransportConfig.BUILTIN_OBFS4.transportName ->
|
| 40 | 40 | TorBridgeTransportConfig.BUILTIN_OBFS4
|
| 41 | - TorBridgeTransportConfig.BUILTIN_MEEK_AZURE.transportName ->
|
|
| 42 | - TorBridgeTransportConfig.BUILTIN_MEEK_AZURE
|
|
| 41 | + TorBridgeTransportConfig.BUILTIN_MEEK.transportName ->
|
|
| 42 | + TorBridgeTransportConfig.BUILTIN_MEEK
|
|
| 43 | 43 | TorBridgeTransportConfig.BUILTIN_SNOWFLAKE.transportName ->
|
| 44 | 44 | TorBridgeTransportConfig.BUILTIN_SNOWFLAKE
|
| 45 | 45 | else -> TorBridgeTransportConfig.USER_PROVIDED
|
| ... | ... | @@ -65,7 +65,7 @@ class TorControllerGV( |
| 65 | 65 | BridgeSource.BuiltIn -> {
|
| 66 | 66 | when (getTorSettings()?.bridgesBuiltinType) {
|
| 67 | 67 | BridgeBuiltinType.Obfs4 -> TorBridgeTransportConfig.BUILTIN_OBFS4
|
| 68 | - BridgeBuiltinType.MeekAzure -> TorBridgeTransportConfig.BUILTIN_MEEK_AZURE
|
|
| 68 | + BridgeBuiltinType.Meek -> TorBridgeTransportConfig.BUILTIN_MEEK
|
|
| 69 | 69 | BridgeBuiltinType.Snowflake -> TorBridgeTransportConfig.BUILTIN_SNOWFLAKE
|
| 70 | 70 | else -> TorBridgeTransportConfig.USER_PROVIDED
|
| 71 | 71 | }
|
| ... | ... | @@ -87,7 +87,7 @@ class TorControllerGV( |
| 87 | 87 | it.bridgesSource = BridgeSource.BuiltIn
|
| 88 | 88 | val bbt: BridgeBuiltinType = when (value) {
|
| 89 | 89 | TorBridgeTransportConfig.BUILTIN_OBFS4 -> BridgeBuiltinType.Obfs4
|
| 90 | - TorBridgeTransportConfig.BUILTIN_MEEK_AZURE -> BridgeBuiltinType.MeekAzure
|
|
| 90 | + TorBridgeTransportConfig.BUILTIN_MEEK -> BridgeBuiltinType.Meek
|
|
| 91 | 91 | TorBridgeTransportConfig.BUILTIN_SNOWFLAKE -> BridgeBuiltinType.Snowflake
|
| 92 | 92 | else -> BridgeBuiltinType.Invalid
|
| 93 | 93 | }
|
| ... | ... | @@ -496,6 +496,8 @@ |
| 496 | 496 | <string name="pref_key_tor_network_settings_bridge_config_explanation" translatable="false">pref_key_tor_network_settings_bridge_config_explanation</string>
|
| 497 | 497 | <string name="pref_key_tor_network_settings_bridge_config_toggle" translatable="false">pref_key_tor_network_settings_bridge_config_toggle</string>
|
| 498 | 498 | <string name="pref_key_tor_network_settings_bridge_config_builtin_bridge_obfs4" translatable="false">pref_key_tor_network_settings_bridge_config_builtin_bridge_obfs4</string>
|
| 499 | + <!-- NOTE: The "meek_azure" part is a legacy name for simply "meek", kept
|
|
| 500 | + - only to avoid a preference migration. See tor-browser#44068 -->
|
|
| 499 | 501 | <string name="pref_key_tor_network_settings_bridge_config_builtin_bridge_meek_azure" translatable="false">pref_key_tor_network_settings_bridge_config_builtin_bridge_meek_azure</string>
|
| 500 | 502 | <string name="pref_key_tor_network_settings_bridge_config_builtin_bridge_snowflake" translatable="false">pref_key_tor_network_settings_bridge_config_builtin_bridge_snowflake</string>
|
| 501 | 503 | <string name="pref_key_tor_network_settings_bridge_config_user_provided_bridge" translatable="false">pref_key_tor_network_settings_bridge_config_user_provided_bridge</string>
|
| ... | ... | @@ -68,10 +68,10 @@ public class TorSettings { |
| 68 | 68 | }
|
| 69 | 69 | |
| 70 | 70 | public enum BridgeBuiltinType {
|
| 71 | - /* TorSettings.sys.mjs ~ln43: string: obfs4|meek-azure|snowflake|etc */
|
|
| 71 | + /* TorSettings.sys.mjs ~ln43: string: obfs4|meek|snowflake|etc */
|
|
| 72 | 72 | Invalid("invalid"),
|
| 73 | 73 | Obfs4("obfs4"),
|
| 74 | - MeekAzure("meek-azure"),
|
|
| 74 | + Meek("meek"),
|
|
| 75 | 75 | Snowflake("snowflake");
|
| 76 | 76 | |
| 77 | 77 | private String type;
|
| ... | ... | @@ -88,8 +88,8 @@ public class TorSettings { |
| 88 | 88 | switch (s) {
|
| 89 | 89 | case "obfs4":
|
| 90 | 90 | return Obfs4;
|
| 91 | - case "meek-azure":
|
|
| 92 | - return MeekAzure;
|
|
| 91 | + case "meek":
|
|
| 92 | + return Meek;
|
|
| 93 | 93 | case "snowflake":
|
| 94 | 94 | return Snowflake;
|
| 95 | 95 | }
|
| ... | ... | @@ -49,7 +49,7 @@ public class TorLegacyAndroidSettings { |
| 49 | 49 | TorSettings.BridgeBuiltinType.fromString(userDefinedBridgeList);
|
| 50 | 50 | break;
|
| 51 | 51 | case "meek":
|
| 52 | - settings.bridgesBuiltinType = TorSettings.BridgeBuiltinType.MeekAzure;
|
|
| 52 | + settings.bridgesBuiltinType = TorSettings.BridgeBuiltinType.Meek;
|
|
| 53 | 53 | break;
|
| 54 | 54 | default:
|
| 55 | 55 | settings.bridgesSource = TorSettings.BridgeSource.Invalid;
|
| ... | ... | @@ -36,7 +36,7 @@ const TorSettingsPrefs = Object.freeze({ |
| 36 | 36 | source: "torbrowser.settings.bridges.source",
|
| 37 | 37 | /* string: output of crypto.randomUUID() */
|
| 38 | 38 | lox_id: "torbrowser.settings.bridges.lox_id",
|
| 39 | - /* string: obfs4|meek-azure|snowflake|etc */
|
|
| 39 | + /* string: obfs4|meek|snowflake|etc */
|
|
| 40 | 40 | builtin_type: "torbrowser.settings.bridges.builtin_type",
|
| 41 | 41 | /* preference branch: each child branch should be a bridge string */
|
| 42 | 42 | bridge_strings: "torbrowser.settings.bridges.bridge_strings",
|
| ... | ... | @@ -534,6 +534,13 @@ class TorSettingsImpl { |
| 534 | 534 | const req = await fetch("chrome://global/content/pt_config.json");
|
| 535 | 535 | const config = await req.json();
|
| 536 | 536 | lazy.logger.debug("Loaded pt_config.json", config);
|
| 537 | + if ("meek-azure" in config.bridges) {
|
|
| 538 | + // Convert the meek-azure name to meek. tor-browser#44068.
|
|
| 539 | + // NOTE: no need to convert recommendedDefault since it is not meek.
|
|
| 540 | + lazy.logger.debug("Converting pt_config type from meek-azure to meek");
|
|
| 541 | + config.bridges.meek = config.bridges["meek-azure"];
|
|
| 542 | + delete config.bridges["meek-azure"];
|
|
| 543 | + }
|
|
| 537 | 544 | this.#recommendedPT = config.recommendedDefault;
|
| 538 | 545 | this.#builtinBridges = config.bridges;
|
| 539 | 546 | for (const type in this.#builtinBridges) {
|
| ... | ... | @@ -687,13 +694,26 @@ class TorSettingsImpl { |
| 687 | 694 | )
|
| 688 | 695 | );
|
| 689 | 696 | break;
|
| 690 | - case TorBridgeSource.BuiltIn:
|
|
| 697 | + case TorBridgeSource.BuiltIn: {
|
|
| 691 | 698 | // bridge_strings is set via builtin_type.
|
| 692 | - bridges.builtin_type = Services.prefs.getStringPref(
|
|
| 699 | + let builtinType = Services.prefs.getStringPref(
|
|
| 693 | 700 | TorSettingsPrefs.bridges.builtin_type,
|
| 694 | 701 | ""
|
| 695 | 702 | );
|
| 703 | + if (builtinType === "meek-azure") {
|
|
| 704 | + lazy.logger.debug(
|
|
| 705 | + "Converting builtin-bridge setting value from meek-azure to meek"
|
|
| 706 | + );
|
|
| 707 | + builtinType = "meek";
|
|
| 708 | + // Store the new value.
|
|
| 709 | + Services.prefs.setStringPref(
|
|
| 710 | + TorSettingsPrefs.bridges.builtin_type,
|
|
| 711 | + builtinType
|
|
| 712 | + );
|
|
| 713 | + }
|
|
| 714 | + bridges.builtin_type = builtinType;
|
|
| 696 | 715 | break;
|
| 716 | + }
|
|
| 697 | 717 | case TorBridgeSource.Lox:
|
| 698 | 718 | // bridge_strings is set via lox id.
|
| 699 | 719 | bridges.lox_id = Services.prefs.getStringPref(
|