Hi All,
CEF is over a year old now and the time has come to discuss where it should be heading in the future. As many of you know, CEF is based on the test_shell application that is part of the Chromium project. The test_shell application is used by Chromium as the testing platform for the Chromium WebKit API layer. As a result of its origins CEF has a single-process architecture and does not support tabs, extensions or other browser-provided user interface features.
The Chromium developers are in the process of moving the Chromium WebKit API testing framework into the WebKit source tree [1] [2]. As a necessary aspect of this up-streaming effort important parts of the test_shell application are being generalized and re-implemented in ways that are not always performance-oriented. For this and other reasons CEF, like test_shell, suffers from a performance standpoint relative to the Chromium browser application [3]. Further complicating future CEF development is the possibility that the test_shell application may disappear completely [4]. If test_shell disappears or becomes severely limited it will be increasingly difficult for us to identify how CEF needs to change in order to keep up with underlying Chromium changes.
Instead of keeping CEF based on the test_shell application I propose that we build the future version of CEF as a customization of the Chromium browser application itself. CEF currently has tools that allow it to automatically patch Chromium source files and GYP configuration files as part of the build process. This patch capability allows us to more intrusively modify the Chromium source tree while still supporting those changes independently. Furthermore, I have demonstrated in the past [5] that it is possible to embed the Chromium browser application window in a separate client application.
Below is a short list of what I believe to be the main pros and cons of the Chromium customization approach.
PROS
a. All existing Chromium browser capabilities, including the multi-process framework, tabs, history, bookmarks, i18n, extensions, etc, can be made available to CEF clients.
b. CEF will offer equivalent performance to the Chromium browser.
c. The CEF code footprint may decrease leading to the potential for decreased development/support requirements.
d. Most of the existing CEF usage and APIs could remain the same.
CONS
a. A significant initial development effort will be required.
b. The CEF distributable size and complexity will increase, though this increase could be mitigated by selectively excluding Chromium features from the build.
c. The concept of embedded NPAPI plugins will need to be reworked.
What do you think?
Regards,
Marshall
[1] http://trac.webkit.org/wiki/Chromium
[2] http://www.chromium.org/developers/desi ... ayouttests
[3] http://groups.google.com/group/chromium ... e2024550a6
[4] http://groups.google.com/group/chromium ... e5591c87ca
[5] http://codereview.chromium.org/10973/show