Skip to content

Commit

Permalink
Render outstream safeframe (prebid#3159)
Browse files Browse the repository at this point in the history
* render outstream safeframe

* move code to Renderer module

* some more logic to move
  • Loading branch information
jaiminpanchal27 authored and Pedro López Jiménez committed Mar 18, 2019
1 parent 6f430df commit 566d1a2
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 5 deletions.
18 changes: 18 additions & 0 deletions src/Renderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +76,21 @@ Renderer.prototype.process = function() {
}
}
};

/**
* Checks whether creative rendering should be done by Renderer or not.
* @param {Object} renderer Renderer object installed by adapter
* @returns {Boolean}
*/
export function isRendererRequired(renderer) {
return !!(renderer && renderer.url);
}

/**
* Render the bid returned by the adapter
* @param {Object} renderer Renderer object installed by adapter
* @param {Object} bid Bid response
*/
export function executeRenderer(renderer, bid) {
renderer.render(bid);
}
5 changes: 3 additions & 2 deletions src/prebid.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { createHook } from 'src/hook';
import { sessionLoader } from 'src/debugging';
import includes from 'core-js/library/fn/array/includes';
import { adunitCounter } from './adUnits';
import { isRendererRequired, executeRenderer } from './Renderer';

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

if (renderer && renderer.url) {
renderer.render(bid);
if (isRendererRequired(renderer)) {
executeRenderer(renderer, bid);
} else if ((doc === document && !utils.inIframe()) || mediaType === 'video') {
const message = `Error trying to write ad. Ad render call ad id ${id} was prevented from writing to the main document.`;
emitAdRenderFail(PREVENT_WRITING_ON_MAIN_DOCUMENT, message, bid);
Expand Down
9 changes: 6 additions & 3 deletions src/secureCreatives.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { EVENTS } from './constants';
import { isSlotMatchingAdUnitCode } from './utils';
import { auctionManager } from './auctionManager';
import find from 'core-js/library/fn/array/find';
import { isRendererRequired, executeRenderer } from './Renderer';

const BID_WON = EVENTS.BID_WON;
const ERROR_SECURE_CREATIVE = EVENTS.ERROR_SECURE_CREATIVE;
Expand Down Expand Up @@ -60,9 +61,11 @@ function receiveMessage(ev) {
}

function sendAdToCreative(adObject, remoteDomain, source) {
const { adId, ad, adUrl, width, height } = adObject;

if (adId) {
const { adId, ad, adUrl, width, height, renderer } = adObject;
// rendering for outstream safeframe
if (isRendererRequired(renderer)) {
executeRenderer(renderer, adObject);
} else if (adId) {
resizeRemoteCreative(adObject);
source.postMessage(
JSON.stringify({
Expand Down

0 comments on commit 566d1a2

Please sign in to comment.