diff --git a/app/src/main/java/org/mozilla/fenix/gecko/GeckoProvider.kt b/app/src/main/java/org/mozilla/fenix/gecko/GeckoProvider.kt index d435036e56..ccfd4cfa24 100644 --- a/app/src/main/java/org/mozilla/fenix/gecko/GeckoProvider.kt +++ b/app/src/main/java/org/mozilla/fenix/gecko/GeckoProvider.kt @@ -56,7 +56,7 @@ object GeckoProvider { .crashHandler(CrashHandlerService::class.java) .telemetryDelegate(GeckoAdapter()) .contentBlocking(policy.toContentBlockingSetting()) - .debugLogging(Config.channel.isDebug) + .debugLogging(Config.channel.isDebug || context.components.settings.enableGeckoLogs) .aboutConfigEnabled(Config.channel.isBeta || Config.channel.isNightlyOrDebug) .build() diff --git a/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt index 6615b907c2..7d721a5cb0 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt @@ -489,6 +489,7 @@ class SettingsFragment : PreferenceFragmentCompat() { } setupCookieBannerPreference() setupAmoCollectionOverridePreference(requireContext().settings()) + setupGeckoLogsPreference(requireContext().settings()) setupAllowDomesticChinaFxaServerPreference() setupHttpsOnlyPreferences() setupNotificationPreference() @@ -561,6 +562,32 @@ class SettingsFragment : PreferenceFragmentCompat() { } } + @VisibleForTesting + internal fun setupGeckoLogsPreference(settings: Settings) { + val preferenceEnabledGeckoLogs = + findPreference(getPreferenceKey(R.string.pref_key_enable_gecko_logs)) + + val show = settings.showSecretDebugMenuThisSession + preferenceEnabledGeckoLogs?.isVisible = show + + preferenceEnabledGeckoLogs?.onPreferenceChangeListener = + Preference.OnPreferenceChangeListener { _, newValue -> + context?.settings()?.enableGeckoLogs = newValue as Boolean + Toast.makeText( + context, + getString(R.string.quit_application), + Toast.LENGTH_LONG, + ).show() + Handler(Looper.getMainLooper()).postDelayed( + { + exitProcess(0) + }, + FXA_SYNC_OVERRIDE_EXIT_DELAY, + ) + true + } + } + private fun setupAllowDomesticChinaFxaServerPreference() { val allowDomesticChinaFxAServer = getPreferenceKey(R.string.pref_key_allow_domestic_china_fxa_server) val preferenceAllowDomesticChinaFxAServer = findPreference(allowDomesticChinaFxAServer) diff --git a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt index 3164fa0f38..a36dcede6a 100644 --- a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt +++ b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt @@ -1314,6 +1314,11 @@ class Settings(private val appContext: Context) : PreferencesHolder { default = "", ) + var enableGeckoLogs by booleanPreference( + appContext.getPreferenceKey(R.string.pref_key_enable_gecko_logs), + default = Config.channel.isDebug, + ) + fun amoCollectionOverrideConfigured(): Boolean { return overrideAmoUser.isNotEmpty() || overrideAmoCollection.isNotEmpty() } diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml index 32cfbad331..435817a9d0 100644 --- a/app/src/main/res/values/preference_keys.xml +++ b/app/src/main/res/values/preference_keys.xml @@ -40,6 +40,7 @@ pref_key_addons pref_key_override_amo_user pref_key_override_amo_collection + pref_key_enable_gecko_logs pref_key_help pref_key_rate pref_key_about diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c2eedcfcb0..3bdc3da975 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -529,6 +529,11 @@ Never External download manager + + Enable Gecko logs + + Quitting the application to apply changes… + Add-ons diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index d4bb27a49c..2e0366e11b 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -177,6 +177,12 @@ android:title="@string/preferences_remote_debugging" app:iconSpaceReserved="false" android:defaultValue="false" /> + +