|
|
|
@ -18,6 +18,8 @@ import android.view.LayoutInflater
|
|
|
|
|
import android.widget.Toast
|
|
|
|
|
import androidx.annotation.VisibleForTesting
|
|
|
|
|
import androidx.appcompat.app.AlertDialog
|
|
|
|
|
import androidx.fragment.app.activityViewModels
|
|
|
|
|
import androidx.lifecycle.Observer
|
|
|
|
|
import androidx.lifecycle.lifecycleScope
|
|
|
|
|
import androidx.navigation.NavDirections
|
|
|
|
|
import androidx.navigation.findNavController
|
|
|
|
@ -54,6 +56,7 @@ import org.mozilla.fenix.ext.openSetDefaultBrowserOption
|
|
|
|
|
import org.mozilla.fenix.ext.showToolbar
|
|
|
|
|
import org.mozilla.fenix.nimbus.FxNimbus
|
|
|
|
|
import org.mozilla.fenix.nimbus.MessageSurfaceId
|
|
|
|
|
import org.mozilla.fenix.perf.ProfilerViewModel
|
|
|
|
|
import org.mozilla.fenix.settings.account.AccountUiView
|
|
|
|
|
import org.mozilla.fenix.utils.BrowsersCache
|
|
|
|
|
import org.mozilla.fenix.utils.Settings
|
|
|
|
@ -64,6 +67,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|
|
|
|
|
|
|
|
|
private val args by navArgs<SettingsFragmentArgs>()
|
|
|
|
|
private lateinit var accountUiView: AccountUiView
|
|
|
|
|
private val profilerViewModel: ProfilerViewModel by activityViewModels()
|
|
|
|
|
|
|
|
|
|
private val accountObserver = object : AccountObserver {
|
|
|
|
|
private fun updateAccountUi(profile: Profile? = null) {
|
|
|
|
@ -146,6 +150,10 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|
|
|
|
// The setting is not a boolean, not tracked
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
profilerViewModel.getProfilerState().observe(this, Observer<Boolean>{
|
|
|
|
|
updateProfilerUI(it)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
|
|
|
@ -188,7 +196,6 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|
|
|
|
if (args.preferenceToScrollTo != null) {
|
|
|
|
|
scrollToPreference(args.preferenceToScrollTo)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Consider finish of `onResume` to be the point at which we consider this fragment as 'created'.
|
|
|
|
|
creatingFragment = false
|
|
|
|
|
}
|
|
|
|
@ -408,6 +415,13 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|
|
|
|
|
|
|
|
|
null
|
|
|
|
|
}
|
|
|
|
|
resources.getString(R.string.pref_key_start_profiler) -> {
|
|
|
|
|
if (requireContext().components.core.engine.profiler?.isProfilerActive()!!) {
|
|
|
|
|
SettingsFragmentDirections.actionSettingsFragmentToStopProfilerDialog()
|
|
|
|
|
} else {
|
|
|
|
|
SettingsFragmentDirections.actionSettingsFragmentToStartProfilerDialog()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else -> null
|
|
|
|
|
}
|
|
|
|
|
directions?.let { navigateFromSettings(directions) }
|
|
|
|
@ -423,7 +437,6 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|
|
|
|
requirePreference<Preference>(R.string.pref_key_make_default_browser)
|
|
|
|
|
val preferenceOpenLinksInExternalApp =
|
|
|
|
|
findPreference<Preference>(getPreferenceKey(R.string.pref_key_open_links_in_external_app))
|
|
|
|
|
|
|
|
|
|
if (!Config.channel.isReleased) {
|
|
|
|
|
preferenceLeakCanary?.setOnPreferenceChangeListener { _, newValue ->
|
|
|
|
|
val isEnabled = newValue == true
|
|
|
|
@ -471,6 +484,9 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|
|
|
|
preferenceFxAOverride?.onPreferenceChangeListener = syncFxAOverrideUpdater
|
|
|
|
|
preferenceSyncOverride?.onPreferenceChangeListener = syncFxAOverrideUpdater
|
|
|
|
|
|
|
|
|
|
val preferenceStartProfiler =
|
|
|
|
|
findPreference<Preference>(getPreferenceKey(R.string.pref_key_start_profiler))
|
|
|
|
|
|
|
|
|
|
with(requireContext().settings()) {
|
|
|
|
|
findPreference<Preference>(
|
|
|
|
|
getPreferenceKey(R.string.pref_key_nimbus_experiments)
|
|
|
|
@ -481,8 +497,8 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|
|
|
|
findPreference<Preference>(
|
|
|
|
|
getPreferenceKey(R.string.pref_key_secret_debug_info)
|
|
|
|
|
)?.isVisible = showSecretDebugMenuThisSession
|
|
|
|
|
preferenceStartProfiler?.isVisible = showSecretDebugMenuThisSession && (requireContext().components.core.engine.profiler?.isProfilerActive() != null)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
setupAmoCollectionOverridePreference(requireContext().settings())
|
|
|
|
|
setupAllowDomesticChinaFxaServerPreference()
|
|
|
|
|
setupHttpsOnlyPreferences()
|
|
|
|
@ -644,6 +660,19 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|
|
|
|
return browsers.isFirefoxDefaultBrowser
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun updateProfilerUI(profilerStatus: Boolean){
|
|
|
|
|
if (profilerStatus) {
|
|
|
|
|
findPreference<Preference>(getPreferenceKey(R.string.pref_key_start_profiler))?.title =
|
|
|
|
|
resources.getString(R.string.profiler_stop)
|
|
|
|
|
findPreference<Preference>(getPreferenceKey(R.string.pref_key_start_profiler))?.summary =
|
|
|
|
|
resources.getString(R.string.profiler_running)
|
|
|
|
|
} else {
|
|
|
|
|
findPreference<Preference>(getPreferenceKey(R.string.pref_key_start_profiler))?.title =
|
|
|
|
|
resources.getString(R.string.preferences_start_profiler)
|
|
|
|
|
findPreference<Preference>(getPreferenceKey(R.string.pref_key_start_profiler))?.summary = ""
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
companion object {
|
|
|
|
|
private const val SCROLL_INDICATOR_DELAY = 10L
|
|
|
|
|
private const val FXA_SYNC_OVERRIDE_EXIT_DELAY = 2000L
|
|
|
|
|