Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiformat fixes #706 #708

Merged
merged 2 commits into from
Nov 2, 2023
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 @@ -24,6 +24,7 @@
import com.google.android.gms.ads.nativead.NativeAd;
import com.google.android.gms.ads.nativead.NativeCustomFormatAd;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;

import org.jetbrains.annotations.NotNull;
import org.prebid.mobile.BannerParameters;
Expand Down Expand Up @@ -51,7 +52,7 @@
public class GamOriginalApiMultiformatBannerVideoNativeInApp extends BaseAdActivity {

private static final String AD_UNIT_ID = "/21808260008/prebid-demo-multiformat";
private static final String CONFIG_ID_BANNER = "prebid-ita-banner-320-50";
private static final String CONFIG_ID_BANNER = "prebid-ita-banner-300-250";
private static final String CONFIG_ID_VIDEO = "prebid-ita-video-outstream-original-api";
private static final String CONFIG_ID_NATIVE = "prebid-ita-banner-native-styles";
private static final String CUSTOM_FORMAT_ID = "12304464";
Expand All @@ -75,8 +76,8 @@ private void createAd() {

// 2. Create PrebidRequest with needed multiformat parameters
PrebidRequest prebidRequest = new PrebidRequest();
prebidRequest.setBannerParameters(new BannerParameters());
prebidRequest.setVideoParameters(new VideoParameters(Lists.newArrayList("video/mp4")));
prebidRequest.setBannerParameters(createBannerParameters());
prebidRequest.setVideoParameters(createVideoParameters());
prebidRequest.setNativeParameters(creativeNativeParameters());

// 3. Make a bid request to Prebid Server
Expand Down Expand Up @@ -166,6 +167,18 @@ public void onPrebidNativeNotValid() {
});
}

private BannerParameters createBannerParameters() {
BannerParameters parameters = new BannerParameters();
parameters.setAdSizes(Sets.newHashSet(new org.prebid.mobile.AdSize(300, 250)));
return parameters;
}

private VideoParameters createVideoParameters() {
VideoParameters parameters = new VideoParameters(Lists.newArrayList("video/mp4"));
parameters.setAdSize(new org.prebid.mobile.AdSize(320, 480));
return parameters;
}

