From 96afe5957f5c59e7d434972aed162e8ff9099d30 Mon Sep 17 00:00:00 2001 From: DaVinci9196 <150454414+DaVinci9196@users.noreply.github.com> Date: Tue, 9 Jun 2026 03:46:47 +0800 Subject: [PATCH] AdMob: Add ChimeraCreator Impl (#3536) Co-authored-by: Marvin W --- play-services-ads-lite/build.gradle | 1 + .../gms/ads/AdLoaderBuilderCreatorImpl.kt | 2 +- .../android/gms/ads/AdManagerCreatorImpl.kt | 22 ++++++- .../ads/ChimeraAdLoaderBuilderCreatorImpl.kt | 18 ++++++ .../gms/ads/ChimeraAdManagerCreatorImpl.kt | 17 ++++++ ...imeraMobileAdsSettingManagerCreatorImpl.kt | 18 ++++++ .../android/gms/ads/LegacyAdLoaderBuilder.kt | 33 +++++++++-- .../google/android/gms/ads/LegacyAdManager.kt | 56 ++++++++++++++++++ .../ads/MobileAdsSettingManagerCreatorImpl.kt | 2 +- .../ads/formats/AdManagerAdViewOptions.aidl | 8 +++ .../ads/formats/PublisherAdViewOptions.aidl | 8 +++ .../gms/ads/internal/client/AdSizeParcel.aidl | 8 +++ .../ads/internal/client/AdValueParcel.aidl | 8 +++ .../ads/internal/client/IAdClickListener.aidl | 10 ++++ .../gms/ads/internal/client/IAdListener.aidl | 19 ++++++ .../ads/internal/client/IAdLoadCallback.aidl | 13 ++++ .../gms/ads/internal/client/IAdLoader.aidl | 7 +++ .../ads/internal/client/IAdLoaderBuilder.aidl | 33 ++++++++++- .../gms/ads/internal/client/IAdManager.aidl | 38 ++++++++++++ .../internal/client/IAdManagerCreator.aidl | 15 +++++ .../internal/client/IAppEventListener.aidl | 10 ++++ .../client/ICorrelationIdProvider.aidl | 10 ++++ .../client/IFullScreenContentCallback.aidl | 16 +++++ .../internal/client/IOnPaidEventListener.aidl | 11 +++- .../ads/internal/client/IVideoController.aidl | 24 ++++++++ .../client/IVideoLifecycleCallbacks.aidl | 14 +++++ .../formats/NativeAdOptionsParcel.aidl | 8 +++ .../formats/client/IAttributionInfo.aidl | 14 +++++ .../formats/client/INativeAdImage.aidl | 17 ++++++ .../formats/client/INativeAppInstallAd.aidl | 28 +++++++++ .../formats/client/INativeContentAd.aidl | 26 ++++++++ .../client/INativeCustomTemplateAd.aidl | 22 +++++++ .../client/IOnAppInstallAdLoadedListener.aidl | 12 ++++ .../client/IOnContentAdLoadedListener.aidl | 12 ++++ .../client/IOnCustomClickListener.aidl | 12 ++++ .../IOnCustomTemplateAdLoadedListener.aidl | 12 ++++ .../IOnPublisherAdViewLoadedListener.aidl | 12 ++++ .../IOnUnifiedNativeAdLoadedListener.aidl | 12 ++++ .../formats/client/IUnifiedNativeAd.aidl | 36 +++++++++++ .../InstreamAdConfigurationParcel.aidl | 8 +++ .../internal/instream/client/IInstreamAd.aidl | 14 +++++ .../client/IInstreamAdLoadCallback.aidl | 13 ++++ .../ads/formats/AdManagerAdViewOptions.java | 28 +++++++++ .../ads/formats/PublisherAdViewOptions.java | 34 +++++++++++ .../gms/ads/internal/client/AdSizeParcel.java | 59 +++++++++++++++++++ .../ads/internal/client/AdValueParcel.java | 34 +++++++++++ .../internal/client/VideoOptionsParcel.java | 32 ++++++++++ .../formats/NativeAdOptionsParcel.java | 49 +++++++++++++++ .../InstreamAdConfigurationParcel.java | 34 +++++++++++ 49 files changed, 937 insertions(+), 12 deletions(-) create mode 100644 play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/ChimeraAdLoaderBuilderCreatorImpl.kt create mode 100644 play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/ChimeraAdManagerCreatorImpl.kt create mode 100644 play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/ChimeraMobileAdsSettingManagerCreatorImpl.kt create mode 100644 play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/LegacyAdManager.kt create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/formats/AdManagerAdViewOptions.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/formats/PublisherAdViewOptions.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/AdSizeParcel.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/AdValueParcel.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdClickListener.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdListener.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoadCallback.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdManager.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdManagerCreator.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAppEventListener.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/ICorrelationIdProvider.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IFullScreenContentCallback.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IVideoController.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IVideoLifecycleCallbacks.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/NativeAdOptionsParcel.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IAttributionInfo.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/INativeAdImage.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/INativeAppInstallAd.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/INativeContentAd.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/INativeCustomTemplateAd.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnAppInstallAdLoadedListener.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnContentAdLoadedListener.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnCustomClickListener.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnCustomTemplateAdLoadedListener.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnPublisherAdViewLoadedListener.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnUnifiedNativeAdLoadedListener.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IUnifiedNativeAd.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/instream/InstreamAdConfigurationParcel.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/instream/client/IInstreamAd.aidl create mode 100644 play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/instream/client/IInstreamAdLoadCallback.aidl create mode 100644 play-services-ads-lite/src/main/java/com/google/android/gms/ads/formats/AdManagerAdViewOptions.java create mode 100644 play-services-ads-lite/src/main/java/com/google/android/gms/ads/formats/PublisherAdViewOptions.java create mode 100644 play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/client/AdSizeParcel.java create mode 100644 play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/client/AdValueParcel.java create mode 100644 play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/client/VideoOptionsParcel.java create mode 100644 play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/formats/NativeAdOptionsParcel.java create mode 100644 play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/instream/InstreamAdConfigurationParcel.java diff --git a/play-services-ads-lite/build.gradle b/play-services-ads-lite/build.gradle index 1c8dbe17a..61742681f 100644 --- a/play-services-ads-lite/build.gradle +++ b/play-services-ads-lite/build.gradle @@ -37,6 +37,7 @@ dependencies { api 'androidx.work:work-runtime:2.7.0' api project(':play-services-ads-base') api project(':play-services-basement') + annotationProcessor project(':safe-parcel-processor') // api project(':play-services-measurement-sdk-api') // api project(':user-messaging-platform') } diff --git a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/AdLoaderBuilderCreatorImpl.kt b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/AdLoaderBuilderCreatorImpl.kt index d6f88b67b..819c381bf 100644 --- a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/AdLoaderBuilderCreatorImpl.kt +++ b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/AdLoaderBuilderCreatorImpl.kt @@ -16,7 +16,7 @@ import org.microg.gms.utils.warnOnTransactionIssues private const val TAG = "AdLoaderBuilder" @Keep -class AdLoaderBuilderCreatorImpl : IAdLoaderBuilderCreator.Stub() { +open class AdLoaderBuilderCreatorImpl : IAdLoaderBuilderCreator.Stub() { override fun newAdLoaderBuilder(context: IObjectWrapper?, adUnitId: String, adapterCreator: IAdapterCreator?, clientVersion: Int): IBinder? { Log.d(TAG, "newAdLoaderBuilder: adUnitId=$adUnitId clientVersion=$clientVersion") return LegacyAdLoaderBuilder() diff --git a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/AdManagerCreatorImpl.kt b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/AdManagerCreatorImpl.kt index 398956f8c..acf658531 100644 --- a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/AdManagerCreatorImpl.kt +++ b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/AdManagerCreatorImpl.kt @@ -4,14 +4,32 @@ */ package com.google.android.gms.ads +import android.content.Context +import android.os.IBinder 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.IAdManagerCreator +import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator +import com.google.android.gms.dynamic.IObjectWrapper +import com.google.android.gms.dynamic.ObjectWrapper import org.microg.gms.utils.warnOnTransactionIssues -private const val TAG = "AdManager" +private const val TAG = "AdManagerCreator" @Keep -class AdManagerCreatorImpl : AdManagerCreator.Stub() { +open class AdManagerCreatorImpl : IAdManagerCreator.Stub() { + override fun newAdManager(context: IObjectWrapper?, adSize: AdSizeParcel?, adUnitId: String?, adapterCreator: IAdapterCreator?, clientVersion: Int): IBinder { + 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 { + Log.d(TAG, "newAdManagerByType: adUnitId=$adUnitId clientVersion=$clientVersion type=$type") + return LegacyAdManager(ObjectWrapper.unwrap(context) as? Context) + } + override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean = warnOnTransactionIssues(code, reply, flags, TAG) { super.onTransact(code, data, reply, flags) } } diff --git a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/ChimeraAdLoaderBuilderCreatorImpl.kt b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/ChimeraAdLoaderBuilderCreatorImpl.kt new file mode 100644 index 000000000..6da9cbe7d --- /dev/null +++ b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/ChimeraAdLoaderBuilderCreatorImpl.kt @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ +package com.google.android.gms.ads + +import androidx.annotation.Keep + +/** + * Dynamite entry point for the native-ad (AdLoader) path. + * + * The AdMob SDK loads this class from the ads dynamite module by its fully-qualified name, so it must + * exist under this exact FQCN and implement `IAdLoaderBuilderCreator`. Behaviour is identical to + * [AdLoaderBuilderCreatorImpl], which is kept under its own name for SDKs that request the un-prefixed + * class. + */ +@Keep +class ChimeraAdLoaderBuilderCreatorImpl : AdLoaderBuilderCreatorImpl() diff --git a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/ChimeraAdManagerCreatorImpl.kt b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/ChimeraAdManagerCreatorImpl.kt new file mode 100644 index 000000000..aa42ba1b5 --- /dev/null +++ b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/ChimeraAdManagerCreatorImpl.kt @@ -0,0 +1,17 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ +package com.google.android.gms.ads + +import androidx.annotation.Keep + +/** + * Dynamite entry point for the banner/interstitial (AdManager) path. + * + * The AdMob SDK loads this class from the ads dynamite module by its fully-qualified name, so it must + * exist under this exact FQCN and implement `IAdManagerCreator`. Behaviour is identical to + * [AdManagerCreatorImpl], which is kept under its own name for SDKs that request the un-prefixed class. + */ +@Keep +class ChimeraAdManagerCreatorImpl : AdManagerCreatorImpl() diff --git a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/ChimeraMobileAdsSettingManagerCreatorImpl.kt b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/ChimeraMobileAdsSettingManagerCreatorImpl.kt new file mode 100644 index 000000000..1cd079794 --- /dev/null +++ b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/ChimeraMobileAdsSettingManagerCreatorImpl.kt @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ +package com.google.android.gms.ads + +import androidx.annotation.Keep + +/** + * Dynamite entry point for the Mobile Ads initialization / settings path. + * + * The AdMob SDK loads this class from the ads dynamite module by its fully-qualified name, so it must + * exist under this exact FQCN and implement `IMobileAdsSettingManagerCreator`. This is the entry point + * that gates ad initialization. Behaviour is identical to [MobileAdsSettingManagerCreatorImpl], which is + * kept under its own name for SDKs that request the un-prefixed class. + */ +@Keep +class ChimeraMobileAdsSettingManagerCreatorImpl : MobileAdsSettingManagerCreatorImpl() diff --git a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/LegacyAdLoaderBuilder.kt b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/LegacyAdLoaderBuilder.kt index 65d473793..0c3d392fb 100644 --- a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/LegacyAdLoaderBuilder.kt +++ b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/LegacyAdLoaderBuilder.kt @@ -4,26 +4,51 @@ */ package com.google.android.gms.ads -import android.os.IBinder import android.util.Log +import com.google.android.gms.ads.formats.AdManagerAdViewOptions +import com.google.android.gms.ads.formats.PublisherAdViewOptions import com.google.android.gms.ads.internal.AdRequestParcel +import com.google.android.gms.ads.internal.client.AdSizeParcel +import com.google.android.gms.ads.internal.client.IAdListener import com.google.android.gms.ads.internal.client.IAdLoader import com.google.android.gms.ads.internal.client.IAdLoaderBuilder +import com.google.android.gms.ads.internal.client.ICorrelationIdProvider +import com.google.android.gms.ads.internal.formats.NativeAdOptionsParcel +import com.google.android.gms.ads.internal.formats.client.IOnAppInstallAdLoadedListener +import com.google.android.gms.ads.internal.formats.client.IOnContentAdLoadedListener +import com.google.android.gms.ads.internal.formats.client.IOnCustomClickListener +import com.google.android.gms.ads.internal.formats.client.IOnCustomTemplateAdLoadedListener +import com.google.android.gms.ads.internal.formats.client.IOnPublisherAdViewLoadedListener +import com.google.android.gms.ads.internal.formats.client.IOnUnifiedNativeAdLoadedListener +import com.google.android.gms.ads.internal.instream.InstreamAdConfigurationParcel +import com.google.android.gms.ads.internal.instream.client.IInstreamAdLoadCallback private const val TAG = "LegacyAdLoader" internal class LegacyAdLoaderBuilder : IAdLoaderBuilder.Stub() { override fun build(): IAdLoader = LegacyAdLoader - override fun setAdListener(listener: IBinder?) = Unit - override fun setUnifiedNativeAdLoadedListener(listener: IBinder?) = Unit + override fun setAdListener(listener: IAdListener?) = Unit + override fun setAppInstallAdLoadedListener(listener: IOnAppInstallAdLoadedListener?) = Unit + override fun setContentAdLoadedListener(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 forInstreamAd(config: InstreamAdConfigurationParcel?) = Unit + override fun setInstreamAdLoadCallback(callback: IInstreamAdLoadCallback?) = Unit + override fun setAdManagerAdViewOptions(options: AdManagerAdViewOptions?) = Unit } private object LegacyAdLoader : IAdLoader.Stub() { override fun load(request: AdRequestParcel?) { Log.w(TAG, "load") } + override fun getMediationAdapterClassName(): String? = null override fun isLoading(): Boolean = false + override fun getAdManagerAdapterClassName(): String? = null override fun loadAds(request: AdRequestParcel?, count: Int) { - Log.w(TAG, "load ads") + Log.w(TAG, "loadAds") } } diff --git a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/LegacyAdManager.kt b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/LegacyAdManager.kt new file mode 100644 index 000000000..7da7f83cf --- /dev/null +++ b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/LegacyAdManager.kt @@ -0,0 +1,56 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ +package com.google.android.gms.ads + +import android.content.Context +import android.util.Log +import android.widget.FrameLayout +import com.google.android.gms.ads.internal.AdRequestParcel +import com.google.android.gms.ads.internal.client.AdSizeParcel +import com.google.android.gms.ads.internal.client.IAdClickListener +import com.google.android.gms.ads.internal.client.IAdListener +import com.google.android.gms.ads.internal.client.IAdLoadCallback +import com.google.android.gms.ads.internal.client.IAdManager +import com.google.android.gms.ads.internal.client.IAppEventListener +import com.google.android.gms.ads.internal.client.IFullScreenContentCallback +import com.google.android.gms.ads.internal.client.IOnPaidEventListener +import com.google.android.gms.ads.internal.client.IVideoController +import com.google.android.gms.dynamic.IObjectWrapper +import com.google.android.gms.dynamic.ObjectWrapper + +private const val TAG = "LegacyAdManager" + +/** + * Minimal [IAdManager] returned by [AdManagerCreatorImpl] for the banner/interstitial path. + * + * It is a non-null ad manager so the AdMob SDK keeps using microG's remote result. No ad is served: + * [getView] returns an empty container, [loadAd] reports "no fill", and the listeners/getters are + * accepted but inert. + */ +internal class LegacyAdManager(private val context: Context?) : IAdManager.Stub() { + private val adView: FrameLayout? by lazy { context?.let { FrameLayout(it) } } + + override fun getView(): IObjectWrapper = ObjectWrapper.wrap(adView) + override fun destroy() = Unit + override fun loadAd(request: AdRequestParcel?): Boolean { + Log.w(TAG, "loadAd") + return false + } + override fun pause() = Unit + override fun resume() = Unit + override fun setAdListener(listener: IAdListener?) = Unit + override fun setAppEventListener(listener: IAppEventListener?) = Unit + override fun getAdSize(): AdSizeParcel? = null + override fun setAdSize(adSize: AdSizeParcel?) = Unit + override fun setAdClickListener(listener: IAdClickListener?) = Unit + override fun setManualImpressionFlag(flag: Int) = Unit + override fun getVideoController(): IVideoController? = null + override fun setManualImpressionsEnabled(enabled: Boolean) = Unit + override fun setOnPaidEventListener(listener: IOnPaidEventListener?) = Unit + override fun loadAdWithCallback(request: AdRequestParcel?, callback: IAdLoadCallback?) = Unit + override fun showInterstitial(activityWrapper: IObjectWrapper?) = Unit + override fun setFullScreenContentCallback(callback: IFullScreenContentCallback?) = Unit + override fun setStartTimestampMillis(timestampMillis: Long) = Unit +} diff --git a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/MobileAdsSettingManagerCreatorImpl.kt b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/MobileAdsSettingManagerCreatorImpl.kt index 176a17d83..05866e8df 100644 --- a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/MobileAdsSettingManagerCreatorImpl.kt +++ b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/MobileAdsSettingManagerCreatorImpl.kt @@ -18,7 +18,7 @@ import org.microg.gms.utils.warnOnTransactionIssues private const val TAG = "AdsSettingManager" @Keep -class MobileAdsSettingManagerCreatorImpl : IMobileAdsSettingManagerCreator.Stub() { +open class MobileAdsSettingManagerCreatorImpl : IMobileAdsSettingManagerCreator.Stub() { override fun getMobileAdsSettingManager(context: IObjectWrapper?, clientVersion: Int): IBinder { Log.d(TAG, "getMobileAdsSettingManager($clientVersion)") return MobileAdsSettingManagerImpl(ObjectWrapper.unwrap(context) as Context) diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/formats/AdManagerAdViewOptions.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/formats/AdManagerAdViewOptions.aidl new file mode 100644 index 000000000..2ff1efe7b --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/formats/AdManagerAdViewOptions.aidl @@ -0,0 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.formats; + +parcelable AdManagerAdViewOptions; diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/formats/PublisherAdViewOptions.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/formats/PublisherAdViewOptions.aidl new file mode 100644 index 000000000..6fbfae8bd --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/formats/PublisherAdViewOptions.aidl @@ -0,0 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.formats; + +parcelable PublisherAdViewOptions; diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/AdSizeParcel.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/AdSizeParcel.aidl new file mode 100644 index 000000000..4e437f4cd --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/AdSizeParcel.aidl @@ -0,0 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.client; + +parcelable AdSizeParcel; diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/AdValueParcel.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/AdValueParcel.aidl new file mode 100644 index 000000000..038a95e61 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/AdValueParcel.aidl @@ -0,0 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.client; + +parcelable AdValueParcel; diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdClickListener.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdClickListener.aidl new file mode 100644 index 000000000..77843785f --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdClickListener.aidl @@ -0,0 +1,10 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.client; + +interface IAdClickListener { + void onAdClicked() = 0; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdListener.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdListener.aidl new file mode 100644 index 000000000..f669bbdd8 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdListener.aidl @@ -0,0 +1,19 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.client; + +import com.google.android.gms.ads.internal.AdErrorParcel; + +interface IAdListener { + void onAdClosed() = 0; + void onAdFailedToLoad(int errorCode) = 1; + void onAdLeftApplication() = 2; + void onAdOpened() = 3; + void onAdLoaded() = 4; + void onAdClicked() = 5; + void onAdImpression() = 6; + void onAdFailedToLoadWithAdError(in AdErrorParcel error) = 7; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoadCallback.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoadCallback.aidl new file mode 100644 index 000000000..f5e9a1216 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoadCallback.aidl @@ -0,0 +1,13 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.client; + +import com.google.android.gms.ads.internal.AdErrorParcel; + +interface IAdLoadCallback { + void onAdLoaded() = 0; + void onAdFailedToLoad(in AdErrorParcel error) = 1; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoader.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoader.aidl index db3887366..79dcebb2d 100644 --- a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoader.aidl +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoader.aidl @@ -1,9 +1,16 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + package com.google.android.gms.ads.internal.client; import com.google.android.gms.ads.internal.AdRequestParcel; interface IAdLoader { void load(in AdRequestParcel request) = 0; + String getMediationAdapterClassName() = 1; boolean isLoading() = 2; + String getAdManagerAdapterClassName() = 3; void loadAds(in AdRequestParcel request, int count) = 4; } diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoaderBuilder.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoaderBuilder.aidl index 899c2a68a..f619b95fa 100644 --- a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoaderBuilder.aidl +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoaderBuilder.aidl @@ -1,9 +1,38 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + package com.google.android.gms.ads.internal.client; import com.google.android.gms.ads.internal.client.IAdLoader; +import com.google.android.gms.ads.internal.client.IAdListener; +import com.google.android.gms.ads.internal.client.ICorrelationIdProvider; +import com.google.android.gms.ads.internal.client.AdSizeParcel; +import com.google.android.gms.ads.internal.formats.NativeAdOptionsParcel; +import com.google.android.gms.ads.internal.formats.client.IOnAppInstallAdLoadedListener; +import com.google.android.gms.ads.internal.formats.client.IOnContentAdLoadedListener; +import com.google.android.gms.ads.internal.formats.client.IOnCustomTemplateAdLoadedListener; +import com.google.android.gms.ads.internal.formats.client.IOnCustomClickListener; +import com.google.android.gms.ads.internal.formats.client.IOnUnifiedNativeAdLoadedListener; +import com.google.android.gms.ads.internal.formats.client.IOnPublisherAdViewLoadedListener; +import com.google.android.gms.ads.internal.instream.InstreamAdConfigurationParcel; +import com.google.android.gms.ads.internal.instream.client.IInstreamAdLoadCallback; +import com.google.android.gms.ads.formats.PublisherAdViewOptions; +import com.google.android.gms.ads.formats.AdManagerAdViewOptions; interface IAdLoaderBuilder { IAdLoader build() = 0; - void setAdListener(IBinder listener) = 1; - void setUnifiedNativeAdLoadedListener(IBinder listener) = 9; + 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 forInstreamAd(in InstreamAdConfigurationParcel config) = 12; + void setInstreamAdLoadCallback(IInstreamAdLoadCallback callback) = 13; + void setAdManagerAdViewOptions(in AdManagerAdViewOptions options) = 14; } diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdManager.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdManager.aidl new file mode 100644 index 000000000..8e5d997f8 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdManager.aidl @@ -0,0 +1,38 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.client; + +import com.google.android.gms.ads.internal.AdRequestParcel; +import com.google.android.gms.ads.internal.client.AdSizeParcel; +import com.google.android.gms.ads.internal.client.IAdListener; +import com.google.android.gms.ads.internal.client.IAppEventListener; +import com.google.android.gms.ads.internal.client.IAdClickListener; +import com.google.android.gms.ads.internal.client.IVideoController; +import com.google.android.gms.ads.internal.client.IOnPaidEventListener; +import com.google.android.gms.ads.internal.client.IAdLoadCallback; +import com.google.android.gms.ads.internal.client.IFullScreenContentCallback; +import com.google.android.gms.dynamic.IObjectWrapper; + +interface IAdManager { + IObjectWrapper getView() = 0; + void destroy() = 1; + boolean loadAd(in AdRequestParcel request) = 3; + void pause() = 4; + void resume() = 5; + void setAdListener(IAdListener listener) = 6; + void setAppEventListener(IAppEventListener listener) = 7; + AdSizeParcel getAdSize() = 11; + void setAdSize(in AdSizeParcel adSize) = 12; + void setAdClickListener(IAdClickListener listener) = 19; + void setManualImpressionFlag(int flag) = 21; + IVideoController getVideoController() = 25; + void setManualImpressionsEnabled(boolean enabled) = 33; + void setOnPaidEventListener(IOnPaidEventListener listener) = 41; + void loadAdWithCallback(in AdRequestParcel request, IAdLoadCallback callback) = 42; + void showInterstitial(IObjectWrapper activityWrapper) = 43; + void setFullScreenContentCallback(IFullScreenContentCallback callback) = 44; + void setStartTimestampMillis(long timestampMillis) = 47; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdManagerCreator.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdManagerCreator.aidl new file mode 100644 index 000000000..1aa74901d --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdManagerCreator.aidl @@ -0,0 +1,15 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.client; + +import com.google.android.gms.ads.internal.client.AdSizeParcel; +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; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAppEventListener.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAppEventListener.aidl new file mode 100644 index 000000000..0c62f0164 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAppEventListener.aidl @@ -0,0 +1,10 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.client; + +interface IAppEventListener { + void onAppEvent(String name, String info) = 0; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/ICorrelationIdProvider.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/ICorrelationIdProvider.aidl new file mode 100644 index 000000000..205f82edf --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/ICorrelationIdProvider.aidl @@ -0,0 +1,10 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.client; + +interface ICorrelationIdProvider { + String getCorrelationId() = 0; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IFullScreenContentCallback.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IFullScreenContentCallback.aidl new file mode 100644 index 000000000..0464ff16a --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IFullScreenContentCallback.aidl @@ -0,0 +1,16 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.client; + +import com.google.android.gms.ads.internal.AdErrorParcel; + +interface IFullScreenContentCallback { + void onAdFailedToShowFullScreenContent(in AdErrorParcel error) = 0; + void onAdShowedFullScreenContent() = 1; + void onAdDismissedFullScreenContent() = 2; + void onAdImpression() = 3; + void onAdClicked() = 4; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IOnPaidEventListener.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IOnPaidEventListener.aidl index 8f2d34245..eabf5d201 100644 --- a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IOnPaidEventListener.aidl +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IOnPaidEventListener.aidl @@ -1,6 +1,13 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + package com.google.android.gms.ads.internal.client; -import com.google.android.gms.ads.internal.AdErrorParcel; +import com.google.android.gms.ads.internal.client.AdValueParcel; interface IOnPaidEventListener { -} \ No newline at end of file + void onPaidEvent(in AdValueParcel adValue) = 0; + boolean isLoggingLimitedToImpressionEvents() = 1; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IVideoController.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IVideoController.aidl new file mode 100644 index 000000000..643d2e8b8 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IVideoController.aidl @@ -0,0 +1,24 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.client; + +import com.google.android.gms.ads.internal.client.IVideoLifecycleCallbacks; + +interface IVideoController { + float getAspectRatio() = 0; + float getCurrentTime() = 1; + float getDuration() = 2; + int getPlaybackState() = 3; + void play() = 4; + void pause() = 5; + void stop() = 6; + IVideoLifecycleCallbacks getVideoLifecycleCallbacks() = 7; + void setVideoLifecycleCallbacks(IVideoLifecycleCallbacks callbacks) = 8; + boolean isClickToExpandEnabled() = 9; + boolean isCustomControlsEnabled() = 10; + boolean isMuted() = 11; + void mute(boolean mute) = 12; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IVideoLifecycleCallbacks.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IVideoLifecycleCallbacks.aidl new file mode 100644 index 000000000..6b0c5ba81 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IVideoLifecycleCallbacks.aidl @@ -0,0 +1,14 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.client; + +interface IVideoLifecycleCallbacks { + void onVideoStart() = 0; + void onVideoPlay() = 1; + void onVideoPause() = 2; + void onVideoEnd() = 3; + void onVideoMute(boolean muted) = 4; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/NativeAdOptionsParcel.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/NativeAdOptionsParcel.aidl new file mode 100644 index 000000000..f6f495764 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/NativeAdOptionsParcel.aidl @@ -0,0 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.formats; + +parcelable NativeAdOptionsParcel; diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IAttributionInfo.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IAttributionInfo.aidl new file mode 100644 index 000000000..ebd8c5b50 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IAttributionInfo.aidl @@ -0,0 +1,14 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.formats.client; + +import com.google.android.gms.ads.internal.formats.client.INativeAdImage; + +interface IAttributionInfo { + String getText() = 0; + INativeAdImage getImage() = 1; + IAttributionInfo getNextAttributionInfo() = 2; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/INativeAdImage.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/INativeAdImage.aidl new file mode 100644 index 000000000..ad5a69fc8 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/INativeAdImage.aidl @@ -0,0 +1,17 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.formats.client; + +import android.net.Uri; +import com.google.android.gms.dynamic.IObjectWrapper; + +interface INativeAdImage { + IObjectWrapper getDrawable() = 0; + Uri getUri() = 1; + double getScale() = 2; + int getWidth() = 3; + int getHeight() = 4; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/INativeAppInstallAd.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/INativeAppInstallAd.aidl new file mode 100644 index 000000000..cbe18571b --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/INativeAppInstallAd.aidl @@ -0,0 +1,28 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.formats.client; + +import android.os.Bundle; +import com.google.android.gms.ads.internal.client.IVideoController; +import com.google.android.gms.ads.internal.formats.client.INativeAdImage; +import com.google.android.gms.dynamic.IObjectWrapper; + +interface INativeAppInstallAd { + String getHeadline() = 0; + List getImages() = 1; + String getBody() = 2; + INativeAdImage getIcon() = 3; + String getCallToAction() = 4; + double getStarRating() = 5; + String getStore() = 6; + String getPrice() = 7; + Bundle getExtras() = 8; + void recordImpression() = 9; + void performClick(in Bundle clickData) = 10; + void reportTouchEvent(in Bundle touchData) = 11; + IVideoController getVideoController() = 12; + IObjectWrapper getMediaContent() = 13; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/INativeContentAd.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/INativeContentAd.aidl new file mode 100644 index 000000000..d55ccbfc1 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/INativeContentAd.aidl @@ -0,0 +1,26 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.formats.client; + +import android.os.Bundle; +import com.google.android.gms.ads.internal.client.IVideoController; +import com.google.android.gms.ads.internal.formats.client.INativeAdImage; +import com.google.android.gms.dynamic.IObjectWrapper; + +interface INativeContentAd { + String getHeadline() = 0; + List getImages() = 1; + String getBody() = 2; + String getCallToAction() = 3; + String getAdvertiser() = 4; + INativeAdImage getLogo() = 5; + Bundle getExtras() = 6; + void recordImpression() = 7; + void performClick(in Bundle clickData) = 8; + void reportTouchEvent(in Bundle touchData) = 9; + IVideoController getVideoController() = 10; + IObjectWrapper getMediaContent() = 11; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/INativeCustomTemplateAd.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/INativeCustomTemplateAd.aidl new file mode 100644 index 000000000..8ad51cf7e --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/INativeCustomTemplateAd.aidl @@ -0,0 +1,22 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.formats.client; + +import com.google.android.gms.ads.internal.client.IVideoController; +import com.google.android.gms.ads.internal.formats.client.INativeAdImage; +import com.google.android.gms.dynamic.IObjectWrapper; + +interface INativeCustomTemplateAd { + List getAvailableAssetNames() = 0; + String getCustomTemplateId() = 1; + String getText(String assetName) = 2; + INativeAdImage getImage(String assetName) = 3; + void performClick(String assetName) = 4; + void recordImpression() = 5; + IVideoController getVideoController() = 6; + IObjectWrapper getMediaContent() = 7; + IObjectWrapper getDisplayOpenMeasurement() = 8; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnAppInstallAdLoadedListener.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnAppInstallAdLoadedListener.aidl new file mode 100644 index 000000000..494f54fae --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnAppInstallAdLoadedListener.aidl @@ -0,0 +1,12 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.formats.client; + +import com.google.android.gms.ads.internal.formats.client.INativeAppInstallAd; + +interface IOnAppInstallAdLoadedListener { + void onAppInstallAdLoaded(INativeAppInstallAd ad) = 0; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnContentAdLoadedListener.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnContentAdLoadedListener.aidl new file mode 100644 index 000000000..c35c6ed09 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnContentAdLoadedListener.aidl @@ -0,0 +1,12 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.formats.client; + +import com.google.android.gms.ads.internal.formats.client.INativeContentAd; + +interface IOnContentAdLoadedListener { + void onContentAdLoaded(INativeContentAd ad) = 0; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnCustomClickListener.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnCustomClickListener.aidl new file mode 100644 index 000000000..b0ec91313 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnCustomClickListener.aidl @@ -0,0 +1,12 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.formats.client; + +import com.google.android.gms.ads.internal.formats.client.INativeCustomTemplateAd; + +interface IOnCustomClickListener { + void onCustomClick(INativeCustomTemplateAd ad, String assetName) = 0; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnCustomTemplateAdLoadedListener.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnCustomTemplateAdLoadedListener.aidl new file mode 100644 index 000000000..6b82dc26f --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnCustomTemplateAdLoadedListener.aidl @@ -0,0 +1,12 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.formats.client; + +import com.google.android.gms.ads.internal.formats.client.INativeCustomTemplateAd; + +interface IOnCustomTemplateAdLoadedListener { + void onCustomTemplateAdLoaded(INativeCustomTemplateAd ad) = 0; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnPublisherAdViewLoadedListener.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnPublisherAdViewLoadedListener.aidl new file mode 100644 index 000000000..18617588b --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnPublisherAdViewLoadedListener.aidl @@ -0,0 +1,12 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.formats.client; + +import com.google.android.gms.dynamic.IObjectWrapper; + +interface IOnPublisherAdViewLoadedListener { + void onPublisherAdViewLoaded(IObjectWrapper view) = 0; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnUnifiedNativeAdLoadedListener.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnUnifiedNativeAdLoadedListener.aidl new file mode 100644 index 000000000..cfa2235d3 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IOnUnifiedNativeAdLoadedListener.aidl @@ -0,0 +1,12 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.formats.client; + +import com.google.android.gms.ads.internal.formats.client.IUnifiedNativeAd; + +interface IOnUnifiedNativeAdLoadedListener { + void onUnifiedNativeAdLoaded(IUnifiedNativeAd ad) = 0; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IUnifiedNativeAd.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IUnifiedNativeAd.aidl new file mode 100644 index 000000000..3fc4c948a --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/formats/client/IUnifiedNativeAd.aidl @@ -0,0 +1,36 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.formats.client; + +import android.os.Bundle; +import com.google.android.gms.ads.internal.client.IVideoController; +import com.google.android.gms.ads.internal.client.IResponseInfo; +import com.google.android.gms.ads.internal.formats.client.INativeAdImage; +import com.google.android.gms.ads.internal.formats.client.IAttributionInfo; +import com.google.android.gms.dynamic.IObjectWrapper; + +interface IUnifiedNativeAd { + String getHeadline() = 0; + List getImages() = 1; + String getBody() = 2; + INativeAdImage getIcon() = 3; + String getCallToAction() = 4; + double getStarRating() = 5; + String getStore() = 6; + String getPrice() = 7; + String getAdvertiser() = 8; + Bundle getExtras() = 9; + IVideoController getVideoController() = 10; + float getMediaContentAspectRatio() = 11; + IResponseInfo getResponseInfo() = 12; + IAttributionInfo getAttributionInfo() = 13; + void recordImpression() = 14; + void performClick(in Bundle clickData) = 15; + void reportTouchEvent(in Bundle touchData) = 16; + void cancelUnconfirmedClick() = 17; + void recordCustomClickGesture() = 18; + IObjectWrapper getMediaContent() = 19; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/instream/InstreamAdConfigurationParcel.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/instream/InstreamAdConfigurationParcel.aidl new file mode 100644 index 000000000..50dd790e6 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/instream/InstreamAdConfigurationParcel.aidl @@ -0,0 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.instream; + +parcelable InstreamAdConfigurationParcel; diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/instream/client/IInstreamAd.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/instream/client/IInstreamAd.aidl new file mode 100644 index 000000000..463828ea2 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/instream/client/IInstreamAd.aidl @@ -0,0 +1,14 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.instream.client; + +import com.google.android.gms.dynamic.IObjectWrapper; + +interface IInstreamAd { + void destroy() = 0; + IObjectWrapper getMediaContent() = 1; + float getAspectRatio() = 2; +} diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/instream/client/IInstreamAdLoadCallback.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/instream/client/IInstreamAdLoadCallback.aidl new file mode 100644 index 000000000..d66d32240 --- /dev/null +++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/instream/client/IInstreamAdLoadCallback.aidl @@ -0,0 +1,13 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.instream.client; + +import com.google.android.gms.ads.internal.instream.client.IInstreamAd; + +interface IInstreamAdLoadCallback { + void onInstreamAdLoaded(IInstreamAd ad) = 0; + void onInstreamAdFailedToLoad(int errorCode) = 1; +} diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/formats/AdManagerAdViewOptions.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/formats/AdManagerAdViewOptions.java new file mode 100644 index 000000000..6adb37a7b --- /dev/null +++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/formats/AdManagerAdViewOptions.java @@ -0,0 +1,28 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.formats; + +import android.os.Parcel; +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; + +/** + * Ad Manager ad view options passed to {@code IAdLoaderBuilder.setAdManagerAdViewOptions}. + */ +@SafeParcelable.Class +public final class AdManagerAdViewOptions extends AbstractSafeParcelable { + @Field(1) + public boolean manualImpressionsEnabled; + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(AdManagerAdViewOptions.class); +} diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/formats/PublisherAdViewOptions.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/formats/PublisherAdViewOptions.java new file mode 100644 index 000000000..9bdcef680 --- /dev/null +++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/formats/PublisherAdViewOptions.java @@ -0,0 +1,34 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.formats; + +import android.os.IBinder; +import android.os.Parcel; +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; + +/** + * Ad Manager publisher ad view options passed to {@code IAdLoaderBuilder.setPublisherAdViewOptions}. + */ +@Deprecated +@SafeParcelable.Class +public final class PublisherAdViewOptions extends AbstractSafeParcelable { + @Field(1) + public boolean manualImpressionsEnabled; + @Field(2) + public IBinder appEventListener; + @Field(3) + public IBinder delayedBannerAdListener; + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(PublisherAdViewOptions.class); +} diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/client/AdSizeParcel.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/client/AdSizeParcel.java new file mode 100644 index 000000000..27c364595 --- /dev/null +++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/client/AdSizeParcel.java @@ -0,0 +1,59 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.client; + +import android.os.Parcel; +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; + +/** + * Ad size (AdMob {@code AdSize}) passed to {@code IAdLoaderBuilder.forPublisherAdView} and used by the + * banner ad manager. + */ +@SafeParcelable.Class +public class AdSizeParcel extends AbstractSafeParcelable { + @Field(2) + public String formatString; + @Field(3) + public int height; + @Field(4) + public int heightPixels; + @Field(5) + public boolean autoHeight; + @Field(6) + public int width; + @Field(7) + public int widthPixels; + @Field(8) + public AdSizeParcel[] shortcuts; + @Field(9) + public boolean isFluid; + @Field(10) + public boolean isAutoHeightSmartBanner; + @Field(11) + public boolean isDynamicBanner; + @Field(12) + public boolean isFullWidth; + @Field(13) + public boolean isAutoMediation; + @Field(14) + public boolean isParcelStateValid; + @Field(15) + public boolean isAdaptiveBanner; + @Field(16) + public boolean isInlineAdaptiveBanner; + @Field(17) + public boolean isCollapsible; + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(AdSizeParcel.class); +} diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/client/AdValueParcel.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/client/AdValueParcel.java new file mode 100644 index 000000000..2772cfe1d --- /dev/null +++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/client/AdValueParcel.java @@ -0,0 +1,34 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.client; + +import android.os.Parcel; +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; + +/** + * Ad value (AdMob {@code AdValue}) delivered to {@code IOnPaidEventListener.onPaidEvent}. + */ +@SafeParcelable.Class +public class AdValueParcel extends AbstractSafeParcelable { + @Field(1) + public int adType; + @Field(2) + public int precisionType; + @Field(3) + public String currencyCode; + @Field(4) + public long valueMicros; + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(AdValueParcel.class); +} diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/client/VideoOptionsParcel.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/client/VideoOptionsParcel.java new file mode 100644 index 000000000..7db887515 --- /dev/null +++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/client/VideoOptionsParcel.java @@ -0,0 +1,32 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.client; + +import android.os.Parcel; +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; + +/** + * Video options (AdMob {@code VideoOptions}) nested inside {@link NativeAdOptionsParcel}. + */ +@SafeParcelable.Class +public class VideoOptionsParcel extends AbstractSafeParcelable { + @Field(2) + public boolean startMuted; + @Field(3) + public boolean customControlsRequested; + @Field(4) + public boolean clickToExpandRequested; + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(VideoOptionsParcel.class); +} diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/formats/NativeAdOptionsParcel.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/formats/NativeAdOptionsParcel.java new file mode 100644 index 000000000..4cd3fe0d1 --- /dev/null +++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/formats/NativeAdOptionsParcel.java @@ -0,0 +1,49 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.formats; + +import android.os.Parcel; +import androidx.annotation.NonNull; +import com.google.android.gms.ads.internal.client.VideoOptionsParcel; +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; + +/** + * Native ad options (AdMob {@code NativeAdOptions}) passed to {@code IAdLoaderBuilder.setNativeAdOptions}. + */ +@SafeParcelable.Class +public class NativeAdOptionsParcel extends AbstractSafeParcelable { + @Field(1) + public int versionCode = 6; + @Field(2) + public boolean returnUrlsForImageAssets; + @Field(3) + public int imageOrientation; + @Field(4) + public boolean requestMultipleImages; + @Field(5) + public int adChoicesPlacement; + @Field(6) + public VideoOptionsParcel videoOptions; + @Field(7) + public boolean requestCustomMuteThisAd; + @Field(8) + public int mediaAspectRatio; + @Field(9) + public int swipeGestureDirection; + @Field(10) + public boolean customClickGestureEnabled; + @Field(11) + public int customClickGestureDirection; + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(NativeAdOptionsParcel.class); +} diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/instream/InstreamAdConfigurationParcel.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/instream/InstreamAdConfigurationParcel.java new file mode 100644 index 000000000..219860d81 --- /dev/null +++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/instream/InstreamAdConfigurationParcel.java @@ -0,0 +1,34 @@ +/* + * SPDX-FileCopyrightText: 2026 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.ads.internal.instream; + +import android.os.Parcel; +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; + +/** + * Instream ad configuration passed to {@code IAdLoaderBuilder.forInstreamAd}. + */ +@SafeParcelable.Class +public class InstreamAdConfigurationParcel extends AbstractSafeParcelable { + @Field(1000) + public int versionCode; + @Field(1) + public int instreamAdType; + @Field(2) + public String adTagUrl; + @Field(3) + public int timeoutMillis; + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + CREATOR.writeToParcel(this, dest, flags); + } + + public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(InstreamAdConfigurationParcel.class); +}