Expected? HTML5 video + Widevine EME works top-level but fails inside a cross-origin iframe

Environment:

  • @amazon-devices/webview ^3.3.1769932800
  • @amazon-devices/react-native-kepler ^2.0.0, React Native 0.72
  • Vega TV device

We load a web-based HLS + Widevine player in a WebView. When the player page is the top-level document of the WebView, playback works perfectly, including L1 Widevine DRM.

When the same player page is loaded inside a cross-origin <iframe> (nested in another page that is itself the WebView’s top-level document), playback fails. This happens even though the iframe is declared with allow="autoplay; encrypted-media", and it affects even clear (non-DRM) video — the <video> element does not render.

Questions:

  1. Is this the expected behavior for the Vega WebView?
  2. Are hardware-accelerated / secure video surfaces supported for <video> inside a cross-origin iframe, or only in the top-level document?
  3. Is EME / Permissions-Policy delegation (encrypted-media, autoplay) to cross-origin subframes supported? If so, is any additional configuration required to enable it?

Thanks!

Hi @ScottW

Thank you for the detailed report.
We’re investigating this internally and will follow up with a definitive answer.

In the meantime, the recommended approach is:

  • Load your player page directly as the top-level document in the WebView.
  • Use the WebView messaging bridge (injectJavaScript + onMessage) to communicate between your RN app and the player page if you need to exchange data with a parent context.

Could you share more about why the iframe architecture is required? (e.g., multi-vendor player embedding, ad framework requirements, content isolation) This will help us prioritize.

Warm regards,
Ivy