You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iceraven-browser/app/src/main/java/org/mozilla/fenix/settings/SecretSettingsFragment.kt

116 lines
5.1 KiB
Kotlin

/* 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.settings
import android.os.Bundle
import androidx.core.content.edit
import androidx.navigation.fragment.findNavController
import androidx.preference.EditTextPreference
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreference
import org.mozilla.fenix.BuildConfig
import org.mozilla.fenix.Config
import org.mozilla.fenix.FeatureFlags
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar
class SecretSettingsFragment : PreferenceFragmentCompat() {
override fun onResume() {
super.onResume()
showToolbar(getString(R.string.preferences_debug_settings))
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.secret_settings_preferences, rootKey)
requirePreference<SwitchPreference>(R.string.pref_key_allow_third_party_root_certs).apply {
isVisible = true
isChecked = context.settings().allowThirdPartyRootCerts
onPreferenceChangeListener = object : SharedPreferenceUpdater() {
override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
context.components.core.engine.settings.enterpriseRootsEnabled =
newValue as Boolean
return super.onPreferenceChange(preference, newValue)
}
}
}
requirePreference<SwitchPreference>(R.string.pref_key_nimbus_use_preview).apply {
isVisible = true
isChecked = context.settings().nimbusUsePreview
onPreferenceChangeListener = SharedPreferenceUpdater()
}
requirePreference<SwitchPreference>(R.string.pref_key_enable_tabs_tray_to_compose).apply {
isVisible = true
isChecked = context.settings().enableTabsTrayToCompose
onPreferenceChangeListener = SharedPreferenceUpdater()
}
requirePreference<SwitchPreference>(R.string.pref_key_enable_compose_top_sites).apply {
isVisible = Config.channel.isNightlyOrDebug
isChecked = context.settings().enableComposeTopSites
onPreferenceChangeListener = SharedPreferenceUpdater()
}
requirePreference<SwitchPreference>(R.string.pref_key_enable_shopping_experience).apply {
isVisible = Config.channel.isNightlyOrDebug
isChecked = context.settings().enableShoppingExperience
onPreferenceChangeListener = SharedPreferenceUpdater()
}
requirePreference<SwitchPreference>(R.string.pref_key_enable_translations).apply {
isVisible = FeatureFlags.translations
isChecked = context.settings().enableTranslations
onPreferenceChangeListener = SharedPreferenceUpdater()
}
requirePreference<SwitchPreference>(R.string.pref_key_enable_fxsuggest).apply {
isVisible = FeatureFlags.fxSuggest
isChecked = context.settings().enableFxSuggest
onPreferenceChangeListener = object : Preference.OnPreferenceChangeListener {
override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
val newBooleanValue = newValue as? Boolean ?: return false
val ingestionScheduler = requireContext().components.fxSuggest.ingestionScheduler
if (newBooleanValue) {
ingestionScheduler.startPeriodicIngestion()
} else {
ingestionScheduler.stopPeriodicIngestion()
}
requireContext().settings().preferences.edit {
putBoolean(preference.key, newBooleanValue)
}
return true
}
}
}
// for performance reasons, this is only available in Nightly or Debug builds
requirePreference<EditTextPreference>(R.string.pref_key_custom_glean_server_url).apply {
isVisible = Config.channel.isNightlyOrDebug && BuildConfig.GLEAN_CUSTOM_URL.isNullOrEmpty()
}
requirePreference<Preference>(R.string.pref_key_custom_sponsored_stories_parameters).apply {
isVisible = Config.channel.isNightlyOrDebug
}
}
override fun onPreferenceTreeClick(preference: Preference): Boolean {
when (preference.key) {
getString(R.string.pref_key_custom_sponsored_stories_parameters) ->
findNavController().nav(
R.id.secretSettingsPreference,
SecretSettingsFragmentDirections.actionSecretSettingsFragmentToSponsoredStoriesSettings(),
)
}
return super.onPreferenceTreeClick(preference)
}
}