From 8788eeb18808fd82c953f472ea075f4ee8da7481 Mon Sep 17 00:00:00 2001 From: Arturo Mejia Date: Fri, 30 Jun 2023 20:49:45 -0400 Subject: [PATCH] Bug 1841361 - Allow advance user to enable Gecko logs (cherry picked from commit c712c70d42ab1c0c9e89e830088760414b2e5ca3) --- .../org/mozilla/fenix/gecko/GeckoProvider.kt | 2 +- .../fenix/settings/SettingsFragment.kt | 27 +++++++++++++++++++ .../java/org/mozilla/fenix/utils/Settings.kt | 5 ++++ app/src/main/res/values/preference_keys.xml | 1 + app/src/main/res/values/strings.xml | 5 ++++ app/src/main/res/xml/preferences.xml | 6 +++++ 6 files changed, 45 insertions(+), 1 deletion(-) 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 d435036e5..ccfd4cfa2 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 6615b907c..7d721a5cb 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 3164fa0f3..a36dcede6 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 32cfbad33..435817a9d 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 c2eedcfcb..3bdc3da97 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 d4bb27a49..2e0366e11 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" /> + +