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 22447bbe24..65778d2795 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Core.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Core.kt @@ -329,6 +329,11 @@ class Core( rootStorageDirectory = context.filesDir, readJson = readJson, collectionName = COLLECTION_NAME, + serverUrl = if (context.settings().useProductionRemoteSettingsServer) { + REMOTE_PROD_ENDPOINT_URL + } else { + REMOTE_STAGE_ENDPOINT_URL + }, ).updateProviderList() } // Install the "ads" WebExtension to get the links in an partner page. @@ -623,5 +628,7 @@ class Core( // collection name to fetch from server for SERP telemetry const val COLLECTION_NAME = "search-telemetry-v2" + internal const val REMOTE_PROD_ENDPOINT_URL = "https://firefox.settings.services.mozilla.com" + internal const val REMOTE_STAGE_ENDPOINT_URL = "https://firefox.settings.services.allizom.org" } } 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 4f5c99085b..2d91285fed 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/SecretSettingsFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/SecretSettingsFragment.kt @@ -88,7 +88,8 @@ class SecretSettingsFragment : PreferenceFragmentCompat() { 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 + val ingestionScheduler = + requireContext().components.fxSuggest.ingestionScheduler if (newBooleanValue) { ingestionScheduler.startPeriodicIngestion() } else { @@ -129,6 +130,12 @@ class SecretSettingsFragment : PreferenceFragmentCompat() { requirePreference(R.string.pref_key_custom_sponsored_stories_parameters).apply { isVisible = Config.channel.isNightlyOrDebug } + + requirePreference(R.string.pref_key_remote_server_prod).apply { + isVisible = true + isChecked = context.settings().useProductionRemoteSettingsServer + onPreferenceChangeListener = SharedPreferenceUpdater() + } } override fun onPreferenceTreeClick(preference: Preference): Boolean { 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 8a8bbd7064..7b8f0343e6 100644 --- a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt +++ b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt @@ -767,6 +767,11 @@ class Settings(private val appContext: Context) : PreferencesHolder { true, ) + val useProductionRemoteSettingsServer by booleanPreference( + key = appContext.getPreferenceKey(R.string.pref_key_remote_server_prod), + default = true, + ) + val enabledTotalCookieProtection: Boolean get() = mr2022Sections[Mr2022Section.TCP_FEATURE] == true diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml index 59e41aebe4..6c16155567 100644 --- a/app/src/main/res/values/preference_keys.xml +++ b/app/src/main/res/values/preference_keys.xml @@ -145,6 +145,9 @@ pref_key_privacy_pop_window + + pref_key_remote_server_prod + pref_key_light_theme pref_key_dark_theme diff --git a/app/src/main/res/values/static_strings.xml b/app/src/main/res/values/static_strings.xml index ffb95ee4e4..6432c5bedd 100644 --- a/app/src/main/res/values/static_strings.xml +++ b/app/src/main/res/values/static_strings.xml @@ -34,6 +34,8 @@ Secret Settings Secret Debug Info + + Use Remote Settings Production server \n(Staging will be used when disabled) \n(requires restart) Use third party CA certificates diff --git a/app/src/main/res/xml/secret_settings_preferences.xml b/app/src/main/res/xml/secret_settings_preferences.xml index 48148593f6..0a74701ced 100644 --- a/app/src/main/res/xml/secret_settings_preferences.xml +++ b/app/src/main/res/xml/secret_settings_preferences.xml @@ -61,4 +61,9 @@ app:iconSpaceReserved="false" android:title="@string/preferences_debug_settings_custom_sponsored_stories_parameters" /> +