clairehurst pushed to branch tor-browser-128.8.0esr-14.5-1 at The Tor Project / Applications / Tor Browser
Commits: d7dfb3f5 by clairehurst at 2025-03-13T15:41:50-06:00 fixup! [android] Implement Android-native Connection Assist UI
tor-browser#43361
- - - - - ec07d29a by clairehurst at 2025-03-13T15:41:57-06:00 fixup! TB 41878: [android] Add standalone Tor Bootstrap
tor-browser#43361
- - - - -
5 changed files:
- mobile/android/fenix/app/src/main/java/org/mozilla/fenix/FenixApplication.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorConnectionAssistFragment.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorConnectionAssistViewModel.kt
Changes:
===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/FenixApplication.kt ===================================== @@ -137,8 +137,6 @@ open class FenixApplication : LocaleAwareApplication(), Provider { isDeviceRamAboveThreshold() }
- var terminating = false - open val components by lazy { Components(this) }
var visibilityLifecycleCallback: VisibilityLifecycleCallback? = null @@ -188,20 +186,6 @@ open class FenixApplication : LocaleAwareApplication(), Provider { } }
- fun isTerminating() = terminating - - fun terminate() { - onTerminate() - } - - override fun onTerminate() { - terminating = true - - super.onTerminate() - components.torController.stop() - components.torController.stopTor() - } - @OptIn(DelicateCoroutinesApi::class) // GlobalScope usage @VisibleForTesting protected open fun initializeGlean() {
===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt ===================================== @@ -158,6 +158,7 @@ import org.mozilla.fenix.home.HomeFragment import org.mozilla.fenix.tor.UrlQuickLoadViewModel import org.mozilla.geckoview.TorAndroidIntegration import org.mozilla.geckoview.TorConnectStage +import kotlin.system.exitProcess
/** * The main activity of the application. The application is primarily a single Activity (this one) @@ -653,22 +654,6 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn if (this !is ExternalAppBrowserActivity && !activityStartedWithLink) { stopMediaSession() } - - if (isFinishing && !(application as FenixApplication).isTerminating()) { - // We assume the Activity is being destroyed because the user - // swiped away the app on the Recent screen. When this happens, - // we assume the user expects the entire Application is destroyed - // and not only the top Activity/Task. Therefore we kill the - // underlying Application, as well. - (application as FenixApplication).terminate() - if (settings().useHtmlConnectionUi) { - val engine = components.core.engine - if (engine is GeckoEngine) { - val torIntegration = engine.getTorIntegrationController() - torIntegration.unregisterBootstrapStateChangeListener(this) - } - } - } }
final override fun onConfigurationChanged(newConfig: Configuration) { @@ -1453,6 +1438,11 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn private const val PWA_RECENTLY_USED_THRESHOLD = DateUtils.DAY_IN_MILLIS * 30L }
+ fun shutDown() : Nothing { + finishAndRemoveTask() + exitProcess(0) + } + override fun onBootstrapStateChange(state: String) = Unit override fun onBootstrapStageChange(stage: TorConnectStage) = Unit override fun onBootstrapProgress(progress: Double, hasWarnings: Boolean) = Unit
===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt ===================================== @@ -1394,7 +1394,6 @@ class HomeFragment : Fragment(), UserInteractionHandler { }
override fun onBackPressed(): Boolean { - requireActivity().finish() - return true + (requireActivity() as HomeActivity).shutDown() } }
===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorConnectionAssistFragment.kt ===================================== @@ -149,7 +149,7 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { private fun setBackButton(screen: ConnectAssistUiState) { binding.backButton.visibility = if (screen.backButtonVisible) View.VISIBLE else View.INVISIBLE binding.backButton.setOnClickListener { - torConnectionAssistViewModel.handleBackButtonPressed() + onBackPressed() } }
@@ -314,7 +314,8 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { }
override fun onBackPressed(): Boolean { - return torConnectionAssistViewModel.handleBackButtonPressed() + torConnectionAssistViewModel.handleBackButtonPressed(requireActivity() as HomeActivity) + return true }
}
===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorConnectionAssistViewModel.kt ===================================== @@ -10,6 +10,7 @@ import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.MutableLiveData import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow +import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.ext.components
class TorConnectionAssistViewModel( @@ -150,10 +151,10 @@ class TorConnectionAssistViewModel( return true }
- fun handleBackButtonPressed(): Boolean { + fun handleBackButtonPressed(homeActivity: HomeActivity) { when (torConnectScreen.value) { - ConnectAssistUiState.Splash -> return false - ConnectAssistUiState.Configuring -> return false + ConnectAssistUiState.Splash -> homeActivity.shutDown() + ConnectAssistUiState.Configuring -> homeActivity.shutDown() ConnectAssistUiState.Connecting -> cancelTorBootstrap() ConnectAssistUiState.InternetError -> { _torController.lastKnownError = null @@ -191,6 +192,5 @@ class TorConnectionAssistViewModel( _torConnectScreen.value = ConnectAssistUiState.LocationCheck } } - return true } }
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/da17f78...
tbb-commits@lists.torproject.org