Compare commits

..

37 Commits
6778 ... 6478

Author SHA1 Message Date
Marshall Greenblatt
a5d51ba9db Pin depot_tools version for out-of-support branch 2024-07-29 12:20:48 -04:00
Marshall Greenblatt
3647d39e70 cefclient: Allow download with --hide-controls (fixes #3742) 2024-07-17 15:07:47 -04:00
Marshall Greenblatt
dca51c71fd Update to Chromium version 126.0.6478.183 2024-07-17 15:05:59 +00:00
Marshall Greenblatt
c23cfb8b01 Fix DCHECK adding menu separator with hidden items (fixes #3577) 2024-07-16 16:05:23 -04:00
Marshall Greenblatt
1e880c56ed distrib: Add new tools distribution for mksnapshot (see #3734) 2024-07-16 16:04:32 -04:00
Marshall Greenblatt
239742e877 mac: cefclient: Fix zombie NSWindow object on exit (fixes #3602)
- Don't create a TempWindow when using Views.
- Don't call `close` on an NSWindow that is never opened.
2024-07-15 17:10:36 -04:00
Marshall Greenblatt
f6393726b4 Call SetIsShutdown after CefInitialize (fixes #3738)
Delay shutdown checking until after CefInitialize has drained existing
task pools.
2024-07-15 17:10:27 -04:00
Marshall Greenblatt
162c3d60df Fix duplicate open from DevTools when handling OnOpenURLFromTab (fixes #3735) 2024-07-11 14:31:51 -04:00
Marshall Greenblatt
b281f7aefd tools: win: Remove dynamic_annotations.lib from cef_sandbox
This library was removed in https://crbug.com/40209570.
2024-07-10 12:31:29 -04:00
Nik Pavlov
61241e4482 tools: Fix "invalid escape sequence '\s'" warning 2024-07-01 13:21:53 -04:00
Marshall Greenblatt
169fea9e41 Allow dangling Listener in CefFileDialogManager (fixes #3720) 2024-06-25 13:57:27 -04:00
Marshall Greenblatt
047d3a0b4e Update to Chromium version 126.0.6478.127 2024-06-25 13:37:09 +00:00
Marshall Greenblatt
300bb055bb Allow dangling UnretainedWrapper for ResourceRequest* (fixes #3717)
Change UnretainedWrapper traits from MayNotDangle (default) to
MayDangleUntriaged as a short-term fix.
2024-06-21 13:03:14 -04:00
Marshall Greenblatt
c7c4ac95b1 Fix assertions with Save As dialog
Fixes some issues introduced by 8e79307a62 (see #3314) and
6354d8daf1 (see #3239).

To test:
- Run `cefclient --url=chrome://net-export`
- Click the "Start Logging to Disk" button
- Exit cefclient; get no debug assertions
2024-06-20 14:11:41 -04:00
Marshall Greenblatt
4fc5399f88 Update to Chromium version 126.0.6478.115 2024-06-20 13:35:33 +00:00
Marshall Greenblatt
5e718e01a0 Disable dangling ptr check for PendingRequest::request_ (see #3239, fixes #3717) 2024-06-18 15:46:33 -04:00
Marshall Greenblatt
64eb12c9c4 Revert "Fix potential dangling PendingRequest::request_ (see #3239)"
This reverts commit 47798d3dbf.

It doesn't appear to have fixed the issue (see #3717).
2024-06-18 15:40:46 -04:00
Marshall Greenblatt
ecbe1244cb chrome: Fix CHECK when switching from kPrerendering to kActive
In this case |render_frame_| is not bound, |render_frame_host_| is
non-nullptr and |render_frame_host| equals |render_frame_host_| in
CefFrameHostImpl::MaybeReAttach when called from
CefBrowserInfo::FrameHostStateChanged.
2024-06-18 13:52:24 -04:00
Marshall Greenblatt
d9c1887429 tests: Fix LifeSpanTest.DoClose*WithOnUnloadForce failures 2024-06-18 12:26:14 -04:00
Marshall Greenblatt
5c56e98fc6 Update to Chromium version 126.0.6478.62 2024-06-14 15:12:08 +00:00
Marshall Greenblatt
2be337fb12 views: Add missing patched files (see #3711) 2024-06-13 18:09:03 -04:00
Marshall Greenblatt
7e5ee97d2e Update to Chromium version 126.0.6478.57 2024-06-13 15:21:21 -04:00
Marshall Greenblatt
6090afb12e chrome: Add cleanup when context menu isn't running (fixes #3711)
The menu may not be running in the following cases:

- If the menu is empty (e.g. cleared in OnBeforeContextMenu).
- If the menu is disabled (see e.g. RenderViewContextMenuViews::Show).
- When the run call blocks until the menu is dismissed (macOS behavior).

We explicitly clean up in these cases instead of waiting for OnMenuClosed
which will otherwise never be called for the first 2 cases.

Menu run status is exposed via new ContextMenuDelegate and
RenderViewContextMenuBase methods.
2024-06-13 13:43:40 -04:00
Marshall Greenblatt
3cd94714f7 alloy: Move warning after logging init (fixes #3713) 2024-06-10 11:04:38 -04:00
Julian Waller
69b959514c cmake: Skip docs generation if the Doxyfile is missing
The Doxyfile is not included with minimal distributions.
2024-06-10 11:04:31 -04:00
Marshall Greenblatt
e14495b5cb Fix potential dangling PendingRequest::request_ (see #3239)
See https://magpcss.org/ceforum/viewtopic.php?f=6&t=19802 for error.
2024-06-04 14:13:16 -04:00
Yuta Sekiguchi
4771bb7ee4 chrome: Add CefJSDialogHandler support (fixes #3702) 2024-06-04 12:23:39 -04:00
Marshall Greenblatt
8e0c2ff1d1 win: Enable WinSboxNoFakeGdiInit for Debug component builds (see #3708)
The WinSboxNoFakeGdiInit feature requires delayload of all DLLs that
might load user32.dll in the renderer process. It's enabled as a field
trial for all non-Official builds, but caused problems with Debug
component builds using VS 17.5.0 due to MSVCP140D.dll depending on
OLE32.DLL (which depends on user32.dll). The dependency on OLE32.DLL
is removed with VS 17.9.2 so the feature can now be enabled.

See https://crbug.com/326277735#comment39 for background.
2024-06-04 11:57:14 -04:00
Marshall Greenblatt
caf18bdadb cefclient: linux: Fix gcc -Werror=parentheses (see #3314) 2024-06-04 11:24:19 -04:00
Marshall Greenblatt
59e700b0f0 win: Fix undefined symbol with cef_sandbox and VS 17.9.2 (see #3708)
This avoids a bug in clang + MSVC STL when using the default three-way
comparison operator with base::TimeDelta. The compiler does not throw
away the function call to the `std::_Literal_zero_is_expected` symbol,
which is deliberately undefined.

See also https://github.com/microsoft/STL/issues/4359#issuecomment-2042911928
2024-06-03 13:49:33 -04:00
Marshall Greenblatt
4042303cd8 Remove pinned depot_tools version (see #3709) 2024-06-03 12:53:05 -04:00
Marshall Greenblatt
87d1d2a7f3 Fix deletion of third_party/test_fonts contents
See https://crbug.com/343199633
2024-06-03 10:58:34 -04:00
Marshall Greenblatt
ecea6cc6e9 tests: Fix URLRequestTest failure with ReduceAcceptLanguage trial 2024-05-31 23:16:10 -04:00
Marshall Greenblatt
8af4558412 cefclient: win: Fix MSVC compile error 2024-05-31 13:29:28 -04:00
Marshall Greenblatt
20a659fa66 Pass mime type values as file dialog accept filters (see #3314)
File dialogs that specify mime type (e.g. "image/*") accept filters will pass
those values unchanged to the OnFileDialog |accept_filters| parameter. The
default dialog implementation will show those filters in addition to a combined
"Custom Files" filter. This is a change from preexisting Google Chrome
behavior where only the combined "Custom Files" filter is displayed, and
restores CEF behavior that existed prior to 2ea7459a89.

Document the fact that OnFileDialog may be called twice, once before MIME type
expansion and once afterwards.

Add new OnFileDialog |accept_extensions| and |accept_descriptions| parameters
for MIME type extensions and descriptions.

Details: This change adds a SelectFileDialog::FileTypeInfo::extension_mimetypes
member and improves the logic in FileSelectHelper::GetFileTypesFromAcceptType
and file_dialog_manager.cc SelectFileToFileChooserParams to support recall of
the source mime type when populating the FileChooserParams structure.

To test:
- Run `ceftests --gtest_filter=DialogTest.*`
- Run `cefclient --url=https://tests/dialogs`
2024-05-30 15:46:19 -04:00
Marshall Greenblatt
34de39aac8 Update to Chromium version 126.0.6478.26 2024-05-30 14:07:09 +00:00
Marshall Greenblatt
8abe66c2b2 Update to Chromium version 126.0.6478.17 2024-05-26 13:47:03 -04:00
1360 changed files with 28687 additions and 14890 deletions

288
BUILD.gn
View File

@@ -477,12 +477,8 @@ source_set("libcef_static") {
"libcef/browser/browser_contents_delegate.h", "libcef/browser/browser_contents_delegate.h",
"libcef/browser/browser_context.cc", "libcef/browser/browser_context.cc",
"libcef/browser/browser_context.h", "libcef/browser/browser_context.h",
"libcef/browser/browser_event_util.cc",
"libcef/browser/browser_event_util.h",
"libcef/browser/browser_frame.cc", "libcef/browser/browser_frame.cc",
"libcef/browser/browser_frame.h", "libcef/browser/browser_frame.h",
"libcef/browser/browser_guest_util.cc",
"libcef/browser/browser_guest_util.h",
"libcef/browser/browser_host_base.cc", "libcef/browser/browser_host_base.cc",
"libcef/browser/browser_host_base.h", "libcef/browser/browser_host_base.h",
"libcef/browser/browser_host_create.cc", "libcef/browser/browser_host_create.cc",
@@ -497,6 +493,8 @@ source_set("libcef_static") {
"libcef/browser/browser_platform_delegate.cc", "libcef/browser/browser_platform_delegate.cc",
"libcef/browser/browser_platform_delegate.h", "libcef/browser/browser_platform_delegate.h",
"libcef/browser/browser_platform_delegate_create.cc", "libcef/browser/browser_platform_delegate_create.cc",
"libcef/browser/browser_util.cc",
"libcef/browser/browser_util.h",
"libcef/browser/certificate_query.cc", "libcef/browser/certificate_query.cc",
"libcef/browser/certificate_query.h", "libcef/browser/certificate_query.h",
"libcef/browser/chrome/browser_delegate.h", "libcef/browser/chrome/browser_delegate.h",
@@ -514,9 +512,12 @@ source_set("libcef_static") {
"libcef/browser/chrome/chrome_content_browser_client_cef.h", "libcef/browser/chrome/chrome_content_browser_client_cef.h",
"libcef/browser/chrome/chrome_context_menu_handler.cc", "libcef/browser/chrome/chrome_context_menu_handler.cc",
"libcef/browser/chrome/chrome_context_menu_handler.h", "libcef/browser/chrome/chrome_context_menu_handler.h",
"libcef/browser/chrome/chrome_devtools_window_runner.cc",
"libcef/browser/chrome/chrome_devtools_window_runner.h",
"libcef/browser/chrome/chrome_startup_browser_creator.cc", "libcef/browser/chrome/chrome_startup_browser_creator.cc",
"libcef/browser/chrome/chrome_startup_browser_creator.h", "libcef/browser/chrome/chrome_startup_browser_creator.h",
"libcef/browser/chrome/chrome_web_contents_view_delegate_cef.h", "libcef/browser/chrome/chrome_web_contents_view_delegate_cef.h",
"libcef/browser/chrome_crash_reporter_client_stub.cc",
"libcef/browser/chrome/extensions/chrome_extension_util.cc", "libcef/browser/chrome/extensions/chrome_extension_util.cc",
"libcef/browser/chrome/extensions/chrome_extension_util.h", "libcef/browser/chrome/extensions/chrome_extension_util.h",
"libcef/browser/chrome/extensions/chrome_mime_handler_view_guest_delegate_cef.cc", "libcef/browser/chrome/extensions/chrome_mime_handler_view_guest_delegate_cef.cc",
@@ -545,14 +546,16 @@ source_set("libcef_static") {
"libcef/browser/devtools/devtools_controller.h", "libcef/browser/devtools/devtools_controller.h",
"libcef/browser/devtools/devtools_protocol_manager.cc", "libcef/browser/devtools/devtools_protocol_manager.cc",
"libcef/browser/devtools/devtools_protocol_manager.h", "libcef/browser/devtools/devtools_protocol_manager.h",
"libcef/browser/devtools/devtools_window_runner.cc",
"libcef/browser/devtools/devtools_window_runner.h", "libcef/browser/devtools/devtools_window_runner.h",
"libcef/browser/devtools/devtools_window_runner_create.cc",
"libcef/browser/download_item_impl.cc", "libcef/browser/download_item_impl.cc",
"libcef/browser/download_item_impl.h", "libcef/browser/download_item_impl.h",
"libcef/browser/download_manager_delegate.cc", "libcef/browser/download_manager_delegate.cc",
"libcef/browser/download_manager_delegate.h", "libcef/browser/download_manager_delegate.h",
"libcef/browser/download_manager_delegate_impl.cc", "libcef/browser/download_manager_delegate_impl.cc",
"libcef/browser/download_manager_delegate_impl.h", "libcef/browser/download_manager_delegate_impl.h",
"libcef/browser/extensions/browser_extensions_util.cc",
"libcef/browser/extensions/browser_extensions_util.h",
"libcef/browser/file_dialog_manager.cc", "libcef/browser/file_dialog_manager.cc",
"libcef/browser/file_dialog_manager.h", "libcef/browser/file_dialog_manager.h",
"libcef/browser/file_dialog_runner.cc", "libcef/browser/file_dialog_runner.cc",
@@ -600,6 +603,8 @@ source_set("libcef_static") {
"libcef/browser/native/window_delegate_view.h", "libcef/browser/native/window_delegate_view.h",
"libcef/browser/navigation_entry_impl.cc", "libcef/browser/navigation_entry_impl.cc",
"libcef/browser/navigation_entry_impl.h", "libcef/browser/navigation_entry_impl.h",
"libcef/browser/net/chrome_scheme_handler.cc",
"libcef/browser/net/chrome_scheme_handler.h",
"libcef/browser/net/crlset_file_util_impl.cc", "libcef/browser/net/crlset_file_util_impl.cc",
"libcef/browser/net/throttle_handler.cc", "libcef/browser/net/throttle_handler.cc",
"libcef/browser/net/throttle_handler.h", "libcef/browser/net/throttle_handler.h",
@@ -678,14 +683,10 @@ source_set("libcef_static") {
"libcef/browser/ssl_status_impl.h", "libcef/browser/ssl_status_impl.h",
"libcef/browser/stream_impl.cc", "libcef/browser/stream_impl.cc",
"libcef/browser/stream_impl.h", "libcef/browser/stream_impl.h",
"libcef/browser/task_manager_impl.cc",
"libcef/browser/task_manager_impl.h",
"libcef/browser/trace_impl.cc", "libcef/browser/trace_impl.cc",
"libcef/browser/trace_subscriber.cc", "libcef/browser/trace_subscriber.cc",
"libcef/browser/trace_subscriber.h", "libcef/browser/trace_subscriber.h",
"libcef/browser/thread_util.h", "libcef/browser/thread_util.h",
"libcef/browser/ui_thread.cc",
"libcef/browser/ui_thread.h",
"libcef/browser/views/basic_label_button_impl.cc", "libcef/browser/views/basic_label_button_impl.cc",
"libcef/browser/views/basic_label_button_impl.h", "libcef/browser/views/basic_label_button_impl.h",
"libcef/browser/views/basic_label_button_view.cc", "libcef/browser/views/basic_label_button_view.cc",
@@ -767,6 +768,8 @@ source_set("libcef_static") {
"libcef/common/chrome/chrome_content_client_cef.h", "libcef/common/chrome/chrome_content_client_cef.h",
"libcef/common/chrome/chrome_main_delegate_cef.cc", "libcef/common/chrome/chrome_main_delegate_cef.cc",
"libcef/common/chrome/chrome_main_delegate_cef.h", "libcef/common/chrome/chrome_main_delegate_cef.h",
"libcef/common/chrome/chrome_main_runner_delegate.cc",
"libcef/common/chrome/chrome_main_runner_delegate.h",
"libcef/common/command_line_impl.cc", "libcef/common/command_line_impl.cc",
"libcef/common/command_line_impl.h", "libcef/common/command_line_impl.h",
"libcef/common/crash_reporter_client.cc", "libcef/common/crash_reporter_client.cc",
@@ -780,6 +783,8 @@ source_set("libcef_static") {
"libcef/common/frame_util.h", "libcef/common/frame_util.h",
"libcef/common/i18n_util_impl.cc", "libcef/common/i18n_util_impl.cc",
"libcef/common/json_impl.cc", "libcef/common/json_impl.cc",
"libcef/common/main_runner_delegate.h",
"libcef/common/main_runner_handler.h",
"libcef/common/net/http_header_utils.cc", "libcef/common/net/http_header_utils.cc",
"libcef/common/net/http_header_utils.h", "libcef/common/net/http_header_utils.h",
"libcef/common/net/scheme_registration.cc", "libcef/common/net/scheme_registration.cc",
@@ -829,6 +834,8 @@ source_set("libcef_static") {
"libcef/common/values_impl.h", "libcef/common/values_impl.h",
"libcef/common/waitable_event_impl.cc", "libcef/common/waitable_event_impl.cc",
"libcef/common/waitable_event_impl.h", "libcef/common/waitable_event_impl.h",
"libcef/features/runtime.h",
"libcef/features/runtime_checks.h",
"libcef/renderer/browser_impl.cc", "libcef/renderer/browser_impl.cc",
"libcef/renderer/browser_impl.h", "libcef/renderer/browser_impl.h",
"libcef/renderer/chrome/chrome_content_renderer_client_cef.cc", "libcef/renderer/chrome/chrome_content_renderer_client_cef.cc",
@@ -837,6 +844,10 @@ source_set("libcef_static") {
"libcef/renderer/dom_document_impl.h", "libcef/renderer/dom_document_impl.h",
"libcef/renderer/dom_node_impl.cc", "libcef/renderer/dom_node_impl.cc",
"libcef/renderer/dom_node_impl.h", "libcef/renderer/dom_node_impl.h",
"libcef/renderer/extensions/extensions_renderer_api_provider.cc",
"libcef/renderer/extensions/extensions_renderer_api_provider.h",
"libcef/renderer/extensions/extensions_renderer_client.cc",
"libcef/renderer/extensions/extensions_renderer_client.h",
"libcef/renderer/frame_impl.cc", "libcef/renderer/frame_impl.cc",
"libcef/renderer/frame_impl.h", "libcef/renderer/frame_impl.h",
"libcef/renderer/render_frame_observer.cc", "libcef/renderer/render_frame_observer.cc",
@@ -854,6 +865,121 @@ source_set("libcef_static") {
"//chrome/app/chrome_main_delegate.h", "//chrome/app/chrome_main_delegate.h",
] ]
if (enable_alloy_bootstrap) {
sources += [
"libcef/browser/alloy/alloy_browser_context.cc",
"libcef/browser/alloy/alloy_browser_context.h",
"libcef/browser/alloy/alloy_browser_main.cc",
"libcef/browser/alloy/alloy_browser_main.h",
"libcef/browser/alloy/alloy_content_browser_client.cc",
"libcef/browser/alloy/alloy_content_browser_client.h",
"libcef/browser/alloy/alloy_download_manager_delegate.cc",
"libcef/browser/alloy/alloy_download_manager_delegate.h",
"libcef/browser/alloy/alloy_download_util.cc",
"libcef/browser/alloy/alloy_download_util.h",
"libcef/browser/alloy/alloy_web_contents_view_delegate.cc",
"libcef/browser/alloy/alloy_web_contents_view_delegate.h",
"libcef/browser/alloy/devtools/alloy_devtools_window_runner.cc",
"libcef/browser/alloy/devtools/alloy_devtools_window_runner.h",
"libcef/browser/alloy/devtools/devtools_file_manager.cc",
"libcef/browser/alloy/devtools/devtools_file_manager.h",
"libcef/browser/alloy/devtools/devtools_frontend.cc",
"libcef/browser/alloy/devtools/devtools_frontend.h",
"libcef/browser/alloy/devtools/devtools_manager_delegate.cc",
"libcef/browser/alloy/devtools/devtools_manager_delegate.h",
"libcef/browser/alloy/dialogs/alloy_javascript_dialog_manager_delegate.cc",
"libcef/browser/alloy/dialogs/alloy_javascript_dialog_manager_delegate.h",
"libcef/browser/alloy/chrome_browser_process_alloy.cc",
"libcef/browser/alloy/chrome_browser_process_alloy.h",
"libcef/browser/alloy/chrome_profile_manager_alloy.cc",
"libcef/browser/alloy/chrome_profile_manager_alloy.h",
"libcef/browser/alloy/chrome_profile_alloy.cc",
"libcef/browser/alloy/chrome_profile_alloy.h",
"libcef/browser/browser_context_keyed_service_factories.cc",
"libcef/browser/browser_context_keyed_service_factories.h",
"libcef/browser/extension_impl.cc",
"libcef/browser/extension_impl.h",
"libcef/browser/extensions/api/file_system/cef_file_system_delegate.cc",
"libcef/browser/extensions/api/file_system/cef_file_system_delegate.h",
"libcef/browser/extensions/api/storage/sync_value_store_cache.cc",
"libcef/browser/extensions/api/storage/sync_value_store_cache.h",
"libcef/browser/extensions/api/tabs/tabs_api.cc",
"libcef/browser/extensions/api/tabs/tabs_api.h",
"libcef/browser/extensions/alloy_extensions_util.cc",
"libcef/browser/extensions/alloy_extensions_util.h",
"libcef/browser/extensions/browser_platform_delegate_background.cc",
"libcef/browser/extensions/browser_platform_delegate_background.h",
"libcef/browser/extensions/chrome_api_registration.cc",
"libcef/browser/extensions/chrome_api_registration.h",
"libcef/browser/extensions/component_extension_resource_manager.cc",
"libcef/browser/extensions/component_extension_resource_manager.h",
"libcef/browser/extensions/extensions_api_client.cc",
"libcef/browser/extensions/extensions_api_client.h",
"libcef/browser/extensions/extensions_browser_api_provider.cc",
"libcef/browser/extensions/extensions_browser_api_provider.h",
"libcef/browser/extensions/extensions_browser_client.cc",
"libcef/browser/extensions/extensions_browser_client.h",
"libcef/browser/extensions/extension_background_host.cc",
"libcef/browser/extensions/extension_background_host.h",
"libcef/browser/extensions/extension_function_details.cc",
"libcef/browser/extensions/extension_function_details.h",
"libcef/browser/extensions/extension_host_delegate.cc",
"libcef/browser/extensions/extension_host_delegate.h",
"libcef/browser/extensions/extension_system.cc",
"libcef/browser/extensions/extension_system.h",
"libcef/browser/extensions/extension_system_factory.cc",
"libcef/browser/extensions/extension_system_factory.h",
"libcef/browser/extensions/extension_view_host.cc",
"libcef/browser/extensions/extension_view_host.h",
"libcef/browser/extensions/extension_web_contents_observer.cc",
"libcef/browser/extensions/extension_web_contents_observer.h",
"libcef/browser/extensions/mime_handler_view_guest_delegate.cc",
"libcef/browser/extensions/mime_handler_view_guest_delegate.h",
"libcef/browser/extensions/value_store/cef_value_store.cc",
"libcef/browser/extensions/value_store/cef_value_store.h",
"libcef/browser/extensions/value_store/cef_value_store_factory.cc",
"libcef/browser/extensions/value_store/cef_value_store_factory.h",
"libcef/browser/media_capture_devices_dispatcher.cc",
"libcef/browser/media_capture_devices_dispatcher.h",
"libcef/browser/net/devtools_scheme_handler.cc",
"libcef/browser/net/devtools_scheme_handler.h",
"libcef/browser/net/internal_scheme_handler.cc",
"libcef/browser/net/internal_scheme_handler.h",
"libcef/browser/net/scheme_handler.cc",
"libcef/browser/net/scheme_handler.h",
"libcef/browser/prefs/pref_store.cc",
"libcef/browser/prefs/pref_store.h",
"libcef/browser/speech_recognition_manager_delegate.cc",
"libcef/browser/speech_recognition_manager_delegate.h",
"libcef/browser/ssl_host_state_delegate.cc",
"libcef/browser/ssl_host_state_delegate.h",
"libcef/common/alloy/alloy_content_client.cc",
"libcef/common/alloy/alloy_content_client.h",
"libcef/common/alloy/alloy_main_delegate.cc",
"libcef/common/alloy/alloy_main_delegate.h",
"libcef/common/alloy/alloy_main_runner_delegate.cc",
"libcef/common/alloy/alloy_main_runner_delegate.h",
"libcef/common/extensions/chrome_generated_schemas.cc",
"libcef/common/extensions/chrome_generated_schemas.h",
"libcef/common/extensions/extensions_api_provider.cc",
"libcef/common/extensions/extensions_api_provider.h",
"libcef/common/extensions/extensions_client.cc",
"libcef/common/extensions/extensions_client.h",
"libcef/common/extensions/extensions_util.cc",
"libcef/common/extensions/extensions_util.h",
"libcef/common/net/net_resource_provider.cc",
"libcef/common/net/net_resource_provider.h",
"libcef/renderer/alloy/alloy_content_renderer_client.cc",
"libcef/renderer/alloy/alloy_content_renderer_client.h",
"libcef/renderer/alloy/alloy_render_frame_observer.cc",
"libcef/renderer/alloy/alloy_render_frame_observer.h",
"libcef/renderer/alloy/alloy_render_thread_observer.cc",
"libcef/renderer/alloy/alloy_render_thread_observer.h",
"libcef/renderer/alloy/url_loader_throttle_provider_impl.cc",
"libcef/renderer/alloy/url_loader_throttle_provider_impl.h",
]
}
configs += [ configs += [
"libcef/features:config", "libcef/features:config",
"//build/config:precompiled_headers", "//build/config:precompiled_headers",
@@ -882,6 +1008,13 @@ source_set("libcef_static") {
":libcef_static_unittested", ":libcef_static_unittested",
# Generate API bindings for extensions.
# TODO(cef): Enable if/when CEF exposes its own Mojo APIs. See
# libcef/common/extensions/api/README.txt for details.
#"libcef/common/extensions/api",
#"libcef/common/extensions/api:api_registration",
"libcef/common/extensions/api:extensions_features",
# Normal build dependencies. Should be sorted alphabetically. # Normal build dependencies. Should be sorted alphabetically.
"//base:base_static", "//base:base_static",
"//cc", "//cc",
@@ -978,6 +1111,7 @@ source_set("libcef_static") {
if (is_win) { if (is_win) {
sources += includes_win + [ sources += includes_win + [
"libcef/browser/alloy/alloy_browser_main_win.cc",
"libcef/browser/native/browser_platform_delegate_native_win.cc", "libcef/browser/native/browser_platform_delegate_native_win.cc",
"libcef/browser/native/browser_platform_delegate_native_win.h", "libcef/browser/native/browser_platform_delegate_native_win.h",
"libcef/browser/osr/browser_platform_delegate_osr_win.cc", "libcef/browser/osr/browser_platform_delegate_osr_win.cc",
@@ -1277,7 +1411,6 @@ make_pack_header("resources") {
"$root_gen_dir/extensions/grit/extensions_resources.h", "$root_gen_dir/extensions/grit/extensions_resources.h",
"$root_gen_dir/mojo/public/js/grit/mojo_bindings_resources.h", "$root_gen_dir/mojo/public/js/grit/mojo_bindings_resources.h",
"$root_gen_dir/net/grit/net_resources.h", "$root_gen_dir/net/grit/net_resources.h",
"$root_gen_dir/third_party/blink/public/resources/grit/blink_image_resources.h",
"$root_gen_dir/third_party/blink/public/resources/grit/blink_resources.h", "$root_gen_dir/third_party/blink/public/resources/grit/blink_resources.h",
"$root_gen_dir/ui/resources/grit/ui_resources.h", "$root_gen_dir/ui/resources/grit/ui_resources.h",
"$root_gen_dir/ui/resources/grit/webui_resources.h", "$root_gen_dir/ui/resources/grit/webui_resources.h",
@@ -1308,7 +1441,6 @@ make_pack_header("resources") {
"//extensions:extensions_resources_grd", "//extensions:extensions_resources_grd",
"//mojo/public/js:resources", "//mojo/public/js:resources",
"//net:net_resources", "//net:net_resources",
"//third_party/blink/public:image_resources",
"//third_party/blink/public:resources", "//third_party/blink/public:resources",
"//ui/resources:ui_resources_grd", "//ui/resources:ui_resources_grd",
"//ui/resources:webui_resources_grd", "//ui/resources:webui_resources_grd",
@@ -1330,10 +1462,8 @@ make_pack_header("strings") {
"$root_gen_dir/components/strings/grit/components_strings.h", "$root_gen_dir/components/strings/grit/components_strings.h",
"$root_gen_dir/extensions/strings/grit/extensions_strings.h", "$root_gen_dir/extensions/strings/grit/extensions_strings.h",
"$root_gen_dir/services/strings/grit/services_strings.h", "$root_gen_dir/services/strings/grit/services_strings.h",
"$root_gen_dir/third_party/blink/public/strings/grit/blink_accessibility_strings.h",
"$root_gen_dir/third_party/blink/public/strings/grit/blink_strings.h", "$root_gen_dir/third_party/blink/public/strings/grit/blink_strings.h",
"$root_gen_dir/third_party/blink/public/strings/grit/permission_element_strings.h",
"$root_gen_dir/ui/strings/grit/app_locale_settings.h",
"$root_gen_dir/ui/strings/grit/auto_image_annotation_strings.h",
"$root_gen_dir/ui/strings/grit/ui_strings.h", "$root_gen_dir/ui/strings/grit/ui_strings.h",
] ]
@@ -1350,9 +1480,8 @@ make_pack_header("strings") {
"//extensions/strings", "//extensions/strings",
"//services/strings", "//services/strings",
"//third_party/blink/public/strings", "//third_party/blink/public/strings",
"//third_party/blink/public/strings:permission_element_strings", "//third_party/blink/public/strings:accessibility_strings",
"//ui/strings:app_locale_settings", "//ui/strings:app_locale_settings",
"//ui/strings:auto_image_annotation_strings",
"//ui/strings:ui_strings", "//ui/strings:ui_strings",
] ]
} }
@@ -1476,32 +1605,50 @@ if (is_mac) {
] ]
} }
# Add the ANGLE .dylibs in the MODULE_DIR of the Framework app bundle. if (use_egl) {
bundle_data("cef_framework_angle_binaries") { # Add the ANGLE .dylibs in the MODULE_DIR of the Framework app bundle.
sources = [ bundle_data("cef_framework_angle_binaries") {
"$root_out_dir/egl_intermediates/libEGL.dylib", sources = [
"$root_out_dir/egl_intermediates/libGLESv2.dylib", "$root_out_dir/egl_intermediates/libEGL.dylib",
] "$root_out_dir/egl_intermediates/libGLESv2.dylib",
outputs = [ ]
"{{bundle_contents_dir}}/Libraries/{{source_file_part}}", outputs = [
] "{{bundle_contents_dir}}/Libraries/{{source_file_part}}",
public_deps = [ ]
"//ui/gl:angle_library_copy", public_deps = [
] "//ui/gl:angle_library_copy",
]
}
# Add the SwiftShader .dylibs in the MODULE_DIR of the Framework app bundle.
bundle_data("cef_framework_swiftshader_binaries") {
sources = [
"$root_out_dir/vk_intermediates/libvk_swiftshader.dylib",
"$root_out_dir/vk_intermediates/vk_swiftshader_icd.json",
]
outputs = [
"{{bundle_contents_dir}}/Libraries/{{source_file_part}}",
]
public_deps = [
"//ui/gl:swiftshader_vk_library_copy",
]
}
} }
# Add the SwiftShader .dylibs in the MODULE_DIR of the Framework app bundle. group("cef_framework_angle_library") {
bundle_data("cef_framework_swiftshader_binaries") { if (use_egl) {
sources = [ deps = [
"$root_out_dir/vk_intermediates/libvk_swiftshader.dylib", ":cef_framework_angle_binaries",
"$root_out_dir/vk_intermediates/vk_swiftshader_icd.json", ]
] }
outputs = [ }
"{{bundle_contents_dir}}/Libraries/{{source_file_part}}",
] group("cef_framework_swiftshader_library") {
public_deps = [ if (use_egl) {
"//ui/gl:swiftshader_vk_library_copy", deps = [
] ":cef_framework_swiftshader_binaries",
]
}
} }
mac_framework_bundle("cef_framework") { mac_framework_bundle("cef_framework") {
@@ -1525,9 +1672,9 @@ if (is_mac) {
gypi_paths.autogen_library_side gypi_paths.autogen_library_side
deps = [ deps = [
":cef_framework_angle_binaries", ":cef_framework_angle_library",
":cef_framework_resources", ":cef_framework_resources",
":cef_framework_swiftshader_binaries", ":cef_framework_swiftshader_library",
":libcef_static", ":libcef_static",
":libcef_test_support", ":libcef_test_support",
] ]
@@ -1612,19 +1759,14 @@ if (is_mac) {
] ]
} }
if (is_linux) { if (is_linux && !is_debug && !use_partition_alloc_as_malloc) {
# Disable 'duplicate symbol' linker errors. # Only export necessary symbols from libcef.so.
ldflags = [ "-Wl,--allow-multiple-definition" ] # Don't do this in Debug builds because it causes the resulting
# application to crash.
if (!is_debug && !use_partition_alloc_as_malloc) { # Also need to do this for ASAN builds to work around
# Only export necessary symbols from libcef.so. # https://crbug.com/832808.
# Don't do this in Debug builds because it causes the resulting ldflags = [ "-Wl,--version-script=" +
# application to crash. rebase_path("//cef/libcef_dll/libcef.lst") ]
# Also need to do this for ASAN builds to work around
# https://crbug.com/832808.
ldflags += [ "-Wl,--version-script=" +
rebase_path("//cef/libcef_dll/libcef.lst") ]
}
} }
} }
} }
@@ -1826,7 +1968,7 @@ if (is_mac) {
bundle_data("cefclient_resources_bundle_data") { bundle_data("cefclient_resources_bundle_data") {
sources = gypi_paths2.shared_sources_resources + sources = gypi_paths2.shared_sources_resources +
gypi_paths2.cefclient_sources_resources + [ gypi_paths2.cefclient_sources_resources + [
"tests/cefclient/mac/cefclient.icns", "tests/cefclient/resources/mac/cefclient.icns",
] ]
outputs = [ outputs = [
@@ -1836,7 +1978,7 @@ if (is_mac) {
bundle_data("cefclient_resources_bundle_data_english") { bundle_data("cefclient_resources_bundle_data_english") {
sources = [ sources = [
"tests/cefclient/mac/English.lproj/InfoPlist.strings", "tests/cefclient/resources/mac/English.lproj/InfoPlist.strings",
] ]
outputs = [ outputs = [
@@ -1846,7 +1988,7 @@ if (is_mac) {
mac_xib_bundle_data("cefclient_xibs") { mac_xib_bundle_data("cefclient_xibs") {
sources = [ sources = [
"tests/cefclient/mac/English.lproj/MainMenu.xib", "tests/cefclient/resources/mac/English.lproj/MainMenu.xib",
] ]
output_path = "{{bundle_resources_dir}}/English.lproj" output_path = "{{bundle_resources_dir}}/English.lproj"
@@ -1856,7 +1998,7 @@ if (is_mac) {
# Necessary because the cef_framework target is testonly. # Necessary because the cef_framework target is testonly.
testonly = true testonly = true
helper_info_plist = "tests/cefclient/mac/helper-Info.plist.in" helper_info_plist = "tests/cefclient/resources/mac/helper-Info.plist"
helper_sources = includes_common + helper_sources = includes_common +
includes_mac + includes_mac +
gypi_paths2.includes_wrapper + gypi_paths2.includes_wrapper +
@@ -1870,7 +2012,7 @@ if (is_mac) {
"CEF_USE_SANDBOX", "CEF_USE_SANDBOX",
] ]
info_plist = "tests/cefclient/mac/Info.plist.in" info_plist = "tests/cefclient/resources/mac/Info.plist"
sources = includes_common + sources = includes_common +
includes_mac + includes_mac +
gypi_paths2.includes_wrapper + gypi_paths2.includes_wrapper +
@@ -1932,7 +2074,7 @@ if (is_mac) {
# Necessary because the cef_framework target is testonly. # Necessary because the cef_framework target is testonly.
testonly = true testonly = true
helper_info_plist = "tests/cefsimple/mac/helper-Info.plist.in" helper_info_plist = "tests/cefsimple/mac/helper-Info.plist"
helper_sources = includes_common + helper_sources = includes_common +
includes_mac + includes_mac +
gypi_paths2.includes_wrapper + gypi_paths2.includes_wrapper +
@@ -1942,7 +2084,7 @@ if (is_mac) {
"CEF_USE_SANDBOX", "CEF_USE_SANDBOX",
] ]
info_plist = "tests/cefsimple/mac/Info.plist.in" info_plist = "tests/cefsimple/mac/Info.plist"
sources = includes_common + sources = includes_common +
includes_mac + includes_mac +
gypi_paths2.includes_wrapper + gypi_paths2.includes_wrapper +
@@ -1969,7 +2111,7 @@ if (is_mac) {
bundle_data("ceftests_resources_bundle_data") { bundle_data("ceftests_resources_bundle_data") {
sources = gypi_paths2.shared_sources_resources + [ sources = gypi_paths2.shared_sources_resources + [
"tests/ceftests/mac/ceftests.icns", "tests/ceftests/resources/mac/ceftests.icns",
] ]
outputs = [ outputs = [
@@ -1979,7 +2121,7 @@ if (is_mac) {
bundle_data("ceftests_resources_bundle_data_english") { bundle_data("ceftests_resources_bundle_data_english") {
sources = [ sources = [
"tests/ceftests/mac/English.lproj/InfoPlist.strings", "tests/ceftests/resources/mac/English.lproj/InfoPlist.strings",
] ]
outputs = [ outputs = [
@@ -1989,7 +2131,7 @@ if (is_mac) {
mac_xib_bundle_data("ceftests_xibs") { mac_xib_bundle_data("ceftests_xibs") {
sources = [ sources = [
"tests/ceftests/mac/English.lproj/MainMenu.xib", "tests/ceftests/resources/mac/English.lproj/MainMenu.xib",
] ]
output_path = "{{bundle_resources_dir}}/English.lproj" output_path = "{{bundle_resources_dir}}/English.lproj"
} }
@@ -1997,12 +2139,11 @@ if (is_mac) {
cef_app("ceftests") { cef_app("ceftests") {
testonly = true testonly = true
helper_info_plist = "tests/ceftests/mac/helper-Info.plist.in" helper_info_plist = "tests/ceftests/resources/mac/helper-Info.plist"
helper_sources = gypi_paths2.shared_sources_common + helper_sources = gypi_paths2.shared_sources_common +
gypi_paths2.shared_sources_renderer + gypi_paths2.shared_sources_renderer +
gypi_paths2.shared_sources_mac_helper + gypi_paths2.shared_sources_mac_helper +
gypi_paths2.ceftests_sources_mac_helper + gypi_paths2.ceftests_sources_mac_helper
gypi_paths2.ceftests_sources_mac_helper_shared
helper_deps = [ helper_deps = [
":gtest_teamcity", ":gtest_teamcity",
"//testing/gtest", "//testing/gtest",
@@ -2015,7 +2156,7 @@ if (is_mac) {
"CEF_TESTS_IN_SRC_DIRECTORY", "CEF_TESTS_IN_SRC_DIRECTORY",
] ]
info_plist = "tests/ceftests/mac/Info.plist.in" info_plist = "tests/ceftests/resources/mac/Info.plist"
sources = includes_common + sources = includes_common +
includes_mac + includes_mac +
gypi_paths2.includes_wrapper + gypi_paths2.includes_wrapper +
@@ -2100,8 +2241,7 @@ if (is_mac) {
if (is_win) { if (is_win) {
sources += includes_win + sources += includes_win +
gypi_paths2.shared_sources_win + gypi_paths2.shared_sources_win +
gypi_paths2.cefclient_sources_win + gypi_paths2.cefclient_sources_win
gypi_paths2.cefclient_sources_resources_win_rc
# Set /SUBSYSTEM:WINDOWS. # Set /SUBSYSTEM:WINDOWS.
configs -= [ "//build/config/win:console" ] configs -= [ "//build/config/win:console" ]
@@ -2197,8 +2337,7 @@ if (is_mac) {
if (is_win) { if (is_win) {
sources += includes_win + sources += includes_win +
gypi_paths2.cefsimple_sources_win + gypi_paths2.cefsimple_sources_win
gypi_paths2.cefsimple_sources_resources_win_rc
# Set /SUBSYSTEM:WINDOWS. # Set /SUBSYSTEM:WINDOWS.
configs -= [ "//build/config/win:console" ] configs -= [ "//build/config/win:console" ]
@@ -2273,8 +2412,7 @@ if (is_mac) {
if (is_win) { if (is_win) {
sources += gypi_paths2.shared_sources_win + sources += gypi_paths2.shared_sources_win +
gypi_paths2.ceftests_sources_win + gypi_paths2.ceftests_sources_win
gypi_paths2.ceftests_sources_resources_win_rc
# Delay-load as many DLLs as possible for sandbox and startup perf # Delay-load as many DLLs as possible for sandbox and startup perf
# improvements. # improvements.

View File

@@ -7,6 +7,6 @@
# https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding # https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding
{ {
'chromium_checkout': 'refs/tags/131.0.6778.265', 'chromium_checkout': 'refs/tags/126.0.6478.183',
'depot_tools_checkout': 'c9552ffad5' 'depot_tools_checkout': 'fca881606e'
} }

View File

@@ -27,6 +27,17 @@
# Files in the chromium/src directory that should be evaluated for changes. # Files in the chromium/src directory that should be evaluated for changes.
# Similar changes may need to be applied to the CEF source code. # Similar changes may need to be applied to the CEF source code.
'files': [ 'files': [
'chrome/browser/browser_process.h',
'chrome/browser/extensions/api/tabs/tabs_api.*',
'chrome/browser/extensions/chrome_component_extension_resource_manager.*',
'chrome/browser/extensions/chrome_extension_web_contents_observer.*',
'chrome/browser/extensions/component_loader.*',
'chrome/browser/extensions/extension_service.*',
'chrome/browser/profiles/profile.h',
'chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.*',
'chrome/common/extensions/api/*_features.json',
'chrome/renderer/chrome_content_renderer_client.*',
'chrome/renderer/extensions/chrome_extensions_renderer_client.*',
'components/content_settings/core/common/content_settings_types.mojom', 'components/content_settings/core/common/content_settings_types.mojom',
'components/permissions/request_type.h', 'components/permissions/request_type.h',
'content/browser/renderer_host/render_widget_host_view_base.*', 'content/browser/renderer_host/render_widget_host_view_base.*',

View File

@@ -48,9 +48,10 @@
# libgtk3.0-dev (required by the cefclient target only) # libgtk3.0-dev (required by the cefclient target only)
# #
# - MacOS requirements: # - MacOS requirements:
# Xcode 12.2 to 15.4 building on MacOS 11.0 (Big Sur) or newer. The Xcode # Xcode 12.2 to 15.0 building on MacOS 10.15.4 (Catalina) or newer. Only
# command-line tools must also be installed. Newer Xcode versions may not have # 64-bit builds are supported. The Xcode command-line tools must also be
# been been tested and are not recommended. # installed. Newer Xcode versions may not have been been tested and are not
# recommended.
# #
# - Windows requirements: # - Windows requirements:
# Visual Studio 2022 building on Windows 10 or newer. Windows 10/11 64-bit is # Visual Studio 2022 building on Windows 10 or newer. Windows 10/11 64-bit is
@@ -142,7 +143,7 @@ set(CMAKE_CONFIGURATION_TYPES Debug Release)
project(cef) project(cef)
# Use folders in the resulting project files. # Use folders in the resulting project files.
set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(GLOBAL PROPERTY OS_FOLDERS ON)
# #
@@ -253,4 +254,4 @@ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile")
else() else()
message(WARNING "Doxygen must be installed to generate API documentation.") message(WARNING "Doxygen must be installed to generate API documentation.")
endif() endif()
endif() endif()

View File

@@ -1,8 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
# Allow access from targets in other packages.
package(default_visibility = [
"//visibility:public",
])

View File

@@ -1,65 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
def _copy_filegroups_impl(ctx):
inputs = ctx.files.filegroups
remove_prefixes = ctx.attr.remove_prefixes
add_prefix = ctx.attr.add_prefix
outputs = []
for f in inputs:
relative_path = f.path
if relative_path.startswith("external/"):
# Remove the "external/<repo>" component, if any.
relative_path = "/".join(relative_path.split("/")[2:])
for prefix in remove_prefixes:
# Add trailing forward slash if necessary.
if prefix[-1] != "/":
prefix += "/"
if len(prefix) > 0 and relative_path.startswith(prefix):
relative_path = relative_path[len(prefix):]
break
if len(add_prefix) > 0:
# Add trailing forward slash if necessary.
if add_prefix[-1] != "/":
add_prefix += "/"
relative_path = add_prefix + relative_path
out = ctx.actions.declare_file(relative_path)
outputs.append(out)
if relative_path.find("/") > 0:
command="mkdir -p $(dirname {}) && cp {} {}".format(out.path, f.path, out.path)
else:
command="cp {} {}".format(f.path, out.path)
ctx.actions.run_shell(
outputs=[out],
inputs=depset([f]),
command=command
)
# Small sanity check
if len(inputs) != len(outputs):
fail("Output count should be 1-to-1 with input count.")
return DefaultInfo(
files=depset(outputs),
runfiles=ctx.runfiles(files=outputs)
)
# Allows the file contents of |filegroups| to be copied next to a cc_binary
# target via the |data| attribute.
# Implementation based on https://stackoverflow.com/a/57983629
copy_filegroups = rule(
implementation=_copy_filegroups_impl,
attrs={
"filegroups": attr.label_list(),
"remove_prefixes": attr.string_list(default = []),
"add_prefix": attr.string(default = ""),
},
)

View File

@@ -1,90 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
load("//bazel/win:variables.bzl",
WIN_COMMON_COPTS="COMMON_COPTS",
WIN_COMMON_COPTS_RELEASE="COMMON_COPTS_RELEASE",
WIN_COMMON_COPTS_DEBUG="COMMON_COPTS_DEBUG",
WIN_COMMON_DEFINES="COMMON_DEFINES",
WIN_COMMON_DEFINES_RELEASE="COMMON_DEFINES_RELEASE",
WIN_COMMON_DEFINES_DEBUG="COMMON_DEFINES_DEBUG")
load("//bazel/linux:variables.bzl",
LINUX_COMMON_COPTS="COMMON_COPTS",
LINUX_COMMON_COPTS_RELEASE="COMMON_COPTS_RELEASE",
LINUX_COMMON_COPTS_DEBUG="COMMON_COPTS_DEBUG",
LINUX_COMMON_DEFINES="COMMON_DEFINES",
LINUX_COMMON_DEFINES_RELEASE="COMMON_DEFINES_RELEASE",
LINUX_COMMON_DEFINES_DEBUG="COMMON_DEFINES_DEBUG")
load("//bazel/mac:variables.bzl",
MAC_COMMON_COPTS="COMMON_COPTS",
MAC_COMMON_COPTS_RELEASE="COMMON_COPTS_RELEASE",
MAC_COMMON_COPTS_DEBUG="COMMON_COPTS_DEBUG")
load("@rules_cc//cc:defs.bzl", "cc_library", "objc_library")
def declare_cc_library(copts=[], local_defines=[], **kwargs):
"""
cc_library wrapper that applies common copts and local_defines.
"""
# NOTE: objc_library does not support local_defines on MacOS, so on
# that platform we put the defines in copts instead.
cc_library(
copts = select({
"@platforms//os:windows": WIN_COMMON_COPTS,
"@platforms//os:linux": LINUX_COMMON_COPTS,
"@platforms//os:macos": MAC_COMMON_COPTS,
"//conditions:default": None,
}) + select({
"@cef//:windows_opt": WIN_COMMON_COPTS_RELEASE,
"@cef//:windows_dbg": WIN_COMMON_COPTS_DEBUG,
"@cef//:windows_fastbuild": WIN_COMMON_COPTS_RELEASE,
"@cef//:linux_opt": LINUX_COMMON_COPTS_RELEASE,
"@cef//:linux_dbg": LINUX_COMMON_COPTS_DEBUG,
"@cef//:linux_fastbuild": LINUX_COMMON_COPTS_RELEASE,
"@cef//:macos_opt": MAC_COMMON_COPTS_RELEASE,
"@cef//:macos_dbg": MAC_COMMON_COPTS_DEBUG,
"@cef//:macos_fastbuild": MAC_COMMON_COPTS_RELEASE,
"//conditions:default": None,
}) + copts,
local_defines = select({
"@platforms//os:windows": WIN_COMMON_DEFINES,
"@platforms//os:linux": LINUX_COMMON_DEFINES,
"//conditions:default": None,
}) + select({
"@cef//:windows_opt": WIN_COMMON_DEFINES_RELEASE,
"@cef//:windows_dbg": WIN_COMMON_DEFINES_DEBUG,
"@cef//:windows_fastbuild": WIN_COMMON_DEFINES_RELEASE,
"@cef//:linux_opt": LINUX_COMMON_DEFINES_RELEASE,
"@cef//:linux_dbg": LINUX_COMMON_DEFINES_DEBUG,
"@cef//:linux_fastbuild": LINUX_COMMON_DEFINES_RELEASE,
"//conditions:default": None,
}) + local_defines,
**kwargs
)
def declare_objc_library(copts=[], **kwargs):
"""
objc_library wrapper that applies common copts.
"""
# NOTE: objc_library does not support local_defines on MacOS, so on
# that platform we put the defines in copts instead.
objc_library(
copts = select({
"@platforms//os:windows": WIN_COMMON_COPTS,
"@platforms//os:linux": LINUX_COMMON_COPTS,
"@platforms//os:macos": MAC_COMMON_COPTS,
"//conditions:default": None,
}) + select({
"@cef//:windows_opt": WIN_COMMON_COPTS_RELEASE,
"@cef//:windows_dbg": WIN_COMMON_COPTS_DEBUG,
"@cef//:windows_fastbuild": WIN_COMMON_COPTS_RELEASE,
"@cef//:linux_opt": LINUX_COMMON_COPTS_RELEASE,
"@cef//:linux_dbg": LINUX_COMMON_COPTS_DEBUG,
"@cef//:linux_fastbuild": LINUX_COMMON_COPTS_RELEASE,
"@cef//:macos_opt": MAC_COMMON_COPTS_RELEASE,
"@cef//:macos_dbg": MAC_COMMON_COPTS_DEBUG,
"@cef//:macos_fastbuild": MAC_COMMON_COPTS_RELEASE,
"//conditions:default": None,
}) + copts,
**kwargs
)

View File

@@ -1,8 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
# Allow access from targets in other packages.
package(default_visibility = [
"//visibility:public",
])

View File

@@ -1,63 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
load("//bazel:copy_filegroups.bzl", "copy_filegroups")
load("//bazel/linux:fix_rpath.bzl", "fix_rpath")
load("//bazel/linux:variables.bzl",
"COMMON_LINKOPTS",
"COMMON_COPTS", "COMMON_COPTS_RELEASE", "COMMON_COPTS_DEBUG",
"COMMON_DEFINES", "COMMON_DEFINES_RELEASE", "COMMON_DEFINES_DEBUG")
load("@rules_cc//cc:defs.bzl", "cc_binary")
def declare_exe(name, srcs=[], deps=[], linkopts=[], copts=[], local_defines=[], data=[], **kwargs):
# Copy SOs and resources into the current project.
copy_target = "{}_sos_and_resources".format(name)
copy_filegroups(
name = copy_target,
filegroups = [
"@cef//:sos",
"@cef//:resources",
],
remove_prefixes = [
"Debug",
"Release",
"Resources",
],
)
# Executable target.
binary_target = "{}_incorrect_rpath".format(name)
cc_binary(
name = binary_target,
srcs = srcs,
deps = [
"@cef//:cef_wrapper",
"@cef//:cef",
"@cef//:cef_sandbox",
] + deps,
linkopts = COMMON_LINKOPTS + linkopts,
copts = COMMON_COPTS + select({
"@cef//:linux_dbg": COMMON_COPTS_DEBUG,
"//conditions:default": COMMON_COPTS_RELEASE,
}) + copts,
local_defines = COMMON_DEFINES + select({
"@cef//:linux_dbg": COMMON_DEFINES_DEBUG,
"//conditions:default": COMMON_DEFINES_RELEASE,
}) + local_defines,
data = [
":{}".format(copy_target),
] + data,
target_compatible_with = ["@platforms//os:linux"],
**kwargs
)
# Set rpath to $ORIGIN so that libraries can be loaded from next to the
# executable.
fix_rpath(
name = "{}_fixed_rpath".format(name),
src = ":{}".format(binary_target),
out = name,
target_compatible_with = ["@platforms//os:linux"],
)

View File

@@ -1,41 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
def _fix_rpath_impl(ctx):
inputs = ctx.runfiles(files = [ctx.file.src])
# Bring over 'data' dependencies from the input.
inputs = inputs.merge_all([ctx.attr.src[DefaultInfo].default_runfiles])
src = ctx.file.src.path
out = ctx.outputs.out.path
ctx.actions.run_shell(
outputs = [ctx.outputs.out],
inputs = inputs.files,
arguments = [src, out],
command = "cp $1 $2 && " +
"chmod +w $2 && " +
"patchelf --remove-rpath $2 && " +
"patchelf --set-rpath '$ORIGIN' $2"
)
return [DefaultInfo(files = depset([ctx.outputs.out]))]
# Set rpath to $ORIGIN so that libraries can be loaded from next to the
# executable. The result can be confirmed with:
# $ objdump -x ./bazel-bin/path/to/binary | grep 'R.*PATH'
#
# Alternatively, define a custom CC toolchain that overrides
# 'runtime_library_search_directories'.
#
# This rule requires preinstallation of the patchelf package:
# $ sudo apt install patchelf
fix_rpath = rule(
implementation = _fix_rpath_impl,
attrs = {
"src": attr.label(allow_single_file = True),
"out": attr.output(mandatory = True),
},
)

View File

@@ -1,7 +0,0 @@
package(default_visibility = ["//visibility:public"])
exports_files([
"pkg_config.bzl",
"BUILD.tmpl",
])

View File

@@ -1,32 +0,0 @@
# vi: ft=bzl
package(default_visibility = ["//visibility:private"])
_imports = [p[:len(p)-2] for p in glob(["{}/**/*.a".format(d) for d in [%{deps}]])]
[cc_import(
name = i.replace("/", "_"),
hdrs = glob([%{hdrs}]),
# TODO: library extension for platform.
static_library = "{}.a".format(i),
shared_library = "{}.dylib".format(i),
) for i in _imports]
cc_library(
name = "internal_lib",
hdrs = glob([%{hdrs}]),
copts = [%{copts}],
includes = [%{includes}],
linkopts = [%{linkopts}],
deps = [(":" + i.replace("/", "_")) for i in _imports],
)
cc_library(
name = "lib",
hdrs = glob(["%{strip_include}/**/*.h"]),
copts = [%{extra_copts}],
linkopts = [%{extra_linkopts}],
deps = [":internal_lib"] + [%{extra_deps}],
visibility = ["//visibility:public"],
strip_include_prefix = "%{strip_include}",
include_prefix = "%{include_prefix}",
)

View File

@@ -1,11 +0,0 @@
Name: pkg_config
URL: https://github.com/cherrry/bazel_pkg_config
Version: 284219a
Description:
Bazel rules for pkg-config tools.
CEF-specific changes:
- Fix failure with duplicate symlinks.
- Remove `--static` flag from pkg-config invocation.

View File

@@ -1,2 +0,0 @@
workspace(name = "pkg_config")

View File

@@ -1,194 +0,0 @@
def _success(value):
return struct(error = None, value = value)
def _error(message):
return struct(error = message, value = None)
def _split(result, delimeter = " "):
if result.error != None:
return result
return _success([arg for arg in result.value.strip().split(delimeter) if arg])
def _find_binary(ctx, binary_name):
binary = ctx.which(binary_name)
if binary == None:
return _error("Unable to find binary: {}".format(binary_name))
return _success(binary)
def _execute(ctx, binary, args):
result = ctx.execute([binary] + args)
if result.return_code != 0:
return _error("Failed execute {} {}".format(binary, args))
return _success(result.stdout)
def _pkg_config(ctx, pkg_config, pkg_name, args):
return _execute(ctx, pkg_config, [pkg_name] + args)
def _check(ctx, pkg_config, pkg_name):
exist = _pkg_config(ctx, pkg_config, pkg_name, ["--exists"])
if exist.error != None:
return _error("Package {} does not exist".format(pkg_name))
if ctx.attr.version != "":
version = _pkg_config(ctx, pkg_config, pkg_name, ["--exact-version", ctx.attr.version])
if version.error != None:
return _error("Require {} version = {}".format(pkg_name, ctx.attr.version))
if ctx.attr.min_version != "":
version = _pkg_config(ctx, pkg_config, pkg_name, ["--atleast-version", ctx.attr.min_version])
if version.error != None:
return _error("Require {} version >= {}".format(pkg_name, ctx.attr.min_version))
if ctx.attr.max_version != "":
version = _pkg_config(ctx, pkg_config, pkg_name, ["--max-version", ctx.attr.max_version])
if version.error != None:
return _error("Require {} version <= {}".format(pkg_name, ctx.attr.max_version))
return _success(None)
def _extract_prefix(flags, prefix, strip = True):
stripped, remain = [], []
for arg in flags:
if arg.startswith(prefix):
if strip:
stripped += [arg[len(prefix):]]
else:
stripped += [arg]
else:
remain += [arg]
return stripped, remain
def _includes(ctx, pkg_config, pkg_name):
includes = _split(_pkg_config(ctx, pkg_config, pkg_name, ["--cflags-only-I"]))
if includes.error != None:
return includes
includes, unused = _extract_prefix(includes.value, "-I", strip = True)
return _success(includes)
def _copts(ctx, pkg_config, pkg_name):
return _split(_pkg_config(ctx, pkg_config, pkg_name, [
"--cflags-only-other",
"--libs-only-L",
]))
def _linkopts(ctx, pkg_config, pkg_name):
return _split(_pkg_config(ctx, pkg_config, pkg_name, [
"--libs-only-other",
"--libs-only-l",
]))
def _ignore_opts(opts, ignore_opts):
remain = []
for opt in opts:
if opt not in ignore_opts:
remain += [opt]
return remain
def _symlinks(ctx, basename, srcpaths):
result = []
root = ctx.path("")
base = root.get_child(basename)
rootlen = len(str(base)) - len(basename)
for src in [ctx.path(p) for p in srcpaths]:
dest = base.get_child(src.basename)
if not dest.exists:
ctx.symlink(src, dest)
result += [str(dest)[rootlen:]]
return result
def _deps(ctx, pkg_config, pkg_name):
deps = _split(_pkg_config(ctx, pkg_config, pkg_name, [
"--libs-only-L",
"--static",
]))
if deps.error != None:
return deps
deps, unused = _extract_prefix(deps.value, "-L", strip = True)
result = []
for dep in {dep: True for dep in deps}.keys():
base = "deps_" + dep.replace("/", "_").replace(".", "_")
result += _symlinks(ctx, base, [dep])
return _success(result)
def _fmt_array(array):
return ",".join(['"{}"'.format(a) for a in array])
def _fmt_glob(array):
return _fmt_array(["{}/**/*.h".format(a) for a in array])
def _pkg_config_impl(ctx):
pkg_name = ctx.attr.pkg_name
if pkg_name == "":
pkg_name = ctx.attr.name
pkg_config = _find_binary(ctx, "pkg-config")
if pkg_config.error != None:
return pkg_config
pkg_config = pkg_config.value
check = _check(ctx, pkg_config, pkg_name)
if check.error != None:
return check
includes = _includes(ctx, pkg_config, pkg_name)
if includes.error != None:
return includes
includes = includes.value
includes = _symlinks(ctx, "includes", includes)
strip_include = "includes"
if len(includes) == 1:
strip_include = includes[0]
if ctx.attr.strip_include != "":
strip_include += "/" + ctx.attr.strip_include
ignore_opts = ctx.attr.ignore_opts
copts = _copts(ctx, pkg_config, pkg_name)
if copts.error != None:
return copts
copts = _ignore_opts(copts.value, ignore_opts)
linkopts = _linkopts(ctx, pkg_config, pkg_name)
if linkopts.error != None:
return linkopts
linkopts = _ignore_opts(linkopts.value, ignore_opts)
deps = _deps(ctx, pkg_config, pkg_name)
if deps.error != None:
return deps
deps = deps.value
include_prefix = ctx.attr.name
if ctx.attr.include_prefix != "":
include_prefix = ctx.attr.include_prefix + "/" + ctx.attr.name
build = ctx.template("BUILD", Label("//:BUILD.tmpl"), substitutions = {
"%{name}": ctx.attr.name,
"%{hdrs}": _fmt_glob(includes),
"%{includes}": _fmt_array(includes),
"%{copts}": _fmt_array(copts),
"%{extra_copts}": _fmt_array(ctx.attr.copts),
"%{deps}": _fmt_array(deps),
"%{extra_deps}": _fmt_array(ctx.attr.deps),
"%{linkopts}": _fmt_array(linkopts),
"%{extra_linkopts}": _fmt_array(ctx.attr.linkopts),
"%{strip_include}": strip_include,
"%{include_prefix}": include_prefix,
}, executable = False)
pkg_config = repository_rule(
attrs = {
"pkg_name": attr.string(doc = "Package name for pkg-config query, default to name."),
"include_prefix": attr.string(doc = "Additional prefix when including file, e.g. third_party. Compatible with strip_include option to produce desired include paths."),
"strip_include": attr.string(doc = "Strip prefix when including file, e.g. libs, files not included will be invisible. Compatible with include_prefix option to produce desired include paths."),
"version": attr.string(doc = "Exact package version."),
"min_version": attr.string(doc = "Minimum package version."),
"max_version": attr.string(doc = "Maximum package version."),
"deps": attr.string_list(doc = "Dependency targets."),
"linkopts": attr.string_list(doc = "Extra linkopts value."),
"copts": attr.string_list(doc = "Extra copts value."),
"ignore_opts": attr.string_list(doc = "Ignore listed opts in copts or linkopts."),
},
local = True,
implementation = _pkg_config_impl,
)

View File

@@ -1,68 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
#
# Distribution SOs.
#
SOS = [
"libcef.so",
"libEGL.so",
"libGLESv2.so",
"libvk_swiftshader.so",
"libvulkan.so.1",
]
#
# Common 'linkopts' for cc_binary targets.
#
# Standard link libraries.
STANDARD_LIBS = [
"X11",
]
COMMON_LINKOPTS_DEBUG = [
]
COMMON_LINKOPTS_RELEASE = [
]
COMMON_LINKOPTS = [
"-l{}".format(lib) for lib in STANDARD_LIBS
] + select({
"@cef//:linux_dbg": COMMON_LINKOPTS_DEBUG,
"//conditions:default": COMMON_LINKOPTS_RELEASE,
})
#
# Common 'copts' for cc_libary and cc_binary targets.
#
COMMON_COPTS = [
]
COMMON_COPTS_DEBUG = [
]
COMMON_COPTS_RELEASE = [
]
#
# Common 'defines' for cc_libary targets.
#
COMMON_DEFINES = [
# Used by apps to test if the sandbox is enabled
"CEF_USE_SANDBOX",
]
COMMON_DEFINES_DEBUG = [
]
COMMON_DEFINES_RELEASE = [
# Not a debug build
"NDEBUG",
]

View File

@@ -1,8 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
# Allow access from targets in other packages.
package(default_visibility = [
"//visibility:public",
])

View File

@@ -1,113 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
load("@bazel_skylib//rules:expand_template.bzl", "expand_template")
load("@build_bazel_rules_apple//apple:macos.bzl", "macos_application")
load("//bazel:variables.bzl", "VERSION_PLIST")
load("//bazel/mac:variables.bzl",
"MACOS_DEPLOYMENT_TARGET",
"MACOS_BUNDLE_ID_BASE",
"CEF_FRAMEWORK_NAME",
"COMMON_LINKOPTS")
def _declare_helper_app(name, info_plist, deps, helper_base_name, helper_suffix, **kwargs):
"""
Creates a Helper .app target.
"""
helper_name = "{} Helper".format(name)
bundle_id_suffix = ""
if helper_suffix:
helper_name += " ({})".format(helper_suffix)
bundle_id_suffix += ".{}".format(helper_suffix.lower())
# Helper app bundle Info.plist.
expand_template(
name = "{}_InfoPList".format(helper_base_name),
template = info_plist,
out = "{}Info.plist".format(helper_base_name),
substitutions = {
"${EXECUTABLE_NAME}": helper_name,
"${PRODUCT_NAME}": name,
"${BUNDLE_ID_SUFFIX}": bundle_id_suffix,
"${VERSION_SHORT}": VERSION_PLIST,
"${VERSION_LONG}": VERSION_PLIST,
},
)
# Helper app bundle.
macos_application(
name = helper_base_name,
bundle_name = helper_name,
bundle_id = "{}.{}.helper{}".format(MACOS_BUNDLE_ID_BASE, name.lower(), bundle_id_suffix),
infoplists = [":{}_InfoPList".format(helper_base_name)],
minimum_os_version = MACOS_DEPLOYMENT_TARGET,
deps = [
"@cef//:cef_sandbox",
] + deps,
**kwargs,
)
HELPERS = {
"HelperBase": "",
"HelperAlerts": "Alerts",
"HelperGPU": "GPU",
"HelperPlugin": "Plugin",
"HelperRenderer": "Renderer",
}
def declare_all_helper_apps(name, info_plist, deps, **kwargs):
"""
Creates all Helper .app targets.
"""
[_declare_helper_app(
name = name,
info_plist = info_plist,
deps = deps,
helper_base_name = h,
helper_suffix = v,
**kwargs,
) for h, v in HELPERS.items()]
def declare_main_app(name, info_plist, deps, resources, linkopts=[], **kwargs):
"""
Creates the main .app target.
"""
# Main app bundle Info.plist.
expand_template(
name = "InfoPList",
template = info_plist,
out = "Info.plist",
substitutions = {
"${EXECUTABLE_NAME}": name,
"${PRODUCT_NAME}": name,
"${VERSION_SHORT}": VERSION_PLIST,
"${VERSION_LONG}": VERSION_PLIST,
},
)
# Main app bindle.
macos_application(
name = name,
additional_contents = {
":HelperBase": "Frameworks",
":HelperAlerts": "Frameworks",
":HelperGPU": "Frameworks",
":HelperPlugin": "Frameworks",
":HelperRenderer": "Frameworks",
"@cef//:cef_framework": "Frameworks/{}.framework".format(CEF_FRAMEWORK_NAME),
},
bundle_name = name,
bundle_id = "{}.{}".format(MACOS_BUNDLE_ID_BASE, name.lower()),
infoplists = [":InfoPList"],
linkopts = COMMON_LINKOPTS + linkopts,
minimum_os_version = MACOS_DEPLOYMENT_TARGET,
resources = resources,
target_compatible_with = [
"@platforms//os:macos",
],
deps = deps,
**kwargs,
)

View File

@@ -1,52 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
MACOS_DEPLOYMENT_TARGET="11.0"
MACOS_BUNDLE_ID_BASE="org.cef"
CEF_FRAMEWORK_NAME="Chromium Embedded Framework"
#
# Common 'linkopts' for macos_application targets.
#
# Standard link frameworks.
STANDARD_FRAMEWORKS = [
"AppKit",
]
COMMON_LINKOPTS_DEBUG = [
]
COMMON_LINKOPTS_RELEASE = [
]
COMMON_LINKOPTS = [
"-framework {}".format(lib) for lib in STANDARD_FRAMEWORKS
] + select({
"@cef//:macos_dbg": COMMON_LINKOPTS_DEBUG,
"//conditions:default": COMMON_LINKOPTS_RELEASE,
})
#
# Common 'copts' for cc_libary, objc_library and macos_application targets.
# We include defines in 'copts' because objc_library does not support
# 'local_defines'. See https://github.com/bazelbuild/bazel/issues/17482.
#
COMMON_COPTS = [
"-Wno-undefined-var-template",
"-Wno-missing-field-initializers",
"-Wno-deprecated-copy",
# Used by apps to test if the sandbox is enabled
"-DCEF_USE_SANDBOX",
]
COMMON_COPTS_DEBUG = [
]
COMMON_COPTS_RELEASE = [
# Not a debug build
"-DNDEBUG",
]

View File

@@ -1,8 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
# Allow access from targets in other packages.
package(default_visibility = [
"//visibility:public",
])

View File

@@ -1,33 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain", _use_cpp_toolchain="use_cpp_toolchain")
load("@rules_cc//cc:action_names.bzl", "CPP_COMPILE_ACTION_NAME")
# Since we need windows.h and other headers, we should ensure we have the same
# development environment as a regular cl.exe call. So use the current toolchain
# to grab environment variables to feed into the actual rc.exe call
# Much of this is taken from:
# https://github.com/bazelbuild/rules_cc/blob/main/examples/my_c_archive/my_c_archive.bzl
def collect_compilation_env(ctx):
cc_toolchain = find_cpp_toolchain(ctx)
feature_configuration = cc_common.configure_features(
ctx = ctx,
cc_toolchain = cc_toolchain,
requested_features = ctx.features,
unsupported_features = ctx.disabled_features,
)
compiler_variables = cc_common.create_compile_variables(
feature_configuration = feature_configuration,
cc_toolchain = cc_toolchain,
)
return cc_common.get_environment_variables(
feature_configuration = feature_configuration,
action_name = CPP_COMPILE_ACTION_NAME,
variables = compiler_variables,
)
use_cpp_toolchain=_use_cpp_toolchain

View File

@@ -1,82 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
load("//bazel:copy_filegroups.bzl", "copy_filegroups")
load("//bazel/win:mt.bzl", "add_manifest")
load("//bazel/win:rc.bzl", "compile_rc")
load("//bazel/win:variables.bzl",
"COMMON_LINKOPTS",
"COMMON_COPTS", "COMMON_COPTS_RELEASE", "COMMON_COPTS_DEBUG",
"COMMON_DEFINES", "COMMON_DEFINES_RELEASE", "COMMON_DEFINES_DEBUG")
load("@rules_cc//cc:defs.bzl", "cc_binary")
def declare_exe(name, srcs, manifest_srcs, rc_file, resources_srcs, resources_deps=[],
deps=[], linkopts=[], copts=[], local_defines=[], data=[],
additional_linker_inputs=[], features=[], **kwargs):
# Resource file.
res_target = "{}_res".format(name)
compile_rc(
name = res_target,
rc_file = rc_file,
srcs = resources_srcs,
deps = resources_deps,
out = "{}.res".format(name),
target_compatible_with = ["@platforms//os:windows"],
)
# Copy DLLs and resources into the current project.
copy_target = "{}_dlls_and_resources".format(name)
copy_filegroups(
name = copy_target,
filegroups = [
"@cef//:dlls",
"@cef//:resources",
],
remove_prefixes = [
"Debug",
"Release",
"Resources",
],
)
# Executable target.
binary_target = "{}_no_manifest".format(name)
cc_binary(
name = binary_target,
srcs = srcs,
deps = [
"@cef//:cef_wrapper",
"@cef//:cef",
"@cef//:cef_sandbox",
] + deps,
linkopts = [
"$(location :{})".format(res_target),
] + COMMON_LINKOPTS + linkopts,
copts = COMMON_COPTS + select({
"@cef//:windows_dbg": COMMON_COPTS_DEBUG,
"//conditions:default": COMMON_COPTS_RELEASE,
}) + copts,
local_defines = COMMON_DEFINES + select({
"@cef//:windows_dbg": COMMON_DEFINES_DEBUG,
"//conditions:default": COMMON_DEFINES_RELEASE,
}) + local_defines,
additional_linker_inputs = [
":{}".format(res_target),
] + additional_linker_inputs,
data = [
":{}".format(copy_target),
] + data,
features = ["generate_pdb_file"] + features,
target_compatible_with = ["@platforms//os:windows"],
**kwargs
)
# Add manifest and rename to final executable.
add_manifest(
name = name,
mt_files = manifest_srcs,
in_binary = ":{}".format(binary_target),
out_binary = "{}.exe".format(name),
target_compatible_with = ["@platforms//os:windows"],
)

View File

@@ -1,72 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
load("//bazel/win:cc_env.bzl", "collect_compilation_env", "use_cpp_toolchain")
# Copy exe and pdb file without tracking the destination as an output.
# Based on https://github.com/bazelbuild/bazel-skylib/blob/main/rules/private/copy_file_private.bzl
def _write_copy_cmd(ctx, src, dst):
# Most Windows binaries built with MSVC use a certain argument quoting
# scheme. Bazel uses that scheme too to quote arguments. However,
# cmd.exe uses different semantics, so Bazel's quoting is wrong here.
# To fix that we write the command to a .bat file so no command line
# quoting or escaping is required.
bat = ctx.actions.declare_file(ctx.label.name + "-cmd.bat")
src_path = src.path.replace("/", "\\")
dst_path = dst.path.replace("/", "\\")
ctx.actions.write(
output = bat,
# Do not use lib/shell.bzl's shell.quote() method, because that uses
# Bash quoting syntax, which is different from cmd.exe's syntax.
content = "@copy /Y \"%s\" \"%s\" >NUL\n@copy /Y \"%s\" \"%s\" >NUL" % (
src_path,
dst_path,
src_path.replace(".exe", ".pdb"),
dst_path.replace(".exe", ".pdb"),
),
is_executable = True,
)
return bat
def _add_mt_impl(ctx):
mt_files = ctx.files.mt_files
input = ctx.attr.in_binary[DebugPackageInfo].unstripped_file
output = ctx.outputs.out_binary
bat = _write_copy_cmd(ctx, input, output)
inputs = mt_files + [input, bat]
# Bring over 'data' dependencies from the input.
deps_inputs = ctx.runfiles(files = inputs)
deps_inputs = deps_inputs.merge_all([ctx.attr.in_binary[DefaultInfo].default_runfiles])
ctx.actions.run(
executable = ctx.executable._tool,
inputs = deps_inputs.files,
outputs = [output],
env = collect_compilation_env(ctx),
# The bat file will be executed before the tool command.
arguments = [bat.path, "-nologo", "-manifest"] + [f.path for f in mt_files] +
["-outputresource:{}".format(output.path)],
mnemonic = "AddMT"
)
return DefaultInfo(files = depset([output]))
add_manifest = rule(
implementation = _add_mt_impl,
attrs = {
"mt_files": attr.label_list(allow_files = [".manifest"]),
"in_binary": attr.label(providers = [CcInfo], allow_single_file = True),
"out_binary": attr.output(),
"_cc_toolchain": attr.label(default = Label("@bazel_tools//tools/cpp:current_cc_toolchain")),
"_tool": attr.label(
default = "@winsdk//:mt_pybin",
executable = True,
cfg = "exec"
)
},
fragments = ["cpp"],
toolchains = use_cpp_toolchain(),
)

View File

@@ -1,50 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
load("//bazel/win:cc_env.bzl", "collect_compilation_env", "use_cpp_toolchain")
def _compile_rc_impl(ctx):
rc_file = ctx.file.rc_file
output = ctx.outputs.out
inputs = [rc_file] + ctx.files.srcs
includes = ["/i{}/{}".format(ctx.label.package, i) for i in ctx.attr.includes]
# Grab all include paths/files required for the run
for dep in ctx.attr.deps:
comp_ctx = dep[CcInfo].compilation_context
includes += ["/i{}".format(i) for i in comp_ctx.quote_includes.to_list()]
includes += ["/i{}".format(i) for i in comp_ctx.system_includes.to_list()]
inputs += comp_ctx.headers.to_list()
ctx.actions.run(
executable = ctx.executable._tool,
inputs = inputs,
outputs = [output],
env = collect_compilation_env(ctx),
arguments = includes + ["/fo", output.path, rc_file.path],
mnemonic = "CompileRC"
)
return DefaultInfo(files = depset([output]))
compile_rc = rule(
implementation = _compile_rc_impl,
attrs = {
"rc_file": attr.label(allow_single_file = [".rc"]),
"srcs": attr.label_list(allow_files = True),
"deps": attr.label_list(providers = [CcInfo]),
"includes": attr.string_list(),
"out": attr.output(),
"_cc_toolchain": attr.label(default = Label("@bazel_tools//tools/cpp:current_cc_toolchain")),
"_tool": attr.label(
default = "@winsdk//:rc_pybin",
executable = True,
cfg = "exec"
)
},
fragments = ["cpp"],
toolchains = use_cpp_toolchain(),
)

View File

@@ -1,124 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
load("@bazel_tools//tools/cpp:windows_cc_configure.bzl", "find_vc_path", "setup_vc_env_vars")
def _get_arch(rctx):
if rctx.os.arch == "amd64":
return "x64"
def _is_windows(rctx):
return rctx.os.name.find("windows") != -1
# Tools in the form <Target>: [<Tool>, <Other files needed for that target>]
TOOLS = {
"mt": {
"tool": "mt.exe",
"deps": [],
},
"rc": {
"tool": "rc.exe",
"deps": ["rcdll.dll"],
},
}
def _setup_tools(rctx, sdk_bin_path, sdk_metadata_path):
contents = ""
rctx.symlink(sdk_metadata_path, "VerUnionMetadata")
contents += """
exports_files(["VerUnionMetadata"])
"""
for toolname, toolcfg in TOOLS.items():
toolexec = toolcfg["tool"]
deps = toolcfg["deps"]
direct_deps = [toolexec] + deps
shared_deps = toolcfg.get("shared_deps", [])
# Symlink any tools into the right places
for dep in direct_deps:
rctx.symlink(
"{}/{}".format(sdk_bin_path, dep),
dep,
)
# Setting up a filegroup for those dependents
contents += """
filegroup(
name = "{}_deps",
srcs = {},
)
""".format(toolname, direct_deps + shared_deps)
# Now create a wrapper for this tool that simply calls it
rctx.template(
"{}_wrapper.py".format(toolname),
Label("//bazel/win:wrapper.py.tpl"),
substitutions = {
"${binary}": toolexec,
},
executable = True,
)
# And add that newly created wrapper to the BUILD.bazel file
contents += """
py_binary(
name = "{0}_pybin",
srcs = ["{0}_wrapper.py"],
main = "{0}_wrapper.py",
data = [
"@rules_python//python/runfiles",
":{0}_deps"
],
python_version = "PY3",
)
""".format(toolname)
return contents
def _setup_vc_debug_runtime(rctx, sdk_bin_path):
ucrtbased_dll = "ucrtbased.dll"
rctx.symlink("{}/ucrt/{}".format(sdk_bin_path, ucrtbased_dll), ucrtbased_dll)
contents = """
filegroup(
name = "vc_debug_runtime",
srcs = ["{}"],
)
""".format(ucrtbased_dll)
return contents
def _windows_sdk_impl(rctx):
# We only support Windows
if not _is_windows(rctx):
fail("This rule only supports Windows")
# Figure out where the SDK is, which is based on a registry key.
vc_path = find_vc_path(rctx)
env = setup_vc_env_vars(rctx, vc_path, envvars = ["WINDOWSSDKVERBINPATH", "WindowsSdkDir", "WindowsSDKVersion"])
sdk_bin_path = "{}{}".format(env["WINDOWSSDKVERBINPATH"], _get_arch(rctx))
sdk_metadata_path = "{}UnionMetadata/{}".format(env["WindowsSdkDir"], env["WindowsSDKVersion"])
# Start with some pre-amble
contents = """# Autogenerated by //bazel/win:sdk.bzl
load("@rules_python//python:defs.bzl", "py_binary")
package(default_visibility = ["//visibility:public"])
"""
# Handle setting up tools from our list
contents += _setup_tools(rctx, sdk_bin_path, sdk_metadata_path)
contents += _setup_vc_debug_runtime(rctx, sdk_bin_path)
rctx.file("BUILD.bazel", contents)
setup_sdk = repository_rule(
attrs = {},
local = True,
configure = True,
implementation = _windows_sdk_impl,
)

View File

@@ -1,199 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
#
# Distribution DLLs.
#
# NOTE: libcef.dll is included via the //:cef dependency.
DLLS = [
"chrome_elf.dll",
"d3dcompiler_47.dll",
"libEGL.dll",
"libGLESv2.dll",
"vk_swiftshader.dll",
"vulkan-1.dll",
]
DLLS_X64 = [
"dxil.dll",
"dxcompiler.dll",
]
#
# Common 'linkopts' for cc_binary targets.
#
# Windows delayload DLLs.
# Delayload most libraries as the DLLs are simply not required at startup (or
# at all, depending on the process type). Some dlls open handles when they are
# loaded, and we may not want them to be loaded in renderers or other sandboxed
# processes. Conversely, some DLLs must be loaded before sandbox lockdown. In
# unsandboxed processes they will load when first needed. The linker will
# automatically ignore anything which is not linked to the binary at all (it is
# harmless to have an unmatched /delayload). This list should be kept in sync
# with Chromium's "delayloads" target from the //build/config/win/BUILD.gn file.
DELAYLOAD_DLLS = [
"api-ms-win-core-winrt-error-l1-1-0.dll",
"api-ms-win-core-winrt-l1-1-0.dll",
"api-ms-win-core-winrt-string-l1-1-0.dll",
"advapi32.dll",
"comctl32.dll",
"comdlg32.dll",
"credui.dll",
"cryptui.dll",
"d3d11.dll",
"d3d9.dll",
"dwmapi.dll",
"dxgi.dll",
"dxva2.dll",
"esent.dll",
"gdi32.dll",
"hid.dll",
"imagehlp.dll",
"imm32.dll",
"msi.dll",
"netapi32.dll",
"ncrypt.dll",
"ole32.dll",
"oleacc.dll",
"propsys.dll",
"psapi.dll",
"rpcrt4.dll",
"rstrtmgr.dll",
"setupapi.dll",
"shell32.dll",
"shlwapi.dll",
"uiautomationcore.dll",
"urlmon.dll",
"user32.dll",
"usp10.dll",
"uxtheme.dll",
"wer.dll",
"wevtapi.dll",
"wininet.dll",
"winusb.dll",
"wsock32.dll",
"wtsapi32.dll",
]
# Standard link libraries.
STANDARD_LIBS = [
"comctl32.lib",
"gdi32.lib",
"rpcrt4.lib",
"shlwapi.lib",
"user32.lib",
"ws2_32.lib",
]
# Sandbox link libraries.
SANDBOX_LIBS = [
"Advapi32.lib",
"dbghelp.lib",
"Delayimp.lib",
"ntdll.lib",
"OleAut32.lib",
"PowrProf.lib",
"Propsys.lib",
"psapi.lib",
"SetupAPI.lib",
"Shcore.lib",
"Shell32.lib",
"Userenv.lib",
"version.lib",
"wbemuuid.lib",
"WindowsApp.lib",
"winmm.lib",
]
COMMON_LINKOPTS_DEBUG = [
]
COMMON_LINKOPTS_RELEASE = [
]
COMMON_LINKOPTS = [
# No default manifest (see compile_rc target).
"/MANIFEST:NO",
# Allow 32-bit processes to access 3GB of RAM.
"/LARGEADDRESSAWARE",
# Generate Debug information.
# TODO: Remove after fixing opt builds to work without it.
"/DEBUG",
] + [
"/DELAYLOAD:{}".format(dll) for dll in DELAYLOAD_DLLS
] + [
"/DEFAULTLIB:{}".format(lib) for lib in STANDARD_LIBS
] + select({
# Set the initial stack size to 0.5MiB, instead of the 1.5MiB minimum
# needed by CEF's main thread. This saves significant memory on threads
# (like those in the Windows thread pool, and others) whose stack size we
# can only control through this setting. The main thread (in 32-bit builds
# only) uses fibers to switch to a 4MiB stack at runtime via
# CefRunWinMainWithPreferredStackSize().
"@cef//:windows_32": ["/STACK:0x80000"],
# Increase the initial stack size to 8MiB from the default 1MiB.
"//conditions:default": ["/STACK:0x800000"],
}) + select({
"@cef//:windows_dbg": COMMON_LINKOPTS_DEBUG,
"//conditions:default": COMMON_LINKOPTS_RELEASE,
})
#
# Common 'copts' for cc_libary and cc_binary targets.
#
COMMON_COPTS = [
]
COMMON_COPTS_DEBUG = [
]
COMMON_COPTS_RELEASE = [
]
#
# Common 'defines' for cc_libary targets.
#
COMMON_DEFINES = [
# Windows platform
"WIN32",
"_WIN32",
"_WINDOWS",
# Unicode build
"UNICODE",
"_UNICODE",
# Targeting Windows 10. We can't say `=_WIN32_WINNT_WIN10` here because
# some files do `#if WINVER < 0x0600` without including windows.h before,
# and then _WIN32_WINNT_WIN10 isn't yet known to be 0x0A00.
"WINVER=0x0A00",
"_WIN32_WINNT=0x0A00",
"NTDDI_VERSION=NTDDI_WIN10_FE",
# Use the standard's templated min/max
"NOMINMAX",
# Exclude less common API declarations
"WIN32_LEAN_AND_MEAN",
# Disable exceptions
"_HAS_EXCEPTIONS=0",
# Required by cef_sandbox.lib
"PSAPI_VERSION=1",
# Used by apps to test if the sandbox is enabled
"CEF_USE_SANDBOX",
]
COMMON_DEFINES_DEBUG = [
# Required by cef_sandbox.lib
# Disable iterator debugging
"HAS_ITERATOR_DEBUGGING=0",
"_ITERATOR_DEBUG_LEVEL=0",
]
COMMON_DEFINES_RELEASE = [
# Not a debug build
"NDEBUG",
"_NDEBUG",
]

View File

@@ -1,69 +0,0 @@
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file.
import os
import subprocess
import sys
from rules_python.python.runfiles import runfiles
REPLACEMENTS = {
"XXX_GETCWD_XXX": os.getcwd(),
}
def replace_in_str(input):
output = input
for placeholder, replacement in REPLACEMENTS.items():
if placeholder in output:
output = output.replace(placeholder, replacement)
return output
def print_error(str):
print(str, file=sys.stderr)
r = runfiles.Create()
wrapped_binary = r.Rlocation("winsdk/${binary}")
args = list(map(replace_in_str, sys.argv[1:]))
# Optionally execute a script before tool execution.
if args[0].endswith('.bat') or args[0].endswith('.cmd'):
if sys.platform != 'win32':
raise RuntimeError("Error running bat file; unsupported platform")
# Execute the .bat file first.
bat_file = args[0].replace('/', '\\')
p = subprocess.run(
bat_file, shell=True,
stdout = subprocess.PIPE,
stderr = subprocess.STDOUT,
text=True)
if p.returncode != 0:
print_error("[Generated python wrapper] Error running bat file:")
print_error(f"CWD: {os.getcwd()}")
print_error(f"EXEC: {bat_file}")
print_error(f"Exec output:")
print_error(p.stdout)
raise RuntimeError(f"Error running bat file; {bat_file}")
args = args[1:]
try:
p = subprocess.run(
[wrapped_binary] + args,
stdout = subprocess.PIPE,
stderr = subprocess.STDOUT,
text=True)
if p.returncode != 0:
print_error("[Generated python wrapper] Error running command:")
print_error(f"CWD: {os.getcwd()}")
print_error(f"EXEC: {wrapped_binary}")
print_error(f"ARGS: {args}")
print_error(f"Exec output:")
print_error(p.stdout)
raise RuntimeError(f"Error running wrapped command; {wrapped_binary}")
except OSError as e:
print_error("[Generated python wrapper] Error running command:")
print_error(f"CWD: {os.getcwd()}")
print_error(f"EXEC: {wrapped_binary}")
print_error(f"ARGS: {args}")
raise

View File

@@ -1,4 +1,4 @@
# Copyright (c) 2025 The Chromium Embedded Framework Authors. All rights # Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
# reserved. Use of this source code is governed by a BSD-style license that # reserved. Use of this source code is governed by a BSD-style license that
# can be found in the LICENSE file. # can be found in the LICENSE file.
# #
@@ -8,7 +8,7 @@
# by hand. See the translator.README.txt file in the tools directory for # by hand. See the translator.README.txt file in the tools directory for
# more information. # more information.
# #
# $hash=f20d67335316b2bf388d5c02788c4024ad94f1e7$ # $hash=3b28f3236c16d2b776a44674ae3bae0a070e9f27$
# #
{ {
@@ -35,6 +35,8 @@
'include/cef_download_item.h', 'include/cef_download_item.h',
'include/cef_drag_data.h', 'include/cef_drag_data.h',
'include/cef_drag_handler.h', 'include/cef_drag_handler.h',
'include/cef_extension.h',
'include/cef_extension_handler.h',
'include/cef_file_util.h', 'include/cef_file_util.h',
'include/cef_find_handler.h', 'include/cef_find_handler.h',
'include/cef_focus_handler.h', 'include/cef_focus_handler.h',
@@ -81,7 +83,6 @@
'include/cef_stream.h', 'include/cef_stream.h',
'include/cef_string_visitor.h', 'include/cef_string_visitor.h',
'include/cef_task.h', 'include/cef_task.h',
'include/cef_task_manager.h',
'include/cef_thread.h', 'include/cef_thread.h',
'include/cef_trace.h', 'include/cef_trace.h',
'include/cef_unresponsive_process_callback.h', 'include/cef_unresponsive_process_callback.h',
@@ -139,6 +140,8 @@
'include/capi/cef_download_item_capi.h', 'include/capi/cef_download_item_capi.h',
'include/capi/cef_drag_data_capi.h', 'include/capi/cef_drag_data_capi.h',
'include/capi/cef_drag_handler_capi.h', 'include/capi/cef_drag_handler_capi.h',
'include/capi/cef_extension_capi.h',
'include/capi/cef_extension_handler_capi.h',
'include/capi/cef_file_util_capi.h', 'include/capi/cef_file_util_capi.h',
'include/capi/cef_find_handler_capi.h', 'include/capi/cef_find_handler_capi.h',
'include/capi/cef_focus_handler_capi.h', 'include/capi/cef_focus_handler_capi.h',
@@ -185,7 +188,6 @@
'include/capi/cef_stream_capi.h', 'include/capi/cef_stream_capi.h',
'include/capi/cef_string_visitor_capi.h', 'include/capi/cef_string_visitor_capi.h',
'include/capi/cef_task_capi.h', 'include/capi/cef_task_capi.h',
'include/capi/cef_task_manager_capi.h',
'include/capi/cef_thread_capi.h', 'include/capi/cef_thread_capi.h',
'include/capi/cef_trace_capi.h', 'include/capi/cef_trace_capi.h',
'include/capi/cef_unresponsive_process_callback_capi.h', 'include/capi/cef_unresponsive_process_callback_capi.h',
@@ -302,6 +304,10 @@
'libcef_dll/ctocpp/drag_handler_ctocpp.h', 'libcef_dll/ctocpp/drag_handler_ctocpp.h',
'libcef_dll/ctocpp/end_tracing_callback_ctocpp.cc', 'libcef_dll/ctocpp/end_tracing_callback_ctocpp.cc',
'libcef_dll/ctocpp/end_tracing_callback_ctocpp.h', 'libcef_dll/ctocpp/end_tracing_callback_ctocpp.h',
'libcef_dll/cpptoc/extension_cpptoc.cc',
'libcef_dll/cpptoc/extension_cpptoc.h',
'libcef_dll/ctocpp/extension_handler_ctocpp.cc',
'libcef_dll/ctocpp/extension_handler_ctocpp.h',
'libcef_dll/cpptoc/file_dialog_callback_cpptoc.cc', 'libcef_dll/cpptoc/file_dialog_callback_cpptoc.cc',
'libcef_dll/cpptoc/file_dialog_callback_cpptoc.h', 'libcef_dll/cpptoc/file_dialog_callback_cpptoc.h',
'libcef_dll/cpptoc/views/fill_layout_cpptoc.cc', 'libcef_dll/cpptoc/views/fill_layout_cpptoc.cc',
@@ -314,6 +320,8 @@
'libcef_dll/cpptoc/frame_cpptoc.h', 'libcef_dll/cpptoc/frame_cpptoc.h',
'libcef_dll/ctocpp/frame_handler_ctocpp.cc', 'libcef_dll/ctocpp/frame_handler_ctocpp.cc',
'libcef_dll/ctocpp/frame_handler_ctocpp.h', 'libcef_dll/ctocpp/frame_handler_ctocpp.h',
'libcef_dll/cpptoc/get_extension_resource_callback_cpptoc.cc',
'libcef_dll/cpptoc/get_extension_resource_callback_cpptoc.h',
'libcef_dll/cpptoc/image_cpptoc.cc', 'libcef_dll/cpptoc/image_cpptoc.cc',
'libcef_dll/cpptoc/image_cpptoc.h', 'libcef_dll/cpptoc/image_cpptoc.h',
'libcef_dll/cpptoc/jsdialog_callback_cpptoc.cc', 'libcef_dll/cpptoc/jsdialog_callback_cpptoc.cc',
@@ -462,8 +470,6 @@
'libcef_dll/ctocpp/string_visitor_ctocpp.h', 'libcef_dll/ctocpp/string_visitor_ctocpp.h',
'libcef_dll/ctocpp/task_ctocpp.cc', 'libcef_dll/ctocpp/task_ctocpp.cc',
'libcef_dll/ctocpp/task_ctocpp.h', 'libcef_dll/ctocpp/task_ctocpp.h',
'libcef_dll/cpptoc/task_manager_cpptoc.cc',
'libcef_dll/cpptoc/task_manager_cpptoc.h',
'libcef_dll/cpptoc/task_runner_cpptoc.cc', 'libcef_dll/cpptoc/task_runner_cpptoc.cc',
'libcef_dll/cpptoc/task_runner_cpptoc.h', 'libcef_dll/cpptoc/task_runner_cpptoc.h',
'libcef_dll/cpptoc/test/test_server_cpptoc.cc', 'libcef_dll/cpptoc/test/test_server_cpptoc.cc',
@@ -628,6 +634,10 @@
'libcef_dll/cpptoc/drag_handler_cpptoc.h', 'libcef_dll/cpptoc/drag_handler_cpptoc.h',
'libcef_dll/cpptoc/end_tracing_callback_cpptoc.cc', 'libcef_dll/cpptoc/end_tracing_callback_cpptoc.cc',
'libcef_dll/cpptoc/end_tracing_callback_cpptoc.h', 'libcef_dll/cpptoc/end_tracing_callback_cpptoc.h',
'libcef_dll/ctocpp/extension_ctocpp.cc',
'libcef_dll/ctocpp/extension_ctocpp.h',
'libcef_dll/cpptoc/extension_handler_cpptoc.cc',
'libcef_dll/cpptoc/extension_handler_cpptoc.h',
'libcef_dll/ctocpp/file_dialog_callback_ctocpp.cc', 'libcef_dll/ctocpp/file_dialog_callback_ctocpp.cc',
'libcef_dll/ctocpp/file_dialog_callback_ctocpp.h', 'libcef_dll/ctocpp/file_dialog_callback_ctocpp.h',
'libcef_dll/ctocpp/views/fill_layout_ctocpp.cc', 'libcef_dll/ctocpp/views/fill_layout_ctocpp.cc',
@@ -640,6 +650,8 @@
'libcef_dll/ctocpp/frame_ctocpp.h', 'libcef_dll/ctocpp/frame_ctocpp.h',
'libcef_dll/cpptoc/frame_handler_cpptoc.cc', 'libcef_dll/cpptoc/frame_handler_cpptoc.cc',
'libcef_dll/cpptoc/frame_handler_cpptoc.h', 'libcef_dll/cpptoc/frame_handler_cpptoc.h',
'libcef_dll/ctocpp/get_extension_resource_callback_ctocpp.cc',
'libcef_dll/ctocpp/get_extension_resource_callback_ctocpp.h',
'libcef_dll/ctocpp/image_ctocpp.cc', 'libcef_dll/ctocpp/image_ctocpp.cc',
'libcef_dll/ctocpp/image_ctocpp.h', 'libcef_dll/ctocpp/image_ctocpp.h',
'libcef_dll/ctocpp/jsdialog_callback_ctocpp.cc', 'libcef_dll/ctocpp/jsdialog_callback_ctocpp.cc',
@@ -788,8 +800,6 @@
'libcef_dll/cpptoc/string_visitor_cpptoc.h', 'libcef_dll/cpptoc/string_visitor_cpptoc.h',
'libcef_dll/cpptoc/task_cpptoc.cc', 'libcef_dll/cpptoc/task_cpptoc.cc',
'libcef_dll/cpptoc/task_cpptoc.h', 'libcef_dll/cpptoc/task_cpptoc.h',
'libcef_dll/ctocpp/task_manager_ctocpp.cc',
'libcef_dll/ctocpp/task_manager_ctocpp.h',
'libcef_dll/ctocpp/task_runner_ctocpp.cc', 'libcef_dll/ctocpp/task_runner_ctocpp.cc',
'libcef_dll/ctocpp/task_runner_ctocpp.h', 'libcef_dll/ctocpp/task_runner_ctocpp.h',
'libcef_dll/ctocpp/test/test_server_ctocpp.cc', 'libcef_dll/ctocpp/test/test_server_ctocpp.cc',

View File

@@ -16,7 +16,6 @@
'include/base/cef_callback_list.h', 'include/base/cef_callback_list.h',
'include/base/cef_cancelable_callback.h', 'include/base/cef_cancelable_callback.h',
'include/base/cef_compiler_specific.h', 'include/base/cef_compiler_specific.h',
'include/base/cef_dump_without_crashing.h',
'include/base/cef_lock.h', 'include/base/cef_lock.h',
'include/base/cef_logging.h', 'include/base/cef_logging.h',
'include/base/cef_macros.h', 'include/base/cef_macros.h',
@@ -44,7 +43,6 @@
'include/internal/cef_types_wrappers.h', 'include/internal/cef_types_wrappers.h',
], ],
'includes_common_capi': [ 'includes_common_capi': [
'include/internal/cef_dump_without_crashing_internal.h',
'include/internal/cef_logging_internal.h', 'include/internal/cef_logging_internal.h',
'include/internal/cef_string.h', 'include/internal/cef_string.h',
'include/internal/cef_string_list.h', 'include/internal/cef_string_list.h',
@@ -125,7 +123,6 @@
'libcef_dll/base/cef_atomic_flag.cc', 'libcef_dll/base/cef_atomic_flag.cc',
'libcef_dll/base/cef_callback_helpers.cc', 'libcef_dll/base/cef_callback_helpers.cc',
'libcef_dll/base/cef_callback_internal.cc', 'libcef_dll/base/cef_callback_internal.cc',
'libcef_dll/base/cef_dump_without_crashing.cc',
'libcef_dll/base/cef_lock.cc', 'libcef_dll/base/cef_lock.cc',
'libcef_dll/base/cef_lock_impl.cc', 'libcef_dll/base/cef_lock_impl.cc',
'libcef_dll/base/cef_logging.cc', 'libcef_dll/base/cef_logging.cc',
@@ -245,7 +242,6 @@
'tests/cefclient/browser/client_prefs.cc', 'tests/cefclient/browser/client_prefs.cc',
'tests/cefclient/browser/client_prefs.h', 'tests/cefclient/browser/client_prefs.h',
'tests/cefclient/browser/client_types.h', 'tests/cefclient/browser/client_types.h',
'tests/cefclient/browser/default_client_handler.cc',
'tests/cefclient/browser/default_client_handler.h', 'tests/cefclient/browser/default_client_handler.h',
'tests/cefclient/browser/dialog_test.cc', 'tests/cefclient/browser/dialog_test.cc',
'tests/cefclient/browser/dialog_test.h', 'tests/cefclient/browser/dialog_test.h',
@@ -279,8 +275,6 @@
'tests/cefclient/browser/scheme_test.h', 'tests/cefclient/browser/scheme_test.h',
'tests/cefclient/browser/server_test.cc', 'tests/cefclient/browser/server_test.cc',
'tests/cefclient/browser/server_test.h', 'tests/cefclient/browser/server_test.h',
'tests/cefclient/browser/task_manager_test.cc',
'tests/cefclient/browser/task_manager_test.h',
'tests/cefclient/browser/temp_window.h', 'tests/cefclient/browser/temp_window.h',
'tests/cefclient/browser/test_runner.cc', 'tests/cefclient/browser/test_runner.cc',
'tests/cefclient/browser/test_runner.h', 'tests/cefclient/browser/test_runner.h',
@@ -288,8 +282,6 @@
'tests/cefclient/browser/urlrequest_test.h', 'tests/cefclient/browser/urlrequest_test.h',
'tests/cefclient/browser/views_menu_bar.cc', 'tests/cefclient/browser/views_menu_bar.cc',
'tests/cefclient/browser/views_menu_bar.h', 'tests/cefclient/browser/views_menu_bar.h',
'tests/cefclient/browser/views_overlay_browser.cc',
'tests/cefclient/browser/views_overlay_browser.h',
'tests/cefclient/browser/views_overlay_controls.cc', 'tests/cefclient/browser/views_overlay_controls.cc',
'tests/cefclient/browser/views_overlay_controls.h', 'tests/cefclient/browser/views_overlay_controls.h',
'tests/cefclient/browser/views_style.cc', 'tests/cefclient/browser/views_style.cc',
@@ -337,7 +329,6 @@
'tests/cefclient/resources/preferences.html', 'tests/cefclient/resources/preferences.html',
'tests/cefclient/resources/response_filter.html', 'tests/cefclient/resources/response_filter.html',
'tests/cefclient/resources/server.html', 'tests/cefclient/resources/server.html',
'tests/cefclient/resources/task_manager.html',
'tests/cefclient/resources/transparency.html', 'tests/cefclient/resources/transparency.html',
'tests/cefclient/resources/urlrequest.html', 'tests/cefclient/resources/urlrequest.html',
'tests/cefclient/resources/websocket.html', 'tests/cefclient/resources/websocket.html',
@@ -379,14 +370,12 @@
'tests/cefclient/browser/window_test_runner_win.cc', 'tests/cefclient/browser/window_test_runner_win.cc',
'tests/cefclient/browser/window_test_runner_win.h', 'tests/cefclient/browser/window_test_runner_win.h',
'tests/cefclient/cefclient_win.cc', 'tests/cefclient/cefclient_win.cc',
'tests/cefclient/resources/win/cefclient.rc',
], ],
'cefclient_sources_resources_win': [ 'cefclient_sources_resources_win': [
'tests/cefclient/win/cefclient.exe.manifest', 'tests/cefclient/resources/win/cefclient.exe.manifest',
'tests/cefclient/win/cefclient.ico', 'tests/cefclient/resources/win/cefclient.ico',
'tests/cefclient/win/small.ico', 'tests/cefclient/resources/win/small.ico',
],
'cefclient_sources_resources_win_rc': [
'tests/cefclient/win/cefclient.rc',
], ],
'cefclient_sources_mac': [ 'cefclient_sources_mac': [
'tests/cefclient/browser/browser_window_osr_mac.h', 'tests/cefclient/browser/browser_window_osr_mac.h',
@@ -409,12 +398,12 @@
'tests/cefclient/browser/window_test_runner_mac.h', 'tests/cefclient/browser/window_test_runner_mac.h',
'tests/cefclient/browser/window_test_runner_mac.mm', 'tests/cefclient/browser/window_test_runner_mac.mm',
'tests/cefclient/cefclient_mac.mm', 'tests/cefclient/cefclient_mac.mm',
], ],
'cefclient_bundle_resources_mac': [ 'cefclient_bundle_resources_mac': [
'tests/cefclient/mac/cefclient.icns', 'tests/cefclient/resources/mac/cefclient.icns',
'tests/cefclient/mac/English.lproj/InfoPlist.strings', 'tests/cefclient/resources/mac/English.lproj/InfoPlist.strings',
'tests/cefclient/mac/English.lproj/MainMenu.xib', 'tests/cefclient/resources/mac/English.lproj/MainMenu.xib',
'tests/cefclient/mac/Info.plist.in', 'tests/cefclient/resources/mac/Info.plist',
], ],
'cefclient_sources_linux': [ 'cefclient_sources_linux': [
'tests/cefclient/browser/browser_window_osr_gtk.cc', 'tests/cefclient/browser/browser_window_osr_gtk.cc',
@@ -446,17 +435,15 @@
'tests/cefsimple/simple_handler.h', 'tests/cefsimple/simple_handler.h',
], ],
'cefsimple_sources_win': [ 'cefsimple_sources_win': [
'tests/cefsimple/cefsimple.rc',
'tests/cefsimple/cefsimple_win.cc', 'tests/cefsimple/cefsimple_win.cc',
'tests/cefsimple/resource.h',
'tests/cefsimple/simple_handler_win.cc', 'tests/cefsimple/simple_handler_win.cc',
'tests/cefsimple/resource.h',
], ],
'cefsimple_sources_resources_win': [ 'cefsimple_sources_resources_win': [
'tests/cefsimple/win/cefsimple.exe.manifest', 'tests/cefsimple/cefsimple.exe.manifest',
'tests/cefsimple/win/cefsimple.ico', 'tests/cefsimple/res/cefsimple.ico',
'tests/cefsimple/win/small.ico', 'tests/cefsimple/res/small.ico',
],
'cefsimple_sources_resources_win_rc': [
'tests/cefsimple/win/cefsimple.rc',
], ],
'cefsimple_sources_mac': [ 'cefsimple_sources_mac': [
'tests/cefsimple/cefsimple_mac.mm', 'tests/cefsimple/cefsimple_mac.mm',
@@ -469,7 +456,7 @@
'tests/cefsimple/mac/cefsimple.icns', 'tests/cefsimple/mac/cefsimple.icns',
'tests/cefsimple/mac/English.lproj/InfoPlist.strings', 'tests/cefsimple/mac/English.lproj/InfoPlist.strings',
'tests/cefsimple/mac/English.lproj/MainMenu.xib', 'tests/cefsimple/mac/English.lproj/MainMenu.xib',
'tests/cefsimple/mac/Info.plist.in', 'tests/cefsimple/mac/Info.plist',
], ],
'cefsimple_sources_linux': [ 'cefsimple_sources_linux': [
'tests/cefsimple/cefsimple_linux.cc', 'tests/cefsimple/cefsimple_linux.cc',
@@ -587,32 +574,24 @@
'ceftests_sources_win': [ 'ceftests_sources_win': [
'tests/ceftests/resource_util_win_dir.cc', 'tests/ceftests/resource_util_win_dir.cc',
'tests/ceftests/resource_util_win_idmap.cc', 'tests/ceftests/resource_util_win_idmap.cc',
'tests/ceftests/resources/win/ceftests.rc',
], ],
'ceftests_sources_resources_win': [ 'ceftests_sources_resources_win': [
'tests/ceftests/win/ceftests.exe.manifest', 'tests/ceftests/resources/win/ceftests.exe.manifest',
'tests/ceftests/win/ceftests.ico', 'tests/ceftests/resources/win/ceftests.ico',
'tests/ceftests/win/small.ico', 'tests/ceftests/resources/win/small.ico',
],
'ceftests_sources_resources_win_rc': [
'tests/ceftests/win/ceftests.rc',
], ],
'ceftests_sources_mac': [ 'ceftests_sources_mac': [
'tests/ceftests/os_rendering_unittest_mac.h', 'tests/ceftests/os_rendering_unittest_mac.h',
'tests/ceftests/os_rendering_unittest_mac.mm', 'tests/ceftests/os_rendering_unittest_mac.mm',
'tests/ceftests/run_all_unittests_mac.mm', 'tests/ceftests/run_all_unittests_mac.mm',
], ],
'ceftests_sources_mac_browser_shared': [ 'ceftests_sources_mac_helper': [
'tests/shared/renderer/client_app_renderer.h',
],
'ceftests_sources_mac_helper_shared': [
'tests/shared/browser/client_app_browser.h',
'tests/shared/browser/file_util.cc', 'tests/shared/browser/file_util.cc',
'tests/shared/browser/file_util.h', 'tests/shared/browser/file_util.h',
'tests/shared/browser/resource_util.h', 'tests/shared/browser/resource_util.h',
'tests/shared/browser/resource_util_mac.mm', 'tests/shared/browser/resource_util_mac.mm',
'tests/shared/browser/resource_util_posix.cc', 'tests/shared/browser/resource_util_posix.cc',
],
'ceftests_sources_mac_helper': [
'tests/ceftests/audio_output_unittest.cc', 'tests/ceftests/audio_output_unittest.cc',
'tests/ceftests/client_app_delegates.cc', 'tests/ceftests/client_app_delegates.cc',
'tests/ceftests/cookie_unittest.cc', 'tests/ceftests/cookie_unittest.cc',
@@ -668,10 +647,10 @@
'tests/ceftests/v8_unittest.cc', 'tests/ceftests/v8_unittest.cc',
], ],
'ceftests_bundle_resources_mac': [ 'ceftests_bundle_resources_mac': [
'tests/ceftests/mac/ceftests.icns', 'tests/ceftests/resources/mac/ceftests.icns',
'tests/ceftests/mac/English.lproj/InfoPlist.strings', 'tests/ceftests/resources/mac/English.lproj/InfoPlist.strings',
'tests/ceftests/mac/English.lproj/MainMenu.xib', 'tests/ceftests/resources/mac/English.lproj/MainMenu.xib',
'tests/ceftests/mac/Info.plist.in', 'tests/ceftests/resources/mac/Info.plist',
], ],
'ceftests_sources_linux': [ 'ceftests_sources_linux': [
'tests/ceftests/resource_util_linux.cc', 'tests/ceftests/resource_util_linux.cc',

View File

@@ -59,7 +59,7 @@ set(CEF_LIBCEF_DLL_WRAPPER_PATH "${_CEF_ROOT}/libcef_dll")
# Shared compiler/linker flags. # Shared compiler/linker flags.
list(APPEND CEF_COMPILER_DEFINES list(APPEND CEF_COMPILER_DEFINES
# Allow C++ programs to use stdint.h macros specified in the C99 standard that aren't # Allow C++ programs to use stdint.h macros specified in the C99 standard that aren't
# in the C++ standard (e.g. UINT8_MAX, INT64_MIN, etc) # in the C++ standard (e.g. UINT8_MAX, INT64_MIN, etc)
__STDC_CONSTANT_MACROS __STDC_FORMAT_MACROS __STDC_CONSTANT_MACROS __STDC_FORMAT_MACROS
) )
@@ -311,7 +311,7 @@ if(OS_MAC)
# Find the newest available base SDK. # Find the newest available base SDK.
execute_process(COMMAND xcode-select --print-path OUTPUT_VARIABLE XCODE_PATH OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND xcode-select --print-path OUTPUT_VARIABLE XCODE_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
foreach(OS_VERSION 14.2 14.0 11.0) foreach(OS_VERSION 14.2 14.0 10.15)
set(SDK "${XCODE_PATH}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${OS_VERSION}.sdk") set(SDK "${XCODE_PATH}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${OS_VERSION}.sdk")
if(NOT "${CMAKE_OSX_SYSROOT}" AND EXISTS "${SDK}" AND IS_DIRECTORY "${SDK}") if(NOT "${CMAKE_OSX_SYSROOT}" AND EXISTS "${SDK}" AND IS_DIRECTORY "${SDK}")
set(CMAKE_OSX_SYSROOT ${SDK}) set(CMAKE_OSX_SYSROOT ${SDK})
@@ -319,7 +319,7 @@ if(OS_MAC)
endforeach() endforeach()
# Target SDK. # Target SDK.
set(CEF_TARGET_SDK "11.0") set(CEF_TARGET_SDK "10.15")
list(APPEND CEF_COMPILER_FLAGS list(APPEND CEF_COMPILER_FLAGS
-mmacosx-version-min=${CEF_TARGET_SDK} -mmacosx-version-min=${CEF_TARGET_SDK}
) )

View File

@@ -84,6 +84,10 @@
#endif #endif
#endif #endif
#if !BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#define DISABLE_ALLOY_BOOTSTRAP 1
#endif
#else // !USING_CHROMIUM_INCLUDES #else // !USING_CHROMIUM_INCLUDES
#include "include/cef_config.h" #include "include/cef_config.h"

View File

@@ -1,76 +0,0 @@
// Copyright (c) 2024 Marshall A. Greenblatt. Portions copyright (c) 2012
// Google Inc. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the name Chromium Embedded
// Framework nor the names of its contributors may be used to endorse
// or promote products derived from this software without specific prior
// written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
///
/// \file
/// Provides functions for generating crash dumps.
///
/// NOTE: The contents of this file are only available to applications that link
/// against the libcef_dll_wrapper target.
///
/// NOTE: Ensure crash reporting is configured before use. See
/// https://bitbucket.org/chromiumembedded/cef/wiki/CrashReporting.md for more
/// information
///
/// WARNING: Crash reporting should not be used in the main/browser process
/// before calling CefInitialize or in sub-processes before CefExecuteProcess.
///
#ifndef CEF_INCLUDE_BASE_CEF_DUMP_WITHOUT_CRASHING_H_
#define CEF_INCLUDE_BASE_CEF_DUMP_WITHOUT_CRASHING_H_
#pragma once
constexpr long long kOneDayInMilliseconds = 86400000;
///
/// CefDumpWithoutCrashing allows for generating crash dumps with a throttling
/// mechanism, preventing frequent dumps from being generated in a short period
/// of time from the same location. The |function_name|, |file_name|, and
/// |line_number| determine the location of the dump. The
/// |mseconds_between_dumps| is an interval between consecutive dumps in
/// milliseconds from the same location.
///
/// Returns true if the dump was successfully generated, false otherwise.
///
bool CefDumpWithoutCrashing(
long long mseconds_between_dumps = kOneDayInMilliseconds,
const char* function_name = __builtin_FUNCTION(),
const char* file_name = __builtin_FILE(),
int line_number = __builtin_LINE());
///
/// CefDumpWithoutCrashingUnthrottled allows for immediate crash dumping without
/// any throttling constraints.
///
/// Returns true if the dump was successfully generated, false otherwise.
///
bool CefDumpWithoutCrashingUnthrottled();
#endif // CEF_INCLUDE_BASE_CEF_DUMP_WITHOUT_CRASHING_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=32279f653514bd05dea3d5d8e6b852530a90ee2e$ // $hash=6ea5d772fb4961ae4a658b4b730aa608fa93309f$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_ACCESSIBILITY_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_ACCESSIBILITY_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=a2deeda24cb730b4e212514fde833414b450559d$ // $hash=dfa0d4d2da319b2fd5e92324fd14301b500ceb5c$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_APP_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_APP_CAPI_H_
@@ -91,9 +91,11 @@ typedef struct _cef_app_t {
struct _cef_scheme_registrar_t* registrar); struct _cef_scheme_registrar_t* registrar);
/// ///
/// Return the handler for resource bundle events. If no handler is returned /// Return the handler for resource bundle events. If
/// resources will be loaded from pack files. This function is called by the /// cef_settings_t.pack_loading_disabled is true (1) a handler must be
/// browser and render processes on multiple threads. /// returned. If no handler is returned resources will be loaded from pack
/// files. This function is called by the browser and render processes on
/// multiple threads.
/// ///
struct _cef_resource_bundle_handler_t*( struct _cef_resource_bundle_handler_t*(
CEF_CALLBACK* get_resource_bundle_handler)(struct _cef_app_t* self); CEF_CALLBACK* get_resource_bundle_handler)(struct _cef_app_t* self);

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=def41651170c930805bd36e9640c98cb87c79529$ // $hash=d98482eba93dcd8b6a6f69b2732162733c73203d$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_AUDIO_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_AUDIO_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=c20b65725d97c5a9e09ae76c082c361935941a37$ // $hash=b63947918eca8c31790cae16b2e8a0be7e9464dd$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_AUTH_CALLBACK_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_AUTH_CALLBACK_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=06b21e46e31de5e4bbd8c016a004d49cebf09e64$ // $hash=6ee74f31d37a1b5ab3c9c5ccbe2dce9841329b38$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_CAPI_H_
@@ -301,62 +301,29 @@ typedef struct _cef_browser_host_t {
struct _cef_browser_host_t* self); struct _cef_browser_host_t* self);
/// ///
/// Request that the browser close. Closing a browser is a multi-stage process /// Request that the browser close. The JavaScript 'onbeforeunload' event will
/// that may complete either synchronously or asynchronously, and involves /// be fired. If |force_close| is false (0) the event handler, if any, will be
/// callbacks such as cef_life_span_handler_t::DoClose (Alloy style only), /// allowed to prompt the user and the user can optionally cancel the close.
/// cef_life_span_handler_t::OnBeforeClose, and a top-level window close /// If |force_close| is true (1) the prompt will not be displayed and the
/// handler such as cef_window_delegate_t::CanClose (or platform-specific /// close will proceed. Results in a call to
/// equivalent). In some cases a close request may be delayed or canceled by /// cef_life_span_handler_t::do_close() if the event handler allows the close
/// the user. Using try_close_browser() instead of close_browser() is /// or if |force_close| is true (1). See cef_life_span_handler_t::do_close()
/// recommended for most use cases. See cef_life_span_handler_t::do_close() /// documentation for additional usage information.
/// documentation for detailed usage and examples.
///
/// If |force_close| is false (0) then JavaScript unload handlers, if any, may
/// be fired and the close may be delayed or canceled by the user. If
/// |force_close| is true (1) then the user will not be prompted and the close
/// will proceed immediately (possibly asynchronously). If browser close is
/// delayed and not canceled the default behavior is to call the top-level
/// window close handler once the browser is ready to be closed. This default
/// behavior can be changed for Alloy style browsers by implementing
/// cef_life_span_handler_t::do_close(). is_ready_to_be_closed() can be used
/// to detect mandatory browser close events when customizing close behavior
/// on the browser process UI thread.
/// ///
void(CEF_CALLBACK* close_browser)(struct _cef_browser_host_t* self, void(CEF_CALLBACK* close_browser)(struct _cef_browser_host_t* self,
int force_close); int force_close);
/// ///
/// Helper for closing a browser. This is similar in behavior to /// Helper for closing a browser. Call this function from the top-level window
/// CLoseBrowser(false (0)) but returns a boolean to reflect the immediate /// close handler (if any). Internally this calls CloseBrowser(false (0)) if
/// close status. Call this function from a top-level window close handler /// the close has not yet been initiated. This function returns false (0)
/// such as cef_window_delegate_t::CanClose (or platform-specific equivalent) /// while the close is pending and true (1) after the close has completed. See
/// to request that the browser close, and return the result to indicate if /// close_browser() and cef_life_span_handler_t::do_close() documentation for
/// the window close should proceed. Returns false (0) if the close will be /// additional usage information. This function must be called on the browser
/// delayed (JavaScript unload handlers triggered but still pending) or true /// process UI thread.
/// (1) if the close will proceed immediately (possibly asynchronously). See
/// close_browser() documentation for additional usage information. This
/// function must be called on the browser process UI thread.
/// ///
int(CEF_CALLBACK* try_close_browser)(struct _cef_browser_host_t* self); int(CEF_CALLBACK* try_close_browser)(struct _cef_browser_host_t* self);
///
/// Returns true (1) if the browser is ready to be closed, meaning that the
/// close has already been initiated and that JavaScript unload handlers have
/// already executed or should be ignored. This can be used from a top-level
/// window close handler such as cef_window_delegate_t::CanClose (or platform-
/// specific equivalent) to distringuish between potentially cancelable
/// browser close events (like the user clicking the top-level window close
/// button before browser close has started) and mandatory browser close
/// events (like JavaScript `window.close()` or after browser close has
/// started in response to [Try]close_browser()). Not completing the browser
/// close for mandatory close events (when this function returns true (1))
/// will leave the browser in a partially closed state that interferes with
/// proper functioning. See close_browser() documentation for additional usage
/// information. This function must be called on the browser process UI
/// thread.
///
int(CEF_CALLBACK* is_ready_to_be_closed)(struct _cef_browser_host_t* self);
/// ///
/// Set whether the browser is focused. /// Set whether the browser is focused.
/// ///
@@ -380,12 +347,6 @@ typedef struct _cef_browser_host_t {
cef_window_handle_t(CEF_CALLBACK* get_opener_window_handle)( cef_window_handle_t(CEF_CALLBACK* get_opener_window_handle)(
struct _cef_browser_host_t* self); struct _cef_browser_host_t* self);
///
/// Retrieve the unique identifier of the browser that opened this browser.
/// Will return 0 for non-popup browsers.
///
int(CEF_CALLBACK* get_opener_identifier)(struct _cef_browser_host_t* self);
/// ///
/// Returns true (1) if this browser is wrapped in a cef_browser_view_t. /// Returns true (1) if this browser is wrapped in a cef_browser_view_t.
/// ///
@@ -420,7 +381,8 @@ typedef struct _cef_browser_host_t {
/// ///
/// Get the default zoom level. This value will be 0.0 by default but can be /// Get the default zoom level. This value will be 0.0 by default but can be
/// configured. This function can only be called on the UI thread. /// configured with the Chrome runtime. This function can only be called on
/// the UI thread.
/// ///
double(CEF_CALLBACK* get_default_zoom_level)( double(CEF_CALLBACK* get_default_zoom_level)(
struct _cef_browser_host_t* self); struct _cef_browser_host_t* self);
@@ -945,6 +907,24 @@ typedef struct _cef_browser_host_t {
const cef_size_t* min_size, const cef_size_t* min_size,
const cef_size_t* max_size); const cef_size_t* max_size);
///
/// Returns the extension hosted in this browser or NULL if no extension is
/// hosted. See cef_request_context_t::LoadExtension for details.
///
/// WARNING: This function is deprecated and will be removed in ~M127.
///
struct _cef_extension_t*(CEF_CALLBACK* get_extension)(
struct _cef_browser_host_t* self);
///
/// Returns true (1) if this browser is hosting an extension background
/// script. Background hosts do not have a window and are not displayable. See
/// cef_request_context_t::LoadExtension for details.
///
/// WARNING: This function is deprecated and will be removed in ~M127.
///
int(CEF_CALLBACK* is_background_host)(struct _cef_browser_host_t* self);
/// ///
/// Set whether the browser's audio is muted. /// Set whether the browser's audio is muted.
/// ///
@@ -968,12 +948,12 @@ typedef struct _cef_browser_host_t {
/// ///
/// Requests the renderer to exit browser fullscreen. In most cases exiting /// Requests the renderer to exit browser fullscreen. In most cases exiting
/// window fullscreen should also exit browser fullscreen. With Alloy style /// window fullscreen should also exit browser fullscreen. With the Alloy
/// this function should be called in response to a user action such as /// runtime this function should be called in response to a user action such
/// clicking the green traffic light button on MacOS /// as clicking the green traffic light button on MacOS
/// (cef_window_delegate_t::OnWindowFullscreenTransition callback) or pressing /// (cef_window_delegate_t::OnWindowFullscreenTransition callback) or pressing
/// the "ESC" key (cef_keyboard_handler_t::OnPreKeyEvent callback). With /// the "ESC" key (cef_keyboard_handler_t::OnPreKeyEvent callback). With the
/// Chrome style these standard exit actions are handled internally but /// Chrome runtime these standard exit actions are handled internally but
/// new/additional user actions can use this function. Set |will_cause_resize| /// new/additional user actions can use this function. Set |will_cause_resize|
/// to true (1) if exiting browser fullscreen will cause a view resize. /// to true (1) if exiting browser fullscreen will cause a view resize.
/// ///
@@ -983,7 +963,7 @@ typedef struct _cef_browser_host_t {
/// ///
/// Returns true (1) if a Chrome command is supported and enabled. Values for /// Returns true (1) if a Chrome command is supported and enabled. Values for
/// |command_id| can be found in the cef_command_ids.h file. This function can /// |command_id| can be found in the cef_command_ids.h file. This function can
/// only be called on the UI thread. Only used with Chrome style. /// only be called on the UI thread. Only used with the Chrome runtime.
/// ///
int(CEF_CALLBACK* can_execute_chrome_command)( int(CEF_CALLBACK* can_execute_chrome_command)(
struct _cef_browser_host_t* self, struct _cef_browser_host_t* self,
@@ -992,7 +972,7 @@ typedef struct _cef_browser_host_t {
/// ///
/// Execute a Chrome command. Values for |command_id| can be found in the /// Execute a Chrome command. Values for |command_id| can be found in the
/// cef_command_ids.h file. |disposition| provides information about the /// cef_command_ids.h file. |disposition| provides information about the
/// intended command target. Only used with Chrome style. /// intended command target. Only used with the Chrome runtime.
/// ///
void(CEF_CALLBACK* execute_chrome_command)( void(CEF_CALLBACK* execute_chrome_command)(
struct _cef_browser_host_t* self, struct _cef_browser_host_t* self,
@@ -1052,12 +1032,6 @@ CEF_EXPORT cef_browser_t* cef_browser_host_create_browser_sync(
struct _cef_dictionary_value_t* extra_info, struct _cef_dictionary_value_t* extra_info,
struct _cef_request_context_t* request_context); struct _cef_request_context_t* request_context);
///
/// Returns the browser (if any) with the specified identifier.
///
CEF_EXPORT cef_browser_t* cef_browser_host_get_browser_by_identifier(
int browser_id);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=2130ee468c9742d5be99d622703829adff83145f$ // $hash=d958d5bed7f909f6313facef3440fb8ba07a5c01$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_PROCESS_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_PROCESS_HANDLER_CAPI_H_
@@ -69,8 +69,8 @@ typedef struct _cef_browser_process_handler_t {
/// If |type| is CEF_PREFERENCES_TYPE_GLOBAL the registered preferences can be /// If |type| is CEF_PREFERENCES_TYPE_GLOBAL the registered preferences can be
/// accessed via cef_preference_manager_t::GetGlobalPreferences after /// accessed via cef_preference_manager_t::GetGlobalPreferences after
/// OnContextInitialized is called. Global preferences are registered a single /// OnContextInitialized is called. Global preferences are registered a single
/// time at application startup. See related cef_settings_t.cache_path /// time at application startup. See related cef_settings_t.cache_path and
/// configuration. /// cef_settings_t.persist_user_preferences configuration.
/// ///
/// If |type| is CEF_PREFERENCES_TYPE_REQUEST_CONTEXT the preferences can be /// If |type| is CEF_PREFERENCES_TYPE_REQUEST_CONTEXT the preferences can be
/// accessed via the cef_request_context_t after /// accessed via the cef_request_context_t after
@@ -78,7 +78,8 @@ typedef struct _cef_browser_process_handler_t {
/// Request context preferences are registered each time a new /// Request context preferences are registered each time a new
/// cef_request_context_t is created. It is intended but not required that all /// cef_request_context_t is created. It is intended but not required that all
/// request contexts have the same registered preferences. See related /// request contexts have the same registered preferences. See related
/// cef_request_context_settings_t.cache_path configuration. /// cef_request_context_settings_t.cache_path and
/// cef_request_context_settings_t.persist_user_preferences configuration.
/// ///
/// Do not keep a reference to the |registrar| object. This function is called /// Do not keep a reference to the |registrar| object. This function is called
/// on the browser process UI thread. /// on the browser process UI thread.
@@ -151,8 +152,8 @@ typedef struct _cef_browser_process_handler_t {
/// (cef_browser_t object). If null is returned the cef_browser_t will be /// (cef_browser_t object). If null is returned the cef_browser_t will be
/// unmanaged (no callbacks will be executed for that cef_browser_t) and /// unmanaged (no callbacks will be executed for that cef_browser_t) and
/// application shutdown will be blocked until the browser window is closed /// application shutdown will be blocked until the browser window is closed
/// manually. This function is currently only used with Chrome style when /// manually. This function is currently only used with the Chrome runtime
/// creating new browser windows via Chrome UI. /// when creating new browser windows via Chrome UI.
/// ///
struct _cef_client_t*(CEF_CALLBACK* get_default_client)( struct _cef_client_t*(CEF_CALLBACK* get_default_client)(
struct _cef_browser_process_handler_t* self); struct _cef_browser_process_handler_t* self);
@@ -161,8 +162,8 @@ typedef struct _cef_browser_process_handler_t {
/// Return the default handler for use with a new user or incognito profile /// Return the default handler for use with a new user or incognito profile
/// (cef_request_context_t object). If null is returned the /// (cef_request_context_t object). If null is returned the
/// cef_request_context_t will be unmanaged (no callbacks will be executed for /// cef_request_context_t will be unmanaged (no callbacks will be executed for
/// that cef_request_context_t). This function is currently only used with /// that cef_request_context_t). This function is currently only used with the
/// Chrome style when creating new browser windows via Chrome UI. /// Chrome runtime when creating new browser windows via Chrome UI.
/// ///
struct _cef_request_context_handler_t*( struct _cef_request_context_handler_t*(
CEF_CALLBACK* get_default_request_context_handler)( CEF_CALLBACK* get_default_request_context_handler)(

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=7aed80e6f53e47cadf5ab5ef5eace1a208378bd6$ // $hash=46bc048bec64590735298a95633167d66e445844$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_CALLBACK_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_CALLBACK_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=6ae90159e832b94846a72b59cf1d40a55676cd55$ // $hash=09bd4140605645c9dfbd81e7e22d029d0bb50129$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_CLIENT_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_CLIENT_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=43f3df7da1d27b568b19c2cf0b1d3a62282e132b$ // $hash=dd183a473b1e8c5ee8bdcf99949fc5274c4cc892$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_COMMAND_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_COMMAND_HANDLER_CAPI_H_
@@ -64,7 +64,7 @@ typedef struct _cef_command_handler_t {
/// intended command target. Return true (1) if the command was handled or /// intended command target. Return true (1) if the command was handled or
/// false (0) for the default implementation. For context menu commands this /// false (0) for the default implementation. For context menu commands this
/// will be called after cef_context_menu_handler_t::OnContextMenuCommand. /// will be called after cef_context_menu_handler_t::OnContextMenuCommand.
/// Only used with Chrome style. /// Only used with the Chrome runtime.
/// ///
int(CEF_CALLBACK* on_chrome_command)( int(CEF_CALLBACK* on_chrome_command)(
struct _cef_command_handler_t* self, struct _cef_command_handler_t* self,
@@ -75,7 +75,8 @@ typedef struct _cef_command_handler_t {
/// ///
/// Called to check if a Chrome app menu item should be visible. Values for /// Called to check if a Chrome app menu item should be visible. Values for
/// |command_id| can be found in the cef_command_ids.h file. Only called for /// |command_id| can be found in the cef_command_ids.h file. Only called for
/// menu items that would be visible by default. Only used with Chrome style. /// menu items that would be visible by default. Only used with the Chrome
/// runtime.
/// ///
int(CEF_CALLBACK* is_chrome_app_menu_item_visible)( int(CEF_CALLBACK* is_chrome_app_menu_item_visible)(
struct _cef_command_handler_t* self, struct _cef_command_handler_t* self,
@@ -85,7 +86,8 @@ typedef struct _cef_command_handler_t {
/// ///
/// Called to check if a Chrome app menu item should be enabled. Values for /// Called to check if a Chrome app menu item should be enabled. Values for
/// |command_id| can be found in the cef_command_ids.h file. Only called for /// |command_id| can be found in the cef_command_ids.h file. Only called for
/// menu items that would be enabled by default. Only used with Chrome style. /// menu items that would be enabled by default. Only used with the Chrome
/// runtime.
/// ///
int(CEF_CALLBACK* is_chrome_app_menu_item_enabled)( int(CEF_CALLBACK* is_chrome_app_menu_item_enabled)(
struct _cef_command_handler_t* self, struct _cef_command_handler_t* self,
@@ -95,7 +97,7 @@ typedef struct _cef_command_handler_t {
/// ///
/// Called during browser creation to check if a Chrome page action icon /// Called during browser creation to check if a Chrome page action icon
/// should be visible. Only called for icons that would be visible by default. /// should be visible. Only called for icons that would be visible by default.
/// Only used with Chrome style. /// Only used with the Chrome runtime.
/// ///
int(CEF_CALLBACK* is_chrome_page_action_icon_visible)( int(CEF_CALLBACK* is_chrome_page_action_icon_visible)(
struct _cef_command_handler_t* self, struct _cef_command_handler_t* self,
@@ -104,7 +106,7 @@ typedef struct _cef_command_handler_t {
/// ///
/// Called during browser creation to check if a Chrome toolbar button should /// Called during browser creation to check if a Chrome toolbar button should
/// be visible. Only called for buttons that would be visible by default. Only /// be visible. Only called for buttons that would be visible by default. Only
/// used with Chrome style. /// used with the Chrome runtime.
/// ///
int(CEF_CALLBACK* is_chrome_toolbar_button_visible)( int(CEF_CALLBACK* is_chrome_toolbar_button_visible)(
struct _cef_command_handler_t* self, struct _cef_command_handler_t* self,

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=eec6c6c5bb382d519e8784dc9a5738351bd7e134$ // $hash=fce786b3f054d6581438e2906b77e573c797372a$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_COMMAND_LINE_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_COMMAND_LINE_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=a6442e6bc6e7d335717bf9fbcf7a6e061216d449$ // $hash=3ae7dbb24ec7a95a2f4d4e390c9b6622221c2f42$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_CONTEXT_MENU_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_CONTEXT_MENU_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=f0ac9ba987d32a55b57d09acbdd2ff58f15c61b8$ // $hash=76ba2e59636aa71c8c6286093198a1e64d012c62$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_COOKIE_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_COOKIE_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=4e76f0bd07a6814bf05cdb7b39ba24a88c7c2e55$ // $hash=46a6432f66cce88d8597c3d070681b09a712dc54$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_CRASH_UTIL_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_CRASH_UTIL_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=c46c975e4826d9f58a208b2efe7c417e1ffdba51$ // $hash=dd94c50619e92bf5bed4fe61479813ee559f779d$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_DEVTOOLS_MESSAGE_OBSERVER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_DEVTOOLS_MESSAGE_OBSERVER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=9028da9ae0b0f9a2f98b163fdb98c2d999368cf8$ // $hash=bf7208a86ee17f63fd7163cef8c3a13373a1f1c8$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_DIALOG_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_DIALOG_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=c2c7970554008e70a24403198a08155354773bd3$ // $hash=5a99c5e88ea0e123087234b2795fa625fed183f2$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_DISPLAY_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_DISPLAY_HANDLER_CAPI_H_
@@ -84,12 +84,13 @@ typedef struct _cef_display_handler_t {
/// Called when web content in the page has toggled fullscreen mode. If /// Called when web content in the page has toggled fullscreen mode. If
/// |fullscreen| is true (1) the content will automatically be sized to fill /// |fullscreen| is true (1) the content will automatically be sized to fill
/// the browser content area. If |fullscreen| is false (0) the content will /// the browser content area. If |fullscreen| is false (0) the content will
/// automatically return to its original size and position. With Alloy style /// automatically return to its original size and position. With the Alloy
/// the client is responsible for triggering the fullscreen transition (for /// runtime the client is responsible for triggering the fullscreen transition
/// example, by calling cef_window_t::SetFullscreen when using Views). With /// (for example, by calling cef_window_t::SetFullscreen when using Views).
/// Chrome style the fullscreen transition will be triggered automatically. /// With the Chrome runtime the fullscreen transition will be triggered
/// The cef_window_delegate_t::OnWindowFullscreenTransition function will be /// automatically. The cef_window_delegate_t::OnWindowFullscreenTransition
/// called during the fullscreen transition for notification purposes. /// function will be called during the fullscreen transition for notification
/// purposes.
/// ///
void(CEF_CALLBACK* on_fullscreen_mode_change)( void(CEF_CALLBACK* on_fullscreen_mode_change)(
struct _cef_display_handler_t* self, struct _cef_display_handler_t* self,

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=54747fced11ace169fcd28f2a75b198d16aac389$ // $hash=a4d2f79163205ed4367916546240a6aedc2165f9$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_DOM_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_DOM_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=12eb9c7531907aef107de6f1ec27e778652fa423$ // $hash=7ecfb07a95315ff81937e9f68d419122fc88f1b7$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=bfc88fe29eac33ffe243e2d62bc59231e5f3d83a$ // $hash=9af8ade3addfd112db41792c4e80682a8143e8c4$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_ITEM_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_ITEM_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=1878b6de429690870890e1d369ee567c25491266$ // $hash=a096775255ddc4d7616095e48e7370bd87bf4bb5$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_DRAG_DATA_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_DRAG_DATA_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=cc1b26a3c1ccd3597e354c8a39fcf509f2582424$ // $hash=0723a2a59d46e465ac94f198351dc871f0b35b96$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_DRAG_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_DRAG_HANDLER_CAPI_H_

View File

@@ -0,0 +1,132 @@
// Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the name Chromium Embedded
// Framework nor the names of its contributors may be used to endorse
// or promote products derived from this software without specific prior
// written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// ---------------------------------------------------------------------------
//
// This file was generated by the CEF translator tool and should not edited
// by hand. See the translator.README.txt file in the tools directory for
// more information.
//
// $hash=634054ad25154c30fb4ec630fe7fb79b0cf1f9b3$
//
#ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_CAPI_H_
#define CEF_INCLUDE_CAPI_CEF_EXTENSION_CAPI_H_
#pragma once
#include "include/capi/cef_base_capi.h"
#include "include/capi/cef_values_capi.h"
#ifdef __cplusplus
extern "C" {
#endif
struct _cef_extension_handler_t;
struct _cef_request_context_t;
///
/// Object representing an extension. Methods may be called on any thread unless
/// otherwise indicated.
///
/// WARNING: This API is deprecated and will be removed in ~M127.
///
typedef struct _cef_extension_t {
///
/// Base structure.
///
cef_base_ref_counted_t base;
///
/// Returns the unique extension identifier. This is calculated based on the
/// extension public key, if available, or on the extension path. See
/// https://developer.chrome.com/extensions/manifest/key for details.
///
// The resulting string must be freed by calling cef_string_userfree_free().
cef_string_userfree_t(CEF_CALLBACK* get_identifier)(
struct _cef_extension_t* self);
///
/// Returns the absolute path to the extension directory on disk. This value
/// will be prefixed with PK_DIR_RESOURCES if a relative path was passed to
/// cef_request_context_t::LoadExtension.
///
// The resulting string must be freed by calling cef_string_userfree_free().
cef_string_userfree_t(CEF_CALLBACK* get_path)(struct _cef_extension_t* self);
///
/// Returns the extension manifest contents as a cef_dictionary_value_t
/// object. See https://developer.chrome.com/extensions/manifest for details.
///
struct _cef_dictionary_value_t*(CEF_CALLBACK* get_manifest)(
struct _cef_extension_t* self);
///
/// Returns true (1) if this object is the same extension as |that| object.
/// Extensions are considered the same if identifier, path and loader context
/// match.
///
int(CEF_CALLBACK* is_same)(struct _cef_extension_t* self,
struct _cef_extension_t* that);
///
/// Returns the handler for this extension. Will return NULL for internal
/// extensions or if no handler was passed to
/// cef_request_context_t::LoadExtension.
///
struct _cef_extension_handler_t*(CEF_CALLBACK* get_handler)(
struct _cef_extension_t* self);
///
/// Returns the request context that loaded this extension. Will return NULL
/// for internal extensions or if the extension has been unloaded. See the
/// cef_request_context_t::LoadExtension documentation for more information
/// about loader contexts. Must be called on the browser process UI thread.
///
struct _cef_request_context_t*(CEF_CALLBACK* get_loader_context)(
struct _cef_extension_t* self);
///
/// Returns true (1) if this extension is currently loaded. Must be called on
/// the browser process UI thread.
///
int(CEF_CALLBACK* is_loaded)(struct _cef_extension_t* self);
///
/// Unload this extension if it is not an internal extension and is currently
/// loaded. Will result in a call to
/// cef_extension_handler_t::OnExtensionUnloaded on success.
///
void(CEF_CALLBACK* unload)(struct _cef_extension_t* self);
} cef_extension_t;
#ifdef __cplusplus
}
#endif
#endif // CEF_INCLUDE_CAPI_CEF_EXTENSION_CAPI_H_

View File

@@ -0,0 +1,214 @@
// Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the name Chromium Embedded
// Framework nor the names of its contributors may be used to endorse
// or promote products derived from this software without specific prior
// written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// ---------------------------------------------------------------------------
//
// This file was generated by the CEF translator tool and should not edited
// by hand. See the translator.README.txt file in the tools directory for
// more information.
//
// $hash=ebac34c9b85de780ce7524211c5dd61a80d4576c$
//
#ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_HANDLER_CAPI_H_
#define CEF_INCLUDE_CAPI_CEF_EXTENSION_HANDLER_CAPI_H_
#pragma once
#include "include/capi/cef_base_capi.h"
#include "include/capi/cef_browser_capi.h"
#include "include/capi/cef_extension_capi.h"
#include "include/capi/cef_stream_capi.h"
#ifdef __cplusplus
extern "C" {
#endif
struct _cef_client_t;
///
/// Callback structure used for asynchronous continuation of
/// cef_extension_handler_t::GetExtensionResource.
///
typedef struct _cef_get_extension_resource_callback_t {
///
/// Base structure.
///
cef_base_ref_counted_t base;
///
/// Continue the request. Read the resource contents from |stream|.
///
void(CEF_CALLBACK* cont)(struct _cef_get_extension_resource_callback_t* self,
struct _cef_stream_reader_t* stream);
///
/// Cancel the request.
///
void(CEF_CALLBACK* cancel)(
struct _cef_get_extension_resource_callback_t* self);
} cef_get_extension_resource_callback_t;
///
/// Implement this structure to handle events related to browser extensions. The
/// functions of this structure will be called on the UI thread. See
/// cef_request_context_t::LoadExtension for information about extension
/// loading.
///
/// WARNING: This API is deprecated and will be removed in ~M127.
///
typedef struct _cef_extension_handler_t {
///
/// Base structure.
///
cef_base_ref_counted_t base;
///
/// Called if the cef_request_context_t::LoadExtension request fails. |result|
/// will be the error code.
///
void(CEF_CALLBACK* on_extension_load_failed)(
struct _cef_extension_handler_t* self,
cef_errorcode_t result);
///
/// Called if the cef_request_context_t::LoadExtension request succeeds.
/// |extension| is the loaded extension.
///
void(CEF_CALLBACK* on_extension_loaded)(struct _cef_extension_handler_t* self,
struct _cef_extension_t* extension);
///
/// Called after the cef_extension_t::Unload request has completed.
///
void(CEF_CALLBACK* on_extension_unloaded)(
struct _cef_extension_handler_t* self,
struct _cef_extension_t* extension);
///
/// Called when an extension needs a browser to host a background script
/// specified via the "background" manifest key. The browser will have no
/// visible window and cannot be displayed. |extension| is the extension that
/// is loading the background script. |url| is an internally generated
/// reference to an HTML page that will be used to load the background script
/// via a "<script>" src attribute. To allow creation of the browser
/// optionally modify |client| and |settings| and return false (0). To cancel
/// creation of the browser (and consequently cancel load of the background
/// script) return true (1). Successful creation will be indicated by a call
/// to cef_life_span_handler_t::OnAfterCreated, and
/// cef_browser_host_t::IsBackgroundHost will return true (1) for the
/// resulting browser. See https://developer.chrome.com/extensions/event_pages
/// for more information about extension background script usage.
///
int(CEF_CALLBACK* on_before_background_browser)(
struct _cef_extension_handler_t* self,
struct _cef_extension_t* extension,
const cef_string_t* url,
struct _cef_client_t** client,
struct _cef_browser_settings_t* settings);
///
/// Called when an extension API (e.g. chrome.tabs.create) requests creation
/// of a new browser. |extension| and |browser| are the source of the API
/// call. |active_browser| may optionally be specified via the windowId
/// property or returned via the get_active_browser() callback and provides
/// the default |client| and |settings| values for the new browser. |index| is
/// the position value optionally specified via the index property. |url| is
/// the URL that will be loaded in the browser. |active| is true (1) if the
/// new browser should be active when opened. To allow creation of the
/// browser optionally modify |windowInfo|, |client| and |settings| and return
/// false (0). To cancel creation of the browser return true (1). Successful
/// creation will be indicated by a call to
/// cef_life_span_handler_t::OnAfterCreated. Any modifications to |windowInfo|
/// will be ignored if |active_browser| is wrapped in a cef_browser_view_t.
///
int(CEF_CALLBACK* on_before_browser)(
struct _cef_extension_handler_t* self,
struct _cef_extension_t* extension,
struct _cef_browser_t* browser,
struct _cef_browser_t* active_browser,
int index,
const cef_string_t* url,
int active,
struct _cef_window_info_t* windowInfo,
struct _cef_client_t** client,
struct _cef_browser_settings_t* settings);
///
/// Called when no tabId is specified to an extension API call that accepts a
/// tabId parameter (e.g. chrome.tabs.*). |extension| and |browser| are the
/// source of the API call. Return the browser that will be acted on by the
/// API call or return NULL to act on |browser|. The returned browser must
/// share the same cef_request_context_t as |browser|. Incognito browsers
/// should not be considered unless the source extension has incognito access
/// enabled, in which case |include_incognito| will be true (1).
///
struct _cef_browser_t*(CEF_CALLBACK* get_active_browser)(
struct _cef_extension_handler_t* self,
struct _cef_extension_t* extension,
struct _cef_browser_t* browser,
int include_incognito);
///
/// Called when the tabId associated with |target_browser| is specified to an
/// extension API call that accepts a tabId parameter (e.g. chrome.tabs.*).
/// |extension| and |browser| are the source of the API call. Return true (1)
/// to allow access of false (0) to deny access. Access to incognito browsers
/// should not be allowed unless the source extension has incognito access
/// enabled, in which case |include_incognito| will be true (1).
///
int(CEF_CALLBACK* can_access_browser)(struct _cef_extension_handler_t* self,
struct _cef_extension_t* extension,
struct _cef_browser_t* browser,
int include_incognito,
struct _cef_browser_t* target_browser);
///
/// Called to retrieve an extension resource that would normally be loaded
/// from disk (e.g. if a file parameter is specified to
/// chrome.tabs.executeScript). |extension| and |browser| are the source of
/// the resource request. |file| is the requested relative file path. To
/// handle the resource request return true (1) and execute |callback| either
/// synchronously or asynchronously. For the default behavior which reads the
/// resource from the extension directory on disk return false (0).
/// Localization substitutions will not be applied to resources handled via
/// this function.
///
int(CEF_CALLBACK* get_extension_resource)(
struct _cef_extension_handler_t* self,
struct _cef_extension_t* extension,
struct _cef_browser_t* browser,
const cef_string_t* file,
struct _cef_get_extension_resource_callback_t* callback);
} cef_extension_handler_t;
#ifdef __cplusplus
}
#endif
#endif // CEF_INCLUDE_CAPI_CEF_EXTENSION_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=dfce79f1b15c8dbd1671e4975edded6b5f4af3f4$ // $hash=e10581d1f6aeb104646ae106aaa5fb36016643dd$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_FILE_UTIL_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_FILE_UTIL_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=064ad20d41aaad70c7e010ee344e949206fb9c2c$ // $hash=da0a9242b309fbd70d19949fb1c5b4ec4475ef94$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_FIND_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_FIND_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=de1dddb86d27d5d32a562723bbc6fdfac625f7c7$ // $hash=6eefc2c650908461fb7536dd3314c77a3f89dceb$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_FOCUS_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_FOCUS_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=f9659ff9b227bf7416ba893c4627c49e40f8561e$ // $hash=8f347a95168778ec0e686cdef93be3bc517e2f68$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_FRAME_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_FRAME_CAPI_H_
@@ -98,11 +98,6 @@ typedef struct _cef_frame_t {
/// ///
void(CEF_CALLBACK* paste)(struct _cef_frame_t* self); void(CEF_CALLBACK* paste)(struct _cef_frame_t* self);
///
/// Execute paste and match style in this frame.
///
void(CEF_CALLBACK* paste_and_match_style)(struct _cef_frame_t* self);
/// ///
/// Execute delete in this frame. /// Execute delete in this frame.
/// ///

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=5b34d6cb46ae29d2934b0f3eeecac8e03a9654dd$ // $hash=fc6fbee765ce2b649f5293c8c4b076d36014e4aa$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_FRAME_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_FRAME_HANDLER_CAPI_H_
@@ -76,8 +76,6 @@ extern "C" {
/// objects are detached at the same time then notifications will be sent for /// objects are detached at the same time then notifications will be sent for
/// any sub-frame objects before the main frame object. Commands can no longer /// any sub-frame objects before the main frame object. Commands can no longer
/// be routed and will be discarded. /// be routed and will be discarded.
/// - CefFremeHadler::OnFrameDestroyed => An existing main frame or sub-frame
/// object has been destroyed.
/// - cef_frame_handler_t::OnMainFrameChanged => A new main frame object has /// - cef_frame_handler_t::OnMainFrameChanged => A new main frame object has
/// been assigned to the browser. This will only occur with cross-origin /// been assigned to the browser. This will only occur with cross-origin
/// navigation or re-navigation after renderer process termination (due to /// navigation or re-navigation after renderer process termination (due to
@@ -87,32 +85,42 @@ extern "C" {
/// - cef_frame_handler_t::OnFrameDetached => Any sub-frame objects have lost /// - cef_frame_handler_t::OnFrameDetached => Any sub-frame objects have lost
/// their connection to the renderer process. Commands can no longer be routed /// their connection to the renderer process. Commands can no longer be routed
/// and will be discarded. /// and will be discarded.
/// - CefFreameHandler::OnFrameDestroyed => Any sub-frame objects have been
/// destroyed.
/// - cef_life_span_handler_t::OnBeforeClose => The browser has been destroyed. /// - cef_life_span_handler_t::OnBeforeClose => The browser has been destroyed.
/// - cef_frame_handler_t::OnFrameDetached => The main frame object have lost /// - cef_frame_handler_t::OnFrameDetached => The main frame object have lost
/// its connection to the renderer process. Notifications will be sent for any /// its connection to the renderer process. Notifications will be sent for any
/// sub-frame objects before the main frame object. Commands can no longer be /// sub-frame objects before the main frame object. Commands can no longer be
/// routed and will be discarded. /// routed and will be discarded.
/// - CefFreameHandler::OnFrameDestroyed => The main frame object has been
/// destroyed.
/// - cef_frame_handler_t::OnMainFrameChanged => The final main frame object has /// - cef_frame_handler_t::OnMainFrameChanged => The final main frame object has
/// been removed from the browser. /// been removed from the browser.
/// ///
/// Special handling applies for cross-origin loading on creation/navigation of /// Cross-origin navigation and/or loading receives special handling.
/// sub-frames, and cross-origin loading on creation of new popup browsers. A
/// temporary frame will first be created in the parent frame's renderer
/// process. This temporary frame will never attach and will be discarded after
/// the real cross-origin frame is created in the new/target renderer process.
/// The client will receive creation callbacks for the temporary frame, followed
/// by cross-origin navigation callbacks (2) for the transition from the
/// temporary frame to the real frame. The temporary frame will not receive or
/// execute commands during this transitional period (any sent commands will be
/// discarded).
/// ///
/// When the main frame navigates to a different origin the OnMainFrameChanged /// When the main frame navigates to a different origin the OnMainFrameChanged
/// callback (2) will be executed with the old and new main frame objects. /// callback (2) will be executed with the old and new main frame objects.
/// ///
/// When a new sub-frame is loaded in, or an existing sub-frame is navigated to,
/// a different origin from the parent frame, a temporary sub-frame object will
/// first be created in the parent's renderer process. That temporary sub-frame
/// will then be discarded after the real cross-origin sub-frame is created in
/// the new/target renderer process. The client will receive cross-origin
/// navigation callbacks (2) for the transition from the temporary sub-frame to
/// the real sub-frame. The temporary sub-frame will not receive or execute
/// commands during this transitional period (any sent commands will be
/// discarded).
///
/// When a new popup browser is created in a different origin from the parent
/// browser, a temporary main frame object for the popup will first be created
/// in the parent's renderer process. That temporary main frame will then be
/// discarded after the real cross-origin main frame is created in the
/// new/target renderer process. The client will receive creation and initial
/// navigation callbacks (1) for the temporary main frame, followed by cross-
/// origin navigation callbacks (2) for the transition from the temporary main
/// frame to the real main frame. The temporary main frame may receive and
/// execute commands during this transitional period (any sent commands may be
/// executed, but the behavior is potentially undesirable since they execute in
/// the parent browser's renderer process and not the new/target renderer
/// process).
///
/// Callbacks will not be executed for placeholders that may be created during /// Callbacks will not be executed for placeholders that may be created during
/// pre-commit navigation for sub-frames that do not yet exist in the renderer /// pre-commit navigation for sub-frames that do not yet exist in the renderer
/// process. Placeholders will have cef_frame_t::get_identifier() == -4. /// process. Placeholders will have cef_frame_t::get_identifier() == -4.
@@ -130,33 +138,17 @@ typedef struct _cef_frame_handler_t {
/// Called when a new frame is created. This will be the first notification /// Called when a new frame is created. This will be the first notification
/// that references |frame|. Any commands that require transport to the /// that references |frame|. Any commands that require transport to the
/// associated renderer process (LoadRequest, SendProcessMessage, GetSource, /// associated renderer process (LoadRequest, SendProcessMessage, GetSource,
/// etc.) will be queued. The queued commands will be sent before /// etc.) will be queued until OnFrameAttached is called for |frame|.
/// OnFrameAttached or discarded before OnFrameDestroyed if the frame never
/// attaches.
/// ///
void(CEF_CALLBACK* on_frame_created)(struct _cef_frame_handler_t* self, void(CEF_CALLBACK* on_frame_created)(struct _cef_frame_handler_t* self,
struct _cef_browser_t* browser, struct _cef_browser_t* browser,
struct _cef_frame_t* frame); struct _cef_frame_t* frame);
///
/// Called when an existing frame is destroyed. This will be the last
/// notification that references |frame| and cef_frame_t::is_valid() will
/// return false (0) for |frame|. If called during browser destruction and
/// after cef_life_span_handler_t::on_before_close() then
/// cef_browser_t::is_valid() will return false (0) for |browser|. Any queued
/// commands that have not been sent will be discarded before this callback.
///
void(CEF_CALLBACK* on_frame_destroyed)(struct _cef_frame_handler_t* self,
struct _cef_browser_t* browser,
struct _cef_frame_t* frame);
/// ///
/// Called when a frame can begin routing commands to/from the associated /// Called when a frame can begin routing commands to/from the associated
/// renderer process. |reattached| will be true (1) if the frame was re- /// renderer process. |reattached| will be true (1) if the frame was re-
/// attached after exiting the BackForwardCache or after encountering a /// attached after exiting the BackForwardCache. Any commands that were queued
/// recoverable connection error. Any queued commands will now have been /// have now been dispatched.
/// dispatched. This function will not be called for temporary frames created
/// during cross-origin navigation.
/// ///
void(CEF_CALLBACK* on_frame_attached)(struct _cef_frame_handler_t* self, void(CEF_CALLBACK* on_frame_attached)(struct _cef_frame_handler_t* self,
struct _cef_browser_t* browser, struct _cef_browser_t* browser,
@@ -164,19 +156,12 @@ typedef struct _cef_frame_handler_t {
int reattached); int reattached);
/// ///
/// Called when a frame loses its connection to the renderer process. This may /// Called when a frame loses its connection to the renderer process and will
/// occur when a frame is destroyed, enters the BackForwardCache, or /// be destroyed. Any pending or future commands will be discarded and
/// encounters a rare connection error. In the case of frame destruction this /// cef_frame_t::is_valid() will now return false (0) for |frame|. If called
/// call will be followed by a (potentially async) call to OnFrameDestroyed. /// after cef_life_span_handler_t::on_before_close() during browser
/// If frame destruction is occuring synchronously then /// destruction then cef_browser_t::is_valid() will return false (0) for
/// cef_frame_t::is_valid() will return false (0) for |frame|. If called /// |browser|.
/// during browser destruction and after
/// cef_life_span_handler_t::on_before_close() then cef_browser_t::is_valid()
/// will return false (0) for |browser|. If, in the non-destruction case, the
/// same frame later exits the BackForwardCache or recovers from a connection
/// error then there will be a follow-up call to OnFrameAttached. This
/// function will not be called for temporary frames created during cross-
/// origin navigation.
/// ///
void(CEF_CALLBACK* on_frame_detached)(struct _cef_frame_handler_t* self, void(CEF_CALLBACK* on_frame_detached)(struct _cef_frame_handler_t* self,
struct _cef_browser_t* browser, struct _cef_browser_t* browser,
@@ -188,14 +173,14 @@ typedef struct _cef_frame_handler_t {
/// navigation after renderer process termination (due to crashes, etc). /// navigation after renderer process termination (due to crashes, etc).
/// |old_frame| will be NULL and |new_frame| will be non-NULL when a main /// |old_frame| will be NULL and |new_frame| will be non-NULL when a main
/// frame is assigned to |browser| for the first time. |old_frame| will be /// frame is assigned to |browser| for the first time. |old_frame| will be
/// non-NULL and |new_frame| will be NULL when a main frame is removed from /// non-NULL and |new_frame| will be NULL and when a main frame is removed
/// |browser| for the last time. Both |old_frame| and |new_frame| will be non- /// from |browser| for the last time. Both |old_frame| and |new_frame| will be
/// NULL for cross-origin navigations or re-navigation after renderer process /// non-NULL for cross-origin navigations or re-navigation after renderer
/// termination. This function will be called after on_frame_created() for /// process termination. This function will be called after on_frame_created()
/// |new_frame| and/or after on_frame_destroyed() for |old_frame|. If called /// for |new_frame| and/or after on_frame_detached() for |old_frame|. If
/// during browser destruction and after /// called after cef_life_span_handler_t::on_before_close() during browser
/// cef_life_span_handler_t::on_before_close() then cef_browser_t::is_valid() /// destruction then cef_browser_t::is_valid() will return false (0) for
/// will return false (0) for |browser|. /// |browser|.
/// ///
void(CEF_CALLBACK* on_main_frame_changed)(struct _cef_frame_handler_t* self, void(CEF_CALLBACK* on_main_frame_changed)(struct _cef_frame_handler_t* self,
struct _cef_browser_t* browser, struct _cef_browser_t* browser,

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=df875cb63efa86d99aeea4528b34c0fa4d610365$ // $hash=990e80ab5ae04298e6b70cbc0a67115825563251$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_I18N_UTIL_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_I18N_UTIL_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=9b939a05b46a94c7ce04a2e81607d82efd83c31d$ // $hash=7512ccf755017d5b1866b753890b498e8163006d$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_IMAGE_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_IMAGE_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=f883715592aad460fbe1b29d9faff1b16d36697e$ // $hash=c6810367ba3a17824247dcb17f87040cd021c295$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_JSDIALOG_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_JSDIALOG_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=457e803ce440ec32985d51e95a7efbce0ddf59d1$ // $hash=0bfe161c51cc6378b2e8e2e2b2c017b750b46864$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_KEYBOARD_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_KEYBOARD_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=b262d702e9aca386a917905843892ab84c08c785$ // $hash=54edf9e9c2a12acdc4cab55079a4a5cb8e2a1e43$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_LIFE_SPAN_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_LIFE_SPAN_HANDLER_CAPI_H_
@@ -62,40 +62,33 @@ typedef struct _cef_life_span_handler_t {
/// ///
/// Called on the UI thread before a new popup browser is created. The /// Called on the UI thread before a new popup browser is created. The
/// |browser| and |frame| values represent the source of the popup request /// |browser| and |frame| values represent the source of the popup request.
/// (opener browser and frame). The |popup_id| value uniquely identifies the /// The |target_url| and |target_frame_name| values indicate where the popup
/// popup in the context of the opener browser. The |target_url| and /// browser should navigate and may be NULL if not specified with the request.
/// |target_frame_name| values indicate where the popup browser should /// The |target_disposition| value indicates where the user intended to open
/// navigate and may be NULL if not specified with the request. The /// the popup (e.g. current tab, new tab, etc). The |user_gesture| value will
/// |target_disposition| value indicates where the user intended to open the /// be true (1) if the popup was opened via explicit user gesture (e.g.
/// popup (e.g. current tab, new tab, etc). The |user_gesture| value will be /// clicking a link) or false (0) if the popup opened automatically (e.g. via
/// true (1) if the popup was opened via explicit user gesture (e.g. clicking /// the DomContentLoaded event). The |popupFeatures| structure contains
/// a link) or false (0) if the popup opened automatically (e.g. via the /// additional information about the requested popup window. To allow creation
/// DomContentLoaded event). The |popupFeatures| structure contains additional /// of the popup browser optionally modify |windowInfo|, |client|, |settings|
/// information about the requested popup window. To allow creation of the /// and |no_javascript_access| and return false (0). To cancel creation of the
/// popup browser optionally modify |windowInfo|, |client|, |settings| and
/// |no_javascript_access| and return false (0). To cancel creation of the
/// popup browser return true (1). The |client| and |settings| values will /// popup browser return true (1). The |client| and |settings| values will
/// default to the source browser's values. If the |no_javascript_access| /// default to the source browser's values. If the |no_javascript_access|
/// value is set to false (0) the new browser will not be scriptable and may /// value is set to false (0) the new browser will not be scriptable and may
/// not be hosted in the same renderer process as the source browser. Any /// not be hosted in the same renderer process as the source browser. Any
/// modifications to |windowInfo| will be ignored if the parent browser is /// modifications to |windowInfo| will be ignored if the parent browser is
/// wrapped in a cef_browser_view_t. The |extra_info| parameter provides an /// wrapped in a cef_browser_view_t. Popup browser creation will be canceled
/// opportunity to specify extra information specific to the created popup /// if the parent browser is destroyed before the popup browser creation
/// browser that will be passed to /// completes (indicated by a call to OnAfterCreated for the popup browser).
/// The |extra_info| parameter provides an opportunity to specify extra
/// information specific to the created popup browser that will be passed to
/// cef_render_process_handler_t::on_browser_created() in the render process. /// cef_render_process_handler_t::on_browser_created() in the render process.
/// ///
/// If popup browser creation succeeds then OnAfterCreated will be called for
/// the new popup browser. If popup browser creation fails, and if the opener
/// browser has not yet been destroyed, then OnBeforePopupAborted will be
/// called for the opener browser. See OnBeforePopupAborted documentation for
/// additional details.
///
int(CEF_CALLBACK* on_before_popup)( int(CEF_CALLBACK* on_before_popup)(
struct _cef_life_span_handler_t* self, struct _cef_life_span_handler_t* self,
struct _cef_browser_t* browser, struct _cef_browser_t* browser,
struct _cef_frame_t* frame, struct _cef_frame_t* frame,
int popup_id,
const cef_string_t* target_url, const cef_string_t* target_url,
const cef_string_t* target_frame_name, const cef_string_t* target_frame_name,
cef_window_open_disposition_t target_disposition, cef_window_open_disposition_t target_disposition,
@@ -107,26 +100,6 @@ typedef struct _cef_life_span_handler_t {
struct _cef_dictionary_value_t** extra_info, struct _cef_dictionary_value_t** extra_info,
int* no_javascript_access); int* no_javascript_access);
///
/// Called on the UI thread if a new popup browser is aborted. This only
/// occurs if the popup is allowed in OnBeforePopup and creation fails before
/// OnAfterCreated is called for the new popup browser. The |browser| value is
/// the source of the popup request (opener browser). The |popup_id| value
/// uniquely identifies the popup in the context of the opener browser, and is
/// the same value that was passed to OnBeforePopup.
///
/// Any client state associated with pending popups should be cleared in
/// OnBeforePopupAborted, OnAfterCreated of the popup browser, or
/// OnBeforeClose of the opener browser. OnBeforeClose of the opener browser
/// may be called before this function in cases where the opener is closing
/// during popup creation, in which case cef_browser_host_t::IsValid will
/// return false (0) in this function.
///
void(CEF_CALLBACK* on_before_popup_aborted)(
struct _cef_life_span_handler_t* self,
struct _cef_browser_t* browser,
int popup_id);
/// ///
/// Called on the UI thread before a new DevTools popup browser is created. /// Called on the UI thread before a new DevTools popup browser is created.
/// The |browser| value represents the source of the popup request. Optionally /// The |browser| value represents the source of the popup request. Optionally
@@ -144,7 +117,7 @@ typedef struct _cef_life_span_handler_t {
/// Views-hosted source browsers will create Views-hosted DevTools popups /// Views-hosted source browsers will create Views-hosted DevTools popups
/// unless |use_default_window| is set to to true (1). DevTools popups can be /// unless |use_default_window| is set to to true (1). DevTools popups can be
/// blocked by returning true (1) from cef_command_handler_t::OnChromeCommand /// blocked by returning true (1) from cef_command_handler_t::OnChromeCommand
/// for IDC_DEV_TOOLS. Only used with Chrome style. /// for IDC_DEV_TOOLS. Only used with the Chrome runtime.
/// ///
void(CEF_CALLBACK* on_before_dev_tools_popup)( void(CEF_CALLBACK* on_before_dev_tools_popup)(
struct _cef_life_span_handler_t* self, struct _cef_life_span_handler_t* self,
@@ -165,44 +138,35 @@ typedef struct _cef_life_span_handler_t {
struct _cef_browser_t* browser); struct _cef_browser_t* browser);
/// ///
/// Called when an Alloy style browser is ready to be closed, meaning that the /// Called when a browser has received a request to close. This may result
/// close has already been initiated and that JavaScript unload handlers have /// directly from a call to cef_browser_host_t::*close_browser() or indirectly
/// already executed or should be ignored. This may result directly from a /// if the browser is parented to a top-level window created by CEF and the
/// call to cef_browser_host_t::[Try]close_browser() or indirectly if the /// user attempts to close that window (by clicking the 'X', for example). The
/// browser's top-level parent window was created by CEF and the user attempts /// do_close() function will be called after the JavaScript 'onunload' event
/// to close that window (by clicking the 'X', for example). do_close() will /// has been fired.
/// not be called if the browser's host window/view has already been destroyed
/// (via parent window/view hierarchy tear-down, for example), as it is no
/// longer possible to customize the close behavior at that point.
/// ///
/// An application should handle top-level parent window close notifications /// An application should handle top-level owner window close notifications by
/// by calling cef_browser_host_t::try_close_browser() or /// calling cef_browser_host_t::try_close_browser() or
/// cef_browser_host_t::CloseBrowser(false (0)) instead of allowing the window /// cef_browser_host_t::CloseBrowser(false (0)) instead of allowing the window
/// to close immediately (see the examples below). This gives CEF an /// to close immediately (see the examples below). This gives CEF an
/// opportunity to process JavaScript unload handlers and optionally cancel /// opportunity to process the 'onbeforeunload' event and optionally cancel
/// the close before do_close() is called. /// the close before do_close() is called.
/// ///
/// When windowed rendering is enabled CEF will create an internal child /// When windowed rendering is enabled CEF will internally create a window or
/// window/view to host the browser. In that case returning false (0) from /// view to host the browser. In that case returning false (0) from do_close()
/// do_close() will send the standard close notification to the browser's top- /// will send the standard close notification to the browser's top-level owner
/// level parent window (e.g. WM_CLOSE on Windows, performClose: on OS X, /// window (e.g. WM_CLOSE on Windows, performClose: on OS X, "delete_event" on
/// "delete_event" on Linux or cef_window_delegate_t::can_close() callback /// Linux or cef_window_delegate_t::can_close() callback from Views). If the
/// from Views). /// browser's host window/view has already been destroyed (via view hierarchy
/// tear-down, for example) then do_close() will not be called for that
/// browser since is no longer possible to cancel the close.
/// ///
/// When windowed rendering is disabled there is no internal window/view and /// When windowed rendering is disabled returning false (0) from do_close()
/// returning false (0) from do_close() will cause the browser object to be /// will cause the browser object to be destroyed immediately.
/// destroyed immediately.
/// ///
/// If the browser's top-level parent window requires a non-standard close /// If the browser's top-level owner window requires a non-standard close
/// notification then send that notification from do_close() and return true /// notification then send that notification from do_close() and return true
/// (1). You are still required to complete the browser close as soon as /// (1).
/// possible (either by calling [Try]close_browser() or by proceeding with
/// window/view hierarchy tear-down), otherwise the browser will be left in a
/// partially closed state that interferes with proper functioning. Top-level
/// windows created on the browser process UI thread can alternately call
/// cef_browser_host_t::is_ready_to_be_closed() in the close handler to check
/// close status instead of relying on custom do_close() handling. See
/// documentation on that function for additional details.
/// ///
/// The cef_life_span_handler_t::on_before_close() function will be called /// The cef_life_span_handler_t::on_before_close() function will be called
/// after do_close() (if do_close() is called) and immediately before the /// after do_close() (if do_close() is called) and immediately before the
@@ -218,26 +182,22 @@ typedef struct _cef_life_span_handler_t {
/// which sends a close notification /// which sends a close notification
/// to the application's top-level window. /// to the application's top-level window.
/// 2. Application's top-level window receives the close notification and /// 2. Application's top-level window receives the close notification and
/// calls TryCloseBrowser() (similar to calling CloseBrowser(false)). /// calls TryCloseBrowser() (which internally calls CloseBrowser(false)).
/// TryCloseBrowser() returns false so the client cancels the window /// TryCloseBrowser() returns false so the client cancels the window
/// close. /// close.
/// 3. JavaScript 'onbeforeunload' handler executes and shows the close /// 3. JavaScript 'onbeforeunload' handler executes and shows the close
/// confirmation dialog (which can be overridden via /// confirmation dialog (which can be overridden via
/// CefJSDialogHandler::OnBeforeUnloadDialog()). /// CefJSDialogHandler::OnBeforeUnloadDialog()).
/// 4. User approves the close. 5. JavaScript 'onunload' handler executes. /// 4. User approves the close. 5. JavaScript 'onunload' handler executes.
/// 6. Application's do_close() handler is called and returns false (0) by /// 6. CEF sends a close notification to the application's top-level window
/// default. /// (because DoClose() returned false by default).
/// 7. CEF sends a close notification to the application's top-level window /// 7. Application's top-level window receives the close notification and
/// (because DoClose() returned false).
/// 8. Application's top-level window receives the close notification and
/// calls TryCloseBrowser(). TryCloseBrowser() returns true so the client /// calls TryCloseBrowser(). TryCloseBrowser() returns true so the client
/// allows the window close. /// allows the window close.
/// 9. Application's top-level window is destroyed, triggering destruction /// 8. Application's top-level window is destroyed. 9. Application's
/// of the child browser window. /// on_before_close() handler is called and the browser object
/// 10. Application's on_before_close() handler is called and the browser
/// object
/// is destroyed. /// is destroyed.
/// 11. Application exits by calling cef_quit_message_loop() if no other /// 10. Application exits by calling cef_quit_message_loop() if no other
/// browsers /// browsers
/// exist. /// exist.
/// ///
@@ -255,17 +215,13 @@ typedef struct _cef_life_span_handler_t {
/// CefJSDialogHandler::OnBeforeUnloadDialog()). /// CefJSDialogHandler::OnBeforeUnloadDialog()).
/// 4. User approves the close. 5. JavaScript 'onunload' handler executes. /// 4. User approves the close. 5. JavaScript 'onunload' handler executes.
/// 6. Application's do_close() handler is called. Application will: /// 6. Application's do_close() handler is called. Application will:
/// A. Set a flag to indicate that the next top-level window close attempt /// A. Set a flag to indicate that the next close attempt will be allowed.
/// will be allowed.
/// B. Return false. /// B. Return false.
/// 7. CEF sends a close notification to the application's top-level window /// 7. CEF sends an close notification to the application's top-level window.
/// (because DoClose() returned false).
/// 8. Application's top-level window receives the close notification and /// 8. Application's top-level window receives the close notification and
/// allows the window to close based on the flag from #6A. /// allows the window to close based on the flag from #6B.
/// 9. Application's top-level window is destroyed, triggering destruction /// 9. Application's top-level window is destroyed. 10. Application's
/// of the child browser window. /// on_before_close() handler is called and the browser object
/// 10. Application's on_before_close() handler is called and the browser
/// object
/// is destroyed. /// is destroyed.
/// 11. Application exits by calling cef_quit_message_loop() if no other /// 11. Application exits by calling cef_quit_message_loop() if no other
/// browsers /// browsers
@@ -279,11 +235,10 @@ typedef struct _cef_life_span_handler_t {
/// browser object and do not attempt to execute any functions on the browser /// browser object and do not attempt to execute any functions on the browser
/// object (other than IsValid, GetIdentifier or IsSame) after this callback /// object (other than IsValid, GetIdentifier or IsSame) after this callback
/// returns. cef_frame_handler_t callbacks related to final main frame /// returns. cef_frame_handler_t callbacks related to final main frame
/// destruction, and OnBeforePopupAborted callbacks for any pending popups, /// destruction will arrive after this callback and cef_browser_t::IsValid
/// will arrive after this callback and cef_browser_t::IsValid will return /// will return false (0) at that time. Any in-progress network requests
/// false (0) at that time. Any in-progress network requests associated with /// associated with |browser| will be aborted when the browser is destroyed,
/// |browser| will be aborted when the browser is destroyed, and /// and cef_resource_request_handler_t callbacks related to those requests may
/// cef_resource_request_handler_t callbacks related to those requests may
/// still arrive on the IO thread after this callback. See cef_frame_handler_t /// still arrive on the IO thread after this callback. See cef_frame_handler_t
/// and do_close() documentation for additional usage information. /// and do_close() documentation for additional usage information.
/// ///

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=4b69be2184fff5ac127cbfaa2d59a3f217fc99a8$ // $hash=eb842e65cd2e7c4a8a6baa2813b57ac0d3977261$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_LOAD_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_LOAD_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=9c7efc4b6eb4b876763822a337780fd10ed4ccc5$ // $hash=8eec1100e8470cbe3ebc54d5962416d2fa4d57fb$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_MEDIA_ROUTER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_MEDIA_ROUTER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=df171056173cd3468327155836d09db6169df58c$ // $hash=5dae0b1a1271e79a5fd9b2c6e71e7a719a450161$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=caedce6bfadf82e9c0f4469ec85ae1cb0cecf272$ // $hash=01bdeaf96ea01591689b52b0955504644d6614b8$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_DELEGATE_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_DELEGATE_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=37bc08d68db42172bf4e93f54497ab7a032142ab$ // $hash=dbdac05f2ebd8e8a357eacfe5095676a5bd5b1ac$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_NAVIGATION_ENTRY_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_NAVIGATION_ENTRY_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=5272c7801673a332b2af12ef92325d0222156d5a$ // $hash=f146fd9172033e77e90994841df9fa55ff71aa4b$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_ORIGIN_WHITELIST_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_ORIGIN_WHITELIST_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=6173e6b6fc6f4c48530bc83bed6853f31ad5baa8$ // $hash=8accded29b97df1549e86e58d8976fe0f800359a$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_PARSER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_PARSER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=8083f1a60abf642961676414dc2c7c261a5a6da0$ // $hash=ee0c50b4e1f51fb2286da24bb9244ae74f3b0c6f$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_PATH_UTIL_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_PATH_UTIL_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=011eac5c4ff31c52d14551ad8f6b9eb6dc6ca1ed$ // $hash=c9b3913701581cd6a1077fa3a39d197f338a2507$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_PERMISSION_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_PERMISSION_HANDLER_CAPI_H_
@@ -108,11 +108,11 @@ typedef struct _cef_permission_handler_t {
/// cef_media_access_permission_types_t that represent the requested /// cef_media_access_permission_types_t that represent the requested
/// permissions. Return true (1) and call cef_media_access_callback_t /// permissions. Return true (1) and call cef_media_access_callback_t
/// functions either in this function or at a later time to continue or cancel /// functions either in this function or at a later time to continue or cancel
/// the request. Return false (0) to proceed with default handling. With /// the request. Return false (0) to proceed with default handling. With the
/// Chrome style, default handling will display the permission request UI. /// Chrome runtime, default handling will display the permission request UI.
/// With Alloy style, default handling will deny the request. This function /// With the Alloy runtime, default handling will deny the request. This
/// will not be called if the "--enable-media-stream" command-line switch is /// function will not be called if the "--enable-media-stream" command-line
/// used to grant all permissions. /// switch is used to grant all permissions.
/// ///
int(CEF_CALLBACK* on_request_media_access_permission)( int(CEF_CALLBACK* on_request_media_access_permission)(
struct _cef_permission_handler_t* self, struct _cef_permission_handler_t* self,
@@ -129,9 +129,9 @@ typedef struct _cef_permission_handler_t {
/// cef_permission_request_types_t that represent the requested permissions. /// cef_permission_request_types_t that represent the requested permissions.
/// Return true (1) and call cef_permission_prompt_callback_t::Continue either /// Return true (1) and call cef_permission_prompt_callback_t::Continue either
/// in this function or at a later time to continue or cancel the request. /// in this function or at a later time to continue or cancel the request.
/// Return false (0) to proceed with default handling. With Chrome style, /// Return false (0) to proceed with default handling. With the Chrome
/// default handling will display the permission prompt UI. With Alloy style, /// runtime, default handling will display the permission prompt UI. With the
/// default handling is CEF_PERMISSION_RESULT_IGNORE. /// Alloy runtime, default handling is CEF_PERMISSION_RESULT_IGNORE.
/// ///
int(CEF_CALLBACK* on_show_permission_prompt)( int(CEF_CALLBACK* on_show_permission_prompt)(
struct _cef_permission_handler_t* self, struct _cef_permission_handler_t* self,

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=ca52972bc1f1b437629f2b5cd982b5e792509640$ // $hash=1c0e469a283538945834404bcd5934b9bb9a0756$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_PREFERENCE_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_PREFERENCE_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=a862d4e04d943372a76e0b46bd6f99834a90c149$ // $hash=96d5b6c0dc8f2575e686fb79684c63787cdfe876$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_PRINT_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_PRINT_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=2f254f4b44ab9925ebe6c6edd6552785e2eba3e4$ // $hash=63977fcbe4567db202914f69539f49b254352053$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_PRINT_SETTINGS_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_PRINT_SETTINGS_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=e612527d7a87316ec6de807e614b86225bc421d6$ // $hash=89c569df7e5e4a6035d4527218ce4dc1d68e20f0$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_PROCESS_MESSAGE_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_PROCESS_MESSAGE_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=7f41a1d1511515da28b07ee4e488e436ed942f23$ // $hash=a61a639c7e53ecd9481eae363bac557055f0442e$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_PROCESS_UTIL_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_PROCESS_UTIL_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=c0388c0cdbf26c23a437adcdb026ecc54f5097e8$ // $hash=c53a67bbf1497a51766bf03040714b5edb2117d5$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_REGISTRATION_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_REGISTRATION_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=f70f728d5900b4aac6c5161c7c26a052c822f1cf$ // $hash=5151b6ea3c06e46a75f2cd7679044a2891063d29$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_RENDER_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_RENDER_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=0b6352b6327124a8d21494f67c6c7a1ec960e258$ // $hash=6e2fccb5a8e49918d723f6c5223062cf98b0f9de$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_RENDER_PROCESS_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_RENDER_PROCESS_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=807a2a01d12ec2444a65faba495b18dd88b59c98$ // $hash=14ce483864835eca476d08d39ed4236fbd1a874c$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=49c033cb556f562097dc367a61d5faaa928a418f$ // $hash=2c496139ca9a59303b1493ee93d2c3ae96a956c0$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_CAPI_H_
@@ -42,6 +42,8 @@
#include "include/capi/cef_callback_capi.h" #include "include/capi/cef_callback_capi.h"
#include "include/capi/cef_cookie_capi.h" #include "include/capi/cef_cookie_capi.h"
#include "include/capi/cef_extension_capi.h"
#include "include/capi/cef_extension_handler_capi.h"
#include "include/capi/cef_media_router_capi.h" #include "include/capi/cef_media_router_capi.h"
#include "include/capi/cef_preference_capi.h" #include "include/capi/cef_preference_capi.h"
#include "include/capi/cef_values_capi.h" #include "include/capi/cef_values_capi.h"
@@ -203,6 +205,105 @@ typedef struct _cef_request_context_t {
const cef_string_t* origin, const cef_string_t* origin,
struct _cef_resolve_callback_t* callback); struct _cef_resolve_callback_t* callback);
///
/// Load an extension.
///
/// If extension resources will be read from disk using the default load
/// implementation then |root_directory| should be the absolute path to the
/// extension resources directory and |manifest| should be NULL. If extension
/// resources will be provided by the client (e.g. via cef_request_handler_t
/// and/or cef_extension_handler_t) then |root_directory| should be a path
/// component unique to the extension (if not absolute this will be internally
/// prefixed with the PK_DIR_RESOURCES path) and |manifest| should contain the
/// contents that would otherwise be read from the "manifest.json" file on
/// disk.
///
/// The loaded extension will be accessible in all contexts sharing the same
/// storage (HasExtension returns true (1)). However, only the context on
/// which this function was called is considered the loader (DidLoadExtension
/// returns true (1)) and only the loader will receive
/// cef_request_context_handler_t callbacks for the extension.
///
/// cef_extension_handler_t::OnExtensionLoaded will be called on load success
/// or cef_extension_handler_t::OnExtensionLoadFailed will be called on load
/// failure.
///
/// If the extension specifies a background script via the "background"
/// manifest key then cef_extension_handler_t::OnBeforeBackgroundBrowser will
/// be called to create the background browser. See that function for
/// additional information about background scripts.
///
/// For visible extension views the client application should evaluate the
/// manifest to determine the correct extension URL to load and then pass that
/// URL to the cef_browser_host_t::CreateBrowser* function after the extension
/// has loaded. For example, the client can look for the "browser_action"
/// manifest key as documented at
/// https://developer.chrome.com/extensions/browserAction. Extension URLs take
/// the form "chrome-extension://<extension_id>/<path>".
///
/// Browsers that host extensions differ from normal browsers as follows:
/// - Can access chrome.* JavaScript APIs if allowed by the manifest. Visit
/// chrome://extensions-support for the list of extension APIs currently
/// supported by CEF.
/// - Main frame navigation to non-extension content is blocked.
/// - Pinch-zooming is disabled.
/// - CefBrowserHost::GetExtension returns the hosted extension.
/// - CefBrowserHost::IsBackgroundHost returns true for background hosts.
///
/// See https://developer.chrome.com/extensions for extension implementation
/// and usage documentation.
///
/// WARNING: This function is deprecated and will be removed in ~M127.
///
void(CEF_CALLBACK* load_extension)(struct _cef_request_context_t* self,
const cef_string_t* root_directory,
struct _cef_dictionary_value_t* manifest,
struct _cef_extension_handler_t* handler);
///
/// Returns true (1) if this context was used to load the extension identified
/// by |extension_id|. Other contexts sharing the same storage will also have
/// access to the extension (see HasExtension). This function must be called
/// on the browser process UI thread.
///
/// WARNING: This function is deprecated and will be removed in ~M127.
///
int(CEF_CALLBACK* did_load_extension)(struct _cef_request_context_t* self,
const cef_string_t* extension_id);
///
/// Returns true (1) if this context has access to the extension identified by
/// |extension_id|. This may not be the context that was used to load the
/// extension (see DidLoadExtension). This function must be called on the
/// browser process UI thread.
///
/// WARNING: This function is deprecated and will be removed in ~M127.
///
int(CEF_CALLBACK* has_extension)(struct _cef_request_context_t* self,
const cef_string_t* extension_id);
///
/// Retrieve the list of all extensions that this context has access to (see
/// HasExtension). |extension_ids| will be populated with the list of
/// extension ID values. Returns true (1) on success. This function must be
/// called on the browser process UI thread.
///
/// WARNING: This function is deprecated and will be removed in ~M127.
///
int(CEF_CALLBACK* get_extensions)(struct _cef_request_context_t* self,
cef_string_list_t extension_ids);
///
/// Returns the extension matching |extension_id| or NULL if no matching
/// extension is accessible in this context (see HasExtension). This function
/// must be called on the browser process UI thread.
///
/// WARNING: This function is deprecated and will be removed in ~M127.
///
struct _cef_extension_t*(CEF_CALLBACK* get_extension)(
struct _cef_request_context_t* self,
const cef_string_t* extension_id);
/// ///
/// Returns the MediaRouter object associated with this context. If /// Returns the MediaRouter object associated with this context. If
/// |callback| is non-NULL it will be executed asnychronously on the UI thread /// |callback| is non-NULL it will be executed asnychronously on the UI thread

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=57c59462474c5568d3f33b06c0b712e1443fea16$ // $hash=d90d816565429ad304f43490b0619af5ffa70274$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=cd520ee608556118330cb515932c7598228fc31c$ // $hash=2e8b5c5107f61e3d4c333dc02c76a9f30cd0cf83$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_HANDLER_CAPI_H_
@@ -194,19 +194,16 @@ typedef struct _cef_request_handler_t {
/// ///
/// Called on the UI thread when a client certificate is being requested for /// Called on the UI thread when a client certificate is being requested for
/// authentication. Return false (0) to use the default behavior. If the /// authentication. Return false (0) to use the default behavior and
/// |certificates| list is not NULL the default behavior will be to display a /// automatically select the first certificate available. Return true (1) and
/// dialog for certificate selection. If the |certificates| list is NULL then /// call cef_select_client_certificate_callback_t::Select either in this
/// the default behavior will be not to show a dialog and it will continue /// function or at a later time to select a certificate. Do not call Select or
/// without using any certificate. Return true (1) and call /// call it with NULL to continue without using any certificate. |isProxy|
/// cef_select_client_certificate_callback_t::Select either in this function /// indicates whether the host is an HTTPS proxy or the origin server. |host|
/// or at a later time to select a certificate. Do not call Select or call it /// and |port| contains the hostname and port of the SSL server.
/// with NULL to continue without using any certificate. |isProxy| indicates /// |certificates| is the list of certificates to choose from; this list has
/// whether the host is an HTTPS proxy or the origin server. |host| and |port| /// already been pruned by Chromium so that it only contains certificates from
/// contains the hostname and port of the SSL server. |certificates| is the /// issuers that the server trusts.
/// list of certificates to choose from; this list has already been pruned by
/// Chromium so that it only contains certificates from issuers that the
/// server trusts.
/// ///
int(CEF_CALLBACK* on_select_client_certificate)( int(CEF_CALLBACK* on_select_client_certificate)(
struct _cef_request_handler_t* self, struct _cef_request_handler_t* self,
@@ -230,19 +227,20 @@ typedef struct _cef_request_handler_t {
/// Called on the browser process UI thread when the render process is /// Called on the browser process UI thread when the render process is
/// unresponsive as indicated by a lack of input event processing for at least /// unresponsive as indicated by a lack of input event processing for at least
/// 15 seconds. Return false (0) for the default behavior which is an /// 15 seconds. Return false (0) for the default behavior which is an
/// indefinite wait with Alloy style or display of the "Page unresponsive" /// indefinite wait with the Alloy runtime or display of the "Page
/// dialog with Chrome style. Return true (1) and don't execute the callback /// unresponsive" dialog with the Chrome runtime. Return true (1) and don't
/// for an indefinite wait without display of the Chrome style dialog. Return /// execute the callback for an indefinite wait without display of the Chrome
/// true (1) and call cef_unresponsive_process_callback_t::Wait either in this /// runtime dialog. Return true (1) and call
/// function or at a later time to reset the wait timer, potentially /// cef_unresponsive_process_callback_t::Wait either in this function or at a
/// triggering another call to this function if the process remains /// later time to reset the wait timer, potentially triggering another call to
/// unresponsive. Return true (1) and call /// this function if the process remains unresponsive. Return true (1) and
/// cef_unresponsive_process_callback_t:: Terminate either in this function or /// call cef_unresponsive_process_callback_t:: Terminate either in this
/// at a later time to terminate the unresponsive process, resulting in a call /// function or at a later time to terminate the unresponsive process,
/// to OnRenderProcessTerminated. OnRenderProcessResponsive will be called if /// resulting in a call to OnRenderProcessTerminated.
/// the process becomes responsive after this function is called. This /// OnRenderProcessResponsive will be called if the process becomes responsive
/// functionality depends on the hang monitor which can be disabled by passing /// after this function is called. This functionality depends on the hang
/// the `--disable-hang-monitor` command-line flag. /// monitor which can be disabled by passing the `--disable-hang-monitor`
/// command-line flag.
/// ///
int(CEF_CALLBACK* on_render_process_unresponsive)( int(CEF_CALLBACK* on_render_process_unresponsive)(
struct _cef_request_handler_t* self, struct _cef_request_handler_t* self,

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=eaadc7ceea2701ef81610b6c2ddd7715a7aa0470$ // $hash=d97d3ca6c8d610627538c58f3b4ba3869f3d9ac7$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_BUNDLE_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_BUNDLE_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=d6418a35c5ef7e10c95079d959e46f41208e4ee9$ // $hash=b25f3131d67980e493da4d7e484676d000334995$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_BUNDLE_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_BUNDLE_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=4442fed4d8d56eae033533adee7c6798a16106b1$ // $hash=ad8218a8ac9e313884110e72bb2af32ec916907f$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=486b77634fa6b992f73ad6c50059e3b485e799d8$ // $hash=c4416644786e3c1999cdcd7e6bf78af94ff7f0da$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_REQUEST_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_REQUEST_HANDLER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=0f59aa44781adb38aa03f6d12ff8faaca56b6c17$ // $hash=de559e5cd4b539ce129beab8f7627576c4249cd5$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_RESPONSE_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_RESPONSE_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=25ce5468fe3e80b2af7380449bebb0112abfc875$ // $hash=1c83177e8030f7637d8ce0aa68831e417fbf37d3$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_RESPONSE_FILTER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_RESPONSE_FILTER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=0ddf52d0eb7668a0634c741f80a2d833e88ab4e3$ // $hash=dd3f6003f9a8f59c2eb4320c382651a441086aee$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_SCHEME_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_SCHEME_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=0fe95394351eae472d063a15f6fa1a137877bc3a$ // $hash=b85c5d4060c951571f122e519e7dc7e9a4c4e629$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_SERVER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_SERVER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=44992e464691ad934ba23f02438d01dac080247d$ // $hash=3d208a996f65f37012460edb1890773218580913$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_SHARED_MEMORY_REGION_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_SHARED_MEMORY_REGION_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=a2c886fbbb1b44c2b77a2ed3ceeb614a718a54cd$ // $hash=1ae66f6ec465fda2d62530f5871efd58c89e7568$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_SHARED_PROCESS_MESSAGE_BUILDER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_SHARED_PROCESS_MESSAGE_BUILDER_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=b2564b5e98141080b037999a67615fd49b49f0b0$ // $hash=d781f3791df17c6d6adc4414e8534a6b13a54ff2$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_SSL_INFO_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_SSL_INFO_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=3e144b8b8ddb285457d5382e6098891bacb11f55$ // $hash=1d224cc81c5a42ce8d7de172ff7341f1e0785f46$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_SSL_STATUS_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_SSL_STATUS_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=6dd3ed5a66af23d7e7951ef5753fadf56c420c86$ // $hash=f55fa17800b9a63d128fb78201372754f9250875$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_STREAM_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_STREAM_CAPI_H_

View File

@@ -1,4 +1,4 @@
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved. // Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without // Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are // modification, are permitted provided that the following conditions are
@@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=f272624c0eb247bdf928f95ebd5ea6869c3d7672$ // $hash=c43ca147d723753000bc819d64d09b83a23bfac2$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_STRING_VISITOR_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_STRING_VISITOR_CAPI_H_

Some files were not shown because too many files have changed in this diff Show More