Skip to content

Commit 24dd19a

Browse files
jaiminpanchal27jsnellbaker
authored andcommitted
Render outstream safeframe (prebid#3159)
* render outstream safeframe * move code to Renderer module * some more logic to move
1 parent 5736e83 commit 24dd19a

File tree

3 files changed

+27
-5
lines changed

3 files changed

+27
-5
lines changed

src/Renderer.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,21 @@ Renderer.prototype.process = function() {
7676
}
7777
}
7878
};
79+
80+
/**
81+
* Checks whether creative rendering should be done by Renderer or not.
82+
* @param {Object} renderer Renderer object installed by adapter
83+
* @returns {Boolean}
84+
*/
85+
export function isRendererRequired(renderer) {
86+
return !!(renderer && renderer.url);
87+
}
88+
89+
/**
90+
* Render the bid returned by the adapter
91+
* @param {Object} renderer Renderer object installed by adapter
92+
* @param {Object} bid Bid response
93+
*/
94+
export function executeRenderer(renderer, bid) {
95+
renderer.render(bid);
96+
}

src/prebid.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { createHook } from 'src/hook';
1212
import { sessionLoader } from 'src/debugging';
1313
import includes from 'core-js/library/fn/array/includes';
1414
import { adunitCounter } from './adUnits';
15+
import { isRendererRequired, executeRenderer } from './Renderer';
1516

1617
const $$PREBID_GLOBAL$$ = getGlobal();
1718
const CONSTANTS = require('./constants.json');
@@ -248,8 +249,8 @@ $$PREBID_GLOBAL$$.renderAd = function (doc, id) {
248249
const creativeComment = document.createComment(`Creative ${bid.creativeId} served by ${bid.bidder} Prebid.js Header Bidding`);
249250
utils.insertElement(creativeComment, doc, 'body');
250251

251-
if (renderer && renderer.url) {
252-
renderer.render(bid);
252+
if (isRendererRequired(renderer)) {
253+
executeRenderer(renderer, bid);
253254
} else if ((doc === document && !utils.inIframe()) || mediaType === 'video') {
254255
const message = `Error trying to write ad. Ad render call ad id ${id} was prevented from writing to the main document.`;
255256
emitAdRenderFail(PREVENT_WRITING_ON_MAIN_DOCUMENT, message, bid);

src/secureCreatives.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { EVENTS } from './constants';
99
import { isSlotMatchingAdUnitCode } from './utils';
1010
import { auctionManager } from './auctionManager';
1111
import find from 'core-js/library/fn/array/find';
12+
import { isRendererRequired, executeRenderer } from './Renderer';
1213

1314
const BID_WON = EVENTS.BID_WON;
1415

@@ -53,9 +54,11 @@ function receiveMessage(ev) {
5354
}
5455

5556
function sendAdToCreative(adObject, remoteDomain, source) {
56-
const { adId, ad, adUrl, width, height } = adObject;
57-
58-
if (adId) {
57+
const { adId, ad, adUrl, width, height, renderer } = adObject;
58+
// rendering for outstream safeframe
59+
if (isRendererRequired(renderer)) {
60+
executeRenderer(renderer, adObject);
61+
} else if (adId) {
5962
resizeRemoteCreative(adObject);
6063
source.postMessage(JSON.stringify({
6164
message: 'Prebid Response',

0 commit comments

Comments
 (0)