Skip to content

Geoedge RTD Provider: outstream video monitoring - #15416

Open
erani-n wants to merge 4 commits into
prebid:masterfrom
GeoEdge-new:geoedge-outstream-video
Open

Geoedge RTD Provider: outstream video monitoring#15416
erani-n wants to merge 4 commits into
prebid:masterfrom
GeoEdge-new:geoedge-outstream-video

Conversation

@erani-n

@erani-n erani-n commented Jul 29, 2026

Copy link
Copy Markdown

Type of change

  • Feature
  • Does this change affect user-facing APIs or examples documented on http://prebid.org?

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
outstream param the module wraps the bid's own renderer instead and asks the monitoring
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.

Also restores the export keywords the spec relies on, and adds JSDoc.

Docs PR: prebid/prebid.github.io#6687

Test results

  • gulp lint — clean, no output
  • gulp test --file test/spec/modules/geoedgeRtdProvider_spec.js — 46 tests completed,
    0 failed, both feature passes
  • Spec extended from 17 to 46 tests: detection legs, which renderers get wrapped,
    render-time enforcement, parked renders, and the fail-open deadline
  • Coverage on modules/geoedgeRtdProvider.js — 96.9% lines, 95.3% functions, 91.1% branches

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.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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".

Comment thread modules/geoedgeRtdProvider.js Outdated
@patmmccann

Copy link
Copy Markdown
Collaborator

did you see #15262

@github-actions

Copy link
Copy Markdown

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:

  • Changes to modules/geoedgeRtdProvider.js may need:
    • es.array.push
    • es.iterator.constructor
    • es.iterator.for-each
    • esnext.iterator.constructor
    • esnext.iterator.for-each
  • Changes to test/spec/modules/geoedgeRtdProvider_spec.js may need:
    • es.iterator.for-each
    • esnext.iterator.for-each

The best way to address this is to provide good test coverage, as normal PR checks run unit tests on older browsers.

@erani-n

erani-n commented Aug 2, 2026

Copy link
Copy Markdown
Author

@patmmccann Hadn't seen it, thanks. I'd renamed some of the same symbols differently, which
would have conflicted, so I've adopted your naming instead: clientLoaded, markClientAsLoaded,
loadClientInIframe, clientReady, plus the params.wap wording.

Applied directly rather than cherry-picked, since your patch expects the pre-rename symbols
and would conflict on most hunks.

Happy either way on ordering. If you'd rather land #15262 first I'll rebase, the conflict
resolution is trivial now that the names match. Otherwise this supersedes it.

I also carried the wording into the docs PR (prebid/prebid.github.io#6687), which #15262
didn't cover, so "preload" would otherwise have survived on the published page.

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.

2 participants