Matthew Finkel pushed to branch tor-browser-82.1.1-10.0-1 at The Tor Project / Applications / fenix
Commits: 54f42ec4 by Alex Catarineu at 2020-10-23T17:58:56+00:00 Bug 40087: Implement a switch for english locale spoofing
- - - - -
7 changed files:
- app/src/main/java/org/mozilla/fenix/components/Core.kt - app/src/main/java/org/mozilla/fenix/settings/advanced/DefaultLocaleSettingsController.kt - app/src/main/java/org/mozilla/fenix/settings/advanced/LocaleSettingsFragment.kt - app/src/main/java/org/mozilla/fenix/utils/Settings.kt - app/src/main/res/layout/fragment_locale_settings.xml - app/src/main/res/values/preference_keys.xml - app/src/main/res/values/torbrowser_strings.xml
Changes:
===================================== app/src/main/java/org/mozilla/fenix/components/Core.kt ===================================== @@ -93,7 +93,8 @@ class Core(private val context: Context, private val crashReporter: CrashReporti suspendMediaWhenInactive = false, forceUserScalableContent = context.settings().forceEnableZoom, loginAutofillEnabled = context.settings().shouldAutofillLogins, - torSecurityLevel = context.settings().torSecurityLevel().intRepresentation + torSecurityLevel = context.settings().torSecurityLevel().intRepresentation, + spoofEnglish = context.settings().spoofEnglish )
GeckoEngine(
===================================== app/src/main/java/org/mozilla/fenix/settings/advanced/DefaultLocaleSettingsController.kt ===================================== @@ -7,6 +7,7 @@ package org.mozilla.fenix.settings.advanced import android.app.Activity import android.content.Context import mozilla.components.support.locale.LocaleManager +import org.mozilla.fenix.ext.components import java.util.Locale
interface LocaleSettingsController { @@ -55,5 +56,9 @@ class DefaultLocaleSettingsController( config.setLocale(locale) config.setLayoutDirection(locale) resources.updateConfiguration(config, resources.displayMetrics) + // A slightly hacky way of triggering a `runtime.settings.locales` update, + // so that the locales are updated in GeckoView. + val spoofEnglish = context.components.core.engine.settings.spoofEnglish + context.components.core.engine.settings.spoofEnglish = spoofEnglish } }
===================================== app/src/main/java/org/mozilla/fenix/settings/advanced/LocaleSettingsFragment.kt ===================================== @@ -20,6 +20,8 @@ import mozilla.components.support.ktx.android.view.hideKeyboard import mozilla.components.support.locale.LocaleManager import org.mozilla.fenix.R import org.mozilla.fenix.components.StoreProvider +import org.mozilla.fenix.ext.requireComponents +import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.showToolbar
class LocaleSettingsFragment : Fragment() { @@ -38,7 +40,9 @@ class LocaleSettingsFragment : Fragment() { container: ViewGroup?, savedInstanceState: Bundle? ): View? { - val view = inflater.inflate(R.layout.fragment_locale_settings, container, false) + val view = inflater.inflate(R.layout.fragment_locale_settings, container, false).also { + bindEnableSwitch(it) + }
store = getStore() interactor = LocaleSettingsInteractor( @@ -51,6 +55,16 @@ class LocaleSettingsFragment : Fragment() { return view }
+ @SuppressWarnings("LongMethod") + private fun bindEnableSwitch(view: View) { + val switch = view.enable_switch + switch.isChecked = requireComponents.core.engine.settings.spoofEnglish + switch.setOnCheckedChangeListener { _, isChecked -> + context?.settings()?.spoofEnglish = isChecked + requireComponents.core.engine.settings.spoofEnglish = isChecked + } + } + override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.languages_list, menu) val searchItem = menu.findItem(R.id.search)
===================================== app/src/main/java/org/mozilla/fenix/utils/Settings.kt ===================================== @@ -204,6 +204,11 @@ class Settings(private val appContext: Context) : PreferencesHolder { else -> SecurityLevel.STANDARD }
+ var spoofEnglish by booleanPreference( + appContext.getPreferenceKey(R.string.pref_key_spoof_english), + default = false + ) + // If any of the prefs have been modified, quit displaying the fenix moved tip fun shouldDisplayFenixMovingTip(): Boolean = preferences.getBoolean(
===================================== app/src/main/res/layout/fragment_locale_settings.xml ===================================== @@ -7,13 +7,30 @@ android:layout_width="match_parent" android:layout_height="match_parent">
+ <com.google.android.material.switchmaterial.SwitchMaterial + android:id="@+id/enable_switch" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical|end" + android:background="?android:attr/selectableItemBackground" + android:checked="true" + android:clickable="true" + android:focusable="true" + android:layout_marginStart="54dp" + android:padding="16dp" + android:text="@string/tor_spoof_english" + android:textColor="?primaryText" + android:textSize="16sp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> <FrameLayout android:id="@+id/locale_container" android:layout_width="match_parent" - android:layout_height="match_parent" + android:layout_height="0dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toBottomOf="@id/enable_switch" />
-</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file +</androidx.constraintlayout.widget.ConstraintLayout>
===================================== app/src/main/res/values/preference_keys.xml ===================================== @@ -253,4 +253,6 @@ <string name="pref_key_tor_network_settings_tor_ready">pref_key_tor_network_settings_tor_ready</string> <string name="pref_key_tor_network_settings_state">pref_key_tor_network_settings_state</string> <string name="pref_key_tor_network_settings_bridges_enabled">pref_key_tor_network_settings_bridges_enabled</string> + + <string name="pref_key_spoof_english" translatable="false">pref_key_spoof_english</string> </resources>
===================================== app/src/main/res/values/torbrowser_strings.xml ===================================== @@ -70,4 +70,6 @@ <string name="tor_security_level_safest_option">Safest</string> <string name="tor_security_level_safest_description">Only allow website features required for static sites and basic services. These changes affect images, media, and scripts.</string>
+ <!-- Spoof locale to English --> + <string name="tor_spoof_english">Request English versions of web pages for enhanced privacy</string> </resources>
View it on GitLab: https://gitlab.torproject.org/tpo/applications/fenix/-/commit/54f42ec477b781...