도전2022

chromiumembedded A simple framework for embedding chromium browser windows in other applications. 본문

소스코드

chromiumembedded A simple framework for embedding chromium browser windows in other applications.

hotdigi 2012. 8. 1. 03:02

http://code.google.com/p/chromiumembedded/


Project Information
 Members
Links

Introduction

The Chromium Embedded Framework (CEF) is an open source project founded by Marshall Greenblatt in 2008 to develop a Web browser control based on the Google Chromium project. CEF currently supports a range of programming languages and operating systems and can be easily integrated into both new and existing applications. It was designed from the ground up with both performance and ease of use in mind. The base framework includes C and C++ programming interfaces exposed via native libraries that insulate the host application from Chromium and WebKit implementation details. It provides close integration between the browser control and the host application including support for custom plugins, protocols, JavaScript objects and JavaScript extensions. The host application can optionally control resource loading, navigation, context menus, printing and more, while taking advantage of the same performance and HTML5 technologies available in the Google Chrome Web browser.

Numerous individuals and organizations contribute time and resources to support CEF development, but more involvement from the community is always welcome. This includes support for both the core CEF project and external projects that integrate CEF with additional programming languages and frameworks (see the "External Projects" section below). If you are interested in donating time to help with CEF development please see the "Helping Out" section below. If you are interested in donating money to support general CEF development and infrastructure efforts please visit the CEF Donations page.

Binary Distributions

Binary 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. Symbol files for debugging binary distributions of libcef can be downloaded from here.

Source Distributions

The CEF project is an extension of the Chromium project hosted at http://www.chromium.org. CEF maintains development and release branches that track Chromium branches. CEF source code can be downloaded, built and packaged manually or with automated tools. Visit theBranchesAndBuilding Wiki page for more information.

External Projects

The base CEF framework includes support for the C and C++ programming languages. Thanks to the hard work of external maintainers CEF can now integrate with a number of other programming languages and frameworks. These external projects are not maintained by CEF so please contact the respective project maintainer if you have any questions or issues.

If you're the maintainer of a project not listed above and would like your project listed here please either post to the CEF Forum or contact Marshall directly.

Support

An overview of CEF usage is available on the General Usage Wiki page. CEF support and related discussion is available on the CEF Forum.

Helping Out

CEF is still very much a work in progress. Some ways that you can help out:

- Star issues in the CEF issue tracker that are important to you. This helps with development prioritization.

- Report any bugs that you find or feature requests that are important to you. Make sure to first search for existing issues before creating new ones. Please use the CEF Forum and not the issue tracker for usage questions. Each CEF issue should:

  • Include the CEF revision or binary distribution version.
  • Include information about your OS and compiler version.
  • If the issue is a bug please provide detailed reproduction information.
  • If the issue is a feature please describe why the feature is beneficial.

- Write unit tests for existing functionality.

- Patches are always welcome. View open issues in the CEF issue tracker or search for TODO(cef) in the source code for ideas.

If you would like to submit patches for CEF please follow the below guidelines:

- Create or find an appropriate issue for each distinct bug, feature or change.

- Create a patch with your changes and attach it to the CEF issue. Patches should be against the current CEF trunk revision unless explicitly fixing a bug in a CEF branch. Patches should:

  • Follow the style of existing CEF source files. In general CEF uses the Chromium coding style.
  • Not include unnecessary changes.

Notable Changes

Not all revisions are listed here. View the Changes list to see the complete list of revisions.

June 28, 2012: Version 3.1180.719 is the first binary release of CEF3. Below is an overview of features supported by this release. See the CEF3 Development Status thread for more information.

