Ads: Fix some API details

This commit is contained in:
Marvin W 2026-06-08 21:46:16 +02:00
parent 4c4247e02e
commit fc737ad3cc
No known key found for this signature in database
GPG key ID: 072E9235DB996F2A
11 changed files with 87 additions and 32 deletions

View file

@ -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()
}

View file

@ -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)
}

View file

@ -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() {

View file

@ -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)
}

View file

@ -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;
}

View file

@ -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);
}

View file

@ -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;
}

View file

@ -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);
}

View file

@ -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 {
}

View file

@ -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) {

View file

@ -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<RequestConfigurationParcel> 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<RequestConfigurationParcel> CREATOR = findCreator(RequestConfigurationParcel.class);
}