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

Improve resize logic for native #193

Merged
merged 1 commit into from
Aug 28, 2023

Conversation

dgirardi
Copy link
Collaborator

This is a partial fix for #191 (does not address the case where GPT is set to allowPushExpansion, which needs a change on the Prebid side).

The iframe resize request is now done when the window has completed loading instead of when the rendering logic completes - which gives time for images, scripts, etc to be done.

Tested on Chrome and FF using the same test page from #190.

Copy link
Contributor

@musikele musikele left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

noted that postRenderAd is called before the actual resize has been called.

@@ -378,7 +378,8 @@ export function newNativeAssetManager(win, pubUrl) {
callback && callback();
win.removeEventListener('message', replaceAssets);
stopListening();
requestHeightResize(bid.adId, (document.body.clientHeight || document.body.offsetHeight), document.body.clientWidth);
const resize = () => requestHeightResize(bid.adId, (document.body.clientHeight || document.body.offsetHeight), document.body.clientWidth);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the resize function must contain also the postRenderAd call otherwise postRenderAd is called before the ad has been rendered:

const resize = () => {
    requestHeightResize(bid.adId, (document.body.clientHeight || document.body.offsetHeight), document.body.clientWidth); 
    if (typeof window.postRenderAd === 'function') {
      window.postRenderAd(bid);
      }
    }

@@ -378,7 +378,8 @@ export function newNativeAssetManager(win, pubUrl) {
callback && callback();
win.removeEventListener('message', replaceAssets);
stopListening();
requestHeightResize(bid.adId, (document.body.clientHeight || document.body.offsetHeight), document.body.clientWidth);
const resize = () => requestHeightResize(bid.adId, (document.body.clientHeight || document.body.offsetHeight), document.body.clientWidth);
document.readyState === 'complete' ? resize() : window.onload = resize;

if (typeof window.postRenderAd === 'function') {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and this piece should be removed from here

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To me this looks correct:

at this point we are done rendering, and the resize function is scheduled to run when the DOM is done loading ( image sources and so on). If we run postRenderAd here it can manipulate the DOM and for example add another image that wold still come in time for resize.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In one of our templates we retrieve the height of the ad, and we do that in postRenderAd. I was thinking that the height should be calculated when we're 100% sure that the resize has happened. So, if document.readyState is not complete, postRenderAd is executed before resize.

Copy link
Contributor

@musikele musikele left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi there, there are a few comments i've written down, please give a look

EDIT: Sorry I don't understand how I could add a second review request under this PR, and I can't find a way to remove it.

@patmmccann
Copy link

fixes #191

musikele
musikele previously approved these changes Mar 28, 2023
Copy link
Contributor

@musikele musikele left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

I've also tested it with a render function that uses postRenderAd and everything seems to work fine.

@musikele musikele dismissed their stale review March 28, 2023 16:55

I wanted to consider another issue

@patmmccann patmmccann merged commit 5e8a24f into prebid:master Aug 28, 2023
anastasiiapankivFS added a commit to freestarcapital/prebid-universal-creative that referenced this pull request May 2, 2024
* add support for catching errors from postscribe library (prebid#129)

* Prebid Universal Creative 1.12.0 Release

* increment pre version

* Static vast tag for mobile rendering API for rewarded video (prebid#148)

* the static vast tag for mobile rendering API for rewarded video

* update gulpfile to handle static vast XML file in build process

Co-authored-by: Yuriy Velichko <yuriy.velichko@openx.com>
Co-authored-by: Jason Snellbaker <jsnellbaker@appnexus.com>

* temporarily disable unit test (prebid#149)

* Prebid Universal Creative 1.13.0 Release

* increment pre version

* Signal AD_RENDER_FAILED / AD_RENDER_SUCCEEDED events to Prebid (prebid#152)

Add a new type of cross-origin message ('Prebid Message') to signal when render-related events should be generated by Prebid.

* Add issue tracking workflow: automatically create project items for new issues (prebid#161)

* Upgrade dependencies make the build work on recent(ish) versions of Node (prebid#159)

* Use MessageChannel for cross-frame messages (prebid#154)

* Use MessageChannel for cross-frame messages

* Use transformAuctionTargetingData for nativeTrackerManager

* readme: removed 'coming soon' message (prebid#170)

* Remove <!doctype> from markup before rendering with postscribe (prebid#172)

* Bump got from 11.8.3 to 11.8.5 (prebid#169)

Bumps [got](https://github.com/sindresorhus/got) from 11.8.3 to 11.8.5.
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](sindresorhus/got@v11.8.3...v11.8.5)

---
updated-dependencies:
- dependency-name: got
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump copy-props from 2.0.4 to 2.0.5 (prebid#163)

Bumps [copy-props](https://github.com/gulpjs/copy-props) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/gulpjs/copy-props/releases)
- [Changelog](https://github.com/gulpjs/copy-props/blob/master/CHANGELOG.md)
- [Commits](gulpjs/copy-props@2.0.4...2.0.5)

---
updated-dependencies:
- dependency-name: copy-props
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump tar from 4.4.8 to 4.4.19 (prebid#162)

Bumps [tar](https://github.com/npm/node-tar) from 4.4.8 to 4.4.19.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](isaacs/node-tar@v4.4.8...v4.4.19)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Replace missing native assets with empty strings (prebid#171)

* Replace missing native assets with empty strings

* Update: Replace missing native assets with empty strings

* Fix: Replace missing native assets with empty strings

Co-authored-by: anita.schiller <anita.schiller@gutefrage.net>

* Fix bugs / tests with empty string default for missing assets (prebid#178)

* Fix bugs / tests with empty string default for missing assets

* Run tests on PRs

* Update test browsers to be in line with Prebid.js

* Update circleCI image to be in line with the one used for releases

* Bump yargs-parser from 5.0.0 to 5.0.1 (prebid#164)

Bumps [yargs-parser](https://github.com/yargs/yargs-parser) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/yargs/yargs-parser/releases)
- [Changelog](https://github.com/yargs/yargs-parser/blob/v5.0.1/CHANGELOG.md)
- [Commits](yargs/yargs-parser@v5.0.0...v5.0.1)

---
updated-dependencies:
- dependency-name: yargs-parser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Native ortb (prebid#150)

* if there is an ortb2 field pass it to renderAd function

* replace ortb2 with ortb

* handle impression and clicktrackers within puc

* fix tests

* add tests for native ortb trackers

* add openRTB feature for adTemplate

* add unit test for native ortb

* fix unit test post rebase

* convert legacy templates to ortb templates

* set the width of the iframe to the parent div width

* native renderer receives both legacy and ortb assets

* only resize the native ad when the size is 1x1

* send message to trigger trackers on pbjs

* default: return empty string if no asset is found

* add suport for eventtrackers as of native ortb 1.2

* fix broken test introduced with prebid#171

* fix broken test introduced with prebid#171

* remove accidentally added files

* fixes after rebasing

Co-authored-by: Michele Nasti <michele@rtk.io>
Co-authored-by: Michele Nasti <musikele@users.noreply.github.com>

* Bump engine.io and karma (prebid#173)

Bumps [engine.io](https://github.com/socketio/engine.io) and [karma](https://github.com/karma-runner/karma). These dependencies needed to be updated together.

Updates `engine.io` from 3.2.1 to 6.2.0
- [Release notes](https://github.com/socketio/engine.io/releases)
- [Changelog](https://github.com/socketio/engine.io/blob/main/CHANGELOG.md)
- [Commits](socketio/engine.io@3.2.1...6.2.0)

Updates `karma` from 4.3.0 to 6.4.0
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](karma-runner/karma@v4.3.0...v6.4.0)

---
updated-dependencies:
- dependency-name: engine.io
  dependency-type: indirect
- dependency-name: karma
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Prebid Universal Creative 1.14.0 release

* Increment version to 1.15.0-pre

* Bump ejs and webdriverio (prebid#184)

Bumps [ejs](https://github.com/mde/ejs) to 3.1.8 and updates ancestor dependency [webdriverio](https://github.com/webdriverio/webdriverio). These dependencies need to be updated together.


Updates `ejs` from 3.1.6 to 3.1.8
- [Release notes](https://github.com/mde/ejs/releases)
- [Changelog](https://github.com/mde/ejs/blob/main/CHANGELOG.md)
- [Commits](mde/ejs@v3.1.6...v3.1.8)

Updates `webdriverio` from 4.14.4 to 7.25.2
- [Release notes](https://github.com/webdriverio/webdriverio/releases)
- [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md)
- [Commits](webdriverio/webdriverio@v4.14.4...v7.25.2)

---
updated-dependencies:
- dependency-name: ejs
  dependency-type: indirect
- dependency-name: webdriverio
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Separate puc (prebid#165)

* separate puc into multiple output files based on format

* shake plugin

* move stuff around for easier treeshaking

* add building legacy 'creative.js' for backwards compatibility
fix docs and style

* Static vast tag for mobile rendering API for rewarded video (prebid#148)

* temporarily disable unit test (prebid#149)

* Signal AD_RENDER_FAILED / AD_RENDER_SUCCEEDED events to Prebid (prebid#152)

* Add issue tracking workflow: automatically create project items for new issues

* add .npmignore to not break jsdelivr

* avoid code duplicates in gulpfile

* fix renderCrossDomain after rebase

* fixes post rebase

* in order to support tree-shaking, environment is not an object anymore

* remove deprecation warning from uid.js

* update creative in the readme.md

* add test for legacyNativeRender to accept only one argument

* added package-lock so npm ci doesn't fail

* fix to first argument of call method

* fix for iframe width not being resized correctly when creative is safeframe

* add generation of legacy files on watch

* new package lock with newer dependencies

Co-authored-by: Filip Stamenkovic <ficadub@gmail.com>
Co-authored-by: Michele Nasti <michele@rtk.io>

* add buil-dev task (prebid#189)

Co-authored-by: Michele Nasti <michele@rtk.io>

* make the project work with node latest; upgrade wdio (prebid#188)

* make the project work with node latest; upgrade wdio

* remove engine property

Co-authored-by: Michele Nasti <michele@rtk.io>

* Bump qs and body-parser (prebid#197)

Bumps [qs](https://github.com/ljharb/qs) and [body-parser](https://github.com/expressjs/body-parser). These dependencies needed to be updated together.

Updates `qs` from 6.9.0 to 6.11.0
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](ljharb/qs@v6.9.0...v6.11.0)

Updates `body-parser` from 1.19.0 to 1.20.1
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](expressjs/body-parser@1.19.0...1.20.1)

---
updated-dependencies:
- dependency-name: qs
  dependency-type: indirect
- dependency-name: body-parser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump decode-uri-component from 0.2.0 to 0.2.2 (prebid#195)

Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2.
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](SamVerschueren/decode-uri-component@v0.2.0...v0.2.2)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump engine.io from 6.2.0 to 6.2.1 (prebid#192)

Bumps [engine.io](https://github.com/socketio/engine.io) from 6.2.0 to 6.2.1.
- [Release notes](https://github.com/socketio/engine.io/releases)
- [Changelog](https://github.com/socketio/engine.io/blob/main/CHANGELOG.md)
- [Commits](socketio/engine.io@6.2.0...6.2.1)

---
updated-dependencies:
- dependency-name: engine.io
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* hb_native_privicon (prebid#194)

Co-authored-by: skoklowski <slawomir.koklowski@ringieraxelspringer.pl>

* Prebid Universal Creative 1.15.0 release

* Increment version to 1.16.0-pre

* Add macro to track clicks (prebid#196)

* added support for GAM macro %%CLICK_URL_UNESC%%

* add tests for %%CLICK_URL_UNESC%%

* add info about clickUrlUnesc in readme

Co-authored-by: Michele Nasti <michele@rtk.io>

* Update issue_tracker.yml for new GH API (prebid#203)

* Replace all placeholders with the corresponding ortb assets (prebid#211)

* Replace all placeholders with the corresponding ortb assets

* Add test for replacing all placeholders

* Use gulp in test script

---------

Co-authored-by: anita.schiller <anita.schiller@gutefrage.net>

* Remove DOCTYPE from markup for app/amp/mobile (prebid#210)

* Bump http-cache-semantics from 4.1.0 to 4.1.1 (prebid#205)

Bumps [http-cache-semantics](https://github.com/kornelski/http-cache-semantics) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/kornelski/http-cache-semantics/releases)
- [Commits](kornelski/http-cache-semantics@v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: http-cache-semantics
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump ua-parser-js from 0.7.32 to 0.7.33 (prebid#202)

Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.32 to 0.7.33.
- [Release notes](https://github.com/faisalman/ua-parser-js/releases)
- [Changelog](https://github.com/faisalman/ua-parser-js/blob/master/changelog.md)
- [Commits](faisalman/ua-parser-js@0.7.32...0.7.33)

---
updated-dependencies:
- dependency-name: ua-parser-js
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump minimist, mkdirp, handlebars, karma-mocha and mocha (prebid#207)

Bumps [minimist](https://github.com/minimistjs/minimist) to 1.2.8 and updates ancestor dependencies [minimist](https://github.com/minimistjs/minimist), [mkdirp](https://github.com/isaacs/node-mkdirp), [handlebars](https://github.com/wycats/handlebars.js), [karma-mocha](https://github.com/karma-runner/karma-mocha) and [mocha](https://github.com/mochajs/mocha). These dependencies need to be updated together.


Updates `minimist` from 1.2.0 to 1.2.8
- [Release notes](https://github.com/minimistjs/minimist/releases)
- [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md)
- [Commits](minimistjs/minimist@v1.2.0...v1.2.8)

Updates `mkdirp` from 0.5.1 to 0.5.6
- [Release notes](https://github.com/isaacs/node-mkdirp/releases)
- [Changelog](https://github.com/isaacs/node-mkdirp/blob/main/CHANGELOG.md)
- [Commits](isaacs/node-mkdirp@0.5.1...v0.5.6)

Updates `handlebars` from 4.4.3 to 4.7.7
- [Release notes](https://github.com/wycats/handlebars.js/releases)
- [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/master/release-notes.md)
- [Commits](handlebars-lang/handlebars.js@v4.4.3...v4.7.7)

Updates `karma-mocha` from 1.3.0 to 2.0.1
- [Release notes](https://github.com/karma-runner/karma-mocha/releases)
- [Changelog](https://github.com/karma-runner/karma-mocha/blob/master/CHANGELOG.md)
- [Commits](karma-runner/karma-mocha@v1.3.0...v2.0.1)

Updates `mocha` from 5.2.0 to 10.2.0
- [Release notes](https://github.com/mochajs/mocha/releases)
- [Changelog](https://github.com/mochajs/mocha/blob/master/CHANGELOG.md)
- [Commits](mochajs/mocha@v5.2.0...v10.2.0)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
- dependency-name: mkdirp
  dependency-type: indirect
- dependency-name: handlebars
  dependency-type: indirect
- dependency-name: karma-mocha
  dependency-type: direct:development
- dependency-name: mocha
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump socket.io-parser from 4.2.1 to 4.2.4 (prebid#214)

Bumps [socket.io-parser](https://github.com/socketio/socket.io-parser) from 4.2.1 to 4.2.4.
- [Release notes](https://github.com/socketio/socket.io-parser/releases)
- [Changelog](https://github.com/socketio/socket.io-parser/blob/main/CHANGELOG.md)
- [Commits](socketio/socket.io-parser@4.2.1...4.2.4)

---
updated-dependencies:
- dependency-name: socket.io-parser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Improve resize logic for native (prebid#193)

* Log error when renderAd lookup failed (prebid#217)

* Emit AD_RENDER_SUCCEEDED and AD_RENDER_FAILED for native ads (prebid#199)

* Emit AD_RENDER_SUCCEEDED and AD_RENDER_FAILED for native ads

* Merge master

* Bump fsevents from 1.2.9 to 1.2.13 (prebid#220)

Bumps [fsevents](https://github.com/fsevents/fsevents) from 1.2.9 to 1.2.13.
- [Release notes](https://github.com/fsevents/fsevents/releases)
- [Commits](fsevents/fsevents@v1.2.9...v1.2.13)

---
updated-dependencies:
- dependency-name: fsevents
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Prebid Universal Creative 1.16.0 release

* re-applied freestar logic to new codebase

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Jiří Leták <jiri.letak@ibillboard.com>
Co-authored-by: Jason Snellbaker <jsnellbaker@appnexus.com>
Co-authored-by: Yuriy Velichko <yuriy.velichko@postindustria.com>
Co-authored-by: Yuriy Velichko <yuriy.velichko@openx.com>
Co-authored-by: jsnellbaker <31102355+jsnellbaker@users.noreply.github.com>
Co-authored-by: Demetrio Girardi <demetrio.girardi@gmail.com>
Co-authored-by: Demetrio Girardi <dgirardi@prebid.org>
Co-authored-by: bretg <bgorsline@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: anitaschiller <77627311+anitaschiller@users.noreply.github.com>
Co-authored-by: anita.schiller <anita.schiller@gutefrage.net>
Co-authored-by: Filip Stamenkovic <ficadub@gmail.com>
Co-authored-by: Michele Nasti <michele@rtk.io>
Co-authored-by: Michele Nasti <musikele@users.noreply.github.com>
Co-authored-by: Prebid.js automated release <prebidjs-release@prebid.org>
Co-authored-by: Sławomir Kokłowski <38455696+skoklowski@users.noreply.github.com>
Co-authored-by: skoklowski <slawomir.koklowski@ringieraxelspringer.pl>
Co-authored-by: Sir-Will <brieftaubenman@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants