Commit Graph

856 Commits

Author SHA1 Message Date
Marshall Greenblatt
31d14c386f Tag 13800 API version 2025-06-03 14:20:59 -04:00
Marshall Greenblatt
f8a746373e Update to Chromium version 138.0.7204.0 (#1465706)
Mac: Require Xcode 16.3 (16E140) and SDK 15.4 (24E241)
2025-06-03 14:20:59 -04:00
Marshall Greenblatt
667e23b91c bootstrap: Support use with older API versions (see #3935) 2025-06-02 13:23:59 -04:00
Marshall Greenblatt
794601f128 bootstrap: Pass version to CefScopedLibraryLoader (see #3935)
Strict Chromium version checking is necessary because both sandbox
info and chrome_elf introduce Chromium version dependencies, and we
don't know which non-matching versions are compatible.
2025-05-29 12:29:37 -04:00
Marshall Greenblatt
1e8093a910 bootstrap: Load client DLL as untrusted for checks (see #3935) 2025-05-29 12:21:10 -04:00
Marshall Greenblatt
6606e241a1 cefclient: win: Add code signing verification (see #3935)
Move code signing verification code to libcef_dll_wrapper
and add example checks in cefclient.

Load libcef.dll with code signing checks.

Add a CefScopedLibraryLoader variant for Windows.
2025-05-29 12:20:30 -04:00
Marshall Greenblatt
77701dda21 Add cef::logging::ScopedEarlySupport (see #3935)
Supports use of logging macros prior to loading libcef.
2025-05-29 12:19:51 -04:00
Marshall Greenblatt
9a115ea48f Exit early on invalid process type flag (see #3824)
This avoids crashes later during Chromium initialization.
2025-05-20 13:48:48 -04:00
Marshall Greenblatt
cfaa10a746 mac: Convert cef_sandbox to a shared library (see #3928)
Replace statically linked cef_sandbox.a with dynamically loaded
libcef_sandbox.dylib. See the SandboxSetup Wiki page for details.
2025-05-19 11:50:33 -04:00
Marshall Greenblatt
adcac2c37c win: Add bootstrap[c].exe for sandbox integration (see #3824)
Replace cef_sandbox.lib usage with bootstrap executables.
See the SandboxSetup Wiki page for details.
2025-05-16 17:32:34 -04:00
Marshall Greenblatt
ad4fa9cf24 Tag 13700 API version 2025-05-07 13:25:44 -04:00
Marshall Greenblatt
a16513512e docs: Fix incorrect function name (fixes #3923) 2025-05-06 17:09:21 -04:00
Marshall Greenblatt
7944038baf Update to Chromium version 137.0.7151.0 (#1453031) 2025-05-06 17:09:21 -04:00
Marshall Greenblatt
faa85bf980 Support JavaScript window.moveTo/By() and resizeTo/By() (fixes #698)
Adds new CefDisplayHandler::OnContentsBoundsChange and
CefDisplayHandler::GetRootWindowScreenRect callbacks.

cefclient: Implement the above callbacks and call
CefBrowserHost::NotifyScreenInfoChanged when the root window
bounds change.

cefclient: osr: Use real screen bounds by default. Pass
`--fake-screen-bounds` for the old default behavior.

Load https://tests/window in cefclient for additional
implementation details and usage examples.
2025-05-05 11:53:33 -04:00
Marshall Greenblatt
f59112d839 Tag 13601 API version 2025-04-22 10:23:52 -04:00
Marshall Greenblatt
d5339f1f2a Fix enum value typos 2025-04-22 10:22:49 -04:00
Marshall Greenblatt
77f2451a5e Add callback to allow Document PiP moveTo/By() (fixes #3714)
Allow Document picture-in-picture moveTo/By() and resizeTo/By()
(without user gesture) if the new
CefBrowserViewDelegate::AllowMoveForPictureInPicture callback
returns true.
2025-04-22 14:05:23 +00:00
Marshall Greenblatt
d746017d7c Tag 13600 API version 2025-04-07 17:42:26 -04:00
Marshall Greenblatt
e7320793b6 Update to Chromium version 136.0.7103.0 (#1440670)
- Win: Update to VS 2022 17.13.4 and WinSDK 10.0.26100.3323
2025-04-07 15:38:21 -04:00
Marshall Greenblatt
5b18ca7d3f linux: Fix stack-related sub-process shutdown crashes (fixes #3912)
On Linux systems the stack frame reference canary will be purposely
changed when forking sub-processes (see https://crbug.com/40181003).
To avoid sub-process shutdown crashes the NO_STACK_PROTECTOR
annotation must be added to all functions in the call stack leading to
CefExecuteProcess(). Applications that cannot add this annotation must
instead pass the `--change-stack-guard-on-fork=disable` command-line
flag.
2025-03-31 14:13:24 -04:00
David Cernoch
f72afb713a Make PrintToPDF path parameter optional (fixes #3879) 2025-03-18 15:44:00 +00:00
Marshall Greenblatt
8db54e92c2 Tag 13500 API version 2025-03-12 14:37:45 -04:00
Marshall Greenblatt
ff5210f825 Update to Chromium version 135.0.7049.0 (#1427262) 2025-03-12 13:05:48 -04:00
Marshall Greenblatt
cda47aaff4 Tag 13401 API version 2025-03-10 11:53:36 -04:00
Marshall Greenblatt
549e8fe05c Add visualization for Chrome configuration changes (fixes #3892)
- Add new API to retrieve/observe configuration values.
- cefclient: Add https://tests/config to inspect configuration
  values in real time.
2025-03-10 15:50:46 +00:00
Nik Pavlov
fdd36e8461 Support API versioning in platform-specific headers (see #3836)
- Exclude platform-specific includes (anything in < >) from the
  clang preprocessor by using `!defined(GENERATING_CEF_API_HASH)`
  in CEF header files.
- Define "target platforms" by passing platform- and architecture-
  specific ifdefs to the clang preprocessor. Grep for `defined(OS_`
  to identify headers that require target platform processing, and
  then process for each target as the platform-specific API hash
  contribution.
- Delete the univeral hash which is no longer a useful concept.
2025-02-25 12:36:00 -05:00
Marshall Greenblatt
81d54830e9 Tag 13400 API version 2025-02-19 12:06:11 -05:00
Marshall Greenblatt
c7c6a109c9 Update to Chromium version 134.0.6998.0 (#1415337) 2025-02-19 11:11:51 -05:00
Marshall Greenblatt
c8be96d15c Minor types cleanup for API gen (see #3836) 2025-02-19 11:11:51 -05:00
Marshall Greenblatt
2d8b6b06f2 Clean up CefStructBase inheritance
- Use C++11 using directive for constructor/operator= inheritance.
  This is a behavioral no-op.
- Remove CefStructBase virtual destructor to reduce object size. This
  is safe because CefStructBase is not deleted polymorphically.
2025-01-14 14:37:26 -05:00
Marshall Greenblatt
81a5005bc0 Add NUM_VALUES for enums and size for structs (see #3836)
API versioning requires that enumerations end with a count value
(`*_NUM_VALUES`) and structs begin with a size value (`size_t size`).
Wrapper templates are updated to support structs with different size
values indicating different versions.

To test:
Run `ceftests --gtest_filter=ApiVersionTest.StructVersion*`
2025-01-14 12:56:21 -05:00
Marshall Greenblatt
f6b02f90aa Avoid usage of platform #ifdefs in cef_types.h (see #3836)
This file is passed to clang and will otherwise generate different
API hashes on different platforms.
2025-01-09 11:32:40 -05:00
Marshall Greenblatt
7be2558291 Update to Chromium version 133.0.6943.0 (#1402768) 2025-01-08 17:19:43 -05:00
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
Marshall Greenblatt
916a854173 Don't check in files generated by the translator tool 2024-12-16 11:05:58 -05:00
Marshall Greenblatt
7dd2398be2 Update to Chromium version 133.0.6886.0 (#1393452) 2024-12-10 12:46:29 -05:00
Andrew Kurushin
2dd1d1f94b osr: win: Implement page scroll mode (fixes #3849) 2024-12-04 11:25:39 -05:00
reito
189b247282 osr: Add more info in accelerated callback (fixes #3730) 2024-12-04 10:44:33 -05:00
Marshall Greenblatt
35fc888c72 Improve timing of frame attach/detach (see #3664)
- Move frame attachment from RenderFrameCreated to
  DidCommitProvisionalLoad. This has a number of advantages:
  - Significantly reduces the frequency of disconnects by avoiding
    the GetInterface/DidCommitNavigation race condition.
  - Stops connecting temporary frames (created during cross-origin
    navigation), making callback behavior more consistent.
- Split frame detach and destruction notifications into separate
  callbacks. OnFrameDetached now reflects a potentially recoverable
  state. Add a new OnFrameDestroyed callback for the unrecoverable
  destruction state.
2024-12-04 10:44:33 -05:00
Marshall Greenblatt
e513077eac Add notification for aborted popups (fixes #3776)
Pass a new |popup_id| parameter to OnBeforePopup and call a new
OnBeforePopupAborted callback if the popup is aborted before
OnAfterCreated is called for the popup browser. Add new
CefBrowserHost::GetBrowserByIdentifier and GetOpenerIdentifier
methods to assist with retrieval of associated browsers.

In cefclient, clean up state when a popup is aborted and close
any associated popup browsers when the opener browser is closed.
This also works when running with `--use-default-popup`.
2024-11-13 14:13:29 -05:00
Marshall Greenblatt
b660522983 views: Fix Chrome style browser RequestFocus behavior (fixes #3819)
Fix implementation of CefBrowserView::RequestFocus for Chrome style
browsers. Match Alloy style behavior of requesting browser focus
(calling OnSetFocus) after initial navigation. Add CefView::HasFocus
and CefWindow::GetFocusedView that can be used in combination with
CefWindow::IsActive to determine global keyboard focus.

Update sample applications for the new behavior.

In cefclient:
- Browser receives initial focus via ViewsWindow::RequestBrowserFocus.
- When running with `--show-overlay-browser` (see #3790):
  - Give initial focus to the overlay browser.
  - Change the overlay popout shortcut to CTRL+SHIFT+O to avoid
    assigning focus to the menu in the main window.
  - Switching from overlay in the main window to popout browser
    window will give focus to the popout browser.
  - Switching from popout browser to overlay will leave current focus
    unchanged (e.g. in the overlay browser, or somewhere else). User
    gesture to activate the main window may be required on Mac/Linux.
- When running with `--no-active` don't give initial focus to either
  browser.

In cefsimple:
- Browser receives initial focus via default handling.
2024-11-06 13:20:02 -05:00
Marshall Greenblatt
173a2f4a58 Update to Chromium version 131.0.6778.0 (#1368529) 2024-10-24 14:50:11 -04:00
Nik Pavlov
5d817b20a6 Update to Chromium version 131.0.6768.0 (#1366576)
mac: Switch to Xcode 16.0 16A242d with macOS SDK 15.0 24A336
2024-10-24 11:24:17 -04:00
Michael Bragg
a787036a8a Add CefFrame::PasteAndMatchStyle 2024-10-23 13:24:10 -04:00
Hunter Laux
fc20e76d3b Implement OnSelectClientCertificate (fixes #3789) 2024-10-23 13:09:32 -04:00
Marshall Greenblatt
6e05c14db2 chrome: Support unload handlers with TryCloseBrowser
TryCloseBrowser should potentially trigger JavaScript unload handlers
and return false. Add CefBrowserHost::IsReadyToBeClosed for detecting
mandatory close state. Enable, for Chrome style browsers, LifeSpanTest
that don't require DoClose(). Update related documentation.
2024-10-17 11:06:08 -04:00
Marshall Greenblatt
66105a5417 Add CefRefCount::SubtleRefCountForDebug
Helper for debugging refcount-related issues.
2024-10-15 14:30:26 -04:00
Marshall Greenblatt
cd052ec7c3 Update to Chromium version 130.0.6723.0 (#1356013) 2024-09-27 14:15:44 +00:00
Marshall Greenblatt
52888f346f Use int instead of bool in cef_settings_t 2024-08-07 10:41:20 -04:00
Loic Frasse-Mathon
785713c4cc posix: Added option to disable signal handlers
See https://github.com/chromiumembedded/java-cef/issues/477
2024-08-05 12:36:28 -04:00