Commits:
-
12387757
by clairehurst at 2026-02-05T12:20:55-07:00
fixup! Temporary changes to about:torconnect for Android.
This reverts commit aed2663396d9fe060829290ac9e64774131ac1c3.
-
cd8bcb6e
by clairehurst at 2026-02-05T12:20:55-07:00
fixup! [android] Implement Android-native Connection Assist UI
9 changed files:
Changes:
mobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt
| ... |
... |
@@ -185,7 +185,6 @@ import org.mozilla.fenix.compose.core.Action |
|
185
|
185
|
import org.mozilla.fenix.compose.snackbar.SnackbarState
|
|
186
|
186
|
import org.mozilla.fenix.compose.snackbar.Snackbar
|
|
187
|
187
|
import org.mozilla.fenix.tor.UrlQuickLoadViewModel
|
|
188
|
|
-import org.mozilla.geckoview.TorAndroidIntegration
|
|
189
|
188
|
import org.mozilla.geckoview.TorAndroidIntegration.BootstrapStateChangeListener
|
|
190
|
189
|
import org.mozilla.geckoview.TorConnectStage
|
|
191
|
190
|
import kotlin.system.exitProcess
|
| ... |
... |
@@ -197,7 +196,7 @@ import kotlin.system.exitProcess |
|
197
|
196
|
* - browser screen
|
|
198
|
197
|
*/
|
|
199
|
198
|
@SuppressWarnings("TooManyFunctions", "LargeClass", "LongMethod")
|
|
200
|
|
-open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAndroidIntegration.BootstrapStateChangeListener {
|
|
|
199
|
+open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity {
|
|
201
|
200
|
@VisibleForTesting
|
|
202
|
201
|
internal lateinit var binding: ActivityHomeBinding
|
|
203
|
202
|
lateinit var themeManager: ThemeManager
|
| ... |
... |
@@ -611,14 +610,6 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn |
|
611
|
610
|
onBackPressedCallback = onBackPressedCallback,
|
|
612
|
611
|
)
|
|
613
|
612
|
|
|
614
|
|
- if (settings().useHtmlConnectionUi) {
|
|
615
|
|
- val engine = components.core.engine
|
|
616
|
|
- if (engine is GeckoEngine) {
|
|
617
|
|
- val torIntegration = engine.getTorIntegrationController()
|
|
618
|
|
- torIntegration.registerBootstrapStateChangeListener(this)
|
|
619
|
|
- }
|
|
620
|
|
- }
|
|
621
|
|
-
|
|
622
|
613
|
StartupTimeline.onActivityCreateEndHome(this) // DO NOT MOVE ANYTHING BELOW HERE.
|
|
623
|
614
|
}
|
|
624
|
615
|
|
| ... |
... |
@@ -1388,20 +1379,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn |
|
1388
|
1379
|
|
|
1389
|
1380
|
@VisibleForTesting
|
|
1390
|
1381
|
internal fun navigateToHome(navController: NavController) {
|
|
1391
|
|
- // if (this is ExternalAppBrowserActivity) {
|
|
1392
|
|
- // return
|
|
1393
|
|
- // }
|
|
1394
|
|
-
|
|
1395
|
|
- if (!settings().useHtmlConnectionUi) {
|
|
1396
|
|
- navController.navigate(NavGraphDirections.actionStartupTorConnectionAssist())
|
|
1397
|
|
- } else {
|
|
1398
|
|
- navController.navigate(NavGraphDirections.actionStartupHome())
|
|
1399
|
|
- openToBrowserAndLoad(
|
|
1400
|
|
- searchTermOrURL = "about:torconnect",
|
|
1401
|
|
- newTab = true,
|
|
1402
|
|
- from = BrowserDirection.FromHome,
|
|
1403
|
|
- )
|
|
1404
|
|
- }
|
|
|
1382
|
+ navController.navigate(NavGraphDirections.actionStartupTorConnectionAssist())
|
|
1405
|
1383
|
}
|
|
1406
|
1384
|
|
|
1407
|
1385
|
final override fun attachBaseContext(base: Context) {
|
| ... |
... |
@@ -1610,14 +1588,4 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn |
|
1610
|
1588
|
finishAndRemoveTask()
|
|
1611
|
1589
|
exitProcess(0)
|
|
1612
|
1590
|
}
|
|
1613
|
|
-
|
|
1614
|
|
- override fun onBootstrapStageChange(stage: TorConnectStage) {
|
|
1615
|
|
- if (stage.isBootstrapped) {
|
|
1616
|
|
- if (settings().useHtmlConnectionUi) {
|
|
1617
|
|
- components.useCases.tabsUseCases.removeAllTabs()
|
|
1618
|
|
- navHost.navController.navigate(NavGraphDirections.actionStartupHome())
|
|
1619
|
|
- }
|
|
1620
|
|
- }
|
|
1621
|
|
- }
|
|
1622
|
|
- override fun onBootstrapProgress(progress: Double, hasWarnings: Boolean) = Unit
|
|
1623
|
1591
|
} |
mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt
| ... |
... |
@@ -1954,10 +1954,6 @@ abstract class BaseBrowserFragment : |
|
1954
|
1954
|
|
|
1955
|
1955
|
@Suppress("DEPRECATION")
|
|
1956
|
1956
|
it.announceForAccessibility(selectedTab.toDisplayTitle())
|
|
1957
|
|
- if (getCurrentTab()?.content?.url == "about:torconnect") {
|
|
1958
|
|
- // FIXME: view is not available anymore.
|
|
1959
|
|
- // browserToolbarView.view.visibility = View.GONE
|
|
1960
|
|
- }
|
|
1961
|
1957
|
}
|
|
1962
|
1958
|
} else {
|
|
1963
|
1959
|
view?.let { view -> initializeUI(view) }
|
| ... |
... |
@@ -1991,26 +1987,6 @@ abstract class BaseBrowserFragment : |
|
1991
|
1987
|
),
|
|
1992
|
1988
|
)
|
|
1993
|
1989
|
}
|
|
1994
|
|
-
|
|
1995
|
|
- handleBetaHtmlTorConnect()
|
|
1996
|
|
- }
|
|
1997
|
|
-
|
|
1998
|
|
- private fun handleBetaHtmlTorConnect() {
|
|
1999
|
|
- val currentTab = getCurrentTab() ?: return
|
|
2000
|
|
- if (currentTab.content.url == "about:torconnect") {
|
|
2001
|
|
- if (!requireActivity().settings().useHtmlConnectionUi) {
|
|
2002
|
|
- requireContext().components.useCases.tabsUseCases.removeTab(currentTab.id)
|
|
2003
|
|
- (requireActivity() as HomeActivity).navigateToHome(
|
|
2004
|
|
- findNavController(),
|
|
2005
|
|
- )
|
|
2006
|
|
- } else {
|
|
2007
|
|
- // This just makes it not flash (be visible for a split second) before handleTabSelected() hides it again
|
|
2008
|
|
- // FIXME: view is not available anymore.
|
|
2009
|
|
- // browserToolbarView.view.visibility = View.GONE
|
|
2010
|
|
- }
|
|
2011
|
|
- } else if (currentTab.content.url == "about:tor") {
|
|
2012
|
|
- requireContext().components.useCases.tabsUseCases.removeTab(currentTab.id)
|
|
2013
|
|
- }
|
|
2014
|
1990
|
}
|
|
2015
|
1991
|
|
|
2016
|
1992
|
private fun evaluateMessagesForMicrosurvey(components: Components) =
|
mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt
| ... |
... |
@@ -10,7 +10,6 @@ import android.os.Bundle |
|
10
|
10
|
import android.os.Handler
|
|
11
|
11
|
import android.os.Looper
|
|
12
|
12
|
import android.os.StrictMode
|
|
13
|
|
-import android.util.Log
|
|
14
|
13
|
import android.view.LayoutInflater
|
|
15
|
14
|
import android.view.View
|
|
16
|
15
|
import android.widget.Toast
|
| ... |
... |
@@ -31,7 +30,6 @@ import androidx.preference.SwitchPreference |
|
31
|
30
|
import androidx.recyclerview.widget.RecyclerView
|
|
32
|
31
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|
33
|
32
|
import kotlinx.coroutines.CoroutineScope
|
|
34
|
|
-import kotlinx.coroutines.Dispatchers
|
|
35
|
33
|
import kotlinx.coroutines.delay
|
|
36
|
34
|
import kotlinx.coroutines.launch
|
|
37
|
35
|
import mozilla.components.browser.state.state.selectedOrDefaultSearchEngine
|
| ... |
... |
@@ -732,20 +730,6 @@ class SettingsFragment : PreferenceFragmentCompat(), UserInteractionHandler { |
|
732
|
730
|
|
|
733
|
731
|
@VisibleForTesting
|
|
734
|
732
|
internal fun setupHomepagePreference(settings: Settings) {
|
|
735
|
|
- /*with(requirePreference<Preference>(R.string.pref_key_home)) {
|
|
736
|
|
- summary = when {
|
|
737
|
|
- settings.alwaysOpenTheHomepageWhenOpeningTheApp ->
|
|
738
|
|
- getString(R.string.opening_screen_homepage_summary)
|
|
739
|
|
-
|
|
740
|
|
- settings.openHomepageAfterFourHoursOfInactivity ->
|
|
741
|
|
- getString(R.string.opening_screen_after_four_hours_of_inactivity_summary)
|
|
742
|
|
-
|
|
743
|
|
- settings.alwaysOpenTheLastTabWhenOpeningTheApp ->
|
|
744
|
|
- getString(R.string.opening_screen_last_tab_summary)
|
|
745
|
|
-
|
|
746
|
|
- else -> null
|
|
747
|
|
- }
|
|
748
|
|
- }*/
|
|
749
|
733
|
}
|
|
750
|
734
|
|
|
751
|
735
|
@VisibleForTesting
|
| ... |
... |
@@ -804,11 +788,6 @@ class SettingsFragment : PreferenceFragmentCompat(), UserInteractionHandler { |
|
804
|
788
|
}
|
|
805
|
789
|
}
|
|
806
|
790
|
|
|
807
|
|
- requirePreference<Preference>(R.string.pref_key_use_html_connection_ui).apply {
|
|
808
|
|
- onPreferenceChangeListener = object : SharedPreferenceUpdater() {}
|
|
809
|
|
- isVisible = Config.channel != ReleaseChannel.Release
|
|
810
|
|
- }
|
|
811
|
|
-
|
|
812
|
791
|
requirePreference<Preference>(R.string.pref_key_tor_logs).apply {
|
|
813
|
792
|
setOnPreferenceClickListener {
|
|
814
|
793
|
val directions =
|
mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
| ... |
... |
@@ -2899,11 +2899,6 @@ class Settings( |
|
2899
|
2899
|
return sharedPreferences.getBoolean(cleanupPreferenceKey, false)
|
|
2900
|
2900
|
}
|
|
2901
|
2901
|
|
|
2902
|
|
- var useHtmlConnectionUi by booleanPreference(
|
|
2903
|
|
- key = appContext.getPreferenceKey(R.string.pref_key_use_html_connection_ui),
|
|
2904
|
|
- default = false,
|
|
2905
|
|
- )
|
|
2906
|
|
-
|
|
2907
|
2902
|
var quickStart by booleanPreference(
|
|
2908
|
2903
|
appContext.getPreferenceKey(R.string.pref_key_quick_start),
|
|
2909
|
2904
|
default = false,
|
mobile/android/fenix/app/src/main/res/values/preference_keys.xml
| ... |
... |
@@ -538,7 +538,6 @@ |
|
538
|
538
|
<string name="pref_key_tor_network_settings_explanation" translatable="false">pref_key_tor_network_settings_explanation</string>
|
|
539
|
539
|
<string name="pref_key_tor_network_settings_bridge_config" translatable="false">pref_key_tor_network_settings_bridge_config</string>
|
|
540
|
540
|
<string name="pref_key_tor_logs" translatable="false">pref_key_tor_logs</string>
|
|
541
|
|
- <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 -->
|
|
542
|
541
|
<string name="pref_key_about_config_shortcut" translatable="false">pref_key_about_config_shortcut</string>
|
|
543
|
542
|
<string name="pref_key_tor_network_settings_bridge_config_explanation" translatable="false">pref_key_tor_network_settings_bridge_config_explanation</string>
|
|
544
|
543
|
<string name="pref_key_tor_network_settings_bridge_config_toggle" translatable="false">pref_key_tor_network_settings_bridge_config_toggle</string>
|
mobile/android/fenix/app/src/main/res/xml/preferences.xml
| ... |
... |
@@ -181,13 +181,6 @@ |
|
181
|
181
|
android:title="@string/tor_connect_automatically_label"
|
|
182
|
182
|
app:iconSpaceReserved="false" />
|
|
183
|
183
|
|
|
184
|
|
- <SwitchPreference
|
|
185
|
|
- android:defaultValue="false"
|
|
186
|
|
- android:key="@string/pref_key_use_html_connection_ui"
|
|
187
|
|
- android:summary="Recommended only for debugging"
|
|
188
|
|
- android:title="Enable HTML connection UI"
|
|
189
|
|
- app:iconSpaceReserved="false" />
|
|
190
|
|
-
|
|
191
|
184
|
<Preference
|
|
192
|
185
|
android:key="@string/pref_key_tor_logs"
|
|
193
|
186
|
app:iconSpaceReserved="false"
|
toolkit/components/torconnect/content/aboutTorConnect.css
| ... |
... |
@@ -4,11 +4,6 @@ |
|
4
|
4
|
@import url("chrome://global/skin/tor-colors.css");
|
|
5
|
5
|
@import url("chrome://global/skin/onion-pattern.css");
|
|
6
|
6
|
|
|
7
|
|
-html {
|
|
8
|
|
- width: 100%;
|
|
9
|
|
- height: 100%;
|
|
10
|
|
-}
|
|
11
|
|
-
|
|
12
|
7
|
body:not(.loaded) {
|
|
13
|
8
|
/* Keep blank whilst loading. */
|
|
14
|
9
|
display: none;
|
| ... |
... |
@@ -275,147 +270,3 @@ body.aboutTorConnect .title.location { |
|
275
|
270
|
background-image: url("chrome://global/content/torconnect/connection-location.svg");
|
|
276
|
271
|
stroke: var(--icon-color-warning);
|
|
277
|
272
|
} |
|
278
|
|
-
|
|
279
|
|
-/* Android-specific CSS, to be removed when we use only the native UI. */
|
|
280
|
|
-:root {
|
|
281
|
|
- --android-dark-accents-buttons: #9059ff;
|
|
282
|
|
- --android-dark-background-secondary: #e1e0e7;
|
|
283
|
|
- --android-dark-text-primary: #fbfbfe;
|
|
284
|
|
- --android-light-text-primary: #15141a;
|
|
285
|
|
-}
|
|
286
|
|
-
|
|
287
|
|
-[hidden="true"] {
|
|
288
|
|
- display: none !important;
|
|
289
|
|
-}
|
|
290
|
|
-
|
|
291
|
|
-body.android {
|
|
292
|
|
- width: 100%;
|
|
293
|
|
- height: 100%;
|
|
294
|
|
- box-sizing: border-box;
|
|
295
|
|
- margin: 0;
|
|
296
|
|
- padding: 0 24px !important;
|
|
297
|
|
- color: var(--android-dark-text-primary);
|
|
298
|
|
- background: linear-gradient(194deg, #692e9d -0.93%, #393270 48.91%);
|
|
299
|
|
- font: menu;
|
|
300
|
|
- font-size: var(--font-size-small);
|
|
301
|
|
- display: flex;
|
|
302
|
|
-}
|
|
303
|
|
-
|
|
304
|
|
-.android #connectPageContainer {
|
|
305
|
|
- max-width: none;
|
|
306
|
|
- display: flex;
|
|
307
|
|
- flex-direction: column;
|
|
308
|
|
- flex: 1;
|
|
309
|
|
-}
|
|
310
|
|
-
|
|
311
|
|
-.android #breadcrumbs {
|
|
312
|
|
- display: none;
|
|
313
|
|
-}
|
|
314
|
|
-
|
|
315
|
|
-.android #text-container {
|
|
316
|
|
- display: flex;
|
|
317
|
|
- flex-direction: column;
|
|
318
|
|
- flex: 1;
|
|
319
|
|
-}
|
|
320
|
|
-
|
|
321
|
|
-.android .title {
|
|
322
|
|
- background-position: left 0;
|
|
323
|
|
- background-repeat: no-repeat;
|
|
324
|
|
- background-size: 40px;
|
|
325
|
|
- padding-top: 64px;
|
|
326
|
|
- font-size: var(--font-size-xlarge);
|
|
327
|
|
- line-height: 28px;
|
|
328
|
|
-}
|
|
329
|
|
-
|
|
330
|
|
-.android h1 {
|
|
331
|
|
- font-weight: var(--font-weight);
|
|
332
|
|
- font-size: inherit;
|
|
333
|
|
- margin: 0 0 16px 0;
|
|
334
|
|
-}
|
|
335
|
|
-
|
|
336
|
|
-.android p {
|
|
337
|
|
- margin: 0;
|
|
338
|
|
- padding-bottom: 8px;
|
|
339
|
|
- line-height: 20px;
|
|
340
|
|
-}
|
|
341
|
|
-
|
|
342
|
|
-.android #quickstartContainer {
|
|
343
|
|
- margin-top: 24px;
|
|
344
|
|
-}
|
|
345
|
|
-
|
|
346
|
|
-.android .button-container {
|
|
347
|
|
- display: flex;
|
|
348
|
|
- flex: 1;
|
|
349
|
|
- flex-direction: column;
|
|
350
|
|
-}
|
|
351
|
|
-
|
|
352
|
|
-.android #locationDropdown {
|
|
353
|
|
- width: 100%;
|
|
354
|
|
- max-width: none;
|
|
355
|
|
- margin: 0;
|
|
356
|
|
-}
|
|
357
|
|
-
|
|
358
|
|
-.android select {
|
|
359
|
|
- background: transparent;
|
|
360
|
|
- border: none;
|
|
361
|
|
- /* stylelint-disable-next-line stylelint-plugin-mozilla/use-border-color-tokens */
|
|
362
|
|
- border-bottom: 1px solid var(--android-dark-text-primary);
|
|
363
|
|
- color: var(--android-dark-text-primary);
|
|
364
|
|
- display: block;
|
|
365
|
|
- width: 100%;
|
|
366
|
|
- margin-top: 10px;
|
|
367
|
|
- padding: 8px;
|
|
368
|
|
-}
|
|
369
|
|
-
|
|
370
|
|
-.android #buttonPadding {
|
|
371
|
|
- flex: 1;
|
|
372
|
|
-}
|
|
373
|
|
-
|
|
374
|
|
-body:not(.android) #connectButtonContainer {
|
|
375
|
|
- /* Use the .button-container context */
|
|
376
|
|
- display: contents;
|
|
377
|
|
-}
|
|
378
|
|
-
|
|
379
|
|
-.android #connectButtonContainer {
|
|
380
|
|
- width: 100%;
|
|
381
|
|
- padding-bottom: 18px;
|
|
382
|
|
- display: grid;
|
|
383
|
|
-}
|
|
384
|
|
-
|
|
385
|
|
-/* Be sure not to match the togglee */
|
|
386
|
|
-.android #connectButtonContainer button {
|
|
387
|
|
- display: block;
|
|
388
|
|
- width: 100%;
|
|
389
|
|
- margin: 4px 0;
|
|
390
|
|
- padding: 11px 30px;
|
|
391
|
|
- font-size: var(--font-size-small);
|
|
392
|
|
- font-weight: var(--font-weight);
|
|
393
|
|
- border: none;
|
|
394
|
|
- border-radius: var(--border-radius-small);
|
|
395
|
|
-}
|
|
396
|
|
-
|
|
397
|
|
-.android #connectButton,
|
|
398
|
|
-.android #tryBridgeButton,
|
|
399
|
|
-.android #configureButton.primary {
|
|
400
|
|
- color: var(--android-dark-text-primary);
|
|
401
|
|
- background-color: var(--android-dark-accents-buttons);
|
|
402
|
|
-}
|
|
403
|
|
-
|
|
404
|
|
-.android #configureButton {
|
|
405
|
|
- order: 1;
|
|
406
|
|
-}
|
|
407
|
|
-
|
|
408
|
|
-.android #restartButton {
|
|
409
|
|
- order: 2;
|
|
410
|
|
-}
|
|
411
|
|
-
|
|
412
|
|
-.android #restartButton,
|
|
413
|
|
-.android #cancelButton,
|
|
414
|
|
-.android #configureButton {
|
|
415
|
|
- color: var(--android-light-text-primary);
|
|
416
|
|
- background-color: var(--android-dark-background-secondary);
|
|
417
|
|
-}
|
|
418
|
|
-
|
|
419
|
|
-.android .onion-pattern-container {
|
|
420
|
|
- display: none;
|
|
421
|
|
-} |
toolkit/components/torconnect/content/aboutTorConnect.html
| ... |
... |
@@ -6,7 +6,6 @@ |
|
6
|
6
|
http-equiv="Content-Security-Policy"
|
|
7
|
7
|
content="default-src chrome:; object-src 'none'"
|
|
8
|
8
|
/>
|
|
9
|
|
- <meta name="viewport" content="width=device-width" />
|
|
10
|
9
|
<link
|
|
11
|
10
|
rel="stylesheet"
|
|
12
|
11
|
href="">"chrome://global/content/torconnect/aboutTorConnect.css"
|
| ... |
... |
@@ -65,7 +64,11 @@ |
|
65
|
64
|
<moz-toggle id="quickstartToggle"></moz-toggle>
|
|
66
|
65
|
</div>
|
|
67
|
66
|
|
|
68
|
|
- <div class="button-container">
|
|
|
67
|
+ <div id="connectButtonContainer" class="button-container">
|
|
|
68
|
+ <button id="restartButton" hidden="true"></button>
|
|
|
69
|
+ <button id="configureButton" hidden="true"></button>
|
|
|
70
|
+ <button id="cancelButton" hidden="true"></button>
|
|
|
71
|
+ <button id="connectButton" hidden="true" class="tor-button"></button>
|
|
69
|
72
|
<label id="locationDropdownLabel" for="">"countries"></label>
|
|
70
|
73
|
<form id="locationDropdown" hidden="true">
|
|
71
|
74
|
<select id="regions-select">
|
| ... |
... |
@@ -74,22 +77,11 @@ |
|
74
|
77
|
<optgroup id="full-regions-option-group"></optgroup>
|
|
75
|
78
|
</select>
|
|
76
|
79
|
</form>
|
|
77
|
|
- <span id="buttonPadding"></span>
|
|
78
|
|
- <span id="connectButtonContainer">
|
|
79
|
|
- <button id="restartButton" hidden="true"></button>
|
|
80
|
|
- <button id="configureButton" hidden="true"></button>
|
|
81
|
|
- <button id="cancelButton" hidden="true"></button>
|
|
82
|
|
- <button
|
|
83
|
|
- id="connectButton"
|
|
84
|
|
- hidden="true"
|
|
85
|
|
- class="tor-button"
|
|
86
|
|
- ></button>
|
|
87
|
|
- <button
|
|
88
|
|
- id="tryBridgeButton"
|
|
89
|
|
- hidden="true"
|
|
90
|
|
- class="tor-button"
|
|
91
|
|
- ></button>
|
|
92
|
|
- </span>
|
|
|
80
|
+ <button
|
|
|
81
|
+ id="tryBridgeButton"
|
|
|
82
|
+ hidden="true"
|
|
|
83
|
+ class="tor-button"
|
|
|
84
|
+ ></button>
|
|
93
|
85
|
</div>
|
|
94
|
86
|
</div>
|
|
95
|
87
|
</div>
|
toolkit/components/torconnect/content/aboutTorConnect.js
| ... |
... |
@@ -66,7 +66,7 @@ class AboutTorConnect { |
|
66
|
66
|
connect: "button#connectButton",
|
|
67
|
67
|
tryBridge: "button#tryBridgeButton",
|
|
68
|
68
|
locationDropdownLabel: "#locationDropdownLabel",
|
|
69
|
|
- locationDropdown: "#locationDropdown",
|
|
|
69
|
+ locationDropdown: "form#locationDropdown",
|
|
70
|
70
|
locationDropdownSelect: "#regions-select",
|
|
71
|
71
|
},
|
|
72
|
72
|
});
|
| ... |
... |
@@ -757,9 +757,6 @@ class AboutTorConnect { |
|
757
|
757
|
}
|
|
758
|
758
|
|
|
759
|
759
|
initElements(direction) {
|
|
760
|
|
- const isAndroid = navigator.userAgent.includes("Android");
|
|
761
|
|
- document.body.classList.toggle("android", isAndroid);
|
|
762
|
|
-
|
|
763
|
760
|
document.documentElement.setAttribute("dir", direction);
|
|
764
|
761
|
|
|
765
|
762
|
this.elements.connectToTorLink.addEventListener("click", () => {
|
|