Dan Ballard pushed to branch tor-browser-128.8.0esr-14.5-1 at The Tor Project / Applications / Tor Browser
Commits:
- 
d3a9fcd2
by clairehurst at 2025-03-10T10:52:05-06:00
 
6 changed files:
- 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/TorBootstrapProgressViewModel.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
 - + mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/UrlQuickLoadViewModel.kt
 
Changes:
| ... | ... | @@ -155,7 +155,7 @@ import java.util.Locale | 
| 155 | 155 |  import mozilla.components.browser.engine.gecko.GeckoEngine
 | 
| 156 | 156 |  import org.mozilla.fenix.components.FenixSnackbar
 | 
| 157 | 157 |  import org.mozilla.fenix.home.HomeFragment
 | 
| 158 | -import org.mozilla.fenix.tor.TorConnectionAssistViewModel
 | 
|
| 158 | +import org.mozilla.fenix.tor.UrlQuickLoadViewModel
 | 
|
| 159 | 159 |  import org.mozilla.geckoview.TorAndroidIntegration
 | 
| 160 | 160 | |
| 161 | 161 |  /**
 | 
| ... | ... | @@ -237,7 +237,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn | 
| 237 | 237 | |
| 238 | 238 |      private var dialog: RedirectDialogFragment? = null
 | 
| 239 | 239 | |
| 240 | -    private val torConnectionAssistViewModel: TorConnectionAssistViewModel by viewModels()
 | 
|
| 240 | +    private val urlQuickLoadViewModel: UrlQuickLoadViewModel by viewModels()
 | 
|
| 241 | 241 | |
| 242 | 242 |      @Suppress("ComplexMethod")
 | 
| 243 | 243 |      final override fun onCreate(savedInstanceState: Bundle?) {
 | 
| ... | ... | @@ -1124,7 +1124,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn | 
| 1124 | 1124 |                  .setText(getString(R.string.connection_assist_connect_to_tor_before_opening_links))
 | 
| 1125 | 1125 |                  .setAllCapsForActionButton(false)
 | 
| 1126 | 1126 |                  .setAction(getString(R.string.connection_assist_connect_to_tor_before_opening_links_confirmation)) {
 | 
| 1127 | -                    torConnectionAssistViewModel.handleConnect(searchTermOrURL)
 | 
|
| 1127 | +                    urlQuickLoadViewModel.urlToLoadAfterConnecting.value = searchTermOrURL
 | 
|
| 1128 | 1128 |                      if (navHost.navController.previousBackStackEntry?.destination?.id == R.id.torConnectionAssistFragment) {
 | 
| 1129 | 1129 |                          supportFragmentManager.popBackStack()
 | 
| 1130 | 1130 |                      } else {
 | 
| ... | ... | @@ -158,13 +158,14 @@ import org.mozilla.fenix.search.toolbar.SearchSelectorMenu | 
| 158 | 158 |  import org.mozilla.fenix.tabstray.Page
 | 
| 159 | 159 |  import org.mozilla.fenix.tabstray.TabsTrayAccessPoint
 | 
| 160 | 160 |  import org.mozilla.fenix.theme.FirefoxTheme
 | 
| 161 | -import org.mozilla.fenix.tor.TorConnectionAssistViewModel
 | 
|
| 162 | 161 |  import org.mozilla.fenix.utils.Settings.Companion.TOP_SITES_PROVIDER_MAX_THRESHOLD
 | 
| 163 | 162 |  import org.mozilla.fenix.utils.allowUndo
 | 
| 164 | 163 |  import org.mozilla.fenix.wallpapers.Wallpaper
 | 
| 165 | 164 |  import java.lang.ref.WeakReference
 | 
| 166 | 165 |  import org.mozilla.fenix.GleanMetrics.TabStrip as TabStripMetrics
 | 
| 167 | 166 | |
| 167 | +import org.mozilla.fenix.tor.UrlQuickLoadViewModel
 | 
|
| 168 | +  | 
|
| 168 | 169 |  @Suppress("TooManyFunctions", "LargeClass")
 | 
| 169 | 170 |  class HomeFragment : Fragment(), UserInteractionHandler {
 | 
| 170 | 171 |      private val args by navArgs<HomeFragmentArgs>()
 | 
| ... | ... | @@ -178,7 +179,7 @@ class HomeFragment : Fragment(), UserInteractionHandler { | 
| 178 | 179 |      private val binding get() = _binding!!
 | 
| 179 | 180 | |
| 180 | 181 |      private val homeViewModel: HomeScreenViewModel by activityViewModels()
 | 
| 181 | -    private val torConnectionAssistViewModel: TorConnectionAssistViewModel by activityViewModels()
 | 
|
| 182 | +    private val urlQuickLoadViewModel: UrlQuickLoadViewModel by activityViewModels()
 | 
|
| 182 | 183 | |
| 183 | 184 |      private val snackbarAnchorView: View?
 | 
| 184 | 185 |          get() = when (requireContext().settings().toolbarPosition) {
 | 
| ... | ... | @@ -892,14 +893,15 @@ class HomeFragment : Fragment(), UserInteractionHandler { | 
| 892 | 893 |              view = view,
 | 
| 893 | 894 |          )
 | 
| 894 | 895 | |
| 895 | -        torConnectionAssistViewModel.urlToLoadAfterConnecting.also {
 | 
|
| 896 | -            if(!it.isNullOrBlank()){
 | 
|
| 896 | +        urlQuickLoadViewModel.urlToLoadAfterConnecting.observe(viewLifecycleOwner) {
 | 
|
| 897 | +            if (!it.isNullOrBlank()) {
 | 
|
| 897 | 898 |                  (requireActivity() as HomeActivity).openToBrowserAndLoad(
 | 
| 898 | 899 |                      searchTermOrURL = it,
 | 
| 899 | 900 |                      newTab = true,
 | 
| 900 | 901 |                      from = BrowserDirection.FromHome,
 | 
| 901 | 902 |                  )
 | 
| 902 | -                torConnectionAssistViewModel.urlToLoadAfterConnecting = null // Only load this url once
 | 
|
| 903 | +                // Only load this url once
 | 
|
| 904 | +                urlQuickLoadViewModel.urlToLoadAfterConnecting.value = null
 | 
|
| 903 | 905 |              }
 | 
| 904 | 906 |          }
 | 
| 905 | 907 | 
| 1 | +package org.mozilla.fenix.tor
 | 
|
| 2 | +  | 
|
| 3 | +import android.app.Application
 | 
|
| 4 | +import androidx.lifecycle.AndroidViewModel
 | 
|
| 5 | +import androidx.lifecycle.MutableLiveData
 | 
|
| 6 | +import org.mozilla.fenix.ext.components
 | 
|
| 7 | +import org.mozilla.geckoview.TorAndroidIntegration.BootstrapStateChangeListener
 | 
|
| 8 | +  | 
|
| 9 | +class TorBootstrapProgressViewModel(
 | 
|
| 10 | +    application: Application,
 | 
|
| 11 | +) : AndroidViewModel(application), BootstrapStateChangeListener {
 | 
|
| 12 | +  | 
|
| 13 | +    private val torIntegrationAndroid =
 | 
|
| 14 | +        application.components.core.geckoRuntime.torIntegrationController
 | 
|
| 15 | +  | 
|
| 16 | +    val progress: MutableLiveData<Int> by lazy {
 | 
|
| 17 | +        MutableLiveData<Int>(0)
 | 
|
| 18 | +    }
 | 
|
| 19 | +  | 
|
| 20 | +    init {
 | 
|
| 21 | +        torIntegrationAndroid.registerBootstrapStateChangeListener(this)
 | 
|
| 22 | +    }
 | 
|
| 23 | +  | 
|
| 24 | +    override fun onCleared() {
 | 
|
| 25 | +        torIntegrationAndroid.unregisterBootstrapStateChangeListener(this)
 | 
|
| 26 | +        super.onCleared()
 | 
|
| 27 | +    }
 | 
|
| 28 | +  | 
|
| 29 | +    override fun onBootstrapStateChange(state: String?) {}
 | 
|
| 30 | +  | 
|
| 31 | +    override fun onBootstrapProgress(progress: Double, hasWarnings: Boolean) {
 | 
|
| 32 | +        this.progress.value = progress.toInt()
 | 
|
| 33 | +    }
 | 
|
| 34 | +  | 
|
| 35 | +    override fun onBootstrapComplete() {}
 | 
|
| 36 | +  | 
|
| 37 | +    override fun onBootstrapError(
 | 
|
| 38 | +        code: String?,
 | 
|
| 39 | +        message: String?,
 | 
|
| 40 | +        phase: String?,
 | 
|
| 41 | +        reason: String?,
 | 
|
| 42 | +    ) {
 | 
|
| 43 | +    }
 | 
|
| 44 | +} | 
| ... | ... | @@ -35,12 +35,14 @@ import org.mozilla.fenix.ext.hideToolbar | 
| 35 | 35 |  class TorConnectionAssistFragment : Fragment(), UserInteractionHandler {
 | 
| 36 | 36 | |
| 37 | 37 |      private val TAG = "TorConnectionAssistFrag"
 | 
| 38 | -    private val viewModel: TorConnectionAssistViewModel by activityViewModels()
 | 
|
| 38 | +    private val progressViewModel: TorBootstrapProgressViewModel by viewModels()
 | 
|
| 39 | +    private val quickstartViewModel: QuickstartViewModel by activityViewModels()
 | 
|
| 40 | +    private val torConnectionAssistViewModel : TorConnectionAssistViewModel by viewModels()
 | 
|
| 41 | +    private val urlQuickLoadViewModel : UrlQuickLoadViewModel by activityViewModels()
 | 
|
| 42 | +  | 
|
| 39 | 43 |      private var _binding: FragmentTorConnectionAssistBinding? = null
 | 
| 40 | 44 |      private val binding get() = _binding!!
 | 
| 41 | 45 | |
| 42 | -    private val quickstartViewModel: QuickstartViewModel by activityViewModels()
 | 
|
| 43 | -  | 
|
| 44 | 46 |      override fun onCreateView(
 | 
| 45 | 47 |          inflater: LayoutInflater,
 | 
| 46 | 48 |          container: ViewGroup?,
 | 
| ... | ... | @@ -49,18 +51,23 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { | 
| 49 | 51 |          _binding = FragmentTorConnectionAssistBinding.inflate(
 | 
| 50 | 52 |              inflater, container, false,
 | 
| 51 | 53 |          )
 | 
| 54 | +  | 
|
| 52 | 55 |          viewLifecycleOwner.lifecycleScope.launch {
 | 
| 53 | 56 |              repeatOnLifecycle(Lifecycle.State.STARTED) {
 | 
| 54 | -                viewModel.collectLastKnownStatus()
 | 
|
| 57 | +                torConnectionAssistViewModel.collectLastKnownStatus()
 | 
|
| 55 | 58 |              }
 | 
| 56 | 59 |          }
 | 
| 57 | 60 | |
| 58 | -        viewLifecycleOwner.lifecycleScope.launch {
 | 
|
| 59 | -            repeatOnLifecycle(Lifecycle.State.STARTED) {
 | 
|
| 60 | -                viewModel.torConnectScreen.collect { screen ->
 | 
|
| 61 | -                    Log.d(TAG, "torConnectScreen is $screen")
 | 
|
| 62 | -                    showScreen(screen)
 | 
|
| 63 | -                }
 | 
|
| 61 | +        torConnectionAssistViewModel.shouldOpenHome.observe(viewLifecycleOwner) {
 | 
|
| 62 | +            Log.d(TAG, "shouldOpenHome = $it")
 | 
|
| 63 | +            if (it) {
 | 
|
| 64 | +                openHome()
 | 
|
| 65 | +            }
 | 
|
| 66 | +        }
 | 
|
| 67 | +  | 
|
| 68 | +        urlQuickLoadViewModel.urlToLoadAfterConnecting.observe(viewLifecycleOwner) { url ->
 | 
|
| 69 | +            if (!url.isNullOrBlank()) {
 | 
|
| 70 | +                torConnectionAssistViewModel.handleConnect()
 | 
|
| 64 | 71 |              }
 | 
| 65 | 72 |          }
 | 
| 66 | 73 | |
| ... | ... | @@ -75,10 +82,13 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { | 
| 75 | 82 |      override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
 | 
| 76 | 83 |          super.onViewCreated(view, savedInstanceState)
 | 
| 77 | 84 | |
| 78 | -        viewModel.progress().observe(
 | 
|
| 79 | -            viewLifecycleOwner,
 | 
|
| 80 | -        ) { progress ->
 | 
|
| 81 | -            setProgressBarCompat(progress)
 | 
|
| 85 | +        viewLifecycleOwner.lifecycleScope.launch {
 | 
|
| 86 | +            repeatOnLifecycle(Lifecycle.State.STARTED) {
 | 
|
| 87 | +                torConnectionAssistViewModel.torConnectScreen.collect { screen ->
 | 
|
| 88 | +                    Log.d(TAG, "torConnectScreen is $screen")
 | 
|
| 89 | +                    showScreen(screen)
 | 
|
| 90 | +                }
 | 
|
| 91 | +            }
 | 
|
| 82 | 92 |          }
 | 
| 83 | 93 | |
| 84 | 94 |          quickstartViewModel.quickstart().observe(
 | 
| ... | ... | @@ -87,13 +97,10 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { | 
| 87 | 97 |              binding.quickstartSwitch.isChecked = it
 | 
| 88 | 98 |          }
 | 
| 89 | 99 | |
| 90 | -        viewModel.shouldOpenHome().observe(
 | 
|
| 100 | +        progressViewModel.progress.observe(
 | 
|
| 91 | 101 |              viewLifecycleOwner,
 | 
| 92 | -        ) {
 | 
|
| 93 | -            Log.d(TAG, "shouldOpenHome() = $it")
 | 
|
| 94 | -            if (it) {
 | 
|
| 95 | -                openHome()
 | 
|
| 96 | -            }
 | 
|
| 102 | +        ) { progress ->
 | 
|
| 103 | +            setProgressBarCompat(progress)
 | 
|
| 97 | 104 |          }
 | 
| 98 | 105 | |
| 99 | 106 |      }
 | 
| ... | ... | @@ -142,7 +149,7 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { | 
| 142 | 149 |      private fun setBackButton(screen: ConnectAssistUiState) {
 | 
| 143 | 150 |          binding.backButton.visibility = if (screen.backButtonVisible) View.VISIBLE else View.INVISIBLE
 | 
| 144 | 151 |          binding.backButton.setOnClickListener {
 | 
| 145 | -            viewModel.handleBackButtonPressed()
 | 
|
| 152 | +            torConnectionAssistViewModel.handleBackButtonPressed()
 | 
|
| 146 | 153 |          }
 | 
| 147 | 154 |      }
 | 
| 148 | 155 | |
| ... | ... | @@ -204,10 +211,7 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { | 
| 204 | 211 |              if (screen.torBootstrapButton1Visible) View.VISIBLE else View.GONE
 | 
| 205 | 212 |          binding.torBootstrapButton1.text = getString(screen.torBootstrapButton1TextStringResource)
 | 
| 206 | 213 |          binding.torBootstrapButton1.setOnClickListener {
 | 
| 207 | -            viewModel.handleButton1Pressed(
 | 
|
| 208 | -                screen,
 | 
|
| 209 | -                lifecycleScope,
 | 
|
| 210 | -            )
 | 
|
| 214 | +            torConnectionAssistViewModel.handleConnect()
 | 
|
| 211 | 215 |          }
 | 
| 212 | 216 |      }
 | 
| 213 | 217 | |
| ... | ... | @@ -231,7 +235,7 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { | 
| 231 | 235 |                  }
 | 
| 232 | 236 |          }
 | 
| 233 | 237 |          binding.torBootstrapButton2.setOnClickListener {
 | 
| 234 | -            viewModel.cancelTorBootstrap()
 | 
|
| 238 | +            torConnectionAssistViewModel.cancelTorBootstrap()
 | 
|
| 235 | 239 |              if (screen.torBootstrapButton2ShouldOpenSettings) {
 | 
| 236 | 240 |                  openTorConnectionSettings()
 | 
| 237 | 241 |              } else if (screen.torBootstrapButton2ShouldRestartApp) {
 | 
| ... | ... | @@ -279,7 +283,9 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { | 
| 279 | 283 | |
| 280 | 284 |      private fun openHome() {
 | 
| 281 | 285 |          Log.d(TAG, "openHome()")
 | 
| 282 | -        viewModel.openHome(findNavController())
 | 
|
| 286 | +        findNavController().navigate(
 | 
|
| 287 | +            TorConnectionAssistFragmentDirections.actionHome(),
 | 
|
| 288 | +        )
 | 
|
| 283 | 289 |      }
 | 
| 284 | 290 | |
| 285 | 291 |      private fun openSettings(preferenceToScrollTo: String? = null) {
 | 
| ... | ... | @@ -308,7 +314,7 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { | 
| 308 | 314 |      }
 | 
| 309 | 315 | |
| 310 | 316 |      override fun onBackPressed(): Boolean {
 | 
| 311 | -        return viewModel.handleBackButtonPressed()
 | 
|
| 317 | +        return torConnectionAssistViewModel.handleBackButtonPressed()
 | 
|
| 312 | 318 |      }
 | 
| 313 | 319 | |
| 314 | 320 |  } | 
| ... | ... | @@ -7,91 +7,42 @@ package org.mozilla.fenix.tor | 
| 7 | 7 |  import android.app.Application
 | 
| 8 | 8 |  import android.util.Log
 | 
| 9 | 9 |  import androidx.lifecycle.AndroidViewModel
 | 
| 10 | -import androidx.lifecycle.LifecycleCoroutineScope
 | 
|
| 11 | -import androidx.lifecycle.LiveData
 | 
|
| 12 | 10 |  import androidx.lifecycle.MutableLiveData
 | 
| 13 | -import androidx.navigation.NavController
 | 
|
| 14 | 11 |  import kotlinx.coroutines.flow.MutableStateFlow
 | 
| 15 | 12 |  import kotlinx.coroutines.flow.StateFlow
 | 
| 16 | 13 |  import org.mozilla.fenix.ext.components
 | 
| 17 | 14 | |
| 18 | 15 |  class TorConnectionAssistViewModel(
 | 
| 19 | 16 |      application: Application,
 | 
| 20 | -) : AndroidViewModel(application), TorEvents {
 | 
|
| 17 | +) : AndroidViewModel(application) {
 | 
|
| 21 | 18 | |
| 22 | 19 |      private val TAG = "torConnectionAssistVM"
 | 
| 23 | -    private val components = getApplication<Application>().components
 | 
|
| 24 | -  | 
|
| 25 | -    private val _torController: TorControllerGV = components.torController
 | 
|
| 20 | +    private val torIntegrationAndroid =
 | 
|
| 21 | +        application.components.core.geckoRuntime.torIntegrationController
 | 
|
| 22 | +    private val _torController: TorControllerGV = application.components.torController
 | 
|
| 26 | 23 | |
| 27 | 24 |      private val _torConnectScreen = MutableStateFlow(ConnectAssistUiState.Splash)
 | 
| 28 | 25 |      internal val torConnectScreen: StateFlow<ConnectAssistUiState> = _torConnectScreen
 | 
| 29 | 26 | |
| 30 | -    private val _shouldOpenHome = MutableLiveData(false)
 | 
|
| 31 | -    fun shouldOpenHome(): LiveData<Boolean> {
 | 
|
| 32 | -        return _shouldOpenHome
 | 
|
| 33 | -    }
 | 
|
| 34 | -  | 
|
| 35 | -    private val _progress = MutableLiveData(0)
 | 
|
| 36 | -    fun progress(): LiveData<Int> {
 | 
|
| 37 | -        return _progress
 | 
|
| 38 | -    }
 | 
|
| 39 | -  | 
|
| 40 | -    init {
 | 
|
| 41 | -        Log.d(TAG, "initiating TorConnectionAssistViewModel $this")
 | 
|
| 42 | -        _torController.registerTorListener(this)
 | 
|
| 43 | -    }
 | 
|
| 44 | -  | 
|
| 45 | -    var urlToLoadAfterConnecting: String? = null
 | 
|
| 46 | -  | 
|
| 47 | -    fun handleConnect(
 | 
|
| 48 | -        urlToLoadAfterConnecting: String? = null,
 | 
|
| 49 | -        withDebugLogging: Boolean = false,
 | 
|
| 50 | -        lifecycleScope: LifecycleCoroutineScope? = null,
 | 
|
| 51 | -    ) {
 | 
|
| 52 | -        this.urlToLoadAfterConnecting = urlToLoadAfterConnecting
 | 
|
| 53 | -        if (_torController.lastKnownStatus.value.isOff()) {
 | 
|
| 54 | -            Log.d(TAG, "handleConnect() triggered, initiatingTorBootstrap")
 | 
|
| 55 | -            _torController.initiateTorBootstrap(
 | 
|
| 56 | -                withDebugLogging = withDebugLogging,
 | 
|
| 57 | -                lifecycleScope = lifecycleScope,
 | 
|
| 58 | -            )
 | 
|
| 59 | -        }
 | 
|
| 27 | +    val shouldOpenHome: MutableLiveData<Boolean> by lazy {
 | 
|
| 28 | +        MutableLiveData(false)
 | 
|
| 60 | 29 |      }
 | 
| 61 | 30 | |
| 62 | -    fun handleButton1Pressed(
 | 
|
| 63 | -        screen: ConnectAssistUiState,
 | 
|
| 64 | -        lifecycleScope: LifecycleCoroutineScope?,
 | 
|
| 65 | -    ) {
 | 
|
| 66 | -        if (screen.torBootstrapButton1ShouldShowTryingABridge) {
 | 
|
| 31 | +    fun handleConnect() {
 | 
|
| 32 | +        if (_torConnectScreen.value.torBootstrapButton1ShouldShowTryingABridge) {
 | 
|
| 67 | 33 |              tryABridge()
 | 
| 68 | 34 |          } else {
 | 
| 69 | -            handleConnect(lifecycleScope = lifecycleScope)
 | 
|
| 35 | +            if (_torController.lastKnownStatus.value.isOff()) {
 | 
|
| 36 | +                torIntegrationAndroid.beginBootstrap()
 | 
|
| 37 | +            }
 | 
|
| 70 | 38 |          }
 | 
| 71 | 39 |      }
 | 
| 72 | 40 | |
| 73 | 41 |      fun cancelTorBootstrap() {
 | 
| 74 | -        _torController.stopTor()
 | 
|
| 42 | +        torIntegrationAndroid.cancelBootstrap()
 | 
|
| 75 | 43 |          _torController.setTorStopped()
 | 
| 76 | 44 |      }
 | 
| 77 | 45 | |
| 78 | -    override fun onTorConnecting() {
 | 
|
| 79 | -        Log.d(TAG, "onTorConnecting()")
 | 
|
| 80 | -    }
 | 
|
| 81 | -  | 
|
| 82 | -    override fun onTorConnected() {
 | 
|
| 83 | -        Log.d(TAG, "onTorConnected()")
 | 
|
| 84 | -        _torController.unregisterTorListener(this)
 | 
|
| 85 | -    }
 | 
|
| 86 | -  | 
|
| 87 | -    override fun onTorStatusUpdate(entry: String?, status: String?, progress: Double?) {
 | 
|
| 88 | -        Log.d(TAG, "onTorStatusUpdate($entry, $status, $progress)")
 | 
|
| 89 | -        if (progress != null) {
 | 
|
| 90 | -            _progress.value = progress.toInt()
 | 
|
| 91 | -        }
 | 
|
| 92 | -  | 
|
| 93 | -    }
 | 
|
| 94 | -  | 
|
| 95 | 46 |      suspend fun collectLastKnownStatus() {
 | 
| 96 | 47 |          _torController.lastKnownStatus.collect {
 | 
| 97 | 48 |              when (it) {
 | 
| ... | ... | @@ -99,8 +50,8 @@ class TorConnectionAssistViewModel( | 
| 99 | 50 |                  TorConnectState.Configuring -> handleConfiguring()
 | 
| 100 | 51 |                  TorConnectState.AutoBootstrapping -> handleBootstrap()
 | 
| 101 | 52 |                  TorConnectState.Bootstrapping -> handleBootstrap()
 | 
| 102 | -                TorConnectState.Bootstrapped -> _shouldOpenHome.value = true
 | 
|
| 103 | -                TorConnectState.Disabled -> _shouldOpenHome.value = true
 | 
|
| 53 | +                TorConnectState.Bootstrapped -> shouldOpenHome.value = true
 | 
|
| 54 | +                TorConnectState.Disabled -> shouldOpenHome.value = true
 | 
|
| 104 | 55 |                  TorConnectState.Error -> handleError()
 | 
| 105 | 56 |              }
 | 
| 106 | 57 |          }
 | 
| ... | ... | @@ -145,10 +96,7 @@ class TorConnectionAssistViewModel( | 
| 145 | 96 |              }
 | 
| 146 | 97 | |
| 147 | 98 |              else -> _torConnectScreen.value =
 | 
| 148 | -                ConnectAssistUiState.Connecting.also { connectAssistUiState ->
 | 
|
| 149 | -                    // covers the case of when the bootstrap is already in progress when the UiState "catches up"
 | 
|
| 150 | -                    connectAssistUiState.progress = _progress.value ?: 0
 | 
|
| 151 | -                }
 | 
|
| 99 | +                ConnectAssistUiState.Connecting
 | 
|
| 152 | 100 |          }
 | 
| 153 | 101 |      }
 | 
| 154 | 102 | |
| ... | ... | @@ -184,10 +132,6 @@ class TorConnectionAssistViewModel( | 
| 184 | 132 |          _torConnectScreen.value = ConnectAssistUiState.InternetError
 | 
| 185 | 133 |      }
 | 
| 186 | 134 | |
| 187 | -    override fun onTorStopped() {
 | 
|
| 188 | -        Log.d(TAG, "onTorStopped()")
 | 
|
| 189 | -    }
 | 
|
| 190 | -  | 
|
| 191 | 135 |      private fun tryABridge() {
 | 
| 192 | 136 |          if (!locationFound()) {
 | 
| 193 | 137 |              _torConnectScreen.value = ConnectAssistUiState.LocationError
 | 
| ... | ... | @@ -198,7 +142,7 @@ class TorConnectionAssistViewModel( | 
| 198 | 142 |              _torController.bridgeTransport =
 | 
| 199 | 143 |                  TorBridgeTransportConfig.BUILTIN_SNOWFLAKE // TODO select based on country
 | 
| 200 | 144 |          }
 | 
| 201 | -        handleConnect(withDebugLogging = true)
 | 
|
| 145 | +        torIntegrationAndroid.beginBootstrap()
 | 
|
| 202 | 146 |      }
 | 
| 203 | 147 | |
| 204 | 148 |      private fun locationFound(): Boolean {
 | 
| ... | ... | @@ -249,10 +193,4 @@ class TorConnectionAssistViewModel( | 
| 249 | 193 |          }
 | 
| 250 | 194 |          return true
 | 
| 251 | 195 |      }
 | 
| 252 | -  | 
|
| 253 | -    fun openHome(navController: NavController) {
 | 
|
| 254 | -        navController.navigate(
 | 
|
| 255 | -            TorConnectionAssistFragmentDirections.actionHome(),
 | 
|
| 256 | -        )
 | 
|
| 257 | -    }
 | 
|
| 258 | 196 |  } | 
| 1 | +package org.mozilla.fenix.tor
 | 
|
| 2 | +  | 
|
| 3 | +import androidx.lifecycle.MutableLiveData
 | 
|
| 4 | +import androidx.lifecycle.ViewModel
 | 
|
| 5 | +  | 
|
| 6 | +class UrlQuickLoadViewModel : ViewModel() {
 | 
|
| 7 | +    val urlToLoadAfterConnecting: MutableLiveData<String?> by lazy {
 | 
|
| 8 | +        MutableLiveData<String?>(null)
 | 
|
| 9 | +    }
 | 
|
| 10 | +} |