
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... -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/da17f78... You're receiving this email because of your account on gitlab.torproject.org.
participants (1)
-
clairehurst (@clairehurst)