April 26, 2012: Version 1.1025.607 contains the following enhancements and bug fixes.

  • Break cef.h into multiple headers ( issue #142 ).
  • Add the ability to disable or customize pack file load paths ( issue #236 ).
  • Allow custom resource bundle handling via CefResourceBundleHandler ( issue #236 ).
  • Remove the CefV8Value::CreateObject variant that accepts only one argument ( issue #449 ).
  • Invalidate the entire scroll rect when using off-screen rendering mode ( issue #469 )
  • Add the ability to restrict V8 extension loading by frame using a new CefPermissionHandler::OnBeforeScriptExtensionLoad() callback ( issue #471 ).
  • Make CEF compliant with Google/Chromium style ( issue #473 ).
  • Add methods to CefV8Value for specifying the amount of externally allocated memory associated with the V8 object ( issue #478 ).
  • Don't add the "--expose-gc" V8 flag by default for all CEF users ( issue #483 ).
  • Fix bug in CefZipArchive::Clear() ( issue #486 ).
  • Mac: Fix the "no autorelease pool in place" error by initializing an NSAutoreleasePool on every thread ( issue #502 ).
  • Fix memory leak in CefV8ValueImpl::ExecuteFunctionWithContext ( issue #526 ).
  • Fix the OnBeforeResourceLoad redirectUrl value to behave the same as using request->SetURL() ( issue #529 ).
  • Windows: Fix crash in cefclient when entering long URLs via the address bar ( issue #532 ).
  • Add CefCookieManager interface and CefRequestHandler::GetCookieManager for custom cookie handling ( issue #542 ).
  • Support getting and setting cookies with custom scheme handlers ( issue #555 ).
  • Support calling CefFrame::GetIdentifier and CefFrame::GetURL on any thread ( issue #556 ).
  • Add CefCookieManager::SetSupportedSchemes method which supports cookie storage for non-http(s) schemes ( issue #567 ).
  • Mac: Add flagsChanged: signal handler so that modifier keys are correctly passed to JS ( issue #574 ).
  • Add the ability to directly retrieve plugin information via CefGetWebPluginInfo ( issue #575 ).
  • Fix memory leak when returning zero-length strings from V8 ( issue #581 ).

December 22, 2011: Version 1.963.439 contains the following enhancements and bug fixes.

  • Fix crash on shutdown due to CefProcess not being destroyed immediately ( issue #277 ).
  • Introduce CefV8Exception for returning detailed exception information from CefV8Value::ExecuteFunction() and add the ability to re-throw exceptions ( issue #317 ).
  • Include CEF and Chromium version information in binary distributions ( issue #325 ).
  • Disable stats, histogram and event tracing to avoid memory leaks ( issue #328 ).
  • Add the ability to observe and modify resource redirects ( issue #346 ).
  • Replace JSBindingHandler with a new V8ContextHandler interface that contains callbacks for V8 context creation and release ( issue #359 ).
  • Significant improvements in painting and scrolling performance ( issue #360 ).
  • (win) Fix CefBrowser::GetImage() and add "Get Image" example to cefclient ( issue #377 ).
  • Add a new CefProxyHandler interface to allow applications to resolve proxy information ( issue #389 ).
  • Add a new CefApp interface that provides global handlers and gets passed to CefInitialize() ( issue #399 ).
  • Pass a list of dirty rectangles instead of a single combined rectangle to CefRenderHandler::Paint() ( issue #415 ).
  • (win) Use the module path for loading resources instead of hard-coding "libcef.dll" ( issue #416 ).
  • Add a CefBrowserSettings.history_disabled option to disable history back/forward navigation ( issue #419 ).
  • Expose command line parsing support with a new CefCommandLine class ( issue #422 ).
  • (win) Fix selection of multiple files with long combined paths ( issue #423 ).
  • (mac) Fix handling of numeric pad characters. Don't send character events for non-character numeric and function keys ( issue #426 ).
  • Add a CefV8Context::InContext() method to test if V8 is currently in a context ( issue #427 ).
  • Verify that a current context exists when creating V8 arrays, functions and objects ( issue #427 ).
  • Add a v8::HandleScope in GetCurrentContext() and GetEnteredContext() to avoid "Cannot create a handle without a HandleScope" V8 errors ( issue #427 ).
  • Add additional error checking for CefV8Value methods ( issue #427 ).
  • Make navigator.language return the same value as CefSettings.locale ( issue #429 ).
  • Verify that libcef build revision and API/header revision match when initializing CEF ( issue #431 ).
  • Allow registration of V8 extensions with no native function handler ( issue #433 ).
  • Fix crash caused by V8Proxy::retrieveFrameForCallingContext() returning 0 in V8DOMWindowCustom::handlePostMessageCallback ( issue #436 ).
  • Fix BrowserFileSystem context creation race condition between UI and IO threads ( issue #442 ).
  • Add CefQuitMessageLoop function ( issue #443 ).
  • Allow media hosting from all schemes ( issue #446 ).
  • (mac) Fix problem where images loaded using the background-image CSS attribute sometimes do not display after browsing back to the page ( issue #447 ).
  • Expose unique identifiers for frames and the ability to retrieve a frame's parent frame ( issue #450 ).
  • Reduce CPU usage with requestAnimationFrame by maintaining a consistent 60fps frame rate ( issue #456 ).
  • (win) Reduce memory/CPU usage with UpdateInputMethod by restricting tasks to every 100ms ( issue #454 ).
  • Add CefBrowserSettings.fullscreen_enabled flag for enabling fullscreen mode ( issue #457 ).

November 8, 2011: Binary release 365 contains the following enhancements and bug fixes.

  • (win) Add support for transparency ( issue #99 ).
  • (win) Fix the transparent background for the toolbar in DevTools ( issue #313 ).
  • Hide CEF internal V8 attributes from JavaScript ( issue #316 ).
  • Fix problem calling CefBrowser::SetFocus() from a non-UI thread ( issue #320 ).
  • (win) Add CefSettings.auto_detect_proxy_settings_enabled option for enabling automatic proxy detection ( issue #332 ).
  • Add CefDisplayHandler::OnContentsSizeChange() notificiation ( issue #341 ).
  • Add handling for empty V8 exception messages ( issue #342 ).
  • Add CefFrame::GetV8Context() method for retrieving the V8 context of a frame ( issue #344 ).
  • Add CefSetCookiePath() and CefSetStoragePath() functions for changing cookie and localStorage locations while CEF is running ( issue #347 ).
  • (mac) Significant repaint and scroll performance improvements ( issue #360 ).
  • Add a new NAVTYPE_LINKDROPPED value that will be passed to OnBeforeResourceLoad() when navigation is resulting from drag & drop of URLs ( issue #363 ).
  • Add a CefBrowserSettings.load_drops_disabled option for disabling default navigation resulting from drag & drop of URLs ( issue #363 ).
  • (win) Look for the chrome.pak file in the module (libcef.dll) directory to match the locale folder location ( issue #374 ).
  • Add CefFocusHandler::OnFocusedNodeChanged() notification ( issue #379 ).
  • Add CefDOMNode::IsFormControlElement() and CefDOMNode::GetFormControlElementType() methods ( issue #379 ).
  • Don't call OnTitleChange() and OnLoadEnd() for failed provisional loading ( issue #381 ).
  • Use cef-error URLs for error pages ( issue #382 ).
  • Use multimap type for storing header values ( issue #386 ).
  • Re-register the internal chrome-devtools scheme handler after CefClearSchemeHandlerFactories() is called ( issue #398 ).
  • Add the ability to specify full plugin matching parameters including multiple mime types and file extensions via CefPluginInfo ( issue #401 ).
  • (mac) Add file chooser support for input type="file" ( issue #403 ).
  • Add new call to OnKeyEvent() to allow handling of keyboard events before they're passed to the renderer ( issue #406 ).
  • (win) Only scroll with the middle mouse button when the cursor is over the view ( issue #410 ).
  • Add a PropertyAttribute parameter to CefV8Value::SetValue() ( issue #412 ).
  • Add support for specifying custom V8 flags via a new CefSettings.javascript_flags configuration option ( issue #413 ).
  • Pass the |redirectUrl| parameter to GetResponseHeaders() instead of ProcessRequest() ( issue #414 ).

October 7, 2011: Binary release 306 introduces the new distribution packaging system ( issue #260 ) that provides binary distributions for both Windows and Mac OS X. It also contains the following enhancements and bug fixes.

  • (mac) Don't show magenta background when redrawing in release build ( issue #300 ).
  • Increase the internal resource buffer size to the maximum allowed to improve resource loading speed (issue #301).
  • Add CefSettings.local_storage_quota and CefSettings.session_storage_quota options for setting localStorage and sessionStorage quota limits respectively ( issue #348 ).
  • Add a CefBrowser::ClearHistory() method for clearing back/forward browsing history ( issue #352 ).
  • Add support for loading localized strings from locale .pak files ( issue #357 ).
  • Add support for loading DevTools resources from chrome.pak via the chrome-devtools scheme ( issue #358 ).
  • Improve redraw and scrolling performance ( issue #360 ).
  • Add storage functions and CefStorageVisitor interface for accessing localStorage and sessionStorage data via the native API ( issue #361 ).
  • Pass the browser originating the request to CefSchemeHandlerFactory::Create() ( issue #362 ).
  • Add a FocusSource parameter to OnSetFocus() that indicates where the focus request is originating from ( issue #369 ).

September 23, 2011: Binary release 293 adds support for Visual Studio 2010 and contains the following enhancements and bug fixes.

  • Rename char16_t to char16 to fix VS2010 compiler errors due to char16_t becoming a built-in type ( issue #243 ).
  • Support asynchronous continuation of custom scheme handler responses ( issue #269 ).
  • Add CefDragHandler to support examination of drag data and cancellation of drag requests ( issue #297 ).
  • Add a CefBrowser::HasDocument() method that tests if a document has been loaded in the browser window ( issue #307 ).
  • Add a virtual destructor to the CefBase class ( issue #321 ).
  • Fix memory leaks in V8 usage ( issue #323 ).
  • Improve performance of V8 string conversions ( issue #323 ).
  • Add the ability to return exceptions from V8 accessors ( issue #327 ).
  • Return undefined instead of null from a V8 handler if no return value is specified ( issue #329 ).
  • Accelerated compositing has been disabled by default due to implementation bugs (issue #334issue #335issue #337).

August 9, 2011: Binary release 275 contains the following enhancements and bug fixes.

  • Disable touch support to allow Google Maps API to function correctly ( issue #134 ).
  • Fix a deadlock when executing many synchronous load requests ( issue #192 ).
  • Fix OnResourceResponse spelling error ( issue #270 ).
  • Fix a thread death race condition that can result in a crash in some circumstances on shutdown ( issue #277 ).
  • Add support for accelerated_video_enabled, accelerated_drawing_enabled and accelerated_plugins_enabled browser settings ( issue #278 ).
  • Add d3dx9_43.dll and d3dcompiler_43.dll files required by accelerated content on some Windows machines ( issue #280 ).
  • Clean up the implementation of modal window callbacks ( issue #281 ).
  • Disable speech input to avoid a crash when clicking the microphone icon on the Google search page ( issue #282 ).
  • Add support for disabling HTML5 drag from the browser by setting drag_drop_disabled to true ( issue #284 ).
  • Fix a crash when canceling a popup window ( issue #285 ).

June 14, 2011: Binary release 259 significantly revamps the CEF API and contains the following enhancements and bug fixes.

  • Use the angle library for GL support ( issue #136 ).
  • Add Date type support to CefV8Value ( issue #190 ).
  • Add a workaround for the SyncRequestProxy deadlock problem ( issue #192 ).
  • Replace CefHandler with a new CefClient interface and separate handler interfaces ( issue #218 ).
  • Add support for virtual inheritance to allow multiple CefBase parented interfaces to be implemented in the same class ( issue #218 ).
  • Replace CefThreadSafeBase with IMPLEMENT macros to support virtual inheritance and to only provide locking implementations when needed ( issue #218 ).
  • Move the CefBrowserSettings parameter from CefInitialize to CreateBrowser ( issue #218 ).
  • Add a new cef_build.h header that provides platform-specific and OS defines ( issue #218 ).
  • Introduce the use of OVERRIDE to generate compiler errors on Windows if a child virtual method declaration doesn't match the parent declaration ( issue #218 ).
  • Move CEF header files that should not be directly included by the client to the "include/internal" folder ( issue #218 ).
  • Add support for navigator.onLine and online/offline window events ( issue #234 ).
  • Use NDEBUG instead of _DEBUG because _DEBUG is not defined on Mac ( issue #240 ).
  • Add OnResourceReponse and CefContentFilter for viewing and filtering response content ( issue #241 ).
  • Add support for setting response header values ( issue #246 ).
  • Break CefRegisterScheme into separate CefRegisterCustomScheme and CefRegisterSchemeHandlerFactory functions ( issue #246 ).
  • Allow registration of handlers for built-in schemes ( issue #246 ).
  • Supply scheme and request information to CefSchemeHandlerFactory::Create ( issue #246 ).
  • Add CrossOriginWhitelist functions for bypassing the same-origin policy with both built-in and custom standard schemes ( issue #246 ).
  • Add support for modal dialogs ( issue #250 ).
  • Add support for IME-aware applications ( issue #254 ).
  • Restore keyboard focus on window activation ( issue #256 ).
  • Fix bug when dragging to a window before mouse events have been detected ( issue #262 ).

May 10, 2011: Binary release 231 contains the following enhancements and bug fixes.

  • Add cookie get/set support ( issue #88 ).
  • Allow custom schemes to cause redirects ( issue #98 ).
  • Set the libcef.dll version number to the build revision number ( issue #108 ).
  • Add support for returning an HTTP status code from HandleBeforeResourceLoad and custom scheme handlers via the CefResponse class ( issue #202 ).
  • Add support for V8 accessors and entering a V8 context asynchronously ( issue #203 ).
  • Don't load URLs twice for popup windows ( issue #215 ).
  • Make modal popup windows behave the same as non-modal popup windows ( issue #216 ).
  • Force Flash and Silverlight plugins to use windowless mode when rendering off-screen ( issue #214 ).
  • Don't download files that will be loaded by a plugin ( issue #227 ).
  • Add a CefDOMNode::IsSame() method for comparing CefDOMNode objects.

March 25, 2011: Binary release 212 contains the following enhancements and bug fixes.

  • Add off-screen rendering support ( issue #100 ).
  • Add persistent storage support for cookie data ( issue #193 ).
  • Allow registration of non-standard schemes ( issue #195 ).
  • Improve the behavior of HandleAddressChange, HandleTitleChange, HandleLoadStart and HandleLoadEnd notifications ( issue #200 ).
  • Respect the WS_VISIBLE flag when creating browser windows ( issue #201 ).
  • Fix a bug in CefWebURLRequest that could result in inappropriate calls to CefHandler methods ( issue #204 ).
  • Add a history entry when navigating to anchors within the same page ( issue #207 ).
  • Add a HandleNavStateChange notification for back/forward state changes ( issue #208 ).
  • Fix crash when using WebKit inspector break points ( issue #210 ).
  • Add support for retrieving values from DOM form elements using CefDOMNode::GetValue.
  • Add the CefRunMessageLoop() function for efficient message loop processing in single-threaded message loop mode.

February 28, 2011: Binary release 195 contains the following enhancements and bug fixes.

  • Add the CefWebURLRequest class that supports direct loading of URL resources from client applications ( issue #51 ).
  • Add CefDOM classes and the CefFrame::VisitDOM method that allow direct access to and modification of the DOM ( issue #60 ).
  • Add support for the HTML5 drag and drop API and support for dragging content to other applications or the desktop (issue #140).
  • Add a CefV8Context object and CefV8Value::ExecuteFunctionWithContext method to support asynchronous V8 callbacks ( issue #188 ).
  • CefRegisterPlugin now only supports a single mime type per registration.
  • Fix a bug where URL and title change notifications were not being sent for CefFrame::LoadString.

February 1, 2011: Binary release 181 will be the last binary release that includes libraries for VS2005. It contains the following enhancements and bug fixes.

  • Improve thread safety by making some methods only callable on the UI thread ( issue #175 ).
  • Add NewCefRunnableMethod and NewCefRunnableFunction templates (in cef_runnable.h) that simplify task posting ( issue #175 ).
  • Add a boolean argument to the HandleLoadStart and HandleLoadEnd events that will be true while the main content frame is loading ( issue #166  issue #183 ).
  • Add an HTTP status code argument to the HandleLoadEnd event ( issue #177 ).
  • Only call the HandleAddressChange and HandleTitleChange events for the main content frame load ( issue #166 )
  • Pass the URL for new popup windows to the HandleBeforeCreated event (issue #5).
  • Add members to the CefSettings structure for specifying log file location and severity level ( issue #172 ).
  • Add single sign-on support ( issue #148 ).
  • Add zooming support ( issue #116 ).
  • Add developer tools support ( issue #127 ).
  • Add a HandleProtocolExecution event for handling unregistered protocols ( issue #155 ).
  • Add a HandleStatus event for status messages, mouse over URLs and keyboard focus URLs ( issue #61 ).
  • Add support for creating and parsing URLs via CefCreateURL and CefParseURL ( issue #181 ).
  • Fix the problem with frame activation when displaying SELECT list popups ( issue #169 ).
  • Accelerated compositing and HTML5 video now work together ( issue #143 ).

November 22, 2010: Revision 149 introduces a number of long-awaited features and a few important bug fixes.

  • The API now uses CefString and cef_string_t types instead of std::wstring and wchar_t. The new types support conversion between ASCII, UTF-8, UTF-16 and UTF-32 character formats and the default character type can be changed by recompiling CEF ( issue #146 ).
  • Allow customization of global and per-browser settings for everything from User-Agent and plugin search paths to specific WebKit features ( issue #145 ).
  • Add support for accelerated compositing and fast WebGL ( issue #136 ). You will need to disable accelerated compositing to watch HTML5 video with this release ( issue #143 ).
  • Expose popup window feature information via the CefPopupFeatures argument passed to CefHandler::HandleBeforeCreated ( issue #135 ).
  • Fix a crash caused by Flash-related JavaScript ( issue #115 ).

November 15, 2010: Revision 137 provides the first working build of CEF for the Mac OS X platform ( issue #68 ). There's still a lot of work required to bring it up to par with the Windows port. Missing features are indicated by "TODO(port)" comments in the source code. Help with fixing bugs and implementing missing features is welcome.

October 24, 2010: Revision 126 disables WebGL support due to performance problems with the default Chromium implementation. WebGL support will be re-enabled once a better-performing implementation is available ( issue #136 ).

  • Add a CefHandler::HandleDownloadResponse() method for handling Content-Disposition initiated file downloads ( issue #6 ).
  • Add XML parsing support with CefXmlReader and CefXmlObject classes ( issue #28 ).
  • Add Zip archive reading support with CefZipReader and CefZipArchive classes (issue #30).
  • Add a new cef_wrapper.h header file that exposes helpful utility classes provided as part of the libcef_dll_wrapper target.

October 15, 2010: Revision 116 causes CEF to ignore the "Automatically detect settings" option under LAN Settings in order to fix a problem with slow resource loading on Windows ( issue #81 ). Manual configuration under LAN Settings is still respected.

  • Add a CefBrowser::ReloadIgnoreCache() method and MENU_ID_NAV_RELOAD_NOCACHE menu support. ( issue #118 ).
  • Add support for audio playback with HTML5 video ( issue #121 ).
  • Fix back/forward navigation when the history contains pages that failed to load ( issue #125 ).
  • Change the CEF User-Agent product version to "Chrome/7.0.517.0"

August 31, 2010: Revision 100 re-introduces the CefHandler::HandleJSBinding method. The memory leaks that necessitated the elimination of this method have now been fixed ( issue #72 ).

  • The CefRequest argument to CefHandler::HandleBeforeResourceLoad can now be modified allowing the request to be changed on the fly ( issue #41 ).
  • A default tooltip implementation is now provided and tooltip text can be modified using CefHandler::HandleTooltip ( issue #61 ).
  • Printing paper size, orientation and margins can now be changed using CefHandler::HandlePrintOptions ( issue #112 ).
  • Find in page with result highlighting is now supported using CefBrowser::Find, CefBrowser::StopFinding and CefHandler::HandleFindResult.
  • The binary release of revision 100 provides libraries for both Visual Studio 2005 and Visual Studio 2008. It can be downloaded from the project Downloads page.

April 7, 2010: Revision 73 eliminates the CefHandler::HandleJSBinding method. This modification addresses memory leaks that many users have been reporting. For more information see  issue #72 .

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.