Bug 2019018 - Enabling adjust on start for aura distributions in nightly with play store kids mode for Adjust r=android-reviewers,mavduevskiy
Differential Revision: https://phabricator.services.mozilla.com/D284756
This commit is contained in:
committed by
joberhauser@mozilla.com
parent
38a404b1e9
commit
9f5342870a
+9
-2
@@ -21,6 +21,7 @@ import org.mozilla.fenix.BuildConfig
|
||||
import org.mozilla.fenix.Config
|
||||
import org.mozilla.fenix.GleanMetrics.AdjustAttribution
|
||||
import org.mozilla.fenix.GleanMetrics.Pings
|
||||
import org.mozilla.fenix.distributions.DistributionAdjustStartupStrategy
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
|
||||
@@ -64,8 +65,14 @@ class AdjustMetricsService(
|
||||
|
||||
// If we skipped the marketing consent screen, enable COPPA compliance to prevent
|
||||
// personal identifiers from being shared with Adjust.
|
||||
if (distributionIdManager.shouldSkipMarketingConsentScreen()) {
|
||||
config.enableCoppaCompliance()
|
||||
when (distributionIdManager.getDistributionAdjustStartupStrategy()) {
|
||||
DistributionAdjustStartupStrategy.IMMEDIATE_WITH_COPPA ->
|
||||
config.enableCoppaCompliance()
|
||||
|
||||
DistributionAdjustStartupStrategy.IMMEDIATE_WITH_PLAY_STORE_KIDS ->
|
||||
config.enablePlayStoreKidsCompliance()
|
||||
|
||||
else -> {}
|
||||
}
|
||||
|
||||
if (!alreadyKnown(settings)) {
|
||||
|
||||
+53
-7
@@ -9,6 +9,7 @@ import android.os.Build
|
||||
import androidx.annotation.VisibleForTesting
|
||||
import mozilla.components.support.base.log.logger.Logger
|
||||
import mozilla.components.support.utils.ext.PackageManagerWrapper
|
||||
import org.mozilla.fenix.Config
|
||||
import org.mozilla.fenix.GleanMetrics.Metrics
|
||||
import org.mozilla.fenix.GleanMetrics.Partnerships
|
||||
import org.mozilla.fenix.components.metrics.MetricController
|
||||
@@ -117,16 +118,42 @@ class DistributionIdManager(
|
||||
* @return true if the marketing consent screen can be skipped during onboarding
|
||||
*/
|
||||
suspend fun shouldSkipMarketingConsentScreen(): Boolean {
|
||||
val adjustStartupStrategy = getDistributionAdjustStartupStrategy()
|
||||
|
||||
return when (adjustStartupStrategy) {
|
||||
DistributionAdjustStartupStrategy.NONE,
|
||||
DistributionAdjustStartupStrategy.SHOW_CONSENT_SCREEN,
|
||||
-> false
|
||||
|
||||
DistributionAdjustStartupStrategy.IMMEDIATE_WITH_COPPA,
|
||||
DistributionAdjustStartupStrategy.IMMEDIATE_WITH_PLAY_STORE_KIDS,
|
||||
-> true
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Adjust startup strategy for the current distribution.
|
||||
*
|
||||
* @return the Adjust startup strategy.
|
||||
*/
|
||||
suspend fun getDistributionAdjustStartupStrategy(): DistributionAdjustStartupStrategy {
|
||||
val id = Distribution.fromId(getDistributionId())
|
||||
|
||||
return when (id) {
|
||||
Distribution.DEFAULT -> false
|
||||
Distribution.VIVO_001 -> true
|
||||
Distribution.DT_001 -> true
|
||||
Distribution.DT_002 -> true
|
||||
Distribution.DT_003 -> true
|
||||
Distribution.AURA_001 -> false
|
||||
Distribution.XIAOMI_001 -> true
|
||||
Distribution.DEFAULT -> DistributionAdjustStartupStrategy.NONE
|
||||
|
||||
Distribution.VIVO_001,
|
||||
Distribution.DT_001,
|
||||
Distribution.DT_002,
|
||||
Distribution.DT_003,
|
||||
Distribution.XIAOMI_001,
|
||||
-> DistributionAdjustStartupStrategy.IMMEDIATE_WITH_COPPA
|
||||
|
||||
Distribution.AURA_001 -> if (Config.channel.isNightlyOrDebug) {
|
||||
DistributionAdjustStartupStrategy.IMMEDIATE_WITH_PLAY_STORE_KIDS
|
||||
} else {
|
||||
DistributionAdjustStartupStrategy.SHOW_CONSENT_SCREEN
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,6 +226,25 @@ class DistributionIdManager(
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This enum represents how / when adjust starts up for distributions.
|
||||
*/
|
||||
enum class DistributionAdjustStartupStrategy {
|
||||
NONE,
|
||||
|
||||
// Show the adjust data collection consent screen during onboarding and start
|
||||
// adjust after the user has consented.
|
||||
SHOW_CONSENT_SCREEN,
|
||||
|
||||
// Start adjust immediately but enabled COPPA mode in adjust. COPPA mode will prevent
|
||||
// adjust from collecting personal identifiers and sharing data with third parties.
|
||||
IMMEDIATE_WITH_COPPA,
|
||||
|
||||
// Start adjust immediately but enable Play Store Kids mode in adjust. This mode will prevent
|
||||
// adjust from collecting personal identifiers.
|
||||
IMMEDIATE_WITH_PLAY_STORE_KIDS,
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks for a file in the device that indicates if the app was preinstalled on a vivo device
|
||||
*/
|
||||
|
||||
+1
-5
@@ -102,12 +102,8 @@ internal class MarketingAttributionServiceTest {
|
||||
|
||||
distributionIdManager.setDistribution(DistributionIdManager.Distribution.XIAOMI_001)
|
||||
assertFalse(MarketingAttributionService.shouldShowMarketingOnboarding(null, distributionIdManager))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `GIVEN a partnership distribution WHEN we should not skip the marketing screen THEN we do not skip it`() =
|
||||
runBlocking {
|
||||
distributionIdManager.setDistribution(DistributionIdManager.Distribution.AURA_001)
|
||||
assertTrue(MarketingAttributionService.shouldShowMarketingOnboarding(null, distributionIdManager))
|
||||
assertFalse(MarketingAttributionService.shouldShowMarketingOnboarding(null, distributionIdManager))
|
||||
}
|
||||
}
|
||||
|
||||
+55
-1
@@ -280,12 +280,66 @@ class DistributionIdManagerTest {
|
||||
assertEquals(true, subject.shouldSkipMarketingConsentScreen())
|
||||
|
||||
subject.setDistribution(DistributionIdManager.Distribution.AURA_001)
|
||||
assertEquals(false, subject.shouldSkipMarketingConsentScreen())
|
||||
assertEquals(true, subject.shouldSkipMarketingConsentScreen())
|
||||
|
||||
subject.setDistribution(DistributionIdManager.Distribution.XIAOMI_001)
|
||||
assertEquals(true, subject.shouldSkipMarketingConsentScreen())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `WHEN checking the distribution startup strategy THEN the correct strategy is returned`() =
|
||||
runBlocking {
|
||||
val subject = DistributionIdManager(
|
||||
packageManager = testContext.packageManagerWrapper,
|
||||
testBrowserStoreProvider,
|
||||
distributionProviderChecker = testDistributionProviderChecker,
|
||||
distributionSettings = testDistributionSettings,
|
||||
metricController = FakeMetricController(),
|
||||
)
|
||||
|
||||
subject.setDistribution(DistributionIdManager.Distribution.DEFAULT)
|
||||
assertEquals(
|
||||
DistributionAdjustStartupStrategy.NONE,
|
||||
subject.getDistributionAdjustStartupStrategy(),
|
||||
)
|
||||
|
||||
subject.setDistribution(DistributionIdManager.Distribution.VIVO_001)
|
||||
assertEquals(
|
||||
DistributionAdjustStartupStrategy.IMMEDIATE_WITH_COPPA,
|
||||
subject.getDistributionAdjustStartupStrategy(),
|
||||
)
|
||||
|
||||
subject.setDistribution(DistributionIdManager.Distribution.DT_001)
|
||||
assertEquals(
|
||||
DistributionAdjustStartupStrategy.IMMEDIATE_WITH_COPPA,
|
||||
subject.getDistributionAdjustStartupStrategy(),
|
||||
)
|
||||
|
||||
subject.setDistribution(DistributionIdManager.Distribution.DT_002)
|
||||
assertEquals(
|
||||
DistributionAdjustStartupStrategy.IMMEDIATE_WITH_COPPA,
|
||||
subject.getDistributionAdjustStartupStrategy(),
|
||||
)
|
||||
|
||||
subject.setDistribution(DistributionIdManager.Distribution.DT_003)
|
||||
assertEquals(
|
||||
DistributionAdjustStartupStrategy.IMMEDIATE_WITH_COPPA,
|
||||
subject.getDistributionAdjustStartupStrategy(),
|
||||
)
|
||||
|
||||
subject.setDistribution(DistributionIdManager.Distribution.AURA_001)
|
||||
assertEquals(
|
||||
DistributionAdjustStartupStrategy.IMMEDIATE_WITH_PLAY_STORE_KIDS,
|
||||
subject.getDistributionAdjustStartupStrategy(),
|
||||
)
|
||||
|
||||
subject.setDistribution(DistributionIdManager.Distribution.XIAOMI_001)
|
||||
assertEquals(
|
||||
DistributionAdjustStartupStrategy.IMMEDIATE_WITH_COPPA,
|
||||
subject.getDistributionAdjustStartupStrategy(),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `WHEN the provider is aura THEN the proper distribution ID is returned`() =
|
||||
runBlocking {
|
||||
|
||||
Reference in New Issue
Block a user