tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 7ab53d075f934d409399c72db9900ff541b4a680
parent dbc1811b57d0f5c4c08294ec2fe3e838407d7f4f
Author: clairehurst <clairehurst@torproject.org>
Date:   Thu, 15 Jan 2026 19:41:22 -0700

fixup! [android] Implement Android-native Connection Assist UI

Diffstat:
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt | 36++----------------------------------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt | 24------------------------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt | 21---------------------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt | 5-----
Mmobile/android/fenix/app/src/main/res/values/preference_keys.xml | 1-
Mmobile/android/fenix/app/src/main/res/xml/preferences.xml | 7-------
6 files changed, 2 insertions(+), 92 deletions(-)

diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -185,7 +185,6 @@ import org.mozilla.fenix.compose.core.Action import org.mozilla.fenix.compose.snackbar.SnackbarState import org.mozilla.fenix.compose.snackbar.Snackbar import org.mozilla.fenix.tor.UrlQuickLoadViewModel -import org.mozilla.geckoview.TorAndroidIntegration import org.mozilla.geckoview.TorAndroidIntegration.BootstrapStateChangeListener import org.mozilla.geckoview.TorConnectStage import kotlin.system.exitProcess @@ -197,7 +196,7 @@ import kotlin.system.exitProcess * - browser screen */ @SuppressWarnings("TooManyFunctions", "LargeClass", "LongMethod") -open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAndroidIntegration.BootstrapStateChangeListener { +open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { @VisibleForTesting internal lateinit var binding: ActivityHomeBinding lateinit var themeManager: ThemeManager @@ -611,14 +610,6 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn onBackPressedCallback = onBackPressedCallback, ) - if (settings().useHtmlConnectionUi) { - val engine = components.core.engine - if (engine is GeckoEngine) { - val torIntegration = engine.getTorIntegrationController() - torIntegration.registerBootstrapStateChangeListener(this) - } - } - StartupTimeline.onActivityCreateEndHome(this) // DO NOT MOVE ANYTHING BELOW HERE. } @@ -1388,20 +1379,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn @VisibleForTesting internal fun navigateToHome(navController: NavController) { - // if (this is ExternalAppBrowserActivity) { - // return - // } - - if (!settings().useHtmlConnectionUi) { - navController.navigate(NavGraphDirections.actionStartupTorConnectionAssist()) - } else { - navController.navigate(NavGraphDirections.actionStartupHome()) - openToBrowserAndLoad( - searchTermOrURL = "about:torconnect", - newTab = true, - from = BrowserDirection.FromHome, - ) - } + navController.navigate(NavGraphDirections.actionStartupTorConnectionAssist()) } final override fun attachBaseContext(base: Context) { @@ -1608,14 +1586,4 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn finishAndRemoveTask() exitProcess(0) } - - override fun onBootstrapStageChange(stage: TorConnectStage) { - if (stage.isBootstrapped) { - if (settings().useHtmlConnectionUi) { - components.useCases.tabsUseCases.removeAllTabs() - navHost.navController.navigate(NavGraphDirections.actionStartupHome()) - } - } - } - override fun onBootstrapProgress(progress: Double, hasWarnings: Boolean) = Unit } diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt @@ -1970,10 +1970,6 @@ abstract class BaseBrowserFragment : @Suppress("DEPRECATION") it.announceForAccessibility(selectedTab.toDisplayTitle()) - if (getCurrentTab()?.content?.url == "about:torconnect") { - // FIXME: view is not available anymore. - // browserToolbarView.view.visibility = View.GONE - } } } else { view?.let { view -> initializeUI(view) } @@ -2007,26 +2003,6 @@ abstract class BaseBrowserFragment : ), ) } - - handleBetaHtmlTorConnect() - } - - private fun handleBetaHtmlTorConnect() { - val currentTab = getCurrentTab() ?: return - if (currentTab.content.url == "about:torconnect") { - if (!requireActivity().settings().useHtmlConnectionUi) { - requireContext().components.useCases.tabsUseCases.removeTab(currentTab.id) - (requireActivity() as HomeActivity).navigateToHome( - findNavController(), - ) - } else { - // This just makes it not flash (be visible for a split second) before handleTabSelected() hides it again - // FIXME: view is not available anymore. - // browserToolbarView.view.visibility = View.GONE - } - } else if (currentTab.content.url == "about:tor") { - requireContext().components.useCases.tabsUseCases.removeTab(currentTab.id) - } } private fun evaluateMessagesForMicrosurvey(components: Components) = diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt @@ -10,7 +10,6 @@ import android.os.Bundle import android.os.Handler import android.os.Looper import android.os.StrictMode -import android.util.Log import android.view.LayoutInflater import android.view.View import android.widget.Toast @@ -31,7 +30,6 @@ import androidx.preference.SwitchPreference import androidx.recyclerview.widget.RecyclerView import com.google.android.material.dialog.MaterialAlertDialogBuilder import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch import mozilla.components.browser.state.state.selectedOrDefaultSearchEngine @@ -739,20 +737,6 @@ class SettingsFragment : PreferenceFragmentCompat(), UserInteractionHandler { @VisibleForTesting internal fun setupHomepagePreference(settings: Settings) { - /*with(requirePreference<Preference>(R.string.pref_key_home)) { - summary = when { - settings.alwaysOpenTheHomepageWhenOpeningTheApp -> - getString(R.string.opening_screen_homepage_summary) - - settings.openHomepageAfterFourHoursOfInactivity -> - getString(R.string.opening_screen_after_four_hours_of_inactivity_summary) - - settings.alwaysOpenTheLastTabWhenOpeningTheApp -> - getString(R.string.opening_screen_last_tab_summary) - - else -> null - } - }*/ } @VisibleForTesting @@ -811,11 +795,6 @@ class SettingsFragment : PreferenceFragmentCompat(), UserInteractionHandler { } } - requirePreference<Preference>(R.string.pref_key_use_html_connection_ui).apply { - onPreferenceChangeListener = object : SharedPreferenceUpdater() {} - isVisible = Config.channel != ReleaseChannel.Release - } - requirePreference<Preference>(R.string.pref_key_tor_logs).apply { setOnPreferenceClickListener { val directions = diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt @@ -2928,11 +2928,6 @@ class Settings( default = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).path, ) - var useHtmlConnectionUi by booleanPreference( - key = appContext.getPreferenceKey(R.string.pref_key_use_html_connection_ui), - default = false, - ) - var quickStart by booleanPreference( appContext.getPreferenceKey(R.string.pref_key_quick_start), default = false, diff --git a/mobile/android/fenix/app/src/main/res/values/preference_keys.xml b/mobile/android/fenix/app/src/main/res/values/preference_keys.xml @@ -546,7 +546,6 @@ <string name="pref_key_tor_network_settings_explanation" translatable="false">pref_key_tor_network_settings_explanation</string> <string name="pref_key_tor_network_settings_bridge_config" translatable="false">pref_key_tor_network_settings_bridge_config</string> <string name="pref_key_tor_logs" translatable="false">pref_key_tor_logs</string> - <string name="pref_key_use_html_connection_ui" translatable="false">pref_key_use_html_connection_ui</string> <!-- Changing the pref_key should reset it to off for users that had it enabled --> <string name="pref_key_about_config_shortcut" translatable="false">pref_key_about_config_shortcut</string> <string name="pref_key_tor_network_settings_bridge_config_explanation" translatable="false">pref_key_tor_network_settings_bridge_config_explanation</string> <string name="pref_key_tor_network_settings_bridge_config_toggle" translatable="false">pref_key_tor_network_settings_bridge_config_toggle</string> diff --git a/mobile/android/fenix/app/src/main/res/xml/preferences.xml b/mobile/android/fenix/app/src/main/res/xml/preferences.xml @@ -181,13 +181,6 @@ android:title="@string/tor_connect_automatically_label" app:iconSpaceReserved="false" /> - <SwitchPreference - android:defaultValue="false" - android:key="@string/pref_key_use_html_connection_ui" - android:summary="Recommended only for debugging" - android:title="Enable HTML connection UI" - app:iconSpaceReserved="false" /> - <Preference android:key="@string/pref_key_tor_logs" app:iconSpaceReserved="false"