Files
cef/patch
Marshall Greenblatt dd81904a2f Add initial support for API versioning (see #3836)
- Generated files are now created when running cef_create_projects or
  the new version_manager.py tool. These files are still created in the
  cef/ source tree (same location as before) but Git ignores them due to
  the generated .gitignore file.
- API hashes are committed to Git as a new cef_api_versions.json file.
  This file is used for both code generation and CEF version calculation
  (replacing the previous usage of cef_api_hash.h for this purpose).
  It will be updated by the CEF admin before merging breaking API
  changes upstream.
- As an added benefit to the above, contributor PRs will no longer
  contain generated code that is susceptible to frequent merge conflicts.
- From a code generation perspective, the main difference is that we now
  use versioned structs (e.g. cef_browser_0_t instead of cef_browser_t)
  on the libcef (dll/framework) side. Most of the make_*.py tool changes
  are related to supporting this.
- From the client perspective, you can now define CEF_API_VERSION in the
  project configuration (or get CEF_EXPERIMENTAL by default). This
  define will change the API exposed in CEF’s include/ and include/capi
  header files. All client-side targets including libcef_dll_wrapper
  will need be recompiled when changing this define.
- Examples of the new API-related define usage are provided in
  cef_api_version_test.h, api_version_test_impl.cc and
  api_version_unittest.cc.

To test:
- Run `ceftests --gtest_filter=ApiVersionTest.*`
- Add `cef_api_version=13300` to GN_DEFINES. Re-run configure, build and
  ceftests steps.
- Repeat with 13301, 13302, 13303 (all supported test versions).
2025-01-08 17:19:43 -05:00
..

There may be instances where CEF requires changes to the source code for
Chromium, Blink or third-party projects that are either not desired by those
projects or that have not yet been merged into the source code versions of those
projects used by CEF. To address this situation the CEF project adds a patch
capability as part of cef_create_projects[.bat|sh] build step. This patch
capability works as follows:

1. The CEF developer creates one or more patch files containing all required
   code changes and places those patch files in the "patches" subdirectory.
2. The CEF developer adds an entry for each patch file in the "patch.cfg" file.
3. When building CEF from source code the patch files are applied by the
   patcher.py tool via the cef_create_projects[.bat|sh] build step
4. When updating Chromium the patch_updater.py tool is used to update all patch
   files. See https://bitbucket.org/chromiumembedded/cef/wiki/ChromiumUpdate.md
   for more information about the update process.