diff --git a/play-services-ads-api/core/src/main/kotlin/com/google/android/gms/ads/AdLoaderBuilderCreatorImpl.kt b/play-services-ads-api/core/src/main/kotlin/com/google/android/gms/ads/AdLoaderBuilderCreatorImpl.kt index 819c381bf..a42081b24 100644 --- a/play-services-ads-api/core/src/main/kotlin/com/google/android/gms/ads/AdLoaderBuilderCreatorImpl.kt +++ b/play-services-ads-api/core/src/main/kotlin/com/google/android/gms/ads/AdLoaderBuilderCreatorImpl.kt @@ -8,6 +8,7 @@ import android.os.IBinder import android.os.Parcel import android.util.Log import androidx.annotation.Keep +import com.google.android.gms.ads.internal.client.IAdLoaderBuilder import com.google.android.gms.ads.internal.client.IAdLoaderBuilderCreator import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator import com.google.android.gms.dynamic.IObjectWrapper @@ -17,7 +18,7 @@ private const val TAG = "AdLoaderBuilder" @Keep open class AdLoaderBuilderCreatorImpl : IAdLoaderBuilderCreator.Stub() { - override fun newAdLoaderBuilder(context: IObjectWrapper?, adUnitId: String, adapterCreator: IAdapterCreator?, clientVersion: Int): IBinder? { + override fun newAdLoaderBuilder(context: IObjectWrapper?, adUnitId: String, adapterCreator: IAdapterCreator?, clientVersion: Int): IAdLoaderBuilder? { Log.d(TAG, "newAdLoaderBuilder: adUnitId=$adUnitId clientVersion=$clientVersion") return LegacyAdLoaderBuilder() } diff --git a/play-services-ads-api/core/src/main/kotlin/com/google/android/gms/ads/AdManagerCreatorImpl.kt b/play-services-ads-api/core/src/main/kotlin/com/google/android/gms/ads/AdManagerCreatorImpl.kt index acf658531..bb51242bd 100644 --- a/play-services-ads-api/core/src/main/kotlin/com/google/android/gms/ads/AdManagerCreatorImpl.kt +++ b/play-services-ads-api/core/src/main/kotlin/com/google/android/gms/ads/AdManagerCreatorImpl.kt @@ -10,6 +10,7 @@ import android.os.Parcel import android.util.Log import androidx.annotation.Keep import com.google.android.gms.ads.internal.client.AdSizeParcel +import com.google.android.gms.ads.internal.client.IAdManager import com.google.android.gms.ads.internal.client.IAdManagerCreator import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator import com.google.android.gms.dynamic.IObjectWrapper @@ -20,12 +21,12 @@ private const val TAG = "AdManagerCreator" @Keep open class AdManagerCreatorImpl : IAdManagerCreator.Stub() { - override fun newAdManager(context: IObjectWrapper?, adSize: AdSizeParcel?, adUnitId: String?, adapterCreator: IAdapterCreator?, clientVersion: Int): IBinder { + override fun newAdManager(context: IObjectWrapper?, adSize: AdSizeParcel?, adUnitId: String?, adapterCreator: IAdapterCreator?, clientVersion: Int): IAdManager { Log.d(TAG, "newAdManager: adUnitId=$adUnitId clientVersion=$clientVersion") return LegacyAdManager(ObjectWrapper.unwrap(context) as? Context) } - override fun newAdManagerByType(context: IObjectWrapper?, adSize: AdSizeParcel?, adUnitId: String?, adapterCreator: IAdapterCreator?, clientVersion: Int, type: Int): IBinder { + override fun newAdManagerByType(context: IObjectWrapper?, adSize: AdSizeParcel?, adUnitId: String?, adapterCreator: IAdapterCreator?, clientVersion: Int, type: Int): IAdManager { Log.d(TAG, "newAdManagerByType: adUnitId=$adUnitId clientVersion=$clientVersion type=$type") return LegacyAdManager(ObjectWrapper.unwrap(context) as? Context) } diff --git a/play-services-ads-api/core/src/main/kotlin/com/google/android/gms/ads/LegacyAdLoaderBuilder.kt b/play-services-ads-api/core/src/main/kotlin/com/google/android/gms/ads/LegacyAdLoaderBuilder.kt index 0c3d392fb..ea9311570 100644 --- a/play-services-ads-api/core/src/main/kotlin/com/google/android/gms/ads/LegacyAdLoaderBuilder.kt +++ b/play-services-ads-api/core/src/main/kotlin/com/google/android/gms/ads/LegacyAdLoaderBuilder.kt @@ -27,18 +27,18 @@ private const val TAG = "LegacyAdLoader" internal class LegacyAdLoaderBuilder : IAdLoaderBuilder.Stub() { override fun build(): IAdLoader = LegacyAdLoader - override fun setAdListener(listener: IAdListener?) = Unit - override fun setAppInstallAdLoadedListener(listener: IOnAppInstallAdLoadedListener?) = Unit - override fun setContentAdLoadedListener(listener: IOnContentAdLoadedListener?) = Unit + override fun withAdListener(listener: IAdListener?) = Unit + override fun withAppInstallAdLoadedListener(listener: IOnAppInstallAdLoadedListener?) = Unit + override fun withContentAdLoadedListener(listener: IOnContentAdLoadedListener?) = Unit override fun forCustomFormatAd(templateId: String?, onCustomFormatAdLoadedListener: IOnCustomTemplateAdLoadedListener?, onCustomClickListener: IOnCustomClickListener?) = Unit - override fun setNativeAdOptions(options: NativeAdOptionsParcel?) = Unit - override fun setCorrelationIdProvider(provider: ICorrelationIdProvider?) = Unit - override fun forPublisherAdView(onPublisherAdViewLoadedListener: IOnPublisherAdViewLoadedListener?, adSize: AdSizeParcel?) = Unit - override fun setPublisherAdViewOptions(options: PublisherAdViewOptions?) = Unit - override fun setUnifiedNativeAdLoadedListener(listener: IOnUnifiedNativeAdLoadedListener?) = Unit + override fun withNativeAdOptions(options: NativeAdOptionsParcel?) = Unit + override fun withCorrelationIdProvider(provider: ICorrelationIdProvider?) = Unit + override fun forAdView(onPublisherAdViewLoadedListener: IOnPublisherAdViewLoadedListener?, adSize: AdSizeParcel?) = Unit + override fun withPublisherAdViewOptions(options: PublisherAdViewOptions?) = Unit + override fun forNativeAd(listener: IOnUnifiedNativeAdLoadedListener?) = Unit override fun forInstreamAd(config: InstreamAdConfigurationParcel?) = Unit override fun setInstreamAdLoadCallback(callback: IInstreamAdLoadCallback?) = Unit - override fun setAdManagerAdViewOptions(options: AdManagerAdViewOptions?) = Unit + override fun withAdManagerAdViewOptions(options: AdManagerAdViewOptions?) = Unit } private object LegacyAdLoader : IAdLoader.Stub() { diff --git a/play-services-ads-api/core/src/main/kotlin/com/google/android/gms/ads/MobileAdsSettingManagerCreatorImpl.kt b/play-services-ads-api/core/src/main/kotlin/com/google/android/gms/ads/MobileAdsSettingManagerCreatorImpl.kt index 05866e8df..450ddd036 100644 --- a/play-services-ads-api/core/src/main/kotlin/com/google/android/gms/ads/MobileAdsSettingManagerCreatorImpl.kt +++ b/play-services-ads-api/core/src/main/kotlin/com/google/android/gms/ads/MobileAdsSettingManagerCreatorImpl.kt @@ -9,6 +9,7 @@ import android.os.IBinder import android.os.Parcel import android.util.Log import androidx.annotation.Keep +import com.google.android.gms.ads.internal.client.IMobileAdsSettingManager import com.google.android.gms.ads.internal.client.IMobileAdsSettingManagerCreator import com.google.android.gms.dynamic.IObjectWrapper import com.google.android.gms.dynamic.ObjectWrapper @@ -19,7 +20,7 @@ private const val TAG = "AdsSettingManager" @Keep open class MobileAdsSettingManagerCreatorImpl : IMobileAdsSettingManagerCreator.Stub() { - override fun getMobileAdsSettingManager(context: IObjectWrapper?, clientVersion: Int): IBinder { + override fun getMobileAdsSettingManager(context: IObjectWrapper?, clientVersion: Int): IMobileAdsSettingManager { Log.d(TAG, "getMobileAdsSettingManager($clientVersion)") return MobileAdsSettingManagerImpl(ObjectWrapper.unwrap(context) as Context) } diff --git a/play-services-ads-api/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoaderBuilder.aidl b/play-services-ads-api/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoaderBuilder.aidl index f619b95fa..b40cc5178 100644 --- a/play-services-ads-api/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoaderBuilder.aidl +++ b/play-services-ads-api/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoaderBuilder.aidl @@ -23,16 +23,16 @@ import com.google.android.gms.ads.formats.AdManagerAdViewOptions; interface IAdLoaderBuilder { IAdLoader build() = 0; - void setAdListener(IAdListener listener) = 1; - void setAppInstallAdLoadedListener(IOnAppInstallAdLoadedListener listener) = 2; - void setContentAdLoadedListener(IOnContentAdLoadedListener listener) = 3; - void forCustomFormatAd(String templateId, IOnCustomTemplateAdLoadedListener onCustomFormatAdLoadedListener, IOnCustomClickListener onCustomClickListener) = 4; - void setNativeAdOptions(in NativeAdOptionsParcel options) = 5; - void setCorrelationIdProvider(ICorrelationIdProvider provider) = 6; - void forPublisherAdView(IOnPublisherAdViewLoadedListener onPublisherAdViewLoadedListener, in AdSizeParcel adSize) = 7; - void setPublisherAdViewOptions(in PublisherAdViewOptions options) = 8; - void setUnifiedNativeAdLoadedListener(IOnUnifiedNativeAdLoadedListener listener) = 9; + void withAdListener(IAdListener listener) = 1; + void withAppInstallAdLoadedListener(IOnAppInstallAdLoadedListener listener) = 2; + void withContentAdLoadedListener(IOnContentAdLoadedListener listener) = 3; + void forCustomFormatAd(String customFormatId, IOnCustomTemplateAdLoadedListener onCustomFormatAdLoadedListener, IOnCustomClickListener onCustomClickListener) = 4; + void withNativeAdOptions(in NativeAdOptionsParcel options) = 5; + void withCorrelationIdProvider(ICorrelationIdProvider provider) = 6; + void forAdView(IOnPublisherAdViewLoadedListener onPublisherAdViewLoadedListener, in AdSizeParcel adSize) = 7; + void withPublisherAdViewOptions(in PublisherAdViewOptions options) = 8; + void forNativeAd(IOnUnifiedNativeAdLoadedListener listener) = 9; void forInstreamAd(in InstreamAdConfigurationParcel config) = 12; void setInstreamAdLoadCallback(IInstreamAdLoadCallback callback) = 13; - void setAdManagerAdViewOptions(in AdManagerAdViewOptions options) = 14; + void withAdManagerAdViewOptions(in AdManagerAdViewOptions options) = 14; } diff --git a/play-services-ads-api/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoaderBuilderCreator.aidl b/play-services-ads-api/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoaderBuilderCreator.aidl index b6f63ac33..baa9758f6 100644 --- a/play-services-ads-api/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoaderBuilderCreator.aidl +++ b/play-services-ads-api/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoaderBuilderCreator.aidl @@ -1,8 +1,9 @@ package com.google.android.gms.ads.internal.client; +import com.google.android.gms.ads.internal.client.IAdLoaderBuilder; import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator; import com.google.android.gms.dynamic.IObjectWrapper; interface IAdLoaderBuilderCreator { - IBinder newAdLoaderBuilder(IObjectWrapper context, String adUnitId, IAdapterCreator adapterCreator, int clientVersion); + IAdLoaderBuilder newAdLoaderBuilder(IObjectWrapper context, String adUnitId, IAdapterCreator adapterCreator, int clientVersion); } \ No newline at end of file diff --git a/play-services-ads-api/src/main/aidl/com/google/android/gms/ads/internal/client/IAdManagerCreator.aidl b/play-services-ads-api/src/main/aidl/com/google/android/gms/ads/internal/client/IAdManagerCreator.aidl index 1aa74901d..4446547d2 100644 --- a/play-services-ads-api/src/main/aidl/com/google/android/gms/ads/internal/client/IAdManagerCreator.aidl +++ b/play-services-ads-api/src/main/aidl/com/google/android/gms/ads/internal/client/IAdManagerCreator.aidl @@ -6,10 +6,11 @@ package com.google.android.gms.ads.internal.client; import com.google.android.gms.ads.internal.client.AdSizeParcel; +import com.google.android.gms.ads.internal.client.IAdManager; import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator; import com.google.android.gms.dynamic.IObjectWrapper; interface IAdManagerCreator { - IBinder newAdManager(IObjectWrapper context, in AdSizeParcel adSize, String adUnitId, IAdapterCreator adapterCreator, int clientVersion) = 0; - IBinder newAdManagerByType(IObjectWrapper context, in AdSizeParcel adSize, String adUnitId, IAdapterCreator adapterCreator, int clientVersion, int type) = 1; + IAdManager newAdManager(IObjectWrapper context, in AdSizeParcel adSize, String adUnitId, IAdapterCreator adapterCreator, int clientVersion) = 0; + IAdManager newAdManagerByType(IObjectWrapper context, in AdSizeParcel adSize, String adUnitId, IAdapterCreator adapterCreator, int clientVersion, int type) = 1; } diff --git a/play-services-ads-api/src/main/aidl/com/google/android/gms/ads/internal/client/IMobileAdsSettingManagerCreator.aidl b/play-services-ads-api/src/main/aidl/com/google/android/gms/ads/internal/client/IMobileAdsSettingManagerCreator.aidl index f46820074..f68ce14c2 100644 --- a/play-services-ads-api/src/main/aidl/com/google/android/gms/ads/internal/client/IMobileAdsSettingManagerCreator.aidl +++ b/play-services-ads-api/src/main/aidl/com/google/android/gms/ads/internal/client/IMobileAdsSettingManagerCreator.aidl @@ -1,7 +1,8 @@ package com.google.android.gms.ads.internal.client; +import com.google.android.gms.ads.internal.client.IMobileAdsSettingManager; import com.google.android.gms.dynamic.IObjectWrapper; interface IMobileAdsSettingManagerCreator { - IBinder getMobileAdsSettingManager(IObjectWrapper context, int clientVersion); + IMobileAdsSettingManager getMobileAdsSettingManager(IObjectWrapper context, int clientVersion); } \ No newline at end of file diff --git a/play-services-ads-api/src/main/java/com/google/android/gms/ads/AdLoader.java b/play-services-ads-api/src/main/java/com/google/android/gms/ads/AdLoader.java new file mode 100644 index 000000000..9232de3d2 --- /dev/null +++ b/play-services-ads-api/src/main/java/com/google/android/gms/ads/AdLoader.java @@ -0,0 +1,9 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads; + +public class AdLoader { +} diff --git a/play-services-ads-api/src/main/java/com/google/android/gms/ads/formats/AdManagerAdViewOptions.java b/play-services-ads-api/src/main/java/com/google/android/gms/ads/formats/AdManagerAdViewOptions.java index 6adb37a7b..f04671e55 100644 --- a/play-services-ads-api/src/main/java/com/google/android/gms/ads/formats/AdManagerAdViewOptions.java +++ b/play-services-ads-api/src/main/java/com/google/android/gms/ads/formats/AdManagerAdViewOptions.java @@ -1,23 +1,40 @@ /* * SPDX-FileCopyrightText: 2026 microG Project Team * SPDX-License-Identifier: Apache-2.0 + * Notice: Portions of this file are reproduced from work created and shared by Google and used + * according to terms described in the Creative Commons 4.0 Attribution License. + * See https://developers.google.com/readme/policies for details. */ package com.google.android.gms.ads.formats; import android.os.Parcel; import androidx.annotation.NonNull; + +import com.google.android.gms.ads.AdLoader; import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable; import com.google.android.gms.common.internal.safeparcel.SafeParcelable; import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter; /** - * Ad Manager ad view options passed to {@code IAdLoaderBuilder.setAdManagerAdViewOptions}. + * Options to configure Google Ad Manager banner requests using an {@link AdLoader}. */ @SafeParcelable.Class public final class AdManagerAdViewOptions extends AbstractSafeParcelable { @Field(1) - public boolean manualImpressionsEnabled; + public final boolean manualImpressionsEnabled; + + @Constructor + AdManagerAdViewOptions(@Param(1) boolean manualImpressionsEnabled) { + this.manualImpressionsEnabled = manualImpressionsEnabled; + } + + /** + * Returns {@code true} if manual impression reporting is enabled. + */ + public boolean getManualImpressionsEnabled() { + return manualImpressionsEnabled; + } @Override public void writeToParcel(@NonNull Parcel dest, int flags) { diff --git a/play-services-ads-api/src/main/java/com/google/android/gms/ads/internal/RequestConfigurationParcel.java b/play-services-ads-api/src/main/java/com/google/android/gms/ads/internal/RequestConfigurationParcel.java index f773f3486..1e660fb6a 100644 --- a/play-services-ads-api/src/main/java/com/google/android/gms/ads/internal/RequestConfigurationParcel.java +++ b/play-services-ads-api/src/main/java/com/google/android/gms/ads/internal/RequestConfigurationParcel.java @@ -5,8 +5,31 @@ package com.google.android.gms.ads.internal; -import org.microg.safeparcel.AutoSafeParcelable; +import android.os.Parcel; -public class RequestConfigurationParcel extends AutoSafeParcelable { - public static final Creator CREATOR = new AutoCreator<>(RequestConfigurationParcel.class); +import androidx.annotation.NonNull; + +import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelable; +import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter; + +@SafeParcelable.Class +public class RequestConfigurationParcel extends AbstractSafeParcelable { + @Field(1) + public final int tagForChildDirectedTreatment; + @Field(2) + public final int tagForUnderAgeOfConsent; + + @Constructor + RequestConfigurationParcel(@Param(1) int tagForChildDirectedTreatment, @Param(2) int tagForUnderAgeOfConsent) { + this.tagForChildDirectedTreatment = tagForChildDirectedTreatment; + this.tagForUnderAgeOfConsent = tagForUnderAgeOfConsent; + } + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(RequestConfigurationParcel.class); }