[tor-commits] [Git][tpo/applications/firefox-android][firefox-android-115.2.1-13.5-1] fixup! Add Tor integration and UI

Dan Ballard (@dan) git at gitlab.torproject.org
Wed Apr 17 21:44:24 UTC 2024



Dan Ballard pushed to branch firefox-android-115.2.1-13.5-1 at The Tor Project / Applications / firefox-android


Commits:
8cc03c8e by Dan Ballard at 2024-04-17T14:08:42-07:00
fixup! Add Tor integration and UI

Bug 42486: Fixing controller use of TorSettings so cleanupSettings doesn't reject partial states

- - - - -


1 changed file:

- fenix/app/src/main/java/org/mozilla/fenix/tor/TorControllerGV.kt


Changes:

=====================================
fenix/app/src/main/java/org/mozilla/fenix/tor/TorControllerGV.kt
=====================================
@@ -88,15 +88,21 @@ class TorControllerGV(
         return getTorIntegration().getSettings()
     }
 
+
+    // Bridges Enabled is a cache variable. The TorController interface we are locked into at the
+    // moment to support the TAS backend calls setting `bridgesEnabled = true` and setting
+    // the bridge type seperately so to support that,
+    // while at the same time it being invalid states to not submit them together to the TorSettings
+    // backend where TorSettings.sys.mjs's #cleanupSettings will remove a lone bridgeEnabled
+    // we thus have to hold it here to support the UI but not submit to the backend until
+    // bridgeTransport is also set (below)
+    private var _bridgesEnabled: Boolean? = null
     override var bridgesEnabled: Boolean
         get() {
-            return getTorSettings()?.bridgesEnabled ?: false
+            return _bridgesEnabled ?: getTorSettings()?.bridgesEnabled ?: false
         }
         set(value) {
-            getTorSettings()?.let {
-                it.bridgesEnabled = value
-                getTorIntegration().setSettings(it, true, true)
-            }
+            _bridgesEnabled = value
         }
 
 
@@ -119,9 +125,13 @@ class TorControllerGV(
         }
         set(value) {
             getTorSettings()?.let {
+                it.bridgesEnabled = true
                 if (value == TorBridgeTransportConfig.USER_PROVIDED) {
-                    it.bridgesSource = BridgeSource.BuiltIn
+                    // NOOP: all settings will be set in call to set userProvidedBridges and submited
+                    // at the same time to clear TorSettings.sys.mjs #cleanupSettings
+                    return
                 } else {
+                    it.bridgesSource = BridgeSource.BuiltIn
                     val bbt: BridgeBuiltinType = when (value) {
                         TorBridgeTransportConfig.BUILTIN_OBFS4 -> BridgeBuiltinType.Obfs4
                         TorBridgeTransportConfig.BUILTIN_MEEK_AZURE -> BridgeBuiltinType.MeekAzure
@@ -135,12 +145,16 @@ class TorControllerGV(
         }
 
 
+    // Currently the UI takes a user provided string and sets this in one step so there is where we
+    // actually set it.bridgesSource = BridgeSource.UserProvided, not above, as TorSettings.sys.mjs #cleanupSettings
+    // could reject BridgeSource.UserProvided with no bridge strings
     override var userProvidedBridges: String?
         get() {
             return getTorSettings()?.bridgeBridgeStrings?.joinToString("\r\n")
         }
         set(value) {
             getTorSettings()?.let {
+                it.bridgesSource = BridgeSource.UserProvided
                 it.bridgeBridgeStrings = value?.split("\r\n")?.toTypedArray() ?: arrayOf<String>()
                 getTorIntegration().setSettings(it, true, true)
             }



View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/8cc03c8ec5d85b61ac16d60447f9e3ff08a695d9

-- 
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/8cc03c8ec5d85b61ac16d60447f9e3ff08a695d9
You're receiving this email because of your account on gitlab.torproject.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.torproject.org/pipermail/tor-commits/attachments/20240417/98012a6b/attachment-0001.htm>


More information about the tor-commits mailing list