private NativeParameters creativeNativeParameters() {
ArrayList<NativeAsset> nativeAssets = Lists.newArrayList();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.google.android.gms.ads.admanager.AdManagerAdRequest;
import com.google.android.gms.ads.admanager.AdManagerAdView;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;

import org.jetbrains.annotations.NotNull;
import org.prebid.mobile.BannerParameters;
Expand All @@ -33,7 +34,7 @@
public class GamOriginalApiMultiformatBannerVideoNativeStyles extends BaseAdActivity {

private final String AD_UNIT_ID = "/21808260008/prebid-demo-multiformat-native-styles";
private final String CONFIG_ID_BANNER = "prebid-ita-banner-320-50";
private final String CONFIG_ID_BANNER = "prebid-ita-banner-300-250";
private final String CONFIG_ID_NATIVE = "prebid-ita-banner-native-styles";
private final String CONFIG_ID_VIDEO = "prebid-ita-video-outstream-original-api";

Expand All @@ -56,8 +57,8 @@ private void createAd() {

// 2. Create PrebidRequest with needed multiformat parameters
PrebidRequest prebidRequest = new PrebidRequest();
prebidRequest.setBannerParameters(new BannerParameters());
prebidRequest.setVideoParameters(new VideoParameters(Lists.newArrayList("video/mp4")));
prebidRequest.setBannerParameters(createBannerParameters());
prebidRequest.setVideoParameters(createVideoParameters());
prebidRequest.setNativeParameters(creativeNativeParameters());

// 3. Make a bid request to Prebid Server
Expand Down Expand Up @@ -97,6 +98,18 @@ public void failure(@NonNull @NotNull PbFindSizeError error) {
};
}

private BannerParameters createBannerParameters() {
BannerParameters parameters = new BannerParameters();
parameters.setAdSizes(Sets.newHashSet(new org.prebid.mobile.AdSize(300, 250)));
return parameters;
}

private VideoParameters createVideoParameters() {
VideoParameters parameters = new VideoParameters(Lists.newArrayList("video/mp4"));
parameters.setAdSize(new org.prebid.mobile.AdSize(320, 480));
return parameters;
}

private NativeParameters creativeNativeParameters() {
ArrayList<NativeAsset> nativeAssets = Lists.newArrayList();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class GamOriginalApiMultiformatBannerVideoNativeInAppActivity : BaseAdActivity()

companion object {
const val AD_UNIT_ID = "/21808260008/prebid-demo-multiformat"
const val CONFIG_ID_BANNER = "prebid-ita-banner-320-50"
const val CONFIG_ID_BANNER = "prebid-ita-banner-300-250"
const val CONFIG_ID_NATIVE = "prebid-ita-banner-native-styles"
const val CONFIG_ID_VIDEO = "prebid-ita-video-outstream-original-api"
const val CUSTOM_FORMAT_ID = "12304464"
Expand Down Expand Up @@ -96,11 +96,15 @@ class GamOriginalApiMultiformatBannerVideoNativeInAppActivity : BaseAdActivity()


private fun createBannerParameters(): BannerParameters {
return BannerParameters()
val params = BannerParameters()
params.adSizes = mutableSetOf(org.prebid.mobile.AdSize(300, 250))
return params
}

private fun createVideoParameters(): VideoParameters {
return VideoParameters(listOf("video/mp4"))
val params = VideoParameters(listOf("video/mp4"))
params.adSize = org.prebid.mobile.AdSize(320, 480)
return params
}

private fun createNativeParameters(): NativeParameters {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class GamOriginalApiMultiformatBannerVideoNativeStylesActivity : BaseAdActivity(

companion object {
const val AD_UNIT_ID = "/21808260008/prebid-demo-multiformat-native-styles"
const val CONFIG_ID_BANNER = "prebid-ita-banner-320-50"
const val CONFIG_ID_BANNER = "prebid-ita-banner-300-250"
const val CONFIG_ID_NATIVE = "prebid-ita-banner-native-styles"
const val CONFIG_ID_VIDEO = "prebid-ita-video-outstream-original-api"
}
Expand Down Expand Up @@ -78,11 +78,15 @@ class GamOriginalApiMultiformatBannerVideoNativeStylesActivity : BaseAdActivity(


private fun createBannerParameters(): BannerParameters {
return BannerParameters()
val params = BannerParameters()
params.adSizes = mutableSetOf(org.prebid.mobile.AdSize(300, 250))
return params
}

private fun createVideoParameters(): VideoParameters {
return VideoParameters(listOf("video/mp4"))
val params = VideoParameters(listOf("video/mp4"))
params.adSize = org.prebid.mobile.AdSize(320, 480)
return params
}

private fun createNativeParameters(): NativeParameters {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ private void baseFetchDemand(

adUnit = new MultiformatAdUnitFacade(configId, request);

OnCompleteListenerImpl innerListener = new OnCompleteListenerImpl(adUnit, request, userListener);
OnCompleteListenerImpl innerListener = new OnCompleteListenerImpl(adUnit, adObject, userListener);
if (adObject != null) {
adUnit.fetchDemand(adObject, innerListener);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,13 +125,12 @@ private void configureImpObject(Imp imp, String uuid) {
setCommonImpValues(imp, uuid);
if (adConfiguration.getNativeConfiguration() != null) {
setNativeImpValues(imp);
} else {
if (adConfiguration.isAdType(AdFormat.BANNER) || adConfiguration.isAdType(AdFormat.INTERSTITIAL)) {
setBannerImpValues(imp);
}
if (adConfiguration.isAdType(AdFormat.VAST)) {
setVideoImpValues(imp);
}
}
if (adConfiguration.isAdType(AdFormat.BANNER) || adConfiguration.isAdType(AdFormat.INTERSTITIAL)) {
setBannerImpValues(imp);
}
if (adConfiguration.isAdType(AdFormat.VAST)) {
setVideoImpValues(imp);
}
}
}
Expand Down Expand Up @@ -301,8 +300,14 @@ private void setVideoImpValues(Imp imp) {
}
}

HashSet<AdSize> adSizes = adConfiguration.getSizes();
if (!adSizes.isEmpty()) {
VideoParameters videoParams = adConfiguration.getVideoParameters();
if (videoParams != null) {
AdSize adSize = videoParams.getAdSize();
if (adSize != null) {
video.w = adSize.getWidth();
video.h = adSize.getHeight();
}
} else if (!adConfiguration.getSizes().isEmpty()) {
for (AdSize size : adConfiguration.getSizes()) {
video.w = size.getWidth();
video.h = size.getHeight();
Expand Down Expand Up @@ -334,7 +339,15 @@ private void setBannerImpValues(Imp imp) {
banner.api = getApiFrameworks();
}

if (adConfiguration.isAdType(AdFormat.BANNER)) {
BannerParameters bannerParameters = adConfiguration.getBannerParameters();
if (bannerParameters != null) {
Set<AdSize> adSizes = bannerParameters.getAdSizes();
if (adSizes != null) {
for (AdSize size : adSizes) {
banner.addFormat(size.getWidth(), size.getHeight());
}
}
} else if (adConfiguration.isAdType(AdFormat.BANNER)) {
for (AdSize size : adConfiguration.getSizes()) {
banner.addFormat(size.getWidth(), size.getHeight());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@
import android.content.Context;
import android.content.res.Configuration;

import com.google.common.collect.Sets;

import org.assertj.core.util.Lists;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
Expand All @@ -39,8 +42,10 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.prebid.mobile.AdSize;
import org.prebid.mobile.BannerParameters;
import org.prebid.mobile.DataObject;
import org.prebid.mobile.ExternalUserId;
import org.prebid.mobile.NativeTitleAsset;
import org.prebid.mobile.PrebidMobile;
import org.prebid.mobile.Signals;
import org.prebid.mobile.TargetingParams;
Expand All @@ -50,12 +55,14 @@
import org.prebid.mobile.api.rendering.pluginrenderer.PrebidMobilePluginRegister;
import org.prebid.mobile.api.rendering.pluginrenderer.PrebidMobilePluginRenderer;
import org.prebid.mobile.configuration.AdUnitConfiguration;
import org.prebid.mobile.configuration.NativeAdUnitConfiguration;
import org.prebid.mobile.rendering.bidding.data.bid.Prebid;
import org.prebid.mobile.rendering.models.AdPosition;
import org.prebid.mobile.rendering.models.PlacementType;
import org.prebid.mobile.rendering.models.openrtb.BidRequest;
import org.prebid.mobile.rendering.models.openrtb.bidRequests.Ext;
import org.prebid.mobile.rendering.models.openrtb.bidRequests.Imp;
import org.prebid.mobile.rendering.models.openrtb.bidRequests.Native;
import org.prebid.mobile.rendering.models.openrtb.bidRequests.PluginRendererList;
import org.prebid.mobile.rendering.models.openrtb.bidRequests.User;
import org.prebid.mobile.rendering.models.openrtb.bidRequests.devices.Geo;
Expand Down Expand Up @@ -128,6 +135,58 @@ public void cleanup() throws Exception {
PrebidMobile.unregisterPluginRenderer(otherPlugin);
}

@Test
public void multiformat_setAllParameterTypes_allTypesInRequestObject() throws JSONException {
AdUnitConfiguration config = new AdUnitConfiguration();
config.setIsOriginalAdUnit(true);

BannerParameters bannerParams = new BannerParameters();
bannerParams.setAdSizes(Sets.newHashSet(new AdSize(300, 250)));
bannerParams.setApi(Lists.newArrayList(Signals.Api.MRAID_2, Signals.Api.MRAID_3));
config.setBannerParameters(bannerParams);

VideoParameters videoParameters = new VideoParameters(Lists.newArrayList("video/mp4"));
videoParameters.setAdSize(new AdSize(320, 480));
videoParameters.setApi(Lists.newArrayList(Signals.Api.OMID_1, Signals.Api.VPAID_1));
config.setVideoParameters(videoParameters);

NativeAdUnitConfiguration nativeConfiguration = new NativeAdUnitConfiguration();
NativeTitleAsset titleAsset = new NativeTitleAsset();
titleAsset.setRequired(true);
nativeConfiguration.addAsset(titleAsset);
config.setNativeConfiguration(nativeConfiguration);

config.setAdFormats(EnumSet.of(AdFormat.BANNER, AdFormat.VAST, AdFormat.NATIVE));


BidRequest bidRequest = configIntoBidRequest(config);


Imp imp = bidRequest.getImp().get(0);
assertNotNull(imp);
Banner banner = imp.banner;
assertNotNull(banner);
assertEquals("{\"format\":[{\"w\":300,\"h\":250}],\"api\":[5,6]}", banner.getJsonObject().toString());

Video video = imp.video;
assertNotNull(video);
assertEquals("{\"delivery\":[3],\"w\":320,\"h\":480,\"api\":[7,1],\"mimes\":[\"video\\/mp4\"]}", video.getJsonObject().toString());

Native nativeObj = imp.nativeObj;
assertNotNull(nativeObj);
}

private BidRequest configIntoBidRequest(AdUnitConfiguration config) {
BasicParameterBuilder builder = new BasicParameterBuilder(
config,
context.getResources(),
browserActivityAvailable
);
AdRequestInput adRequestInput = new AdRequestInput();
builder.appendBuilderParameters(adRequestInput);
return adRequestInput.getBidRequest();
}

@Test
public void sourceOmidValues_originalApi_customValues() throws JSONException {
AdUnitConfiguration config = new AdUnitConfiguration();
Expand Down Expand Up @@ -231,7 +290,6 @@ public void whenAppendParametersAndBannerType_ImpWithValidBannerObject() throws
);
AdRequestInput adRequestInput = new AdRequestInput();
builder.appendBuilderParameters(adRequestInput);

BidRequest actualBidRequest = adRequestInput.getBidRequest();
BidRequest expectedBidRequest = getExpectedBidRequest(adConfiguration, actualBidRequest.getId());

Expand Down Expand Up @@ -898,6 +956,8 @@ private VideoParameters createFullVideoParameters() {
playbackMethods.add(new Signals.PlaybackMethod(32));
parameters.setPlaybackMethod(playbackMethods);

parameters.setAdSize(new AdSize(320, 480));

return parameters;
}

Expand Down