From a9e0557d8355e3b9dbf996a2c5774ba245ee1455 Mon Sep 17 00:00:00 2001 From: Roger Yang Date: Thu, 6 May 2021 21:52:55 -0400 Subject: [PATCH] Closes #3728: Add secret menu switch for allowing third party root certificates (#19398) --- .../main/java/org/mozilla/fenix/components/Core.kt | 1 + .../fenix/settings/SecretSettingsFragment.kt | 14 ++++++++++++++ .../main/java/org/mozilla/fenix/utils/Settings.kt | 5 +++++ app/src/main/res/values/preference_keys.xml | 1 + app/src/main/res/values/static_strings.xml | 4 ++++ .../main/res/xml/secret_settings_preferences.xml | 6 ++++++ 6 files changed, 31 insertions(+) diff --git a/app/src/main/java/org/mozilla/fenix/components/Core.kt b/app/src/main/java/org/mozilla/fenix/components/Core.kt index c0e206a47..58dcc90b7 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Core.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Core.kt @@ -108,6 +108,7 @@ class Core( suspendMediaWhenInactive = false, forceUserScalableContent = context.settings().forceEnableZoom, loginAutofillEnabled = context.settings().shouldAutofillLogins, + enterpriseRootsEnabled = context.settings().allowThirdPartyRootCerts, clearColor = ContextCompat.getColor( context, R.color.foundation_normal_theme diff --git a/app/src/main/java/org/mozilla/fenix/settings/SecretSettingsFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/SecretSettingsFragment.kt index 4b965904b..d3732f209 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/SecretSettingsFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/SecretSettingsFragment.kt @@ -5,10 +5,12 @@ package org.mozilla.fenix.settings import android.os.Bundle +import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import androidx.preference.SwitchPreference import org.mozilla.fenix.FeatureFlags import org.mozilla.fenix.R +import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.showToolbar @@ -39,5 +41,17 @@ class SecretSettingsFragment : PreferenceFragmentCompat() { isChecked = context.settings().tabsTrayRewrite onPreferenceChangeListener = SharedPreferenceUpdater() } + + requirePreference(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) + } + } + } } } 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 d9b1914b9..5f80df303 100644 --- a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt +++ b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt @@ -357,6 +357,11 @@ class Settings(private val appContext: Context) : PreferencesHolder { featureFlag = FeatureFlags.tabsTrayRewrite ) + var allowThirdPartyRootCerts by booleanPreference( + appContext.getPreferenceKey(R.string.pref_key_allow_third_party_root_certs), + default = false + ) + fun getTabTimeout(): Long = when { closeTabsAfterOneDay -> ONE_DAY_MS closeTabsAfterOneWeek -> ONE_WEEK_MS diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml index 395ded789..0a87d060e 100644 --- a/app/src/main/res/values/preference_keys.xml +++ b/app/src/main/res/values/preference_keys.xml @@ -255,6 +255,7 @@ pref_key_close_tabs_after_one_week pref_key_close_tabs_after_one_month pref_key_new_tabs_tray + pref_key_allow_third_party_cert_roots pref_key_camera_permissions_needed diff --git a/app/src/main/res/values/static_strings.xml b/app/src/main/res/values/static_strings.xml index 544b31c45..ef9fe26ab 100644 --- a/app/src/main/res/values/static_strings.xml +++ b/app/src/main/res/values/static_strings.xml @@ -43,6 +43,10 @@ Use new Tabs Tray A refactored tabs tray that will include Synced Tabs. + + Use third party CA certificates + + Allows the use of third party certificates from the Android CA store Nimbus Experiments diff --git a/app/src/main/res/xml/secret_settings_preferences.xml b/app/src/main/res/xml/secret_settings_preferences.xml index 851a27964..a408c99f9 100644 --- a/app/src/main/res/xml/secret_settings_preferences.xml +++ b/app/src/main/res/xml/secret_settings_preferences.xml @@ -20,4 +20,10 @@ android:title="@string/preferences_debug_settings_tabs_tray_rewrite" android:summary="@string/preferences_debug_settings_tabs_tray_rewrite_summary" app:iconSpaceReserved="false" /> +