Skip to content

Commit c42a707

Browse files
Mobile Ads Developer Relationscopybara-github
authored andcommitted
Maps AgeRestrictedTreatment to IronSource's is_child_directed metadata.
PiperOrigin-RevId: 922240983
1 parent 60f2167 commit c42a707

5 files changed

Lines changed: 64 additions & 6 deletions

File tree

ThirdPartyAdapters/ironsource/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
## IronSource Android Mediation Adapter Changelog
22

3+
#### Next Version
4+
- Maps `AgeRestrictedTreatment` to IronSource's `is_child_directed` metadata.
5+
36
#### Version 9.4.2.0
47
- Verified compatibility with ironSource SDK version 9.4.2.
58

ThirdPartyAdapters/ironsource/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
buildscript {
44
ext {
5-
kotlinVersion = '2.1.10'
5+
kotlinVersion = '2.3.0'
66
}
77
repositories {
88
google()

ThirdPartyAdapters/ironsource/ironsource/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,14 +125,14 @@ dependencies {
125125
implementation 'androidx.annotation:annotation:1.5.0'
126126
// Check for a 'useNextGenGma' flag to use the next generation GMA SDK.
127127
if (project.hasProperty('useNextGenGma')) {
128-
implementation 'com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.0.1'
128+
implementation 'com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.1.0'
129129
} else {
130-
implementation 'com.google.android.gms:play-services-ads:25.2.0'
130+
implementation 'com.google.android.gms:play-services-ads:25.3.0'
131131
}
132132

133133
testImplementation "org.jacoco:org.jacoco.core:$jacocoVersion"
134134
testImplementation 'junit:junit:4.13.2'
135-
testImplementation 'org.jetbrains.kotlin:kotlin-stdlib:2.1.10'
135+
testImplementation 'org.jetbrains.kotlin:kotlin-stdlib:2.3.0'
136136
testImplementation 'com.google.truth:truth:1.1.5'
137137
testImplementation 'androidx.test.ext:truth:1.6.0'
138138
testImplementation 'androidx.test:core:1.5.0'
@@ -142,7 +142,7 @@ dependencies {
142142
testImplementation 'androidx.test.ext:junit:1.1.5'
143143
testImplementation 'org.mockito.kotlin:mockito-kotlin:5.1.0'
144144
testImplementation project(':adaptertestkit')
145-
testImplementation 'org.jetbrains.kotlin:kotlin-test:2.1.10'
145+
testImplementation 'org.jetbrains.kotlin:kotlin-test:2.3.0'
146146
}
147147

148148
/**

ThirdPartyAdapters/ironsource/ironsource/src/main/java/com/google/ads/mediation/ironsource/IronSourceMediationAdapter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import androidx.annotation.NonNull;
3131
import androidx.annotation.VisibleForTesting;
3232
import com.google.android.gms.ads.AdError;
33+
import com.google.android.gms.ads.AgeRestrictedTreatment;
3334
import com.google.android.gms.ads.MobileAds;
3435
import com.google.android.gms.ads.RequestConfiguration;
3536
import com.google.android.gms.ads.VersionInfo;
@@ -382,7 +383,8 @@ private void configureIronSourcePrivacy() {
382383
RequestConfiguration requestConfiguration = MobileAds.getRequestConfiguration();
383384
if (requestConfiguration.getTagForChildDirectedTreatment()
384385
== TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE
385-
|| requestConfiguration.getTagForUnderAgeOfConsent() == TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE) {
386+
|| requestConfiguration.getTagForUnderAgeOfConsent() == TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE
387+
|| requestConfiguration.getAgeRestrictedTreatment() == AgeRestrictedTreatment.CHILD) {
386388
LevelPlay.setMetaData("is_child_directed", "true");
387389
} else if (requestConfiguration.getTagForChildDirectedTreatment()
388390
== TAG_FOR_CHILD_DIRECTED_TREATMENT_FALSE

ThirdPartyAdapters/ironsource/ironsource/src/test/kotlin/com/google/ads/mediation/ironsource/IronSourceMediationAdapterTest.kt

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import com.google.ads.mediation.ironsource.IronSourceMediationAdapter.IRONSOURCE
3232
import com.google.android.gms.ads.AdError
3333
import com.google.android.gms.ads.AdFormat
3434
import com.google.android.gms.ads.AdSize
35+
import com.google.android.gms.ads.AgeRestrictedTreatment
3536
import com.google.android.gms.ads.MobileAds
3637
import com.google.android.gms.ads.RequestConfiguration
3738
import com.google.android.gms.ads.mediation.InitializationCompleteCallback
@@ -96,6 +97,7 @@ class IronSourceMediationAdapterTest {
9697
RequestConfiguration.TAG_FOR_CHILD_DIRECTED_TREATMENT_UNSPECIFIED
9798
)
9899
.setTagForUnderAgeOfConsent(RequestConfiguration.TAG_FOR_UNDER_AGE_OF_CONSENT_UNSPECIFIED)
100+
.setAgeRestrictedTreatment(AgeRestrictedTreatment.UNSPECIFIED)
99101
.build()
100102
MobileAds.setRequestConfiguration(requestConfiguration)
101103
adapter = IronSourceMediationAdapter(mediationUtils)
@@ -279,6 +281,57 @@ class IronSourceMediationAdapterTest {
279281
mockStaticLevelPlay.close()
280282
}
281283

284+
@Test
285+
fun initialize_withAgeRestrictedTreatmentChild_setsLevelPlayMetaDataToTrue() {
286+
val requestConfiguration =
287+
RequestConfiguration.Builder().setAgeRestrictedTreatment(AgeRestrictedTreatment.CHILD).build()
288+
MobileAds.setRequestConfiguration(requestConfiguration)
289+
val mockStaticLevelPlay = mockStatic(LevelPlay::class.java)
290+
mockStatic(IronSourceAds::class.java).use { _ ->
291+
val mediationConfiguration =
292+
createMediationConfiguration(
293+
AdFormat.BANNER,
294+
serverParameters = bundleOf(KEY_APP_KEY to TEST_APP_ID_1),
295+
)
296+
297+
adapter.initialize(
298+
context,
299+
mockInitializationCompleteCallback,
300+
listOf(mediationConfiguration),
301+
)
302+
303+
mockStaticLevelPlay.verify { LevelPlay.setMetaData("is_child_directed", "true") }
304+
}
305+
mockStaticLevelPlay.close()
306+
}
307+
308+
@Test
309+
fun initialize_withAgeRestrictedTreatmentTeen_doesNotChangeLevelPlayMetaData() {
310+
val requestConfiguration =
311+
RequestConfiguration.Builder().setAgeRestrictedTreatment(AgeRestrictedTreatment.TEEN).build()
312+
MobileAds.setRequestConfiguration(requestConfiguration)
313+
val mockStaticLevelPlay = mockStatic(LevelPlay::class.java)
314+
mockStatic(IronSourceAds::class.java).use { _ ->
315+
val mediationConfiguration =
316+
createMediationConfiguration(
317+
AdFormat.BANNER,
318+
serverParameters = bundleOf(KEY_APP_KEY to TEST_APP_ID_1),
319+
)
320+
321+
adapter.initialize(
322+
context,
323+
mockInitializationCompleteCallback,
324+
listOf(mediationConfiguration),
325+
)
326+
327+
mockStaticLevelPlay.verify(
328+
{ LevelPlay.setMetaData(eq("is_child_directed"), any<String>()) },
329+
never(),
330+
)
331+
}
332+
mockStaticLevelPlay.close()
333+
}
334+
282335
@Test
283336
fun initialize_withMediationConfigurations_invokesOnInitializationSucceeded() {
284337
val mockStaticLevelPlay = mockStatic(LevelPlay::class.java)

0 commit comments

Comments
 (0)