Interested in the future direction of CEF? Follow the conversation or add comments on the CEF Future Direction thread.
IntroductionThe chromium embedded framework (CEF) is a project composed of multiple parts. The core of the project is a static library, called libcef. Libcef encapsulates a standard chromium browser implementation, including window creation, resource loading, printing, context menus and other basic capabilities. The embedded client user can customize the default functionality and handle browser notifications by registering delegate interfaces. The user of CEF is completely insulated from the underlying chromium layer, similar to how the chromium layer insulates users from WebKit objects. The libcef_dll project wraps the core libcef library in an exported C API. The libcef_dll_wrapper project then wraps the C API with the same CEF C++ interfaces allowing transparent use of both the static and dynamic CEF builds. As time goes on other interfaces will be built on top of libcef that provide easy access to the CEF core capabilities from development frameworks such as ActiveX, MFC, wxWidgets and so on.
Binary DistributionsBinary distributions, which include all files necessary to build a CEF-based application, are available in the Downloads section. Binary distributions are stand-alone and do not require the download of CEF or Chromium source code.
Source DistributionsThe CEF project is an extension of the Chromium project hosted at http://www.chromium.org. To build CEF from source code you must first download Chromium as described at http://dev.chromium.org/developers/how-tos/get-the-code. The CEF files must then be placed in the top-level Chromium "src" directory, at the same level as the "base", "chrome", and "third-party" directories. For instance, if your Chromium installation directory is C:\svn\Chromium\src then the CEF files should reside in C:\svn\Chromium\src\cef. The CHROMIUM_BUILD_COMPATIBILITY file provides information about compatibility between CEF and Chromium revisions.
To update to a specific Chromium revision, use
gclient sync --revision src@#### --force
and the DEPS file will make sure you get the other directories in their matching forms.
Run the cef_create_projects.bat script in the CEF root directory to generate Visual Studio project files from the GYP configuration. If both VS2005 and VS2008 are installed on your system you can set the GYP_MSVS_VERSION environment variable to "2005" or "2008" before running cef_create_projects.bat to create project files for that version.
To download CEF source code updates and run the cef_create_projects.bat script automatically every time Chromium sources are updated you can integrate CEF with the gclient tool. Edit the .gclient file that resides in the parent directory of Chromium "src" ("C:\svn\Chromium" in the above example) and add the following lines to the existing solutions array:
solutions = [
{ #Existing definitions here...
},
# BEGIN NEW LINES
{ "name" : "src/cef",
"url" : "http://chromiumembedded.googlecode.com/svn/trunk",
},
#END NEW LINES
]SupportAn overview of CEF usage is available on the General Usage Wiki page. CEF support and related discussion is available on the CEF Forum.
Notable ChangesNot all revisions are listed here. View the Changes list to see the complete list of revisions.
October 2, 2009: Revision 50 adds GYP support for generating the CEF project files. This makes it easy to build CEF with both VS2005 and VS2008. See the "Source Distributions" section above for additional details.
August 21, 2009: Revision 37 adds support for custom scheme handlers. Use the new CefRegisterScheme() function in combination with the CefSchemeHandlerFactory and CefSchemeHandler classes to create handlers for requests using custom schemes such as myscheme://mydomain.
July 24, 2009: Revision 32 helps to speed up the addition of new features and bug fixes to CEF. It adds the CEF Patch Application Tool and the "patch" project which together support automatic application of patches to the Chromium and WebKit source trees as part of the build process. See the README.txt file in the new patch directory for additional information.
July 8, 2009: CEF now has a dedicated build bot thanks to Nicolas Sylvain and Darin Fisher over at Google. The build bot synchronizes to each Chromium revision and then builds CEF, reporting on any compile errors that occur. Having a build bot for CEF will help the Chromium developers avoid accidentally breaking API features required by CEF, and help the CEF developers keep up with the frequently changing Chromium HEAD revision. You can view the build bot output at http://build.chromium.org/buildbot/waterfall.fyi/waterfall?branch=&builder=Chromium+Embedded
June 20, 2009: Revision 30 adds the CEF Translator Tool which facilitates automatic generation of the C API header file (cef_capi.h) and CToCpp/CppToC wrapper classes. See the translator.README.txt file in the new tools directory for additional information. Introduction of this tool required minor changes to the CEF C++ and C APIs.
The C++ 'arguments' attribute of CefV8Handler::Execute() and CefV8Value::ExecuteFunction() now has the 'const' qualifier. C API global function names that were previously in the cef_create_classname() format are now in the cef_classname_create() format. The C API cef_frame_t::get_frame_names() member function now has return type 'void' instead of 'size_t'. The C API cef_frame_t::execute_javascript() member function has been renamed to cef_frame_t::execute_java_script().
May 27, 2009: Revision 26 introduces two major changes to the CEF framework.
Frame-dependent functions such as loading content and executing JavaScript have been moved to a new CefFrame class. Use the new CefBrowser::Get*Frame() methods to retrieve the appropriate CefFrame instance. A CefFrame instance will now also be passed to CefHandler callback methods as appropriate. The CEF JavaScript API now uses the V8 framework directly instead of creating NPObjects. JavaScript object hierarchies can be written in native C++ code and exported to the JavaScript user-space, and user-space object hierarchies can be accessed from native C++ code. Furthermore, support for the V8 extension framework has been added via the new CefRegisterExtension() function. The CefJSHandler and CefVariant classes have been removed in favor of new CefV8Handler and CefV8Value classes. To attach values to the JavaScript 'window' object you must now implement the CefHandler::HandleJSBinding() callback method instead of calling the (now removed) CefBrowser::AddJSHandler() method.
Future CapabilitiesThe following advanced capabilities will be added to the framework at a later time.
Support "themes" for customizing user interface elements such as buttons, scroll bars, etc. Provide access to and support manipulation of the DOM structure. Work In ProgressCEF is still very much a work in progress. If you're looking for ways to contribute please view the open issues or do a search for TODO(cef) in the source code. We also need to write unit tests for all of the supported functionality.
30 Day Summary Nov 12 2011 — Dec 12 2011
|
12 Month Summary not available |
Copyright
©
2013
Black Duck Software, Inc.
and its contributors, Some Rights Reserved. Unless otherwise marked, this work is licensed under a
Creative Commons Attribution 3.0 Unported License
. Ohloh
®
and the Ohloh logo are trademarks of
Black Duck Software, Inc.
in the United States and/or other jurisdictions. All other trademarks are the property of their respective holders.