As one of this feature's spec mentors, I'd like to offer a spec maturity statement <https://www.chromium.org/blink/spec-mentors/#reviewing-the-specification>. Since this feature was last discussed, Robbie and the team have made the changes that API OWNERs and spec reviewers, including myself, have requested. This addressed concerns about non-webby/legacy Chrome Apps APIs creeping into the *Web Request API* surface, as well as concerns about proper event handling integration with the *Context Menus API*. These changes have been discussed and designed in Controlled Frame API Changes <https://docs.google.com/document/d/1ixlpnalIk6WhSlZET7_tyRsr3Y1ykiKbxIXR0l_YnkE/edit?tab=t.z85t9gvxifrc#heading=h.obq4y7ssx2wq> & Controlled Frame WebRequest API <https://docs.google.com/document/d/1ixlpnalIk6WhSlZET7_tyRsr3Y1ykiKbxIXR0l_YnkE/edit?tab=t.0#heading=h.h1ozrw86mlsa> (Google-internal, sorry), and led to pull requests ( https://github.com/WICG/controlled-frame/pull/138#pullrequestreview-2976534728, https://github.com/WICG/controlled-frame/pull/144, https://github.com/WICG/controlled-frame/pull/143, etc.) that myself or other mentors have approved.
Additionally, tons of quality and rigor improvements have been made (ex <https://github.com/WICG/controlled-frame/pull/140>, ex <https://github.com/WICG/controlled-frame/pull/136>, ex <https://github.com/WICG/controlled-frame/pull/132>, ex <https://github.com/WICG/controlled-frame/pull/121>, ex <https://github.com/WICG/controlled-frame/pull/117>), so huge thanks to Robbie for this! The spec is in much better shape, and we're finally ready to circle back here for a round of reviews! On Mon, Apr 14, 2025 at 2:26 PM Robbie McElrath <rmcelr...@chromium.org> wrote: > We're now targeting M138 to give us more time to improve the spec. > > There hasn't been any spec progress in the last 2 weeks due to some > unfortunately timed vacations, but I'll be picking that up again starting > today and responding to feedback from Reilly and Dominic. > > On Monday, April 14, 2025 at 11:14:08 AM UTC-7 Alex Russell wrote: > >> Any updates here? >> >> On Tuesday, March 18, 2025 at 7:34:04 PM UTC-7 Domenic Denicola wrote: >> >>> On Tuesday, March 18, 2025 at 8:39:21 AM UTC+9 Robbie McElrath wrote: >>> >>> Contact emails >>> >>> rmcelr...@chromium.org, ze...@chromium.org >>> >>> Explainer >>> >>> https://github.com/WICG/controlled-frame/blob/main/README.md >>> >>> Specification >>> >>> https://wicg.github.io/controlled-frame >>> >>> >>> This is a large specification effort, so thank you for working on it! >>> >>> Unfortunately, it seems pretty incomplete right now. E.g. stuff like >>> https://wicg.github.io/controlled-frame/#dom-htmlcontrolledframeelement-executescript >>> step 7 or >>> https://wicg.github.io/controlled-frame/#dom-htmlcontrolledframeelement-insertcss >>> steps 6-8 are not really specification text, just explainer text in numeric >>> list format. Similarly >>> https://wicg.github.io/controlled-frame/#traverse-an-embedded-navigables-history >>> has a pretty bad TODO. And stuff like >>> https://wicg.github.io/controlled-frame/#validate-embedded-content also >>> makes it seem like the specification is not ready. >>> >>> To me it doesn't seem like this specification is at the level we require >>> <https://www.chromium.org/blink/guidelines/web-platform-changes-guidelines/#specifications>, >>> i.e. enough to allow interoperable implementation between multiple engines. >>> >>> Could you keep working on writing a complete specification, and come >>> back to us for shipping approval when such a spec is ready? >>> >>> I'm also concerned about the section at >>> https://wicg.github.io/controlled-frame/#api-web-request , which >>> basically seems to be saying that the proposal authors aren't working to >>> create a web platform standard here, but instead ship a Chrome Apps API to >>> the web. I don't know if that's an appropriate thing for us to approve >>> through the Blink process. Even beyond the issue of creating a rigorous >>> specification, that decision might need more discussion. >>> >>> >>> >>> Summary >>> >>> Adds a Controlled Frame API available only to Isolated Web Apps (IWAs). >>> >>> This work will add a new Controlled Frame API which is only available to >>> Isolated Web Apps (IWAs). Like WebView APIs on other platforms, Controlled >>> Frame allows embedding all content, even third party content that can't be >>> embedded in <iframe>. Controlled Frame also allows controlling embedded >>> content with a collection of API methods and events. >>> >>> For more info on Isolated Web Apps, see the IWA explainer: >>> https://github.com/WICG/isolated-web-apps/blob/main/README.md >>> >>> >>> Blink component >>> >>> Blink>ControlledFrame >>> <https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EControlledFrame%22> >>> >>> TAG review >>> >>> https://github.com/w3ctag/design-reviews/issues/1067 >>> >>> TAG review status >>> >>> Pending >>> >>> Risks >>> Interoperability and Compatibility >>> >>> This is a new API available only within IWAs. As a new API, it is >>> subject to the risk that other browsers may not implement it. However, >>> other browsers must also implement IWAs, and for now we are advancing this >>> to assist our dev partners that are migrating from Chrome Apps. >>> >>> The API allows embedding third-party (non-IWA) content. The content will >>> be loaded within dedicated storage partitions managed by the embedding >>> application and won't have access to the same site's content as if it was >>> loaded in a tab. >>> >>> >>> Gecko: No signal >>> >>> WebKit: No signal >>> >>> Web developers: The WebView API that Controlled Frame is based on has >>> been used by developers for 15+ years for the use cases outlined in the >>> explainer. Feedback for Controlled Frame specifically has been requested. >>> >>> Other signals: Controlled Frame is very similar to WebView APIs. Work >>> in W3C around WebViews is on-going, documenting their existing and >>> potential uses. We have been participating in discussions and hope to offer >>> insights with our design, implementation, and community feedback. Internal >>> partners have requested embedding APIs that can be used in web apps. >>> >>> Ergonomics >>> >>> The Controlled Frame API is based on the Chrome Apps WebView API, which >>> has had the benefit of years of developer partner experience and feedback. >>> We included some adjustments to the API to ensure it fits into web >>> technologies like permissions and permissions policy, incorporated >>> developer partner feedback, and changed or removed some API elements based >>> on need. >>> >>> Activation >>> >>> Developers must build an IWA to use the Controlled Frame API. The IWA >>> they build must then be deployed, currently using managed distribution via >>> enterprise policy. These hurdles present significant activation risk since >>> each of these are new technologies and require interaction with multiple >>> systems. >>> >>> Once the IWA is built, using the Controlled Frame element may require >>> some direct engagement since the methods used to interact with embedded >>> content are complicated. We recommend additional developer documentation >>> and outreach directly with development partners. >>> >>> >>> Security >>> >>> Controlled Frame is only available to IWAs, which restricts the API so >>> that it's not accessible to normal web pages and normal web applications. >>> >>> Controlled Frame integrates with Permissions Policy and requires the IWA >>> to include the "controlled-frame" policy-controlled feature in the IWA >>> manifest in order for the feature to be enabled. >>> >>> Controlled Frame containers inherit a permissions policy from the >>> embedding frame and policy-controlled features are only available if those >>> features are enabled in the embedding frame. Features that use permissions >>> require the embedder to allow those permissions, and the embedder itself >>> must already have that permission in order to allow the embedded content to >>> use it. >>> >>> WebView application risks >>> >>> This API is not available on Android, and has no impact on Android >>> WebView. >>> >>> >>> Debuggability >>> >>> Console messages within a nested browsing context fire an event that the >>> embedder can choose to display (e.g. to the user, via console.log() to show >>> it in DevTools, etc). >>> >>> Events are generated in the API for certain kinds of actions that occur >>> within an embedded frame's lifetime. >>> >>> DevTools is available within the embedded content. >>> >>> >>> Will this feature be supported on all six Blink platforms (Windows, Mac, >>> Linux, ChromeOS, Android, and Android WebView)? >>> >>> No. The Controlled Frame API is not currently supported on Android. >>> (This work is conceptually similar to Android WebView but is unrelated as >>> this proposal targets building a WebView-related API for IWAs.) Initially >>> the API environment is exposed only on ChromeOS >>> >>> >>> Is this feature fully tested by web-platform-tests >>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>> ? >>> >>> No. WPT does not support PWA/IWA test environments. Once that support >>> is available, we can investigate adding IWA-focused WPT tests. >>> >>> Until then, we have built a pseudo-WPT test environment so we can write >>> WPT-like tests that work in an IWA context. These are available for review >>> in the Chromium code repository: >>> >>> //chrome/test/data/controlled_frame: >>> >>> https://source.chromium.org/chromium/chromium/src/+/main: >>> chrome/test/data/controlled_frame/ >>> >>> //chrome/browser/controlled_frame/controlled_frame_wpt_browsertest.cc: >>> >>> https://source.chromium.org/chromium/chromium/src/+/main: >>> chrome/browser/controlled_frame/controlled_frame_wpt_ >>> browsertest.cc?q=add_content_scripts&ss=chromium%2Fchromium%2Fsrc >>> >>> >>> DevTrial instructions >>> >>> https://github.com/WICG/controlled-frame/tree/main/test_app >>> >>> Flag name on about://flags >>> >>> ControlledFrame >>> >>> Finch feature name >>> >>> None >>> >>> Non-finch justification >>> >>> None >>> >>> Requires code in //chrome? >>> >>> True >>> >>> Tracking bug >>> >>> https://crbug.com/40191772 >>> >>> Launch bug >>> >>> https://launch.corp.google.com/launch/4283394 >>> >>> Measurement >>> >>> https://chromestatus.com/metrics/feature/timeline/popularity/5205 >>> >>> Sample links >>> >>> https://github.com/WICG/controlled-frame/tree/main/test_app >>> >>> Estimated milestones >>> >>> Shipping on desktop >>> >>> 136 >>> >>> DevTrial on desktop >>> >>> 114 >>> >>> >>> Anticipated spec changes >>> >>> We’re currently working on expanding many sections of the spec. >>> >>> >>> Link to entry on the Chrome Platform Status >>> >>> https://chromestatus.com/feature/5199572022853632?gate=5134483605422080 >>> >>> Links to previous Intent discussions >>> >>> Intent to Prototype: https://groups.google.com/a/ >>> chromium.org/d/msgid/blink-dev/CAKcCwFPo79ELzrS5qDcbXNM9K71c1 >>> a964uqWpMxK0AZNzOXa1w%40mail.gmail.com >>> >>> >>> This intent message was generated by Chrome Platform Status >>> <https://chromestatus.com/>. >>> >>> -- > You received this message because you are subscribed to the Google Groups > "blink-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to blink-dev+unsubscr...@chromium.org. > To view this discussion visit > https://groups.google.com/a/chromium.org/d/msgid/blink-dev/34efd23d-c12b-433d-9994-b4b71e891472n%40chromium.org > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/34efd23d-c12b-433d-9994-b4b71e891472n%40chromium.org?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAP-uykA5_y_b%3DCzAadrP4L0-OpMnOCgoSpLoQWBYQbZJcHSmgg%40mail.gmail.com.