ArchitectureFeatures - rentouch/cefpython GitHub Wiki
Architecture & Features
Table of contents:
CEF 3 summary
- supports html5 audio/video, good performance of webgl and other accelerated content
- uses multi process architecture and Chromium Content API, thus giving performance and features similar to Chrome
- V8 engine is runing in a separate process so javascript integration can be done only through asynchronous messaging between processes, in CEF 1 you can call javascript and python back synchronously
- single process is for debugging purposes only, it is unstable, it will likely be fixed in the future as Chromium for mobile devices needs a stable single-process mode
CEF 3 comes with the the latest version of Chrome.
For more information on CEF architecture see this wiki page on the Chromium Embedded project: http://code.google.com/p/chromiumembedded/wiki/Architecture
CEF 3 features ported in CEF Python 3
- Frame object
- Browser object
- ApplicationSettings
- BrowserSettings
- DownloadHandler
- JavascriptBindings
- JavascriptCallback
- Python callbacks
- JavascriptContextHandler (partially)
- JavascriptDialogHandler
- RequestHandler
- Request object
- WebPluginInfo
- Cookie
- CookieManager
- CookieVisitor
- LoadHandler
- RenderHandler
- ResourceHandler
- Response object
- WebRequest and WebRequestClient
- LifespanHandler (partially)
CEF 3 features not yet ported to CEF Python 3
- context menu handler & menu model - API is not provided, but context menu is configurable, see ApplicationSettings.
context_menu - dialog handler
- dom manipulation - won't be implemented as it was deprecated and has memory leaks. The recommended way is to manipulate DOM through javascript and report to python through javascript bindings.
- focus handler
- geolocation & geolocation handler
- origin whitelist
- proxy handler
- render process handler
- resource bundle handler
- custom scheme
- stream reader & writer for request response
- trace notifications & trace event
- web plugin (WebPluginInfo already implemented)
- xml reader
- zip reader
CEF 1 summary
- single process architecture
- more feature complete API than in CEF 3 (as of the moment)
- html5 audio and video support was removed (see Issue 18)
- uses Webkit API
- reduced memory usage and closer integration with the client application
- reduced performance with certain types of accelerated content and crashes due to plugins like Flash running in the same process.
CEF 1 is currently in maintenance mode and the latest version available includes Chrome 27.
Known problems in CEF 1
Flash plugin will crash on Linux, see Issue 553 in CEF Issue Tracker. However, Pepper Flash Player might work in CEF 3 on Linux (not yet tested).
CEF 1 features ported to CEF Python 1
- Frame object
- Browser object
- application settings
- browser settings
- javascript bindings
- javascript callbacks & python callbacks
- display handler
- keyboard handler
- lifespan handler (partially)
- load handler
- render handler
- request handler (partially)
- Response object
- javascript context handler (partially)
- ContentFilter for resource response
- Request object
- StreamReader for request response
- WebRequest
- Cookie class
- CookieManager class
- CookieVisitor callbacks
- DownloadHandler
- DragHandler
- DragData
CEF 1 features not yet ported to CEF Python 1
- dom manipulation - won't be implemented as it was deprecated and has memory leaks. The recommended way is to manipulate DOM through javascript and report to python through javascript bindings.
- find handler
- focus handler
- geolocation & geolocation handler
- jsdialog handler
- menu handler
- plugin info
- origin whitelist
- javascript extensions
- permission handler for extensions
- print handler
- proxy handler
- resource bundle handler
- custom scheme
- web plugin
- xml reader
- zip reader
- zoom handler