v145 · Web APIs · Controlled Frame Context

Controlled Frame Context

What Controlled Frame is, how it compares to iframes and <webview>, the enterprise use cases it enables, and why SecurityInfo matters in this context.

Controlled Frame vs other embedding mechanisms

Capability <iframe> <webview> (deprecated) Controlled Frame
Embed arbitrary web content Limited (same-origin or CORS) Yes Yes
Intercept network requests No Yes (webRequest) Yes (webRequest)
SecurityInfo for TLS inspection No No Yes (Chrome 145+)
Isolated storage Shared (partitioned) Yes Yes
Available in All web pages Chrome Apps (deprecated) IWA (Isolated Web Apps)

enterprise use cases for SecurityInfo

// Controlled Frame is used by enterprise applications (IWAs) that need
// full control over embedded web content — kiosk browsers, enterprise
// SSO portals, content filtering proxies, etc.

// SecurityInfo enables:
// 1. Certificate pinning — block connections to untrusted CAs
// 2. TLS version enforcement — warn if site uses TLS 1.2 or weaker
// 3. Mixed content detection — identify insecure sub-resources
// 4. Security audit logging — record TLS posture of visited sites

// Example: enforce minimum TLS 1.3 in an enterprise kiosk
frame.request.onHeadersReceived.addListener(async details => {
  const info = await frame.request.getSecurityInfo(details.requestId, {});
  if (info.protocol !== 'TLS 1.3') {
    // Log, warn user, or block the request
    auditLog.write({ url: details.url, tls: info.protocol });
  }
}, { urls: ['https://*/*'] });

see also

scenario focus

Select a scenario to focus its rendered example and summary.