mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Compare commits
313 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
5c0b03a4ba | ||
|
5a7e5ed359 | ||
|
34b05bb541 | ||
|
de32089516 | ||
|
16488e5564 | ||
|
7bb6b2569c | ||
|
7a98b3fece | ||
|
3470f6ade4 | ||
|
fc4256797d | ||
|
3dedcced94 | ||
|
59f3b143ef | ||
|
6514b929c4 | ||
|
a747221b01 | ||
|
351ea86650 | ||
|
06c1602d18 | ||
|
48f3ef63e2 | ||
|
7268dc8cd3 | ||
|
45861b1b08 | ||
|
efe558cd28 | ||
|
f1e634393f | ||
|
0187046a2e | ||
|
6f4c2bf8df | ||
|
de2da368c6 | ||
|
4797681694 | ||
|
ffbc53a9e6 | ||
|
92f14410ae | ||
|
e68b0169a1 | ||
|
1fd6000c70 | ||
|
5e348cb1fc | ||
|
02b371879b | ||
|
3f4d8297f2 | ||
|
057c1b1409 | ||
|
96ddcee086 | ||
|
625ea52a4b | ||
|
cd052ec7c3 | ||
|
e44d33d5bf | ||
|
6459917c0a | ||
|
b90f0048da | ||
|
8c6f8dd404 | ||
|
af1f40a2d3 | ||
|
2cd405baac | ||
|
b98eac265a | ||
|
701c9470f2 | ||
|
889cfcf8d1 | ||
|
ebb3c962da | ||
|
64a2f681aa | ||
|
52888f346f | ||
|
9e9ba2c543 | ||
|
166eec85e0 | ||
|
f6f4ba8317 | ||
|
bed7f420aa | ||
|
be4085981c | ||
|
785713c4cc | ||
|
b61c106b6b | ||
|
295ea1f715 | ||
|
08ae3a44a6 | ||
|
5ddeef736a | ||
|
446b7d6535 | ||
|
a6c00b2ff6 | ||
|
69b884d39c | ||
|
3acdbac061 | ||
|
d470cf8204 | ||
|
cbbca050e0 | ||
|
69fbadd0bc | ||
|
4023fea237 | ||
|
5607a4d347 | ||
|
8f4a47479c | ||
|
02ea88f79f | ||
|
ddb0ab8187 | ||
|
ed4257c807 | ||
|
b7a172fefc | ||
|
68e1fcf3a4 | ||
|
1f35258023 | ||
|
60ce575e53 | ||
|
0d166c3c90 | ||
|
9b284ec8f7 | ||
|
b080705ec8 | ||
|
1cdf02815e | ||
|
cd3f617171 | ||
|
bd57a40256 | ||
|
c0a3c897cf | ||
|
231701d98b | ||
|
a461a89728 | ||
|
b95b3e6fd5 | ||
|
c4a6797059 | ||
|
ebb99fbd58 | ||
|
1d7e83336f | ||
|
2a19d3dc57 | ||
|
810c51026c | ||
|
5afde67593 | ||
|
3b98dbda79 | ||
|
c44aa35bfc | ||
|
4ed13d8c47 | ||
|
fe24ce3c71 | ||
|
cc40cbdd45 | ||
|
7c19cb90e1 | ||
|
47798d3dbf | ||
|
e4bb51f6f6 | ||
|
fd7444c7a4 | ||
|
c56ae7213e | ||
|
cb1830e16c | ||
|
39cafe3e6c | ||
|
15c7e80e3c | ||
|
8e79307a62 | ||
|
b0bceecba9 | ||
|
b6842f8b80 | ||
|
5fe6382906 | ||
|
bd1e188c77 | ||
|
701fc03f00 | ||
|
bc1b856b96 | ||
|
c7b30ee80f | ||
|
48137b9538 | ||
|
5a2cfb6907 | ||
|
6354d8daf1 | ||
|
aad216bf56 | ||
|
3f036edf2d | ||
|
32fc106ab0 | ||
|
0170f431a0 | ||
|
2156c9fd5d | ||
|
00118ddcdb | ||
|
e7626b2df6 | ||
|
8283317cb1 | ||
|
271c6f6446 | ||
|
311eaf827e | ||
|
002f4b5b4a | ||
|
17a1fd62ec | ||
|
ca636bb96e | ||
|
4e3668f93a | ||
|
6b13b1c627 | ||
|
29381355ef | ||
|
7328b9e40d | ||
|
b92749a58a | ||
|
49a34d9160 | ||
|
b5d84c254d | ||
|
d666ec5770 | ||
|
fe5b0dd668 | ||
|
c0e7854782 | ||
|
be6642df3f | ||
|
ed079792b6 | ||
|
0783b4c57d | ||
|
b537fc929b | ||
|
708d90a6ff | ||
|
5065aba1b4 | ||
|
65234a6830 | ||
|
b67cbc47e3 | ||
|
4fe529e2dc | ||
|
260dd0ca24 | ||
|
dca0435d2f | ||
|
62c93f01f4 | ||
|
81a0648ee1 | ||
|
744a194a6e | ||
|
96dc172980 | ||
|
f1effba336 | ||
|
d10cc16236 | ||
|
da1c3179a9 | ||
|
2e33954032 | ||
|
f60476b848 | ||
|
29c21f58e8 | ||
|
54a9c26b92 | ||
|
6253e69b70 | ||
|
8ba22e9e11 | ||
|
19ba8b2b8d | ||
|
a13b6dc7f6 | ||
|
52dac91167 | ||
|
526e934a12 | ||
|
b8f91c5431 | ||
|
5e616b2df0 | ||
|
9b06b028dc | ||
|
d4cf19db29 | ||
|
2c5dd120c7 | ||
|
ffea0d9c4a | ||
|
8db08e657d | ||
|
706193f3d9 | ||
|
bfed26c5fc | ||
|
71c8b4b2bb | ||
|
ec122a9148 | ||
|
90775f149f | ||
|
f071a4a988 | ||
|
cc3d77eec5 | ||
|
a79981bf7f | ||
|
70471059cf | ||
|
5dc3cc13e7 | ||
|
da3899d142 | ||
|
69fd43f789 | ||
|
d3a483ef59 | ||
|
bdb070c85c | ||
|
57bad703ee | ||
|
47fe9f834a | ||
|
2f1e782f62 | ||
|
2a86a02bdd | ||
|
132ac7a180 | ||
|
a0446a3c8a | ||
|
a02d2ab3e6 | ||
|
4ea1b6f293 | ||
|
befa827da1 | ||
|
0a64bb6f9b | ||
|
9fd312ce04 | ||
|
468e55e553 | ||
|
f1fe098e09 | ||
|
5af6227a6f | ||
|
0d50d5a8c6 | ||
|
a097b62b6e | ||
|
ffc703276a | ||
|
3592d36808 | ||
|
deb4664038 | ||
|
9f6995f839 | ||
|
784302280b | ||
|
7c2bd75f7a | ||
|
3507249202 | ||
|
5a9b8e2bc4 | ||
|
9a45102db0 | ||
|
1f55d2e12f | ||
|
9dc7653ddc | ||
|
e4acacee18 | ||
|
206b7b1c95 | ||
|
262a93b2f7 | ||
|
80c65f25a3 | ||
|
2f0b00f8f5 | ||
|
be734efe68 | ||
|
0dd7dca229 | ||
|
5613af8f53 | ||
|
a25f89f9e4 | ||
|
d6af79e7a6 | ||
|
f781ea373f | ||
|
738192addf | ||
|
2b1922746f | ||
|
3b652a9966 | ||
|
cf934a20a7 | ||
|
a9f1ce090a | ||
|
1886f68490 | ||
|
53ef570f57 | ||
|
d3d465b32e | ||
|
2b38e2f793 | ||
|
3837f209e1 | ||
|
21e01d4889 | ||
|
44323082b1 | ||
|
1b74ac5124 | ||
|
b2274f534d | ||
|
3476199bc5 | ||
|
6651523d86 | ||
|
f594ca3785 | ||
|
15caa9858d | ||
|
e6a96e2bec | ||
|
90aea56de6 | ||
|
a2a1b66ea5 | ||
|
8d7001adc3 | ||
|
f3e92b45fc | ||
|
64c2dc13ca | ||
|
a8a96235a8 | ||
|
29938f9cb0 | ||
|
d8ea7363f5 | ||
|
f8dd0dbfb4 | ||
|
bdec92caf8 | ||
|
4ae030fec1 | ||
|
c7d4d9690c | ||
|
39e64d8cc9 | ||
|
262ed72348 | ||
|
27c6a4eabc | ||
|
4df2933516 | ||
|
57d7d89b53 | ||
|
cab404578d | ||
|
ef6ae3071d | ||
|
b064ba08f3 | ||
|
f808926fbd | ||
|
f4ecc23213 | ||
|
0a633e361b | ||
|
2133d8f5b3 | ||
|
445da33efe | ||
|
a4b27a7248 | ||
|
52cb08b973 | ||
|
52a9794659 | ||
|
605c2bac86 | ||
|
01e1a0f44d | ||
|
52b4d7ba5a | ||
|
94d51ffe20 | ||
|
4fc5fb8690 | ||
|
b07a9e1843 | ||
|
8b46735b79 | ||
|
1353677a98 | ||
|
a576150ab5 | ||
|
7a033d7585 | ||
|
1f11ce8700 | ||
|
59bfb32221 | ||
|
04c042d9d1 | ||
|
8603545aef | ||
|
650755a092 | ||
|
71c588c16a | ||
|
0b99f92e97 | ||
|
05930b7bc9 | ||
|
12d0bccbd4 | ||
|
b5386249bd | ||
|
36a645ffd8 | ||
|
3bd2cd78c7 | ||
|
cbdda6b03b | ||
|
6355aaf33b | ||
|
e53bff712a | ||
|
b854992ae6 | ||
|
5042d71408 | ||
|
695ee2a041 | ||
|
cf8b7db4b4 | ||
|
5d8c6799fc | ||
|
bd368f5d3a | ||
|
87a04aba03 | ||
|
df4dddee0b | ||
|
eb63f9e7ae | ||
|
29b5999fd7 | ||
|
5707889555 | ||
|
ecdfd467f8 | ||
|
e5334a5a18 | ||
|
e5c4b27366 | ||
|
c18545a7f5 | ||
|
dc9e64308a | ||
|
b8e1c6a59d |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -51,6 +51,5 @@ Thumbs.db
|
||||
/binary_distrib
|
||||
/docs
|
||||
# CEF generated files
|
||||
/include/cef_config.h
|
||||
/include/cef_version.h
|
||||
.ccls-cache/
|
||||
|
460
BUILD.gn
460
BUILD.gn
@@ -99,6 +99,7 @@ import("//build/config/locales.gni")
|
||||
import("//build/config/ozone.gni")
|
||||
import("//build/config/sanitizers/sanitizers.gni")
|
||||
import("//build/config/ui.gni")
|
||||
import("//cef/libcef/features/features.gni")
|
||||
import("//chrome/common/features.gni")
|
||||
import("//content/public/app/mac_helpers.gni")
|
||||
import("//extensions/buildflags/buildflags.gni")
|
||||
@@ -251,8 +252,7 @@ if (is_linux) {
|
||||
# Set by GetRequiredArgs() in //cef/tools/gn_args.py.
|
||||
#
|
||||
|
||||
# Set ENABLE_PRINTING=1 ENABLE_BASIC_PRINTING=1.
|
||||
assert(enable_basic_printing)
|
||||
# Enable support for Print Preview.
|
||||
assert(enable_print_preview)
|
||||
|
||||
# Enable support for Widevine CDM.
|
||||
@@ -349,6 +349,10 @@ if (is_win) {
|
||||
"//build/config:precompiled_headers",
|
||||
]
|
||||
|
||||
public_configs = [
|
||||
"libcef/features:config",
|
||||
]
|
||||
|
||||
if (is_component_build) {
|
||||
# Avoid linker errors with content_switches.cc in component build by not
|
||||
# defining CONTENT_EXPORT.
|
||||
@@ -390,10 +394,14 @@ source_set("libcef_static_unittested") {
|
||||
]
|
||||
|
||||
deps = [
|
||||
"//base",
|
||||
"//ui/gfx/geometry",
|
||||
]
|
||||
|
||||
public_deps = [
|
||||
# Support relative include paths.
|
||||
"//base",
|
||||
]
|
||||
|
||||
configs += [
|
||||
"libcef/features:config",
|
||||
"//build/config:precompiled_headers",
|
||||
@@ -453,32 +461,14 @@ source_set("libcef_test_support") {
|
||||
source_set("libcef_static") {
|
||||
sources = includes_common +
|
||||
gypi_paths.autogen_cpp_includes + [
|
||||
"libcef/browser/alloy/alloy_browser_context.cc",
|
||||
"libcef/browser/alloy/alloy_browser_context.h",
|
||||
"libcef/browser/alloy/alloy_browser_host_impl.cc",
|
||||
"libcef/browser/alloy/alloy_browser_host_impl.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_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/browser_platform_delegate_alloy.cc",
|
||||
"libcef/browser/alloy/browser_platform_delegate_alloy.h",
|
||||
"libcef/browser/alloy/dialogs/alloy_constrained_window_views_client.cc",
|
||||
"libcef/browser/alloy/dialogs/alloy_constrained_window_views_client.h",
|
||||
"libcef/browser/alloy/dialogs/alloy_javascript_dialog_manager_delegate.cc",
|
||||
"libcef/browser/alloy/dialogs/alloy_javascript_dialog_manager_delegate.h",
|
||||
"libcef/browser/alloy/dialogs/alloy_web_contents_dialog_helper.cc",
|
||||
"libcef/browser/alloy/dialogs/alloy_web_contents_dialog_helper.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/audio_capturer.cc",
|
||||
"libcef/browser/audio_capturer.h",
|
||||
"libcef/browser/audio_loopback_stream_creator.cc",
|
||||
@@ -487,10 +477,12 @@ source_set("libcef_static") {
|
||||
"libcef/browser/browser_contents_delegate.h",
|
||||
"libcef/browser/browser_context.cc",
|
||||
"libcef/browser/browser_context.h",
|
||||
"libcef/browser/browser_context_keyed_service_factories.cc",
|
||||
"libcef/browser/browser_context_keyed_service_factories.h",
|
||||
"libcef/browser/browser_event_util.cc",
|
||||
"libcef/browser/browser_event_util.h",
|
||||
"libcef/browser/browser_frame.cc",
|
||||
"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.h",
|
||||
"libcef/browser/browser_host_create.cc",
|
||||
@@ -505,8 +497,6 @@ source_set("libcef_static") {
|
||||
"libcef/browser/browser_platform_delegate.cc",
|
||||
"libcef/browser/browser_platform_delegate.h",
|
||||
"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.h",
|
||||
"libcef/browser/chrome/browser_delegate.h",
|
||||
@@ -524,7 +514,11 @@ source_set("libcef_static") {
|
||||
"libcef/browser/chrome/chrome_content_browser_client_cef.h",
|
||||
"libcef/browser/chrome/chrome_context_menu_handler.cc",
|
||||
"libcef/browser/chrome/chrome_context_menu_handler.h",
|
||||
"libcef/browser/chrome_crash_reporter_client_stub.cc",
|
||||
"libcef/browser/chrome/chrome_startup_browser_creator.cc",
|
||||
"libcef/browser/chrome/chrome_startup_browser_creator.h",
|
||||
"libcef/browser/chrome/chrome_web_contents_view_delegate_cef.h",
|
||||
"libcef/browser/chrome/extensions/chrome_extension_util.cc",
|
||||
"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.h",
|
||||
"libcef/browser/chrome/views/browser_platform_delegate_chrome_child_window.cc",
|
||||
@@ -549,62 +543,16 @@ source_set("libcef_static") {
|
||||
"libcef/browser/context_menu_params_impl.h",
|
||||
"libcef/browser/devtools/devtools_controller.cc",
|
||||
"libcef/browser/devtools/devtools_controller.h",
|
||||
"libcef/browser/devtools/devtools_file_manager.cc",
|
||||
"libcef/browser/devtools/devtools_file_manager.h",
|
||||
"libcef/browser/devtools/devtools_frontend.cc",
|
||||
"libcef/browser/devtools/devtools_frontend.h",
|
||||
"libcef/browser/devtools/devtools_manager.cc",
|
||||
"libcef/browser/devtools/devtools_manager.h",
|
||||
"libcef/browser/devtools/devtools_manager_delegate.cc",
|
||||
"libcef/browser/devtools/devtools_manager_delegate.h",
|
||||
"libcef/browser/devtools/devtools_protocol_manager.cc",
|
||||
"libcef/browser/devtools/devtools_protocol_manager.h",
|
||||
"libcef/browser/devtools/devtools_window_runner.cc",
|
||||
"libcef/browser/devtools/devtools_window_runner.h",
|
||||
"libcef/browser/download_item_impl.cc",
|
||||
"libcef/browser/download_item_impl.h",
|
||||
"libcef/browser/download_manager_delegate.cc",
|
||||
"libcef/browser/download_manager_delegate.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_extensions_util.cc",
|
||||
"libcef/browser/extensions/browser_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/download_manager_delegate_impl.cc",
|
||||
"libcef/browser/download_manager_delegate_impl.h",
|
||||
"libcef/browser/file_dialog_manager.cc",
|
||||
"libcef/browser/file_dialog_manager.h",
|
||||
"libcef/browser/file_dialog_runner.cc",
|
||||
@@ -614,6 +562,8 @@ source_set("libcef_static") {
|
||||
"libcef/browser/frame_service_base.h",
|
||||
"libcef/browser/global_preference_manager_impl.cc",
|
||||
"libcef/browser/global_preference_manager_impl.h",
|
||||
"libcef/browser/hang_monitor.cc",
|
||||
"libcef/browser/hang_monitor.h",
|
||||
"libcef/browser/image_impl.cc",
|
||||
"libcef/browser/image_impl.h",
|
||||
"libcef/browser/iothread_state.cc",
|
||||
@@ -625,8 +575,6 @@ source_set("libcef_static") {
|
||||
"libcef/browser/main_runner.h",
|
||||
"libcef/browser/media_access_query.cc",
|
||||
"libcef/browser/media_access_query.h",
|
||||
"libcef/browser/media_capture_devices_dispatcher.cc",
|
||||
"libcef/browser/media_capture_devices_dispatcher.h",
|
||||
"libcef/browser/media_router/media_route_impl.cc",
|
||||
"libcef/browser/media_router/media_route_impl.h",
|
||||
"libcef/browser/media_router/media_router_impl.cc",
|
||||
@@ -652,15 +600,7 @@ source_set("libcef_static") {
|
||||
"libcef/browser/native/window_delegate_view.h",
|
||||
"libcef/browser/navigation_entry_impl.cc",
|
||||
"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/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/net/throttle_handler.cc",
|
||||
"libcef/browser/net/throttle_handler.h",
|
||||
"libcef/browser/net_service/browser_urlrequest_impl.cc",
|
||||
@@ -716,8 +656,6 @@ source_set("libcef_static") {
|
||||
"libcef/browser/prefs/pref_helper.h",
|
||||
"libcef/browser/prefs/pref_registrar.cc",
|
||||
"libcef/browser/prefs/pref_registrar.h",
|
||||
"libcef/browser/prefs/pref_store.cc",
|
||||
"libcef/browser/prefs/pref_store.h",
|
||||
"libcef/browser/prefs/renderer_prefs.cc",
|
||||
"libcef/browser/prefs/renderer_prefs.h",
|
||||
"libcef/browser/print_settings_impl.cc",
|
||||
@@ -734,20 +672,20 @@ source_set("libcef_static") {
|
||||
"libcef/browser/server_impl.h",
|
||||
"libcef/browser/simple_menu_model_impl.cc",
|
||||
"libcef/browser/simple_menu_model_impl.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/browser/ssl_info_impl.cc",
|
||||
"libcef/browser/ssl_info_impl.h",
|
||||
"libcef/browser/ssl_status_impl.cc",
|
||||
"libcef/browser/ssl_status_impl.h",
|
||||
"libcef/browser/stream_impl.cc",
|
||||
"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_subscriber.cc",
|
||||
"libcef/browser/trace_subscriber.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.h",
|
||||
"libcef/browser/views/basic_label_button_view.cc",
|
||||
@@ -766,6 +704,8 @@ source_set("libcef_static") {
|
||||
"libcef/browser/views/browser_view_view.h",
|
||||
"libcef/browser/views/button_impl.h",
|
||||
"libcef/browser/views/button_view.h",
|
||||
"libcef/browser/views/color_provider_tracker.cc",
|
||||
"libcef/browser/views/color_provider_tracker.h",
|
||||
"libcef/browser/views/display_impl.cc",
|
||||
"libcef/browser/views/display_impl.h",
|
||||
"libcef/browser/views/fill_layout_impl.cc",
|
||||
@@ -801,6 +741,11 @@ source_set("libcef_static") {
|
||||
"libcef/browser/views/view_util.cc",
|
||||
"libcef/browser/views/view_util.h",
|
||||
"libcef/browser/views/view_view.h",
|
||||
"libcef/browser/views/widget.cc",
|
||||
"libcef/browser/views/widget.h",
|
||||
"libcef/browser/views/widget_destruction_observer.h",
|
||||
"libcef/browser/views/widget_impl.cc",
|
||||
"libcef/browser/views/widget_impl.h",
|
||||
"libcef/browser/views/window_impl.cc",
|
||||
"libcef/browser/views/window_impl.h",
|
||||
"libcef/browser/views/window_view.cc",
|
||||
@@ -813,12 +758,6 @@ source_set("libcef_static") {
|
||||
"libcef/browser/xml_reader_impl.h",
|
||||
"libcef/browser/zip_reader_impl.cc",
|
||||
"libcef/browser/zip_reader_impl.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/app_manager.cc",
|
||||
"libcef/common/app_manager.h",
|
||||
"libcef/common/base_impl.cc",
|
||||
@@ -828,8 +767,6 @@ source_set("libcef_static") {
|
||||
"libcef/common/chrome/chrome_content_client_cef.h",
|
||||
"libcef/common/chrome/chrome_main_delegate_cef.cc",
|
||||
"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.h",
|
||||
"libcef/common/crash_reporter_client.cc",
|
||||
@@ -838,25 +775,13 @@ source_set("libcef_static") {
|
||||
"libcef/common/crash_reporting.h",
|
||||
"libcef/common/drag_data_impl.cc",
|
||||
"libcef/common/drag_data_impl.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/file_util_impl.cc",
|
||||
"libcef/common/frame_util.cc",
|
||||
"libcef/common/frame_util.h",
|
||||
"libcef/common/i18n_util_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.h",
|
||||
"libcef/common/net/net_resource_provider.cc",
|
||||
"libcef/common/net/net_resource_provider.h",
|
||||
"libcef/common/net/scheme_registration.cc",
|
||||
"libcef/common/net/scheme_registration.h",
|
||||
"libcef/common/net/url_util.cc",
|
||||
@@ -904,14 +829,6 @@ source_set("libcef_static") {
|
||||
"libcef/common/values_impl.h",
|
||||
"libcef/common/waitable_event_impl.cc",
|
||||
"libcef/common/waitable_event_impl.h",
|
||||
"libcef/features/runtime.h",
|
||||
"libcef/features/runtime_checks.h",
|
||||
"libcef/renderer/alloy/alloy_content_renderer_client.cc",
|
||||
"libcef/renderer/alloy/alloy_content_renderer_client.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",
|
||||
"libcef/renderer/browser_impl.cc",
|
||||
"libcef/renderer/browser_impl.h",
|
||||
"libcef/renderer/chrome/chrome_content_renderer_client_cef.cc",
|
||||
@@ -920,12 +837,6 @@ source_set("libcef_static") {
|
||||
"libcef/renderer/dom_document_impl.h",
|
||||
"libcef/renderer/dom_node_impl.cc",
|
||||
"libcef/renderer/dom_node_impl.h",
|
||||
"libcef/renderer/extensions/extensions_dispatcher_delegate.cc",
|
||||
"libcef/renderer/extensions/extensions_dispatcher_delegate.h",
|
||||
"libcef/renderer/extensions/extensions_renderer_client.cc",
|
||||
"libcef/renderer/extensions/extensions_renderer_client.h",
|
||||
"libcef/renderer/extensions/print_render_frame_helper_delegate.cc",
|
||||
"libcef/renderer/extensions/print_render_frame_helper_delegate.h",
|
||||
"libcef/renderer/frame_impl.cc",
|
||||
"libcef/renderer/frame_impl.h",
|
||||
"libcef/renderer/render_frame_observer.cc",
|
||||
@@ -961,6 +872,7 @@ source_set("libcef_static") {
|
||||
# Bring in feature flag defines.
|
||||
"//cef/libcef/features",
|
||||
# Support relative include paths.
|
||||
"//base",
|
||||
"//third_party/abseil-cpp:absl",
|
||||
]
|
||||
|
||||
@@ -970,17 +882,8 @@ source_set("libcef_static") {
|
||||
|
||||
":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.
|
||||
"//base",
|
||||
"//base:base_static",
|
||||
"//base/third_party/dynamic_annotations",
|
||||
"//cc",
|
||||
"//chrome:dependencies",
|
||||
"//chrome:packed_resources",
|
||||
@@ -1075,7 +978,6 @@ source_set("libcef_static") {
|
||||
|
||||
if (is_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.h",
|
||||
"libcef/browser/osr/browser_platform_delegate_osr_win.cc",
|
||||
@@ -1091,12 +993,6 @@ source_set("libcef_static") {
|
||||
deps += [ "//content:sandbox_helper_win" ]
|
||||
}
|
||||
|
||||
libs = [
|
||||
"comctl32.lib",
|
||||
# For D3D11_DECODER_PROFILE_H264_VLD_NOFGT.
|
||||
"dxguid.lib",
|
||||
]
|
||||
|
||||
data_deps = [
|
||||
"//chrome/elevation_service",
|
||||
]
|
||||
@@ -1114,27 +1010,30 @@ source_set("libcef_static") {
|
||||
"libcef/common/util_linux.cc",
|
||||
]
|
||||
|
||||
if (ozone_platform_x11) {
|
||||
sources += [
|
||||
"libcef/browser/native/window_x11.cc",
|
||||
"libcef/browser/native/window_x11.h",
|
||||
]
|
||||
}
|
||||
|
||||
deps += [
|
||||
"//build/config/freetype",
|
||||
"//third_party/fontconfig",
|
||||
]
|
||||
|
||||
if (is_linux && !ozone_platform_x11) {
|
||||
deps += [
|
||||
"//third_party/angle:libEGL",
|
||||
if (ozone_platform_x11) {
|
||||
sources += [
|
||||
"libcef/browser/native/window_x11.cc",
|
||||
"libcef/browser/native/window_x11.h",
|
||||
]
|
||||
} else {
|
||||
deps += [ "//third_party/angle:libEGL" ]
|
||||
}
|
||||
|
||||
if (use_dbus) {
|
||||
deps += [ "//dbus" ]
|
||||
defines = [ "USE_DBUS" ]
|
||||
}
|
||||
}
|
||||
|
||||
if (is_mac) {
|
||||
sources += includes_mac + [
|
||||
"libcef/browser/chrome/chrome_content_browser_client_cef_mac.mm",
|
||||
"libcef/browser/chrome/chrome_web_contents_view_delegate_cef_mac.mm",
|
||||
"libcef/browser/native/browser_platform_delegate_native_mac.h",
|
||||
"libcef/browser/native/browser_platform_delegate_native_mac.mm",
|
||||
"libcef/browser/native/cursor_util_mac.mm",
|
||||
@@ -1156,6 +1055,10 @@ source_set("libcef_static") {
|
||||
"//chrome/app/chrome_main_mac.h",
|
||||
"//chrome/app/chrome_main_mac.mm",
|
||||
]
|
||||
} else {
|
||||
sources += [
|
||||
"libcef/browser/chrome/chrome_web_contents_view_delegate_cef.cc",
|
||||
]
|
||||
}
|
||||
|
||||
if (ozone_platform_x11) {
|
||||
@@ -1206,19 +1109,30 @@ config("libcef_autogen_config") {
|
||||
}
|
||||
}
|
||||
|
||||
# Configuration that supports #include paths relative to src/cef/ for CEF
|
||||
# client-side code. CEF library-side code (Chromium code and cef/libcef/
|
||||
# directory) uses #include paths relative to src/. See libcef/features:config
|
||||
# for CEF library-side configuration.
|
||||
config("libcef_includes_config") {
|
||||
include_dirs = [
|
||||
# cef/include/ directory and CEF client-side code use #includes relative to
|
||||
# the cef/ directory.
|
||||
".",
|
||||
# CEF generated header files that also need to be discoverable.
|
||||
# These #includes from client-side code will not be prefixed with cef/.
|
||||
# They will be copied to the include/ directory in the binary distribution.
|
||||
"$root_out_dir/includes/cef",
|
||||
]
|
||||
}
|
||||
|
||||
# Configuration that will be applied to all targets that depend on
|
||||
# libcef_dll_wrapper.
|
||||
config("libcef_dll_wrapper_config") {
|
||||
include_dirs = [
|
||||
# CEF sources use include paths relative to the CEF root directory.
|
||||
".",
|
||||
# CEF generates some header files that also need to be discoverable.
|
||||
# They will be copied to the include/ directory in the binary distribution.
|
||||
"$root_out_dir/includes",
|
||||
configs = [
|
||||
":libcef_autogen_config",
|
||||
":libcef_includes_config",
|
||||
]
|
||||
|
||||
configs = [ ":libcef_autogen_config" ]
|
||||
|
||||
if (is_win) {
|
||||
if (current_cpu == "x86") {
|
||||
# Set the initial stack size to 0.5MiB, instead of the 1.5MiB minimum
|
||||
@@ -1266,20 +1180,23 @@ static_library("libcef_dll_wrapper") {
|
||||
if (is_win) {
|
||||
static_library("cef_sandbox") {
|
||||
sources = [ "libcef_dll/sandbox/sandbox_win.cc" ]
|
||||
# CEF sources use include paths relative to the CEF root directory.
|
||||
include_dirs = [ "." ]
|
||||
deps = [ "libcef/features", "//sandbox" ]
|
||||
configs += [ ":libcef_includes_config" ]
|
||||
deps = [
|
||||
":make_config_header",
|
||||
"libcef/features",
|
||||
"//sandbox",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
if (is_mac) {
|
||||
static_library("cef_sandbox") {
|
||||
sources = [ "libcef_dll/sandbox/sandbox_mac.mm" ]
|
||||
# CEF sources use include paths relative to the CEF root directory.
|
||||
include_dirs = [ "." ]
|
||||
configs += [ ":libcef_includes_config" ]
|
||||
deps = [
|
||||
":make_config_header",
|
||||
"//build/config:executable_deps",
|
||||
"//sandbox/mac:seatbelt"
|
||||
"//sandbox/mac:seatbelt",
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1335,7 +1252,7 @@ template("make_pack_header") {
|
||||
|
||||
# Generate cef_pack_resources.h.
|
||||
make_pack_header("resources") {
|
||||
header = "$root_out_dir/includes/include/cef_pack_resources.h"
|
||||
header = "$root_out_dir/includes/cef/include/cef_pack_resources.h"
|
||||
inputs = [
|
||||
"$root_gen_dir/base/tracing/protos/grit/tracing_proto_resources.h",
|
||||
"$root_gen_dir/cef/grit/cef_resources.h",
|
||||
@@ -1351,9 +1268,10 @@ make_pack_header("resources") {
|
||||
"$root_gen_dir/content/browser/tracing/grit/tracing_resources.h",
|
||||
"$root_gen_dir/content/browser/webrtc/resources/grit/webrtc_internals_resources.h",
|
||||
"$root_gen_dir/content/grit/content_resources.h",
|
||||
"$root_gen_dir/content/grit/dev_ui_content_resources.h",
|
||||
"$root_gen_dir/content/grit/gpu_resources.h",
|
||||
"$root_gen_dir/content/grit/histograms_resources.h",
|
||||
"$root_gen_dir/content/grit/process_resources.h",
|
||||
"$root_gen_dir/content/grit/service_worker_resources.h",
|
||||
"$root_gen_dir/extensions/grit/extensions_browser_resources.h",
|
||||
"$root_gen_dir/extensions/grit/extensions_renderer_resources.h",
|
||||
"$root_gen_dir/extensions/grit/extensions_resources.h",
|
||||
@@ -1379,10 +1297,11 @@ make_pack_header("resources") {
|
||||
"//content/browser/devtools:devtools_resources",
|
||||
"//content/browser/resources/gpu:resources",
|
||||
"//content/browser/resources/histograms:resources",
|
||||
"//content/browser/resources/process:resources",
|
||||
"//content/browser/resources/service_worker:resources",
|
||||
"//content/browser/tracing:resources",
|
||||
"//content/browser/webrtc/resources",
|
||||
"//content:content_resources",
|
||||
"//content:dev_ui_content_resources",
|
||||
"//extensions:extensions_browser_resources",
|
||||
"//extensions:extensions_renderer_resources",
|
||||
"//extensions:extensions_resources_grd",
|
||||
@@ -1397,45 +1316,46 @@ make_pack_header("resources") {
|
||||
|
||||
# Generate cef_pack_strings.h.
|
||||
make_pack_header("strings") {
|
||||
header = "$root_out_dir/includes/include/cef_pack_strings.h"
|
||||
header = "$root_out_dir/includes/cef/include/cef_pack_strings.h"
|
||||
inputs = [
|
||||
"$root_gen_dir/cef/grit/cef_strings.h",
|
||||
"$root_gen_dir/chrome/grit/chromium_strings.h",
|
||||
"$root_gen_dir/chrome/grit/branded_strings.h",
|
||||
"$root_gen_dir/chrome/grit/generated_resources.h",
|
||||
"$root_gen_dir/chrome/grit/locale_settings.h",
|
||||
"$root_gen_dir/chrome/grit/platform_locale_settings.h",
|
||||
"$root_gen_dir/components/omnibox/resources/grit/omnibox_pedal_synonyms.h",
|
||||
"$root_gen_dir/components/strings/grit/components_chromium_strings.h",
|
||||
"$root_gen_dir/components/strings/grit/components_branded_strings.h",
|
||||
"$root_gen_dir/components/strings/grit/components_strings.h",
|
||||
"$root_gen_dir/extensions/strings/grit/extensions_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/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",
|
||||
]
|
||||
|
||||
deps = [
|
||||
":cef_strings",
|
||||
"//chrome/app:chromium_strings",
|
||||
"//chrome/app:branded_strings",
|
||||
"//chrome/app:generated_resources",
|
||||
"//chrome/app/resources:locale_settings",
|
||||
"//chrome/app/resources:platform_locale_settings",
|
||||
"//components/omnibox/resources:omnibox_pedal_synonyms",
|
||||
"//components/strings:components_chromium_strings",
|
||||
"//components/strings:components_branded_strings",
|
||||
"//components/strings:components_locale_settings",
|
||||
"//components/strings:components_strings",
|
||||
"//extensions/strings",
|
||||
"//services/strings",
|
||||
"//third_party/blink/public/strings",
|
||||
"//third_party/blink/public/strings:accessibility_strings",
|
||||
"//ui/strings:app_locale_settings",
|
||||
"//ui/strings:auto_image_annotation_strings",
|
||||
"//ui/strings:ui_strings",
|
||||
]
|
||||
}
|
||||
|
||||
# Generate cef_command_ids.h.
|
||||
make_pack_header("command_ids") {
|
||||
header = "$root_out_dir/includes/include/cef_command_ids.h"
|
||||
header = "$root_out_dir/includes/cef/include/cef_command_ids.h"
|
||||
inputs = [
|
||||
"//chrome/app/chrome_command_ids.h",
|
||||
]
|
||||
@@ -1453,18 +1373,43 @@ action("make_api_hash_header") {
|
||||
gypi_paths2.includes_capi +
|
||||
gypi_paths.autogen_capi_includes
|
||||
include_dir = [ "include" ]
|
||||
outputs = [ "$root_out_dir/includes/include/cef_api_hash.h" ]
|
||||
outputs = [ "$root_out_dir/includes/cef/include/cef_api_hash.h" ]
|
||||
|
||||
args = rebase_path(outputs + include_dir, root_build_dir)
|
||||
}
|
||||
|
||||
# This no-op action lists args.gn as an output, allowing it to be referenced as
|
||||
# an input (trigger) for other actions. Otherwise, GN will complain that no
|
||||
# target generates the args.gn file because it’s below the $root_out_dir.
|
||||
action("args_gn_source") {
|
||||
script = "//build/noop.py"
|
||||
outputs = [ "$root_out_dir/args.gn" ]
|
||||
}
|
||||
|
||||
# Generate cef_config.h.
|
||||
action("make_config_header") {
|
||||
script = "tools/make_config_header.py"
|
||||
|
||||
outputs = [ "$root_out_dir/includes/include/cef_config.h" ]
|
||||
deps = [ ":args_gn_source" ]
|
||||
|
||||
args = rebase_path(outputs + [ "$root_out_dir/args.gn" ], root_build_dir)
|
||||
inputs = [ "$root_out_dir/args.gn" ]
|
||||
outputs = [ "$root_out_dir/includes/cef/include/cef_config.h" ]
|
||||
|
||||
args = rebase_path(outputs + inputs, root_build_dir)
|
||||
}
|
||||
|
||||
# Generate cef_color_ids.h.
|
||||
action("make_colorids_header") {
|
||||
script = "tools/make_colorids_header.py"
|
||||
|
||||
inputs = [
|
||||
"//ui/color/color_id.h",
|
||||
"//components/color/color_id.h",
|
||||
"//chrome/browser/ui/color/chrome_color_id.h",
|
||||
]
|
||||
outputs = [ "$root_out_dir/includes/cef/include/cef_color_ids.h" ]
|
||||
|
||||
args = rebase_path(outputs + inputs, root_build_dir)
|
||||
}
|
||||
|
||||
# Generate pack files and associated CEF header files.
|
||||
@@ -1475,6 +1420,7 @@ group("cef_make_headers") {
|
||||
":make_pack_header_command_ids",
|
||||
":make_api_hash_header",
|
||||
":make_config_header",
|
||||
":make_colorids_header",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1526,50 +1472,32 @@ if (is_mac) {
|
||||
]
|
||||
}
|
||||
|
||||
if (use_egl) {
|
||||
# Add the ANGLE .dylibs in the MODULE_DIR of the Framework app bundle.
|
||||
bundle_data("cef_framework_angle_binaries") {
|
||||
sources = [
|
||||
"$root_out_dir/egl_intermediates/libEGL.dylib",
|
||||
"$root_out_dir/egl_intermediates/libGLESv2.dylib",
|
||||
]
|
||||
outputs = [
|
||||
"{{bundle_contents_dir}}/Libraries/{{source_file_part}}",
|
||||
]
|
||||
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 ANGLE .dylibs in the MODULE_DIR of the Framework app bundle.
|
||||
bundle_data("cef_framework_angle_binaries") {
|
||||
sources = [
|
||||
"$root_out_dir/egl_intermediates/libEGL.dylib",
|
||||
"$root_out_dir/egl_intermediates/libGLESv2.dylib",
|
||||
]
|
||||
outputs = [
|
||||
"{{bundle_contents_dir}}/Libraries/{{source_file_part}}",
|
||||
]
|
||||
public_deps = [
|
||||
"//ui/gl:angle_library_copy",
|
||||
]
|
||||
}
|
||||
|
||||
group("cef_framework_angle_library") {
|
||||
if (use_egl) {
|
||||
deps = [
|
||||
":cef_framework_angle_binaries",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
group("cef_framework_swiftshader_library") {
|
||||
if (use_egl) {
|
||||
deps = [
|
||||
":cef_framework_swiftshader_binaries",
|
||||
]
|
||||
}
|
||||
# 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",
|
||||
]
|
||||
}
|
||||
|
||||
mac_framework_bundle("cef_framework") {
|
||||
@@ -1593,9 +1521,9 @@ if (is_mac) {
|
||||
gypi_paths.autogen_library_side
|
||||
|
||||
deps = [
|
||||
":cef_framework_angle_library",
|
||||
":cef_framework_angle_binaries",
|
||||
":cef_framework_resources",
|
||||
":cef_framework_swiftshader_library",
|
||||
":cef_framework_swiftshader_binaries",
|
||||
":libcef_static",
|
||||
":libcef_test_support",
|
||||
]
|
||||
@@ -1668,6 +1596,16 @@ if (is_mac) {
|
||||
# ResourceBundle. See crbug.com/147663.
|
||||
"//ui/resources:ui_unscaled_resources_grd",
|
||||
]
|
||||
|
||||
# Delay-load as many DLLs as possible for sandbox and startup perf
|
||||
# improvements.
|
||||
configs += [ "//build/config/win:delayloads" ]
|
||||
|
||||
libs = [
|
||||
"comctl32.lib",
|
||||
# For D3D11_DECODER_PROFILE_H264_VLD_NOFGT.
|
||||
"dxguid.lib",
|
||||
]
|
||||
}
|
||||
|
||||
if (is_linux && !is_debug && !use_partition_alloc_as_malloc) {
|
||||
@@ -1879,7 +1817,7 @@ if (is_mac) {
|
||||
bundle_data("cefclient_resources_bundle_data") {
|
||||
sources = gypi_paths2.shared_sources_resources +
|
||||
gypi_paths2.cefclient_sources_resources + [
|
||||
"tests/cefclient/resources/mac/cefclient.icns",
|
||||
"tests/cefclient/mac/cefclient.icns",
|
||||
]
|
||||
|
||||
outputs = [
|
||||
@@ -1887,16 +1825,9 @@ if (is_mac) {
|
||||
]
|
||||
}
|
||||
|
||||
bundle_data("cefclient_resources_bundle_data_extensions_set_page_color") {
|
||||
sources = gypi_paths2.cefclient_sources_resources_extensions_set_page_color
|
||||
outputs = [
|
||||
"{{bundle_resources_dir}}/extensions/set_page_color/{{source_file_part}}",
|
||||
]
|
||||
}
|
||||
|
||||
bundle_data("cefclient_resources_bundle_data_english") {
|
||||
sources = [
|
||||
"tests/cefclient/resources/mac/English.lproj/InfoPlist.strings",
|
||||
"tests/cefclient/mac/English.lproj/InfoPlist.strings",
|
||||
]
|
||||
|
||||
outputs = [
|
||||
@@ -1906,7 +1837,7 @@ if (is_mac) {
|
||||
|
||||
mac_xib_bundle_data("cefclient_xibs") {
|
||||
sources = [
|
||||
"tests/cefclient/resources/mac/English.lproj/MainMenu.xib",
|
||||
"tests/cefclient/mac/English.lproj/MainMenu.xib",
|
||||
]
|
||||
|
||||
output_path = "{{bundle_resources_dir}}/English.lproj"
|
||||
@@ -1916,7 +1847,7 @@ if (is_mac) {
|
||||
# Necessary because the cef_framework target is testonly.
|
||||
testonly = true
|
||||
|
||||
helper_info_plist = "tests/cefclient/resources/mac/helper-Info.plist"
|
||||
helper_info_plist = "tests/cefclient/mac/helper-Info.plist.in"
|
||||
helper_sources = includes_common +
|
||||
includes_mac +
|
||||
gypi_paths2.includes_wrapper +
|
||||
@@ -1930,7 +1861,7 @@ if (is_mac) {
|
||||
"CEF_USE_SANDBOX",
|
||||
]
|
||||
|
||||
info_plist = "tests/cefclient/resources/mac/Info.plist"
|
||||
info_plist = "tests/cefclient/mac/Info.plist.in"
|
||||
sources = includes_common +
|
||||
includes_mac +
|
||||
gypi_paths2.includes_wrapper +
|
||||
@@ -1943,12 +1874,12 @@ if (is_mac) {
|
||||
gypi_paths2.cefclient_sources_mac
|
||||
deps = [
|
||||
":cefclient_resources_bundle_data",
|
||||
":cefclient_resources_bundle_data_extensions_set_page_color",
|
||||
":cefclient_resources_bundle_data_english",
|
||||
":cefclient_xibs",
|
||||
]
|
||||
frameworks = [
|
||||
"AppKit.framework",
|
||||
"IOSurface.framework",
|
||||
"OpenGL.framework",
|
||||
]
|
||||
defines = [
|
||||
@@ -1992,7 +1923,7 @@ if (is_mac) {
|
||||
# Necessary because the cef_framework target is testonly.
|
||||
testonly = true
|
||||
|
||||
helper_info_plist = "tests/cefsimple/mac/helper-Info.plist"
|
||||
helper_info_plist = "tests/cefsimple/mac/helper-Info.plist.in"
|
||||
helper_sources = includes_common +
|
||||
includes_mac +
|
||||
gypi_paths2.includes_wrapper +
|
||||
@@ -2002,7 +1933,7 @@ if (is_mac) {
|
||||
"CEF_USE_SANDBOX",
|
||||
]
|
||||
|
||||
info_plist = "tests/cefsimple/mac/Info.plist"
|
||||
info_plist = "tests/cefsimple/mac/Info.plist.in"
|
||||
sources = includes_common +
|
||||
includes_mac +
|
||||
gypi_paths2.includes_wrapper +
|
||||
@@ -2029,7 +1960,7 @@ if (is_mac) {
|
||||
|
||||
bundle_data("ceftests_resources_bundle_data") {
|
||||
sources = gypi_paths2.shared_sources_resources + [
|
||||
"tests/ceftests/resources/mac/ceftests.icns",
|
||||
"tests/ceftests/mac/ceftests.icns",
|
||||
]
|
||||
|
||||
outputs = [
|
||||
@@ -2039,7 +1970,7 @@ if (is_mac) {
|
||||
|
||||
bundle_data("ceftests_resources_bundle_data_english") {
|
||||
sources = [
|
||||
"tests/ceftests/resources/mac/English.lproj/InfoPlist.strings",
|
||||
"tests/ceftests/mac/English.lproj/InfoPlist.strings",
|
||||
]
|
||||
|
||||
outputs = [
|
||||
@@ -2049,7 +1980,7 @@ if (is_mac) {
|
||||
|
||||
mac_xib_bundle_data("ceftests_xibs") {
|
||||
sources = [
|
||||
"tests/ceftests/resources/mac/English.lproj/MainMenu.xib",
|
||||
"tests/ceftests/mac/English.lproj/MainMenu.xib",
|
||||
]
|
||||
output_path = "{{bundle_resources_dir}}/English.lproj"
|
||||
}
|
||||
@@ -2057,11 +1988,12 @@ if (is_mac) {
|
||||
cef_app("ceftests") {
|
||||
testonly = true
|
||||
|
||||
helper_info_plist = "tests/ceftests/resources/mac/helper-Info.plist"
|
||||
helper_info_plist = "tests/ceftests/mac/helper-Info.plist.in"
|
||||
helper_sources = gypi_paths2.shared_sources_common +
|
||||
gypi_paths2.shared_sources_renderer +
|
||||
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 = [
|
||||
":gtest_teamcity",
|
||||
"//testing/gtest",
|
||||
@@ -2074,7 +2006,7 @@ if (is_mac) {
|
||||
"CEF_TESTS_IN_SRC_DIRECTORY",
|
||||
]
|
||||
|
||||
info_plist = "tests/ceftests/resources/mac/Info.plist"
|
||||
info_plist = "tests/ceftests/mac/Info.plist.in"
|
||||
sources = includes_common +
|
||||
includes_mac +
|
||||
gypi_paths2.includes_wrapper +
|
||||
@@ -2132,11 +2064,6 @@ if (is_mac) {
|
||||
gypi_paths2.cefclient_sources_resources
|
||||
outputs = [ "${root_out_dir}/cefclient_files/{{source_file_part}}" ]
|
||||
}
|
||||
|
||||
copy("copy_cefclient_files_extensions_set_page_color") {
|
||||
sources = gypi_paths2.cefclient_sources_resources_extensions_set_page_color
|
||||
outputs = [ "${root_out_dir}/cefclient_files/extensions/set_page_color/{{source_file_part}}" ]
|
||||
}
|
||||
}
|
||||
|
||||
executable("cefclient") {
|
||||
@@ -2164,12 +2091,17 @@ if (is_mac) {
|
||||
if (is_win) {
|
||||
sources += includes_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.
|
||||
configs -= [ "//build/config/win:console" ]
|
||||
configs += [ "//build/config/win:windowed" ]
|
||||
|
||||
# Delay-load as many DLLs as possible for sandbox and startup perf
|
||||
# improvements.
|
||||
configs += [ "//build/config/win:delayloads" ]
|
||||
|
||||
defines += [
|
||||
"CEF_USE_ATL",
|
||||
]
|
||||
@@ -2190,8 +2122,13 @@ if (is_mac) {
|
||||
|
||||
if (target_cpu != "arm64") {
|
||||
libs += [
|
||||
"glu32.lib",
|
||||
"opengl32.lib",
|
||||
"glu32.lib"
|
||||
]
|
||||
ldflags = [
|
||||
"/DELAYLOAD:glu32.dll",
|
||||
"/DELAYLOAD:oleaut32.dll",
|
||||
"/DELAYLOAD:opengl32.dll",
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -2203,7 +2140,6 @@ if (is_mac) {
|
||||
|
||||
deps += [
|
||||
":copy_cefclient_files",
|
||||
":copy_cefclient_files_extensions_set_page_color",
|
||||
]
|
||||
|
||||
libs = [
|
||||
@@ -2252,12 +2188,17 @@ if (is_mac) {
|
||||
|
||||
if (is_win) {
|
||||
sources += includes_win +
|
||||
gypi_paths2.cefsimple_sources_win
|
||||
gypi_paths2.cefsimple_sources_win +
|
||||
gypi_paths2.cefsimple_sources_resources_win_rc
|
||||
|
||||
# Set /SUBSYSTEM:WINDOWS.
|
||||
configs -= [ "//build/config/win:console" ]
|
||||
configs += [ "//build/config/win:windowed" ]
|
||||
|
||||
# Delay-load as many DLLs as possible for sandbox and startup perf
|
||||
# improvements.
|
||||
configs += [ "//build/config/win:delayloads" ]
|
||||
|
||||
deps += [
|
||||
":cef_sandbox",
|
||||
"//build/win:default_exe_manifest",
|
||||
@@ -2323,7 +2264,12 @@ if (is_mac) {
|
||||
|
||||
if (is_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
|
||||
# improvements.
|
||||
configs += [ "//build/config/win:delayloads" ]
|
||||
|
||||
deps += [
|
||||
":cef_sandbox",
|
||||
|
@@ -7,6 +7,6 @@
|
||||
# https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding
|
||||
|
||||
{
|
||||
'chromium_checkout': 'refs/tags/114.0.5735.201',
|
||||
'depot_tools_checkout': '7ee8e6c7cb'
|
||||
'chromium_checkout': 'refs/tags/130.0.6723.117',
|
||||
'depot_tools_checkout': 'c22f4dc74f'
|
||||
}
|
||||
|
@@ -27,17 +27,8 @@
|
||||
# Files in the chromium/src directory that should be evaluated for changes.
|
||||
# Similar changes may need to be applied to the CEF source code.
|
||||
'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/permissions/request_type.h',
|
||||
'content/browser/renderer_host/render_widget_host_view_base.*',
|
||||
'content/public/browser/content_browser_client.*',
|
||||
'content/public/browser/render_widget_host_view.h',
|
||||
|
@@ -12,7 +12,7 @@
|
||||
# distribution include:
|
||||
#
|
||||
# Linux: Ninja, GCC 7.5.0+, Unix Makefiles
|
||||
# MacOS: Ninja, Xcode 12.2 to 13.0
|
||||
# MacOS: Ninja, Xcode 12.2 to 15.0
|
||||
# Windows: Ninja, Visual Studio 2022
|
||||
#
|
||||
# Ninja is a cross-platform open-source tool for running fast builds using
|
||||
@@ -36,7 +36,7 @@
|
||||
#
|
||||
# The below requirements must be met to build this CEF binary distribution.
|
||||
#
|
||||
# - CMake version 3.19 or newer.
|
||||
# - CMake version 3.21 or newer.
|
||||
#
|
||||
# - Linux requirements:
|
||||
# Currently supported distributions include Debian 10 (Buster), Ubuntu 18
|
||||
@@ -48,10 +48,9 @@
|
||||
# libgtk3.0-dev (required by the cefclient target only)
|
||||
#
|
||||
# - MacOS requirements:
|
||||
# Xcode 12.2 to 13.4 building on MacOS 10.15.4 (Catalina) or newer. Only
|
||||
# 64-bit builds are supported. The Xcode command-line tools must also be
|
||||
# installed. Newer Xcode versions may not have been been tested and are not
|
||||
# recommended.
|
||||
# Xcode 12.2 to 15.4 building on MacOS 11.0 (Big Sur) or newer. The Xcode
|
||||
# command-line tools must also be installed. Newer Xcode versions may not have
|
||||
# been been tested and are not recommended.
|
||||
#
|
||||
# - Windows requirements:
|
||||
# Visual Studio 2022 building on Windows 10 or newer. Windows 10/11 64-bit is
|
||||
@@ -143,7 +142,7 @@ set(CMAKE_CONFIGURATION_TYPES Debug Release)
|
||||
project(cef)
|
||||
|
||||
# Use folders in the resulting project files.
|
||||
set_property(GLOBAL PROPERTY OS_FOLDERS ON)
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
|
||||
#
|
||||
@@ -240,16 +239,18 @@ PRINT_CEF_CONFIG()
|
||||
# Define the API documentation target.
|
||||
#
|
||||
|
||||
find_package(Doxygen)
|
||||
if(DOXYGEN_FOUND)
|
||||
add_custom_target(apidocs ALL
|
||||
# Generate documentation in the docs/html directory.
|
||||
COMMAND "${DOXYGEN_EXECUTABLE}" Doxyfile
|
||||
# Write a docs/index.html file.
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "<html><head><meta http-equiv=\"refresh\" content=\"0;URL='html/index.html'\"/></head></html>" > docs/index.html
|
||||
WORKING_DIRECTORY "${CEF_ROOT}"
|
||||
COMMENT "Generating API documentation with Doxygen..."
|
||||
VERBATIM )
|
||||
else()
|
||||
message(WARNING "Doxygen must be installed to generate API documentation.")
|
||||
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile")
|
||||
find_package(Doxygen)
|
||||
if(DOXYGEN_FOUND)
|
||||
add_custom_target(apidocs ALL
|
||||
# Generate documentation in the docs/html directory.
|
||||
COMMAND "${DOXYGEN_EXECUTABLE}" Doxyfile
|
||||
# Write a docs/index.html file.
|
||||
COMMAND ${CMAKE_COMMAND} -E echo "<html><head><meta http-equiv=\"refresh\" content=\"0;URL='html/index.html'\"/></head></html>" > docs/index.html
|
||||
WORKING_DIRECTORY "${CEF_ROOT}"
|
||||
COMMENT "Generating API documentation with Doxygen..."
|
||||
VERBATIM )
|
||||
else()
|
||||
message(WARNING "Doxygen must be installed to generate API documentation.")
|
||||
endif()
|
||||
endif()
|
||||
|
@@ -49,6 +49,7 @@ The base CEF framework includes support for the C and C++ programming languages.
|
||||
* Delphi - https://github.com/hgourvest/dcef3
|
||||
* Delphi - https://github.com/salvadordf/CEF4Delphi
|
||||
* Go - https://github.com/CzarekTomczak/cef2go
|
||||
* Go - https://github.com/energye/energy
|
||||
* Java - https://bitbucket.org/chromiumembedded/java-cef
|
||||
* Python - http://code.google.com/p/cefpython/
|
||||
|
||||
|
8
bazel/BUILD.bazel
Normal file
8
bazel/BUILD.bazel
Normal file
@@ -0,0 +1,8 @@
|
||||
# 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",
|
||||
])
|
65
bazel/copy_filegroups.bzl
Normal file
65
bazel/copy_filegroups.bzl
Normal file
@@ -0,0 +1,65 @@
|
||||
# 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 = ""),
|
||||
},
|
||||
)
|
||||
|
90
bazel/library_helpers.bzl
Normal file
90
bazel/library_helpers.bzl
Normal file
@@ -0,0 +1,90 @@
|
||||
# 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
|
||||
)
|
8
bazel/linux/BUILD.bazel
Executable file
8
bazel/linux/BUILD.bazel
Executable file
@@ -0,0 +1,8 @@
|
||||
# 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",
|
||||
])
|
63
bazel/linux/exe_helpers.bzl
Executable file
63
bazel/linux/exe_helpers.bzl
Executable file
@@ -0,0 +1,63 @@
|
||||
# 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"],
|
||||
)
|
||||
|
41
bazel/linux/fix_rpath.bzl
Normal file
41
bazel/linux/fix_rpath.bzl
Normal file
@@ -0,0 +1,41 @@
|
||||
# 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),
|
||||
},
|
||||
)
|
||||
|
7
bazel/linux/pkg_config/BUILD.bazel
Normal file
7
bazel/linux/pkg_config/BUILD.bazel
Normal file
@@ -0,0 +1,7 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
exports_files([
|
||||
"pkg_config.bzl",
|
||||
"BUILD.tmpl",
|
||||
])
|
||||
|
32
bazel/linux/pkg_config/BUILD.tmpl
Normal file
32
bazel/linux/pkg_config/BUILD.tmpl
Normal file
@@ -0,0 +1,32 @@
|
||||
# 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}",
|
||||
)
|
||||
|
11
bazel/linux/pkg_config/README.cef
Normal file
11
bazel/linux/pkg_config/README.cef
Normal file
@@ -0,0 +1,11 @@
|
||||
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.
|
||||
|
2
bazel/linux/pkg_config/WORKSPACE
Normal file
2
bazel/linux/pkg_config/WORKSPACE
Normal file
@@ -0,0 +1,2 @@
|
||||
workspace(name = "pkg_config")
|
||||
|
194
bazel/linux/pkg_config/pkg_config.bzl
Normal file
194
bazel/linux/pkg_config/pkg_config.bzl
Normal file
@@ -0,0 +1,194 @@
|
||||
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,
|
||||
)
|
||||
|
68
bazel/linux/variables.bzl
Executable file
68
bazel/linux/variables.bzl
Executable file
@@ -0,0 +1,68 @@
|
||||
# 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",
|
||||
]
|
||||
|
8
bazel/mac/BUILD.bazel
Normal file
8
bazel/mac/BUILD.bazel
Normal file
@@ -0,0 +1,8 @@
|
||||
# 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",
|
||||
])
|
113
bazel/mac/app_helpers.bzl
Normal file
113
bazel/mac/app_helpers.bzl
Normal file
@@ -0,0 +1,113 @@
|
||||
# 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,
|
||||
)
|
52
bazel/mac/variables.bzl
Normal file
52
bazel/mac/variables.bzl
Normal file
@@ -0,0 +1,52 @@
|
||||
# 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",
|
||||
]
|
8
bazel/win/BUILD.bazel
Normal file
8
bazel/win/BUILD.bazel
Normal file
@@ -0,0 +1,8 @@
|
||||
# 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",
|
||||
])
|
33
bazel/win/cc_env.bzl
Normal file
33
bazel/win/cc_env.bzl
Normal file
@@ -0,0 +1,33 @@
|
||||
# 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
|
82
bazel/win/exe_helpers.bzl
Normal file
82
bazel/win/exe_helpers.bzl
Normal file
@@ -0,0 +1,82 @@
|
||||
# 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"],
|
||||
)
|
72
bazel/win/mt.bzl
Normal file
72
bazel/win/mt.bzl
Normal file
@@ -0,0 +1,72 @@
|
||||
# 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(),
|
||||
)
|
50
bazel/win/rc.bzl
Normal file
50
bazel/win/rc.bzl
Normal file
@@ -0,0 +1,50 @@
|
||||
# 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(),
|
||||
)
|
124
bazel/win/setup_sdk.bzl
Normal file
124
bazel/win/setup_sdk.bzl
Normal file
@@ -0,0 +1,124 @@
|
||||
# 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,
|
||||
)
|
199
bazel/win/variables.bzl
Normal file
199
bazel/win/variables.bzl
Normal file
@@ -0,0 +1,199 @@
|
||||
# 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",
|
||||
]
|
69
bazel/win/wrapper.py.tpl
Normal file
69
bazel/win/wrapper.py.tpl
Normal file
@@ -0,0 +1,69 @@
|
||||
# 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
|
@@ -1,2 +1,2 @@
|
||||
@echo off
|
||||
python.bat tools\gclient_hook.py
|
||||
python3.bat tools\gclient_hook.py
|
||||
|
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2023 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
|
||||
# can be found in the LICENSE file.
|
||||
#
|
||||
@@ -8,7 +8,7 @@
|
||||
# by hand. See the translator.README.txt file in the tools directory for
|
||||
# more information.
|
||||
#
|
||||
# $hash=ab931540f6f4d80336123acea6cf51e701f5a63a$
|
||||
# $hash=e092ed49124ef5969b2052fd6ae5f6e6d89390ba$
|
||||
#
|
||||
|
||||
{
|
||||
@@ -35,8 +35,6 @@
|
||||
'include/cef_download_item.h',
|
||||
'include/cef_drag_data.h',
|
||||
'include/cef_drag_handler.h',
|
||||
'include/cef_extension.h',
|
||||
'include/cef_extension_handler.h',
|
||||
'include/cef_file_util.h',
|
||||
'include/cef_find_handler.h',
|
||||
'include/cef_focus_handler.h',
|
||||
@@ -83,8 +81,10 @@
|
||||
'include/cef_stream.h',
|
||||
'include/cef_string_visitor.h',
|
||||
'include/cef_task.h',
|
||||
'include/cef_task_manager.h',
|
||||
'include/cef_thread.h',
|
||||
'include/cef_trace.h',
|
||||
'include/cef_unresponsive_process_callback.h',
|
||||
'include/cef_urlrequest.h',
|
||||
'include/cef_v8.h',
|
||||
'include/cef_values.h',
|
||||
@@ -139,8 +139,6 @@
|
||||
'include/capi/cef_download_item_capi.h',
|
||||
'include/capi/cef_drag_data_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_find_handler_capi.h',
|
||||
'include/capi/cef_focus_handler_capi.h',
|
||||
@@ -187,8 +185,10 @@
|
||||
'include/capi/cef_stream_capi.h',
|
||||
'include/capi/cef_string_visitor_capi.h',
|
||||
'include/capi/cef_task_capi.h',
|
||||
'include/capi/cef_task_manager_capi.h',
|
||||
'include/capi/cef_thread_capi.h',
|
||||
'include/capi/cef_trace_capi.h',
|
||||
'include/capi/cef_unresponsive_process_callback_capi.h',
|
||||
'include/capi/cef_urlrequest_capi.h',
|
||||
'include/capi/cef_v8_capi.h',
|
||||
'include/capi/cef_values_capi.h',
|
||||
@@ -302,10 +302,6 @@
|
||||
'libcef_dll/ctocpp/drag_handler_ctocpp.h',
|
||||
'libcef_dll/ctocpp/end_tracing_callback_ctocpp.cc',
|
||||
'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.h',
|
||||
'libcef_dll/cpptoc/views/fill_layout_cpptoc.cc',
|
||||
@@ -318,8 +314,6 @@
|
||||
'libcef_dll/cpptoc/frame_cpptoc.h',
|
||||
'libcef_dll/ctocpp/frame_handler_ctocpp.cc',
|
||||
'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.h',
|
||||
'libcef_dll/cpptoc/jsdialog_callback_cpptoc.cc',
|
||||
@@ -468,6 +462,8 @@
|
||||
'libcef_dll/ctocpp/string_visitor_ctocpp.h',
|
||||
'libcef_dll/ctocpp/task_ctocpp.cc',
|
||||
'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.h',
|
||||
'libcef_dll/cpptoc/test/test_server_cpptoc.cc',
|
||||
@@ -508,6 +504,8 @@
|
||||
'libcef_dll/cpptoc/urlrequest_cpptoc.h',
|
||||
'libcef_dll/ctocpp/urlrequest_client_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/urlrequest_client_ctocpp.h',
|
||||
'libcef_dll/cpptoc/unresponsive_process_callback_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/unresponsive_process_callback_cpptoc.h',
|
||||
'libcef_dll/ctocpp/v8accessor_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/v8accessor_ctocpp.h',
|
||||
'libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.cc',
|
||||
@@ -630,10 +628,6 @@
|
||||
'libcef_dll/cpptoc/drag_handler_cpptoc.h',
|
||||
'libcef_dll/cpptoc/end_tracing_callback_cpptoc.cc',
|
||||
'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.h',
|
||||
'libcef_dll/ctocpp/views/fill_layout_ctocpp.cc',
|
||||
@@ -646,8 +640,6 @@
|
||||
'libcef_dll/ctocpp/frame_ctocpp.h',
|
||||
'libcef_dll/cpptoc/frame_handler_cpptoc.cc',
|
||||
'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.h',
|
||||
'libcef_dll/ctocpp/jsdialog_callback_ctocpp.cc',
|
||||
@@ -796,6 +788,8 @@
|
||||
'libcef_dll/cpptoc/string_visitor_cpptoc.h',
|
||||
'libcef_dll/cpptoc/task_cpptoc.cc',
|
||||
'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.h',
|
||||
'libcef_dll/ctocpp/test/test_server_ctocpp.cc',
|
||||
@@ -836,6 +830,8 @@
|
||||
'libcef_dll/ctocpp/urlrequest_ctocpp.h',
|
||||
'libcef_dll/cpptoc/urlrequest_client_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/urlrequest_client_cpptoc.h',
|
||||
'libcef_dll/ctocpp/unresponsive_process_callback_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/unresponsive_process_callback_ctocpp.h',
|
||||
'libcef_dll/cpptoc/v8accessor_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/v8accessor_cpptoc.h',
|
||||
'libcef_dll/cpptoc/v8array_buffer_release_callback_cpptoc.cc',
|
||||
|
103
cef_paths2.gypi
103
cef_paths2.gypi
@@ -8,7 +8,6 @@
|
||||
'include/base/cef_atomic_flag.h',
|
||||
'include/base/cef_atomic_ref_count.h',
|
||||
'include/base/cef_auto_reset.h',
|
||||
'include/base/cef_basictypes.h',
|
||||
'include/base/cef_bind.h',
|
||||
'include/base/cef_build.h',
|
||||
'include/base/cef_callback.h',
|
||||
@@ -17,20 +16,20 @@
|
||||
'include/base/cef_callback_list.h',
|
||||
'include/base/cef_cancelable_callback.h',
|
||||
'include/base/cef_compiler_specific.h',
|
||||
'include/base/cef_dump_without_crashing.h',
|
||||
'include/base/cef_lock.h',
|
||||
'include/base/cef_logging.h',
|
||||
'include/base/cef_macros.h',
|
||||
'include/base/cef_platform_thread.h',
|
||||
'include/base/cef_ptr_util.h',
|
||||
'include/base/cef_ref_counted.h',
|
||||
'include/base/cef_scoped_refptr.h',
|
||||
'include/base/cef_template_util.h',
|
||||
'include/base/cef_thread_checker.h',
|
||||
'include/base/cef_trace_event.h',
|
||||
'include/base/cef_tuple.h',
|
||||
'include/base/cef_weak_ptr.h',
|
||||
'include/base/internal/cef_bind_internal.h',
|
||||
'include/base/internal/cef_callback_internal.h',
|
||||
'include/base/internal/cef_color_id_macros.inc',
|
||||
'include/base/internal/cef_lock_impl.h',
|
||||
'include/base/internal/cef_raw_scoped_refptr_mismatch_checker.h',
|
||||
'include/base/internal/cef_scoped_policy.h',
|
||||
@@ -45,6 +44,7 @@
|
||||
'include/internal/cef_types_wrappers.h',
|
||||
],
|
||||
'includes_common_capi': [
|
||||
'include/internal/cef_dump_without_crashing_internal.h',
|
||||
'include/internal/cef_logging_internal.h',
|
||||
'include/internal/cef_string.h',
|
||||
'include/internal/cef_string_list.h',
|
||||
@@ -55,7 +55,10 @@
|
||||
'include/internal/cef_time.h',
|
||||
'include/internal/cef_trace_event_internal.h',
|
||||
'include/internal/cef_types.h',
|
||||
'include/internal/cef_types_content_settings.h',
|
||||
'include/internal/cef_types_geometry.h',
|
||||
'include/internal/cef_types_runtime.h',
|
||||
'include/internal/cef_types_color.h',
|
||||
],
|
||||
'includes_capi': [
|
||||
'include/capi/cef_base_capi.h',
|
||||
@@ -122,6 +125,7 @@
|
||||
'libcef_dll/base/cef_atomic_flag.cc',
|
||||
'libcef_dll/base/cef_callback_helpers.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_impl.cc',
|
||||
'libcef_dll/base/cef_logging.cc',
|
||||
@@ -148,6 +152,8 @@
|
||||
'libcef_dll/wrapper/cef_byte_read_handler.cc',
|
||||
'libcef_dll/wrapper/cef_closure_task.cc',
|
||||
'libcef_dll/wrapper/cef_message_router.cc',
|
||||
'libcef_dll/wrapper/cef_message_router_utils.cc',
|
||||
'libcef_dll/wrapper/cef_message_router_utils.h',
|
||||
'libcef_dll/wrapper/cef_resource_manager.cc',
|
||||
'libcef_dll/wrapper/cef_scoped_temp_dir.cc',
|
||||
'libcef_dll/wrapper/cef_stream_resource_handler.cc',
|
||||
@@ -163,8 +169,6 @@
|
||||
'shared_sources_browser': [
|
||||
'tests/shared/browser/client_app_browser.cc',
|
||||
'tests/shared/browser/client_app_browser.h',
|
||||
'tests/shared/browser/extension_util.cc',
|
||||
'tests/shared/browser/extension_util.h',
|
||||
'tests/shared/browser/file_util.cc',
|
||||
'tests/shared/browser/file_util.h',
|
||||
'tests/shared/browser/geometry_util.cc',
|
||||
@@ -219,6 +223,10 @@
|
||||
'tests/shared/browser/util_win.h',
|
||||
],
|
||||
'cefclient_sources_browser': [
|
||||
'tests/cefclient/browser/base_client_handler.cc',
|
||||
'tests/cefclient/browser/base_client_handler.h',
|
||||
'tests/cefclient/browser/binary_transfer_test.cc',
|
||||
'tests/cefclient/browser/binary_transfer_test.h',
|
||||
'tests/cefclient/browser/binding_test.cc',
|
||||
'tests/cefclient/browser/binding_test.h',
|
||||
'tests/cefclient/browser/browser_window.cc',
|
||||
@@ -241,6 +249,8 @@
|
||||
'tests/cefclient/browser/default_client_handler.h',
|
||||
'tests/cefclient/browser/dialog_test.cc',
|
||||
'tests/cefclient/browser/dialog_test.h',
|
||||
'tests/cefclient/browser/hang_test.cc',
|
||||
'tests/cefclient/browser/hang_test.h',
|
||||
'tests/cefclient/browser/image_cache.cc',
|
||||
'tests/cefclient/browser/image_cache.h',
|
||||
'tests/cefclient/browser/main_context.cc',
|
||||
@@ -269,6 +279,8 @@
|
||||
'tests/cefclient/browser/scheme_test.h',
|
||||
'tests/cefclient/browser/server_test.cc',
|
||||
'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/test_runner.cc',
|
||||
'tests/cefclient/browser/test_runner.h',
|
||||
@@ -276,6 +288,8 @@
|
||||
'tests/cefclient/browser/urlrequest_test.h',
|
||||
'tests/cefclient/browser/views_menu_bar.cc',
|
||||
'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.h',
|
||||
'tests/cefclient/browser/views_style.cc',
|
||||
@@ -306,9 +320,11 @@
|
||||
'tests/cefclient/renderer/performance_test_tests.cc',
|
||||
],
|
||||
'cefclient_sources_resources': [
|
||||
'tests/cefclient/resources/binary_transfer.html',
|
||||
'tests/cefclient/resources/binding.html',
|
||||
'tests/cefclient/resources/dialogs.html',
|
||||
'tests/cefclient/resources/draggable.html',
|
||||
'tests/cefclient/resources/hang.html',
|
||||
'tests/cefclient/resources/ipc_performance.html',
|
||||
'tests/cefclient/resources/localstorage.html',
|
||||
'tests/cefclient/resources/logo.png',
|
||||
@@ -321,19 +337,13 @@
|
||||
'tests/cefclient/resources/preferences.html',
|
||||
'tests/cefclient/resources/response_filter.html',
|
||||
'tests/cefclient/resources/server.html',
|
||||
'tests/cefclient/resources/task_manager.html',
|
||||
'tests/cefclient/resources/transparency.html',
|
||||
'tests/cefclient/resources/urlrequest.html',
|
||||
'tests/cefclient/resources/websocket.html',
|
||||
'tests/cefclient/resources/window.html',
|
||||
'tests/cefclient/resources/xmlhttprequest.html',
|
||||
],
|
||||
'cefclient_sources_resources_extensions_set_page_color': [
|
||||
'tests/cefclient/resources/extensions/set_page_color/icon.png',
|
||||
'tests/cefclient/resources/extensions/set_page_color/manifest.json',
|
||||
'tests/cefclient/resources/extensions/set_page_color/popup.html',
|
||||
'tests/cefclient/resources/extensions/set_page_color/popup.js',
|
||||
'tests/cefclient/resources/extensions/set_page_color/README.md',
|
||||
],
|
||||
'cefclient_sources_win': [
|
||||
'tests/cefclient/browser/browser_window_osr_win.cc',
|
||||
'tests/cefclient/browser/browser_window_osr_win.h',
|
||||
@@ -369,12 +379,14 @@
|
||||
'tests/cefclient/browser/window_test_runner_win.cc',
|
||||
'tests/cefclient/browser/window_test_runner_win.h',
|
||||
'tests/cefclient/cefclient_win.cc',
|
||||
'tests/cefclient/resources/win/cefclient.rc',
|
||||
],
|
||||
'cefclient_sources_resources_win': [
|
||||
'tests/cefclient/resources/win/cefclient.exe.manifest',
|
||||
'tests/cefclient/resources/win/cefclient.ico',
|
||||
'tests/cefclient/resources/win/small.ico',
|
||||
'tests/cefclient/win/cefclient.exe.manifest',
|
||||
'tests/cefclient/win/cefclient.ico',
|
||||
'tests/cefclient/win/small.ico',
|
||||
],
|
||||
'cefclient_sources_resources_win_rc': [
|
||||
'tests/cefclient/win/cefclient.rc',
|
||||
],
|
||||
'cefclient_sources_mac': [
|
||||
'tests/cefclient/browser/browser_window_osr_mac.h',
|
||||
@@ -397,12 +409,12 @@
|
||||
'tests/cefclient/browser/window_test_runner_mac.h',
|
||||
'tests/cefclient/browser/window_test_runner_mac.mm',
|
||||
'tests/cefclient/cefclient_mac.mm',
|
||||
],
|
||||
],
|
||||
'cefclient_bundle_resources_mac': [
|
||||
'tests/cefclient/resources/mac/cefclient.icns',
|
||||
'tests/cefclient/resources/mac/English.lproj/InfoPlist.strings',
|
||||
'tests/cefclient/resources/mac/English.lproj/MainMenu.xib',
|
||||
'tests/cefclient/resources/mac/Info.plist',
|
||||
'tests/cefclient/mac/cefclient.icns',
|
||||
'tests/cefclient/mac/English.lproj/InfoPlist.strings',
|
||||
'tests/cefclient/mac/English.lproj/MainMenu.xib',
|
||||
'tests/cefclient/mac/Info.plist.in',
|
||||
],
|
||||
'cefclient_sources_linux': [
|
||||
'tests/cefclient/browser/browser_window_osr_gtk.cc',
|
||||
@@ -434,15 +446,17 @@
|
||||
'tests/cefsimple/simple_handler.h',
|
||||
],
|
||||
'cefsimple_sources_win': [
|
||||
'tests/cefsimple/cefsimple.rc',
|
||||
'tests/cefsimple/cefsimple_win.cc',
|
||||
'tests/cefsimple/simple_handler_win.cc',
|
||||
'tests/cefsimple/resource.h',
|
||||
'tests/cefsimple/simple_handler_win.cc',
|
||||
],
|
||||
'cefsimple_sources_resources_win': [
|
||||
'tests/cefsimple/cefsimple.exe.manifest',
|
||||
'tests/cefsimple/res/cefsimple.ico',
|
||||
'tests/cefsimple/res/small.ico',
|
||||
'tests/cefsimple/win/cefsimple.exe.manifest',
|
||||
'tests/cefsimple/win/cefsimple.ico',
|
||||
'tests/cefsimple/win/small.ico',
|
||||
],
|
||||
'cefsimple_sources_resources_win_rc': [
|
||||
'tests/cefsimple/win/cefsimple.rc',
|
||||
],
|
||||
'cefsimple_sources_mac': [
|
||||
'tests/cefsimple/cefsimple_mac.mm',
|
||||
@@ -455,7 +469,7 @@
|
||||
'tests/cefsimple/mac/cefsimple.icns',
|
||||
'tests/cefsimple/mac/English.lproj/InfoPlist.strings',
|
||||
'tests/cefsimple/mac/English.lproj/MainMenu.xib',
|
||||
'tests/cefsimple/mac/Info.plist',
|
||||
'tests/cefsimple/mac/Info.plist.in',
|
||||
],
|
||||
'cefsimple_sources_linux': [
|
||||
'tests/cefsimple/cefsimple_linux.cc',
|
||||
@@ -480,13 +494,6 @@
|
||||
'tests/ceftests/dom_unittest.cc',
|
||||
'tests/ceftests/download_unittest.cc',
|
||||
'tests/ceftests/draggable_regions_unittest.cc',
|
||||
'tests/ceftests/extensions/background_unittest.cc',
|
||||
'tests/ceftests/extensions/chrome_alarms_unittest.cc',
|
||||
'tests/ceftests/extensions/chrome_storage_unittest.cc',
|
||||
'tests/ceftests/extensions/chrome_tabs_unittest.cc',
|
||||
'tests/ceftests/extensions/extension_test_handler.cc',
|
||||
'tests/ceftests/extensions/extension_test_handler.h',
|
||||
'tests/ceftests/extensions/view_unittest.cc',
|
||||
'tests/ceftests/file_util_unittest.cc',
|
||||
'tests/ceftests/frame_handler_unittest.cc',
|
||||
'tests/ceftests/frame_unittest.cc',
|
||||
@@ -497,6 +504,7 @@
|
||||
'tests/ceftests/jsdialog_unittest.cc',
|
||||
'tests/ceftests/life_span_unittest.cc',
|
||||
'tests/ceftests/media_access_unittest.cc',
|
||||
'tests/ceftests/message_router_binary_unittest.cc',
|
||||
'tests/ceftests/message_router_harness_unittest.cc',
|
||||
'tests/ceftests/message_router_multi_query_unittest.cc',
|
||||
'tests/ceftests/message_router_single_query_unittest.cc',
|
||||
@@ -579,24 +587,32 @@
|
||||
'ceftests_sources_win': [
|
||||
'tests/ceftests/resource_util_win_dir.cc',
|
||||
'tests/ceftests/resource_util_win_idmap.cc',
|
||||
'tests/ceftests/resources/win/ceftests.rc',
|
||||
],
|
||||
'ceftests_sources_resources_win': [
|
||||
'tests/ceftests/resources/win/ceftests.exe.manifest',
|
||||
'tests/ceftests/resources/win/ceftests.ico',
|
||||
'tests/ceftests/resources/win/small.ico',
|
||||
'tests/ceftests/win/ceftests.exe.manifest',
|
||||
'tests/ceftests/win/ceftests.ico',
|
||||
'tests/ceftests/win/small.ico',
|
||||
],
|
||||
'ceftests_sources_resources_win_rc': [
|
||||
'tests/ceftests/win/ceftests.rc',
|
||||
],
|
||||
'ceftests_sources_mac': [
|
||||
'tests/ceftests/os_rendering_unittest_mac.h',
|
||||
'tests/ceftests/os_rendering_unittest_mac.mm',
|
||||
'tests/ceftests/run_all_unittests_mac.mm',
|
||||
],
|
||||
'ceftests_sources_mac_helper': [
|
||||
'ceftests_sources_mac_browser_shared': [
|
||||
'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.h',
|
||||
'tests/shared/browser/resource_util.h',
|
||||
'tests/shared/browser/resource_util_mac.mm',
|
||||
'tests/shared/browser/resource_util_posix.cc',
|
||||
],
|
||||
'ceftests_sources_mac_helper': [
|
||||
'tests/ceftests/audio_output_unittest.cc',
|
||||
'tests/ceftests/client_app_delegates.cc',
|
||||
'tests/ceftests/cookie_unittest.cc',
|
||||
@@ -604,6 +620,7 @@
|
||||
'tests/ceftests/dom_unittest.cc',
|
||||
'tests/ceftests/frame_unittest.cc',
|
||||
'tests/ceftests/media_access_unittest.cc',
|
||||
'tests/ceftests/message_router_binary_unittest.cc',
|
||||
'tests/ceftests/message_router_harness_unittest.cc',
|
||||
'tests/ceftests/message_router_multi_query_unittest.cc',
|
||||
'tests/ceftests/message_router_single_query_unittest.cc',
|
||||
@@ -651,10 +668,10 @@
|
||||
'tests/ceftests/v8_unittest.cc',
|
||||
],
|
||||
'ceftests_bundle_resources_mac': [
|
||||
'tests/ceftests/resources/mac/ceftests.icns',
|
||||
'tests/ceftests/resources/mac/English.lproj/InfoPlist.strings',
|
||||
'tests/ceftests/resources/mac/English.lproj/MainMenu.xib',
|
||||
'tests/ceftests/resources/mac/Info.plist',
|
||||
'tests/ceftests/mac/ceftests.icns',
|
||||
'tests/ceftests/mac/English.lproj/InfoPlist.strings',
|
||||
'tests/ceftests/mac/English.lproj/MainMenu.xib',
|
||||
'tests/ceftests/mac/Info.plist.in',
|
||||
],
|
||||
'ceftests_sources_linux': [
|
||||
'tests/ceftests/resource_util_linux.cc',
|
||||
|
@@ -59,7 +59,7 @@ set(CEF_LIBCEF_DLL_WRAPPER_PATH "${_CEF_ROOT}/libcef_dll")
|
||||
|
||||
# Shared compiler/linker flags.
|
||||
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)
|
||||
__STDC_CONSTANT_MACROS __STDC_FORMAT_MACROS
|
||||
)
|
||||
@@ -304,13 +304,14 @@ if(OS_MAC)
|
||||
# Standard libraries.
|
||||
set(CEF_STANDARD_LIBS
|
||||
-lpthread
|
||||
"-framework Cocoa"
|
||||
"-framework AppKit"
|
||||
"-framework Cocoa"
|
||||
"-framework IOSurface"
|
||||
)
|
||||
|
||||
# Find the newest available base SDK.
|
||||
execute_process(COMMAND xcode-select --print-path OUTPUT_VARIABLE XCODE_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
foreach(OS_VERSION 10.15 10.14 10.13)
|
||||
foreach(OS_VERSION 14.2 14.0 11.0)
|
||||
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}")
|
||||
set(CMAKE_OSX_SYSROOT ${SDK})
|
||||
@@ -318,7 +319,7 @@ if(OS_MAC)
|
||||
endforeach()
|
||||
|
||||
# Target SDK.
|
||||
set(CEF_TARGET_SDK "10.13")
|
||||
set(CEF_TARGET_SDK "11.0")
|
||||
list(APPEND CEF_COMPILER_FLAGS
|
||||
-mmacosx-version-min=${CEF_TARGET_SDK}
|
||||
)
|
||||
@@ -436,6 +437,56 @@ if(OS_WINDOWS)
|
||||
list(APPEND CEF_EXE_LINKER_FLAGS
|
||||
/MANIFEST:NO # No default manifest (see ADD_WINDOWS_MANIFEST macro usage)
|
||||
/LARGEADDRESSAWARE # Allow 32-bit processes to access 3GB of RAM
|
||||
|
||||
# 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:api-ms-win-core-winrt-error-l1-1-0.dll
|
||||
/DELAYLOAD:api-ms-win-core-winrt-l1-1-0.dll
|
||||
/DELAYLOAD:api-ms-win-core-winrt-string-l1-1-0.dll
|
||||
/DELAYLOAD:advapi32.dll
|
||||
/DELAYLOAD:comctl32.dll
|
||||
/DELAYLOAD:comdlg32.dll
|
||||
/DELAYLOAD:credui.dll
|
||||
/DELAYLOAD:cryptui.dll
|
||||
/DELAYLOAD:d3d11.dll
|
||||
/DELAYLOAD:d3d9.dll
|
||||
/DELAYLOAD:dwmapi.dll
|
||||
/DELAYLOAD:dxgi.dll
|
||||
/DELAYLOAD:dxva2.dll
|
||||
/DELAYLOAD:esent.dll
|
||||
/DELAYLOAD:gdi32.dll
|
||||
/DELAYLOAD:hid.dll
|
||||
/DELAYLOAD:imagehlp.dll
|
||||
/DELAYLOAD:imm32.dll
|
||||
/DELAYLOAD:msi.dll
|
||||
/DELAYLOAD:netapi32.dll
|
||||
/DELAYLOAD:ncrypt.dll
|
||||
/DELAYLOAD:ole32.dll
|
||||
/DELAYLOAD:oleacc.dll
|
||||
/DELAYLOAD:propsys.dll
|
||||
/DELAYLOAD:psapi.dll
|
||||
/DELAYLOAD:rpcrt4.dll
|
||||
/DELAYLOAD:rstrtmgr.dll
|
||||
/DELAYLOAD:setupapi.dll
|
||||
/DELAYLOAD:shell32.dll
|
||||
/DELAYLOAD:shlwapi.dll
|
||||
/DELAYLOAD:uiautomationcore.dll
|
||||
/DELAYLOAD:urlmon.dll
|
||||
/DELAYLOAD:user32.dll
|
||||
/DELAYLOAD:usp10.dll
|
||||
/DELAYLOAD:uxtheme.dll
|
||||
/DELAYLOAD:wer.dll
|
||||
/DELAYLOAD:wevtapi.dll
|
||||
/DELAYLOAD:wininet.dll
|
||||
/DELAYLOAD:winusb.dll
|
||||
/DELAYLOAD:wsock32.dll
|
||||
/DELAYLOAD:wtsapi32.dll
|
||||
)
|
||||
list(APPEND CEF_COMPILER_DEFINES
|
||||
WIN32 _WIN32 _WINDOWS # Windows platform
|
||||
@@ -504,6 +555,13 @@ if(OS_WINDOWS)
|
||||
vulkan-1.dll
|
||||
)
|
||||
|
||||
if(PROJECT_ARCH STREQUAL "x86_64")
|
||||
list(APPEND CEF_BINARY_FILES
|
||||
dxil.dll
|
||||
dxcompiler.dll
|
||||
)
|
||||
endif()
|
||||
|
||||
# List of CEF resource files.
|
||||
set(CEF_RESOURCE_FILES
|
||||
chrome_100_percent.pak
|
||||
|
@@ -84,7 +84,6 @@
|
||||
|
||||
#include "include/base/cef_build.h"
|
||||
#include "include/base/cef_compiler_specific.h"
|
||||
#include "include/base/cef_template_util.h"
|
||||
#include "include/base/internal/cef_bind_internal.h"
|
||||
|
||||
#if defined(OS_APPLE) && !HAS_FEATURE(objc_arc)
|
||||
@@ -105,7 +104,7 @@ BindOnce(Functor&& functor, Args&&... args) {
|
||||
"BindOnce requires non-const rvalue for OnceCallback binding."
|
||||
" I.e.: base::BindOnce(std::move(callback)).");
|
||||
static_assert(
|
||||
conjunction<cef_internal::AssertBindArgIsNotBasePassed<
|
||||
std::conjunction<cef_internal::AssertBindArgIsNotBasePassed<
|
||||
std::decay_t<Args>>...>::value,
|
||||
"Use std::move() instead of base::Passed() with base::BindOnce()");
|
||||
|
||||
|
@@ -69,7 +69,24 @@
|
||||
#if defined(USING_CHROMIUM_INCLUDES)
|
||||
// When building CEF include the Chromium header directly.
|
||||
#include "build/build_config.h"
|
||||
#include "cef/libcef/features/features.h"
|
||||
|
||||
// The following #defines are used in cef/include/ headers and CEF client-side
|
||||
// code. CEF library-side code should use BUILDFLAG checks directly instead of
|
||||
// these #defines. CEF client-side code will get these #defines from
|
||||
// cef_config.h so any changes must also be reflected in
|
||||
// tools/make_config_header.py.
|
||||
|
||||
#if BUILDFLAG(IS_LINUX)
|
||||
#include "ui/base/ozone_buildflags.h"
|
||||
#if BUILDFLAG(IS_OZONE_X11)
|
||||
#define CEF_X11 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#else // !USING_CHROMIUM_INCLUDES
|
||||
#include "include/cef_config.h"
|
||||
|
||||
// The following is substantially similar to the Chromium implementation.
|
||||
// If the Chromium implementation diverges the below implementation should be
|
||||
// updated to match.
|
||||
@@ -232,19 +249,19 @@
|
||||
|
||||
// Type detection for wchar_t.
|
||||
#if defined(OS_WIN)
|
||||
#define WCHAR_T_IS_UTF16
|
||||
#define WCHAR_T_IS_16_BIT
|
||||
#elif defined(OS_FUCHSIA)
|
||||
#define WCHAR_T_IS_UTF32
|
||||
#define WCHAR_T_IS_32_BIT
|
||||
#elif defined(OS_POSIX) && defined(COMPILER_GCC) && defined(__WCHAR_MAX__) && \
|
||||
(__WCHAR_MAX__ == 0x7fffffff || __WCHAR_MAX__ == 0xffffffff)
|
||||
#define WCHAR_T_IS_UTF32
|
||||
#define WCHAR_T_IS_32_BIT
|
||||
#elif defined(OS_POSIX) && defined(COMPILER_GCC) && defined(__WCHAR_MAX__) && \
|
||||
(__WCHAR_MAX__ == 0x7fff || __WCHAR_MAX__ == 0xffff)
|
||||
// On Posix, we'll detect short wchar_t, but projects aren't guaranteed to
|
||||
// compile in this mode (in particular, Chrome doesn't). This is intended for
|
||||
// other projects using base who manage their own dependencies and make sure
|
||||
// short wchar works for them.
|
||||
#define WCHAR_T_IS_UTF16
|
||||
#define WCHAR_T_IS_16_BIT
|
||||
#else
|
||||
#error Please add support for your compiler in include/base/cef_build.h
|
||||
#endif
|
||||
@@ -253,7 +270,7 @@
|
||||
// The compiler thinks std::string::const_iterator and "const char*" are
|
||||
// equivalent types.
|
||||
#define STD_STRING_ITERATOR_IS_CHAR_POINTER
|
||||
// The compiler thinks std::u16string::const_iterator and "char16*" are
|
||||
// The compiler thinks std::u16string::const_iterator and "char16_t*" are
|
||||
// equivalent types.
|
||||
#define BASE_STRING16_ITERATOR_IS_CHAR16_POINTER
|
||||
#endif
|
||||
|
76
include/base/cef_dump_without_crashing.h
Normal file
76
include/base/cef_dump_without_crashing.h
Normal file
@@ -0,0 +1,76 @@
|
||||
// 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_
|
@@ -723,6 +723,13 @@ std::ostream& operator<<(std::ostream& out, const wchar_t* wstr);
|
||||
inline std::ostream& operator<<(std::ostream& out, const std::wstring& wstr) {
|
||||
return out << wstr.c_str();
|
||||
}
|
||||
#if defined(WCHAR_T_IS_32_BIT)
|
||||
std::ostream& operator<<(std::ostream& out, const char16_t* wstr);
|
||||
#elif defined(WCHAR_T_IS_16_BIT)
|
||||
inline std::ostream& operator<<(std::ostream& out, const char16_t* wstr) {
|
||||
return operator<<(out, reinterpret_cast<const wchar_t*>(wstr));
|
||||
}
|
||||
#endif
|
||||
|
||||
// The NOTIMPLEMENTED() macro annotates codepaths which have
|
||||
// not been implemented yet.
|
||||
|
@@ -43,7 +43,6 @@
|
||||
// If the Chromium implementation diverges the below implementation should be
|
||||
// updated to match.
|
||||
|
||||
#include "include/base/cef_basictypes.h"
|
||||
#include "include/base/cef_build.h"
|
||||
#include "include/internal/cef_thread_internal.h"
|
||||
|
||||
|
@@ -50,7 +50,6 @@
|
||||
#include "include/base/cef_compiler_specific.h"
|
||||
#include "include/base/cef_logging.h"
|
||||
#include "include/base/cef_scoped_refptr.h"
|
||||
#include "include/base/cef_template_util.h"
|
||||
#include "include/base/cef_thread_checker.h"
|
||||
|
||||
namespace base {
|
||||
@@ -485,7 +484,7 @@ class RefCountedData
|
||||
RefCountedData(const T& in_value) : data(in_value) {}
|
||||
RefCountedData(T&& in_value) : data(std::move(in_value)) {}
|
||||
template <typename... Args>
|
||||
explicit RefCountedData(in_place_t, Args&&... args)
|
||||
explicit RefCountedData(std::in_place_t, Args&&... args)
|
||||
: data(std::forward<Args>(args)...) {}
|
||||
|
||||
T data;
|
||||
|
@@ -1,417 +0,0 @@
|
||||
// Copyright (c) 2014 Marshall A. Greenblatt. Portions copyright (c) 2011
|
||||
// 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.
|
||||
|
||||
#ifndef CEF_INCLUDE_BASE_CEF_TEMPLATE_UTIL_H_
|
||||
#define CEF_INCLUDE_BASE_CEF_TEMPLATE_UTIL_H_
|
||||
#pragma once
|
||||
|
||||
#if defined(USING_CHROMIUM_INCLUDES)
|
||||
// When building CEF include the Chromium header directly.
|
||||
#include "base/template_util.h"
|
||||
#else // !USING_CHROMIUM_INCLUDES
|
||||
// The following is substantially similar to the Chromium implementation.
|
||||
// If the Chromium implementation diverges the below implementation should be
|
||||
// updated to match.
|
||||
|
||||
#include <stddef.h>
|
||||
#include <iosfwd>
|
||||
#include <iterator>
|
||||
#include <type_traits>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "include/base/cef_build.h"
|
||||
|
||||
// Some versions of libstdc++ have partial support for type_traits, but misses
|
||||
// a smaller subset while removing some of the older non-standard stuff. Assume
|
||||
// that all versions below 5.0 fall in this category, along with one 5.0
|
||||
// experimental release. Test for this by consulting compiler major version,
|
||||
// the only reliable option available, so theoretically this could fail should
|
||||
// you attempt to mix an earlier version of libstdc++ with >= GCC5. But
|
||||
// that's unlikely to work out, especially as GCC5 changed ABI.
|
||||
#define CR_GLIBCXX_5_0_0 20150123
|
||||
#if (defined(__GNUC__) && __GNUC__ < 5) || \
|
||||
(defined(__GLIBCXX__) && __GLIBCXX__ == CR_GLIBCXX_5_0_0)
|
||||
#define CR_USE_FALLBACKS_FOR_OLD_EXPERIMENTAL_GLIBCXX
|
||||
#endif
|
||||
|
||||
// This hacks around using gcc with libc++ which has some incompatibilies.
|
||||
// - is_trivially_* doesn't work: https://llvm.org/bugs/show_bug.cgi?id=27538
|
||||
// TODO(danakj): Remove this when android builders are all using a newer version
|
||||
// of gcc, or the android ndk is updated to a newer libc++ that works with older
|
||||
// gcc versions.
|
||||
#if !defined(__clang__) && defined(_LIBCPP_VERSION)
|
||||
#define CR_USE_FALLBACKS_FOR_GCC_WITH_LIBCXX
|
||||
#endif
|
||||
|
||||
namespace base {
|
||||
|
||||
template <class T>
|
||||
struct is_non_const_reference : std::false_type {};
|
||||
template <class T>
|
||||
struct is_non_const_reference<T&> : std::true_type {};
|
||||
template <class T>
|
||||
struct is_non_const_reference<const T&> : std::false_type {};
|
||||
|
||||
namespace internal {
|
||||
|
||||
// Implementation detail of base::void_t below.
|
||||
template <typename...>
|
||||
struct make_void {
|
||||
using type = void;
|
||||
};
|
||||
|
||||
} // namespace internal
|
||||
|
||||
// base::void_t is an implementation of std::void_t from C++17.
|
||||
//
|
||||
// We use |base::internal::make_void| as a helper struct to avoid a C++14
|
||||
// defect:
|
||||
// http://en.cppreference.com/w/cpp/types/void_t
|
||||
// http://open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#1558
|
||||
template <typename... Ts>
|
||||
using void_t = typename ::base::internal::make_void<Ts...>::type;
|
||||
|
||||
namespace internal {
|
||||
|
||||
// Uses expression SFINAE to detect whether using operator<< would work.
|
||||
template <typename T, typename = void>
|
||||
struct SupportsOstreamOperator : std::false_type {};
|
||||
template <typename T>
|
||||
struct SupportsOstreamOperator<T,
|
||||
decltype(void(std::declval<std::ostream&>()
|
||||
<< std::declval<T>()))>
|
||||
: std::true_type {};
|
||||
|
||||
template <typename T, typename = void>
|
||||
struct SupportsToString : std::false_type {};
|
||||
template <typename T>
|
||||
struct SupportsToString<T, decltype(void(std::declval<T>().ToString()))>
|
||||
: std::true_type {};
|
||||
|
||||
// Used to detect whether the given type is an iterator. This is normally used
|
||||
// with std::enable_if to provide disambiguation for functions that take
|
||||
// templatzed iterators as input.
|
||||
template <typename T, typename = void>
|
||||
struct is_iterator : std::false_type {};
|
||||
|
||||
template <typename T>
|
||||
struct is_iterator<T,
|
||||
void_t<typename std::iterator_traits<T>::iterator_category>>
|
||||
: std::true_type {};
|
||||
|
||||
// Helper to express preferences in an overload set. If more than one overload
|
||||
// are available for a given set of parameters the overload with the higher
|
||||
// priority will be chosen.
|
||||
template <size_t I>
|
||||
struct priority_tag : priority_tag<I - 1> {};
|
||||
|
||||
template <>
|
||||
struct priority_tag<0> {};
|
||||
|
||||
} // namespace internal
|
||||
|
||||
// is_trivially_copyable is especially hard to get right.
|
||||
// - Older versions of libstdc++ will fail to have it like they do for other
|
||||
// type traits. This has become a subset of the second point, but used to be
|
||||
// handled independently.
|
||||
// - An experimental release of gcc includes most of type_traits but misses
|
||||
// is_trivially_copyable, so we still have to avoid using libstdc++ in this
|
||||
// case, which is covered by CR_USE_FALLBACKS_FOR_OLD_EXPERIMENTAL_GLIBCXX.
|
||||
// - When compiling libc++ from before r239653, with a gcc compiler, the
|
||||
// std::is_trivially_copyable can fail. So we need to work around that by not
|
||||
// using the one in libc++ in this case. This is covered by the
|
||||
// CR_USE_FALLBACKS_FOR_GCC_WITH_LIBCXX define, and is discussed in
|
||||
// https://llvm.org/bugs/show_bug.cgi?id=27538#c1 where they point out that
|
||||
// in libc++'s commit r239653 this is fixed by libc++ checking for gcc 5.1.
|
||||
// - In both of the above cases we are using the gcc compiler. When defining
|
||||
// this ourselves on compiler intrinsics, the __is_trivially_copyable()
|
||||
// intrinsic is not available on gcc before version 5.1 (see the discussion in
|
||||
// https://llvm.org/bugs/show_bug.cgi?id=27538#c1 again), so we must check for
|
||||
// that version.
|
||||
// - When __is_trivially_copyable() is not available because we are on gcc older
|
||||
// than 5.1, we need to fall back to something, so we use __has_trivial_copy()
|
||||
// instead based on what was done one-off in bit_cast() previously.
|
||||
|
||||
// TODO(crbug.com/554293): Remove this when all platforms have this in the std
|
||||
// namespace and it works with gcc as needed.
|
||||
#if defined(CR_USE_FALLBACKS_FOR_OLD_EXPERIMENTAL_GLIBCXX) || \
|
||||
defined(CR_USE_FALLBACKS_FOR_GCC_WITH_LIBCXX)
|
||||
template <typename T>
|
||||
struct is_trivially_copyable {
|
||||
// TODO(danakj): Remove this when android builders are all using a newer version
|
||||
// of gcc, or the android ndk is updated to a newer libc++ that does this for
|
||||
// us.
|
||||
#if _GNUC_VER >= 501
|
||||
static constexpr bool value = __is_trivially_copyable(T);
|
||||
#else
|
||||
static constexpr bool value =
|
||||
__has_trivial_copy(T) && __has_trivial_destructor(T);
|
||||
#endif
|
||||
};
|
||||
#else
|
||||
template <class T>
|
||||
using is_trivially_copyable = std::is_trivially_copyable<T>;
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ <= 7
|
||||
// Workaround for g++7 and earlier family.
|
||||
// Due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80654, without this
|
||||
// Optional<std::vector<T>> where T is non-copyable causes a compile error.
|
||||
// As we know it is not trivially copy constructible, explicitly declare so.
|
||||
template <typename T>
|
||||
struct is_trivially_copy_constructible
|
||||
: std::is_trivially_copy_constructible<T> {};
|
||||
|
||||
template <typename... T>
|
||||
struct is_trivially_copy_constructible<std::vector<T...>> : std::false_type {};
|
||||
#else
|
||||
// Otherwise use std::is_trivially_copy_constructible as is.
|
||||
template <typename T>
|
||||
using is_trivially_copy_constructible = std::is_trivially_copy_constructible<T>;
|
||||
#endif
|
||||
|
||||
// base::in_place_t is an implementation of std::in_place_t from
|
||||
// C++17. A tag type used to request in-place construction in template vararg
|
||||
// constructors.
|
||||
|
||||
// Specification:
|
||||
// https://en.cppreference.com/w/cpp/utility/in_place
|
||||
struct in_place_t {};
|
||||
constexpr in_place_t in_place = {};
|
||||
|
||||
// base::in_place_type_t is an implementation of std::in_place_type_t from
|
||||
// C++17. A tag type used for in-place construction when the type to construct
|
||||
// needs to be specified, such as with base::unique_any, designed to be a
|
||||
// drop-in replacement.
|
||||
|
||||
// Specification:
|
||||
// http://en.cppreference.com/w/cpp/utility/in_place
|
||||
template <typename T>
|
||||
struct in_place_type_t {};
|
||||
|
||||
template <typename T>
|
||||
struct is_in_place_type_t {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
template <typename... Ts>
|
||||
struct is_in_place_type_t<in_place_type_t<Ts...>> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
// C++14 implementation of C++17's std::bool_constant.
|
||||
//
|
||||
// Reference: https://en.cppreference.com/w/cpp/types/integral_constant
|
||||
// Specification: https://wg21.link/meta.type.synop
|
||||
template <bool B>
|
||||
using bool_constant = std::integral_constant<bool, B>;
|
||||
|
||||
// C++14 implementation of C++17's std::conjunction.
|
||||
//
|
||||
// Reference: https://en.cppreference.com/w/cpp/types/conjunction
|
||||
// Specification: https://wg21.link/meta.logical#1.itemdecl:1
|
||||
template <typename...>
|
||||
struct conjunction : std::true_type {};
|
||||
|
||||
template <typename B1>
|
||||
struct conjunction<B1> : B1 {};
|
||||
|
||||
template <typename B1, typename... Bn>
|
||||
struct conjunction<B1, Bn...>
|
||||
: std::conditional_t<static_cast<bool>(B1::value), conjunction<Bn...>, B1> {
|
||||
};
|
||||
|
||||
// C++14 implementation of C++17's std::disjunction.
|
||||
//
|
||||
// Reference: https://en.cppreference.com/w/cpp/types/disjunction
|
||||
// Specification: https://wg21.link/meta.logical#itemdecl:2
|
||||
template <typename...>
|
||||
struct disjunction : std::false_type {};
|
||||
|
||||
template <typename B1>
|
||||
struct disjunction<B1> : B1 {};
|
||||
|
||||
template <typename B1, typename... Bn>
|
||||
struct disjunction<B1, Bn...>
|
||||
: std::conditional_t<static_cast<bool>(B1::value), B1, disjunction<Bn...>> {
|
||||
};
|
||||
|
||||
// C++14 implementation of C++17's std::negation.
|
||||
//
|
||||
// Reference: https://en.cppreference.com/w/cpp/types/negation
|
||||
// Specification: https://wg21.link/meta.logical#itemdecl:3
|
||||
template <typename B>
|
||||
struct negation : bool_constant<!static_cast<bool>(B::value)> {};
|
||||
|
||||
// Implementation of C++17's invoke_result.
|
||||
//
|
||||
// This implementation adds references to `Functor` and `Args` to work around
|
||||
// some quirks of std::result_of. See the #Notes section of [1] for details.
|
||||
//
|
||||
// References:
|
||||
// [1] https://en.cppreference.com/w/cpp/types/result_of
|
||||
// [2] https://wg21.link/meta.trans.other#lib:invoke_result
|
||||
#if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
|
||||
template <typename Functor, typename... Args>
|
||||
using invoke_result = std::invoke_result<Functor, Args...>;
|
||||
#else
|
||||
template <typename Functor, typename... Args>
|
||||
using invoke_result = std::result_of<Functor && (Args && ...)>;
|
||||
#endif
|
||||
|
||||
// Implementation of C++17's std::invoke_result_t.
|
||||
//
|
||||
// Reference: https://wg21.link/meta.type.synop#lib:invoke_result_t
|
||||
template <typename Functor, typename... Args>
|
||||
using invoke_result_t = typename invoke_result<Functor, Args...>::type;
|
||||
|
||||
namespace internal {
|
||||
|
||||
// Base case, `InvokeResult` does not have a nested type member. This means `F`
|
||||
// could not be invoked with `Args...` and thus is not invocable.
|
||||
template <typename InvokeResult, typename R, typename = void>
|
||||
struct IsInvocableImpl : std::false_type {};
|
||||
|
||||
// Happy case, `InvokeResult` does have a nested type member. Now check whether
|
||||
// `InvokeResult::type` is convertible to `R`. Short circuit in case
|
||||
// `std::is_void<R>`.
|
||||
template <typename InvokeResult, typename R>
|
||||
struct IsInvocableImpl<InvokeResult, R, void_t<typename InvokeResult::type>>
|
||||
: disjunction<std::is_void<R>,
|
||||
std::is_convertible<typename InvokeResult::type, R>> {};
|
||||
|
||||
} // namespace internal
|
||||
|
||||
// Implementation of C++17's std::is_invocable_r.
|
||||
//
|
||||
// Returns whether `F` can be invoked with `Args...` and the result is
|
||||
// convertible to `R`.
|
||||
//
|
||||
// Reference: https://wg21.link/meta.rel#lib:is_invocable_r
|
||||
template <typename R, typename F, typename... Args>
|
||||
struct is_invocable_r
|
||||
: internal::IsInvocableImpl<invoke_result<F, Args...>, R> {};
|
||||
|
||||
// Implementation of C++17's std::is_invocable.
|
||||
//
|
||||
// Returns whether `F` can be invoked with `Args...`.
|
||||
//
|
||||
// Reference: https://wg21.link/meta.rel#lib:is_invocable
|
||||
template <typename F, typename... Args>
|
||||
struct is_invocable : is_invocable_r<void, F, Args...> {};
|
||||
|
||||
namespace internal {
|
||||
|
||||
// The indirection with std::is_enum<T> is required, because instantiating
|
||||
// std::underlying_type_t<T> when T is not an enum is UB prior to C++20.
|
||||
template <typename T, bool = std::is_enum<T>::value>
|
||||
struct IsScopedEnumImpl : std::false_type {};
|
||||
|
||||
template <typename T>
|
||||
struct IsScopedEnumImpl<T, /*std::is_enum<T>::value=*/true>
|
||||
: negation<std::is_convertible<T, std::underlying_type_t<T>>> {};
|
||||
|
||||
} // namespace internal
|
||||
|
||||
// Implementation of C++23's std::is_scoped_enum
|
||||
//
|
||||
// Reference: https://en.cppreference.com/w/cpp/types/is_scoped_enum
|
||||
template <typename T>
|
||||
struct is_scoped_enum : internal::IsScopedEnumImpl<T> {};
|
||||
|
||||
// Implementation of C++20's std::remove_cvref.
|
||||
//
|
||||
// References:
|
||||
// - https://en.cppreference.com/w/cpp/types/remove_cvref
|
||||
// - https://wg21.link/meta.trans.other#lib:remove_cvref
|
||||
template <typename T>
|
||||
struct remove_cvref {
|
||||
using type = std::remove_cv_t<std::remove_reference_t<T>>;
|
||||
};
|
||||
|
||||
// Implementation of C++20's std::remove_cvref_t.
|
||||
//
|
||||
// References:
|
||||
// - https://en.cppreference.com/w/cpp/types/remove_cvref
|
||||
// - https://wg21.link/meta.type.synop#lib:remove_cvref_t
|
||||
template <typename T>
|
||||
using remove_cvref_t = typename remove_cvref<T>::type;
|
||||
|
||||
// Simplified implementation of C++20's std::iter_value_t.
|
||||
// As opposed to std::iter_value_t, this implementation does not restrict
|
||||
// the type of `Iter` and does not consider specializations of
|
||||
// `indirectly_readable_traits`.
|
||||
//
|
||||
// Reference: https://wg21.link/readable.traits#2
|
||||
template <typename Iter>
|
||||
using iter_value_t =
|
||||
typename std::iterator_traits<remove_cvref_t<Iter>>::value_type;
|
||||
|
||||
// Simplified implementation of C++20's std::iter_reference_t.
|
||||
// As opposed to std::iter_reference_t, this implementation does not restrict
|
||||
// the type of `Iter`.
|
||||
//
|
||||
// Reference: https://wg21.link/iterator.synopsis#:~:text=iter_reference_t
|
||||
template <typename Iter>
|
||||
using iter_reference_t = decltype(*std::declval<Iter&>());
|
||||
|
||||
// Simplified implementation of C++20's std::indirect_result_t. As opposed to
|
||||
// std::indirect_result_t, this implementation does not restrict the type of
|
||||
// `Func` and `Iters`.
|
||||
//
|
||||
// Reference: https://wg21.link/iterator.synopsis#:~:text=indirect_result_t
|
||||
template <typename Func, typename... Iters>
|
||||
using indirect_result_t = invoke_result_t<Func, iter_reference_t<Iters>...>;
|
||||
|
||||
// Simplified implementation of C++20's std::projected. As opposed to
|
||||
// std::projected, this implementation does not explicitly restrict the type of
|
||||
// `Iter` and `Proj`, but rather does so implicitly by requiring
|
||||
// `indirect_result_t<Proj, Iter>` is a valid type. This is required for SFINAE
|
||||
// friendliness.
|
||||
//
|
||||
// Reference: https://wg21.link/projected
|
||||
template <typename Iter,
|
||||
typename Proj,
|
||||
typename IndirectResultT = indirect_result_t<Proj, Iter>>
|
||||
struct projected {
|
||||
using value_type = remove_cvref_t<IndirectResultT>;
|
||||
|
||||
IndirectResultT operator*() const; // not defined
|
||||
};
|
||||
|
||||
} // namespace base
|
||||
|
||||
#undef CR_USE_FALLBACKS_FOR_GCC_WITH_LIBCXX
|
||||
#undef CR_USE_FALLBACKS_FOR_OLD_EXPERIMENTAL_GLIBCXX
|
||||
|
||||
#endif // !USING_CHROMIUM_INCLUDES
|
||||
|
||||
#endif // CEF_INCLUDE_BASE_CEF_TEMPLATE_UTIL_H_
|
@@ -145,14 +145,6 @@
|
||||
/// free(str); // Trace system now has dangling pointer
|
||||
/// </pre>
|
||||
///
|
||||
/// To avoid this issue with the |name| and |arg_name| parameters, use the
|
||||
/// TRACE_EVENT_COPY_XXX overloads of the macros at additional runtime
|
||||
/// overhead.
|
||||
///
|
||||
/// Notes: The category must always be in a long-lived char* (i.e. static
|
||||
/// const). The |arg_values|, when used, are always deep copied with
|
||||
/// the _COPY macros.
|
||||
///
|
||||
///
|
||||
/// Thread Safety:
|
||||
/// All macros are thread safe and can be used from any process.
|
||||
@@ -179,15 +171,15 @@
|
||||
/// - category and name strings must have application lifetime (statics or
|
||||
/// literals). They may not include " chars.
|
||||
///
|
||||
#define TRACE_EVENT0(category, name) \
|
||||
cef_trace_event_begin(category, name, NULL, 0, NULL, 0, false); \
|
||||
#define TRACE_EVENT0(category, name) \
|
||||
cef_trace_event_begin(category, name, NULL, 0, NULL, 0); \
|
||||
CEF_INTERNAL_TRACE_END_ON_SCOPE_CLOSE(category, name)
|
||||
#define TRACE_EVENT1(category, name, arg1_name, arg1_val) \
|
||||
cef_trace_event_begin(category, name, arg1_name, arg1_val, NULL, 0, false); \
|
||||
#define TRACE_EVENT1(category, name, arg1_name, arg1_val) \
|
||||
cef_trace_event_begin(category, name, arg1_name, arg1_val, NULL, 0); \
|
||||
CEF_INTERNAL_TRACE_END_ON_SCOPE_CLOSE(category, name)
|
||||
#define TRACE_EVENT2(category, name, arg1_name, arg1_val, arg2_name, arg2_val) \
|
||||
cef_trace_event_begin(category, name, arg1_name, arg1_val, arg2_name, \
|
||||
arg2_val, false); \
|
||||
arg2_val); \
|
||||
CEF_INTERNAL_TRACE_END_ON_SCOPE_CLOSE(category, name)
|
||||
|
||||
// Implementation detail: trace event macros create temporary variable names.
|
||||
@@ -211,21 +203,13 @@
|
||||
/// literals). They may not include " chars.
|
||||
///
|
||||
#define TRACE_EVENT_INSTANT0(category, name) \
|
||||
cef_trace_event_instant(category, name, NULL, 0, NULL, 0, false)
|
||||
cef_trace_event_instant(category, name, NULL, 0, NULL, 0)
|
||||
#define TRACE_EVENT_INSTANT1(category, name, arg1_name, arg1_val) \
|
||||
cef_trace_event_instant(category, name, arg1_name, arg1_val, NULL, 0, false)
|
||||
cef_trace_event_instant(category, name, arg1_name, arg1_val, NULL, 0)
|
||||
#define TRACE_EVENT_INSTANT2(category, name, arg1_name, arg1_val, arg2_name, \
|
||||
arg2_val) \
|
||||
cef_trace_event_instant(category, name, arg1_name, arg1_val, arg2_name, \
|
||||
arg2_val, false)
|
||||
#define TRACE_EVENT_COPY_INSTANT0(category, name) \
|
||||
cef_trace_event_instant(category, name, NULL, 0, NULL, 0, true)
|
||||
#define TRACE_EVENT_COPY_INSTANT1(category, name, arg1_name, arg1_val) \
|
||||
cef_trace_event_instant(category, name, arg1_name, arg1_val, NULL, 0, true)
|
||||
#define TRACE_EVENT_COPY_INSTANT2(category, name, arg1_name, arg1_val, \
|
||||
arg2_name, arg2_val) \
|
||||
cef_trace_event_instant(category, name, arg1_name, arg1_val, arg2_name, \
|
||||
arg2_val, true)
|
||||
arg2_val)
|
||||
|
||||
///
|
||||
/// Records a single BEGIN event called "name" immediately, with 0, 1 or 2
|
||||
@@ -235,21 +219,13 @@
|
||||
/// literals). They may not include " chars.
|
||||
///
|
||||
#define TRACE_EVENT_BEGIN0(category, name) \
|
||||
cef_trace_event_begin(category, name, NULL, 0, NULL, 0, false)
|
||||
cef_trace_event_begin(category, name, NULL, 0, NULL, 0)
|
||||
#define TRACE_EVENT_BEGIN1(category, name, arg1_name, arg1_val) \
|
||||
cef_trace_event_begin(category, name, arg1_name, arg1_val, NULL, 0, false)
|
||||
cef_trace_event_begin(category, name, arg1_name, arg1_val, NULL, 0)
|
||||
#define TRACE_EVENT_BEGIN2(category, name, arg1_name, arg1_val, arg2_name, \
|
||||
arg2_val) \
|
||||
cef_trace_event_begin(category, name, arg1_name, arg1_val, arg2_name, \
|
||||
arg2_val, false)
|
||||
#define TRACE_EVENT_COPY_BEGIN0(category, name) \
|
||||
cef_trace_event_begin(category, name, NULL, 0, NULL, 0, true)
|
||||
#define TRACE_EVENT_COPY_BEGIN1(category, name, arg1_name, arg1_val) \
|
||||
cef_trace_event_begin(category, name, arg1_name, arg1_val, NULL, 0, true)
|
||||
#define TRACE_EVENT_COPY_BEGIN2(category, name, arg1_name, arg1_val, \
|
||||
arg2_name, arg2_val) \
|
||||
cef_trace_event_begin(category, name, arg1_name, arg1_val, arg2_name, \
|
||||
arg2_val, true)
|
||||
arg2_val)
|
||||
|
||||
///
|
||||
/// Records a single END event for "name" immediately. If the category
|
||||
@@ -258,21 +234,12 @@
|
||||
/// literals). They may not include " chars.
|
||||
///
|
||||
#define TRACE_EVENT_END0(category, name) \
|
||||
cef_trace_event_end(category, name, NULL, 0, NULL, 0, false)
|
||||
cef_trace_event_end(category, name, NULL, 0, NULL, 0)
|
||||
#define TRACE_EVENT_END1(category, name, arg1_name, arg1_val) \
|
||||
cef_trace_event_end(category, name, arg1_name, arg1_val, NULL, 0, false)
|
||||
cef_trace_event_end(category, name, arg1_name, arg1_val, NULL, 0)
|
||||
#define TRACE_EVENT_END2(category, name, arg1_name, arg1_val, arg2_name, \
|
||||
arg2_val) \
|
||||
cef_trace_event_end(category, name, arg1_name, arg1_val, arg2_name, \
|
||||
arg2_val, false)
|
||||
#define TRACE_EVENT_COPY_END0(category, name) \
|
||||
cef_trace_event_end(category, name, NULL, 0, NULL, 0, true)
|
||||
#define TRACE_EVENT_COPY_END1(category, name, arg1_name, arg1_val) \
|
||||
cef_trace_event_end(category, name, arg1_name, arg1_val, NULL, 0, true)
|
||||
#define TRACE_EVENT_COPY_END2(category, name, arg1_name, arg1_val, arg2_name, \
|
||||
arg2_val) \
|
||||
cef_trace_event_end(category, name, arg1_name, arg1_val, arg2_name, \
|
||||
arg2_val, true)
|
||||
cef_trace_event_end(category, name, arg1_name, arg1_val, arg2_name, arg2_val)
|
||||
|
||||
///
|
||||
/// Records the value of a counter called "name" immediately. Value
|
||||
@@ -281,9 +248,7 @@
|
||||
/// literals). They may not include " chars.
|
||||
///
|
||||
#define TRACE_COUNTER1(category, name, value) \
|
||||
cef_trace_counter(category, name, NULL, value, NULL, 0, false)
|
||||
#define TRACE_COPY_COUNTER1(category, name, value) \
|
||||
cef_trace_counter(category, name, NULL, value, NULL, 0, true)
|
||||
cef_trace_counter(category, name, NULL, value, NULL, 0)
|
||||
|
||||
///
|
||||
/// Records the values of a multi-parted counter called "name" immediately.
|
||||
@@ -295,11 +260,7 @@
|
||||
#define TRACE_COUNTER2(category, name, value1_name, value1_val, value2_name, \
|
||||
value2_val) \
|
||||
cef_trace_counter(category, name, value1_name, value1_val, value2_name, \
|
||||
value2_val, false)
|
||||
#define TRACE_COPY_COUNTER2(category, name, value1_name, value1_val, \
|
||||
value2_name, value2_val) \
|
||||
cef_trace_counter(category, name, value1_name, value1_val, value2_name, \
|
||||
value2_val, true)
|
||||
value2_val)
|
||||
|
||||
///
|
||||
/// Records the value of a counter called "name" immediately. Value
|
||||
@@ -312,9 +273,7 @@
|
||||
/// on two different processes will not collide.
|
||||
///
|
||||
#define TRACE_COUNTER_ID1(category, name, id, value) \
|
||||
cef_trace_counter_id(category, name, id, NULL, value, NULL, 0, false)
|
||||
#define TRACE_COPY_COUNTER_ID1(category, name, id, value) \
|
||||
cef_trace_counter_id(category, name, id, NULL, value, NULL, 0, true)
|
||||
cef_trace_counter_id(category, name, id, NULL, value, NULL, 0)
|
||||
|
||||
///
|
||||
/// Records the values of a multi-parted counter called "name" immediately.
|
||||
@@ -330,11 +289,7 @@
|
||||
#define TRACE_COUNTER_ID2(category, name, id, value1_name, value1_val, \
|
||||
value2_name, value2_val) \
|
||||
cef_trace_counter_id(category, name, id, value1_name, value1_val, \
|
||||
value2_name, value2_val, false)
|
||||
#define TRACE_COPY_COUNTER_ID2(category, name, id, value1_name, value1_val, \
|
||||
value2_name, value2_val) \
|
||||
cef_trace_counter_id(category, name, id, value1_name, value1_val, \
|
||||
value2_name, value2_val, true)
|
||||
value2_name, value2_val)
|
||||
|
||||
///
|
||||
/// Records a single ASYNC_BEGIN event called "name" immediately, with 0, 1 or 2
|
||||
@@ -355,23 +310,13 @@
|
||||
/// args.
|
||||
///
|
||||
#define TRACE_EVENT_ASYNC_BEGIN0(category, name, id) \
|
||||
cef_trace_event_async_begin(category, name, id, NULL, 0, NULL, 0, false)
|
||||
#define TRACE_EVENT_ASYNC_BEGIN1(category, name, id, arg1_name, arg1_val) \
|
||||
cef_trace_event_async_begin(category, name, id, arg1_name, arg1_val, NULL, \
|
||||
0, false)
|
||||
cef_trace_event_async_begin(category, name, id, NULL, 0, NULL, 0)
|
||||
#define TRACE_EVENT_ASYNC_BEGIN1(category, name, id, arg1_name, arg1_val) \
|
||||
cef_trace_event_async_begin(category, name, id, arg1_name, arg1_val, NULL, 0)
|
||||
#define TRACE_EVENT_ASYNC_BEGIN2(category, name, id, arg1_name, arg1_val, \
|
||||
arg2_name, arg2_val) \
|
||||
cef_trace_event_async_begin(category, name, id, arg1_name, arg1_val, \
|
||||
arg2_name, arg2_val, false)
|
||||
#define TRACE_EVENT_COPY_ASYNC_BEGIN0(category, name, id) \
|
||||
cef_trace_event_async_begin(category, name, id, NULL, 0, NULL, 0, true)
|
||||
#define TRACE_EVENT_COPY_ASYNC_BEGIN1(category, name, id, arg1_name, arg1_val) \
|
||||
cef_trace_event_async_begin(category, name, id, arg1_name, arg1_val, NULL, \
|
||||
0, true)
|
||||
#define TRACE_EVENT_COPY_ASYNC_BEGIN2(category, name, id, arg1_name, arg1_val, \
|
||||
arg2_name, arg2_val) \
|
||||
cef_trace_event_async_begin(category, name, id, arg1_name, arg1_val, \
|
||||
arg2_name, arg2_val, true)
|
||||
arg2_name, arg2_val)
|
||||
|
||||
///
|
||||
/// Records a single ASYNC_STEP_INTO event for |step| immediately. If the
|
||||
@@ -382,17 +327,10 @@
|
||||
/// ASYNC_STEP_PAST events.
|
||||
///
|
||||
#define TRACE_EVENT_ASYNC_STEP_INTO0(category, name, id, step) \
|
||||
cef_trace_event_async_step_into(category, name, id, step, NULL, 0, false)
|
||||
cef_trace_event_async_step_into(category, name, id, step, NULL, 0)
|
||||
#define TRACE_EVENT_ASYNC_STEP_INTO1(category, name, id, step, arg1_name, \
|
||||
arg1_val) \
|
||||
cef_trace_event_async_step_into(category, name, id, step, arg1_name, \
|
||||
arg1_val, false)
|
||||
#define TRACE_EVENT_COPY_ASYNC_STEP_INTO0(category, name, id, step) \
|
||||
cef_trace_event_async_step_into(category, name, id, step, NULL, 0, true)
|
||||
#define TRACE_EVENT_COPY_ASYNC_STEP_INTO1(category, name, id, step, arg1_name, \
|
||||
arg1_val) \
|
||||
cef_trace_event_async_step_into(category, name, id, step, arg1_name, \
|
||||
arg1_val, true)
|
||||
cef_trace_event_async_step_into(category, name, id, step, arg1_name, arg1_val)
|
||||
|
||||
///
|
||||
/// Records a single ASYNC_STEP_PAST event for |step| immediately. If the
|
||||
@@ -403,40 +341,23 @@
|
||||
/// ASYNC_STEP_INTO events.
|
||||
///
|
||||
#define TRACE_EVENT_ASYNC_STEP_PAST0(category, name, id, step) \
|
||||
cef_trace_event_async_step_past(category, name, id, step, NULL, 0, false)
|
||||
cef_trace_event_async_step_past(category, name, id, step, NULL, 0)
|
||||
#define TRACE_EVENT_ASYNC_STEP_PAST1(category, name, id, step, arg1_name, \
|
||||
arg1_val) \
|
||||
cef_trace_event_async_step_past(category, name, id, step, arg1_name, \
|
||||
arg1_val, false)
|
||||
#define TRACE_EVENT_COPY_ASYNC_STEP_PAST0(category, name, id, step) \
|
||||
cef_trace_event_async_step_past(category, name, id, step, NULL, 0, true)
|
||||
#define TRACE_EVENT_COPY_ASYNC_STEP_PAST1(category, name, id, step, arg1_name, \
|
||||
arg1_val) \
|
||||
cef_trace_event_async_step_past(category, name, id, step, arg1_name, \
|
||||
arg1_val, true)
|
||||
cef_trace_event_async_step_past(category, name, id, step, arg1_name, arg1_val)
|
||||
|
||||
///
|
||||
/// Records a single ASYNC_END event for "name" immediately. If the category
|
||||
/// is not enabled, then this does nothing.
|
||||
///
|
||||
#define TRACE_EVENT_ASYNC_END0(category, name, id) \
|
||||
cef_trace_event_async_end(category, name, id, NULL, 0, NULL, 0, false)
|
||||
#define TRACE_EVENT_ASYNC_END1(category, name, id, arg1_name, arg1_val) \
|
||||
cef_trace_event_async_end(category, name, id, arg1_name, arg1_val, NULL, 0, \
|
||||
false)
|
||||
cef_trace_event_async_end(category, name, id, NULL, 0, NULL, 0)
|
||||
#define TRACE_EVENT_ASYNC_END1(category, name, id, arg1_name, arg1_val) \
|
||||
cef_trace_event_async_end(category, name, id, arg1_name, arg1_val, NULL, 0)
|
||||
#define TRACE_EVENT_ASYNC_END2(category, name, id, arg1_name, arg1_val, \
|
||||
arg2_name, arg2_val) \
|
||||
cef_trace_event_async_end(category, name, id, arg1_name, arg1_val, \
|
||||
arg2_name, arg2_val, false)
|
||||
#define TRACE_EVENT_COPY_ASYNC_END0(category, name, id) \
|
||||
cef_trace_event_async_end(category, name, id, NULL, 0, NULL, 0, true)
|
||||
#define TRACE_EVENT_COPY_ASYNC_END1(category, name, id, arg1_name, arg1_val) \
|
||||
cef_trace_event_async_end(category, name, id, arg1_name, arg1_val, NULL, 0, \
|
||||
true)
|
||||
#define TRACE_EVENT_COPY_ASYNC_END2(category, name, id, arg1_name, arg1_val, \
|
||||
arg2_name, arg2_val) \
|
||||
cef_trace_event_async_end(category, name, id, arg1_name, arg1_val, \
|
||||
arg2_name, arg2_val, true)
|
||||
arg2_name, arg2_val)
|
||||
|
||||
namespace cef_trace_event {
|
||||
|
||||
@@ -448,7 +369,7 @@ class CefTraceEndOnScopeClose {
|
||||
CefTraceEndOnScopeClose(const char* category, const char* name)
|
||||
: category_(category), name_(name) {}
|
||||
~CefTraceEndOnScopeClose() {
|
||||
cef_trace_event_end(category_, name_, NULL, 0, NULL, 0, false);
|
||||
cef_trace_event_end(category_, name_, NULL, 0, NULL, 0);
|
||||
}
|
||||
|
||||
private:
|
||||
|
@@ -66,6 +66,7 @@
|
||||
// updated to match.
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include <tuple>
|
||||
#include <utility>
|
||||
|
||||
|
@@ -68,7 +68,6 @@
|
||||
#include "include/base/cef_build.h"
|
||||
#include "include/base/cef_compiler_specific.h"
|
||||
#include "include/base/cef_logging.h"
|
||||
#include "include/base/cef_template_util.h"
|
||||
#include "include/base/cef_weak_ptr.h"
|
||||
#include "include/base/internal/cef_callback_internal.h"
|
||||
#include "include/base/internal/cef_raw_scoped_refptr_mismatch_checker.h"
|
||||
@@ -356,14 +355,14 @@ template <typename Functor, typename SFINAE = void>
|
||||
struct IsCallableObject : std::false_type {};
|
||||
|
||||
template <typename Callable>
|
||||
struct IsCallableObject<Callable, void_t<decltype(&Callable::operator())>>
|
||||
struct IsCallableObject<Callable, std::void_t<decltype(&Callable::operator())>>
|
||||
: std::true_type {};
|
||||
|
||||
// HasRefCountedTypeAsRawPtr inherits from true_type when any of the |Args| is a
|
||||
// raw pointer to a RefCounted type.
|
||||
template <typename... Ts>
|
||||
struct HasRefCountedTypeAsRawPtr
|
||||
: disjunction<NeedsScopedRefptrButGetsRawPtr<Ts>...> {};
|
||||
: std::disjunction<NeedsScopedRefptrButGetsRawPtr<Ts>...> {};
|
||||
|
||||
// ForceVoidReturn<>
|
||||
//
|
||||
@@ -878,7 +877,7 @@ BanUnconstructedRefCountedReceiver(const Receiver& receiver, Unused&&...) {
|
||||
// This stores all the state passed into Bind().
|
||||
template <typename Functor, typename... BoundArgs>
|
||||
struct BindState final : BindStateBase {
|
||||
using IsCancellable = bool_constant<
|
||||
using IsCancellable = std::bool_constant<
|
||||
CallbackCancellationTraits<Functor,
|
||||
std::tuple<BoundArgs...>>::is_cancellable>;
|
||||
template <typename ForwardFunctor, typename... ForwardBoundArgs>
|
||||
@@ -1252,7 +1251,7 @@ decltype(auto) BindImpl(Functor&& functor, Args&&... args) {
|
||||
// PolymorphicInvoke, to which CallbackType will cast back.
|
||||
using PolymorphicInvoke = typename CallbackType::PolymorphicInvoke;
|
||||
PolymorphicInvoke invoke_func =
|
||||
GetInvokeFunc<Invoker>(bool_constant<kIsOnce>());
|
||||
GetInvokeFunc<Invoker>(std::bool_constant<kIsOnce>());
|
||||
|
||||
using InvokeFuncStorage = BindStateBase::InvokeFuncStorage;
|
||||
return CallbackType(BindState::Create(
|
||||
|
50
include/base/internal/cef_color_id_macros.inc
Normal file
50
include/base/internal/cef_color_id_macros.inc
Normal file
@@ -0,0 +1,50 @@
|
||||
// Copyright 2019 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// The following macros are used to declare both the color id enumerations and
|
||||
// the stringized names of the enumeration elements for use in dump_colors. To
|
||||
// stringize the element names, define STRINGIZE_COLOR_IDS prior to including
|
||||
// this file. This file is intended to be included just before and just after
|
||||
// the enumeration or string array declarations.
|
||||
|
||||
#if !defined(COLOR_ID_MACROS_DEFINED)
|
||||
#define COLOR_ID_MACROS_DEFINED
|
||||
#if defined(STRINGIZE_COLOR_IDS)
|
||||
// Convert first token to string, throw away the rest.
|
||||
#define D1(enum_name) #enum_name
|
||||
#define D2(enum_name, enum_value) #enum_name
|
||||
#else // defined(STRINGIZE_COLOR_IDS)
|
||||
// Declare enum with optional assigned value.
|
||||
#define D1(enum_name) enum_name
|
||||
#define D2(enum_name, enum_value) enum_name = enum_value
|
||||
#endif // defined(STRINGIZE_COLOR_IDS)
|
||||
// Select which token in the declaration is the assigned value.
|
||||
// Use first and optional third token, ignore optional second.
|
||||
#define E1(enum_name) D1(enum_name)
|
||||
#define E2(enum_name, old_enum_name) D1(enum_name)
|
||||
#define E3(enum_name, old_enum_name, enum_value) D2(enum_name, enum_value)
|
||||
#define GET_E(_1, _2, _3, macro_name, ...) macro_name
|
||||
#if defined(COMPILER_MSVC)
|
||||
// Workaround for MSVC not properly expanding __VA_ARGS__.
|
||||
#define EXPAND(x) x
|
||||
#define E_CPONLY(...) EXPAND(E(__VA_ARGS__))
|
||||
#define E(...) EXPAND(GET_E(__VA_ARGS__, E3, E2, E1)(__VA_ARGS__)),
|
||||
#else // !defined(COMPILER_MSVC)
|
||||
#define E_CPONLY(...) E(__VA_ARGS__)
|
||||
#define E(...) GET_E(__VA_ARGS__, E3, E2, E1)(__VA_ARGS__),
|
||||
#endif // !defined(COMPILER_MSVC)
|
||||
#else // !defined(COLOR_ID_MACROS_DEFINED)
|
||||
#undef D1
|
||||
#undef D2
|
||||
#undef E1
|
||||
#undef E2
|
||||
#undef E3
|
||||
#if defined(COMPILER_MSVC)
|
||||
#undef EXPAND
|
||||
#endif
|
||||
#undef E_CPONLY
|
||||
#undef GET_E
|
||||
#undef E
|
||||
#undef COLOR_ID_MACROS_DEFINED
|
||||
#endif // !defined(COLOR_ID_MACROS_DEFINED)
|
@@ -34,8 +34,6 @@
|
||||
|
||||
#include <type_traits>
|
||||
|
||||
#include "include/base/cef_template_util.h"
|
||||
|
||||
// It is dangerous to post a task with a T* argument where T is a subtype of
|
||||
// RefCounted(Base|ThreadSafeBase), since by the time the parameter is used, the
|
||||
// object may already have been deleted since it was not held with a
|
||||
@@ -54,16 +52,16 @@ struct IsRefCountedType : std::false_type {};
|
||||
|
||||
template <typename T>
|
||||
struct IsRefCountedType<T,
|
||||
void_t<decltype(std::declval<T*>()->AddRef()),
|
||||
decltype(std::declval<T*>()->Release())>>
|
||||
std::void_t<decltype(std::declval<T*>()->AddRef()),
|
||||
decltype(std::declval<T*>()->Release())>>
|
||||
: std::true_type {};
|
||||
|
||||
// Human readable translation: you needed to be a scoped_refptr if you are a raw
|
||||
// pointer type and are convertible to a RefCounted(Base|ThreadSafeBase) type.
|
||||
template <typename T>
|
||||
struct NeedsScopedRefptrButGetsRawPtr
|
||||
: conjunction<std::is_pointer<T>,
|
||||
IsRefCountedType<std::remove_pointer_t<T>>> {
|
||||
: std::conjunction<std::is_pointer<T>,
|
||||
IsRefCountedType<std::remove_pointer_t<T>>> {
|
||||
static_assert(!std::is_reference<T>::value,
|
||||
"NeedsScopedRefptrButGetsRawPtr requires non-reference type.");
|
||||
};
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=0ac3c8ca887778a840c65108d56038d4d776e073$
|
||||
// $hash=6ea5d772fb4961ae4a658b4b730aa608fa93309f$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_ACCESSIBILITY_HANDLER_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=9b523fbf312a8a0cb1c743a3c8aca7bc9cc22bbc$
|
||||
// $hash=608f4520d7901b6e18bf9164c9460f1b75bad8f4$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_APP_CAPI_H_
|
||||
@@ -91,11 +91,9 @@ typedef struct _cef_app_t {
|
||||
struct _cef_scheme_registrar_t* registrar);
|
||||
|
||||
///
|
||||
/// Return the handler for resource bundle events. If
|
||||
/// cef_settings_t.pack_loading_disabled is true (1) a handler must be
|
||||
/// 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.
|
||||
/// Return the handler for resource bundle events. 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*(
|
||||
CEF_CALLBACK* get_resource_bundle_handler)(struct _cef_app_t* self);
|
||||
@@ -133,19 +131,34 @@ CEF_EXPORT int cef_execute_process(const cef_main_args_t* args,
|
||||
|
||||
///
|
||||
/// This function should be called on the main application thread to initialize
|
||||
/// the CEF browser process. The |application| parameter may be NULL. A return
|
||||
/// value of true (1) indicates that it succeeded and false (0) indicates that
|
||||
/// it failed. The |windows_sandbox_info| parameter is only used on Windows and
|
||||
/// may be NULL (see cef_sandbox_win.h for details).
|
||||
/// the CEF browser process. The |application| parameter may be NULL. Returns
|
||||
/// true (1) if initialization succeeds. Returns false (0) if initialization
|
||||
/// fails or if early exit is desired (for example, due to process singleton
|
||||
/// relaunch behavior). If this function returns false (0) then the application
|
||||
/// should exit immediately without calling any other CEF functions except,
|
||||
/// optionally, CefGetErrorCode. The |windows_sandbox_info| parameter is only
|
||||
/// used on Windows and may be NULL (see cef_sandbox_win.h for details).
|
||||
///
|
||||
CEF_EXPORT int cef_initialize(const cef_main_args_t* args,
|
||||
const struct _cef_settings_t* settings,
|
||||
cef_app_t* application,
|
||||
void* windows_sandbox_info);
|
||||
|
||||
///
|
||||
/// This function can optionally be called on the main application thread after
|
||||
/// CefInitialize to retrieve the initialization exit code. When CefInitialize
|
||||
/// returns true (1) the exit code will be 0 (CEF_RESULT_CODE_NORMAL_EXIT).
|
||||
/// Otherwise, see cef_resultcode_t for possible exit code values including
|
||||
/// browser process initialization errors and normal early exit conditions (such
|
||||
/// as CEF_RESULT_CODE_NORMAL_EXIT_PROCESS_NOTIFIED for process singleton
|
||||
/// relaunch behavior).
|
||||
///
|
||||
CEF_EXPORT int cef_get_exit_code(void);
|
||||
|
||||
///
|
||||
/// This function should be called on the main application thread to shut down
|
||||
/// the CEF browser process before the application exits.
|
||||
/// the CEF browser process before the application exits. Do not call any other
|
||||
/// CEF functions after calling this function.
|
||||
///
|
||||
CEF_EXPORT void cef_shutdown(void);
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=936274d5539f225ff7adb7e0acba517fd9a8e2f8$
|
||||
// $hash=d98482eba93dcd8b6a6f69b2732162733c73203d$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_AUDIO_HANDLER_CAPI_H_
|
||||
@@ -93,7 +93,7 @@ typedef struct _cef_audio_handler_t {
|
||||
struct _cef_browser_t* browser,
|
||||
const float** data,
|
||||
int frames,
|
||||
int64 pts);
|
||||
int64_t pts);
|
||||
|
||||
///
|
||||
/// Called on the UI thread when the stream has stopped. OnAudioSteamStopped
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=4b9c31ef9a23f899c6d8cd3da49934a41f1bd231$
|
||||
// $hash=b63947918eca8c31790cae16b2e8a0be7e9464dd$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_AUTH_CALLBACK_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=7254c050cd7db2ff7d40a1f54c99e941dc592692$
|
||||
// $hash=e9f34d90eb4af614e35cbb29da0639b62acec7fd$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_CAPI_H_
|
||||
@@ -165,15 +165,16 @@ typedef struct _cef_browser_t {
|
||||
///
|
||||
/// Returns the frame with the specified identifier, or NULL if not found.
|
||||
///
|
||||
struct _cef_frame_t*(CEF_CALLBACK* get_frame_byident)(
|
||||
struct _cef_frame_t*(CEF_CALLBACK* get_frame_by_identifier)(
|
||||
struct _cef_browser_t* self,
|
||||
int64 identifier);
|
||||
const cef_string_t* identifier);
|
||||
|
||||
///
|
||||
/// Returns the frame with the specified name, or NULL if not found.
|
||||
///
|
||||
struct _cef_frame_t*(CEF_CALLBACK* get_frame)(struct _cef_browser_t* self,
|
||||
const cef_string_t* name);
|
||||
struct _cef_frame_t*(CEF_CALLBACK* get_frame_by_name)(
|
||||
struct _cef_browser_t* self,
|
||||
const cef_string_t* name);
|
||||
|
||||
///
|
||||
/// Returns the number of frames that currently exist.
|
||||
@@ -184,8 +185,7 @@ typedef struct _cef_browser_t {
|
||||
/// Returns the identifiers of all existing frames.
|
||||
///
|
||||
void(CEF_CALLBACK* get_frame_identifiers)(struct _cef_browser_t* self,
|
||||
size_t* identifiersCount,
|
||||
int64* identifiers);
|
||||
cef_string_list_t identifiers);
|
||||
|
||||
///
|
||||
/// Returns the names of all existing frames.
|
||||
@@ -301,29 +301,62 @@ typedef struct _cef_browser_host_t {
|
||||
struct _cef_browser_host_t* self);
|
||||
|
||||
///
|
||||
/// Request that the browser close. The JavaScript 'onbeforeunload' event will
|
||||
/// be fired. If |force_close| is false (0) the event handler, if any, will be
|
||||
/// allowed to prompt the user and the user can optionally cancel the close.
|
||||
/// If |force_close| is true (1) the prompt will not be displayed and the
|
||||
/// close will proceed. Results in a call to
|
||||
/// cef_life_span_handler_t::do_close() if the event handler allows the close
|
||||
/// or if |force_close| is true (1). See cef_life_span_handler_t::do_close()
|
||||
/// documentation for additional usage information.
|
||||
/// Request that the browser close. Closing a browser is a multi-stage process
|
||||
/// that may complete either synchronously or asynchronously, and involves
|
||||
/// callbacks such as cef_life_span_handler_t::DoClose (Alloy style only),
|
||||
/// cef_life_span_handler_t::OnBeforeClose, and a top-level window close
|
||||
/// handler such as cef_window_delegate_t::CanClose (or platform-specific
|
||||
/// equivalent). In some cases a close request may be delayed or canceled by
|
||||
/// the user. Using try_close_browser() instead of close_browser() is
|
||||
/// recommended for most use cases. See cef_life_span_handler_t::do_close()
|
||||
/// 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,
|
||||
int force_close);
|
||||
|
||||
///
|
||||
/// Helper for closing a browser. Call this function from the top-level window
|
||||
/// close handler (if any). Internally this calls CloseBrowser(false (0)) if
|
||||
/// the close has not yet been initiated. This function returns false (0)
|
||||
/// while the close is pending and true (1) after the close has completed. See
|
||||
/// close_browser() and cef_life_span_handler_t::do_close() documentation for
|
||||
/// additional usage information. This function must be called on the browser
|
||||
/// process UI thread.
|
||||
/// Helper for closing a browser. This is similar in behavior to
|
||||
/// CLoseBrowser(false (0)) but returns a boolean to reflect the immediate
|
||||
/// close status. Call this function from a top-level window close handler
|
||||
/// such as cef_window_delegate_t::CanClose (or platform-specific equivalent)
|
||||
/// to request that the browser close, and return the result to indicate if
|
||||
/// the window close should proceed. Returns false (0) if the close will be
|
||||
/// delayed (JavaScript unload handlers triggered but still pending) or true
|
||||
/// (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);
|
||||
|
||||
///
|
||||
/// 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.
|
||||
///
|
||||
@@ -365,16 +398,38 @@ typedef struct _cef_browser_host_t {
|
||||
struct _cef_browser_host_t* self);
|
||||
|
||||
///
|
||||
/// Get the current zoom level. The default zoom level is 0.0. This function
|
||||
/// can only be called on the UI thread.
|
||||
/// Returns true (1) if this browser can execute the specified zoom command.
|
||||
/// This function can only be called on the UI thread.
|
||||
///
|
||||
int(CEF_CALLBACK* can_zoom)(struct _cef_browser_host_t* self,
|
||||
cef_zoom_command_t command);
|
||||
|
||||
///
|
||||
/// Execute a zoom command in this browser. If called on the UI thread the
|
||||
/// change will be applied immediately. Otherwise, the change will be applied
|
||||
/// asynchronously on the UI thread.
|
||||
///
|
||||
void(CEF_CALLBACK* zoom)(struct _cef_browser_host_t* self,
|
||||
cef_zoom_command_t command);
|
||||
|
||||
///
|
||||
/// 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.
|
||||
///
|
||||
double(CEF_CALLBACK* get_default_zoom_level)(
|
||||
struct _cef_browser_host_t* self);
|
||||
|
||||
///
|
||||
/// Get the current zoom level. This function can only be called on the UI
|
||||
/// thread.
|
||||
///
|
||||
double(CEF_CALLBACK* get_zoom_level)(struct _cef_browser_host_t* self);
|
||||
|
||||
///
|
||||
/// Change the zoom level to the specified value. Specify 0.0 to reset the
|
||||
/// zoom level. If called on the UI thread the change will be applied
|
||||
/// immediately. Otherwise, the change will be applied asynchronously on the
|
||||
/// UI thread.
|
||||
/// zoom level to the default. If called on the UI thread the change will be
|
||||
/// applied immediately. Otherwise, the change will be applied asynchronously
|
||||
/// on the UI thread.
|
||||
///
|
||||
void(CEF_CALLBACK* set_zoom_level)(struct _cef_browser_host_t* self,
|
||||
double zoomLevel);
|
||||
@@ -424,7 +479,7 @@ typedef struct _cef_browser_host_t {
|
||||
struct _cef_browser_host_t* self,
|
||||
const cef_string_t* image_url,
|
||||
int is_favicon,
|
||||
uint32 max_image_size,
|
||||
uint32_t max_image_size,
|
||||
int bypass_cache,
|
||||
struct _cef_download_image_callback_t* callback);
|
||||
|
||||
@@ -884,20 +939,6 @@ typedef struct _cef_browser_host_t {
|
||||
const cef_size_t* min_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.
|
||||
///
|
||||
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.
|
||||
///
|
||||
int(CEF_CALLBACK* is_background_host)(struct _cef_browser_host_t* self);
|
||||
|
||||
///
|
||||
/// Set whether the browser's audio is muted.
|
||||
///
|
||||
@@ -909,6 +950,66 @@ typedef struct _cef_browser_host_t {
|
||||
/// be called on the UI thread.
|
||||
///
|
||||
int(CEF_CALLBACK* is_audio_muted)(struct _cef_browser_host_t* self);
|
||||
|
||||
///
|
||||
/// Returns true (1) if the renderer is currently in browser fullscreen. This
|
||||
/// differs from window fullscreen in that browser fullscreen is entered using
|
||||
/// the JavaScript Fullscreen API and modifies CSS attributes such as the
|
||||
/// ::backdrop pseudo-element and :fullscreen pseudo-structure. This function
|
||||
/// can only be called on the UI thread.
|
||||
///
|
||||
int(CEF_CALLBACK* is_fullscreen)(struct _cef_browser_host_t* self);
|
||||
|
||||
///
|
||||
/// Requests the renderer to exit browser fullscreen. In most cases exiting
|
||||
/// window fullscreen should also exit browser fullscreen. With Alloy style
|
||||
/// this function should be called in response to a user action such as
|
||||
/// clicking the green traffic light button on MacOS
|
||||
/// (cef_window_delegate_t::OnWindowFullscreenTransition callback) or pressing
|
||||
/// the "ESC" key (cef_keyboard_handler_t::OnPreKeyEvent callback). With
|
||||
/// Chrome style these standard exit actions are handled internally but
|
||||
/// new/additional user actions can use this function. Set |will_cause_resize|
|
||||
/// to true (1) if exiting browser fullscreen will cause a view resize.
|
||||
///
|
||||
void(CEF_CALLBACK* exit_fullscreen)(struct _cef_browser_host_t* self,
|
||||
int will_cause_resize);
|
||||
|
||||
///
|
||||
/// 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
|
||||
/// only be called on the UI thread. Only used with Chrome style.
|
||||
///
|
||||
int(CEF_CALLBACK* can_execute_chrome_command)(
|
||||
struct _cef_browser_host_t* self,
|
||||
int command_id);
|
||||
|
||||
///
|
||||
/// Execute a Chrome command. Values for |command_id| can be found in the
|
||||
/// cef_command_ids.h file. |disposition| provides information about the
|
||||
/// intended command target. Only used with Chrome style.
|
||||
///
|
||||
void(CEF_CALLBACK* execute_chrome_command)(
|
||||
struct _cef_browser_host_t* self,
|
||||
int command_id,
|
||||
cef_window_open_disposition_t disposition);
|
||||
|
||||
///
|
||||
/// Returns true (1) if the render process associated with this browser is
|
||||
/// currently unresponsive as indicated by a lack of input event processing
|
||||
/// for at least 15 seconds. To receive associated state change notifications
|
||||
/// and optionally handle an unresponsive render process implement
|
||||
/// cef_request_handler_t::OnRenderProcessUnresponsive. This function can only
|
||||
/// be called on the UI thread.
|
||||
///
|
||||
int(CEF_CALLBACK* is_render_process_unresponsive)(
|
||||
struct _cef_browser_host_t* self);
|
||||
|
||||
///
|
||||
/// Returns the runtime style for this browser (ALLOY or CHROME). See
|
||||
/// cef_runtime_style_t documentation for details.
|
||||
///
|
||||
cef_runtime_style_t(CEF_CALLBACK* get_runtime_style)(
|
||||
struct _cef_browser_host_t* self);
|
||||
} cef_browser_host_t;
|
||||
|
||||
///
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=4ef8b73a5218531b370fdd76c23153a1f83b7f7b$
|
||||
// $hash=56ad161a75ca5083812e11959053abbcafbb9a5d$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_PROCESS_HANDLER_CAPI_H_
|
||||
@@ -44,6 +44,7 @@
|
||||
#include "include/capi/cef_client_capi.h"
|
||||
#include "include/capi/cef_command_line_capi.h"
|
||||
#include "include/capi/cef_preference_capi.h"
|
||||
#include "include/capi/cef_request_context_handler_capi.h"
|
||||
#include "include/capi/cef_values_capi.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -68,8 +69,8 @@ typedef struct _cef_browser_process_handler_t {
|
||||
/// If |type| is CEF_PREFERENCES_TYPE_GLOBAL the registered preferences can be
|
||||
/// accessed via cef_preference_manager_t::GetGlobalPreferences after
|
||||
/// OnContextInitialized is called. Global preferences are registered a single
|
||||
/// time at application startup. See related cef_settings_t.cache_path and
|
||||
/// cef_settings_t.persist_user_preferences configuration.
|
||||
/// time at application startup. See related cef_settings_t.cache_path
|
||||
/// configuration.
|
||||
///
|
||||
/// If |type| is CEF_PREFERENCES_TYPE_REQUEST_CONTEXT the preferences can be
|
||||
/// accessed via the cef_request_context_t after
|
||||
@@ -77,8 +78,7 @@ typedef struct _cef_browser_process_handler_t {
|
||||
/// Request context preferences are registered each time a new
|
||||
/// cef_request_context_t is created. It is intended but not required that all
|
||||
/// request contexts have the same registered preferences. See related
|
||||
/// cef_request_context_settings_t.cache_path and
|
||||
/// cef_request_context_settings_t.persist_user_preferences configuration.
|
||||
/// cef_request_context_settings_t.cache_path configuration.
|
||||
///
|
||||
/// Do not keep a reference to the |registrar| object. This function is called
|
||||
/// on the browser process UI thread.
|
||||
@@ -106,6 +106,29 @@ typedef struct _cef_browser_process_handler_t {
|
||||
struct _cef_browser_process_handler_t* self,
|
||||
struct _cef_command_line_t* command_line);
|
||||
|
||||
///
|
||||
/// Implement this function to provide app-specific behavior when an already
|
||||
/// running app is relaunched with the same CefSettings.root_cache_path value.
|
||||
/// For example, activate an existing app window or create a new app window.
|
||||
/// |command_line| will be read-only. Do not keep a reference to
|
||||
/// |command_line| outside of this function. Return true (1) if the relaunch
|
||||
/// is handled or false (0) for default relaunch behavior. Default behavior
|
||||
/// will create a new default styled Chrome window.
|
||||
///
|
||||
/// To avoid cache corruption only a single app instance is allowed to run for
|
||||
/// a given CefSettings.root_cache_path value. On relaunch the app checks a
|
||||
/// process singleton lock and then forwards the new launch arguments to the
|
||||
/// already running app process before exiting early. Client apps should
|
||||
/// therefore check the cef_initialize() return value for early exit before
|
||||
/// proceeding.
|
||||
///
|
||||
/// This function will be called on the browser process UI thread.
|
||||
///
|
||||
int(CEF_CALLBACK* on_already_running_app_relaunch)(
|
||||
struct _cef_browser_process_handler_t* self,
|
||||
struct _cef_command_line_t* command_line,
|
||||
const cef_string_t* current_directory);
|
||||
|
||||
///
|
||||
/// Called from any thread when work has been scheduled for the browser
|
||||
/// process main (UI) thread. This callback is used in combination with
|
||||
@@ -121,17 +144,29 @@ typedef struct _cef_browser_process_handler_t {
|
||||
///
|
||||
void(CEF_CALLBACK* on_schedule_message_pump_work)(
|
||||
struct _cef_browser_process_handler_t* self,
|
||||
int64 delay_ms);
|
||||
int64_t delay_ms);
|
||||
|
||||
///
|
||||
/// Return the default client for use with a newly created browser window. If
|
||||
/// null is returned the browser will be unmanaged (no callbacks will be
|
||||
/// executed for that browser) and application shutdown will be blocked until
|
||||
/// the browser window is closed manually. This function is currently only
|
||||
/// used with the chrome runtime.
|
||||
/// Return the default client for use with a newly created browser window
|
||||
/// (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
|
||||
/// application shutdown will be blocked until the browser window is closed
|
||||
/// manually. This function is currently only used with Chrome style when
|
||||
/// creating new browser windows via Chrome UI.
|
||||
///
|
||||
struct _cef_client_t*(CEF_CALLBACK* get_default_client)(
|
||||
struct _cef_browser_process_handler_t* self);
|
||||
|
||||
///
|
||||
/// 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 will be unmanaged (no callbacks will be executed for
|
||||
/// that cef_request_context_t). This function is currently only used with
|
||||
/// Chrome style when creating new browser windows via Chrome UI.
|
||||
///
|
||||
struct _cef_request_context_handler_t*(
|
||||
CEF_CALLBACK* get_default_request_context_handler)(
|
||||
struct _cef_browser_process_handler_t* self);
|
||||
} cef_browser_process_handler_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=4fd98ff68ecb42677c3344b75e26d4787161b0d2$
|
||||
// $hash=46bc048bec64590735298a95633167d66e445844$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_CALLBACK_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=eb9dcb574252483dfab12834af93ba14138d4089$
|
||||
// $hash=09bd4140605645c9dfbd81e7e22d029d0bb50129$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_CLIENT_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=0cbb756a64d2aca1075480b5188b36cae533864d$
|
||||
// $hash=9c7d613d1256bd6353f5102ece5a04e572f20627$
|
||||
//
|
||||
|
||||
#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
|
||||
/// false (0) for the default implementation. For context menu commands this
|
||||
/// will be called after cef_context_menu_handler_t::OnContextMenuCommand.
|
||||
/// Only used with the Chrome runtime.
|
||||
/// Only used with Chrome style.
|
||||
///
|
||||
int(CEF_CALLBACK* on_chrome_command)(
|
||||
struct _cef_command_handler_t* self,
|
||||
@@ -75,8 +75,7 @@ typedef struct _cef_command_handler_t {
|
||||
///
|
||||
/// 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
|
||||
/// menu items that would be visible by default. Only used with the Chrome
|
||||
/// runtime.
|
||||
/// menu items that would be visible by default. Only used with Chrome style.
|
||||
///
|
||||
int(CEF_CALLBACK* is_chrome_app_menu_item_visible)(
|
||||
struct _cef_command_handler_t* self,
|
||||
@@ -86,8 +85,7 @@ typedef struct _cef_command_handler_t {
|
||||
///
|
||||
/// 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
|
||||
/// menu items that would be enabled by default. Only used with the Chrome
|
||||
/// runtime.
|
||||
/// menu items that would be enabled by default. Only used with Chrome style.
|
||||
///
|
||||
int(CEF_CALLBACK* is_chrome_app_menu_item_enabled)(
|
||||
struct _cef_command_handler_t* self,
|
||||
@@ -97,7 +95,7 @@ typedef struct _cef_command_handler_t {
|
||||
///
|
||||
/// 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.
|
||||
/// Only used with the Chrome runtime.
|
||||
/// Only used with Chrome style.
|
||||
///
|
||||
int(CEF_CALLBACK* is_chrome_page_action_icon_visible)(
|
||||
struct _cef_command_handler_t* self,
|
||||
@@ -106,7 +104,7 @@ typedef struct _cef_command_handler_t {
|
||||
///
|
||||
/// 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
|
||||
/// used with the Chrome runtime.
|
||||
/// used with Chrome style.
|
||||
///
|
||||
int(CEF_CALLBACK* is_chrome_toolbar_button_visible)(
|
||||
struct _cef_command_handler_t* self,
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=ac8fd3a7da20cff1fe2f20a75b045bf27c0312f2$
|
||||
// $hash=fce786b3f054d6581438e2906b77e573c797372a$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_COMMAND_LINE_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=c82f41d81f5afa5ed6995693e012c13d2a609f88$
|
||||
// $hash=3ae7dbb24ec7a95a2f4d4e390c9b6622221c2f42$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_CONTEXT_MENU_HANDLER_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=598c6f530b2e2553197d8c6a72ad9e2bf72b5443$
|
||||
// $hash=76ba2e59636aa71c8c6286093198a1e64d012c62$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_COOKIE_CAPI_H_
|
||||
@@ -126,8 +126,8 @@ typedef struct _cef_cookie_manager_t {
|
||||
/// cef_settings_t.cache_path if specified or in memory otherwise. If |callback|
|
||||
/// is non-NULL it will be executed asnychronously on the UI thread after the
|
||||
/// manager's storage has been initialized. Using this function is equivalent to
|
||||
/// calling cef_request_context_t::cef_request_context_get_global_context()->Get
|
||||
/// DefaultCookieManager().
|
||||
/// calling cef_request_context_t::cef_request_context_get_global_context()-
|
||||
/// >GetDefaultCookieManager().
|
||||
///
|
||||
CEF_EXPORT cef_cookie_manager_t* cef_cookie_manager_get_global_manager(
|
||||
struct _cef_completion_callback_t* callback);
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=5c6e0b9e37b8103a182f200fccdf5973104fcd70$
|
||||
// $hash=46a6432f66cce88d8597c3d070681b09a712dc54$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_CRASH_UTIL_CAPI_H_
|
||||
@@ -90,7 +90,7 @@ extern "C" {
|
||||
/// If "AppName" is set on Windows then crash report information (metrics,
|
||||
/// database and dumps) will be stored locally on disk under the
|
||||
/// "C:\Users\[CurrentUser]\AppData\Local\[AppName]\User Data" folder. On other
|
||||
/// platforms the cef_settings_t.user_data_path value will be used.
|
||||
/// platforms the cef_settings_t.root_cache_path value will be used.
|
||||
///
|
||||
/// If "ExternalHandler" is set on Windows then the specified exe will be
|
||||
/// launched as the crashpad-handler instead of re-launching the main process
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=777485120b9a9df0f890579ee698d33f273819c5$
|
||||
// $hash=dd94c50619e92bf5bed4fe61479813ee559f779d$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_DEVTOOLS_MESSAGE_OBSERVER_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=69545645f079f4593d9cbb6d8a36535c209245f7$
|
||||
// $hash=bf7208a86ee17f63fd7163cef8c3a13373a1f1c8$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_DIALOG_HANDLER_CAPI_H_
|
||||
@@ -86,13 +86,20 @@ typedef struct _cef_dialog_handler_t {
|
||||
/// to show the default title ("Open" or "Save" depending on the mode).
|
||||
/// |default_file_path| is the path with optional directory and/or file name
|
||||
/// component that should be initially selected in the dialog.
|
||||
/// |accept_filters| are used to restrict the selectable file types and may
|
||||
/// any combination of (a) valid lower-cased MIME types (e.g. "text/*" or
|
||||
/// "image/*"), (b) individual file extensions (e.g. ".txt" or ".png"), or (c)
|
||||
/// combined description and file extension delimited using "|" and ";" (e.g.
|
||||
/// "Image Types|.png;.gif;.jpg"). To display a custom dialog return true (1)
|
||||
/// and execute |callback| either inline or at a later time. To display the
|
||||
/// default dialog return false (0).
|
||||
/// |accept_filters| are used to restrict the selectable file types and may be
|
||||
/// any combination of valid lower-cased MIME types (e.g. "text/*" or
|
||||
/// "image/*") and individual file extensions (e.g. ".txt" or ".png").
|
||||
/// |accept_extensions| provides the semicolon-delimited expansion of MIME
|
||||
/// types to file extensions (if known, or NULL string otherwise).
|
||||
/// |accept_descriptions| provides the descriptions for MIME types (if known,
|
||||
/// or NULL string otherwise). For example, the "image/*" mime type might have
|
||||
/// extensions ".png;.jpg;.bmp;..." and description "Image Files".
|
||||
/// |accept_filters|, |accept_extensions| and |accept_descriptions| will all
|
||||
/// be the same size. To display a custom dialog return true (1) and execute
|
||||
/// |callback| either inline or at a later time. To display the default dialog
|
||||
/// return false (0). If this function returns false (0) it may be called an
|
||||
/// additional time for the same dialog (both before and after MIME type
|
||||
/// expansion).
|
||||
///
|
||||
int(CEF_CALLBACK* on_file_dialog)(
|
||||
struct _cef_dialog_handler_t* self,
|
||||
@@ -101,6 +108,8 @@ typedef struct _cef_dialog_handler_t {
|
||||
const cef_string_t* title,
|
||||
const cef_string_t* default_file_path,
|
||||
cef_string_list_t accept_filters,
|
||||
cef_string_list_t accept_extensions,
|
||||
cef_string_list_t accept_descriptions,
|
||||
struct _cef_file_dialog_callback_t* callback);
|
||||
} cef_dialog_handler_t;
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=1de3354bd0a042cc28199f1f56753b1df9e279a2$
|
||||
// $hash=b42d9e5a03f6ef5444e8037b8dc4de08ee6b0834$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_DISPLAY_HANDLER_CAPI_H_
|
||||
@@ -84,8 +84,12 @@ typedef struct _cef_display_handler_t {
|
||||
/// Called when web content in the page has toggled fullscreen mode. If
|
||||
/// |fullscreen| is true (1) the content will automatically be sized to fill
|
||||
/// the browser content area. If |fullscreen| is false (0) the content will
|
||||
/// automatically return to its original size and position. The client is
|
||||
/// responsible for resizing the browser if desired.
|
||||
/// automatically return to its original size and position. With Alloy style
|
||||
/// the client is responsible for triggering the fullscreen transition (for
|
||||
/// example, by calling cef_window_t::SetFullscreen when using Views). With
|
||||
/// Chrome style the fullscreen transition will be triggered automatically.
|
||||
/// The cef_window_delegate_t::OnWindowFullscreenTransition function will be
|
||||
/// called during the fullscreen transition for notification purposes.
|
||||
///
|
||||
void(CEF_CALLBACK* on_fullscreen_mode_change)(
|
||||
struct _cef_display_handler_t* self,
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=d703b8af664ed9dfac8ad935616ef43fafc062e2$
|
||||
// $hash=a4d2f79163205ed4367916546240a6aedc2165f9$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_DOM_CAPI_H_
|
||||
@@ -209,8 +209,7 @@ typedef struct _cef_domnode_t {
|
||||
///
|
||||
/// Returns the type of this form control element node.
|
||||
///
|
||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||
cef_string_userfree_t(CEF_CALLBACK* get_form_control_element_type)(
|
||||
cef_dom_form_control_type_t(CEF_CALLBACK* get_form_control_element_type)(
|
||||
struct _cef_domnode_t* self);
|
||||
|
||||
///
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=f1f6a110a7ce15611a7062b3d7fe8b5c630f2980$
|
||||
// $hash=7ecfb07a95315ff81937e9f68d419122fc88f1b7$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_HANDLER_CAPI_H_
|
||||
@@ -117,12 +117,13 @@ typedef struct _cef_download_handler_t {
|
||||
|
||||
///
|
||||
/// Called before a download begins. |suggested_name| is the suggested name
|
||||
/// for the download file. By default the download will be canceled. Execute
|
||||
/// |callback| either asynchronously or in this function to continue the
|
||||
/// download if desired. Do not keep a reference to |download_item| outside of
|
||||
/// this function.
|
||||
/// for the download file. Return true (1) and execute |callback| either
|
||||
/// asynchronously or in this function to continue or cancel the download.
|
||||
/// Return false (0) to proceed with default handling (cancel with Alloy
|
||||
/// style, download shelf with Chrome style). Do not keep a reference to
|
||||
/// |download_item| outside of this function.
|
||||
///
|
||||
void(CEF_CALLBACK* on_before_download)(
|
||||
int(CEF_CALLBACK* on_before_download)(
|
||||
struct _cef_download_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
struct _cef_download_item_t* download_item,
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=d9e9f4b914ae2d3b1ed83ae0d9e2e46e9e736af5$
|
||||
// $hash=9af8ade3addfd112db41792c4e80682a8143e8c4$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_ITEM_CAPI_H_
|
||||
@@ -90,7 +90,7 @@ typedef struct _cef_download_item_t {
|
||||
///
|
||||
/// Returns a simple speed estimate in bytes/s.
|
||||
///
|
||||
int64(CEF_CALLBACK* get_current_speed)(struct _cef_download_item_t* self);
|
||||
int64_t(CEF_CALLBACK* get_current_speed)(struct _cef_download_item_t* self);
|
||||
|
||||
///
|
||||
/// Returns the rough percent complete or -1 if the receive total size is
|
||||
@@ -101,12 +101,12 @@ typedef struct _cef_download_item_t {
|
||||
///
|
||||
/// Returns the total number of bytes.
|
||||
///
|
||||
int64(CEF_CALLBACK* get_total_bytes)(struct _cef_download_item_t* self);
|
||||
int64_t(CEF_CALLBACK* get_total_bytes)(struct _cef_download_item_t* self);
|
||||
|
||||
///
|
||||
/// Returns the number of received bytes.
|
||||
///
|
||||
int64(CEF_CALLBACK* get_received_bytes)(struct _cef_download_item_t* self);
|
||||
int64_t(CEF_CALLBACK* get_received_bytes)(struct _cef_download_item_t* self);
|
||||
|
||||
///
|
||||
/// Returns the time that the download started.
|
||||
@@ -129,7 +129,7 @@ typedef struct _cef_download_item_t {
|
||||
///
|
||||
/// Returns the unique identifier for this download.
|
||||
///
|
||||
uint32(CEF_CALLBACK* get_id)(struct _cef_download_item_t* self);
|
||||
uint32_t(CEF_CALLBACK* get_id)(struct _cef_download_item_t* self);
|
||||
|
||||
///
|
||||
/// Returns the URL.
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=a1ce746f0dd97d21973d4c80d8ef46391c0fd463$
|
||||
// $hash=a096775255ddc4d7616095e48e7370bd87bf4bb5$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_DRAG_DATA_CAPI_H_
|
||||
@@ -149,6 +149,13 @@ typedef struct _cef_drag_data_t {
|
||||
int(CEF_CALLBACK* get_file_names)(struct _cef_drag_data_t* self,
|
||||
cef_string_list_t names);
|
||||
|
||||
///
|
||||
/// Retrieve the list of file paths that are being dragged into the browser
|
||||
/// window.
|
||||
///
|
||||
int(CEF_CALLBACK* get_file_paths)(struct _cef_drag_data_t* self,
|
||||
cef_string_list_t paths);
|
||||
|
||||
///
|
||||
/// Set the link URL that is being dragged.
|
||||
///
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=ad16b0f4320d7b363efb152a65e3ce142882b9d9$
|
||||
// $hash=0723a2a59d46e465ac94f198351dc871f0b35b96$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_DRAG_HANDLER_CAPI_H_
|
||||
|
@@ -1,130 +0,0 @@
|
||||
// Copyright (c) 2023 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=c81a74622b987483e5fcd2c508aec5c13e12389b$
|
||||
//
|
||||
|
||||
#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.
|
||||
///
|
||||
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_
|
@@ -1,212 +0,0 @@
|
||||
// Copyright (c) 2023 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=ad6d3845b150f22b88a71dafa601ef01c9579824$
|
||||
//
|
||||
|
||||
#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.
|
||||
///
|
||||
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_
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=4e0e0abcb72327998df950e618b147b196e76b60$
|
||||
// $hash=e10581d1f6aeb104646ae106aaa5fb36016643dd$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_FILE_UTIL_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=8149c82dd6671d676ee62cb6749bf30b32a5832c$
|
||||
// $hash=da0a9242b309fbd70d19949fb1c5b4ec4475ef94$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_FIND_HANDLER_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=53ec33c8937c735f646f9e0a14a416218e32887c$
|
||||
// $hash=6eefc2c650908461fb7536dd3314c77a3f89dceb$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_FOCUS_HANDLER_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=5bed8359f09a821f4b5ec8ebfad0aa5720bf39f9$
|
||||
// $hash=8f347a95168778ec0e686cdef93be3bc517e2f68$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_FRAME_CAPI_H_
|
||||
@@ -178,10 +178,12 @@ typedef struct _cef_frame_t {
|
||||
cef_string_userfree_t(CEF_CALLBACK* get_name)(struct _cef_frame_t* self);
|
||||
|
||||
///
|
||||
/// Returns the globally unique identifier for this frame or < 0 if the
|
||||
/// Returns the globally unique identifier for this frame or NULL if the
|
||||
/// underlying frame does not yet exist.
|
||||
///
|
||||
int64(CEF_CALLBACK* get_identifier)(struct _cef_frame_t* self);
|
||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||
cef_string_userfree_t(CEF_CALLBACK* get_identifier)(
|
||||
struct _cef_frame_t* self);
|
||||
|
||||
///
|
||||
/// Returns the parent of this frame or NULL if this is the main (top-level)
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=4cdadeb6439415d60ec32249c3a0b6457dd586f7$
|
||||
// $hash=fc6fbee765ce2b649f5293c8c4b076d36014e4aa$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_FRAME_HANDLER_CAPI_H_
|
||||
@@ -53,48 +53,41 @@ extern "C" {
|
||||
/// The order of callbacks is:
|
||||
///
|
||||
/// (1) During initial cef_browser_host_t creation and navigation of the main
|
||||
/// frame: - cef_frame_handler_t::OnFrameCreated => The initial main frame
|
||||
/// object has been
|
||||
/// created. Any commands will be queued until the frame is attached.
|
||||
/// frame:
|
||||
/// - cef_frame_handler_t::OnFrameCreated => The initial main frame object has
|
||||
/// been created. Any commands will be queued until the frame is attached.
|
||||
/// - cef_frame_handler_t::OnMainFrameChanged => The initial main frame object
|
||||
/// has
|
||||
/// been assigned to the browser.
|
||||
/// has been assigned to the browser.
|
||||
/// - cef_life_span_handler_t::OnAfterCreated => The browser is now valid and
|
||||
/// can be
|
||||
/// used.
|
||||
/// can be used.
|
||||
/// - cef_frame_handler_t::OnFrameAttached => The initial main frame object is
|
||||
/// now
|
||||
/// connected to its peer in the renderer process. Commands can be routed.
|
||||
/// now connected to its peer in the renderer process. Commands can be routed.
|
||||
///
|
||||
/// (2) During further cef_browser_host_t navigation/loading of the main frame
|
||||
/// and/or sub-frames:
|
||||
/// - cef_frame_handler_t::OnFrameCreated => A new main frame or sub-frame
|
||||
/// object
|
||||
/// has been created. Any commands will be queued until the frame is attached.
|
||||
/// object has been created. Any commands will be queued until the frame is
|
||||
/// attached.
|
||||
/// - cef_frame_handler_t::OnFrameAttached => A new main frame or sub-frame
|
||||
/// object
|
||||
/// is now connected to its peer in the renderer process. Commands can be
|
||||
/// routed.
|
||||
/// object is now connected to its peer in the renderer process. Commands can
|
||||
/// be routed.
|
||||
/// - cef_frame_handler_t::OnFrameDetached => An existing main frame or sub-
|
||||
/// frame
|
||||
/// object has lost its connection to the renderer process. If multiple
|
||||
/// frame object has lost its connection to the renderer process. If multiple
|
||||
/// 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
|
||||
/// be routed and will be discarded.
|
||||
/// - cef_frame_handler_t::OnMainFrameChanged => A new main frame object has
|
||||
/// been
|
||||
/// assigned to the browser. This will only occur with cross-origin navigation
|
||||
/// or re-navigation after renderer process termination (due to crashes, etc).
|
||||
/// been assigned to the browser. This will only occur with cross-origin
|
||||
/// navigation or re-navigation after renderer process termination (due to
|
||||
/// crashes, etc).
|
||||
///
|
||||
/// (3) During final cef_browser_host_t destruction of the main frame: -
|
||||
/// cef_frame_handler_t::OnFrameDetached => Any sub-frame objects have lost
|
||||
/// their
|
||||
/// connection to the renderer process. Commands can no longer be routed and
|
||||
/// will be discarded.
|
||||
/// (3) During final cef_browser_host_t destruction of the main frame:
|
||||
/// - cef_frame_handler_t::OnFrameDetached => Any sub-frame objects have lost
|
||||
/// their connection to the renderer process. Commands can no longer be routed
|
||||
/// and will be discarded.
|
||||
/// - cef_life_span_handler_t::OnBeforeClose => The browser has been destroyed.
|
||||
/// - 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
|
||||
/// routed and will be discarded.
|
||||
/// - cef_frame_handler_t::OnMainFrameChanged => The final main frame object has
|
||||
@@ -111,7 +104,7 @@ extern "C" {
|
||||
/// 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 recieve or execute
|
||||
/// the real sub-frame. The temporary sub-frame will not receive or execute
|
||||
/// commands during this transitional period (any sent commands will be
|
||||
/// discarded).
|
||||
///
|
||||
@@ -119,7 +112,7 @@ extern "C" {
|
||||
/// 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 recieve creation and initial
|
||||
/// 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
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=c564ee1f32a0ef05fe49fc779af5bc0b0e1b36d6$
|
||||
// $hash=990e80ab5ae04298e6b70cbc0a67115825563251$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_I18N_UTIL_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=99c94b208f9b184985220493bba4ea08e6786046$
|
||||
// $hash=7512ccf755017d5b1866b753890b498e8163006d$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_IMAGE_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=e9fb0354243611f3a4de508923a4e01dab42f82d$
|
||||
// $hash=c6810367ba3a17824247dcb17f87040cd021c295$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_JSDIALOG_HANDLER_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=10fb708c5f550403205a976924abf1886bf3dfa7$
|
||||
// $hash=0bfe161c51cc6378b2e8e2e2b2c017b750b46864$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_KEYBOARD_HANDLER_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=1c807597b96889f44a1e5199e860e8db4948b473$
|
||||
// $hash=6aad2ccf30a6c519bbeee64d83866e82a41a48d8$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_LIFE_SPAN_HANDLER_CAPI_H_
|
||||
@@ -100,6 +100,34 @@ typedef struct _cef_life_span_handler_t {
|
||||
struct _cef_dictionary_value_t** extra_info,
|
||||
int* no_javascript_access);
|
||||
|
||||
///
|
||||
/// Called on the UI thread before a new DevTools popup browser is created.
|
||||
/// The |browser| value represents the source of the popup request. Optionally
|
||||
/// modify |windowInfo|, |client|, |settings| and |extra_info| values. The
|
||||
/// |client|, |settings| and |extra_info| values will default to the source
|
||||
/// browser's values. Any modifications to |windowInfo| will be ignored if the
|
||||
/// parent browser is Views-hosted (wrapped in a cef_browser_view_t).
|
||||
///
|
||||
/// 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.
|
||||
/// The existing |extra_info| object, if any, will be read-only but may be
|
||||
/// replaced with a new object.
|
||||
///
|
||||
/// Views-hosted source browsers will create Views-hosted DevTools popups
|
||||
/// 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
|
||||
/// for IDC_DEV_TOOLS. Only used with Chrome style.
|
||||
///
|
||||
void(CEF_CALLBACK* on_before_dev_tools_popup)(
|
||||
struct _cef_life_span_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
struct _cef_window_info_t* windowInfo,
|
||||
struct _cef_client_t** client,
|
||||
struct _cef_browser_settings_t* settings,
|
||||
struct _cef_dictionary_value_t** extra_info,
|
||||
int* use_default_window);
|
||||
|
||||
///
|
||||
/// Called after a new browser is created. It is now safe to begin performing
|
||||
/// actions with |browser|. cef_frame_handler_t callbacks related to initial
|
||||
@@ -110,35 +138,44 @@ typedef struct _cef_life_span_handler_t {
|
||||
struct _cef_browser_t* browser);
|
||||
|
||||
///
|
||||
/// Called when a browser has recieved a request to close. This may result
|
||||
/// directly from a call to cef_browser_host_t::*close_browser() or indirectly
|
||||
/// if the browser is parented to a top-level window created by CEF and the
|
||||
/// user attempts to close that window (by clicking the 'X', for example). The
|
||||
/// do_close() function will be called after the JavaScript 'onunload' event
|
||||
/// has been fired.
|
||||
/// Called when an Alloy style 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 may result directly from a
|
||||
/// call to cef_browser_host_t::[Try]close_browser() or indirectly if the
|
||||
/// browser's top-level parent window was created by CEF and the user attempts
|
||||
/// to close that window (by clicking the 'X', for example). do_close() will
|
||||
/// 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 owner window close notifications by
|
||||
/// calling cef_browser_host_t::try_close_browser() or
|
||||
/// An application should handle top-level parent window close notifications
|
||||
/// by calling cef_browser_host_t::try_close_browser() or
|
||||
/// cef_browser_host_t::CloseBrowser(false (0)) instead of allowing the window
|
||||
/// to close immediately (see the examples below). This gives CEF an
|
||||
/// opportunity to process the 'onbeforeunload' event and optionally cancel
|
||||
/// opportunity to process JavaScript unload handlers and optionally cancel
|
||||
/// the close before do_close() is called.
|
||||
///
|
||||
/// When windowed rendering is enabled CEF will internally create a window or
|
||||
/// view to host the browser. In that case returning false (0) from do_close()
|
||||
/// will send the standard close notification to the browser's top-level owner
|
||||
/// window (e.g. WM_CLOSE on Windows, performClose: on OS X, "delete_event" on
|
||||
/// Linux or cef_window_delegate_t::can_close() callback from Views). If the
|
||||
/// 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 enabled CEF will create an internal child
|
||||
/// window/view to host the browser. In that case returning false (0) from
|
||||
/// do_close() will send the standard close notification to the browser's top-
|
||||
/// level parent window (e.g. WM_CLOSE on Windows, performClose: on OS X,
|
||||
/// "delete_event" on Linux or cef_window_delegate_t::can_close() callback
|
||||
/// from Views).
|
||||
///
|
||||
/// When windowed rendering is disabled returning false (0) from do_close()
|
||||
/// will cause the browser object to be destroyed immediately.
|
||||
/// When windowed rendering is disabled there is no internal window/view and
|
||||
/// returning false (0) from do_close() will cause the browser object to be
|
||||
/// destroyed immediately.
|
||||
///
|
||||
/// If the browser's top-level owner window requires a non-standard close
|
||||
/// If the browser's top-level parent window requires a non-standard close
|
||||
/// notification then send that notification from do_close() and return true
|
||||
/// (1).
|
||||
/// (1). You are still required to complete the browser close as soon as
|
||||
/// 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
|
||||
/// after do_close() (if do_close() is called) and immediately before the
|
||||
@@ -154,22 +191,26 @@ typedef struct _cef_life_span_handler_t {
|
||||
/// which sends a close notification
|
||||
/// to the application's top-level window.
|
||||
/// 2. Application's top-level window receives the close notification and
|
||||
/// calls TryCloseBrowser() (which internally calls CloseBrowser(false)).
|
||||
/// calls TryCloseBrowser() (similar to calling CloseBrowser(false)).
|
||||
/// TryCloseBrowser() returns false so the client cancels the window
|
||||
/// close.
|
||||
/// 3. JavaScript 'onbeforeunload' handler executes and shows the close
|
||||
/// confirmation dialog (which can be overridden via
|
||||
/// CefJSDialogHandler::OnBeforeUnloadDialog()).
|
||||
/// 4. User approves the close. 5. JavaScript 'onunload' handler executes.
|
||||
/// 6. CEF sends a close notification to the application's top-level window
|
||||
/// (because DoClose() returned false by default).
|
||||
/// 7. Application's top-level window receives the close notification and
|
||||
/// 6. Application's do_close() handler is called and returns false (0) by
|
||||
/// default.
|
||||
/// 7. CEF sends a close notification to the application's top-level window
|
||||
/// (because DoClose() returned false).
|
||||
/// 8. Application's top-level window receives the close notification and
|
||||
/// calls TryCloseBrowser(). TryCloseBrowser() returns true so the client
|
||||
/// allows the window close.
|
||||
/// 8. Application's top-level window is destroyed. 9. Application's
|
||||
/// on_before_close() handler is called and the browser object
|
||||
/// 9. Application's top-level window is destroyed, triggering destruction
|
||||
/// of the child browser window.
|
||||
/// 10. Application's on_before_close() handler is called and the browser
|
||||
/// object
|
||||
/// is destroyed.
|
||||
/// 10. Application exits by calling cef_quit_message_loop() if no other
|
||||
/// 11. Application exits by calling cef_quit_message_loop() if no other
|
||||
/// browsers
|
||||
/// exist.
|
||||
///
|
||||
@@ -187,13 +228,17 @@ typedef struct _cef_life_span_handler_t {
|
||||
/// CefJSDialogHandler::OnBeforeUnloadDialog()).
|
||||
/// 4. User approves the close. 5. JavaScript 'onunload' handler executes.
|
||||
/// 6. Application's do_close() handler is called. Application will:
|
||||
/// A. Set a flag to indicate that the next close attempt will be allowed.
|
||||
/// A. Set a flag to indicate that the next top-level window close attempt
|
||||
/// will be allowed.
|
||||
/// B. Return false.
|
||||
/// 7. CEF sends an close notification to the application's top-level window.
|
||||
/// 7. CEF sends a close notification to the application's top-level window
|
||||
/// (because DoClose() returned false).
|
||||
/// 8. Application's top-level window receives the close notification and
|
||||
/// allows the window to close based on the flag from #6B.
|
||||
/// 9. Application's top-level window is destroyed. 10. Application's
|
||||
/// on_before_close() handler is called and the browser object
|
||||
/// allows the window to close based on the flag from #6A.
|
||||
/// 9. Application's top-level window is destroyed, triggering destruction
|
||||
/// of the child browser window.
|
||||
/// 10. Application's on_before_close() handler is called and the browser
|
||||
/// object
|
||||
/// is destroyed.
|
||||
/// 11. Application exits by calling cef_quit_message_loop() if no other
|
||||
/// browsers
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=1ee684174554f7d1cf8899992705d072c1c56ae7$
|
||||
// $hash=eb842e65cd2e7c4a8a6baa2813b57ac0d3977261$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_LOAD_HANDLER_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=de4a9b856c6951231f446991a9b1efb89096ad3b$
|
||||
// $hash=8eec1100e8470cbe3ebc54d5962416d2fa4d57fb$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_MEDIA_ROUTER_CAPI_H_
|
||||
@@ -114,8 +114,8 @@ typedef struct _cef_media_router_t {
|
||||
/// Returns the MediaRouter object associated with the global request context.
|
||||
/// If |callback| is non-NULL it will be executed asnychronously on the UI
|
||||
/// thread after the manager's storage has been initialized. Equivalent to
|
||||
/// calling cef_request_context_t::cef_request_context_get_global_context()->get
|
||||
/// _media_router().
|
||||
/// calling cef_request_context_t::cef_request_context_get_global_context()-
|
||||
/// >get_media_router().
|
||||
///
|
||||
CEF_EXPORT cef_media_router_t* cef_media_router_get_global(
|
||||
struct _cef_completion_callback_t* callback);
|
||||
@@ -156,7 +156,7 @@ typedef struct _cef_media_observer_t {
|
||||
cef_media_route_connection_state_t state);
|
||||
|
||||
///
|
||||
/// A message was recieved over |route|. |message| is only valid for the scope
|
||||
/// A message was received over |route|. |message| is only valid for the scope
|
||||
/// of this callback and should be copied if necessary.
|
||||
///
|
||||
void(CEF_CALLBACK* on_route_message_received)(
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=d70b78b8108bb08b4f53b2627ed4ebfdffece7c1$
|
||||
// $hash=5dae0b1a1271e79a5fd9b2c6e71e7a719a450161$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_CAPI_H_
|
||||
@@ -473,14 +473,15 @@ typedef struct _cef_menu_model_t {
|
||||
///
|
||||
/// Sets the font list for the specified |command_id|. If |font_list| is NULL
|
||||
/// the system font will be used. Returns true (1) on success. The format is
|
||||
/// "<FONT_FAMILY_LIST>,[STYLES] <SIZE>", where: - FONT_FAMILY_LIST is a
|
||||
/// comma-separated list of font family names, - STYLES is an optional space-
|
||||
/// separated list of style names
|
||||
/// (case-sensitive "Bold" and "Italic" are supported), and
|
||||
/// "<FONT_FAMILY_LIST>,[STYLES] <SIZE>", where:
|
||||
/// - FONT_FAMILY_LIST is a comma-separated list of font family names,
|
||||
/// - STYLES is an optional space-separated list of style names (case-
|
||||
/// sensitive "Bold" and "Italic" are supported), and
|
||||
/// - SIZE is an integer font size in pixels with the suffix "px".
|
||||
///
|
||||
/// Here are examples of valid font description strings: - "Arial, Helvetica,
|
||||
/// Bold Italic 14px" - "Arial, 14px"
|
||||
/// Here are examples of valid font description strings:
|
||||
/// - "Arial, Helvetica, Bold Italic 14px"
|
||||
/// - "Arial, 14px"
|
||||
///
|
||||
int(CEF_CALLBACK* set_font_list)(struct _cef_menu_model_t* self,
|
||||
int command_id,
|
||||
@@ -488,16 +489,15 @@ typedef struct _cef_menu_model_t {
|
||||
|
||||
///
|
||||
/// Sets the font list for the specified |index|. Specify an |index| value of
|
||||
/// -1 to set the default font. If |font_list| is NULL the system font will be
|
||||
/// used. Returns true (1) on success. The format is
|
||||
/// "<FONT_FAMILY_LIST>,[STYLES] <SIZE>", where: - FONT_FAMILY_LIST is a
|
||||
/// comma-separated list of font family names, - STYLES is an optional space-
|
||||
/// separated list of style names
|
||||
/// (case-sensitive "Bold" and "Italic" are supported), and
|
||||
/// - 1 to set the default font. If |font_list| is NULL the system font will
|
||||
/// - FONT_FAMILY_LIST is a comma-separated list of font family names,
|
||||
/// - STYLES is an optional space-separated list of style names (case-
|
||||
/// sensitive "Bold" and "Italic" are supported), and
|
||||
/// - SIZE is an integer font size in pixels with the suffix "px".
|
||||
///
|
||||
/// Here are examples of valid font description strings: - "Arial, Helvetica,
|
||||
/// Bold Italic 14px" - "Arial, 14px"
|
||||
/// Here are examples of valid font description strings:
|
||||
/// - "Arial, Helvetica, Bold Italic 14px"
|
||||
/// - "Arial, 14px"
|
||||
///
|
||||
int(CEF_CALLBACK* set_font_list_at)(struct _cef_menu_model_t* self,
|
||||
int index,
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=933a90dfb7b94a3aba7f2944e4540662dc8c79d7$
|
||||
// $hash=01bdeaf96ea01591689b52b0955504644d6614b8$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_DELEGATE_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=d33771c31b7b0964aa2ccf1c2bc2ca1226194977$
|
||||
// $hash=dbdac05f2ebd8e8a357eacfe5095676a5bd5b1ac$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_NAVIGATION_ENTRY_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=9330c709713a10c1e6b55278428e65c07f4c9dfb$
|
||||
// $hash=f146fd9172033e77e90994841df9fa55ff71aa4b$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_ORIGIN_WHITELIST_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=5d6dad4bfaeef0117d068b6e67a8da7490fe7c2d$
|
||||
// $hash=8accded29b97df1549e86e58d8976fe0f800359a$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_PARSER_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=70b306534b9cb8334c9ea260feacfd8f2f503292$
|
||||
// $hash=ee0c50b4e1f51fb2286da24bb9244ae74f3b0c6f$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_PATH_UTIL_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=bc44eb70b7f0b48e0646825e919cb9996ac99781$
|
||||
// $hash=66aebf0e910224fb8eaa7f847feeccac73378374$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_PERMISSION_HANDLER_CAPI_H_
|
||||
@@ -66,7 +66,7 @@ typedef struct _cef_media_access_callback_t {
|
||||
/// OnRequestMediaAccessPermission.
|
||||
///
|
||||
void(CEF_CALLBACK* cont)(struct _cef_media_access_callback_t* self,
|
||||
uint32 allowed_permissions);
|
||||
uint32_t allowed_permissions);
|
||||
|
||||
///
|
||||
/// Cancel the media access request.
|
||||
@@ -108,18 +108,18 @@ typedef struct _cef_permission_handler_t {
|
||||
/// cef_media_access_permission_types_t that represent the requested
|
||||
/// 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
|
||||
/// the request. Return false (0) to proceed with default handling. With the
|
||||
/// Chrome runtime, default handling will display the permission request UI.
|
||||
/// With the Alloy runtime, default handling will deny the request. This
|
||||
/// function will not be called if the "--enable-media-stream" command-line
|
||||
/// switch is used to grant all permissions.
|
||||
/// the request. Return false (0) to proceed with default handling. With
|
||||
/// Chrome style, default handling will display the permission request UI.
|
||||
/// With Alloy style, default handling will deny the request. This function
|
||||
/// will not be called if the "--enable-media-stream" command-line switch is
|
||||
/// used to grant all permissions.
|
||||
///
|
||||
int(CEF_CALLBACK* on_request_media_access_permission)(
|
||||
struct _cef_permission_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
struct _cef_frame_t* frame,
|
||||
const cef_string_t* requesting_origin,
|
||||
uint32 requested_permissions,
|
||||
uint32_t requested_permissions,
|
||||
struct _cef_media_access_callback_t* callback);
|
||||
|
||||
///
|
||||
@@ -129,16 +129,16 @@ typedef struct _cef_permission_handler_t {
|
||||
/// cef_permission_request_types_t that represent the requested permissions.
|
||||
/// 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.
|
||||
/// Return false (0) to proceed with default handling. With the Chrome
|
||||
/// runtime, default handling will display the permission prompt UI. With the
|
||||
/// Alloy runtime, default handling is CEF_PERMISSION_RESULT_IGNORE.
|
||||
/// Return false (0) to proceed with default handling. With Chrome style,
|
||||
/// default handling will display the permission prompt UI. With Alloy style,
|
||||
/// default handling is CEF_PERMISSION_RESULT_IGNORE.
|
||||
///
|
||||
int(CEF_CALLBACK* on_show_permission_prompt)(
|
||||
struct _cef_permission_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
uint64 prompt_id,
|
||||
uint64_t prompt_id,
|
||||
const cef_string_t* requesting_origin,
|
||||
uint32 requested_permissions,
|
||||
uint32_t requested_permissions,
|
||||
struct _cef_permission_prompt_callback_t* callback);
|
||||
|
||||
///
|
||||
@@ -153,7 +153,7 @@ typedef struct _cef_permission_handler_t {
|
||||
void(CEF_CALLBACK* on_dismiss_permission_prompt)(
|
||||
struct _cef_permission_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
uint64 prompt_id,
|
||||
uint64_t prompt_id,
|
||||
cef_permission_request_result_t result);
|
||||
} cef_permission_handler_t;
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=922659242ea25c52d02884a7cc5918d086cbfaca$
|
||||
// $hash=1c0e469a283538945834404bcd5934b9bb9a0756$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_PREFERENCE_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=d09937fb047debd9da39c4072a434659b3c5682c$
|
||||
// $hash=96d5b6c0dc8f2575e686fb79684c63787cdfe876$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_PRINT_HANDLER_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=46508464579e797d4684f4a7facdb39f9bdb312b$
|
||||
// $hash=63977fcbe4567db202914f69539f49b254352053$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_PRINT_SETTINGS_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=e20a8d6a5803dae5ba156adde40c8b964899b176$
|
||||
// $hash=89c569df7e5e4a6035d4527218ce4dc1d68e20f0$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_PROCESS_MESSAGE_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=88c42c5f216798304b07bfe985296014cf65996c$
|
||||
// $hash=a61a639c7e53ecd9481eae363bac557055f0442e$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_PROCESS_UTIL_CAPI_H_
|
||||
@@ -50,11 +50,11 @@ extern "C" {
|
||||
/// Launches the process specified via |command_line|. Returns true (1) upon
|
||||
/// success. Must be called on the browser process TID_PROCESS_LAUNCHER thread.
|
||||
///
|
||||
/// Unix-specific notes: - All file descriptors open in the parent process will
|
||||
/// be closed in the
|
||||
/// Unix-specific notes:
|
||||
/// - All file descriptors open in the parent process will be closed in the
|
||||
/// child process except for stdin, stdout, and stderr.
|
||||
/// - If the first argument on the command line does not contain a slash,
|
||||
/// PATH will be searched. (See man execvp.)
|
||||
/// - If the first argument on the command line does not contain a slash, PATH
|
||||
/// will be searched. (See man execvp.)
|
||||
///
|
||||
CEF_EXPORT int cef_launch_process(struct _cef_command_line_t* command_line);
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=b1b38a3171dd3626029e70e75b482dfa3531215b$
|
||||
// $hash=c53a67bbf1497a51766bf03040714b5edb2117d5$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_REGISTRATION_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=32d8176f39b05487bae048990b2dee3212ae3b78$
|
||||
// $hash=5151b6ea3c06e46a75f2cd7679044a2891063d29$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_RENDER_HANDLER_CAPI_H_
|
||||
@@ -149,17 +149,27 @@ typedef struct _cef_render_handler_t {
|
||||
/// Called when an element has been rendered to the shared texture handle.
|
||||
/// |type| indicates whether the element is the view or the popup widget.
|
||||
/// |dirtyRects| contains the set of rectangles in pixel coordinates that need
|
||||
/// to be repainted. |shared_handle| is the handle for a D3D11 Texture2D that
|
||||
/// can be accessed via ID3D11Device using the OpenSharedResource function.
|
||||
/// This function is only called when cef_window_tInfo::shared_texture_enabled
|
||||
/// is set to true (1), and is currently only supported on Windows.
|
||||
/// to be repainted. |info| contains the shared handle; on Windows it is a
|
||||
/// HANDLE to a texture that can be opened with D3D11 OpenSharedResource, on
|
||||
/// macOS it is an IOSurface pointer that can be opened with Metal or OpenGL,
|
||||
/// and on Linux it contains several planes, each with an fd to the underlying
|
||||
/// system native buffer.
|
||||
///
|
||||
void(CEF_CALLBACK* on_accelerated_paint)(struct _cef_render_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
cef_paint_element_type_t type,
|
||||
size_t dirtyRectsCount,
|
||||
cef_rect_t const* dirtyRects,
|
||||
void* shared_handle);
|
||||
/// The underlying implementation uses a pool to deliver frames. As a result,
|
||||
/// the handle may differ every frame depending on how many frames are in-
|
||||
/// progress. The handle's resource cannot be cached and cannot be accessed
|
||||
/// outside of this callback. It should be reopened each time this callback is
|
||||
/// executed and the contents should be copied to a texture owned by the
|
||||
/// client application. The contents of |info| will be released back to the
|
||||
/// pool after this callback returns.
|
||||
///
|
||||
void(CEF_CALLBACK* on_accelerated_paint)(
|
||||
struct _cef_render_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
cef_paint_element_type_t type,
|
||||
size_t dirtyRectsCount,
|
||||
cef_rect_t const* dirtyRects,
|
||||
const cef_accelerated_paint_info_t* info);
|
||||
|
||||
///
|
||||
/// Called to retrieve the size of the touch handle for the specified
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=d807c7566ce3085243e9e7ea279fee7241acfc5f$
|
||||
// $hash=6e2fccb5a8e49918d723f6c5223062cf98b0f9de$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_RENDER_PROCESS_HANDLER_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=3339290cad3a77c8b0b07d422f0faf902a047838$
|
||||
// $hash=14ce483864835eca476d08d39ed4236fbd1a874c$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CAPI_H_
|
||||
@@ -214,7 +214,7 @@ typedef struct _cef_request_t {
|
||||
/// in the browser process to track a single request across multiple
|
||||
/// callbacks.
|
||||
///
|
||||
uint64(CEF_CALLBACK* get_identifier)(struct _cef_request_t* self);
|
||||
uint64_t(CEF_CALLBACK* get_identifier)(struct _cef_request_t* self);
|
||||
} cef_request_t;
|
||||
|
||||
///
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=c2a6265e8e9acce475a8b5755a8c58b97b495207$
|
||||
// $hash=c63fac0c620ead3525405feb5cc9db561e1a508a$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_CAPI_H_
|
||||
@@ -42,10 +42,9 @@
|
||||
|
||||
#include "include/capi/cef_callback_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_preference_capi.h"
|
||||
#include "include/capi/cef_values_capi.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -204,95 +203,6 @@ typedef struct _cef_request_context_t {
|
||||
const cef_string_t* origin,
|
||||
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.
|
||||
///
|
||||
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.
|
||||
///
|
||||
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.
|
||||
///
|
||||
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.
|
||||
///
|
||||
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.
|
||||
///
|
||||
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
|
||||
/// |callback| is non-NULL it will be executed asnychronously on the UI thread
|
||||
@@ -301,6 +211,105 @@ typedef struct _cef_request_context_t {
|
||||
struct _cef_media_router_t*(CEF_CALLBACK* get_media_router)(
|
||||
struct _cef_request_context_t* self,
|
||||
struct _cef_completion_callback_t* callback);
|
||||
|
||||
///
|
||||
/// Returns the current value for |content_type| that applies for the
|
||||
/// specified URLs. If both URLs are NULL the default value will be returned.
|
||||
/// Returns nullptr if no value is configured. Must be called on the browser
|
||||
/// process UI thread.
|
||||
///
|
||||
struct _cef_value_t*(CEF_CALLBACK* get_website_setting)(
|
||||
struct _cef_request_context_t* self,
|
||||
const cef_string_t* requesting_url,
|
||||
const cef_string_t* top_level_url,
|
||||
cef_content_setting_types_t content_type);
|
||||
|
||||
///
|
||||
/// Sets the current value for |content_type| for the specified URLs in the
|
||||
/// default scope. If both URLs are NULL, and the context is not incognito,
|
||||
/// the default value will be set. Pass nullptr for |value| to remove the
|
||||
/// default value for this content type.
|
||||
///
|
||||
/// WARNING: Incorrect usage of this function may cause instability or
|
||||
/// security issues in Chromium. Make sure that you first understand the
|
||||
/// potential impact of any changes to |content_type| by reviewing the related
|
||||
/// source code in Chromium. For example, if you plan to modify
|
||||
/// CEF_CONTENT_SETTING_TYPE_POPUPS, first review and understand the usage of
|
||||
/// ContentSettingsType::POPUPS in Chromium:
|
||||
/// https://source.chromium.org/search?q=ContentSettingsType::POPUPS
|
||||
///
|
||||
void(CEF_CALLBACK* set_website_setting)(
|
||||
struct _cef_request_context_t* self,
|
||||
const cef_string_t* requesting_url,
|
||||
const cef_string_t* top_level_url,
|
||||
cef_content_setting_types_t content_type,
|
||||
struct _cef_value_t* value);
|
||||
|
||||
///
|
||||
/// Returns the current value for |content_type| that applies for the
|
||||
/// specified URLs. If both URLs are NULL the default value will be returned.
|
||||
/// Returns CEF_CONTENT_SETTING_VALUE_DEFAULT if no value is configured. Must
|
||||
/// be called on the browser process UI thread.
|
||||
///
|
||||
cef_content_setting_values_t(CEF_CALLBACK* get_content_setting)(
|
||||
struct _cef_request_context_t* self,
|
||||
const cef_string_t* requesting_url,
|
||||
const cef_string_t* top_level_url,
|
||||
cef_content_setting_types_t content_type);
|
||||
|
||||
///
|
||||
/// Sets the current value for |content_type| for the specified URLs in the
|
||||
/// default scope. If both URLs are NULL, and the context is not incognito,
|
||||
/// the default value will be set. Pass CEF_CONTENT_SETTING_VALUE_DEFAULT for
|
||||
/// |value| to use the default value for this content type.
|
||||
///
|
||||
/// WARNING: Incorrect usage of this function may cause instability or
|
||||
/// security issues in Chromium. Make sure that you first understand the
|
||||
/// potential impact of any changes to |content_type| by reviewing the related
|
||||
/// source code in Chromium. For example, if you plan to modify
|
||||
/// CEF_CONTENT_SETTING_TYPE_POPUPS, first review and understand the usage of
|
||||
/// ContentSettingsType::POPUPS in Chromium:
|
||||
/// https://source.chromium.org/search?q=ContentSettingsType::POPUPS
|
||||
///
|
||||
void(CEF_CALLBACK* set_content_setting)(
|
||||
struct _cef_request_context_t* self,
|
||||
const cef_string_t* requesting_url,
|
||||
const cef_string_t* top_level_url,
|
||||
cef_content_setting_types_t content_type,
|
||||
cef_content_setting_values_t value);
|
||||
|
||||
///
|
||||
/// Sets the Chrome color scheme for all browsers that share this request
|
||||
/// context. |variant| values of SYSTEM, LIGHT and DARK change the underlying
|
||||
/// color mode (e.g. light vs dark). Other |variant| values determine how
|
||||
/// |user_color| will be applied in the current color mode. If |user_color| is
|
||||
/// transparent (0) the default color will be used.
|
||||
///
|
||||
void(CEF_CALLBACK* set_chrome_color_scheme)(
|
||||
struct _cef_request_context_t* self,
|
||||
cef_color_variant_t variant,
|
||||
cef_color_t user_color);
|
||||
|
||||
///
|
||||
/// Returns the current Chrome color scheme mode (SYSTEM, LIGHT or DARK). Must
|
||||
/// be called on the browser process UI thread.
|
||||
///
|
||||
cef_color_variant_t(CEF_CALLBACK* get_chrome_color_scheme_mode)(
|
||||
struct _cef_request_context_t* self);
|
||||
|
||||
///
|
||||
/// Returns the current Chrome color scheme color, or transparent (0) for the
|
||||
/// default color. Must be called on the browser process UI thread.
|
||||
///
|
||||
cef_color_t(CEF_CALLBACK* get_chrome_color_scheme_color)(
|
||||
struct _cef_request_context_t* self);
|
||||
|
||||
///
|
||||
/// Returns the current Chrome color scheme variant. Must be called on the
|
||||
/// browser process UI thread.
|
||||
///
|
||||
cef_color_variant_t(CEF_CALLBACK* get_chrome_color_scheme_variant)(
|
||||
struct _cef_request_context_t* self);
|
||||
} cef_request_context_t;
|
||||
|
||||
///
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=b0b532a12106d960adc446b980affeee12b93ae3$
|
||||
// $hash=d90d816565429ad304f43490b0619af5ffa70274$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_HANDLER_CAPI_H_
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=092d897e223273a940ed623547d82645f764519c$
|
||||
// $hash=db7cfb76483d6ab73eba74deaefafa7700ad1988$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_HANDLER_CAPI_H_
|
||||
@@ -48,6 +48,7 @@
|
||||
#include "include/capi/cef_request_capi.h"
|
||||
#include "include/capi/cef_resource_request_handler_capi.h"
|
||||
#include "include/capi/cef_ssl_info_capi.h"
|
||||
#include "include/capi/cef_unresponsive_process_callback_capi.h"
|
||||
#include "include/capi/cef_x509_certificate_capi.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -222,14 +223,52 @@ typedef struct _cef_request_handler_t {
|
||||
void(CEF_CALLBACK* on_render_view_ready)(struct _cef_request_handler_t* self,
|
||||
struct _cef_browser_t* browser);
|
||||
|
||||
///
|
||||
/// 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
|
||||
/// 15 seconds. Return false (0) for the default behavior which is an
|
||||
/// indefinite wait with Alloy style or display of the "Page unresponsive"
|
||||
/// dialog with Chrome style. Return true (1) and don't execute the callback
|
||||
/// for an indefinite wait without display of the Chrome style dialog. Return
|
||||
/// true (1) and call cef_unresponsive_process_callback_t::Wait either in this
|
||||
/// function or at a later time to reset the wait timer, potentially
|
||||
/// triggering another call to this function if the process remains
|
||||
/// unresponsive. Return true (1) and call
|
||||
/// cef_unresponsive_process_callback_t:: Terminate either in this function or
|
||||
/// at a later time to terminate the unresponsive process, resulting in a call
|
||||
/// to OnRenderProcessTerminated. OnRenderProcessResponsive will be called if
|
||||
/// the process becomes responsive after this function is called. This
|
||||
/// functionality depends on the hang monitor which can be disabled by passing
|
||||
/// the `--disable-hang-monitor` command-line flag.
|
||||
///
|
||||
int(CEF_CALLBACK* on_render_process_unresponsive)(
|
||||
struct _cef_request_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
struct _cef_unresponsive_process_callback_t* callback);
|
||||
|
||||
///
|
||||
/// Called on the browser process UI thread when the render process becomes
|
||||
/// responsive after previously being unresponsive. See documentation on
|
||||
/// OnRenderProcessUnresponsive.
|
||||
///
|
||||
void(CEF_CALLBACK* on_render_process_responsive)(
|
||||
struct _cef_request_handler_t* self,
|
||||
struct _cef_browser_t* browser);
|
||||
|
||||
///
|
||||
/// Called on the browser process UI thread when the render process terminates
|
||||
/// unexpectedly. |status| indicates how the process terminated.
|
||||
/// unexpectedly. |status| indicates how the process terminated. |error_code|
|
||||
/// and |error_string| represent the error that would be displayed in Chrome's
|
||||
/// "Aw, Snap!" view. Possible |error_code| values include cef_resultcode_t
|
||||
/// non-normal exit values and platform-specific crash values (for example, a
|
||||
/// Posix signal or Windows hardware exception).
|
||||
///
|
||||
void(CEF_CALLBACK* on_render_process_terminated)(
|
||||
struct _cef_request_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
cef_termination_status_t status);
|
||||
cef_termination_status_t status,
|
||||
int error_code,
|
||||
const cef_string_t* error_string);
|
||||
|
||||
///
|
||||
/// Called on the browser process UI thread when the window.document object of
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) 2023 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
|
||||
// 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
|
||||
// more information.
|
||||
//
|
||||
// $hash=e8e8dd2730a47aad9414f7bfc2e6ad96aba2c875$
|
||||
// $hash=d97d3ca6c8d610627538c58f3b4ba3869f3d9ac7$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_BUNDLE_CAPI_H_
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user