Pier Angelo Vendrame pushed to branch tor-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Tor Browser
Commits:
-
9d554099
by Pier Angelo Vendrame at 2024-09-11T22:29:36+02:00
-
37d0aa1a
by Pier Angelo Vendrame at 2024-09-11T22:29:36+02:00
-
40f8455d
by Pier Angelo Vendrame at 2024-09-11T22:29:37+02:00
5 changed files:
- mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngine.kt
- mobile/android/android-components/components/concept/engine/src/main/java/mozilla/components/concept/engine/Settings.kt
- mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java
- mobile/shared/components/geckoview/GeckoViewStartup.sys.mjs
- toolkit/modules/TorAndroidIntegration.sys.mjs
Changes:
| ... | ... | @@ -1347,11 +1347,6 @@ class GeckoEngine( |
| 1347 | 1347 | localeUpdater.updateValue()
|
| 1348 | 1348 | }
|
| 1349 | 1349 | }
|
| 1350 | - override var useNewBootstrap: Boolean
|
|
| 1351 | - get() = runtime.settings.useNewBootstrap
|
|
| 1352 | - set(value) {
|
|
| 1353 | - runtime.settings.useNewBootstrap = value
|
|
| 1354 | - }
|
|
| 1355 | 1350 | }.apply {
|
| 1356 | 1351 | defaultSettings?.let {
|
| 1357 | 1352 | this.javascriptEnabled = it.javascriptEnabled
|
| ... | ... | @@ -1380,7 +1375,6 @@ class GeckoEngine( |
| 1380 | 1375 | this.emailTrackerBlockingPrivateBrowsing = it.emailTrackerBlockingPrivateBrowsing
|
| 1381 | 1376 | this.torSecurityLevel = it.torSecurityLevel
|
| 1382 | 1377 | this.spoofEnglish = it.spoofEnglish
|
| 1383 | - this.useNewBootstrap = it.useNewBootstrap
|
|
| 1384 | 1378 | }
|
| 1385 | 1379 | }
|
| 1386 | 1380 |
| ... | ... | @@ -259,7 +259,6 @@ abstract class Settings { |
| 259 | 259 | |
| 260 | 260 | open var spoofEnglish: Boolean by UnsupportedSetting()
|
| 261 | 261 | |
| 262 | - open var useNewBootstrap: Boolean by UnsupportedSetting()
|
|
| 263 | 262 | }
|
| 264 | 263 | |
| 265 | 264 | /**
|
| ... | ... | @@ -312,7 +311,6 @@ data class DefaultSettings( |
| 312 | 311 | override var emailTrackerBlockingPrivateBrowsing: Boolean = false,
|
| 313 | 312 | override var torSecurityLevel: Int = 4,
|
| 314 | 313 | override var spoofEnglish: Boolean = false,
|
| 315 | - override var useNewBootstrap: Boolean = true,
|
|
| 316 | 314 | ) : Settings()
|
| 317 | 315 | |
| 318 | 316 | class UnsupportedSetting<T> {
|
| ... | ... | @@ -598,11 +598,6 @@ public final class GeckoRuntimeSettings extends RuntimeSettings { |
| 598 | 598 | getSettings().mSecurityLevel.set(level);
|
| 599 | 599 | return this;
|
| 600 | 600 | }
|
| 601 | - |
|
| 602 | - public @NonNull Builder useNewBootstrap(final boolean flag) {
|
|
| 603 | - getSettings().mUseNewBootstrap.set(flag);
|
|
| 604 | - return this;
|
|
| 605 | - }
|
|
| 606 | 601 | }
|
| 607 | 602 | |
| 608 | 603 | private GeckoRuntime mRuntime;
|
| ... | ... | @@ -675,8 +670,6 @@ public final class GeckoRuntimeSettings extends RuntimeSettings { |
| 675 | 670 | /* package */ final Pref<Integer> mSpoofEnglish = new Pref<>("privacy.spoof_english", 0);
|
| 676 | 671 | /* package */ final Pref<Integer> mSecurityLevel =
|
| 677 | 672 | new Pref<>("browser.security_level.security_slider", 4);
|
| 678 | - /* package */ final Pref<Boolean> mUseNewBootstrap =
|
|
| 679 | - new Pref<>("browser.tor_android.use_new_bootstrap", false);
|
|
| 680 | 673 | |
| 681 | 674 | /* package */ int mPreferredColorScheme = COLOR_SCHEME_SYSTEM;
|
| 682 | 675 | |
| ... | ... | @@ -1725,15 +1718,6 @@ public final class GeckoRuntimeSettings extends RuntimeSettings { |
| 1725 | 1718 | return this;
|
| 1726 | 1719 | }
|
| 1727 | 1720 | |
| 1728 | - public boolean getUseNewBootstrap() {
|
|
| 1729 | - return mUseNewBootstrap.get();
|
|
| 1730 | - }
|
|
| 1731 | - |
|
| 1732 | - public @NonNull GeckoRuntimeSettings setUseNewBootstrap(final boolean flag) {
|
|
| 1733 | - mUseNewBootstrap.commit(flag);
|
|
| 1734 | - return this;
|
|
| 1735 | - }
|
|
| 1736 | - |
|
| 1737 | 1721 | @Override // Parcelable
|
| 1738 | 1722 | public void writeToParcel(final Parcel out, final int flags) {
|
| 1739 | 1723 | super.writeToParcel(out, flags);
|
| ... | ... | @@ -261,6 +261,8 @@ export class GeckoViewStartup { |
| 261 | 261 | "GeckoView:InitialForeground",
|
| 262 | 262 | ]);
|
| 263 | 263 | |
| 264 | + this.#migratePreferences();
|
|
| 265 | + |
|
| 264 | 266 | lazy.TorAndroidIntegration.init();
|
| 265 | 267 | lazy.TorDomainIsolator.init();
|
| 266 | 268 | |
| ... | ... | @@ -370,6 +372,50 @@ export class GeckoViewStartup { |
| 370 | 372 | break;
|
| 371 | 373 | }
|
| 372 | 374 | }
|
| 375 | + |
|
| 376 | + /**
|
|
| 377 | + * This is the equivalent of BrowserGlue._migrateUITBB.
|
|
| 378 | + */
|
|
| 379 | + #migratePreferences() {
|
|
| 380 | + const MIGRATION_VERSION = 1;
|
|
| 381 | + const MIGRATION_PREF = "torbrowser.migration_android.version";
|
|
| 382 | + |
|
| 383 | + // We do not have a way to check for new profiles on Android.
|
|
| 384 | + // However, the first version is harmless for new installs, so run it
|
|
| 385 | + // anyway.
|
|
| 386 | + const currentVersion = Services.prefs.getIntPref(MIGRATION_PREF, 0);
|
|
| 387 | + if (currentVersion < 1) {
|
|
| 388 | + // First implementation of the migration on Android (tor-browser#43124,
|
|
| 389 | + // 14.0a5, September 2024).
|
|
| 390 | + const prefToClear = [
|
|
| 391 | + // Old torbutton preferences not used anymore.
|
|
| 392 | + // Some of them should have never been set on Android, as on Android we
|
|
| 393 | + // force PBM... But who knows about very old profiles.
|
|
| 394 | + "browser.cache.disk.enable",
|
|
| 395 | + "places.history.enabled",
|
|
| 396 | + "security.nocertdb",
|
|
| 397 | + "permissions.memory_only",
|
|
| 398 | + "extensions.torbutton.loglevel",
|
|
| 399 | + "extensions.torbutton.logmethod",
|
|
| 400 | + "extensions.torbutton.pref_fixup_version",
|
|
| 401 | + "extensions.torbutton.resize_new_windows",
|
|
| 402 | + "extensions.torbutton.startup",
|
|
| 403 | + "extensions.torlauncher.prompt_for_locale",
|
|
| 404 | + "extensions.torlauncher.loglevel",
|
|
| 405 | + "extensions.torlauncher.logmethod",
|
|
| 406 | + "extensions.torlauncher.torrc_fixup_version",
|
|
| 407 | + // tor-browser#42149: Do not change HTTPS-Only settings in the security
|
|
| 408 | + // level.
|
|
| 409 | + "dom.security.https_only_mode_send_http_background_request",
|
|
| 410 | + ];
|
|
| 411 | + for (const pref of prefToClear) {
|
|
| 412 | + if (Services.prefs.prefHasUserValue(pref)) {
|
|
| 413 | + Services.prefs.clearUserPref(pref);
|
|
| 414 | + }
|
|
| 415 | + }
|
|
| 416 | + }
|
|
| 417 | + Services.prefs.setIntPref(MIGRATION_PREF, MIGRATION_VERSION);
|
|
| 418 | + }
|
|
| 373 | 419 | }
|
| 374 | 420 | |
| 375 | 421 | GeckoViewStartup.prototype.classID = Components.ID(
|
| ... | ... | @@ -14,7 +14,6 @@ ChromeUtils.defineESModuleGetters(lazy, { |
| 14 | 14 | });
|
| 15 | 15 | |
| 16 | 16 | const Prefs = Object.freeze({
|
| 17 | - useNewBootstrap: "browser.tor_android.use_new_bootstrap",
|
|
| 18 | 17 | logLevel: "browser.tor_android.log_level",
|
| 19 | 18 | });
|
| 20 | 19 | |
| ... | ... | @@ -49,15 +48,18 @@ const ListenedEvents = Object.freeze({ |
| 49 | 48 | class TorAndroidIntegrationImpl {
|
| 50 | 49 | #initialized = false;
|
| 51 | 50 | |
| 52 | - init() {
|
|
| 51 | + async init() {
|
|
| 52 | + if (this.#initialized) {
|
|
| 53 | + logger.warn("Something tried to initilize us again.");
|
|
| 54 | + return;
|
|
| 55 | + }
|
|
| 56 | + this.#initialized = true;
|
|
| 57 | + |
|
| 53 | 58 | lazy.EventDispatcher.instance.registerListener(
|
| 54 | 59 | this,
|
| 55 | 60 | Object.values(ListenedEvents)
|
| 56 | 61 | );
|
| 57 | 62 | |
| 58 | - this.#bootstrapMethodReset();
|
|
| 59 | - Services.prefs.addObserver(Prefs.useNewBootstrap, this);
|
|
| 60 | - |
|
| 61 | 63 | Services.obs.addObserver(this, lazy.TorProviderTopics.TorLog);
|
| 62 | 64 | |
| 63 | 65 | for (const topic in lazy.TorConnectTopics) {
|
| ... | ... | @@ -67,13 +69,6 @@ class TorAndroidIntegrationImpl { |
| 67 | 69 | for (const topic in lazy.TorSettingsTopics) {
|
| 68 | 70 | Services.obs.addObserver(this, lazy.TorSettingsTopics[topic]);
|
| 69 | 71 | }
|
| 70 | - }
|
|
| 71 | - |
|
| 72 | - async #initNewBootstrap() {
|
|
| 73 | - if (this.#initialized) {
|
|
| 74 | - return;
|
|
| 75 | - }
|
|
| 76 | - this.#initialized = true;
|
|
| 77 | 72 | |
| 78 | 73 | lazy.TorProviderBuilder.init().finally(() => {
|
| 79 | 74 | lazy.TorProviderBuilder.firstWindowLoaded();
|
| ... | ... | @@ -86,13 +81,8 @@ class TorAndroidIntegrationImpl { |
| 86 | 81 | }
|
| 87 | 82 | }
|
| 88 | 83 | |
| 89 | - observe(subj, topic, data) {
|
|
| 84 | + observe(subj, topic) {
|
|
| 90 | 85 | switch (topic) {
|
| 91 | - case "nsPref:changed":
|
|
| 92 | - if (data === Prefs.useNewBootstrap) {
|
|
| 93 | - this.#bootstrapMethodReset();
|
|
| 94 | - }
|
|
| 95 | - break;
|
|
| 96 | 86 | case lazy.TorConnectTopics.StateChange:
|
| 97 | 87 | lazy.EventDispatcher.instance.sendRequest({
|
| 98 | 88 | type: EmittedEvents.connectStateChanged,
|
| ... | ... | @@ -187,15 +177,6 @@ class TorAndroidIntegrationImpl { |
| 187 | 177 | callback?.onError(e);
|
| 188 | 178 | }
|
| 189 | 179 | }
|
| 190 | - |
|
| 191 | - #bootstrapMethodReset() {
|
|
| 192 | - if (Services.prefs.getBoolPref(Prefs.useNewBootstrap, false)) {
|
|
| 193 | - this.#initNewBootstrap();
|
|
| 194 | - } else {
|
|
| 195 | - Services.prefs.clearUserPref("network.proxy.socks");
|
|
| 196 | - Services.prefs.clearUserPref("network.proxy.socks_port");
|
|
| 197 | - }
|
|
| 198 | - }
|
|
| 199 | 180 | }
|
| 200 | 181 | |
| 201 | 182 | export const TorAndroidIntegration = new TorAndroidIntegrationImpl(); |