Geoedge RTD Provider: outstream video monitoring - #15416
Conversation
Video creatives are VAST rather than HTML, so there is no markup to wrap. With the new `outstream` param the module wraps the bid's own renderer instead and asks the client whether the creative may run. If the client does not load in time the creative renders anyway — an ad is never lost because monitoring was unavailable. Bids carrying a safeRenderer are skipped, since prebid loads that renderer's own script and never calls bid.renderer. getInitialParams also carries `pbjs: getGlobal()` into the preloaded frame, so the client gets a direct handle instead of resolving the global by name via `_pbjsGlobals`. The frame is same-origin, so this grants no new capability — it only removes the lookup. Restores the `export` keywords the spec relies on, adds JSDoc, and extends the spec from 17 to 46 tests covering detection, wrapping, render-time enforcement, parked renders and the fail-open deadline.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d167d9bbd4
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
did you see #15262 |
|
This PR introduces changes that may not work on all browsers. According to Babel, the following polyfills may be needed, and they are not automatically included:
The best way to address this is to provide good test coverage, as normal PR checks run unit tests on older browsers. |
|
@patmmccann Hadn't seen it, thanks. I'd renamed some of the same symbols differently, which Applied directly rather than cherry-picked, since your patch expects the pre-rename symbols Happy either way on ordering. If you'd rather land #15262 first I'll rebase, the conflict I also carried the wording into the docs PR (prebid/prebid.github.io#6687), which #15262 |
|
actually nevermind i';; close that and we can use this one |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 01808390d8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Adapters may reuse one Renderer across bids (ozone caches one at module scope). The gate wrapped it once and closed over the first bid, so later bids were judged by the first creative: a clean bid could be dropped, a blocked one released. The parked-render path stored the captured bid too. gateOutstreamRender now takes the renderer and reads the bid from the render arguments, which executeRenderer has passed first since v8. isVastBid moved up to onBidResponse, so a VAST bid whose renderer is already gated no longer falls through to the display wrapper. params.bidders is now passed to the client, so the opt-out covers its inspection. Seven tests for a shared renderer; five fail if the capture is reinstated.
|
Hi @ncolletti , just a gentle ping when you get a chance. The PR already has one approval from @patmmccann and the docs PR is approved as well. Please let me know if there’s anything else needed from my side. Thanks! |
Type of change
Description of change
Adds outstream video monitoring to the Geoedge RTD module.
Video creatives are VAST rather than HTML, so there is no markup to wrap. With the new
outstreamparam the module wraps the bid's own renderer instead and asks the monitoringclient whether the creative may run. If the client does not load in time the creative
renders anyway — an ad is never lost because monitoring was unavailable. Bids carrying a
safeRendererare skipped, since prebid loads that renderer's own script and never callsbid.renderer.getInitialParamsalso carriespbjs: getGlobal()into the preloaded frame, so the clientgets a direct handle instead of resolving the global by name via
_pbjsGlobals. The frameis same-origin, so this grants no new capability — it only removes the lookup.
Also restores the
exportkeywords the spec relies on, and adds JSDoc.Docs PR: prebid/prebid.github.io#6687
Test results
gulp lint— clean, no outputgulp test --file test/spec/modules/geoedgeRtdProvider_spec.js— 46 tests completed,0 failed, both feature passes
render-time enforcement, parked renders, and the fail-open deadline
modules/geoedgeRtdProvider.js— 96.9% lines, 95.3% functions, 91.1% branches