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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,10 @@ static class FlutterLoadAdError {

if (error.getResponseInfo() != null) {
responseInfo = new FlutterResponseInfo(error.getResponseInfo());
domain = responseInfo.getMediationAdapterClassName();
String adapterClassName = responseInfo.getMediationAdapterClassName();
domain = adapterClassName != null
? adapterClassName
: "com.google.android.libraries.ads.mobile.sdk";
} else {
domain = "com.google.android.libraries.ads.mobile.sdk";
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ public void loadAdManagerNativeAd(
/** Load an ad loader ad. */
public void loadAdLoaderAd(
@NonNull String adUnitId,
@NonNull FlutterAdRequest request,
@NonNull NativeAdLoaderCallback adLoaderAdLoaderCallback,
@Nullable FlutterAdLoaderAd.BannerParameters bannerParameters,
@Nullable FlutterAdLoaderAd.CustomParameters customParameters,
Expand Down Expand Up @@ -167,6 +168,8 @@ public void loadAdLoaderAd(
}
}

request.configureNativeAdRequestBuilder(builder, adUnitId);

NativeAdLoader.load(
builder.build(),
adLoaderAdLoaderCallback);
Expand All @@ -175,11 +178,12 @@ public void loadAdLoaderAd(
/** Load an ad manager ad loader ad. */
public void loadAdManagerAdLoaderAd(
@NonNull String adUnitId,
@NonNull FlutterAdManagerAdRequest adManagerRequest,
@NonNull NativeAdLoaderCallback adLoaderAdLoaderCallback,
@Nullable FlutterAdLoaderAd.BannerParameters bannerParameters,
@Nullable FlutterAdLoaderAd.CustomParameters customParameters,
@Nullable FlutterAdLoaderAd.NativeParameters nativeParameters) {
loadAdLoaderAd(adUnitId, adLoaderAdLoaderCallback, bannerParameters, customParameters, nativeParameters);
loadAdLoaderAd(adUnitId, adManagerRequest, adLoaderAdLoaderCallback, bannerParameters, customParameters, nativeParameters);
}

static AdChoicesPlacement convertAdChoicesPlacement(int adChoicesPlacement) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -218,10 +218,10 @@ void load() {
// As of 20.0.0 of GMA, mockito is unable to mock AdLoader.
if (request != null) {
adLoader.loadAdLoaderAd(
adUnitId, loadedListener, bannerParameters, customParameters, nativeParameters);
adUnitId, request, loadedListener, bannerParameters, customParameters, nativeParameters);
} else if (adManagerRequest != null) {
adLoader.loadAdManagerAdLoaderAd(
adUnitId, loadedListener, bannerParameters, customParameters, nativeParameters);
adUnitId, adManagerRequest, loadedListener, bannerParameters, customParameters, nativeParameters);
} else {
Log.e(TAG, "A null or invalid ad request was provided.");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.google.android.libraries.ads.mobile.sdk.banner.AdSize;
import com.google.android.libraries.ads.mobile.sdk.banner.BannerAdRequest;
import com.google.android.libraries.ads.mobile.sdk.common.AdRequest;
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdRequest;
import com.google.errorprone.annotations.CanIgnoreReturnValue;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -149,6 +150,26 @@ protected BannerAdRequest.Builder toBannerAdRequestBuilder(String adUnitId,
return builder;
}

@Override
protected NativeAdRequest.Builder configureNativeAdRequestBuilder(
NativeAdRequest.Builder builder, String adUnitId) {
super.configureNativeAdRequestBuilder(builder, adUnitId);
if (customTargeting != null) {
for (final Map.Entry<String, String> entry : customTargeting.entrySet()) {
builder.putCustomTargeting(entry.getKey(), entry.getValue());
}
}
if (customTargetingLists != null) {
for (final Map.Entry<String, List<String>> entry : customTargetingLists.entrySet()) {
builder.putCustomTargeting(entry.getKey(), entry.getValue());
}
}
if (publisherProvidedId != null) {
builder.setPublisherProvidedId(publisherProvidedId);
}
return builder;
}

@Nullable
protected Map<String, String> getCustomTargeting() {
return customTargeting;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import com.google.android.libraries.ads.mobile.sdk.banner.AdSize;
import com.google.android.libraries.ads.mobile.sdk.banner.BannerAdRequest;
import com.google.android.libraries.ads.mobile.sdk.common.AdRequest;
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdRequest;
import com.google.errorprone.annotations.CanIgnoreReturnValue;
import java.util.HashMap;
import java.util.HashSet;
Expand Down Expand Up @@ -324,6 +325,24 @@ protected BannerAdRequest.Builder toBannerAdRequestBuilder(String adUnitId, List
return builder;
}

/** Applies the common request properties onto a next-gen {@link NativeAdRequest.Builder}. */
protected NativeAdRequest.Builder configureNativeAdRequestBuilder(
NativeAdRequest.Builder builder, String adUnitId) {
if (keywords != null) {
for (final String keyword : keywords) {
builder.addKeyword(keyword);
}
}
if (contentUrl != null) {
builder.setContentUrl(contentUrl);
}
if (neighboringContentUrls != null) {
builder.setNeighboringContentUrls(new HashSet<String>(neighboringContentUrls));
}
builder.setRequestAgent(requestAgent);
return builder;
}

AdRequest asAdRequest(String adUnitId) {
return ((AdRequest.Builder) updateAdRequestBuilder(new AdRequest.Builder(adUnitId), adUnitId))
.build();
Expand Down
6 changes: 3 additions & 3 deletions packages/google_mobile_ads/lib/src/ad_instance_manager.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1192,8 +1192,8 @@ class AdMessageCodec extends StandardMessageCodec {
);
case _valueRewardItem:
return RewardItem(
readValueOfType(buffer.getUint8(), buffer),
readValueOfType(buffer.getUint8(), buffer),
readValueOfType(buffer.getUint8(), buffer) ?? 0,
_safeReadString(buffer),
);
case _valueResponseInfo:
return ResponseInfo(
Expand Down Expand Up @@ -1278,7 +1278,7 @@ class AdMessageCodec extends StandardMessageCodec {
buffer.getUint8(),
buffer,
);
final String description = readValueOfType(buffer.getUint8(), buffer);
final String description = _safeReadString(buffer);

double latency = readValueOfType(buffer.getUint8(), buffer).toDouble();
// Android provides this value as an int in milliseconds while iOS
Expand Down
25 changes: 25 additions & 0 deletions packages/google_mobile_ads/test/ad_containers_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1196,6 +1196,31 @@ void main() {
expect(result.type, 'type');
});

test('encode/decode $RewardItem with null values', () async {
final WriteBuffer buffer = WriteBuffer();
buffer.putUint8(132);
codec.writeValue(buffer, null);
codec.writeValue(buffer, null);

final RewardItem result = codec.decodeMessage(buffer.done());
expect(result.amount, 0);
expect(result.type, '');
});

test('encode/decode $AdapterStatus with null description', () async {
debugDefaultTargetPlatformOverride = TargetPlatform.android;
final WriteBuffer buffer = WriteBuffer();
buffer.putUint8(136);
codec.writeValue(buffer, AdapterInitializationState.ready);
codec.writeValue(buffer, null);
codec.writeValue(buffer, 1000);

final AdapterStatus result = codec.decodeMessage(buffer.done());
expect(result.state, AdapterInitializationState.ready);
expect(result.description, '');
expect(result.latency, 1.0);
});

test('encode/decode $InlineAdaptiveSize', () async {
ByteData byteData = codec.encodeMessage(
AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(100),
Expand Down