Hello, Chromium Embedders.
We intend to migrate the implementation of Chrome Apps Webview (and Guest Views in general) to the Multiple Page Architecture (MPArch).
The current architecture involves representing a Guest View as a WebContents and embedding that inside another WebContents. The MPArch project aims to unify the implementations of features involving nesting pages inside other pages. Guest View is one such feature.
See the design doc for details on the migration. In summary, a guest will no longer be associated with an inner WebContents, but rather with a guest specific class which internally owns a FrameTree and gives content embedders access to relevant functionality (e.g. access to the guest’s NavigationController).
Note that there are two intentional behaviour changes that will come before this migration, and will roll out behind a temporary opt-out flag and enterprise policy. The first is that a <webview> will no longer show SSL error interstitials, and will instead use a plain error page. The latter does not give the option to unsafely proceed. The second is a limitation on cross-WebContents <webview> newwindow usage. See the design doc for details.
Other than those two cases, <webview> users shouldn’t experience any disruptions. However, downstream C++ code that interacts with <webview>s could require updates. Of particular note here is Electron, which uses its own calls to AttachInnerWebContents (github) which will need to change.
As of this writing, the MPArch implementation has not yet been introduced to the code base. See the implementation meta bug for updates. We’ll also make updates to this thread, once the implementation is far enough along. Also note that you can expect that <webview> site isolation will have launched before these changes take effect.
Please let us know of any concerns.