Dan Ballard pushed to branch firefox-android-115.2.1-13.5-1 at The Tor Project / Applications / firefox-android
Commits: 50c4fb9d by clairehurst at 2024-05-09T14:51:05-06:00 fixup! Enable the connect assist experiments on alpha
- - - - -
13 changed files:
- fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt - fenix/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt - fenix/app/src/main/java/org/mozilla/fenix/components/Components.kt - fenix/app/src/main/java/org/mozilla/fenix/components/Core.kt - fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt - − fenix/app/src/main/java/org/mozilla/fenix/tor/TorBetaConnectionFeaturesFragment.kt - fenix/app/src/main/java/org/mozilla/fenix/tor/TorBootstrapFragment.kt - fenix/app/src/main/java/org/mozilla/fenix/tor/TorConnectionAssistViewModel.kt - fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt - − fenix/app/src/main/res/layout/tor_network_settings_beta_connection_features.xml - fenix/app/src/main/res/navigation/nav_graph.xml - fenix/app/src/main/res/values/preference_keys.xml - fenix/app/src/main/res/xml/preferences.xml
Changes:
===================================== fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt ===================================== @@ -1186,19 +1186,15 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorIn }
open fun navigateToHome() { - if (settings().useNewBootstrap) { - if (settings().useNewBootstrapNativeUi) { - navHost.navController.navigate(NavGraphDirections.actionStartupTorConnectionAssist()) - } else { - navHost.navController.navigate(NavGraphDirections.actionStartupHome()) - openToBrowserAndLoad( - searchTermOrURL = "about:torconnect", - newTab = true, - from = BrowserDirection.FromHome, - ) - } + if (!settings().useHtmlConnectionUi) { + navHost.navController.navigate(NavGraphDirections.actionStartupTorConnectionAssist()) } else { - navHost.navController.navigate(NavGraphDirections.actionStartupTorbootstrap()) + navHost.navController.navigate(NavGraphDirections.actionStartupHome()) + openToBrowserAndLoad( + searchTermOrURL = "about:torconnect", + newTab = true, + from = BrowserDirection.FromHome, + ) } }
===================================== fenix/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt ===================================== @@ -1217,12 +1217,7 @@ abstract class BaseBrowserFragment : private fun handleBetaHtmlTorConnect() { val currentTab = getCurrentTab() ?: return if (currentTab.content.url == "about:torconnect") { - if (!requireActivity().settings().useNewBootstrap) { - requireContext().components.useCases.tabsUseCases.removeTab(currentTab.id) - (requireActivity() as HomeActivity).navHost.navController.navigate( - NavGraphDirections.actionStartupTorbootstrap(), - ) - } else if (!requireActivity().settings().useNewBootstrapHtmlUi) { + if (!requireActivity().settings().useHtmlConnectionUi) { requireContext().components.useCases.tabsUseCases.removeTab(currentTab.id) (requireActivity() as HomeActivity).navigateToHome() } else {
===================================== fenix/app/src/main/java/org/mozilla/fenix/components/Components.kt ===================================== @@ -202,7 +202,7 @@ class Components(private val context: Context) { ), ) } - val torController by lazyMonitored { if (settings.useNewBootstrap) TorControllerGV(context) else TorControllerTAS(context) } + val torController by lazyMonitored { TorControllerGV(context) } }
/**
===================================== fenix/app/src/main/java/org/mozilla/fenix/components/Core.kt ===================================== @@ -145,7 +145,6 @@ class Core( .shouldShowCookieBannerReEngagementDialog(), torSecurityLevel = context.settings().torSecurityLevel().intRepresentation, spoofEnglish = context.settings().spoofEnglish, - useNewBootstrap = context.settings().useNewBootstrap, )
GeckoEngine(
===================================== fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt ===================================== @@ -40,6 +40,7 @@ import mozilla.components.concept.sync.Profile import mozilla.components.service.glean.private.NoExtras import mozilla.components.support.ktx.android.view.showKeyboard import org.mozilla.fenix.BrowserDirection +import org.mozilla.fenix.BuildConfig import org.mozilla.fenix.Config import org.mozilla.fenix.FeatureFlags import org.mozilla.fenix.GleanMetrics.Addons @@ -738,13 +739,9 @@ class SettingsFragment : PreferenceFragmentCompat() { } }
- requirePreference<Preference>(R.string.pref_key_use_new_bootstrap).apply { - setOnPreferenceClickListener { - val directions = - SettingsFragmentDirections.actionSettingsFragmentToBetaConnectionFeaturesFragment() - requireView().findNavController().navigate(directions) - true - } + requirePreference<Preference>(R.string.pref_key_use_html_connection_ui).apply { + onPreferenceChangeListener = object : SharedPreferenceUpdater() {} + isVisible = BuildConfig.DEBUG }
requirePreference<Preference>(R.string.pref_key_tor_logs).apply {
===================================== fenix/app/src/main/java/org/mozilla/fenix/tor/TorBetaConnectionFeaturesFragment.kt deleted ===================================== @@ -1,66 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -package org.mozilla.fenix.tor - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.core.view.children -import androidx.fragment.app.Fragment -import org.mozilla.fenix.databinding.TorNetworkSettingsBetaConnectionFeaturesBinding -import org.mozilla.fenix.ext.components -import org.mozilla.fenix.ext.settings - -/** - * Lets the user customize beta connection features mode. - */ -class TorBetaConnectionFeaturesFragment : Fragment() { - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle?, - ): View { - val binding = TorNetworkSettingsBetaConnectionFeaturesBinding.inflate(inflater) - - binding.enableBetaConnectionFeaturesSwitch.run { - isChecked = context.settings().useNewBootstrap - setConnectionAssistUI(binding, isChecked) - - setOnCheckedChangeListener { _, isConnectionAssistEnabled -> - context.settings().useNewBootstrap = isConnectionAssistEnabled - setConnectionAssistUI(binding, isConnectionAssistEnabled) - updateEngineConnectionAssistMode() - } - } - - // Since the beta connection features modes are in a RadioGroup we only need one listener to know of all their changes. - binding.useNewBootstrapWithNativeUiRadioButton.setOnCheckedChangeListener { _, _ -> - updateEngineConnectionAssistMode() - } - - return binding.root - } - - private fun setConnectionAssistUI( - binding: TorNetworkSettingsBetaConnectionFeaturesBinding, - isBetaConnectionAssistEnabled: Boolean, - ) { - if (!isBetaConnectionAssistEnabled) { - binding.enableBetaConnectionFeaturesModes.apply { - clearCheck() - children.forEach { it.isEnabled = false } - } - } else { - binding.enableBetaConnectionFeaturesModes.children.forEach { it.isEnabled = true } - } - } - - private fun updateEngineConnectionAssistMode() { - requireContext().components.core.engine.settings.useNewBootstrap = - requireContext().settings().useNewBootstrap - } - -}
===================================== fenix/app/src/main/java/org/mozilla/fenix/tor/TorBootstrapFragment.kt ===================================== @@ -164,9 +164,7 @@ class TorBootstrapFragment : Fragment() { // triggered to cause an automatic update on warm start (no tab selection occurs). So we // update it manually here. requireComponents.useCases.sessionUseCases.updateLastAccess() - if (requireContext().settings().useNewBootstrap){ - (requireActivity() as HomeActivity).navigateToHome() - } + (requireActivity() as HomeActivity).navigateToHome() }
private fun handleTorBootstrapConnect() {
===================================== fenix/app/src/main/java/org/mozilla/fenix/tor/TorConnectionAssistViewModel.kt ===================================== @@ -21,7 +21,7 @@ class TorConnectionAssistViewModel( private val TAG = "torConnectionAssistVM" private val components = getApplication<Application>().components
- private val _torController: TorControllerGV = components.torController as TorControllerGV + private val _torController: TorControllerGV = components.torController
private val _torConnectScreen = MutableStateFlow(ConnectAssistUiState.Splash) internal val torConnectScreen: StateFlow<ConnectAssistUiState> = _torConnectScreen
===================================== fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt ===================================== @@ -1855,18 +1855,8 @@ class Settings(private val appContext: Context) : PreferencesHolder { */ var enableUnifiedSearchSettingsUI: Boolean = showUnifiedSearchFeature && FeatureFlags.unifiedSearchSettings
- var useNewBootstrap by booleanPreference( - appContext.getPreferenceKey(R.string.pref_key_use_new_bootstrap), - default = true, - ) - - var useNewBootstrapNativeUi by booleanPreference( - appContext.getPreferenceKey(R.string.pref_key_use_new_bootstrap_with_android_native), - default = true, - ) - - var useNewBootstrapHtmlUi by booleanPreference( - appContext.getPreferenceKey(R.string.pref_key_use_new_bootstrap_with_html), - default = false + var useHtmlConnectionUi by booleanPreference( + appContext.getPreferenceKey(R.string.pref_key_use_html_connection_ui), + default = false, ) }
===================================== fenix/app/src/main/res/layout/tor_network_settings_beta_connection_features.xml deleted ===================================== @@ -1,99 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?><!-- This Source Code Form is subject to the terms of the Mozilla Public - - License, v. 2.0. If a copy of the MPL was not distributed with this - - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <TextView - android:id="@+id/enable_beta_connection_features_title" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginStart="16dp" - android:layout_marginTop="16dp" - android:layout_marginBottom="2dp" - android:clickable="false" - android:text="Enable beta connection features" - android:textAppearance="@style/ListItemTextStyle" - android:textSize="16sp" - app:layout_constraintBottom_toTopOf="@id/enable_beta_connection_features_summary" - app:layout_constraintEnd_toStartOf="@id/enable_beta_connection_features_switch" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:lineHeight="24.sp" /> - - <TextView - android:id="@+id/enable_beta_connection_features_summary" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:text="Help us test our new connection assist features which focuses on a streamlined connection with better integration with bridges" - android:textColor="?attr/textSecondary" - android:textColorLink="?attr/textSecondary" - android:textSize="12sp" - app:layout_constraintBottom_toTopOf="@id/enable_beta_connection_features_modes" - app:layout_constraintEnd_toEndOf="@id/enable_beta_connection_features_title" - app:layout_constraintStart_toStartOf="@id/enable_beta_connection_features_title" - app:layout_constraintTop_toBottomOf="@id/enable_beta_connection_features_title" - app:lineHeight="16.sp" /> - - <androidx.appcompat.widget.SwitchCompat - android:id="@+id/enable_beta_connection_features_switch" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:minHeight="48dp" - android:paddingStart="18dp" - android:paddingEnd="18dp" - android:textColor="@color/state_list_text_color" - android:textOff="@string/studies_off" - android:textOn="@string/studies_on" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="@id/enable_beta_connection_features_title" /> - - <RadioGroup - android:id="@+id/enable_beta_connection_features_modes" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="10dp" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/enable_beta_connection_features_summary"> - - <org.mozilla.fenix.settings.PreferenceBackedRadioButton - android:id="@+id/use_new_bootstrap_with_native_ui_radio_button" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="?android:attr/selectableItemBackground" - android:button="@null" - android:drawablePadding="@dimen/radio_button_preference_drawable_padding" - android:paddingStart="@dimen/radio_button_preference_horizontal" - android:paddingTop="@dimen/radio_button_preference_vertical" - android:paddingEnd="@dimen/radio_button_preference_horizontal" - android:paddingBottom="@dimen/radio_button_preference_vertical" - android:text="Native Android UI" - android:textAppearance="?android:attr/textAppearanceListItem" - android:textSize="16sp" - app:drawableStartCompat="?android:attr/listChoiceIndicatorSingle" - app:preferenceKey="@string/pref_key_use_new_bootstrap_with_android_native" - app:preferenceKeyDefaultValue="true" /> - - <org.mozilla.fenix.settings.PreferenceBackedRadioButton - android:id="@+id/use_new_bootstrap_with_html_ui_radio_button" - android:layout_width="match_parent" - android:layout_height="48dp" - android:background="?android:attr/selectableItemBackground" - android:button="@null" - android:drawablePadding="@dimen/radio_button_preference_drawable_padding" - android:paddingStart="@dimen/radio_button_preference_horizontal" - android:paddingTop="@dimen/radio_button_preference_vertical" - android:paddingEnd="@dimen/radio_button_preference_horizontal" - android:paddingBottom="@dimen/radio_button_preference_vertical" - android:text="HTML UI" - android:textAppearance="?android:attr/textAppearanceListItem" - android:textSize="16sp" - app:drawableStartCompat="?android:attr/listChoiceIndicatorSingle" - app:preferenceKey="@string/pref_key_use_new_bootstrap_with_html" - app:preferenceKeyDefaultValue="false" /> - </RadioGroup> - -</androidx.constraintlayout.widget.ConstraintLayout>
===================================== fenix/app/src/main/res/navigation/nav_graph.xml ===================================== @@ -977,11 +977,6 @@ android:id="@+id/torBridgeConfigFragment" android:name="org.mozilla.fenix.settings.TorBridgeConfigFragment" android:label="@string/preferences_tor_network_settings_bridge_config" /> - <fragment - android:id="@+id/torBetaConnectionFeaturesFragment" - android:name="org.mozilla.fenix.tor.TorBetaConnectionFeaturesFragment" - android:label="Enable beta connection features" - tools:layout="@layout/tor_network_settings_beta_connection_features" /> <fragment android:id="@+id/torLogsFragment" android:name="org.mozilla.fenix.tor.TorLogsComposeFragment"
===================================== fenix/app/src/main/res/values/preference_keys.xml ===================================== @@ -378,10 +378,8 @@
<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_use_new_bootstrap" translatable="false">pref_key_use_new_bootstrap</string> <string name="pref_key_tor_logs" translatable="false">pref_key_tor_logs</string> - <string name="pref_key_use_new_bootstrap_with_android_native" translatable="false">pref_key_use_new_bootstrap_with_android_native</string> - <string name="pref_key_use_new_bootstrap_with_html" translatable="false">pref_key_use_new_bootstrap_with_html</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_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> <string name="pref_key_tor_network_settings_bridge_config_builtin_bridge_obfs4" translatable="false">pref_key_tor_network_settings_bridge_config_builtin_bridge_obfs4</string>
===================================== fenix/app/src/main/res/xml/preferences.xml ===================================== @@ -176,10 +176,12 @@ android:title="@string/tor_bootstrap_quick_start_label" app:iconSpaceReserved="false" />
- <Preference - android:key="@string/pref_key_use_new_bootstrap" - app:iconSpaceReserved="false" - android:title="Enable beta connection features" /> + <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"
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/50c4...