Starting with M125 the CEF Alloy runtime has been split into separate style and bootstrap components. Both Chrome style and Alloy style browsers/windows can now be created while using the Chrome bootstrap. The Alloy bootstrap is considered deprecated and has been removed starting with the M128 release.
Background
CEF currently supports two bootstraps, the Chrome bootstrap and the Alloy bootstrap. Alloy bootstrap usage has been required up to this point for use cases such as external (native) parent and windowless (off-screen) rendering. Starting with M125 it is now possible to create Alloy style browsers for these use cases while running with the Chrome bootstrap. The final step of this migration process is the removal of Alloy bootstrap code in current master (M128 release).
Running with the Alloy bootstrap (CefSettings.chrome_runtime = false) will generate a warning message starting with M125. The message looks like this:
[WARNING:main_runner.cc(272)] Alloy bootstrap is deprecated and will be removed in ~M127. See https://github.com/chromiumembedded/cef/issues/3685
Testing
The CEF Sample Application (cefclient on Windows/MacOS, cefsimple on Linux) is available for download here and supports the Chrome and Alloy bootstraps as specified below. Additional test applications, including CEF unit tests (ceftests), can be built and run using the Standard Distribution.
- Chrome bootstrap is supported but default disabled in cefclient & cefsimple versions 125.0.11 and older. To test the Chrome bootstrap in these versions add the
--enable-chrome-runtimecommand-line flag. - Chrome bootstrap is default enabled in cefclient & cefsimple versions 125.0.14 and newer. To test the Alloy bootstrap in these versions add the
--disable-chrome-runtimecommand-line flag.
Chrome bootstrap + Chrome style is supported in all recent versions (add --enable-chrome-runtime if required). Modes supported with Chrome bootstrap + Chrome style:
- Views framework: Enabled by default (cefclient & cefsimple)
- External (native) parent: Add
--use-native(cefclient only & Windows/Linux only) - Fully styled Chrome UI window: Add
--use-native(cefsimple only)
Chrome bootstrap + Alloy style is supported but default disabled in versions 125.0.8 and newer (add --use-alloy-style to enable, and --enable-chrome-runtime if required). Modes supported with Chrome bootstrap + Alloy style:
- Views framework: Enabled by default with cefclient, add
--use-viewswith cefsimple - Windowless (off-screen) rendering: Add
--off-screen-rendering-enabled(cefclient only) - External (native) parent: Enabled by default with cefsimple, add
--use-nativewith cefclient
See here for additional testing instructions including various runtime modes and unit test commands.
Migration Route
Windowed applications using Alloy style may wish to use Chrome style as it provides substantially more default functionality (details here). To switch a windowed application from Alloy style to Chrome style simply set CefSettings.chrome_runtime = true before calling CefInitialize.
Migrating an application from the Alloy bootstrap to the Chrome bootstrap while keeping Alloy style is a bit more involved. Here are the steps:
- Set
CefSettings.chrome_runtime = truebefore callingCefInitialize. - Make the following changes depending on your Alloy usage:
- With external parent: Set
CefWindowInfo.runtime_style = CEF_RUNTIME_STYLE_ALLOYbefore callingCefBrowserHost::CreateBrowser. - With windowless rendering: Alloy style is used by default.
- With the Views framework: Return
CEF_RUNTIME_STYLE_ALLOYfromCefWindowDelegate::GetWindowRuntimeStyleandCefBrowserViewDelegate::GetBrowserRuntimeStyle.
- With external parent: Set
What's Different
Chrome bootstrap + Alloy style behavior differs from Alloy bootstrap in the following significant ways:
- Supports Chrome error pages by default.
- DevTools popups are Chrome style only (cannot be windowless).
- The Alloy extension API is not supported (has been removed in M128). The Chrome extension API is supported with Chrome style browsers/windows only.
Known issues specific to Chrome bootstrap + Alloy style:
DevTools popups don't load successfully in combination with windowless rendering. Use windowed rendering or remote debugging as a workaround.(fixed in 99c85e3 )
Reporting Issues
If you run into any additional issues while migrating your application to the Chrome bootstrap please let us know by posting on the CEF Forum or filing a bug in the CEF issue tracker.