Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions ThirdPartyAdapters/ironsource/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
## IronSource Android Mediation Adapter Changelog

#### Next Version
- Maps `AgeRestrictedTreatment` to IronSource's `is_child_directed` metadata.

#### Version 9.4.2.0
- Verified compatibility with ironSource SDK version 9.4.2.

Expand Down
2 changes: 1 addition & 1 deletion ThirdPartyAdapters/ironsource/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

buildscript {
ext {
kotlinVersion = '2.1.10'
kotlinVersion = '2.3.0'
}
repositories {
google()
Expand Down
1 change: 1 addition & 0 deletions ThirdPartyAdapters/ironsource/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
android.useAndroidX=true
android.enableJetifier=true
org.gradle.jvmargs=-Xmx1g -Xms1g
android.jetifier.ignorelist=adquality-sdk
8 changes: 4 additions & 4 deletions ThirdPartyAdapters/ironsource/ironsource/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -125,14 +125,14 @@ dependencies {
implementation 'androidx.annotation:annotation:1.5.0'
// Check for a 'useNextGenGma' flag to use the next generation GMA SDK.
if (project.hasProperty('useNextGenGma')) {
implementation 'com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.0.1'
implementation 'com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.1.0'
} else {
implementation 'com.google.android.gms:play-services-ads:25.2.0'
implementation 'com.google.android.gms:play-services-ads:25.3.0'
}

testImplementation "org.jacoco:org.jacoco.core:$jacocoVersion"
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.jetbrains.kotlin:kotlin-stdlib:2.1.10'
testImplementation 'org.jetbrains.kotlin:kotlin-stdlib:2.3.0'
testImplementation 'com.google.truth:truth:1.1.5'
testImplementation 'androidx.test.ext:truth:1.6.0'
testImplementation 'androidx.test:core:1.5.0'
Expand All @@ -142,7 +142,7 @@ dependencies {
testImplementation 'androidx.test.ext:junit:1.1.5'
testImplementation 'org.mockito.kotlin:mockito-kotlin:5.1.0'
testImplementation project(':adaptertestkit')
testImplementation 'org.jetbrains.kotlin:kotlin-test:2.1.10'
testImplementation 'org.jetbrains.kotlin:kotlin-test:2.3.0'
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import com.google.android.gms.ads.AdError;
import com.google.android.gms.ads.AgeRestrictedTreatment;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.RequestConfiguration;
import com.google.android.gms.ads.VersionInfo;
Expand Down Expand Up @@ -382,7 +383,8 @@ private void configureIronSourcePrivacy() {
RequestConfiguration requestConfiguration = MobileAds.getRequestConfiguration();
if (requestConfiguration.getTagForChildDirectedTreatment()
== TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE
|| requestConfiguration.getTagForUnderAgeOfConsent() == TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE) {
|| requestConfiguration.getTagForUnderAgeOfConsent() == TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE
|| requestConfiguration.getAgeRestrictedTreatment() == AgeRestrictedTreatment.CHILD) {
LevelPlay.setMetaData("is_child_directed", "true");
} else if (requestConfiguration.getTagForChildDirectedTreatment()
== TAG_FOR_CHILD_DIRECTED_TREATMENT_FALSE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import com.google.ads.mediation.ironsource.IronSourceMediationAdapter.IRONSOURCE
import com.google.android.gms.ads.AdError
import com.google.android.gms.ads.AdFormat
import com.google.android.gms.ads.AdSize
import com.google.android.gms.ads.AgeRestrictedTreatment
import com.google.android.gms.ads.MobileAds
import com.google.android.gms.ads.RequestConfiguration
import com.google.android.gms.ads.mediation.InitializationCompleteCallback
Expand Down Expand Up @@ -96,6 +97,7 @@ class IronSourceMediationAdapterTest {
RequestConfiguration.TAG_FOR_CHILD_DIRECTED_TREATMENT_UNSPECIFIED
)
.setTagForUnderAgeOfConsent(RequestConfiguration.TAG_FOR_UNDER_AGE_OF_CONSENT_UNSPECIFIED)
.setAgeRestrictedTreatment(AgeRestrictedTreatment.UNSPECIFIED)
.build()
MobileAds.setRequestConfiguration(requestConfiguration)
adapter = IronSourceMediationAdapter(mediationUtils)
Expand Down Expand Up @@ -279,6 +281,57 @@ class IronSourceMediationAdapterTest {
mockStaticLevelPlay.close()
}

@Test
fun initialize_withAgeRestrictedTreatmentChild_setsLevelPlayMetaDataToTrue() {
val requestConfiguration =
RequestConfiguration.Builder().setAgeRestrictedTreatment(AgeRestrictedTreatment.CHILD).build()
MobileAds.setRequestConfiguration(requestConfiguration)
val mockStaticLevelPlay = mockStatic(LevelPlay::class.java)
mockStatic(IronSourceAds::class.java).use { _ ->
val mediationConfiguration =
createMediationConfiguration(
AdFormat.BANNER,
serverParameters = bundleOf(KEY_APP_KEY to TEST_APP_ID_1),
)

adapter.initialize(
context,
mockInitializationCompleteCallback,
listOf(mediationConfiguration),
)

mockStaticLevelPlay.verify { LevelPlay.setMetaData("is_child_directed", "true") }
}
mockStaticLevelPlay.close()
}

@Test
fun initialize_withAgeRestrictedTreatmentTeen_doesNotChangeLevelPlayMetaData() {
val requestConfiguration =
RequestConfiguration.Builder().setAgeRestrictedTreatment(AgeRestrictedTreatment.TEEN).build()
MobileAds.setRequestConfiguration(requestConfiguration)
val mockStaticLevelPlay = mockStatic(LevelPlay::class.java)
mockStatic(IronSourceAds::class.java).use { _ ->
val mediationConfiguration =
createMediationConfiguration(
AdFormat.BANNER,
serverParameters = bundleOf(KEY_APP_KEY to TEST_APP_ID_1),
)

adapter.initialize(
context,
mockInitializationCompleteCallback,
listOf(mediationConfiguration),
)

mockStaticLevelPlay.verify(
{ LevelPlay.setMetaData(eq("is_child_directed"), any<String>()) },
never(),
)
}
mockStaticLevelPlay.close()
}

@Test
fun initialize_withMediationConfigurations_invokesOnInitializationSucceeded() {
val mockStaticLevelPlay = mockStatic(LevelPlay::class.java)
Expand Down
Loading