From aab313ad1c8f60756e0c1e38e1c68aaf4404e513 Mon Sep 17 00:00:00 2001 From: Mobile Ads Developer Relations Date: Wed, 27 May 2026 11:44:42 -0700 Subject: [PATCH] Maps `AgeRestrictedTreatment` to Line's ChildDirectedTreatment API. PiperOrigin-RevId: 922258576 --- ThirdPartyAdapters/line/CHANGELOG.md | 3 ++ ThirdPartyAdapters/line/build.gradle | 2 +- ThirdPartyAdapters/line/line/build.gradle | 8 ++--- .../ads/mediation/line/LineInitializer.kt | 4 ++- .../line/LineMediationAdapterTest.kt | 36 +++++++++++++++++++ 5 files changed, 47 insertions(+), 6 deletions(-) diff --git a/ThirdPartyAdapters/line/CHANGELOG.md b/ThirdPartyAdapters/line/CHANGELOG.md index 7dec9fe78..b7bd1bb71 100644 --- a/ThirdPartyAdapters/line/CHANGELOG.md +++ b/ThirdPartyAdapters/line/CHANGELOG.md @@ -1,5 +1,8 @@ ## LINE Android Mediation Adapter Changelog +#### Next Version +- Maps `AgeRestrictedTreatment` to Line's ChildDirectedTreatment API. + #### Version 3.1.1.0 (In progress) #### Version 3.1.0.0 diff --git a/ThirdPartyAdapters/line/build.gradle b/ThirdPartyAdapters/line/build.gradle index 1c38e0b20..c43e1dccd 100644 --- a/ThirdPartyAdapters/line/build.gradle +++ b/ThirdPartyAdapters/line/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext { - kotlinVersion = '2.1.10' + kotlinVersion = '2.3.0' } repositories { google() diff --git a/ThirdPartyAdapters/line/line/build.gradle b/ThirdPartyAdapters/line/line/build.gradle index 12c71aa94..20287db7f 100644 --- a/ThirdPartyAdapters/line/line/build.gradle +++ b/ThirdPartyAdapters/line/line/build.gradle @@ -136,16 +136,16 @@ dependencies { implementation 'androidx.core:core-ktx:1.8.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' } implementation 'com.linecorp.adsnetwork:fivead:3.1.1' - implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.1.0' + implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.3.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1' testImplementation 'junit:junit:4.13.2' testImplementation 'androidx.test:core:1.5.0' - testImplementation 'org.jetbrains.kotlin:kotlin-stdlib:2.1.10' + testImplementation 'org.jetbrains.kotlin:kotlin-stdlib:2.3.0' testImplementation 'org.mockito:mockito-core:5.5.0' testImplementation "org.jacoco:org.jacoco.core:$jacocoVersion" testImplementation 'androidx.test.ext:junit-ktx:1.1.5' diff --git a/ThirdPartyAdapters/line/line/src/main/java/com/google/ads/mediation/line/LineInitializer.kt b/ThirdPartyAdapters/line/line/src/main/java/com/google/ads/mediation/line/LineInitializer.kt index e92016723..e8aa444bb 100644 --- a/ThirdPartyAdapters/line/line/src/main/java/com/google/ads/mediation/line/LineInitializer.kt +++ b/ThirdPartyAdapters/line/line/src/main/java/com/google/ads/mediation/line/LineInitializer.kt @@ -18,6 +18,7 @@ import android.content.Context import androidx.annotation.VisibleForTesting import com.five_corp.ad.FiveAdConfig import com.five_corp.ad.NeedChildDirectedTreatment +import com.google.android.gms.ads.AgeRestrictedTreatment import com.google.android.gms.ads.MobileAds import com.google.android.gms.ads.RequestConfiguration @@ -49,7 +50,8 @@ object LineInitializer { requestConfiguration.tagForChildDirectedTreatment == RequestConfiguration.TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE || requestConfiguration.tagForUnderAgeOfConsent == - RequestConfiguration.TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE + RequestConfiguration.TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE || + requestConfiguration.ageRestrictedTreatment == AgeRestrictedTreatment.CHILD ) { fiveAdConfig?.needChildDirectedTreatment = NeedChildDirectedTreatment.TRUE } else if ( diff --git a/ThirdPartyAdapters/line/line/src/test/java/com/google/ads/mediation/line/LineMediationAdapterTest.kt b/ThirdPartyAdapters/line/line/src/test/java/com/google/ads/mediation/line/LineMediationAdapterTest.kt index ab9987b83..b83824781 100644 --- a/ThirdPartyAdapters/line/line/src/test/java/com/google/ads/mediation/line/LineMediationAdapterTest.kt +++ b/ThirdPartyAdapters/line/line/src/test/java/com/google/ads/mediation/line/LineMediationAdapterTest.kt @@ -31,6 +31,7 @@ import com.google.ads.mediation.line.LineMediationAdapter.Companion.SDK_ERROR_DO 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.VersionInfo @@ -368,6 +369,41 @@ class LineMediationAdapterTest { .isEqualTo(NeedChildDirectedTreatment.UNSPECIFIED) } + @Test + fun initialize_withAgeRestrictedTreatmentChild_configuresFiveAdSDKWithTrue() { + val requestConfiguration = + RequestConfiguration.Builder().setAgeRestrictedTreatment(AgeRestrictedTreatment.CHILD).build() + MobileAds.setRequestConfiguration(requestConfiguration) + val serverParameters = bundleOf(KEY_APP_ID to TEST_APP_ID_1) + val mediationConfiguration = createMediationConfiguration(AdFormat.BANNER, serverParameters) + + lineMediationAdapter.initialize( + context, + mockInitializationCompleteCallback, + listOf(mediationConfiguration), + ) + + assertThat(fiveAdConfig.needChildDirectedTreatment).isEqualTo(NeedChildDirectedTreatment.TRUE) + } + + @Test + fun initialize_withAgeRestrictedTreatmentTeen_configuresFiveAdSDKWithUnspecified() { + val requestConfiguration = + RequestConfiguration.Builder().setAgeRestrictedTreatment(AgeRestrictedTreatment.TEEN).build() + MobileAds.setRequestConfiguration(requestConfiguration) + val serverParameters = bundleOf(KEY_APP_ID to TEST_APP_ID_1) + val mediationConfiguration = createMediationConfiguration(AdFormat.BANNER, serverParameters) + + lineMediationAdapter.initialize( + context, + mockInitializationCompleteCallback, + listOf(mediationConfiguration), + ) + + assertThat(fiveAdConfig.needChildDirectedTreatment) + .isEqualTo(NeedChildDirectedTreatment.UNSPECIFIED) + } + @Test fun initialize_withTestModeTrue_configuresTestModeToTrueOnLineSdk() { val serverParameters = bundleOf(KEY_APP_ID to TEST_APP_ID_1)