Close #26948: Enable custom extension collections in Beta.

Similar to how Nightly functions, custom extension collections are enabled to be used in Firefox Beta as well.
pull/543/head
kycn 2 years ago committed by mergify[bot]
parent 90fb56a251
commit f9efa5e8bb

@ -12,6 +12,14 @@ import mozilla.components.support.locale.LocaleManager.getSystemDefault
* A single source for setting feature flags that are mostly based on build type. * A single source for setting feature flags that are mostly based on build type.
*/ */
object FeatureFlags { object FeatureFlags {
/**
* Enables custom extension collection feature,
* This feature does not only depend on this flag. It requires the AMO collection override to
* be enabled which is behind the Secret Settings.
* */
val customExtensionCollectionFeature = Config.channel.isNightlyOrDebug || Config.channel.isBeta
/** /**
* Pull-to-refresh allows you to pull the web content down far enough to have the page to * Pull-to-refresh allows you to pull the web content down far enough to have the page to
* reload. * reload.

@ -22,6 +22,7 @@ import mozilla.components.lib.publicsuffixlist.PublicSuffixList
import mozilla.components.support.base.worker.Frequency import mozilla.components.support.base.worker.Frequency
import org.mozilla.fenix.BuildConfig import org.mozilla.fenix.BuildConfig
import org.mozilla.fenix.Config import org.mozilla.fenix.Config
import org.mozilla.fenix.FeatureFlags
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.autofill.AutofillConfirmActivity import org.mozilla.fenix.autofill.AutofillConfirmActivity
@ -105,8 +106,8 @@ class Components(private val context: Context) {
} }
val addonCollectionProvider by lazyMonitored { val addonCollectionProvider by lazyMonitored {
// Check if we have a customized (overridden) AMO collection (only supported in Nightly) // Check if we have a customized (overridden) AMO collection (supported in Nightly & Beta)
if (Config.channel.isNightlyOrDebug && context.settings().amoCollectionOverrideConfigured()) { if (FeatureFlags.customExtensionCollectionFeature && context.settings().amoCollectionOverrideConfigured()) {
AddonCollectionProvider( AddonCollectionProvider(
context, context,
core.client, core.client,

@ -38,6 +38,7 @@ import mozilla.components.service.glean.private.NoExtras
import mozilla.components.support.ktx.android.view.showKeyboard import mozilla.components.support.ktx.android.view.showKeyboard
import org.mozilla.fenix.BrowserDirection import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.Config import org.mozilla.fenix.Config
import org.mozilla.fenix.FeatureFlags
import org.mozilla.fenix.GleanMetrics.Addons import org.mozilla.fenix.GleanMetrics.Addons
import org.mozilla.fenix.GleanMetrics.Events import org.mozilla.fenix.GleanMetrics.Events
import org.mozilla.fenix.GleanMetrics.TrackingProtection import org.mozilla.fenix.GleanMetrics.TrackingProtection
@ -522,7 +523,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
findPreference<Preference>(getPreferenceKey(R.string.pref_key_override_amo_collection)) findPreference<Preference>(getPreferenceKey(R.string.pref_key_override_amo_collection))
val show = ( val show = (
Config.channel.isNightlyOrDebug && ( FeatureFlags.customExtensionCollectionFeature && (
settings.amoCollectionOverrideConfigured() || settings.showSecretDebugMenuThisSession settings.amoCollectionOverrideConfigured() || settings.showSecretDebugMenuThisSession
) )
) )

@ -9,11 +9,13 @@ import androidx.preference.Preference
import io.mockk.every import io.mockk.every
import io.mockk.mockk import io.mockk.mockk
import io.mockk.mockkObject import io.mockk.mockkObject
import io.mockk.unmockkObject
import kotlinx.coroutines.test.advanceUntilIdle import kotlinx.coroutines.test.advanceUntilIdle
import mozilla.components.concept.fetch.Client import mozilla.components.concept.fetch.Client
import mozilla.components.support.test.robolectric.testContext import mozilla.components.support.test.robolectric.testContext
import mozilla.components.support.test.rule.MainCoroutineRule import mozilla.components.support.test.rule.MainCoroutineRule
import mozilla.components.support.test.rule.runTestOnMain import mozilla.components.support.test.rule.runTestOnMain
import org.junit.After
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse import org.junit.Assert.assertFalse
import org.junit.Assert.assertNotNull import org.junit.Assert.assertNotNull
@ -22,9 +24,8 @@ import org.junit.Before
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mozilla.fenix.Config import org.mozilla.fenix.FeatureFlags
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.ReleaseChannel
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.getPreferenceKey import org.mozilla.fenix.ext.getPreferenceKey
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
@ -51,8 +52,8 @@ class SettingsFragmentTest {
every { testContext.components.settings } returns mockk(relaxed = true) every { testContext.components.settings } returns mockk(relaxed = true)
every { testContext.components.analytics } returns mockk(relaxed = true) every { testContext.components.analytics } returns mockk(relaxed = true)
every { testContext.components.backgroundServices } returns mockk(relaxed = true) every { testContext.components.backgroundServices } returns mockk(relaxed = true)
mockkObject(Config)
every { Config.channel } returns ReleaseChannel.Nightly mockkObject(FeatureFlags)
val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().get() val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().get()
activity.supportFragmentManager.beginTransaction() activity.supportFragmentManager.beginTransaction()
@ -61,7 +62,7 @@ class SettingsFragmentTest {
} }
@Test @Test
fun `Add-on collection override pref is visible if debug menu active`() = runTestOnMain { fun `Add-on collection override pref is visible if debug menu active and feature is enabled`() = runTestOnMain {
val settingsFragment = SettingsFragment() val settingsFragment = SettingsFragment()
val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().get() val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().get()
@ -71,6 +72,8 @@ class SettingsFragmentTest {
advanceUntilIdle() advanceUntilIdle()
every { FeatureFlags.customExtensionCollectionFeature } returns true
val preferenceAmoCollectionOverride = settingsFragment.findPreference<Preference>( val preferenceAmoCollectionOverride = settingsFragment.findPreference<Preference>(
settingsFragment.getPreferenceKey(R.string.pref_key_override_amo_collection), settingsFragment.getPreferenceKey(R.string.pref_key_override_amo_collection),
) )
@ -86,7 +89,7 @@ class SettingsFragmentTest {
} }
@Test @Test
fun `Add-on collection override pref is visible if already configured`() = runTestOnMain { fun `Add-on collection override pref is visible if already configured and feature is enabled`() = runTestOnMain {
val settingsFragment = SettingsFragment() val settingsFragment = SettingsFragment()
val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().get() val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().get()
@ -96,6 +99,8 @@ class SettingsFragmentTest {
advanceUntilIdle() advanceUntilIdle()
every { FeatureFlags.customExtensionCollectionFeature } returns true
val preferenceAmoCollectionOverride = settingsFragment.findPreference<Preference>( val preferenceAmoCollectionOverride = settingsFragment.findPreference<Preference>(
settingsFragment.getPreferenceKey(R.string.pref_key_override_amo_collection), settingsFragment.getPreferenceKey(R.string.pref_key_override_amo_collection),
) )
@ -116,6 +121,34 @@ class SettingsFragmentTest {
assertTrue(preferenceAmoCollectionOverride.isVisible) assertTrue(preferenceAmoCollectionOverride.isVisible)
} }
@Test
fun `Add-on collection override pref is not visible if feature is disabled`() = runTestOnMain {
val settingsFragment = SettingsFragment()
val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().get()
activity.supportFragmentManager.beginTransaction()
.add(settingsFragment, "test")
.commitNow()
advanceUntilIdle()
every { FeatureFlags.customExtensionCollectionFeature } returns false
val preferenceAmoCollectionOverride = settingsFragment.findPreference<Preference>(
settingsFragment.getPreferenceKey(R.string.pref_key_override_amo_collection),
)
val settings: Settings = mockk(relaxed = true)
settingsFragment.setupAmoCollectionOverridePreference(settings)
assertNotNull(preferenceAmoCollectionOverride)
assertFalse(preferenceAmoCollectionOverride!!.isVisible)
every { settings.showSecretDebugMenuThisSession } returns true
every { settings.amoCollectionOverrideConfigured() } returns true
settingsFragment.setupAmoCollectionOverridePreference(settings)
assertFalse(preferenceAmoCollectionOverride.isVisible)
}
@Test @Test
fun `GIVEN the HttpsOnly is enabled THEN set the appropriate preference summary`() { fun `GIVEN the HttpsOnly is enabled THEN set the appropriate preference summary`() {
val httpsOnlyPreference = settingsFragment.findPreference<Preference>( val httpsOnlyPreference = settingsFragment.findPreference<Preference>(
@ -143,4 +176,9 @@ class SettingsFragmentTest {
assertEquals(summary, httpsOnlyPreference.summary) assertEquals(summary, httpsOnlyPreference.summary)
} }
@After
fun tearDown() {
unmockkObject(FeatureFlags)
}
} }

Loading…
Cancel
Save