mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Compare commits
303 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ebf5d6ab43 | ||
|
|
491d2383ef | ||
|
|
4eb0508671 | ||
|
|
49cae3707a | ||
|
|
3215aaebef | ||
|
|
1b83ff6471 | ||
|
|
870da3087f | ||
|
|
f6de0344cb | ||
|
|
6926287894 | ||
|
|
0d4c466645 | ||
|
|
1b930decca | ||
|
|
80b61f0417 | ||
|
|
a7a5eee369 | ||
|
|
e9397c53ff | ||
|
|
eb023d18e0 | ||
|
|
f98481d327 | ||
|
|
0d82c3ffc0 | ||
|
|
fb44f128e9 | ||
|
|
565ad7bb99 | ||
|
|
d4c8104ca8 | ||
|
|
b7ba0b9a66 | ||
|
|
719fe7691b | ||
|
|
82dc13a870 | ||
|
|
371f7f3409 | ||
|
|
01fe00c6fd | ||
|
|
f34406c57d | ||
|
|
adfa59f690 | ||
|
|
baf98ee6e9 | ||
|
|
dc2231cdfb | ||
|
|
4c41f14360 | ||
|
|
36ee304ed4 | ||
|
|
c3c5d6ff37 | ||
|
|
47d2651ea4 | ||
|
|
5c4ac32bb9 | ||
|
|
8b447e3a6f | ||
|
|
b065ca8cf4 | ||
|
|
2b906c31b5 | ||
|
|
b65d59f27e | ||
|
|
606e5dddf3 | ||
|
|
4f336c110b | ||
|
|
aae420aa8b | ||
|
|
b1a530c76a | ||
|
|
f6d626d979 | ||
|
|
2b2c6aa143 | ||
|
|
b66c2d1bea | ||
|
|
e65da8fab8 | ||
|
|
aef474b909 | ||
|
|
8a07a836e1 | ||
|
|
9f8be5ea6c | ||
|
|
83cb82d50f | ||
|
|
a986b1c226 | ||
|
|
d04b5d4f87 | ||
|
|
e646827d92 | ||
|
|
7ba45a0451 | ||
|
|
3af3eab3e4 | ||
|
|
d84b07a5cb | ||
|
|
c7ffa3a122 | ||
|
|
ecc89d7d93 | ||
|
|
30a321b1ce | ||
|
|
d7d0c2fc6d | ||
|
|
216e5b31dd | ||
|
|
47d69a842a | ||
|
|
74fc5d5573 | ||
|
|
7611c4dba6 | ||
|
|
25954e872e | ||
|
|
e2a9236106 | ||
|
|
882bc19fdd | ||
|
|
09bb643ef6 | ||
|
|
767c4422ac | ||
|
|
07bf5dbacc | ||
|
|
dfd1917d9b | ||
|
|
a046794e68 | ||
|
|
1e4e18240d | ||
|
|
8b45f32b33 | ||
|
|
25c75c5fc4 | ||
|
|
485f0b9caf | ||
|
|
fa643b269e | ||
|
|
60ee4a34aa | ||
|
|
f33c062d78 | ||
|
|
fce5af14a8 | ||
|
|
497e0d2d98 | ||
|
|
e0c878df5f | ||
|
|
5433d9fe5c | ||
|
|
dc35b3a93e | ||
|
|
4e43f90244 | ||
|
|
4d1fd05740 | ||
|
|
0089378a0a | ||
|
|
7e3b084819 | ||
|
|
53c365b752 | ||
|
|
9c359b682b | ||
|
|
7174c4c328 | ||
|
|
9ecd25a93b | ||
|
|
5ea0c141b5 | ||
|
|
12fc72147c | ||
|
|
cf7e10aacc | ||
|
|
09b4cbd32c | ||
|
|
8645e88e0e | ||
|
|
fa2464e843 | ||
|
|
51699e671a | ||
|
|
14c0f74707 | ||
|
|
77582a01b5 | ||
|
|
d7a153bdd4 | ||
|
|
7b352159df | ||
|
|
00f34d5e68 | ||
|
|
f8d90a8972 | ||
|
|
27d4f1fc97 | ||
|
|
f2206b8dbc | ||
|
|
713297ee04 | ||
|
|
37aee4d3a0 | ||
|
|
5ec6e62656 | ||
|
|
bf467e136a | ||
|
|
e95d1653ac | ||
|
|
5dc69c6cdb | ||
|
|
7659dd60ba | ||
|
|
6d71f5ffd7 | ||
|
|
2bf3d536ea | ||
|
|
a7e50dfe7f | ||
|
|
6d98d2c6ed | ||
|
|
a4b8935427 | ||
|
|
7fdbb427bc | ||
|
|
e44f76bbe4 | ||
|
|
f8d10289b5 | ||
|
|
8908465546 | ||
|
|
0ddb572c03 | ||
|
|
7ce139bd2c | ||
|
|
ecb29b7fa5 | ||
|
|
3b90a084b4 | ||
|
|
21d714ab6e | ||
|
|
9f7a59536c | ||
|
|
18dac30874 | ||
|
|
dcd4a0077c | ||
|
|
46e1c4f177 | ||
|
|
952f2b0829 | ||
|
|
0b1c3938c6 | ||
|
|
a895274add | ||
|
|
f24dd61329 | ||
|
|
ce18bb98ab | ||
|
|
a4d63010c9 | ||
|
|
68be2b8938 | ||
|
|
8353564d92 | ||
|
|
27525523be | ||
|
|
bbc08e4f5e | ||
|
|
f148af1bd6 | ||
|
|
654f570b6e | ||
|
|
a9043f2e80 | ||
|
|
02d7a758fe | ||
|
|
5034749463 | ||
|
|
9af494d36c | ||
|
|
e9f29ab3d6 | ||
|
|
5e753d211f | ||
|
|
3838536126 | ||
|
|
4aef0ada9d | ||
|
|
03176b505c | ||
|
|
27d3089804 | ||
|
|
987b932a19 | ||
|
|
ba947d842a | ||
|
|
dad9bf87ef | ||
|
|
71ef10bb60 | ||
|
|
06acc9546f | ||
|
|
cb02c23c32 | ||
|
|
c49ffa9723 | ||
|
|
55cb9d9c1f | ||
|
|
f1003df810 | ||
|
|
e4b9169221 | ||
|
|
81e892d19e | ||
|
|
a931d49f3e | ||
|
|
daa89115d5 | ||
|
|
0c6c44ba0b | ||
|
|
26e30b3859 | ||
|
|
d3a2237a5a | ||
|
|
1ca4961b27 | ||
|
|
95373bb042 | ||
|
|
ec8076536e | ||
|
|
100b457743 | ||
|
|
c7ea0c5958 | ||
|
|
35654cd709 | ||
|
|
b5eba89598 | ||
|
|
d9b764860a | ||
|
|
771e5c7c0c | ||
|
|
464efb1162 | ||
|
|
ee15eca351 | ||
|
|
cb83a7c3fd | ||
|
|
332d7f4ee1 | ||
|
|
bf168174d0 | ||
|
|
185a908811 | ||
|
|
7a372a642b | ||
|
|
2dcee2ccfc | ||
|
|
7702d96b33 | ||
|
|
b62dd2b6ee | ||
|
|
916360e2e5 | ||
|
|
b318adddac | ||
|
|
c1b06ccee8 | ||
|
|
c04895b222 | ||
|
|
2ea7459a89 | ||
|
|
edef01f579 | ||
|
|
b1cd9d1598 | ||
|
|
d6b2b4b144 | ||
|
|
cbf66a8077 | ||
|
|
fc82de7aa7 | ||
|
|
111b6de46c | ||
|
|
512e588e40 | ||
|
|
4921dc2213 | ||
|
|
d8db6fa9da | ||
|
|
493232ce5a | ||
|
|
17cb26b8b9 | ||
|
|
a0a7a35fe2 | ||
|
|
75ca552a4e | ||
|
|
3000bc8748 | ||
|
|
5f4bccd672 | ||
|
|
0428438e72 | ||
|
|
21cf732e7f | ||
|
|
a3b1dc01ea | ||
|
|
b524edc209 | ||
|
|
77466e7b6d | ||
|
|
e43d2054d1 | ||
|
|
9d52d72ae5 | ||
|
|
5ec45e5f7f | ||
|
|
6d7a680187 | ||
|
|
2f5838eaaa | ||
|
|
13ca38e4e0 | ||
|
|
4615fffafb | ||
|
|
1eab4322f8 | ||
|
|
c38d62b233 | ||
|
|
8fc6aced6c | ||
|
|
3474e7abc1 | ||
|
|
a513e01b01 | ||
|
|
113a96be0d | ||
|
|
705b6ec15c | ||
|
|
7945baf640 | ||
|
|
3c2e97d82e | ||
|
|
0cb874c9e1 | ||
|
|
fcf5dd036d | ||
|
|
477ab61e3b | ||
|
|
d24ea7572f | ||
|
|
f97f0bbda6 | ||
|
|
a2c621bf8b | ||
|
|
4014be78dc | ||
|
|
bee82b6ac3 | ||
|
|
28c7f04001 | ||
|
|
dc0a45d429 | ||
|
|
171d525aa4 | ||
|
|
758022006a | ||
|
|
8bfcbeaf48 | ||
|
|
8410b1383f | ||
|
|
ce891b57e1 | ||
|
|
5c0895e27f | ||
|
|
db9298fd3e | ||
|
|
d43c3091b2 | ||
|
|
32ebbd60f9 | ||
|
|
883b4af51d | ||
|
|
efc0a67e00 | ||
|
|
71727464b8 | ||
|
|
5c1d5c1f06 | ||
|
|
3d1bbaf54f | ||
|
|
80caf947f3 | ||
|
|
086848a7ad | ||
|
|
a74b66352e | ||
|
|
4f2b7f1829 | ||
|
|
eabf93f6cf | ||
|
|
4adc23a52a | ||
|
|
9667789621 | ||
|
|
9eb0954cde | ||
|
|
81e7748fb5 | ||
|
|
303280dd71 | ||
|
|
1e1133ec66 | ||
|
|
c32f366dfa | ||
|
|
ebde595370 | ||
|
|
7b0bb931b1 | ||
|
|
51e8bd9bd8 | ||
|
|
9276dba712 | ||
|
|
029cc67915 | ||
|
|
17d51ceed0 | ||
|
|
9e416a7921 | ||
|
|
031c8a7f52 | ||
|
|
2428b35f6c | ||
|
|
ff0e5c0348 | ||
|
|
839fdb211c | ||
|
|
2b9a06933b | ||
|
|
2f5e1b621e | ||
|
|
dfc0131516 | ||
|
|
b76badd958 | ||
|
|
1eb55cbba8 | ||
|
|
9484d6528c | ||
|
|
83ffc1f00d | ||
|
|
f4d5395c4b | ||
|
|
f6cf7f9ec7 | ||
|
|
c75ebbccec | ||
|
|
d6d316e304 | ||
|
|
833612ba9a | ||
|
|
6eff48e9ff | ||
|
|
f3cea7e7df | ||
|
|
7f0c88b5da | ||
|
|
8e39ae2703 | ||
|
|
66648c2343 | ||
|
|
e83d8d6a13 | ||
|
|
4c7ac2dddd | ||
|
|
088816d496 | ||
|
|
463ca625e1 | ||
|
|
2c9055a8bd | ||
|
|
3a2a22f30d | ||
|
|
fae1402a6e | ||
|
|
aa1399f790 | ||
|
|
17e6d41366 |
@@ -7,6 +7,6 @@
|
|||||||
# https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding
|
# https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding
|
||||||
|
|
||||||
{
|
{
|
||||||
'chromium_checkout': 'refs/tags/96.0.4664.110',
|
'chromium_checkout': 'refs/tags/111.0.5563.148',
|
||||||
'depot_tools_checkout': 'e023d44820'
|
'depot_tools_checkout': '963e01c76c'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,8 +33,6 @@
|
|||||||
'chrome/browser/extensions/chrome_extension_web_contents_observer.*',
|
'chrome/browser/extensions/chrome_extension_web_contents_observer.*',
|
||||||
'chrome/browser/extensions/component_loader.*',
|
'chrome/browser/extensions/component_loader.*',
|
||||||
'chrome/browser/extensions/extension_service.*',
|
'chrome/browser/extensions/extension_service.*',
|
||||||
'chrome/browser/printing/print_view_manager*',
|
|
||||||
'chrome/browser/printing/printing_message_filter*',
|
|
||||||
'chrome/browser/profiles/profile.h',
|
'chrome/browser/profiles/profile.h',
|
||||||
'chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.*',
|
'chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.*',
|
||||||
'chrome/common/extensions/api/*_features.json',
|
'chrome/common/extensions/api/*_features.json',
|
||||||
@@ -43,7 +41,6 @@
|
|||||||
'content/browser/renderer_host/render_widget_host_view_base.*',
|
'content/browser/renderer_host/render_widget_host_view_base.*',
|
||||||
'content/public/browser/content_browser_client.*',
|
'content/public/browser/content_browser_client.*',
|
||||||
'content/public/browser/render_widget_host_view.h',
|
'content/public/browser/render_widget_host_view.h',
|
||||||
'content/public/browser/storage_partition.h',
|
|
||||||
'content/public/browser/web_contents_delegate.h',
|
'content/public/browser/web_contents_delegate.h',
|
||||||
'content/public/common/content_features.cc',
|
'content/public/common/content_features.cc',
|
||||||
'content/shell/BUILD.gn',
|
'content/shell/BUILD.gn',
|
||||||
|
|||||||
@@ -48,13 +48,13 @@
|
|||||||
# libgtk3.0-dev (required by the cefclient target only)
|
# libgtk3.0-dev (required by the cefclient target only)
|
||||||
#
|
#
|
||||||
# - MacOS requirements:
|
# - MacOS requirements:
|
||||||
# Xcode 12.2 to 13.0 building on MacOS 10.15.4 (Catalina) or newer. Only
|
# 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
|
# 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
|
# installed. Newer Xcode versions may not have been been tested and are not
|
||||||
# recommended.
|
# recommended.
|
||||||
#
|
#
|
||||||
# - Windows requirements:
|
# - Windows requirements:
|
||||||
# Visual Studio 2019 or newer building on Windows 7 or newer. Windows 10
|
# Visual Studio 2019 or newer building on Windows 10 or newer. Windows 10
|
||||||
# 64-bit is recommended. Newer versions will likely also work but may not have
|
# 64-bit is recommended. Newer versions will likely also work but may not have
|
||||||
# been tested.
|
# been tested.
|
||||||
#
|
#
|
||||||
@@ -234,3 +234,22 @@ endif()
|
|||||||
|
|
||||||
# Display configuration settings.
|
# Display configuration settings.
|
||||||
PRINT_CEF_CONFIG()
|
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.")
|
||||||
|
endif()
|
||||||
|
|||||||
22
README.md
22
README.md
@@ -9,8 +9,8 @@ The Chromium Embedded Framework (CEF) is a simple framework for embedding Chromi
|
|||||||
* Branches and Building - https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding
|
* Branches and Building - https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding
|
||||||
* Announcements - https://groups.google.com/forum/#!forum/cef-announce
|
* Announcements - https://groups.google.com/forum/#!forum/cef-announce
|
||||||
* Support Forum - http://www.magpcss.org/ceforum/
|
* Support Forum - http://www.magpcss.org/ceforum/
|
||||||
* CEF1 C++ API Docs - http://magpcss.org/ceforum/apidocs/
|
* Issue Tracker - https://github.com/chromiumembedded/cef/issues
|
||||||
* CEF3 C++ API Docs - http://magpcss.org/ceforum/apidocs3/
|
* C++ API Docs - [Stable release docs](https://cef-builds.spotifycdn.com/docs/stable.html) / [Beta release docs](https://cef-builds.spotifycdn.com/docs/beta.html)
|
||||||
* Downloads - https://cef-builds.spotifycdn.com/index.html
|
* Downloads - https://cef-builds.spotifycdn.com/index.html
|
||||||
* Donations - http://www.magpcss.org/ceforum/donate.php
|
* Donations - http://www.magpcss.org/ceforum/donate.php
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ Numerous individuals and organizations contribute time and resources to support
|
|||||||
|
|
||||||
# Getting Started
|
# Getting Started
|
||||||
|
|
||||||
Users new to CEF development should start by reading the [Tutorial](https://bitbucket.org/chromiumembedded/cef/wiki/Tutorial) Wiki page for an overview of CEF usage and then proceed to the [GeneralUsage](https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage) Wiki page for a more in-depth discussion or architectural and usage issues. Complete API documentation is available [here](http://magpcss.org/ceforum/apidocs3/). CEF support and related discussion is available on the [CEF Forum](http://www.magpcss.org/ceforum/).
|
Users new to CEF development should start by reading the [Tutorial](https://bitbucket.org/chromiumembedded/cef/wiki/Tutorial) Wiki page for an overview of CEF usage and then proceed to the [GeneralUsage](https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage) Wiki page for a more in-depth discussion or architectural and usage issues. Complete API documentation is available [here](https://cef-builds.spotifycdn.com/docs/stable.html). CEF support and related discussion is available on the [CEF Forum](http://www.magpcss.org/ceforum/).
|
||||||
|
|
||||||
# Binary Distributions
|
# Binary Distributions
|
||||||
|
|
||||||
@@ -45,15 +45,11 @@ The base CEF framework includes support for the C and C++ programming languages.
|
|||||||
|
|
||||||
* .Net (CEF3) - https://github.com/cefsharp/CefSharp
|
* .Net (CEF3) - https://github.com/cefsharp/CefSharp
|
||||||
* .Net (CEF1) - https://bitbucket.org/fddima/cefglue
|
* .Net (CEF1) - https://bitbucket.org/fddima/cefglue
|
||||||
* .Net/Mono (CEF3) - https://bitbucket.org/xilium/xilium.cefglue
|
* .Net/Mono (CEF3) - https://gitlab.com/xiliumhq/chromiumembedded/cefglue
|
||||||
* .Net (CEF3) - https://bitbucket.org/chromiumfx/chromiumfx
|
* Delphi - https://github.com/hgourvest/dcef3
|
||||||
* Delphi (CEF1) - http://code.google.com/p/delphichromiumembedded/
|
* Delphi - https://github.com/salvadordf/CEF4Delphi
|
||||||
* Delphi (CEF3) - https://github.com/hgourvest/dcef3
|
|
||||||
* Delphi (CEF3) - https://github.com/salvadordf/CEF4Delphi
|
|
||||||
* Go - https://github.com/richardwilkes/cef
|
|
||||||
* Go - https://github.com/CzarekTomczak/cef2go
|
* Go - https://github.com/CzarekTomczak/cef2go
|
||||||
* Java - https://bitbucket.org/chromiumembedded/java-cef
|
* Java - https://bitbucket.org/chromiumembedded/java-cef
|
||||||
* Java - http://code.google.com/p/javacef/
|
|
||||||
* Python - http://code.google.com/p/cefpython/
|
* Python - http://code.google.com/p/cefpython/
|
||||||
|
|
||||||
If you're the maintainer of a project not listed above and would like your project listed here please either post to the [CEF Forum](http://www.magpcss.org/ceforum/) or contact Marshall directly.
|
If you're the maintainer of a project not listed above and would like your project listed here please either post to the [CEF Forum](http://www.magpcss.org/ceforum/) or contact Marshall directly.
|
||||||
@@ -62,7 +58,7 @@ If you're the maintainer of a project not listed above and would like your proje
|
|||||||
|
|
||||||
CEF is still very much a work in progress. Some ways that you can help out:
|
CEF is still very much a work in progress. Some ways that you can help out:
|
||||||
|
|
||||||
\- Vote for issues in the [CEF issue tracker](https://bitbucket.org/chromiumembedded/cef/issues?status=new&status=open) that are important to you. This helps with development prioritization.
|
\- Vote for issues in the [CEF issue tracker](https://github.com/chromiumembedded/cef/issues) that are important to you. This helps with development prioritization.
|
||||||
|
|
||||||
\- Report any bugs that you find or feature requests that are important to you. Make sure to first search for existing issues before creating new ones. Please use the [CEF Forum](http://magpcss.org/ceforum) and not the issue tracker for usage questions. Each CEF issue should:
|
\- Report any bugs that you find or feature requests that are important to you. Make sure to first search for existing issues before creating new ones. Please use the [CEF Forum](http://magpcss.org/ceforum) and not the issue tracker for usage questions. Each CEF issue should:
|
||||||
|
|
||||||
@@ -73,7 +69,7 @@ CEF is still very much a work in progress. Some ways that you can help out:
|
|||||||
|
|
||||||
\- Write unit tests for new or existing functionality.
|
\- Write unit tests for new or existing functionality.
|
||||||
|
|
||||||
\- Pull requests and patches are welcome. View open issues in the [CEF issue tracker](https://bitbucket.org/chromiumembedded/cef/issues?status=new&status=open) or search for TODO(cef) in the source code for ideas.
|
\- Pull requests and patches are welcome. View open issues in the [CEF issue tracker](https://github.com/chromiumembedded/cef/issues) or search for TODO(cef) in the source code for ideas.
|
||||||
|
|
||||||
If you would like to contribute source code changes to CEF please follow the below guidelines:
|
If you would like to contribute source code changes to CEF please follow the below guidelines:
|
||||||
|
|
||||||
@@ -82,6 +78,6 @@ If you would like to contribute source code changes to CEF please follow the bel
|
|||||||
\- Submit a [pull request](https://bitbucket.org/chromiumembedded/cef/wiki/ContributingWithGit) or create a patch with your changes and attach it to the CEF issue. Changes should:
|
\- Submit a [pull request](https://bitbucket.org/chromiumembedded/cef/wiki/ContributingWithGit) or create a patch with your changes and attach it to the CEF issue. Changes should:
|
||||||
|
|
||||||
* Be submitted against the current [CEF master branch](https://bitbucket.org/chromiumembedded/cef/src/?at=master) unless explicitly fixing a bug in a CEF release branch.
|
* Be submitted against the current [CEF master branch](https://bitbucket.org/chromiumembedded/cef/src/?at=master) unless explicitly fixing a bug in a CEF release branch.
|
||||||
* Follow the style of existing CEF source files. In general CEF uses the [Chromium coding style](http://www.chromium.org/developers/coding-style).
|
* Follow the style of existing CEF source files. In general CEF uses the [Chromium C++ style guide](https://chromium.googlesource.com/chromium/src/+/master/styleguide/c++/c++.md).
|
||||||
* Include new or modified unit tests as appropriate to the functionality.
|
* Include new or modified unit tests as appropriate to the functionality.
|
||||||
* Not include unnecessary or unrelated changes.
|
* Not include unnecessary or unrelated changes.
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
python tools/gclient_hook.py
|
python3 tools/gclient_hook.py
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2021 The Chromium Embedded Framework Authors. All rights
|
# Copyright (c) 2023 The Chromium Embedded Framework Authors. All rights
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
# reserved. Use of this source code is governed by a BSD-style license that
|
||||||
# can be found in the LICENSE file.
|
# can be found in the LICENSE file.
|
||||||
#
|
#
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
# by hand. See the translator.README.txt file in the tools directory for
|
# by hand. See the translator.README.txt file in the tools directory for
|
||||||
# more information.
|
# more information.
|
||||||
#
|
#
|
||||||
# $hash=42b9ae0a0ee20489699d69dcdbcbf8ad3265f821$
|
# $hash=ab931540f6f4d80336123acea6cf51e701f5a63a$
|
||||||
#
|
#
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
'include/cef_browser_process_handler.h',
|
'include/cef_browser_process_handler.h',
|
||||||
'include/cef_callback.h',
|
'include/cef_callback.h',
|
||||||
'include/cef_client.h',
|
'include/cef_client.h',
|
||||||
|
'include/cef_command_handler.h',
|
||||||
'include/cef_command_line.h',
|
'include/cef_command_line.h',
|
||||||
'include/cef_context_menu_handler.h',
|
'include/cef_context_menu_handler.h',
|
||||||
'include/cef_cookie.h',
|
'include/cef_cookie.h',
|
||||||
@@ -54,6 +55,8 @@
|
|||||||
'include/cef_origin_whitelist.h',
|
'include/cef_origin_whitelist.h',
|
||||||
'include/cef_parser.h',
|
'include/cef_parser.h',
|
||||||
'include/cef_path_util.h',
|
'include/cef_path_util.h',
|
||||||
|
'include/cef_permission_handler.h',
|
||||||
|
'include/cef_preference.h',
|
||||||
'include/cef_print_handler.h',
|
'include/cef_print_handler.h',
|
||||||
'include/cef_print_settings.h',
|
'include/cef_print_settings.h',
|
||||||
'include/cef_process_message.h',
|
'include/cef_process_message.h',
|
||||||
@@ -73,6 +76,8 @@
|
|||||||
'include/cef_response_filter.h',
|
'include/cef_response_filter.h',
|
||||||
'include/cef_scheme.h',
|
'include/cef_scheme.h',
|
||||||
'include/cef_server.h',
|
'include/cef_server.h',
|
||||||
|
'include/cef_shared_memory_region.h',
|
||||||
|
'include/cef_shared_process_message_builder.h',
|
||||||
'include/cef_ssl_info.h',
|
'include/cef_ssl_info.h',
|
||||||
'include/cef_ssl_status.h',
|
'include/cef_ssl_status.h',
|
||||||
'include/cef_stream.h',
|
'include/cef_stream.h',
|
||||||
@@ -84,11 +89,11 @@
|
|||||||
'include/cef_v8.h',
|
'include/cef_v8.h',
|
||||||
'include/cef_values.h',
|
'include/cef_values.h',
|
||||||
'include/cef_waitable_event.h',
|
'include/cef_waitable_event.h',
|
||||||
'include/cef_web_plugin.h',
|
|
||||||
'include/cef_x509_certificate.h',
|
'include/cef_x509_certificate.h',
|
||||||
'include/cef_xml_reader.h',
|
'include/cef_xml_reader.h',
|
||||||
'include/cef_zip_reader.h',
|
'include/cef_zip_reader.h',
|
||||||
'include/test/cef_test_helpers.h',
|
'include/test/cef_test_helpers.h',
|
||||||
|
'include/test/cef_test_server.h',
|
||||||
'include/test/cef_translator_test.h',
|
'include/test/cef_translator_test.h',
|
||||||
'include/views/cef_box_layout.h',
|
'include/views/cef_box_layout.h',
|
||||||
'include/views/cef_browser_view.h',
|
'include/views/cef_browser_view.h',
|
||||||
@@ -121,6 +126,7 @@
|
|||||||
'include/capi/cef_browser_process_handler_capi.h',
|
'include/capi/cef_browser_process_handler_capi.h',
|
||||||
'include/capi/cef_callback_capi.h',
|
'include/capi/cef_callback_capi.h',
|
||||||
'include/capi/cef_client_capi.h',
|
'include/capi/cef_client_capi.h',
|
||||||
|
'include/capi/cef_command_handler_capi.h',
|
||||||
'include/capi/cef_command_line_capi.h',
|
'include/capi/cef_command_line_capi.h',
|
||||||
'include/capi/cef_context_menu_handler_capi.h',
|
'include/capi/cef_context_menu_handler_capi.h',
|
||||||
'include/capi/cef_cookie_capi.h',
|
'include/capi/cef_cookie_capi.h',
|
||||||
@@ -153,6 +159,8 @@
|
|||||||
'include/capi/cef_origin_whitelist_capi.h',
|
'include/capi/cef_origin_whitelist_capi.h',
|
||||||
'include/capi/cef_parser_capi.h',
|
'include/capi/cef_parser_capi.h',
|
||||||
'include/capi/cef_path_util_capi.h',
|
'include/capi/cef_path_util_capi.h',
|
||||||
|
'include/capi/cef_permission_handler_capi.h',
|
||||||
|
'include/capi/cef_preference_capi.h',
|
||||||
'include/capi/cef_print_handler_capi.h',
|
'include/capi/cef_print_handler_capi.h',
|
||||||
'include/capi/cef_print_settings_capi.h',
|
'include/capi/cef_print_settings_capi.h',
|
||||||
'include/capi/cef_process_message_capi.h',
|
'include/capi/cef_process_message_capi.h',
|
||||||
@@ -172,6 +180,8 @@
|
|||||||
'include/capi/cef_response_filter_capi.h',
|
'include/capi/cef_response_filter_capi.h',
|
||||||
'include/capi/cef_scheme_capi.h',
|
'include/capi/cef_scheme_capi.h',
|
||||||
'include/capi/cef_server_capi.h',
|
'include/capi/cef_server_capi.h',
|
||||||
|
'include/capi/cef_shared_memory_region_capi.h',
|
||||||
|
'include/capi/cef_shared_process_message_builder_capi.h',
|
||||||
'include/capi/cef_ssl_info_capi.h',
|
'include/capi/cef_ssl_info_capi.h',
|
||||||
'include/capi/cef_ssl_status_capi.h',
|
'include/capi/cef_ssl_status_capi.h',
|
||||||
'include/capi/cef_stream_capi.h',
|
'include/capi/cef_stream_capi.h',
|
||||||
@@ -183,11 +193,11 @@
|
|||||||
'include/capi/cef_v8_capi.h',
|
'include/capi/cef_v8_capi.h',
|
||||||
'include/capi/cef_values_capi.h',
|
'include/capi/cef_values_capi.h',
|
||||||
'include/capi/cef_waitable_event_capi.h',
|
'include/capi/cef_waitable_event_capi.h',
|
||||||
'include/capi/cef_web_plugin_capi.h',
|
|
||||||
'include/capi/cef_x509_certificate_capi.h',
|
'include/capi/cef_x509_certificate_capi.h',
|
||||||
'include/capi/cef_xml_reader_capi.h',
|
'include/capi/cef_xml_reader_capi.h',
|
||||||
'include/capi/cef_zip_reader_capi.h',
|
'include/capi/cef_zip_reader_capi.h',
|
||||||
'include/capi/test/cef_test_helpers_capi.h',
|
'include/capi/test/cef_test_helpers_capi.h',
|
||||||
|
'include/capi/test/cef_test_server_capi.h',
|
||||||
'include/capi/test/cef_translator_test_capi.h',
|
'include/capi/test/cef_translator_test_capi.h',
|
||||||
'include/capi/views/cef_box_layout_capi.h',
|
'include/capi/views/cef_box_layout_capi.h',
|
||||||
'include/capi/views/cef_browser_view_capi.h',
|
'include/capi/views/cef_browser_view_capi.h',
|
||||||
@@ -244,6 +254,8 @@
|
|||||||
'libcef_dll/cpptoc/callback_cpptoc.h',
|
'libcef_dll/cpptoc/callback_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/client_ctocpp.cc',
|
'libcef_dll/ctocpp/client_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/client_ctocpp.h',
|
'libcef_dll/ctocpp/client_ctocpp.h',
|
||||||
|
'libcef_dll/ctocpp/command_handler_ctocpp.cc',
|
||||||
|
'libcef_dll/ctocpp/command_handler_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/command_line_cpptoc.cc',
|
'libcef_dll/cpptoc/command_line_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/command_line_cpptoc.h',
|
'libcef_dll/cpptoc/command_line_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/completion_callback_ctocpp.cc',
|
'libcef_dll/ctocpp/completion_callback_ctocpp.cc',
|
||||||
@@ -326,6 +338,8 @@
|
|||||||
'libcef_dll/cpptoc/list_value_cpptoc.h',
|
'libcef_dll/cpptoc/list_value_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/load_handler_ctocpp.cc',
|
'libcef_dll/ctocpp/load_handler_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/load_handler_ctocpp.h',
|
'libcef_dll/ctocpp/load_handler_ctocpp.h',
|
||||||
|
'libcef_dll/cpptoc/media_access_callback_cpptoc.cc',
|
||||||
|
'libcef_dll/cpptoc/media_access_callback_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/media_observer_ctocpp.cc',
|
'libcef_dll/ctocpp/media_observer_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/media_observer_ctocpp.h',
|
'libcef_dll/ctocpp/media_observer_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/media_route_cpptoc.cc',
|
'libcef_dll/cpptoc/media_route_cpptoc.cc',
|
||||||
@@ -362,10 +376,18 @@
|
|||||||
'libcef_dll/ctocpp/views/panel_delegate_ctocpp.h',
|
'libcef_dll/ctocpp/views/panel_delegate_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/pdf_print_callback_ctocpp.cc',
|
'libcef_dll/ctocpp/pdf_print_callback_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/pdf_print_callback_ctocpp.h',
|
'libcef_dll/ctocpp/pdf_print_callback_ctocpp.h',
|
||||||
|
'libcef_dll/ctocpp/permission_handler_ctocpp.cc',
|
||||||
|
'libcef_dll/ctocpp/permission_handler_ctocpp.h',
|
||||||
|
'libcef_dll/cpptoc/permission_prompt_callback_cpptoc.cc',
|
||||||
|
'libcef_dll/cpptoc/permission_prompt_callback_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/post_data_cpptoc.cc',
|
'libcef_dll/cpptoc/post_data_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/post_data_cpptoc.h',
|
'libcef_dll/cpptoc/post_data_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/post_data_element_cpptoc.cc',
|
'libcef_dll/cpptoc/post_data_element_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/post_data_element_cpptoc.h',
|
'libcef_dll/cpptoc/post_data_element_cpptoc.h',
|
||||||
|
'libcef_dll/cpptoc/preference_manager_cpptoc.cc',
|
||||||
|
'libcef_dll/cpptoc/preference_manager_cpptoc.h',
|
||||||
|
'libcef_dll/cpptoc/preference_registrar_cpptoc.cc',
|
||||||
|
'libcef_dll/cpptoc/preference_registrar_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/print_dialog_callback_cpptoc.cc',
|
'libcef_dll/cpptoc/print_dialog_callback_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/print_dialog_callback_cpptoc.h',
|
'libcef_dll/cpptoc/print_dialog_callback_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/print_handler_ctocpp.cc',
|
'libcef_dll/ctocpp/print_handler_ctocpp.cc',
|
||||||
@@ -414,6 +436,8 @@
|
|||||||
'libcef_dll/cpptoc/run_context_menu_callback_cpptoc.h',
|
'libcef_dll/cpptoc/run_context_menu_callback_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/run_file_dialog_callback_ctocpp.cc',
|
'libcef_dll/ctocpp/run_file_dialog_callback_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/run_file_dialog_callback_ctocpp.h',
|
'libcef_dll/ctocpp/run_file_dialog_callback_ctocpp.h',
|
||||||
|
'libcef_dll/cpptoc/run_quick_menu_callback_cpptoc.cc',
|
||||||
|
'libcef_dll/cpptoc/run_quick_menu_callback_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/sslinfo_cpptoc.cc',
|
'libcef_dll/cpptoc/sslinfo_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/sslinfo_cpptoc.h',
|
'libcef_dll/cpptoc/sslinfo_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/sslstatus_cpptoc.cc',
|
'libcef_dll/cpptoc/sslstatus_cpptoc.cc',
|
||||||
@@ -432,6 +456,10 @@
|
|||||||
'libcef_dll/ctocpp/server_handler_ctocpp.h',
|
'libcef_dll/ctocpp/server_handler_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/set_cookie_callback_ctocpp.cc',
|
'libcef_dll/ctocpp/set_cookie_callback_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/set_cookie_callback_ctocpp.h',
|
'libcef_dll/ctocpp/set_cookie_callback_ctocpp.h',
|
||||||
|
'libcef_dll/cpptoc/shared_memory_region_cpptoc.cc',
|
||||||
|
'libcef_dll/cpptoc/shared_memory_region_cpptoc.h',
|
||||||
|
'libcef_dll/cpptoc/shared_process_message_builder_cpptoc.cc',
|
||||||
|
'libcef_dll/cpptoc/shared_process_message_builder_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/stream_reader_cpptoc.cc',
|
'libcef_dll/cpptoc/stream_reader_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/stream_reader_cpptoc.h',
|
'libcef_dll/cpptoc/stream_reader_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/stream_writer_cpptoc.cc',
|
'libcef_dll/cpptoc/stream_writer_cpptoc.cc',
|
||||||
@@ -442,6 +470,12 @@
|
|||||||
'libcef_dll/ctocpp/task_ctocpp.h',
|
'libcef_dll/ctocpp/task_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/task_runner_cpptoc.cc',
|
'libcef_dll/cpptoc/task_runner_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/task_runner_cpptoc.h',
|
'libcef_dll/cpptoc/task_runner_cpptoc.h',
|
||||||
|
'libcef_dll/cpptoc/test/test_server_cpptoc.cc',
|
||||||
|
'libcef_dll/cpptoc/test/test_server_cpptoc.h',
|
||||||
|
'libcef_dll/cpptoc/test/test_server_connection_cpptoc.cc',
|
||||||
|
'libcef_dll/cpptoc/test/test_server_connection_cpptoc.h',
|
||||||
|
'libcef_dll/ctocpp/test/test_server_handler_ctocpp.cc',
|
||||||
|
'libcef_dll/ctocpp/test/test_server_handler_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/views/textfield_cpptoc.cc',
|
'libcef_dll/cpptoc/views/textfield_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/views/textfield_cpptoc.h',
|
'libcef_dll/cpptoc/views/textfield_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/views/textfield_delegate_ctocpp.cc',
|
'libcef_dll/ctocpp/views/textfield_delegate_ctocpp.cc',
|
||||||
@@ -500,12 +534,6 @@
|
|||||||
'libcef_dll/ctocpp/views/view_delegate_ctocpp.h',
|
'libcef_dll/ctocpp/views/view_delegate_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/waitable_event_cpptoc.cc',
|
'libcef_dll/cpptoc/waitable_event_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/waitable_event_cpptoc.h',
|
'libcef_dll/cpptoc/waitable_event_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/web_plugin_info_cpptoc.cc',
|
|
||||||
'libcef_dll/cpptoc/web_plugin_info_cpptoc.h',
|
|
||||||
'libcef_dll/ctocpp/web_plugin_info_visitor_ctocpp.cc',
|
|
||||||
'libcef_dll/ctocpp/web_plugin_info_visitor_ctocpp.h',
|
|
||||||
'libcef_dll/ctocpp/web_plugin_unstable_callback_ctocpp.cc',
|
|
||||||
'libcef_dll/ctocpp/web_plugin_unstable_callback_ctocpp.h',
|
|
||||||
'libcef_dll/cpptoc/views/window_cpptoc.cc',
|
'libcef_dll/cpptoc/views/window_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/views/window_cpptoc.h',
|
'libcef_dll/cpptoc/views/window_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/views/window_delegate_ctocpp.cc',
|
'libcef_dll/ctocpp/views/window_delegate_ctocpp.cc',
|
||||||
@@ -554,6 +582,8 @@
|
|||||||
'libcef_dll/ctocpp/callback_ctocpp.h',
|
'libcef_dll/ctocpp/callback_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/client_cpptoc.cc',
|
'libcef_dll/cpptoc/client_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/client_cpptoc.h',
|
'libcef_dll/cpptoc/client_cpptoc.h',
|
||||||
|
'libcef_dll/cpptoc/command_handler_cpptoc.cc',
|
||||||
|
'libcef_dll/cpptoc/command_handler_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/command_line_ctocpp.cc',
|
'libcef_dll/ctocpp/command_line_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/command_line_ctocpp.h',
|
'libcef_dll/ctocpp/command_line_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/completion_callback_cpptoc.cc',
|
'libcef_dll/cpptoc/completion_callback_cpptoc.cc',
|
||||||
@@ -636,6 +666,8 @@
|
|||||||
'libcef_dll/ctocpp/list_value_ctocpp.h',
|
'libcef_dll/ctocpp/list_value_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/load_handler_cpptoc.cc',
|
'libcef_dll/cpptoc/load_handler_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/load_handler_cpptoc.h',
|
'libcef_dll/cpptoc/load_handler_cpptoc.h',
|
||||||
|
'libcef_dll/ctocpp/media_access_callback_ctocpp.cc',
|
||||||
|
'libcef_dll/ctocpp/media_access_callback_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/media_observer_cpptoc.cc',
|
'libcef_dll/cpptoc/media_observer_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/media_observer_cpptoc.h',
|
'libcef_dll/cpptoc/media_observer_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/media_route_ctocpp.cc',
|
'libcef_dll/ctocpp/media_route_ctocpp.cc',
|
||||||
@@ -672,10 +704,18 @@
|
|||||||
'libcef_dll/cpptoc/views/panel_delegate_cpptoc.h',
|
'libcef_dll/cpptoc/views/panel_delegate_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/pdf_print_callback_cpptoc.cc',
|
'libcef_dll/cpptoc/pdf_print_callback_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/pdf_print_callback_cpptoc.h',
|
'libcef_dll/cpptoc/pdf_print_callback_cpptoc.h',
|
||||||
|
'libcef_dll/cpptoc/permission_handler_cpptoc.cc',
|
||||||
|
'libcef_dll/cpptoc/permission_handler_cpptoc.h',
|
||||||
|
'libcef_dll/ctocpp/permission_prompt_callback_ctocpp.cc',
|
||||||
|
'libcef_dll/ctocpp/permission_prompt_callback_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/post_data_ctocpp.cc',
|
'libcef_dll/ctocpp/post_data_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/post_data_ctocpp.h',
|
'libcef_dll/ctocpp/post_data_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/post_data_element_ctocpp.cc',
|
'libcef_dll/ctocpp/post_data_element_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/post_data_element_ctocpp.h',
|
'libcef_dll/ctocpp/post_data_element_ctocpp.h',
|
||||||
|
'libcef_dll/ctocpp/preference_manager_ctocpp.cc',
|
||||||
|
'libcef_dll/ctocpp/preference_manager_ctocpp.h',
|
||||||
|
'libcef_dll/ctocpp/preference_registrar_ctocpp.cc',
|
||||||
|
'libcef_dll/ctocpp/preference_registrar_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/print_dialog_callback_ctocpp.cc',
|
'libcef_dll/ctocpp/print_dialog_callback_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/print_dialog_callback_ctocpp.h',
|
'libcef_dll/ctocpp/print_dialog_callback_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/print_handler_cpptoc.cc',
|
'libcef_dll/cpptoc/print_handler_cpptoc.cc',
|
||||||
@@ -724,6 +764,8 @@
|
|||||||
'libcef_dll/ctocpp/run_context_menu_callback_ctocpp.h',
|
'libcef_dll/ctocpp/run_context_menu_callback_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.cc',
|
'libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.h',
|
'libcef_dll/cpptoc/run_file_dialog_callback_cpptoc.h',
|
||||||
|
'libcef_dll/ctocpp/run_quick_menu_callback_ctocpp.cc',
|
||||||
|
'libcef_dll/ctocpp/run_quick_menu_callback_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/sslinfo_ctocpp.cc',
|
'libcef_dll/ctocpp/sslinfo_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/sslinfo_ctocpp.h',
|
'libcef_dll/ctocpp/sslinfo_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/sslstatus_ctocpp.cc',
|
'libcef_dll/ctocpp/sslstatus_ctocpp.cc',
|
||||||
@@ -742,6 +784,10 @@
|
|||||||
'libcef_dll/cpptoc/server_handler_cpptoc.h',
|
'libcef_dll/cpptoc/server_handler_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/set_cookie_callback_cpptoc.cc',
|
'libcef_dll/cpptoc/set_cookie_callback_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/set_cookie_callback_cpptoc.h',
|
'libcef_dll/cpptoc/set_cookie_callback_cpptoc.h',
|
||||||
|
'libcef_dll/ctocpp/shared_memory_region_ctocpp.cc',
|
||||||
|
'libcef_dll/ctocpp/shared_memory_region_ctocpp.h',
|
||||||
|
'libcef_dll/ctocpp/shared_process_message_builder_ctocpp.cc',
|
||||||
|
'libcef_dll/ctocpp/shared_process_message_builder_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/stream_reader_ctocpp.cc',
|
'libcef_dll/ctocpp/stream_reader_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/stream_reader_ctocpp.h',
|
'libcef_dll/ctocpp/stream_reader_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/stream_writer_ctocpp.cc',
|
'libcef_dll/ctocpp/stream_writer_ctocpp.cc',
|
||||||
@@ -752,6 +798,12 @@
|
|||||||
'libcef_dll/cpptoc/task_cpptoc.h',
|
'libcef_dll/cpptoc/task_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/task_runner_ctocpp.cc',
|
'libcef_dll/ctocpp/task_runner_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/task_runner_ctocpp.h',
|
'libcef_dll/ctocpp/task_runner_ctocpp.h',
|
||||||
|
'libcef_dll/ctocpp/test/test_server_ctocpp.cc',
|
||||||
|
'libcef_dll/ctocpp/test/test_server_ctocpp.h',
|
||||||
|
'libcef_dll/ctocpp/test/test_server_connection_ctocpp.cc',
|
||||||
|
'libcef_dll/ctocpp/test/test_server_connection_ctocpp.h',
|
||||||
|
'libcef_dll/cpptoc/test/test_server_handler_cpptoc.cc',
|
||||||
|
'libcef_dll/cpptoc/test/test_server_handler_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/views/textfield_ctocpp.cc',
|
'libcef_dll/ctocpp/views/textfield_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/views/textfield_ctocpp.h',
|
'libcef_dll/ctocpp/views/textfield_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/views/textfield_delegate_cpptoc.cc',
|
'libcef_dll/cpptoc/views/textfield_delegate_cpptoc.cc',
|
||||||
@@ -810,12 +862,6 @@
|
|||||||
'libcef_dll/cpptoc/views/view_delegate_cpptoc.h',
|
'libcef_dll/cpptoc/views/view_delegate_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/waitable_event_ctocpp.cc',
|
'libcef_dll/ctocpp/waitable_event_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/waitable_event_ctocpp.h',
|
'libcef_dll/ctocpp/waitable_event_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/web_plugin_info_ctocpp.cc',
|
|
||||||
'libcef_dll/ctocpp/web_plugin_info_ctocpp.h',
|
|
||||||
'libcef_dll/cpptoc/web_plugin_info_visitor_cpptoc.cc',
|
|
||||||
'libcef_dll/cpptoc/web_plugin_info_visitor_cpptoc.h',
|
|
||||||
'libcef_dll/cpptoc/web_plugin_unstable_callback_cpptoc.cc',
|
|
||||||
'libcef_dll/cpptoc/web_plugin_unstable_callback_cpptoc.h',
|
|
||||||
'libcef_dll/ctocpp/views/window_ctocpp.cc',
|
'libcef_dll/ctocpp/views/window_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/views/window_ctocpp.h',
|
'libcef_dll/ctocpp/views/window_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/views/window_delegate_cpptoc.cc',
|
'libcef_dll/cpptoc/views/window_delegate_cpptoc.cc',
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
'include/base/cef_callback_list.h',
|
'include/base/cef_callback_list.h',
|
||||||
'include/base/cef_cancelable_callback.h',
|
'include/base/cef_cancelable_callback.h',
|
||||||
'include/base/cef_compiler_specific.h',
|
'include/base/cef_compiler_specific.h',
|
||||||
'include/base/cef_cxx17_backports.h',
|
|
||||||
'include/base/cef_lock.h',
|
'include/base/cef_lock.h',
|
||||||
'include/base/cef_logging.h',
|
'include/base/cef_logging.h',
|
||||||
'include/base/cef_macros.h',
|
'include/base/cef_macros.h',
|
||||||
@@ -38,11 +37,11 @@
|
|||||||
'include/base/internal/cef_thread_checker_impl.h',
|
'include/base/internal/cef_thread_checker_impl.h',
|
||||||
'include/cef_api_hash.h',
|
'include/cef_api_hash.h',
|
||||||
'include/cef_base.h',
|
'include/cef_base.h',
|
||||||
'include/cef_config.h',
|
|
||||||
'include/cef_version.h',
|
'include/cef_version.h',
|
||||||
'include/internal/cef_export.h',
|
'include/internal/cef_export.h',
|
||||||
'include/internal/cef_ptr.h',
|
'include/internal/cef_ptr.h',
|
||||||
'include/internal/cef_string_wrappers.h',
|
'include/internal/cef_string_wrappers.h',
|
||||||
|
'include/internal/cef_time_wrappers.h',
|
||||||
'include/internal/cef_types_wrappers.h',
|
'include/internal/cef_types_wrappers.h',
|
||||||
],
|
],
|
||||||
'includes_common_capi': [
|
'includes_common_capi': [
|
||||||
@@ -80,6 +79,7 @@
|
|||||||
'include/internal/cef_win.h',
|
'include/internal/cef_win.h',
|
||||||
],
|
],
|
||||||
'includes_win_capi': [
|
'includes_win_capi': [
|
||||||
|
'include/internal/cef_app_win.h',
|
||||||
'include/internal/cef_types_win.h',
|
'include/internal/cef_types_win.h',
|
||||||
],
|
],
|
||||||
'includes_mac': [
|
'includes_mac': [
|
||||||
@@ -113,6 +113,7 @@
|
|||||||
'libcef_dll/resource.h',
|
'libcef_dll/resource.h',
|
||||||
'libcef_dll/shutdown_checker.cc',
|
'libcef_dll/shutdown_checker.cc',
|
||||||
'libcef_dll/shutdown_checker.h',
|
'libcef_dll/shutdown_checker.h',
|
||||||
|
'libcef_dll/template_util.h',
|
||||||
'libcef_dll/transfer_util.cc',
|
'libcef_dll/transfer_util.cc',
|
||||||
'libcef_dll/transfer_util.h',
|
'libcef_dll/transfer_util.h',
|
||||||
'libcef_dll/wrapper_types.h',
|
'libcef_dll/wrapper_types.h',
|
||||||
@@ -139,6 +140,7 @@
|
|||||||
'libcef_dll/ctocpp/ctocpp_scoped.h',
|
'libcef_dll/ctocpp/ctocpp_scoped.h',
|
||||||
'libcef_dll/shutdown_checker.cc',
|
'libcef_dll/shutdown_checker.cc',
|
||||||
'libcef_dll/shutdown_checker.h',
|
'libcef_dll/shutdown_checker.h',
|
||||||
|
'libcef_dll/template_util.h',
|
||||||
'libcef_dll/transfer_util.cc',
|
'libcef_dll/transfer_util.cc',
|
||||||
'libcef_dll/transfer_util.h',
|
'libcef_dll/transfer_util.h',
|
||||||
'libcef_dll/wrapper_types.h',
|
'libcef_dll/wrapper_types.h',
|
||||||
@@ -176,12 +178,16 @@
|
|||||||
'tests/shared/browser/resource_util.h',
|
'tests/shared/browser/resource_util.h',
|
||||||
],
|
],
|
||||||
'shared_sources_common': [
|
'shared_sources_common': [
|
||||||
|
'tests/shared/common/binary_value_utils.cc',
|
||||||
|
'tests/shared/common/binary_value_utils.h',
|
||||||
'tests/shared/common/client_app.cc',
|
'tests/shared/common/client_app.cc',
|
||||||
'tests/shared/common/client_app.h',
|
'tests/shared/common/client_app.h',
|
||||||
'tests/shared/common/client_app_other.cc',
|
'tests/shared/common/client_app_other.cc',
|
||||||
'tests/shared/common/client_app_other.h',
|
'tests/shared/common/client_app_other.h',
|
||||||
'tests/shared/common/client_switches.cc',
|
'tests/shared/common/client_switches.cc',
|
||||||
'tests/shared/common/client_switches.h',
|
'tests/shared/common/client_switches.h',
|
||||||
|
'tests/shared/common/string_util.cc',
|
||||||
|
'tests/shared/common/string_util.h',
|
||||||
],
|
],
|
||||||
'shared_sources_renderer': [
|
'shared_sources_renderer': [
|
||||||
'tests/shared/renderer/client_app_renderer.cc',
|
'tests/shared/renderer/client_app_renderer.cc',
|
||||||
@@ -228,7 +234,11 @@
|
|||||||
'tests/cefclient/browser/client_handler_osr.h',
|
'tests/cefclient/browser/client_handler_osr.h',
|
||||||
'tests/cefclient/browser/client_handler_std.cc',
|
'tests/cefclient/browser/client_handler_std.cc',
|
||||||
'tests/cefclient/browser/client_handler_std.h',
|
'tests/cefclient/browser/client_handler_std.h',
|
||||||
|
'tests/cefclient/browser/client_prefs.cc',
|
||||||
|
'tests/cefclient/browser/client_prefs.h',
|
||||||
'tests/cefclient/browser/client_types.h',
|
'tests/cefclient/browser/client_types.h',
|
||||||
|
'tests/cefclient/browser/default_client_handler.cc',
|
||||||
|
'tests/cefclient/browser/default_client_handler.h',
|
||||||
'tests/cefclient/browser/dialog_test.cc',
|
'tests/cefclient/browser/dialog_test.cc',
|
||||||
'tests/cefclient/browser/dialog_test.h',
|
'tests/cefclient/browser/dialog_test.h',
|
||||||
'tests/cefclient/browser/image_cache.cc',
|
'tests/cefclient/browser/image_cache.cc',
|
||||||
@@ -288,6 +298,8 @@
|
|||||||
'tests/cefclient/renderer/client_app_delegates_renderer.cc',
|
'tests/cefclient/renderer/client_app_delegates_renderer.cc',
|
||||||
'tests/cefclient/renderer/client_renderer.cc',
|
'tests/cefclient/renderer/client_renderer.cc',
|
||||||
'tests/cefclient/renderer/client_renderer.h',
|
'tests/cefclient/renderer/client_renderer.h',
|
||||||
|
'tests/cefclient/renderer/ipc_performance_test.cc',
|
||||||
|
'tests/cefclient/renderer/ipc_performance_test.h',
|
||||||
'tests/cefclient/renderer/performance_test.cc',
|
'tests/cefclient/renderer/performance_test.cc',
|
||||||
'tests/cefclient/renderer/performance_test.h',
|
'tests/cefclient/renderer/performance_test.h',
|
||||||
'tests/cefclient/renderer/performance_test_setup.h',
|
'tests/cefclient/renderer/performance_test_setup.h',
|
||||||
@@ -297,6 +309,7 @@
|
|||||||
'tests/cefclient/resources/binding.html',
|
'tests/cefclient/resources/binding.html',
|
||||||
'tests/cefclient/resources/dialogs.html',
|
'tests/cefclient/resources/dialogs.html',
|
||||||
'tests/cefclient/resources/draggable.html',
|
'tests/cefclient/resources/draggable.html',
|
||||||
|
'tests/cefclient/resources/ipc_performance.html',
|
||||||
'tests/cefclient/resources/localstorage.html',
|
'tests/cefclient/resources/localstorage.html',
|
||||||
'tests/cefclient/resources/logo.png',
|
'tests/cefclient/resources/logo.png',
|
||||||
'tests/cefclient/resources/media_router.html',
|
'tests/cefclient/resources/media_router.html',
|
||||||
@@ -380,6 +393,7 @@
|
|||||||
'tests/cefclient/browser/temp_window_mac.mm',
|
'tests/cefclient/browser/temp_window_mac.mm',
|
||||||
'tests/cefclient/browser/text_input_client_osr_mac.h',
|
'tests/cefclient/browser/text_input_client_osr_mac.h',
|
||||||
'tests/cefclient/browser/text_input_client_osr_mac.mm',
|
'tests/cefclient/browser/text_input_client_osr_mac.mm',
|
||||||
|
'tests/cefclient/browser/views_window_mac.mm',
|
||||||
'tests/cefclient/browser/window_test_runner_mac.h',
|
'tests/cefclient/browser/window_test_runner_mac.h',
|
||||||
'tests/cefclient/browser/window_test_runner_mac.mm',
|
'tests/cefclient/browser/window_test_runner_mac.mm',
|
||||||
'tests/cefclient/cefclient_mac.mm',
|
'tests/cefclient/cefclient_mac.mm',
|
||||||
@@ -447,9 +461,16 @@
|
|||||||
'tests/cefsimple/cefsimple_linux.cc',
|
'tests/cefsimple/cefsimple_linux.cc',
|
||||||
'tests/cefsimple/simple_handler_linux.cc',
|
'tests/cefsimple/simple_handler_linux.cc',
|
||||||
],
|
],
|
||||||
|
'ceftests_data_resources': [
|
||||||
|
'tests/ceftests/resources/net/data/ssl/certificates/expired_cert.pem',
|
||||||
|
'tests/ceftests/resources/net/data/ssl/certificates/localhost_cert.pem',
|
||||||
|
'tests/ceftests/resources/net/data/ssl/certificates/ok_cert.pem',
|
||||||
|
'tests/ceftests/resources/net/data/ssl/certificates/root_ca_cert.pem',
|
||||||
|
],
|
||||||
'ceftests_sources_common': [
|
'ceftests_sources_common': [
|
||||||
'tests/ceftests/audio_output_unittest.cc',
|
'tests/ceftests/audio_output_unittest.cc',
|
||||||
'tests/ceftests/browser_info_map_unittest.cc',
|
'tests/ceftests/browser_info_map_unittest.cc',
|
||||||
|
'tests/ceftests/certificate_error_unittest.cc',
|
||||||
'tests/ceftests/command_line_unittest.cc',
|
'tests/ceftests/command_line_unittest.cc',
|
||||||
'tests/ceftests/cookie_unittest.cc',
|
'tests/ceftests/cookie_unittest.cc',
|
||||||
'tests/ceftests/cors_unittest.cc',
|
'tests/ceftests/cors_unittest.cc',
|
||||||
@@ -469,18 +490,26 @@
|
|||||||
'tests/ceftests/file_util_unittest.cc',
|
'tests/ceftests/file_util_unittest.cc',
|
||||||
'tests/ceftests/frame_handler_unittest.cc',
|
'tests/ceftests/frame_handler_unittest.cc',
|
||||||
'tests/ceftests/frame_unittest.cc',
|
'tests/ceftests/frame_unittest.cc',
|
||||||
|
'tests/ceftests/hsts_redirect_unittest.cc',
|
||||||
'tests/ceftests/image_unittest.cc',
|
'tests/ceftests/image_unittest.cc',
|
||||||
'tests/ceftests/image_util.cc',
|
'tests/ceftests/image_util.cc',
|
||||||
'tests/ceftests/image_util.h',
|
'tests/ceftests/image_util.h',
|
||||||
'tests/ceftests/jsdialog_unittest.cc',
|
'tests/ceftests/jsdialog_unittest.cc',
|
||||||
'tests/ceftests/life_span_unittest.cc',
|
'tests/ceftests/life_span_unittest.cc',
|
||||||
'tests/ceftests/message_router_unittest.cc',
|
'tests/ceftests/media_access_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',
|
||||||
|
'tests/ceftests/message_router_threshold_unittest.cc',
|
||||||
|
'tests/ceftests/message_router_unittest_utils.cc',
|
||||||
|
'tests/ceftests/message_router_unittest_utils.h',
|
||||||
'tests/ceftests/navigation_unittest.cc',
|
'tests/ceftests/navigation_unittest.cc',
|
||||||
'tests/ceftests/os_rendering_unittest.cc',
|
'tests/ceftests/os_rendering_unittest.cc',
|
||||||
'tests/ceftests/osr_accessibility_unittest.cc',
|
'tests/ceftests/osr_accessibility_unittest.cc',
|
||||||
'tests/ceftests/osr_display_unittest.cc',
|
'tests/ceftests/osr_display_unittest.cc',
|
||||||
'tests/ceftests/parser_unittest.cc',
|
'tests/ceftests/parser_unittest.cc',
|
||||||
'tests/ceftests/plugin_unittest.cc',
|
'tests/ceftests/pdf_viewer_unittest.cc',
|
||||||
|
'tests/ceftests/permission_prompt_unittest.cc',
|
||||||
'tests/ceftests/preference_unittest.cc',
|
'tests/ceftests/preference_unittest.cc',
|
||||||
'tests/ceftests/print_unittest.cc',
|
'tests/ceftests/print_unittest.cc',
|
||||||
'tests/ceftests/process_message_unittest.cc',
|
'tests/ceftests/process_message_unittest.cc',
|
||||||
@@ -497,6 +526,8 @@
|
|||||||
'tests/ceftests/scheme_handler_unittest.cc',
|
'tests/ceftests/scheme_handler_unittest.cc',
|
||||||
'tests/ceftests/scoped_temp_dir_unittest.cc',
|
'tests/ceftests/scoped_temp_dir_unittest.cc',
|
||||||
'tests/ceftests/server_unittest.cc',
|
'tests/ceftests/server_unittest.cc',
|
||||||
|
'tests/ceftests/send_shared_process_message_unittest.cc',
|
||||||
|
"tests/ceftests/shared_process_message_unittest.cc",
|
||||||
'tests/ceftests/stream_unittest.cc',
|
'tests/ceftests/stream_unittest.cc',
|
||||||
'tests/ceftests/stream_resource_handler_unittest.cc',
|
'tests/ceftests/stream_resource_handler_unittest.cc',
|
||||||
'tests/ceftests/string_unittest.cc',
|
'tests/ceftests/string_unittest.cc',
|
||||||
@@ -508,11 +539,21 @@
|
|||||||
'tests/ceftests/test_request.h',
|
'tests/ceftests/test_request.h',
|
||||||
'tests/ceftests/test_server.cc',
|
'tests/ceftests/test_server.cc',
|
||||||
'tests/ceftests/test_server.h',
|
'tests/ceftests/test_server.h',
|
||||||
|
'tests/ceftests/test_server_observer.h',
|
||||||
|
'tests/ceftests/test_server_observer.cc',
|
||||||
|
'tests/ceftests/test_server_observer_unittest.cc',
|
||||||
|
'tests/ceftests/test_server_manager.h',
|
||||||
|
'tests/ceftests/test_server_manager.cc',
|
||||||
|
'tests/ceftests/test_server_runner.h',
|
||||||
|
'tests/ceftests/test_server_runner.cc',
|
||||||
|
'tests/ceftests/test_server_runner_normal.cc',
|
||||||
|
'tests/ceftests/test_server_runner_test.cc',
|
||||||
'tests/ceftests/test_server_unittest.cc',
|
'tests/ceftests/test_server_unittest.cc',
|
||||||
'tests/ceftests/test_suite.cc',
|
'tests/ceftests/test_suite.cc',
|
||||||
'tests/ceftests/test_suite.h',
|
'tests/ceftests/test_suite.h',
|
||||||
'tests/ceftests/test_util.cc',
|
'tests/ceftests/test_util.cc',
|
||||||
'tests/ceftests/test_util.h',
|
'tests/ceftests/test_util.h',
|
||||||
|
'tests/ceftests/time_unittest.cc',
|
||||||
'tests/ceftests/thread_helper.cc',
|
'tests/ceftests/thread_helper.cc',
|
||||||
'tests/ceftests/thread_helper.h',
|
'tests/ceftests/thread_helper.h',
|
||||||
'tests/ceftests/thread_unittest.cc',
|
'tests/ceftests/thread_unittest.cc',
|
||||||
@@ -536,6 +577,7 @@
|
|||||||
'tests/ceftests/zip_reader_unittest.cc',
|
'tests/ceftests/zip_reader_unittest.cc',
|
||||||
],
|
],
|
||||||
'ceftests_sources_win': [
|
'ceftests_sources_win': [
|
||||||
|
'tests/ceftests/resource_util_win_dir.cc',
|
||||||
'tests/ceftests/resource_util_win_idmap.cc',
|
'tests/ceftests/resource_util_win_idmap.cc',
|
||||||
'tests/ceftests/resources/win/ceftests.rc',
|
'tests/ceftests/resources/win/ceftests.rc',
|
||||||
],
|
],
|
||||||
@@ -561,9 +603,16 @@
|
|||||||
'tests/ceftests/cors_unittest.cc',
|
'tests/ceftests/cors_unittest.cc',
|
||||||
'tests/ceftests/dom_unittest.cc',
|
'tests/ceftests/dom_unittest.cc',
|
||||||
'tests/ceftests/frame_unittest.cc',
|
'tests/ceftests/frame_unittest.cc',
|
||||||
'tests/ceftests/message_router_unittest.cc',
|
'tests/ceftests/media_access_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',
|
||||||
|
'tests/ceftests/message_router_threshold_unittest.cc',
|
||||||
|
'tests/ceftests/message_router_unittest_utils.cc',
|
||||||
|
'tests/ceftests/message_router_unittest_utils.h',
|
||||||
'tests/ceftests/navigation_unittest.cc',
|
'tests/ceftests/navigation_unittest.cc',
|
||||||
'tests/ceftests/plugin_unittest.cc',
|
'tests/ceftests/pdf_viewer_unittest.cc',
|
||||||
|
'tests/ceftests/permission_prompt_unittest.cc',
|
||||||
'tests/ceftests/preference_unittest.cc',
|
'tests/ceftests/preference_unittest.cc',
|
||||||
'tests/ceftests/process_message_unittest.cc',
|
'tests/ceftests/process_message_unittest.cc',
|
||||||
'tests/ceftests/request_handler_unittest.cc',
|
'tests/ceftests/request_handler_unittest.cc',
|
||||||
@@ -573,6 +622,8 @@
|
|||||||
'tests/ceftests/routing_test_handler.cc',
|
'tests/ceftests/routing_test_handler.cc',
|
||||||
'tests/ceftests/routing_test_handler.h',
|
'tests/ceftests/routing_test_handler.h',
|
||||||
'tests/ceftests/scheme_handler_unittest.cc',
|
'tests/ceftests/scheme_handler_unittest.cc',
|
||||||
|
'tests/ceftests/send_shared_process_message_unittest.cc',
|
||||||
|
"tests/ceftests/shared_process_message_unittest.cc",
|
||||||
'tests/ceftests/urlrequest_unittest.cc',
|
'tests/ceftests/urlrequest_unittest.cc',
|
||||||
'tests/ceftests/test_handler.cc',
|
'tests/ceftests/test_handler.cc',
|
||||||
'tests/ceftests/test_handler.h',
|
'tests/ceftests/test_handler.h',
|
||||||
@@ -580,6 +631,14 @@
|
|||||||
'tests/ceftests/test_request.h',
|
'tests/ceftests/test_request.h',
|
||||||
'tests/ceftests/test_server.cc',
|
'tests/ceftests/test_server.cc',
|
||||||
'tests/ceftests/test_server.h',
|
'tests/ceftests/test_server.h',
|
||||||
|
'tests/ceftests/test_server_observer.h',
|
||||||
|
'tests/ceftests/test_server_observer.cc',
|
||||||
|
'tests/ceftests/test_server_manager.h',
|
||||||
|
'tests/ceftests/test_server_manager.cc',
|
||||||
|
'tests/ceftests/test_server_runner.h',
|
||||||
|
'tests/ceftests/test_server_runner.cc',
|
||||||
|
'tests/ceftests/test_server_runner_normal.cc',
|
||||||
|
'tests/ceftests/test_server_runner_test.cc',
|
||||||
'tests/ceftests/test_suite.cc',
|
'tests/ceftests/test_suite.cc',
|
||||||
'tests/ceftests/test_suite.h',
|
'tests/ceftests/test_suite.h',
|
||||||
'tests/ceftests/test_util.cc',
|
'tests/ceftests/test_util.cc',
|
||||||
|
|||||||
@@ -95,14 +95,36 @@ macro(SET_CEF_TARGET_OUT_DIR)
|
|||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
# Copy a list of files from one directory to another. Relative files paths are maintained.
|
# Copy a list of files from one directory to another. Relative file paths are maintained.
|
||||||
# The path component of the source |file_list| will be removed.
|
|
||||||
macro(COPY_FILES target file_list source_dir target_dir)
|
macro(COPY_FILES target file_list source_dir target_dir)
|
||||||
foreach(FILENAME ${file_list})
|
foreach(FILENAME ${file_list})
|
||||||
set(source_file ${source_dir}/${FILENAME})
|
set(source_file ${source_dir}/${FILENAME})
|
||||||
|
|
||||||
|
# Remove the target file path component.
|
||||||
get_filename_component(target_name ${FILENAME} NAME)
|
get_filename_component(target_name ${FILENAME} NAME)
|
||||||
set(target_file ${target_dir}/${target_name})
|
set(target_file ${target_dir}/${target_name})
|
||||||
|
|
||||||
|
COPY_SINGLE_FILE(${target} ${source_file} ${target_file})
|
||||||
|
endforeach()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
# Copy a list of files from one directory to another. Relative file paths are maintained.
|
||||||
|
macro(COPY_RESOURCES target file_list prefix_list source_dir target_dir)
|
||||||
|
foreach(FILENAME ${file_list})
|
||||||
|
set(source_file ${source_dir}/${FILENAME})
|
||||||
|
|
||||||
|
# Remove one or more prefixes from the source paths.
|
||||||
|
set(TARGET_FILENAME "${FILENAME}")
|
||||||
|
foreach(PREFIX ${prefix_list})
|
||||||
|
string(REGEX REPLACE "^.*${PREFIX}" "" TARGET_FILENAME ${TARGET_FILENAME})
|
||||||
|
endforeach()
|
||||||
|
set(target_file ${target_dir}/${TARGET_FILENAME})
|
||||||
|
|
||||||
|
COPY_SINGLE_FILE(${target} ${source_file} ${target_file})
|
||||||
|
endforeach()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
macro(COPY_SINGLE_FILE target source_file target_file)
|
||||||
string(FIND ${source_file} "$<CONFIGURATION>" _pos)
|
string(FIND ${source_file} "$<CONFIGURATION>" _pos)
|
||||||
if(NOT ${_pos} EQUAL -1)
|
if(NOT ${_pos} EQUAL -1)
|
||||||
# Must test with an actual configuration directory.
|
# Must test with an actual configuration directory.
|
||||||
@@ -129,7 +151,6 @@ macro(COPY_FILES target file_list source_dir target_dir)
|
|||||||
VERBATIM
|
VERBATIM
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -26,18 +26,14 @@ endif()
|
|||||||
|
|
||||||
# Determine the project architecture.
|
# Determine the project architecture.
|
||||||
if(NOT DEFINED PROJECT_ARCH)
|
if(NOT DEFINED PROJECT_ARCH)
|
||||||
if(OS_WINDOWS AND "${CMAKE_GENERATOR_PLATFORM}" STREQUAL "arm64")
|
if(("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "arm64") OR
|
||||||
|
("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM64"))
|
||||||
set(PROJECT_ARCH "arm64")
|
set(PROJECT_ARCH "arm64")
|
||||||
elseif(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
elseif(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||||
set(PROJECT_ARCH "x86_64")
|
set(PROJECT_ARCH "x86_64")
|
||||||
else()
|
else()
|
||||||
set(PROJECT_ARCH "x86")
|
set(PROJECT_ARCH "x86")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(OS_MAC)
|
|
||||||
# PROJECT_ARCH should be specified on Mac OS X.
|
|
||||||
message(WARNING "No PROJECT_ARCH value specified, using ${PROJECT_ARCH}")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(${CMAKE_GENERATOR} STREQUAL "Ninja")
|
if(${CMAKE_GENERATOR} STREQUAL "Ninja")
|
||||||
@@ -105,7 +101,7 @@ if(OS_LINUX)
|
|||||||
-fno-rtti # Disable real-time type information
|
-fno-rtti # Disable real-time type information
|
||||||
-fno-threadsafe-statics # Don't generate thread-safe statics
|
-fno-threadsafe-statics # Don't generate thread-safe statics
|
||||||
-fvisibility-inlines-hidden # Give hidden visibility to inlined class member functions
|
-fvisibility-inlines-hidden # Give hidden visibility to inlined class member functions
|
||||||
-std=c++14 # Use the C++14 language standard
|
-std=c++17 # Use the C++17 language standard
|
||||||
-Wsign-compare # Warn about mixed signed/unsigned type comparisons
|
-Wsign-compare # Warn about mixed signed/unsigned type comparisons
|
||||||
)
|
)
|
||||||
list(APPEND CEF_COMPILER_FLAGS_DEBUG
|
list(APPEND CEF_COMPILER_FLAGS_DEBUG
|
||||||
@@ -227,7 +223,6 @@ if(OS_LINUX)
|
|||||||
snapshot_blob.bin
|
snapshot_blob.bin
|
||||||
v8_context_snapshot.bin
|
v8_context_snapshot.bin
|
||||||
vk_swiftshader_icd.json
|
vk_swiftshader_icd.json
|
||||||
swiftshader
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# List of CEF resource files.
|
# List of CEF resource files.
|
||||||
@@ -277,7 +272,7 @@ if(OS_MAC)
|
|||||||
-fno-threadsafe-statics # Don't generate thread-safe statics
|
-fno-threadsafe-statics # Don't generate thread-safe statics
|
||||||
-fobjc-call-cxx-cdtors # Call the constructor/destructor of C++ instance variables in ObjC objects
|
-fobjc-call-cxx-cdtors # Call the constructor/destructor of C++ instance variables in ObjC objects
|
||||||
-fvisibility-inlines-hidden # Give hidden visibility to inlined class member functions
|
-fvisibility-inlines-hidden # Give hidden visibility to inlined class member functions
|
||||||
-std=c++14 # Use the C++14 language standard
|
-std=c++17 # Use the C++17 language standard
|
||||||
-Wno-narrowing # Don't warn about type narrowing
|
-Wno-narrowing # Don't warn about type narrowing
|
||||||
-Wsign-compare # Warn about mixed signed/unsigned type comparisons
|
-Wsign-compare # Warn about mixed signed/unsigned type comparisons
|
||||||
)
|
)
|
||||||
@@ -315,7 +310,7 @@ if(OS_MAC)
|
|||||||
|
|
||||||
# Find the newest available base SDK.
|
# Find the newest available base SDK.
|
||||||
execute_process(COMMAND xcode-select --print-path OUTPUT_VARIABLE XCODE_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
|
execute_process(COMMAND xcode-select --print-path OUTPUT_VARIABLE XCODE_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
foreach(OS_VERSION 10.15 10.14 10.13 10.12 10.11)
|
foreach(OS_VERSION 10.15 10.14 10.13)
|
||||||
set(SDK "${XCODE_PATH}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${OS_VERSION}.sdk")
|
set(SDK "${XCODE_PATH}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${OS_VERSION}.sdk")
|
||||||
if(NOT "${CMAKE_OSX_SYSROOT}" AND EXISTS "${SDK}" AND IS_DIRECTORY "${SDK}")
|
if(NOT "${CMAKE_OSX_SYSROOT}" AND EXISTS "${SDK}" AND IS_DIRECTORY "${SDK}")
|
||||||
set(CMAKE_OSX_SYSROOT ${SDK})
|
set(CMAKE_OSX_SYSROOT ${SDK})
|
||||||
@@ -323,7 +318,7 @@ if(OS_MAC)
|
|||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
# Target SDK.
|
# Target SDK.
|
||||||
set(CEF_TARGET_SDK "10.11")
|
set(CEF_TARGET_SDK "10.13")
|
||||||
list(APPEND CEF_COMPILER_FLAGS
|
list(APPEND CEF_COMPILER_FLAGS
|
||||||
-mmacosx-version-min=${CEF_TARGET_SDK}
|
-mmacosx-version-min=${CEF_TARGET_SDK}
|
||||||
)
|
)
|
||||||
@@ -351,6 +346,10 @@ if(OS_MAC)
|
|||||||
CEF_USE_SANDBOX # Used by apps to test if the sandbox is enabled
|
CEF_USE_SANDBOX # Used by apps to test if the sandbox is enabled
|
||||||
)
|
)
|
||||||
|
|
||||||
|
list(APPEND CEF_STANDARD_LIBS
|
||||||
|
-lsandbox
|
||||||
|
)
|
||||||
|
|
||||||
# CEF sandbox library paths.
|
# CEF sandbox library paths.
|
||||||
set(CEF_SANDBOX_LIB_DEBUG "${CEF_BINARY_DIR_DEBUG}/cef_sandbox.a")
|
set(CEF_SANDBOX_LIB_DEBUG "${CEF_BINARY_DIR_DEBUG}/cef_sandbox.a")
|
||||||
set(CEF_SANDBOX_LIB_RELEASE "${CEF_BINARY_DIR_RELEASE}/cef_sandbox.a")
|
set(CEF_SANDBOX_LIB_RELEASE "${CEF_BINARY_DIR_RELEASE}/cef_sandbox.a")
|
||||||
@@ -427,6 +426,9 @@ if(OS_WINDOWS)
|
|||||||
/Ob2 # Inline any suitable function
|
/Ob2 # Inline any suitable function
|
||||||
/GF # Enable string pooling
|
/GF # Enable string pooling
|
||||||
)
|
)
|
||||||
|
list(APPEND CEF_CXX_COMPILER_FLAGS
|
||||||
|
/std:c++17 # Use the C++17 language standard
|
||||||
|
)
|
||||||
list(APPEND CEF_LINKER_FLAGS_DEBUG
|
list(APPEND CEF_LINKER_FLAGS_DEBUG
|
||||||
/DEBUG # Generate debug information
|
/DEBUG # Generate debug information
|
||||||
)
|
)
|
||||||
@@ -437,7 +439,12 @@ if(OS_WINDOWS)
|
|||||||
list(APPEND CEF_COMPILER_DEFINES
|
list(APPEND CEF_COMPILER_DEFINES
|
||||||
WIN32 _WIN32 _WINDOWS # Windows platform
|
WIN32 _WIN32 _WINDOWS # Windows platform
|
||||||
UNICODE _UNICODE # Unicode build
|
UNICODE _UNICODE # Unicode build
|
||||||
WINVER=0x0601 _WIN32_WINNT=0x601 # Targeting Windows 7
|
# 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
|
||||||
NOMINMAX # Use the standard's templated min/max
|
NOMINMAX # Use the standard's templated min/max
|
||||||
WIN32_LEAN_AND_MEAN # Exclude less common API declarations
|
WIN32_LEAN_AND_MEAN # Exclude less common API declarations
|
||||||
_HAS_EXCEPTIONS=0 # Disable exceptions
|
_HAS_EXCEPTIONS=0 # Disable exceptions
|
||||||
@@ -446,6 +453,23 @@ if(OS_WINDOWS)
|
|||||||
NDEBUG _NDEBUG # Not a debug build
|
NDEBUG _NDEBUG # Not a debug build
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(PROJECT_ARCH STREQUAL "x86")
|
||||||
|
# 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().
|
||||||
|
list(APPEND CEF_EXE_LINKER_FLAGS
|
||||||
|
/STACK:0x8000
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
# Increase the initial stack size to 8MiB from the default 1MiB.
|
||||||
|
list(APPEND CEF_EXE_LINKER_FLAGS
|
||||||
|
/STACK:0x800000
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Standard libraries.
|
# Standard libraries.
|
||||||
set(CEF_STANDARD_LIBS
|
set(CEF_STANDARD_LIBS
|
||||||
comctl32.lib
|
comctl32.lib
|
||||||
@@ -476,7 +500,6 @@ if(OS_WINDOWS)
|
|||||||
vk_swiftshader.dll
|
vk_swiftshader.dll
|
||||||
vk_swiftshader_icd.json
|
vk_swiftshader_icd.json
|
||||||
vulkan-1.dll
|
vulkan-1.dll
|
||||||
swiftshader
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if(NOT PROJECT_ARCH STREQUAL "arm64")
|
if(NOT PROJECT_ARCH STREQUAL "arm64")
|
||||||
@@ -508,12 +531,14 @@ if(OS_WINDOWS)
|
|||||||
Advapi32.lib
|
Advapi32.lib
|
||||||
dbghelp.lib
|
dbghelp.lib
|
||||||
Delayimp.lib
|
Delayimp.lib
|
||||||
|
ntdll.lib
|
||||||
OleAut32.lib
|
OleAut32.lib
|
||||||
PowrProf.lib
|
PowrProf.lib
|
||||||
Propsys.lib
|
Propsys.lib
|
||||||
psapi.lib
|
psapi.lib
|
||||||
SetupAPI.lib
|
SetupAPI.lib
|
||||||
Shell32.lib
|
Shell32.lib
|
||||||
|
Userenv.lib
|
||||||
version.lib
|
version.lib
|
||||||
wbemuuid.lib
|
wbemuuid.lib
|
||||||
winmm.lib
|
winmm.lib
|
||||||
|
|||||||
@@ -45,39 +45,49 @@
|
|||||||
|
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
|
|
||||||
#include "include/base/cef_macros.h"
|
|
||||||
#include "include/base/cef_thread_checker.h"
|
#include "include/base/cef_thread_checker.h"
|
||||||
|
|
||||||
namespace base {
|
namespace base {
|
||||||
|
|
||||||
// A flag that can safely be set from one thread and read from other threads.
|
///
|
||||||
//
|
/// A flag that can safely be set from one thread and read from other threads.
|
||||||
// This class IS NOT intended for synchronization between threads.
|
///
|
||||||
|
/// This class IS NOT intended for synchronization between threads.
|
||||||
|
///
|
||||||
class AtomicFlag {
|
class AtomicFlag {
|
||||||
public:
|
public:
|
||||||
AtomicFlag();
|
AtomicFlag();
|
||||||
|
|
||||||
|
AtomicFlag(const AtomicFlag&) = delete;
|
||||||
|
AtomicFlag& operator=(const AtomicFlag&) = delete;
|
||||||
|
|
||||||
~AtomicFlag();
|
~AtomicFlag();
|
||||||
|
|
||||||
// Set the flag. Must always be called from the same thread.
|
///
|
||||||
|
/// Set the flag. Must always be called from the same thread.
|
||||||
|
///
|
||||||
void Set();
|
void Set();
|
||||||
|
|
||||||
// Returns true iff the flag was set. If this returns true, the current thread
|
///
|
||||||
// is guaranteed to be synchronized with all memory operations on the thread
|
/// Returns true iff the flag was set. If this returns true, the current
|
||||||
// which invoked Set() up until at least the first call to Set() on it.
|
/// thread is guaranteed to be synchronized with all memory operations on the
|
||||||
|
/// thread which invoked Set() up until at least the first call to Set() on
|
||||||
|
/// it.
|
||||||
|
///
|
||||||
bool IsSet() const {
|
bool IsSet() const {
|
||||||
// Inline here: this has a measurable performance impact on base::WeakPtr.
|
// Inline here: this has a measurable performance impact on base::WeakPtr.
|
||||||
return flag_.load(std::memory_order_acquire) != 0;
|
return flag_.load(std::memory_order_acquire) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resets the flag. Be careful when using this: callers might not expect
|
///
|
||||||
// IsSet() to return false after returning true once.
|
/// Resets the flag. Be careful when using this: callers might not expect
|
||||||
|
/// IsSet() to return false after returning true once.
|
||||||
|
///
|
||||||
void UnsafeResetForTesting();
|
void UnsafeResetForTesting();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::atomic<uint_fast8_t> flag_{0};
|
std::atomic<uint_fast8_t> flag_{0};
|
||||||
base::ThreadChecker set_thread_checker_;
|
base::ThreadChecker set_thread_checker_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(AtomicFlag);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace base
|
} // namespace base
|
||||||
|
|||||||
@@ -58,19 +58,25 @@ class AtomicRefCount {
|
|||||||
explicit constexpr AtomicRefCount(int initial_value)
|
explicit constexpr AtomicRefCount(int initial_value)
|
||||||
: ref_count_(initial_value) {}
|
: ref_count_(initial_value) {}
|
||||||
|
|
||||||
// Increment a reference count.
|
///
|
||||||
// Returns the previous value of the count.
|
/// Increment a reference count.
|
||||||
|
/// Returns the previous value of the count.
|
||||||
|
///
|
||||||
int Increment() { return Increment(1); }
|
int Increment() { return Increment(1); }
|
||||||
|
|
||||||
// Increment a reference count by "increment", which must exceed 0.
|
///
|
||||||
// Returns the previous value of the count.
|
/// Increment a reference count by "increment", which must exceed 0.
|
||||||
|
/// Returns the previous value of the count.
|
||||||
|
///
|
||||||
int Increment(int increment) {
|
int Increment(int increment) {
|
||||||
return ref_count_.fetch_add(increment, std::memory_order_relaxed);
|
return ref_count_.fetch_add(increment, std::memory_order_relaxed);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Decrement a reference count, and return whether the result is non-zero.
|
///
|
||||||
// Insert barriers to ensure that state written before the reference count
|
/// Decrement a reference count, and return whether the result is non-zero.
|
||||||
// became zero will be visible to a thread that has just made the count zero.
|
/// Insert barriers to ensure that state written before the reference count
|
||||||
|
/// became zero will be visible to a thread that has just made the count zero.
|
||||||
|
///
|
||||||
bool Decrement() {
|
bool Decrement() {
|
||||||
// TODO(jbroman): Technically this doesn't need to be an acquire operation
|
// TODO(jbroman): Technically this doesn't need to be an acquire operation
|
||||||
// unless the result is 1 (i.e., the ref count did indeed reach zero).
|
// unless the result is 1 (i.e., the ref count did indeed reach zero).
|
||||||
@@ -79,23 +85,29 @@ class AtomicRefCount {
|
|||||||
return ref_count_.fetch_sub(1, std::memory_order_acq_rel) != 1;
|
return ref_count_.fetch_sub(1, std::memory_order_acq_rel) != 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return whether the reference count is one. If the reference count is used
|
///
|
||||||
// in the conventional way, a refrerence count of 1 implies that the current
|
/// Return whether the reference count is one. If the reference count is used
|
||||||
// thread owns the reference and no other thread shares it. This call
|
/// in the conventional way, a refrerence count of 1 implies that the current
|
||||||
// performs the test for a reference count of one, and performs the memory
|
/// thread owns the reference and no other thread shares it. This call
|
||||||
// barrier needed for the owning thread to act on the object, knowing that it
|
/// performs the test for a reference count of one, and performs the memory
|
||||||
// has exclusive access to the object.
|
/// barrier needed for the owning thread to act on the object, knowing that it
|
||||||
|
/// has exclusive access to the object.
|
||||||
|
///
|
||||||
bool IsOne() const { return ref_count_.load(std::memory_order_acquire) == 1; }
|
bool IsOne() const { return ref_count_.load(std::memory_order_acquire) == 1; }
|
||||||
|
|
||||||
// Return whether the reference count is zero. With conventional object
|
///
|
||||||
// referencing counting, the object will be destroyed, so the reference count
|
/// Return whether the reference count is zero. With conventional object
|
||||||
// should never be zero. Hence this is generally used for a debug check.
|
/// referencing counting, the object will be destroyed, so the reference count
|
||||||
|
/// should never be zero. Hence this is generally used for a debug check.
|
||||||
|
///
|
||||||
bool IsZero() const {
|
bool IsZero() const {
|
||||||
return ref_count_.load(std::memory_order_acquire) == 0;
|
return ref_count_.load(std::memory_order_acquire) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the current reference count (with no barriers). This is subtle, and
|
///
|
||||||
// should be used only for debugging.
|
/// Returns the current reference count (with no barriers). This is subtle,
|
||||||
|
/// and should be used only for debugging.
|
||||||
|
///
|
||||||
int SubtleRefCountForDebug() const {
|
int SubtleRefCountForDebug() const {
|
||||||
return ref_count_.load(std::memory_order_relaxed);
|
return ref_count_.load(std::memory_order_relaxed);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,9 +73,10 @@ class AutoReset {
|
|||||||
}
|
}
|
||||||
|
|
||||||
~AutoReset() {
|
~AutoReset() {
|
||||||
if (scoped_variable_)
|
if (scoped_variable_) {
|
||||||
*scoped_variable_ = std::move(original_value_);
|
*scoped_variable_ = std::move(original_value_);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
T* scoped_variable_;
|
T* scoped_variable_;
|
||||||
|
|||||||
@@ -28,41 +28,42 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
///
|
||||||
// Usage documentation
|
/// \file
|
||||||
// -----------------------------------------------------------------------------
|
/// base::BindOnce() and base::BindRepeating() are helpers for creating
|
||||||
//
|
/// base::OnceCallback and base::RepeatingCallback objects respectively.
|
||||||
// Overview:
|
///
|
||||||
// base::BindOnce() and base::BindRepeating() are helpers for creating
|
/// For a runnable object of n-arity, the base::Bind*() family allows partial
|
||||||
// base::OnceCallback and base::RepeatingCallback objects respectively.
|
/// application of the first m arguments. The remaining n - m arguments must be
|
||||||
//
|
/// passed when invoking the callback with Run().
|
||||||
// For a runnable object of n-arity, the base::Bind*() family allows partial
|
///
|
||||||
// application of the first m arguments. The remaining n - m arguments must be
|
/// <pre>
|
||||||
// passed when invoking the callback with Run().
|
/// // The first argument is bound at callback creation; the remaining
|
||||||
//
|
/// // two must be passed when calling Run() on the callback object.
|
||||||
// // The first argument is bound at callback creation; the remaining
|
/// base::OnceCallback<long(int, long)> cb = base::BindOnce(
|
||||||
// // two must be passed when calling Run() on the callback object.
|
/// [](short x, int y, long z) { return x * y * z; }, 42);
|
||||||
// base::OnceCallback<long(int, long)> cb = base::BindOnce(
|
/// </pre>
|
||||||
// [](short x, int y, long z) { return x * y * z; }, 42);
|
///
|
||||||
//
|
/// When binding to a method, the receiver object must also be specified at
|
||||||
// When binding to a method, the receiver object must also be specified at
|
/// callback creation time. When Run() is invoked, the method will be invoked on
|
||||||
// callback creation time. When Run() is invoked, the method will be invoked on
|
/// the specified receiver object.
|
||||||
// the specified receiver object.
|
///
|
||||||
//
|
/// <pre>
|
||||||
// class C : public base::RefCounted<C> { void F(); };
|
/// class C : public base::RefCounted<C> { void F(); };
|
||||||
// auto instance = base::MakeRefCounted<C>();
|
/// auto instance = base::MakeRefCounted<C>();
|
||||||
// auto cb = base::BindOnce(&C::F, instance);
|
/// auto cb = base::BindOnce(&C::F, instance);
|
||||||
// std::move(cb).Run(); // Identical to instance->F()
|
/// std::move(cb).Run(); // Identical to instance->F()
|
||||||
//
|
/// </pre>
|
||||||
// See //docs/callback.md for the full documentation.
|
///
|
||||||
//
|
/// See https://chromium.googlesource.com/chromium/src/+/lkgr/docs/callback.md
|
||||||
// -----------------------------------------------------------------------------
|
/// for the full documentation.
|
||||||
|
///
|
||||||
|
|
||||||
// Implementation notes
|
// Implementation notes
|
||||||
// -----------------------------------------------------------------------------
|
|
||||||
//
|
//
|
||||||
// If you're reading the implementation, before proceeding further, you should
|
// If you're reading the implementation, before proceeding further, you should
|
||||||
// read the top comment of base/internal/cef_bind_internal.h for a definition of
|
// read the top comment of base/internal/cef_bind_internal.h for a definition
|
||||||
// common terms and concepts.
|
// of common terms and concepts.
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_BASE_CEF_BIND_H_
|
#ifndef CEF_INCLUDE_BASE_CEF_BIND_H_
|
||||||
#define CEF_INCLUDE_BASE_CEF_BIND_H_
|
#define CEF_INCLUDE_BASE_CEF_BIND_H_
|
||||||
@@ -70,7 +71,7 @@
|
|||||||
|
|
||||||
#if defined(USING_CHROMIUM_INCLUDES)
|
#if defined(USING_CHROMIUM_INCLUDES)
|
||||||
// When building CEF include the Chromium header directly.
|
// When building CEF include the Chromium header directly.
|
||||||
#include "base/bind.h"
|
#include "base/functional/bind.h"
|
||||||
#else // !USING_CHROMIUM_INCLUDES
|
#else // !USING_CHROMIUM_INCLUDES
|
||||||
// The following is substantially similar to the Chromium implementation.
|
// The following is substantially similar to the Chromium implementation.
|
||||||
// If the Chromium implementation diverges the below implementation should be
|
// If the Chromium implementation diverges the below implementation should be
|
||||||
@@ -92,40 +93,45 @@
|
|||||||
|
|
||||||
namespace base {
|
namespace base {
|
||||||
|
|
||||||
// Bind as OnceCallback.
|
///
|
||||||
|
/// Bind as OnceCallback.
|
||||||
|
///
|
||||||
template <typename Functor, typename... Args>
|
template <typename Functor, typename... Args>
|
||||||
inline OnceCallback<internal::MakeUnboundRunType<Functor, Args...>> BindOnce(
|
inline OnceCallback<cef_internal::MakeUnboundRunType<Functor, Args...>>
|
||||||
Functor&& functor,
|
BindOnce(Functor&& functor, Args&&... args) {
|
||||||
Args&&... args) {
|
static_assert(!cef_internal::IsOnceCallback<std::decay_t<Functor>>() ||
|
||||||
static_assert(!internal::IsOnceCallback<std::decay_t<Functor>>() ||
|
|
||||||
(std::is_rvalue_reference<Functor&&>() &&
|
(std::is_rvalue_reference<Functor&&>() &&
|
||||||
!std::is_const<std::remove_reference_t<Functor>>()),
|
!std::is_const<std::remove_reference_t<Functor>>()),
|
||||||
"BindOnce requires non-const rvalue for OnceCallback binding."
|
"BindOnce requires non-const rvalue for OnceCallback binding."
|
||||||
" I.e.: base::BindOnce(std::move(callback)).");
|
" I.e.: base::BindOnce(std::move(callback)).");
|
||||||
static_assert(
|
static_assert(
|
||||||
conjunction<
|
conjunction<cef_internal::AssertBindArgIsNotBasePassed<
|
||||||
internal::AssertBindArgIsNotBasePassed<std::decay_t<Args>>...>::value,
|
std::decay_t<Args>>...>::value,
|
||||||
"Use std::move() instead of base::Passed() with base::BindOnce()");
|
"Use std::move() instead of base::Passed() with base::BindOnce()");
|
||||||
|
|
||||||
return internal::BindImpl<OnceCallback>(std::forward<Functor>(functor),
|
return cef_internal::BindImpl<OnceCallback>(std::forward<Functor>(functor),
|
||||||
std::forward<Args>(args)...);
|
std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Bind as RepeatingCallback.
|
///
|
||||||
|
/// Bind as RepeatingCallback.
|
||||||
|
///
|
||||||
template <typename Functor, typename... Args>
|
template <typename Functor, typename... Args>
|
||||||
inline RepeatingCallback<internal::MakeUnboundRunType<Functor, Args...>>
|
inline RepeatingCallback<cef_internal::MakeUnboundRunType<Functor, Args...>>
|
||||||
BindRepeating(Functor&& functor, Args&&... args) {
|
BindRepeating(Functor&& functor, Args&&... args) {
|
||||||
static_assert(
|
static_assert(
|
||||||
!internal::IsOnceCallback<std::decay_t<Functor>>(),
|
!cef_internal::IsOnceCallback<std::decay_t<Functor>>(),
|
||||||
"BindRepeating cannot bind OnceCallback. Use BindOnce with std::move().");
|
"BindRepeating cannot bind OnceCallback. Use BindOnce with std::move().");
|
||||||
|
|
||||||
return internal::BindImpl<RepeatingCallback>(std::forward<Functor>(functor),
|
return cef_internal::BindImpl<RepeatingCallback>(
|
||||||
std::forward<Args>(args)...);
|
std::forward<Functor>(functor), std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Special cases for binding to a base::Callback without extra bound arguments.
|
///
|
||||||
// We CHECK() the validity of callback to guard against null pointers
|
/// Special cases for binding to a base::Callback without extra bound arguments.
|
||||||
// accidentally ending up in posted tasks, causing hard-to-debug crashes.
|
/// We CHECK() the validity of callback to guard against null pointers
|
||||||
|
/// accidentally ending up in posted tasks, causing hard-to-debug crashes.
|
||||||
|
///
|
||||||
template <typename Signature>
|
template <typename Signature>
|
||||||
OnceCallback<Signature> BindOnce(OnceCallback<Signature> callback) {
|
OnceCallback<Signature> BindOnce(OnceCallback<Signature> callback) {
|
||||||
CHECK(callback);
|
CHECK(callback);
|
||||||
@@ -145,198 +151,231 @@ RepeatingCallback<Signature> BindRepeating(
|
|||||||
return callback;
|
return callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unretained() allows binding a non-refcounted class, and to disable
|
///
|
||||||
// refcounting on arguments that are refcounted objects.
|
/// Unretained() allows binding a non-refcounted class, and to disable
|
||||||
//
|
/// refcounting on arguments that are refcounted objects.
|
||||||
// EXAMPLE OF Unretained():
|
///
|
||||||
//
|
/// EXAMPLE OF Unretained():
|
||||||
// class Foo {
|
///
|
||||||
// public:
|
/// <pre>
|
||||||
// void func() { cout << "Foo:f" << endl; }
|
/// class Foo {
|
||||||
// };
|
/// public:
|
||||||
//
|
/// void func() { cout << "Foo:f" << endl; }
|
||||||
// // In some function somewhere.
|
/// };
|
||||||
// Foo foo;
|
///
|
||||||
// OnceClosure foo_callback =
|
/// // In some function somewhere.
|
||||||
// BindOnce(&Foo::func, Unretained(&foo));
|
/// Foo foo;
|
||||||
// std::move(foo_callback).Run(); // Prints "Foo:f".
|
/// OnceClosure foo_callback =
|
||||||
//
|
/// BindOnce(&Foo::func, Unretained(&foo));
|
||||||
// Without the Unretained() wrapper on |&foo|, the above call would fail
|
/// std::move(foo_callback).Run(); // Prints "Foo:f".
|
||||||
// to compile because Foo does not support the AddRef() and Release() methods.
|
/// </pre>
|
||||||
|
///
|
||||||
|
/// Without the Unretained() wrapper on |&foo|, the above call would fail
|
||||||
|
/// to compile because Foo does not support the AddRef() and Release() methods.
|
||||||
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline internal::UnretainedWrapper<T> Unretained(T* o) {
|
inline cef_internal::UnretainedWrapper<T> Unretained(T* o) {
|
||||||
return internal::UnretainedWrapper<T>(o);
|
return cef_internal::UnretainedWrapper<T>(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
// RetainedRef() accepts a ref counted object and retains a reference to it.
|
///
|
||||||
// When the callback is called, the object is passed as a raw pointer.
|
/// RetainedRef() accepts a ref counted object and retains a reference to it.
|
||||||
//
|
/// When the callback is called, the object is passed as a raw pointer.
|
||||||
// EXAMPLE OF RetainedRef():
|
///
|
||||||
//
|
/// EXAMPLE OF RetainedRef():
|
||||||
// void foo(RefCountedBytes* bytes) {}
|
///
|
||||||
//
|
/// <pre>
|
||||||
// scoped_refptr<RefCountedBytes> bytes = ...;
|
/// void foo(RefCountedBytes* bytes) {}
|
||||||
// OnceClosure callback = BindOnce(&foo, base::RetainedRef(bytes));
|
///
|
||||||
// std::move(callback).Run();
|
/// scoped_refptr<RefCountedBytes> bytes = ...;
|
||||||
//
|
/// OnceClosure callback = BindOnce(&foo, base::RetainedRef(bytes));
|
||||||
// Without RetainedRef, the scoped_refptr would try to implicitly convert to
|
/// std::move(callback).Run();
|
||||||
// a raw pointer and fail compilation:
|
/// </pre>
|
||||||
//
|
///
|
||||||
// OnceClosure callback = BindOnce(&foo, bytes); // ERROR!
|
/// Without RetainedRef, the scoped_refptr would try to implicitly convert to
|
||||||
|
/// a raw pointer and fail compilation:
|
||||||
|
///
|
||||||
|
/// <pre>
|
||||||
|
/// OnceClosure callback = BindOnce(&foo, bytes); // ERROR!
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline internal::RetainedRefWrapper<T> RetainedRef(T* o) {
|
inline cef_internal::RetainedRefWrapper<T> RetainedRef(T* o) {
|
||||||
return internal::RetainedRefWrapper<T>(o);
|
return cef_internal::RetainedRefWrapper<T>(o);
|
||||||
}
|
}
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline internal::RetainedRefWrapper<T> RetainedRef(scoped_refptr<T> o) {
|
inline cef_internal::RetainedRefWrapper<T> RetainedRef(scoped_refptr<T> o) {
|
||||||
return internal::RetainedRefWrapper<T>(std::move(o));
|
return cef_internal::RetainedRefWrapper<T>(std::move(o));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Owned() transfers ownership of an object to the callback resulting from
|
///
|
||||||
// bind; the object will be deleted when the callback is deleted.
|
/// Owned() transfers ownership of an object to the callback resulting from
|
||||||
//
|
/// bind; the object will be deleted when the callback is deleted.
|
||||||
// EXAMPLE OF Owned():
|
///
|
||||||
//
|
/// EXAMPLE OF Owned():
|
||||||
// void foo(int* arg) { cout << *arg << endl }
|
///
|
||||||
//
|
/// <pre>
|
||||||
// int* pn = new int(1);
|
/// void foo(int* arg) { cout << *arg << endl }
|
||||||
// RepeatingClosure foo_callback = BindRepeating(&foo, Owned(pn));
|
///
|
||||||
//
|
/// int* pn = new int(1);
|
||||||
// foo_callback.Run(); // Prints "1"
|
/// RepeatingClosure foo_callback = BindRepeating(&foo, Owned(pn));
|
||||||
// foo_callback.Run(); // Prints "1"
|
///
|
||||||
// *pn = 2;
|
/// foo_callback.Run(); // Prints "1"
|
||||||
// foo_callback.Run(); // Prints "2"
|
/// foo_callback.Run(); // Prints "1"
|
||||||
//
|
/// *pn = 2;
|
||||||
// foo_callback.Reset(); // |pn| is deleted. Also will happen when
|
/// foo_callback.Run(); // Prints "2"
|
||||||
// // |foo_callback| goes out of scope.
|
///
|
||||||
//
|
/// foo_callback.Reset(); // |pn| is deleted. Also will happen when
|
||||||
// Without Owned(), someone would have to know to delete |pn| when the last
|
/// // |foo_callback| goes out of scope.
|
||||||
// reference to the callback is deleted.
|
/// </pre>
|
||||||
|
///
|
||||||
|
/// Without Owned(), someone would have to know to delete |pn| when the last
|
||||||
|
/// reference to the callback is deleted.
|
||||||
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline internal::OwnedWrapper<T> Owned(T* o) {
|
inline cef_internal::OwnedWrapper<T> Owned(T* o) {
|
||||||
return internal::OwnedWrapper<T>(o);
|
return cef_internal::OwnedWrapper<T>(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T, typename Deleter>
|
template <typename T, typename Deleter>
|
||||||
inline internal::OwnedWrapper<T, Deleter> Owned(
|
inline cef_internal::OwnedWrapper<T, Deleter> Owned(
|
||||||
std::unique_ptr<T, Deleter>&& ptr) {
|
std::unique_ptr<T, Deleter>&& ptr) {
|
||||||
return internal::OwnedWrapper<T, Deleter>(std::move(ptr));
|
return cef_internal::OwnedWrapper<T, Deleter>(std::move(ptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
// OwnedRef() stores an object in the callback resulting from
|
///
|
||||||
// bind and passes a reference to the object to the bound function.
|
/// OwnedRef() stores an object in the callback resulting from
|
||||||
//
|
/// bind and passes a reference to the object to the bound function.
|
||||||
// EXAMPLE OF OwnedRef():
|
///
|
||||||
//
|
/// EXAMPLE OF OwnedRef():
|
||||||
// void foo(int& arg) { cout << ++arg << endl }
|
///
|
||||||
//
|
/// <pre>
|
||||||
// int counter = 0;
|
/// void foo(int& arg) { cout << ++arg << endl }
|
||||||
// RepeatingClosure foo_callback = BindRepeating(&foo, OwnedRef(counter));
|
///
|
||||||
//
|
/// int counter = 0;
|
||||||
// foo_callback.Run(); // Prints "1"
|
/// RepeatingClosure foo_callback = BindRepeating(&foo, OwnedRef(counter));
|
||||||
// foo_callback.Run(); // Prints "2"
|
///
|
||||||
// foo_callback.Run(); // Prints "3"
|
/// foo_callback.Run(); // Prints "1"
|
||||||
//
|
/// foo_callback.Run(); // Prints "2"
|
||||||
// cout << counter; // Prints "0", OwnedRef creates a copy of counter.
|
/// foo_callback.Run(); // Prints "3"
|
||||||
//
|
///
|
||||||
// Supports OnceCallbacks as well, useful to pass placeholder arguments:
|
/// cout << counter; // Prints "0", OwnedRef creates a copy of counter.
|
||||||
//
|
/// </pre>
|
||||||
// void bar(int& ignore, const std::string& s) { cout << s << endl }
|
///
|
||||||
//
|
/// Supports OnceCallbacks as well, useful to pass placeholder arguments:
|
||||||
// OnceClosure bar_callback = BindOnce(&bar, OwnedRef(0), "Hello");
|
///
|
||||||
//
|
/// <pre>
|
||||||
// std::move(bar_callback).Run(); // Prints "Hello"
|
/// void bar(int& ignore, const std::string& s) { cout << s << endl }
|
||||||
//
|
///
|
||||||
// Without OwnedRef() it would not be possible to pass a mutable reference to an
|
/// OnceClosure bar_callback = BindOnce(&bar, OwnedRef(0), "Hello");
|
||||||
// object owned by the callback.
|
///
|
||||||
|
/// std::move(bar_callback).Run(); // Prints "Hello"
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
|
/// Without OwnedRef() it would not be possible to pass a mutable reference to
|
||||||
|
/// an object owned by the callback.
|
||||||
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
internal::OwnedRefWrapper<std::decay_t<T>> OwnedRef(T&& t) {
|
cef_internal::OwnedRefWrapper<std::decay_t<T>> OwnedRef(T&& t) {
|
||||||
return internal::OwnedRefWrapper<std::decay_t<T>>(std::forward<T>(t));
|
return cef_internal::OwnedRefWrapper<std::decay_t<T>>(std::forward<T>(t));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Passed() is for transferring movable-but-not-copyable types (eg. unique_ptr)
|
///
|
||||||
// through a RepeatingCallback. Logically, this signifies a destructive transfer
|
/// Passed() is for transferring movable-but-not-copyable types (eg. unique_ptr)
|
||||||
// of the state of the argument into the target function. Invoking
|
/// through a RepeatingCallback. Logically, this signifies a destructive
|
||||||
// RepeatingCallback::Run() twice on a callback that was created with a Passed()
|
/// transfer of the state of the argument into the target function. Invoking
|
||||||
// argument will CHECK() because the first invocation would have already
|
/// RepeatingCallback::Run() twice on a callback that was created with a
|
||||||
// transferred ownership to the target function.
|
/// Passed() argument will CHECK() because the first invocation would have
|
||||||
//
|
/// already transferred ownership to the target function.
|
||||||
// Note that Passed() is not necessary with BindOnce(), as std::move() does the
|
///
|
||||||
// same thing. Avoid Passed() in favor of std::move() with BindOnce().
|
/// Note that Passed() is not necessary with BindOnce(), as std::move() does the
|
||||||
//
|
/// same thing. Avoid Passed() in favor of std::move() with BindOnce().
|
||||||
// EXAMPLE OF Passed():
|
///
|
||||||
//
|
/// EXAMPLE OF Passed():
|
||||||
// void TakesOwnership(std::unique_ptr<Foo> arg) { }
|
///
|
||||||
// std::unique_ptr<Foo> CreateFoo() { return std::make_unique<Foo>();
|
/// <pre>
|
||||||
// }
|
/// void TakesOwnership(std::unique_ptr<Foo> arg) { }
|
||||||
//
|
/// std::unique_ptr<Foo> CreateFoo() { return std::make_unique<Foo>();
|
||||||
// auto f = std::make_unique<Foo>();
|
/// }
|
||||||
//
|
///
|
||||||
// // |cb| is given ownership of Foo(). |f| is now NULL.
|
/// auto f = std::make_unique<Foo>();
|
||||||
// // You can use std::move(f) in place of &f, but it's more verbose.
|
///
|
||||||
// RepeatingClosure cb = BindRepeating(&TakesOwnership, Passed(&f));
|
/// // |cb| is given ownership of Foo(). |f| is now NULL.
|
||||||
//
|
/// // You can use std::move(f) in place of &f, but it's more verbose.
|
||||||
// // Run was never called so |cb| still owns Foo() and deletes
|
/// RepeatingClosure cb = BindRepeating(&TakesOwnership, Passed(&f));
|
||||||
// // it on Reset().
|
///
|
||||||
// cb.Reset();
|
/// // Run was never called so |cb| still owns Foo() and deletes
|
||||||
//
|
/// // it on Reset().
|
||||||
// // |cb| is given a new Foo created by CreateFoo().
|
/// cb.Reset();
|
||||||
// cb = BindRepeating(&TakesOwnership, Passed(CreateFoo()));
|
///
|
||||||
//
|
/// // |cb| is given a new Foo created by CreateFoo().
|
||||||
// // |arg| in TakesOwnership() is given ownership of Foo(). |cb|
|
/// cb = BindRepeating(&TakesOwnership, Passed(CreateFoo()));
|
||||||
// // no longer owns Foo() and, if reset, would not delete Foo().
|
///
|
||||||
// cb.Run(); // Foo() is now transferred to |arg| and deleted.
|
/// // |arg| in TakesOwnership() is given ownership of Foo(). |cb|
|
||||||
// cb.Run(); // This CHECK()s since Foo() already been used once.
|
/// // no longer owns Foo() and, if reset, would not delete Foo().
|
||||||
//
|
/// cb.Run(); // Foo() is now transferred to |arg| and deleted.
|
||||||
// We offer 2 syntaxes for calling Passed(). The first takes an rvalue and is
|
/// cb.Run(); // This CHECK()s since Foo() already been used once.
|
||||||
// best suited for use with the return value of a function or other temporary
|
/// </pre>
|
||||||
// rvalues. The second takes a pointer to the scoper and is just syntactic sugar
|
///
|
||||||
// to avoid having to write Passed(std::move(scoper)).
|
/// We offer 2 syntaxes for calling Passed(). The first takes an rvalue and is
|
||||||
//
|
/// best suited for use with the return value of a function or other temporary
|
||||||
// Both versions of Passed() prevent T from being an lvalue reference. The first
|
/// rvalues. The second takes a pointer to the scoper and is just syntactic
|
||||||
// via use of enable_if, and the second takes a T* which will not bind to T&.
|
/// sugar to avoid having to write Passed(std::move(scoper)).
|
||||||
|
///
|
||||||
|
/// Both versions of Passed() prevent T from being an lvalue reference. The
|
||||||
|
/// first via use of enable_if, and the second takes a T* which will not bind to
|
||||||
|
/// T&.
|
||||||
|
///
|
||||||
template <typename T,
|
template <typename T,
|
||||||
std::enable_if_t<!std::is_lvalue_reference<T>::value>* = nullptr>
|
std::enable_if_t<!std::is_lvalue_reference<T>::value>* = nullptr>
|
||||||
inline internal::PassedWrapper<T> Passed(T&& scoper) {
|
inline cef_internal::PassedWrapper<T> Passed(T&& scoper) {
|
||||||
return internal::PassedWrapper<T>(std::move(scoper));
|
return cef_internal::PassedWrapper<T>(std::move(scoper));
|
||||||
}
|
}
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline internal::PassedWrapper<T> Passed(T* scoper) {
|
inline cef_internal::PassedWrapper<T> Passed(T* scoper) {
|
||||||
return internal::PassedWrapper<T>(std::move(*scoper));
|
return cef_internal::PassedWrapper<T>(std::move(*scoper));
|
||||||
}
|
}
|
||||||
|
|
||||||
// IgnoreResult() is used to adapt a function or callback with a return type to
|
///
|
||||||
// one with a void return. This is most useful if you have a function with,
|
/// IgnoreResult() is used to adapt a function or callback with a return type to
|
||||||
// say, a pesky ignorable bool return that you want to use with PostTask or
|
/// one with a void return. This is most useful if you have a function with,
|
||||||
// something else that expect a callback with a void return.
|
/// say, a pesky ignorable bool return that you want to use with PostTask or
|
||||||
//
|
/// something else that expect a callback with a void return.
|
||||||
// EXAMPLE OF IgnoreResult():
|
///
|
||||||
//
|
/// EXAMPLE OF IgnoreResult():
|
||||||
// int DoSomething(int arg) { cout << arg << endl; }
|
///
|
||||||
//
|
/// <pre>
|
||||||
// // Assign to a callback with a void return type.
|
/// int DoSomething(int arg) { cout << arg << endl; }
|
||||||
// OnceCallback<void(int)> cb = BindOnce(IgnoreResult(&DoSomething));
|
///
|
||||||
// std::move(cb).Run(1); // Prints "1".
|
/// // Assign to a callback with a void return type.
|
||||||
//
|
/// OnceCallback<void(int)> cb = BindOnce(IgnoreResult(&DoSomething));
|
||||||
// // Prints "2" on |ml|.
|
/// std::move(cb).Run(1); // Prints "1".
|
||||||
// ml->PostTask(FROM_HERE, BindOnce(IgnoreResult(&DoSomething), 2);
|
///
|
||||||
|
/// // Prints "2" on |ml|.
|
||||||
|
/// ml->PostTask(FROM_HERE, BindOnce(IgnoreResult(&DoSomething), 2);
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline internal::IgnoreResultHelper<T> IgnoreResult(T data) {
|
inline cef_internal::IgnoreResultHelper<T> IgnoreResult(T data) {
|
||||||
return internal::IgnoreResultHelper<T>(std::move(data));
|
return cef_internal::IgnoreResultHelper<T>(std::move(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(OS_APPLE) && !HAS_FEATURE(objc_arc)
|
#if defined(OS_APPLE) && !HAS_FEATURE(objc_arc)
|
||||||
|
|
||||||
// RetainBlock() is used to adapt an Objective-C block when Automated Reference
|
///
|
||||||
// Counting (ARC) is disabled. This is unnecessary when ARC is enabled, as the
|
/// RetainBlock() is used to adapt an Objective-C block when Automated Reference
|
||||||
// BindOnce and BindRepeating already support blocks then.
|
/// Counting (ARC) is disabled. This is unnecessary when ARC is enabled, as the
|
||||||
//
|
/// BindOnce and BindRepeating already support blocks then.
|
||||||
// EXAMPLE OF RetainBlock():
|
///
|
||||||
//
|
/// EXAMPLE OF RetainBlock():
|
||||||
// // Wrap the block and bind it to a callback.
|
///
|
||||||
// OnceCallback<void(int)> cb =
|
/// <pre>
|
||||||
// BindOnce(RetainBlock(^(int n) { NSLog(@"%d", n); }));
|
/// // Wrap the block and bind it to a callback.
|
||||||
// std::move(cb).Run(1); // Logs "1".
|
/// OnceCallback<void(int)> cb =
|
||||||
|
/// BindOnce(RetainBlock(^(int n) { NSLog(@"%d", n); }));
|
||||||
|
/// std::move(cb).Run(1); // Logs "1".
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
template <typename R, typename... Args>
|
template <typename R, typename... Args>
|
||||||
base::mac::ScopedBlock<R (^)(Args...)> RetainBlock(R (^block)(Args...)) {
|
base::mac::ScopedBlock<R (^)(Args...)> RetainBlock(R (^block)(Args...)) {
|
||||||
return base::mac::ScopedBlock<R (^)(Args...)>(block,
|
return base::mac::ScopedBlock<R (^)(Args...)>(block,
|
||||||
|
|||||||
@@ -27,36 +27,40 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
// This file adds defines about the platform we're currently building on.
|
/// \file
|
||||||
//
|
/// This file adds defines about the platform we're currently building on.
|
||||||
// Operating System:
|
///
|
||||||
// OS_AIX / OS_ANDROID / OS_ASMJS / OS_FREEBSD / OS_FUCHSIA / OS_IOS /
|
/// <pre>
|
||||||
// OS_LINUX / OS_MAC / OS_NACL (SFI or NONSFI) / OS_NETBSD / OS_OPENBSD /
|
/// Operating System:
|
||||||
// OS_QNX / OS_SOLARIS / OS_WIN
|
/// OS_AIX / OS_ANDROID / OS_ASMJS / OS_FREEBSD / OS_FUCHSIA / OS_IOS /
|
||||||
// Operating System family:
|
/// OS_LINUX / OS_MAC / OS_NACL (SFI or NONSFI) / OS_NETBSD / OS_OPENBSD /
|
||||||
// OS_APPLE: IOS or MAC
|
/// OS_QNX / OS_SOLARIS / OS_WIN
|
||||||
// OS_BSD: FREEBSD or NETBSD or OPENBSD
|
/// Operating System family:
|
||||||
// OS_POSIX: AIX or ANDROID or ASMJS or CHROMEOS or FREEBSD or IOS or LINUX
|
/// OS_APPLE: IOS or MAC
|
||||||
// or MAC or NACL or NETBSD or OPENBSD or QNX or SOLARIS
|
/// OS_BSD: FREEBSD or NETBSD or OPENBSD
|
||||||
//
|
/// OS_POSIX: AIX or ANDROID or ASMJS or CHROMEOS or FREEBSD or IOS or LINUX
|
||||||
// /!\ Note: OS_CHROMEOS is set by the build system, not this file
|
/// or MAC or NACL or NETBSD or OPENBSD or QNX or SOLARIS
|
||||||
//
|
///
|
||||||
// Compiler:
|
/// /!\ Note: OS_CHROMEOS is set by the build system, not this file
|
||||||
// COMPILER_MSVC / COMPILER_GCC
|
///
|
||||||
//
|
/// Compiler:
|
||||||
// Processor:
|
/// COMPILER_MSVC / COMPILER_GCC
|
||||||
// ARCH_CPU_ARM64 / ARCH_CPU_ARMEL / ARCH_CPU_MIPS / ARCH_CPU_MIPS64 /
|
///
|
||||||
// ARCH_CPU_MIPS64EL / ARCH_CPU_MIPSEL / ARCH_CPU_PPC64 / ARCH_CPU_S390 /
|
/// Processor:
|
||||||
// ARCH_CPU_S390X / ARCH_CPU_X86 / ARCH_CPU_X86_64
|
/// ARCH_CPU_ARM64 / ARCH_CPU_ARMEL / ARCH_CPU_MIPS / ARCH_CPU_MIPS64 /
|
||||||
// Processor family:
|
/// ARCH_CPU_MIPS64EL / ARCH_CPU_MIPSEL / ARCH_CPU_PPC64 / ARCH_CPU_S390 /
|
||||||
// ARCH_CPU_ARM_FAMILY: ARMEL or ARM64
|
/// ARCH_CPU_S390X / ARCH_CPU_X86 / ARCH_CPU_X86_64
|
||||||
// ARCH_CPU_MIPS_FAMILY: MIPS64EL or MIPSEL or MIPS64 or MIPS
|
/// Processor family:
|
||||||
// ARCH_CPU_PPC64_FAMILY: PPC64
|
/// ARCH_CPU_ARM_FAMILY: ARMEL or ARM64
|
||||||
// ARCH_CPU_S390_FAMILY: S390 or S390X
|
/// ARCH_CPU_MIPS_FAMILY: MIPS64EL or MIPSEL or MIPS64 or MIPS
|
||||||
// ARCH_CPU_X86_FAMILY: X86 or X86_64
|
/// ARCH_CPU_PPC64_FAMILY: PPC64
|
||||||
// Processor features:
|
/// ARCH_CPU_S390_FAMILY: S390 or S390X
|
||||||
// ARCH_CPU_31_BITS / ARCH_CPU_32_BITS / ARCH_CPU_64_BITS
|
/// ARCH_CPU_X86_FAMILY: X86 or X86_64
|
||||||
// ARCH_CPU_BIG_ENDIAN / ARCH_CPU_LITTLE_ENDIAN
|
/// Processor features:
|
||||||
|
/// ARCH_CPU_31_BITS / ARCH_CPU_32_BITS / ARCH_CPU_64_BITS
|
||||||
|
/// ARCH_CPU_BIG_ENDIAN / ARCH_CPU_LITTLE_ENDIAN
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_BASE_CEF_BUILD_H_
|
#ifndef CEF_INCLUDE_BASE_CEF_BUILD_H_
|
||||||
#define CEF_INCLUDE_BASE_CEF_BUILD_H_
|
#define CEF_INCLUDE_BASE_CEF_BUILD_H_
|
||||||
|
|||||||
@@ -28,40 +28,38 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
/// \file
|
||||||
// Usage documentation
|
/// A callback is similar in concept to a function pointer: it wraps a runnable
|
||||||
// -----------------------------------------------------------------------------
|
/// object such as a function, method, lambda, or even another callback,
|
||||||
//
|
/// allowing the runnable object to be invoked later via the callback object.
|
||||||
// Overview:
|
///
|
||||||
// A callback is similar in concept to a function pointer: it wraps a runnable
|
/// Unlike function pointers, callbacks are created with base::BindOnce() or
|
||||||
// object such as a function, method, lambda, or even another callback, allowing
|
/// base::BindRepeating() and support partial function application.
|
||||||
// the runnable object to be invoked later via the callback object.
|
///
|
||||||
//
|
/// A base::OnceCallback may be Run() at most once; a base::RepeatingCallback
|
||||||
// Unlike function pointers, callbacks are created with base::BindOnce() or
|
/// may be Run() any number of times. |is_null()| is guaranteed to return true
|
||||||
// base::BindRepeating() and support partial function application.
|
/// for a moved-from callback.
|
||||||
//
|
///
|
||||||
// A base::OnceCallback may be Run() at most once; a base::RepeatingCallback may
|
/// <pre>
|
||||||
// be Run() any number of times. |is_null()| is guaranteed to return true for a
|
/// // The lambda takes two arguments, but the first argument |x| is bound at
|
||||||
// moved-from callback.
|
/// // callback creation.
|
||||||
//
|
/// base::OnceCallback<int(int)> cb = base::BindOnce([] (int x, int y) {
|
||||||
// // The lambda takes two arguments, but the first argument |x| is bound at
|
/// return x + y;
|
||||||
// // callback creation.
|
/// }, 1);
|
||||||
// base::OnceCallback<int(int)> cb = base::BindOnce([] (int x, int y) {
|
/// // Run() only needs the remaining unbound argument |y|.
|
||||||
// return x + y;
|
/// printf("1 + 2 = %d\n", std::move(cb).Run(2)); // Prints 3
|
||||||
// }, 1);
|
/// printf("cb is null? %s\n",
|
||||||
// // Run() only needs the remaining unbound argument |y|.
|
/// cb.is_null() ? "true" : "false"); // Prints true
|
||||||
// printf("1 + 2 = %d\n", std::move(cb).Run(2)); // Prints 3
|
/// std::move(cb).Run(2); // Crashes since |cb| has already run.
|
||||||
// printf("cb is null? %s\n",
|
/// </pre>
|
||||||
// cb.is_null() ? "true" : "false"); // Prints true
|
///
|
||||||
// std::move(cb).Run(2); // Crashes since |cb| has already run.
|
/// Callbacks also support cancellation. A common use is binding the receiver
|
||||||
//
|
/// object as a WeakPtr<T>. If that weak pointer is invalidated, calling Run()
|
||||||
// Callbacks also support cancellation. A common use is binding the receiver
|
/// will be a no-op. Note that |IsCancelled()| and |is_null()| are distinct:
|
||||||
// object as a WeakPtr<T>. If that weak pointer is invalidated, calling Run()
|
/// simply cancelling a callback will not also make it null.
|
||||||
// will be a no-op. Note that |IsCancelled()| and |is_null()| are distinct:
|
///
|
||||||
// simply cancelling a callback will not also make it null.
|
/// See https://chromium.googlesource.com/chromium/src/+/lkgr/docs/callback.md
|
||||||
//
|
/// for the full documentation.
|
||||||
// See https://chromium.googlesource.com/chromium/src/+/HEAD/docs/callback.md
|
|
||||||
// for the full documentation.
|
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_BASE_CEF_CALLBACK_H_
|
#ifndef CEF_INCLUDE_BASE_CEF_CALLBACK_H_
|
||||||
#define CEF_INCLUDE_BASE_CEF_CALLBACK_H_
|
#define CEF_INCLUDE_BASE_CEF_CALLBACK_H_
|
||||||
@@ -69,7 +67,7 @@
|
|||||||
|
|
||||||
#if defined(USING_CHROMIUM_INCLUDES)
|
#if defined(USING_CHROMIUM_INCLUDES)
|
||||||
// When building CEF include the Chromium header directly.
|
// When building CEF include the Chromium header directly.
|
||||||
#include "base/callback.h"
|
#include "base/functional/callback.h"
|
||||||
#else // !USING_CHROMIUM_INCLUDES
|
#else // !USING_CHROMIUM_INCLUDES
|
||||||
// The following is substantially similar to the Chromium implementation.
|
// The following is substantially similar to the Chromium implementation.
|
||||||
// If the Chromium implementation diverges the below implementation should be
|
// If the Chromium implementation diverges the below implementation should be
|
||||||
@@ -85,18 +83,18 @@
|
|||||||
namespace base {
|
namespace base {
|
||||||
|
|
||||||
template <typename R, typename... Args>
|
template <typename R, typename... Args>
|
||||||
class OnceCallback<R(Args...)> : public internal::CallbackBase {
|
class OnceCallback<R(Args...)> : public cef_internal::CallbackBase {
|
||||||
public:
|
public:
|
||||||
using ResultType = R;
|
using ResultType = R;
|
||||||
using RunType = R(Args...);
|
using RunType = R(Args...);
|
||||||
using PolymorphicInvoke = R (*)(internal::BindStateBase*,
|
using PolymorphicInvoke = R (*)(cef_internal::BindStateBase*,
|
||||||
internal::PassingType<Args>...);
|
cef_internal::PassingType<Args>...);
|
||||||
|
|
||||||
constexpr OnceCallback() = default;
|
constexpr OnceCallback() = default;
|
||||||
OnceCallback(std::nullptr_t) = delete;
|
OnceCallback(std::nullptr_t) = delete;
|
||||||
|
|
||||||
explicit OnceCallback(internal::BindStateBase* bind_state)
|
explicit OnceCallback(cef_internal::BindStateBase* bind_state)
|
||||||
: internal::CallbackBase(bind_state) {}
|
: cef_internal::CallbackBase(bind_state) {}
|
||||||
|
|
||||||
OnceCallback(const OnceCallback&) = delete;
|
OnceCallback(const OnceCallback&) = delete;
|
||||||
OnceCallback& operator=(const OnceCallback&) = delete;
|
OnceCallback& operator=(const OnceCallback&) = delete;
|
||||||
@@ -105,10 +103,10 @@ class OnceCallback<R(Args...)> : public internal::CallbackBase {
|
|||||||
OnceCallback& operator=(OnceCallback&&) noexcept = default;
|
OnceCallback& operator=(OnceCallback&&) noexcept = default;
|
||||||
|
|
||||||
OnceCallback(RepeatingCallback<RunType> other)
|
OnceCallback(RepeatingCallback<RunType> other)
|
||||||
: internal::CallbackBase(std::move(other)) {}
|
: cef_internal::CallbackBase(std::move(other)) {}
|
||||||
|
|
||||||
OnceCallback& operator=(RepeatingCallback<RunType> other) {
|
OnceCallback& operator=(RepeatingCallback<RunType> other) {
|
||||||
static_cast<internal::CallbackBase&>(*this) = std::move(other);
|
static_cast<cef_internal::CallbackBase&>(*this) = std::move(other);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,7 +142,7 @@ class OnceCallback<R(Args...)> : public internal::CallbackBase {
|
|||||||
OnceCallback<ThenR(Args...)> Then(OnceCallback<ThenR(ThenArgs...)> then) && {
|
OnceCallback<ThenR(Args...)> Then(OnceCallback<ThenR(ThenArgs...)> then) && {
|
||||||
CHECK(then);
|
CHECK(then);
|
||||||
return BindOnce(
|
return BindOnce(
|
||||||
internal::ThenHelper<
|
cef_internal::ThenHelper<
|
||||||
OnceCallback, OnceCallback<ThenR(ThenArgs...)>>::CreateTrampoline(),
|
OnceCallback, OnceCallback<ThenR(ThenArgs...)>>::CreateTrampoline(),
|
||||||
std::move(*this), std::move(then));
|
std::move(*this), std::move(then));
|
||||||
}
|
}
|
||||||
@@ -157,7 +155,7 @@ class OnceCallback<R(Args...)> : public internal::CallbackBase {
|
|||||||
RepeatingCallback<ThenR(ThenArgs...)> then) && {
|
RepeatingCallback<ThenR(ThenArgs...)> then) && {
|
||||||
CHECK(then);
|
CHECK(then);
|
||||||
return BindOnce(
|
return BindOnce(
|
||||||
internal::ThenHelper<
|
cef_internal::ThenHelper<
|
||||||
OnceCallback,
|
OnceCallback,
|
||||||
RepeatingCallback<ThenR(ThenArgs...)>>::CreateTrampoline(),
|
RepeatingCallback<ThenR(ThenArgs...)>>::CreateTrampoline(),
|
||||||
std::move(*this), std::move(then));
|
std::move(*this), std::move(then));
|
||||||
@@ -165,18 +163,19 @@ class OnceCallback<R(Args...)> : public internal::CallbackBase {
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <typename R, typename... Args>
|
template <typename R, typename... Args>
|
||||||
class RepeatingCallback<R(Args...)> : public internal::CallbackBaseCopyable {
|
class RepeatingCallback<R(Args...)>
|
||||||
|
: public cef_internal::CallbackBaseCopyable {
|
||||||
public:
|
public:
|
||||||
using ResultType = R;
|
using ResultType = R;
|
||||||
using RunType = R(Args...);
|
using RunType = R(Args...);
|
||||||
using PolymorphicInvoke = R (*)(internal::BindStateBase*,
|
using PolymorphicInvoke = R (*)(cef_internal::BindStateBase*,
|
||||||
internal::PassingType<Args>...);
|
cef_internal::PassingType<Args>...);
|
||||||
|
|
||||||
constexpr RepeatingCallback() = default;
|
constexpr RepeatingCallback() = default;
|
||||||
RepeatingCallback(std::nullptr_t) = delete;
|
RepeatingCallback(std::nullptr_t) = delete;
|
||||||
|
|
||||||
explicit RepeatingCallback(internal::BindStateBase* bind_state)
|
explicit RepeatingCallback(cef_internal::BindStateBase* bind_state)
|
||||||
: internal::CallbackBaseCopyable(bind_state) {}
|
: cef_internal::CallbackBaseCopyable(bind_state) {}
|
||||||
|
|
||||||
// Copyable and movable.
|
// Copyable and movable.
|
||||||
RepeatingCallback(const RepeatingCallback&) = default;
|
RepeatingCallback(const RepeatingCallback&) = default;
|
||||||
@@ -226,7 +225,7 @@ class RepeatingCallback<R(Args...)> : public internal::CallbackBaseCopyable {
|
|||||||
RepeatingCallback<ThenR(ThenArgs...)> then) const& {
|
RepeatingCallback<ThenR(ThenArgs...)> then) const& {
|
||||||
CHECK(then);
|
CHECK(then);
|
||||||
return BindRepeating(
|
return BindRepeating(
|
||||||
internal::ThenHelper<
|
cef_internal::ThenHelper<
|
||||||
RepeatingCallback,
|
RepeatingCallback,
|
||||||
RepeatingCallback<ThenR(ThenArgs...)>>::CreateTrampoline(),
|
RepeatingCallback<ThenR(ThenArgs...)>>::CreateTrampoline(),
|
||||||
*this, std::move(then));
|
*this, std::move(then));
|
||||||
@@ -237,7 +236,7 @@ class RepeatingCallback<R(Args...)> : public internal::CallbackBaseCopyable {
|
|||||||
RepeatingCallback<ThenR(ThenArgs...)> then) && {
|
RepeatingCallback<ThenR(ThenArgs...)> then) && {
|
||||||
CHECK(then);
|
CHECK(then);
|
||||||
return BindRepeating(
|
return BindRepeating(
|
||||||
internal::ThenHelper<
|
cef_internal::ThenHelper<
|
||||||
RepeatingCallback,
|
RepeatingCallback,
|
||||||
RepeatingCallback<ThenR(ThenArgs...)>>::CreateTrampoline(),
|
RepeatingCallback<ThenR(ThenArgs...)>>::CreateTrampoline(),
|
||||||
std::move(*this), std::move(then));
|
std::move(*this), std::move(then));
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
#if defined(USING_CHROMIUM_INCLUDES)
|
#if defined(USING_CHROMIUM_INCLUDES)
|
||||||
// When building CEF include the Chromium header directly.
|
// When building CEF include the Chromium header directly.
|
||||||
#include "base/callback_forward.h"
|
#include "base/functional/callback_forward.h"
|
||||||
#else // !USING_CHROMIUM_INCLUDES
|
#else // !USING_CHROMIUM_INCLUDES
|
||||||
// The following is substantially similar to the Chromium implementation.
|
// The following is substantially similar to the Chromium implementation.
|
||||||
// If the Chromium implementation diverges the below implementation should be
|
// If the Chromium implementation diverges the below implementation should be
|
||||||
@@ -48,9 +48,11 @@ class OnceCallback;
|
|||||||
template <typename Signature>
|
template <typename Signature>
|
||||||
class RepeatingCallback;
|
class RepeatingCallback;
|
||||||
|
|
||||||
// Syntactic sugar to make OnceClosure<void()> and RepeatingClosure<void()>
|
///
|
||||||
// easier to declare since they will be used in a lot of APIs with delayed
|
/// Syntactic sugar to make OnceClosure<void()> and RepeatingClosure<void()>
|
||||||
// execution.
|
/// easier to declare since they will be used in a lot of APIs with delayed
|
||||||
|
/// execution.
|
||||||
|
///
|
||||||
using OnceClosure = OnceCallback<void()>;
|
using OnceClosure = OnceCallback<void()>;
|
||||||
using RepeatingClosure = RepeatingCallback<void()>;
|
using RepeatingClosure = RepeatingCallback<void()>;
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
#if defined(USING_CHROMIUM_INCLUDES)
|
#if defined(USING_CHROMIUM_INCLUDES)
|
||||||
// When building CEF include the Chromium header directly.
|
// When building CEF include the Chromium header directly.
|
||||||
#include "base/callback_helpers.h"
|
#include "base/functional/callback_helpers.h"
|
||||||
#else // !USING_CHROMIUM_INCLUDES
|
#else // !USING_CHROMIUM_INCLUDES
|
||||||
// The following is substantially similar to the Chromium implementation.
|
// The following is substantially similar to the Chromium implementation.
|
||||||
// If the Chromium implementation diverges the below implementation should be
|
// If the Chromium implementation diverges the below implementation should be
|
||||||
@@ -52,7 +52,6 @@
|
|||||||
|
|
||||||
#include "include/base/cef_bind.h"
|
#include "include/base/cef_bind.h"
|
||||||
#include "include/base/cef_callback.h"
|
#include "include/base/cef_callback.h"
|
||||||
#include "include/base/cef_compiler_specific.h"
|
|
||||||
#include "include/base/cef_logging.h"
|
#include "include/base/cef_logging.h"
|
||||||
|
|
||||||
namespace base {
|
namespace base {
|
||||||
@@ -76,24 +75,32 @@ struct IsOnceCallbackImpl<OnceCallback<R(Args...)>> : std::true_type {};
|
|||||||
|
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
|
|
||||||
// IsBaseCallback<T>::value is true when T is any of the Closure or Callback
|
///
|
||||||
// family of types.
|
/// IsBaseCallback<T>::value is true when T is any of the Closure or Callback
|
||||||
|
/// family of types.
|
||||||
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
using IsBaseCallback = internal::IsBaseCallbackImpl<std::decay_t<T>>;
|
using IsBaseCallback = internal::IsBaseCallbackImpl<std::decay_t<T>>;
|
||||||
|
|
||||||
// IsOnceCallback<T>::value is true when T is a OnceClosure or OnceCallback
|
///
|
||||||
// type.
|
/// IsOnceCallback<T>::value is true when T is a OnceClosure or OnceCallback
|
||||||
|
/// type.
|
||||||
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
using IsOnceCallback = internal::IsOnceCallbackImpl<std::decay_t<T>>;
|
using IsOnceCallback = internal::IsOnceCallbackImpl<std::decay_t<T>>;
|
||||||
|
|
||||||
// SFINAE friendly enabler allowing to overload methods for both Repeating and
|
///
|
||||||
// OnceCallbacks.
|
/// SFINAE friendly enabler allowing to overload methods for both Repeating and
|
||||||
//
|
/// OnceCallbacks.
|
||||||
// Usage:
|
///
|
||||||
// template <template <typename> class CallbackType,
|
/// Usage:
|
||||||
// ... other template args ...,
|
/// <pre>
|
||||||
// typename = EnableIfIsBaseCallback<CallbackType>>
|
/// template <template <typename> class CallbackType,
|
||||||
// void DoStuff(CallbackType<...> cb, ...);
|
/// ... other template args ...,
|
||||||
|
/// typename = EnableIfIsBaseCallback<CallbackType>>
|
||||||
|
/// void DoStuff(CallbackType<...> cb, ...);
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
template <template <typename> class CallbackType>
|
template <template <typename> class CallbackType>
|
||||||
using EnableIfIsBaseCallback =
|
using EnableIfIsBaseCallback =
|
||||||
std::enable_if_t<IsBaseCallback<CallbackType<void()>>::value>;
|
std::enable_if_t<IsBaseCallback<CallbackType<void()>>::value>;
|
||||||
@@ -130,13 +137,16 @@ class OnceCallbackHolder final {
|
|||||||
|
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
|
|
||||||
// Wraps the given OnceCallback into a RepeatingCallback that relays its
|
///
|
||||||
// invocation to the original OnceCallback on the first invocation. The
|
/// Wraps the given OnceCallback into a RepeatingCallback that relays its
|
||||||
// following invocations are just ignored.
|
/// invocation to the original OnceCallback on the first invocation. The
|
||||||
//
|
/// following invocations are just ignored.
|
||||||
// Note that this deliberately subverts the Once/Repeating paradigm of Callbacks
|
///
|
||||||
// but helps ease the migration from old-style Callbacks. Avoid if possible; use
|
/// Note that this deliberately subverts the Once/Repeating paradigm of
|
||||||
// if necessary for migration. TODO(tzik): Remove it. https://crbug.com/730593
|
/// Callbacks but helps ease the migration from old-style Callbacks. Avoid if
|
||||||
|
/// possible; use if necessary for migration.
|
||||||
|
///
|
||||||
|
// TODO(tzik): Remove it. https://crbug.com/730593
|
||||||
template <typename... Args>
|
template <typename... Args>
|
||||||
RepeatingCallback<void(Args...)> AdaptCallbackForRepeating(
|
RepeatingCallback<void(Args...)> AdaptCallbackForRepeating(
|
||||||
OnceCallback<void(Args...)> callback) {
|
OnceCallback<void(Args...)> callback) {
|
||||||
@@ -146,9 +156,11 @@ RepeatingCallback<void(Args...)> AdaptCallbackForRepeating(
|
|||||||
/*ignore_extra_runs=*/true));
|
/*ignore_extra_runs=*/true));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wraps the given OnceCallback and returns two OnceCallbacks with an identical
|
///
|
||||||
// signature. On first invokation of either returned callbacks, the original
|
/// Wraps the given OnceCallback and returns two OnceCallbacks with an identical
|
||||||
// callback is invoked. Invoking the remaining callback results in a crash.
|
/// signature. On first invokation of either returned callbacks, the original
|
||||||
|
/// callback is invoked. Invoking the remaining callback results in a crash.
|
||||||
|
///
|
||||||
template <typename... Args>
|
template <typename... Args>
|
||||||
std::pair<OnceCallback<void(Args...)>, OnceCallback<void(Args...)>>
|
std::pair<OnceCallback<void(Args...)>, OnceCallback<void(Args...)>>
|
||||||
SplitOnceCallback(OnceCallback<void(Args...)> callback) {
|
SplitOnceCallback(OnceCallback<void(Args...)> callback) {
|
||||||
@@ -159,10 +171,12 @@ SplitOnceCallback(OnceCallback<void(Args...)> callback) {
|
|||||||
return std::make_pair(wrapped_once, wrapped_once);
|
return std::make_pair(wrapped_once, wrapped_once);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ScopedClosureRunner is akin to std::unique_ptr<> for Closures. It ensures
|
///
|
||||||
// that the Closure is executed no matter how the current scope exits.
|
/// ScopedClosureRunner is akin to std::unique_ptr<> for Closures. It ensures
|
||||||
// If you are looking for "ScopedCallback", "CallbackRunner", or
|
/// that the Closure is executed no matter how the current scope exits.
|
||||||
// "CallbackScoper" this is the class you want.
|
/// If you are looking for "ScopedCallback", "CallbackRunner", or
|
||||||
|
/// "CallbackScoper" this is the class you want.
|
||||||
|
///
|
||||||
class ScopedClosureRunner {
|
class ScopedClosureRunner {
|
||||||
public:
|
public:
|
||||||
ScopedClosureRunner();
|
ScopedClosureRunner();
|
||||||
@@ -184,13 +198,15 @@ class ScopedClosureRunner {
|
|||||||
void ReplaceClosure(OnceClosure closure);
|
void ReplaceClosure(OnceClosure closure);
|
||||||
|
|
||||||
// Releases the Closure without calling.
|
// Releases the Closure without calling.
|
||||||
OnceClosure Release() WARN_UNUSED_RESULT;
|
[[nodiscard]] OnceClosure Release();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
OnceClosure closure_;
|
OnceClosure closure_;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Creates a null callback.
|
///
|
||||||
|
/// Creates a null callback.
|
||||||
|
///
|
||||||
class NullCallback {
|
class NullCallback {
|
||||||
public:
|
public:
|
||||||
template <typename R, typename... Args>
|
template <typename R, typename... Args>
|
||||||
@@ -203,7 +219,9 @@ class NullCallback {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Creates a callback that does nothing when called.
|
///
|
||||||
|
/// Creates a callback that does nothing when called.
|
||||||
|
///
|
||||||
class DoNothing {
|
class DoNothing {
|
||||||
public:
|
public:
|
||||||
template <typename... Args>
|
template <typename... Args>
|
||||||
@@ -226,9 +244,11 @@ class DoNothing {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Useful for creating a Closure that will delete a pointer when invoked. Only
|
///
|
||||||
// use this when necessary. In most cases MessageLoop::DeleteSoon() is a better
|
/// Useful for creating a Closure that will delete a pointer when invoked. Only
|
||||||
// fit.
|
/// use this when necessary. In most cases MessageLoop::DeleteSoon() is a better
|
||||||
|
/// fit.
|
||||||
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void DeletePointer(T* obj) {
|
void DeletePointer(T* obj) {
|
||||||
delete obj;
|
delete obj;
|
||||||
|
|||||||
@@ -28,54 +28,57 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
// OVERVIEW:
|
///
|
||||||
//
|
/// \file
|
||||||
// A container for a list of callbacks. Provides callers the ability to manually
|
/// A container for a list of callbacks. Provides callers the ability to
|
||||||
// or automatically unregister callbacks at any time, including during callback
|
/// manually or automatically unregister callbacks at any time, including during
|
||||||
// notification.
|
/// callback notification.
|
||||||
//
|
///
|
||||||
// TYPICAL USAGE:
|
/// TYPICAL USAGE:
|
||||||
//
|
///
|
||||||
// class MyWidget {
|
/// <pre>
|
||||||
// public:
|
/// class MyWidget {
|
||||||
// using CallbackList = base::RepeatingCallbackList<void(const Foo&)>;
|
/// public:
|
||||||
//
|
/// using CallbackList = base::RepeatingCallbackList<void(const Foo&)>;
|
||||||
// // Registers |cb| to be called whenever NotifyFoo() is executed.
|
///
|
||||||
// CallbackListSubscription RegisterCallback(CallbackList::CallbackType cb) {
|
/// // Registers |cb| to be called whenever NotifyFoo() is executed.
|
||||||
// return callback_list_.Add(std::move(cb));
|
/// CallbackListSubscription RegisterCallback(CallbackList::CallbackType cb) {
|
||||||
// }
|
/// return callback_list_.Add(std::move(cb));
|
||||||
//
|
/// }
|
||||||
// private:
|
///
|
||||||
// // Calls all registered callbacks, with |foo| as the supplied arg.
|
/// private:
|
||||||
// void NotifyFoo(const Foo& foo) {
|
/// // Calls all registered callbacks, with |foo| as the supplied arg.
|
||||||
// callback_list_.Notify(foo);
|
/// void NotifyFoo(const Foo& foo) {
|
||||||
// }
|
/// callback_list_.Notify(foo);
|
||||||
//
|
/// }
|
||||||
// CallbackList callback_list_;
|
///
|
||||||
// };
|
/// CallbackList callback_list_;
|
||||||
//
|
/// };
|
||||||
//
|
///
|
||||||
// class MyWidgetListener {
|
///
|
||||||
// private:
|
/// class MyWidgetListener {
|
||||||
// void OnFoo(const Foo& foo) {
|
/// private:
|
||||||
// // Called whenever MyWidget::NotifyFoo() is executed, unless
|
/// void OnFoo(const Foo& foo) {
|
||||||
// // |foo_subscription_| has been destroyed.
|
/// // Called whenever MyWidget::NotifyFoo() is executed, unless
|
||||||
// }
|
/// // |foo_subscription_| has been destroyed.
|
||||||
//
|
/// }
|
||||||
// // Automatically deregisters the callback when deleted (e.g. in
|
///
|
||||||
// // ~MyWidgetListener()). Unretained(this) is safe here since the
|
/// // Automatically deregisters the callback when deleted (e.g. in
|
||||||
// // ScopedClosureRunner does not outlive |this|.
|
/// // ~MyWidgetListener()). Unretained(this) is safe here since the
|
||||||
// CallbackListSubscription foo_subscription_ =
|
/// // ScopedClosureRunner does not outlive |this|.
|
||||||
// MyWidget::Get()->RegisterCallback(
|
/// CallbackListSubscription foo_subscription_ =
|
||||||
// base::BindRepeating(&MyWidgetListener::OnFoo,
|
/// MyWidget::Get()->RegisterCallback(
|
||||||
// base::Unretained(this)));
|
/// base::BindRepeating(&MyWidgetListener::OnFoo,
|
||||||
// };
|
/// base::Unretained(this)));
|
||||||
//
|
/// };
|
||||||
// UNSUPPORTED:
|
/// </pre>
|
||||||
//
|
///
|
||||||
// * Destroying the CallbackList during callback notification.
|
/// UNSUPPORTED:
|
||||||
//
|
///
|
||||||
// This is possible to support, but not currently necessary.
|
/// * Destroying the CallbackList during callback notification.
|
||||||
|
///
|
||||||
|
/// This is possible to support, but not currently necessary.
|
||||||
|
///
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_BASE_CEF_CALLBACK_LIST_H_
|
#ifndef CEF_INCLUDE_BASE_CEF_CALLBACK_LIST_H_
|
||||||
#define CEF_INCLUDE_BASE_CEF_CALLBACK_LIST_H_
|
#define CEF_INCLUDE_BASE_CEF_CALLBACK_LIST_H_
|
||||||
@@ -83,7 +86,7 @@
|
|||||||
|
|
||||||
#if defined(USING_CHROMIUM_INCLUDES)
|
#if defined(USING_CHROMIUM_INCLUDES)
|
||||||
// When building CEF include the Chromium header directly.
|
// When building CEF include the Chromium header directly.
|
||||||
#include "base/callback_list.h"
|
#include "base/functional/callback_list.h"
|
||||||
#else // !USING_CHROMIUM_INCLUDES
|
#else // !USING_CHROMIUM_INCLUDES
|
||||||
// The following is substantially similar to the Chromium implementation.
|
// The following is substantially similar to the Chromium implementation.
|
||||||
// If the Chromium implementation diverges the below implementation should be
|
// If the Chromium implementation diverges the below implementation should be
|
||||||
@@ -98,7 +101,6 @@
|
|||||||
#include "include/base/cef_bind.h"
|
#include "include/base/cef_bind.h"
|
||||||
#include "include/base/cef_callback.h"
|
#include "include/base/cef_callback.h"
|
||||||
#include "include/base/cef_callback_helpers.h"
|
#include "include/base/cef_callback_helpers.h"
|
||||||
#include "include/base/cef_compiler_specific.h"
|
|
||||||
#include "include/base/cef_logging.h"
|
#include "include/base/cef_logging.h"
|
||||||
#include "include/base/cef_weak_ptr.h"
|
#include "include/base/cef_weak_ptr.h"
|
||||||
|
|
||||||
@@ -191,7 +193,7 @@ class CallbackListBase {
|
|||||||
|
|
||||||
// Registers |cb| for future notifications. Returns a CallbackListSubscription
|
// Registers |cb| for future notifications. Returns a CallbackListSubscription
|
||||||
// whose destruction will cancel |cb|.
|
// whose destruction will cancel |cb|.
|
||||||
CallbackListSubscription Add(CallbackType cb) WARN_UNUSED_RESULT {
|
[[nodiscard]] CallbackListSubscription Add(CallbackType cb) {
|
||||||
DCHECK(!cb.is_null());
|
DCHECK(!cb.is_null());
|
||||||
return CallbackListSubscription(base::BindOnce(
|
return CallbackListSubscription(base::BindOnce(
|
||||||
&CallbackListBase::CancelCallback, weak_ptr_factory_.GetWeakPtr(),
|
&CallbackListBase::CancelCallback, weak_ptr_factory_.GetWeakPtr(),
|
||||||
@@ -240,8 +242,9 @@ class CallbackListBase {
|
|||||||
// the reentrant Notify() call.
|
// the reentrant Notify() call.
|
||||||
template <typename... RunArgs>
|
template <typename... RunArgs>
|
||||||
void Notify(RunArgs&&... args) {
|
void Notify(RunArgs&&... args) {
|
||||||
if (empty())
|
if (empty()) {
|
||||||
return; // Nothing to do.
|
return; // Nothing to do.
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
AutoReset<bool> iterating(&iterating_, true);
|
AutoReset<bool> iterating(&iterating_, true);
|
||||||
@@ -255,18 +258,20 @@ class CallbackListBase {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
for (auto it = next_valid(callbacks_.begin()); it != callbacks_.end();
|
for (auto it = next_valid(callbacks_.begin()); it != callbacks_.end();
|
||||||
it = next_valid(it))
|
it = next_valid(it)) {
|
||||||
// NOTE: Intentionally does not call std::forward<RunArgs>(args)...,
|
// NOTE: Intentionally does not call std::forward<RunArgs>(args)...,
|
||||||
// since that would allow move-only arguments.
|
// since that would allow move-only arguments.
|
||||||
static_cast<CallbackListImpl*>(this)->RunCallback(it++, args...);
|
static_cast<CallbackListImpl*>(this)->RunCallback(it++, args...);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Re-entrant invocations shouldn't prune anything from the list. This can
|
// Re-entrant invocations shouldn't prune anything from the list. This can
|
||||||
// invalidate iterators from underneath higher call frames. It's safe to
|
// invalidate iterators from underneath higher call frames. It's safe to
|
||||||
// simply do nothing, since the outermost frame will continue through here
|
// simply do nothing, since the outermost frame will continue through here
|
||||||
// and prune all null callbacks below.
|
// and prune all null callbacks below.
|
||||||
if (iterating_)
|
if (iterating_) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Any null callbacks remaining in the list were canceled due to
|
// Any null callbacks remaining in the list were canceled due to
|
||||||
// Subscription destruction during iteration, and can safely be erased now.
|
// Subscription destruction during iteration, and can safely be erased now.
|
||||||
@@ -280,9 +285,10 @@ class CallbackListBase {
|
|||||||
// that were executed above have all been removed regardless of whether
|
// that were executed above have all been removed regardless of whether
|
||||||
// they're counted in |erased_callbacks_|.
|
// they're counted in |erased_callbacks_|.
|
||||||
if (removal_callback_ &&
|
if (removal_callback_ &&
|
||||||
(erased_callbacks || IsOnceCallback<CallbackType>::value))
|
(erased_callbacks || IsOnceCallback<CallbackType>::value)) {
|
||||||
removal_callback_.Run(); // May delete |this|!
|
removal_callback_.Run(); // May delete |this|!
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
using Callbacks = typename CallbackListTraits<CallbackListImpl>::Callbacks;
|
using Callbacks = typename CallbackListTraits<CallbackListImpl>::Callbacks;
|
||||||
@@ -293,8 +299,9 @@ class CallbackListBase {
|
|||||||
private:
|
private:
|
||||||
// Cancels the callback pointed to by |it|, which is guaranteed to be valid.
|
// Cancels the callback pointed to by |it|, which is guaranteed to be valid.
|
||||||
void CancelCallback(const typename Callbacks::iterator& it) {
|
void CancelCallback(const typename Callbacks::iterator& it) {
|
||||||
if (static_cast<CallbackListImpl*>(this)->CancelNullCallback(it))
|
if (static_cast<CallbackListImpl*>(this)->CancelNullCallback(it)) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (iterating_) {
|
if (iterating_) {
|
||||||
// Calling erase() here is unsafe, since the loop in Notify() may be
|
// Calling erase() here is unsafe, since the loop in Notify() may be
|
||||||
@@ -304,10 +311,11 @@ class CallbackListBase {
|
|||||||
it->Reset();
|
it->Reset();
|
||||||
} else {
|
} else {
|
||||||
callbacks_.erase(it);
|
callbacks_.erase(it);
|
||||||
if (removal_callback_)
|
if (removal_callback_) {
|
||||||
removal_callback_.Run(); // May delete |this|!
|
removal_callback_.Run(); // May delete |this|!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Set while Notify() is traversing |callbacks_|. Used primarily to avoid
|
// Set while Notify() is traversing |callbacks_|. Used primarily to avoid
|
||||||
// invalidating iterators that may be in use.
|
// invalidating iterators that may be in use.
|
||||||
@@ -382,9 +390,9 @@ class RepeatingCallbackList
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Syntactic sugar to parallel that used for Callbacks.
|
///
|
||||||
// ClosureList explicitly not provided since it is not used, and CallbackList
|
/// Syntactic sugar to parallel that used for Callbacks.
|
||||||
// is deprecated. {Once,Repeating}ClosureList should instead be used.
|
///
|
||||||
using OnceClosureList = OnceCallbackList<void()>;
|
using OnceClosureList = OnceCallbackList<void()>;
|
||||||
using RepeatingClosureList = RepeatingCallbackList<void()>;
|
using RepeatingClosureList = RepeatingCallbackList<void()>;
|
||||||
|
|
||||||
|
|||||||
@@ -28,44 +28,51 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
// CancelableCallback is a wrapper around base::Callback that allows
|
///
|
||||||
// cancellation of a callback. CancelableCallback takes a reference on the
|
/// \file
|
||||||
// wrapped callback until this object is destroyed or Reset()/Cancel() are
|
/// CancelableCallback is a wrapper around base::Callback that allows
|
||||||
// called.
|
/// cancellation of a callback. CancelableCallback takes a reference on the
|
||||||
//
|
/// wrapped callback until this object is destroyed or Reset()/Cancel() are
|
||||||
// NOTE:
|
/// called.
|
||||||
//
|
///
|
||||||
// Calling CancelableCallback::Cancel() brings the object back to its natural,
|
/// NOTE:
|
||||||
// default-constructed state, i.e., CancelableCallback::callback() will return
|
///
|
||||||
// a null callback.
|
/// Calling CancelableCallback::Cancel() brings the object back to its natural,
|
||||||
//
|
/// default-constructed state, i.e., CancelableCallback::callback() will return
|
||||||
// THREAD-SAFETY:
|
/// a null callback.
|
||||||
//
|
///
|
||||||
// CancelableCallback objects must be created on, posted to, cancelled on, and
|
/// THREAD-SAFETY:
|
||||||
// destroyed on the same thread.
|
///
|
||||||
//
|
/// CancelableCallback objects must be created on, posted to, cancelled on, and
|
||||||
//
|
/// destroyed on the same thread.
|
||||||
// EXAMPLE USAGE:
|
///
|
||||||
//
|
///
|
||||||
// In the following example, the test is verifying that RunIntensiveTest()
|
/// EXAMPLE USAGE:
|
||||||
// Quit()s the message loop within 4 seconds. The cancelable callback is posted
|
///
|
||||||
// to the message loop, the intensive test runs, the message loop is run,
|
/// In the following example, the test is verifying that RunIntensiveTest()
|
||||||
// then the callback is cancelled.
|
/// Quit()s the message loop within 4 seconds. The cancelable callback is posted
|
||||||
//
|
/// to the message loop, the intensive test runs, the message loop is run,
|
||||||
// RunLoop run_loop;
|
/// then the callback is cancelled.
|
||||||
//
|
///
|
||||||
// void TimeoutCallback(const std::string& timeout_message) {
|
/// <pre>
|
||||||
// FAIL() << timeout_message;
|
/// RunLoop run_loop;
|
||||||
// run_loop.QuitWhenIdle();
|
///
|
||||||
// }
|
/// void TimeoutCallback(const std::string& timeout_message) {
|
||||||
//
|
/// FAIL() << timeout_message;
|
||||||
// CancelableOnceClosure timeout(
|
/// run_loop.QuitWhenIdle();
|
||||||
// base::BindOnce(&TimeoutCallback, "Test timed out."));
|
/// }
|
||||||
// ThreadTaskRunnerHandle::Get()->PostDelayedTask(FROM_HERE, timeout.callback(),
|
///
|
||||||
// TimeDelta::FromSeconds(4));
|
/// CancelableOnceClosure timeout(
|
||||||
// RunIntensiveTest();
|
/// base::BindOnce(&TimeoutCallback, "Test timed out."));
|
||||||
// run_loop.Run();
|
/// ThreadTaskRunnerHandle::Get()->PostDelayedTask(FROM_HERE,
|
||||||
// timeout.Cancel(); // Hopefully this is hit before the timeout callback runs.
|
/// timeout.callback(),
|
||||||
|
/// TimeDelta::FromSeconds(4));
|
||||||
|
/// RunIntensiveTest();
|
||||||
|
/// run_loop.Run();
|
||||||
|
/// // Hopefully this is hit before the timeout callback runs.
|
||||||
|
/// timeout.Cancel();
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_BASE_CEF_CANCELABLE_CALLBACK_H_
|
#ifndef CEF_INCLUDE_BASE_CEF_CANCELABLE_CALLBACK_H_
|
||||||
#define CEF_INCLUDE_BASE_CEF_CANCELABLE_CALLBACK_H_
|
#define CEF_INCLUDE_BASE_CEF_CANCELABLE_CALLBACK_H_
|
||||||
@@ -126,8 +133,9 @@ class CancelableCallbackImpl {
|
|||||||
|
|
||||||
// Returns a callback that can be disabled by calling Cancel().
|
// Returns a callback that can be disabled by calling Cancel().
|
||||||
CallbackType callback() const {
|
CallbackType callback() const {
|
||||||
if (!callback_)
|
if (!callback_) {
|
||||||
return CallbackType();
|
return CallbackType();
|
||||||
|
}
|
||||||
CallbackType forwarder;
|
CallbackType forwarder;
|
||||||
MakeForwarder(&forwarder);
|
MakeForwarder(&forwarder);
|
||||||
return forwarder;
|
return forwarder;
|
||||||
@@ -166,8 +174,10 @@ class CancelableCallbackImpl {
|
|||||||
|
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
|
|
||||||
// Consider using base::WeakPtr directly instead of base::CancelableCallback for
|
///
|
||||||
// the task cancellation.
|
/// Consider using base::WeakPtr directly instead of base::CancelableCallback
|
||||||
|
/// for the task cancellation.
|
||||||
|
///
|
||||||
template <typename Signature>
|
template <typename Signature>
|
||||||
using CancelableOnceCallback =
|
using CancelableOnceCallback =
|
||||||
internal::CancelableCallbackImpl<OnceCallback<Signature>>;
|
internal::CancelableCallbackImpl<OnceCallback<Signature>>;
|
||||||
|
|||||||
@@ -32,12 +32,7 @@
|
|||||||
#define CEF_INCLUDE_BASE_CEF_COMPILER_SPECIFIC_H_
|
#define CEF_INCLUDE_BASE_CEF_COMPILER_SPECIFIC_H_
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#if defined(BASE_COMPILER_SPECIFIC_H_)
|
#if defined(USING_CHROMIUM_INCLUDES)
|
||||||
// Do nothing if the Chromium header has already been included.
|
|
||||||
// This can happen in cases where Chromium code is used directly by the
|
|
||||||
// client application. When using Chromium code directly always include
|
|
||||||
// the Chromium header first to avoid type conflicts.
|
|
||||||
#elif defined(USING_CHROMIUM_INCLUDES)
|
|
||||||
// When building CEF include the Chromium header directly.
|
// When building CEF include the Chromium header directly.
|
||||||
#include "base/compiler_specific.h"
|
#include "base/compiler_specific.h"
|
||||||
#else // !USING_CHROMIUM_INCLUDES
|
#else // !USING_CHROMIUM_INCLUDES
|
||||||
@@ -76,23 +71,6 @@
|
|||||||
#define __has_attribute(x) 0
|
#define __has_attribute(x) 0
|
||||||
#endif // !defined(__has_attribute)
|
#endif // !defined(__has_attribute)
|
||||||
|
|
||||||
// Annotate a variable indicating it's ok if the variable is not used.
|
|
||||||
// (Typically used to silence a compiler warning when the assignment
|
|
||||||
// is important for some other reason.)
|
|
||||||
// Use like:
|
|
||||||
// int x = ...;
|
|
||||||
// ALLOW_UNUSED_LOCAL(x);
|
|
||||||
#define ALLOW_UNUSED_LOCAL(x) (void)x
|
|
||||||
|
|
||||||
// Annotate a typedef or function indicating it's ok if it's not used.
|
|
||||||
// Use like:
|
|
||||||
// typedef Foo Bar ALLOW_UNUSED_TYPE;
|
|
||||||
#if defined(COMPILER_GCC) || defined(__clang__)
|
|
||||||
#define ALLOW_UNUSED_TYPE __attribute__((unused))
|
|
||||||
#else
|
|
||||||
#define ALLOW_UNUSED_TYPE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Annotate a function indicating it should not be inlined.
|
// Annotate a function indicating it should not be inlined.
|
||||||
// Use like:
|
// Use like:
|
||||||
// NOINLINE void DoStuff() { ... }
|
// NOINLINE void DoStuff() { ... }
|
||||||
@@ -153,17 +131,6 @@
|
|||||||
#define ALIGNAS(byte_alignment) __attribute__((aligned(byte_alignment)))
|
#define ALIGNAS(byte_alignment) __attribute__((aligned(byte_alignment)))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Annotate a function indicating the caller must examine the return value.
|
|
||||||
// Use like:
|
|
||||||
// int foo() WARN_UNUSED_RESULT;
|
|
||||||
// To explicitly ignore a result, see |ignore_result()| in base/macros.h.
|
|
||||||
#undef WARN_UNUSED_RESULT
|
|
||||||
#if defined(COMPILER_GCC) || defined(__clang__)
|
|
||||||
#define WARN_UNUSED_RESULT __attribute__((warn_unused_result))
|
|
||||||
#else
|
|
||||||
#define WARN_UNUSED_RESULT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// In case the compiler supports it NO_UNIQUE_ADDRESS evaluates to the C++20
|
// In case the compiler supports it NO_UNIQUE_ADDRESS evaluates to the C++20
|
||||||
// attribute [[no_unique_address]]. This allows annotating data members so that
|
// attribute [[no_unique_address]]. This allows annotating data members so that
|
||||||
// they need not have an address distinct from all other non-static data members
|
// they need not have an address distinct from all other non-static data members
|
||||||
@@ -419,5 +386,4 @@ inline constexpr bool AnalyzerAssumeTrue(bool arg) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // !USING_CHROMIUM_INCLUDES
|
#endif // !USING_CHROMIUM_INCLUDES
|
||||||
|
|
||||||
#endif // CEF_INCLUDE_BASE_CEF_COMPILER_SPECIFIC_H_
|
#endif // CEF_INCLUDE_BASE_CEF_COMPILER_SPECIFIC_H_
|
||||||
|
|||||||
@@ -1,133 +0,0 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. Portions copyright (c) 2021
|
|
||||||
// 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_CXX17_BACKPORTS_H_
|
|
||||||
#define CEF_INCLUDE_BASE_CEF_CXX17_BACKPORTS_H_
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#if defined(USING_CHROMIUM_INCLUDES)
|
|
||||||
// When building CEF include the Chromium header directly.
|
|
||||||
// TODO(cef): Change to "base/cxx17_backports.h" in M93.
|
|
||||||
#include "base/stl_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 <array>
|
|
||||||
#include <initializer_list>
|
|
||||||
#include <memory>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
namespace base {
|
|
||||||
|
|
||||||
// C++14 implementation of C++17's std::size():
|
|
||||||
// http://en.cppreference.com/w/cpp/iterator/size
|
|
||||||
template <typename Container>
|
|
||||||
constexpr auto size(const Container& c) -> decltype(c.size()) {
|
|
||||||
return c.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T, size_t N>
|
|
||||||
constexpr size_t size(const T (&array)[N]) noexcept {
|
|
||||||
return N;
|
|
||||||
}
|
|
||||||
|
|
||||||
// C++14 implementation of C++17's std::empty():
|
|
||||||
// http://en.cppreference.com/w/cpp/iterator/empty
|
|
||||||
template <typename Container>
|
|
||||||
constexpr auto empty(const Container& c) -> decltype(c.empty()) {
|
|
||||||
return c.empty();
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T, size_t N>
|
|
||||||
constexpr bool empty(const T (&array)[N]) noexcept {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
constexpr bool empty(std::initializer_list<T> il) noexcept {
|
|
||||||
return il.size() == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// C++14 implementation of C++17's std::data():
|
|
||||||
// http://en.cppreference.com/w/cpp/iterator/data
|
|
||||||
template <typename Container>
|
|
||||||
constexpr auto data(Container& c) -> decltype(c.data()) {
|
|
||||||
return c.data();
|
|
||||||
}
|
|
||||||
|
|
||||||
// std::basic_string::data() had no mutable overload prior to C++17 [1].
|
|
||||||
// Hence this overload is provided.
|
|
||||||
// Note: str[0] is safe even for empty strings, as they are guaranteed to be
|
|
||||||
// null-terminated [2].
|
|
||||||
//
|
|
||||||
// [1] http://en.cppreference.com/w/cpp/string/basic_string/data
|
|
||||||
// [2] http://en.cppreference.com/w/cpp/string/basic_string/operator_at
|
|
||||||
template <typename CharT, typename Traits, typename Allocator>
|
|
||||||
CharT* data(std::basic_string<CharT, Traits, Allocator>& str) {
|
|
||||||
return std::addressof(str[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename Container>
|
|
||||||
constexpr auto data(const Container& c) -> decltype(c.data()) {
|
|
||||||
return c.data();
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T, size_t N>
|
|
||||||
constexpr T* data(T (&array)[N]) noexcept {
|
|
||||||
return array;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
constexpr const T* data(std::initializer_list<T> il) noexcept {
|
|
||||||
return il.begin();
|
|
||||||
}
|
|
||||||
|
|
||||||
// std::array::data() was not constexpr prior to C++17 [1].
|
|
||||||
// Hence these overloads are provided.
|
|
||||||
//
|
|
||||||
// [1] https://en.cppreference.com/w/cpp/container/array/data
|
|
||||||
template <typename T, size_t N>
|
|
||||||
constexpr T* data(std::array<T, N>& array) noexcept {
|
|
||||||
return !array.empty() ? &array[0] : nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T, size_t N>
|
|
||||||
constexpr const T* data(const std::array<T, N>& array) noexcept {
|
|
||||||
return !array.empty() ? &array[0] : nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace base
|
|
||||||
|
|
||||||
#endif // !USING_CHROMIUM_INCLUDES
|
|
||||||
|
|
||||||
#endif // CEF_INCLUDE_BASE_CEF_CXX17_BACKPORTS_H_
|
|
||||||
@@ -41,28 +41,35 @@
|
|||||||
// updated to match.
|
// updated to match.
|
||||||
|
|
||||||
#include "include/base/cef_logging.h"
|
#include "include/base/cef_logging.h"
|
||||||
#include "include/base/cef_macros.h"
|
|
||||||
#include "include/base/cef_platform_thread.h"
|
#include "include/base/cef_platform_thread.h"
|
||||||
#include "include/base/internal/cef_lock_impl.h"
|
#include "include/base/internal/cef_lock_impl.h"
|
||||||
|
|
||||||
namespace base {
|
namespace base {
|
||||||
namespace cef_internal {
|
namespace cef_internal {
|
||||||
|
|
||||||
// A convenient wrapper for an OS specific critical section. The only real
|
///
|
||||||
// intelligence in this class is in debug mode for the support for the
|
/// A convenient wrapper for an OS specific critical section. The only real
|
||||||
// AssertAcquired() method.
|
/// intelligence in this class is in debug mode for the support for the
|
||||||
|
/// AssertAcquired() method.
|
||||||
|
///
|
||||||
class Lock {
|
class Lock {
|
||||||
public:
|
public:
|
||||||
#if !DCHECK_IS_ON() // Optimized wrapper implementation
|
#if !DCHECK_IS_ON() // Optimized wrapper implementation
|
||||||
Lock() : lock_() {}
|
Lock() : lock_() {}
|
||||||
|
|
||||||
|
Lock(const Lock&) = delete;
|
||||||
|
Lock& operator=(const Lock&) = delete;
|
||||||
|
|
||||||
~Lock() {}
|
~Lock() {}
|
||||||
void Acquire() { lock_.Lock(); }
|
void Acquire() { lock_.Lock(); }
|
||||||
void Release() { lock_.Unlock(); }
|
void Release() { lock_.Unlock(); }
|
||||||
|
|
||||||
// If the lock is not held, take it and return true. If the lock is already
|
///
|
||||||
// held by another thread, immediately return false. This must not be called
|
/// If the lock is not held, take it and return true. If the lock is already
|
||||||
// by a thread already holding the lock (what happens is undefined and an
|
/// held by another thread, immediately return false. This must not be called
|
||||||
// assertion may fail).
|
/// by a thread already holding the lock (what happens is undefined and an
|
||||||
|
/// assertion may fail).
|
||||||
|
///
|
||||||
bool Try() { return lock_.Try(); }
|
bool Try() { return lock_.Try(); }
|
||||||
|
|
||||||
// Null implementation if not debug.
|
// Null implementation if not debug.
|
||||||
@@ -111,11 +118,11 @@ class Lock {
|
|||||||
|
|
||||||
// Platform specific underlying lock implementation.
|
// Platform specific underlying lock implementation.
|
||||||
LockImpl lock_;
|
LockImpl lock_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(Lock);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// A helper class that acquires the given Lock while the AutoLock is in scope.
|
///
|
||||||
|
/// A helper class that acquires the given Lock while the AutoLock is in scope.
|
||||||
|
///
|
||||||
class AutoLock {
|
class AutoLock {
|
||||||
public:
|
public:
|
||||||
struct AlreadyAcquired {};
|
struct AlreadyAcquired {};
|
||||||
@@ -126,6 +133,9 @@ class AutoLock {
|
|||||||
lock_.AssertAcquired();
|
lock_.AssertAcquired();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AutoLock(const AutoLock&) = delete;
|
||||||
|
AutoLock& operator=(const AutoLock&) = delete;
|
||||||
|
|
||||||
~AutoLock() {
|
~AutoLock() {
|
||||||
lock_.AssertAcquired();
|
lock_.AssertAcquired();
|
||||||
lock_.Release();
|
lock_.Release();
|
||||||
@@ -133,11 +143,12 @@ class AutoLock {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Lock& lock_;
|
Lock& lock_;
|
||||||
DISALLOW_COPY_AND_ASSIGN(AutoLock);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// AutoUnlock is a helper that will Release() the |lock| argument in the
|
///
|
||||||
// constructor, and re-Acquire() it in the destructor.
|
/// AutoUnlock is a helper that will Release() the |lock| argument in the
|
||||||
|
/// constructor, and re-Acquire() it in the destructor.
|
||||||
|
///
|
||||||
class AutoUnlock {
|
class AutoUnlock {
|
||||||
public:
|
public:
|
||||||
explicit AutoUnlock(Lock& lock) : lock_(lock) {
|
explicit AutoUnlock(Lock& lock) : lock_(lock) {
|
||||||
@@ -146,11 +157,13 @@ class AutoUnlock {
|
|||||||
lock_.Release();
|
lock_.Release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AutoUnlock(const AutoUnlock&) = delete;
|
||||||
|
AutoUnlock& operator=(const AutoUnlock&) = delete;
|
||||||
|
|
||||||
~AutoUnlock() { lock_.Acquire(); }
|
~AutoUnlock() { lock_.Acquire(); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Lock& lock_;
|
Lock& lock_;
|
||||||
DISALLOW_COPY_AND_ASSIGN(AutoUnlock);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace cef_internal
|
} // namespace cef_internal
|
||||||
@@ -158,9 +171,9 @@ class AutoUnlock {
|
|||||||
// Implement classes in the cef_internal namespace and then expose them to the
|
// Implement classes in the cef_internal namespace and then expose them to the
|
||||||
// base namespace. This avoids conflicts with the base.lib implementation when
|
// base namespace. This avoids conflicts with the base.lib implementation when
|
||||||
// linking sandbox support on Windows.
|
// linking sandbox support on Windows.
|
||||||
using cef_internal::Lock;
|
|
||||||
using cef_internal::AutoLock;
|
using cef_internal::AutoLock;
|
||||||
using cef_internal::AutoUnlock;
|
using cef_internal::AutoUnlock;
|
||||||
|
using cef_internal::Lock;
|
||||||
|
|
||||||
} // namespace base
|
} // namespace base
|
||||||
|
|
||||||
|
|||||||
@@ -27,110 +27,130 @@
|
|||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
|
||||||
// ---------------------------------------------------------------------------
|
///
|
||||||
//
|
/// \file
|
||||||
// The contents of this file are only available to applications that link
|
/// A bunch of macros for logging.
|
||||||
// against the libcef_dll_wrapper target.
|
///
|
||||||
//
|
/// NOTE: The contents of this file are only available to applications that link
|
||||||
// WARNING: Logging macros should not be used in the main/browser process before
|
/// against the libcef_dll_wrapper target.
|
||||||
// calling CefInitialize or in sub-processes before calling CefExecuteProcess.
|
///
|
||||||
//
|
/// WARNING: Logging macros should not be used in the main/browser process
|
||||||
// Instructions
|
/// before calling CefInitialize or in sub-processes before calling
|
||||||
// ------------
|
/// CefExecuteProcess.
|
||||||
//
|
///
|
||||||
// Make a bunch of macros for logging. The way to log things is to stream
|
/// INSTRUCTIONS:
|
||||||
// things to LOG(<a particular severity level>). E.g.,
|
///
|
||||||
//
|
/// The way to log things is to stream things to LOG(<a particular severity
|
||||||
// LOG(INFO) << "Found " << num_cookies << " cookies";
|
/// level>). E.g.,
|
||||||
//
|
///
|
||||||
// You can also do conditional logging:
|
/// <pre>
|
||||||
//
|
/// LOG(INFO) << "Found " << num_cookies << " cookies";
|
||||||
// LOG_IF(INFO, num_cookies > 10) << "Got lots of cookies";
|
/// </pre>
|
||||||
//
|
///
|
||||||
// The CHECK(condition) macro is active in both debug and release builds and
|
/// You can also do conditional logging:
|
||||||
// effectively performs a LOG(FATAL) which terminates the process and
|
///
|
||||||
// generates a crashdump unless a debugger is attached.
|
/// <pre>
|
||||||
//
|
/// LOG_IF(INFO, num_cookies > 10) << "Got lots of cookies";
|
||||||
// There are also "debug mode" logging macros like the ones above:
|
/// </pre>
|
||||||
//
|
///
|
||||||
// DLOG(INFO) << "Found cookies";
|
/// The CHECK(condition) macro is active in both debug and release builds and
|
||||||
//
|
/// effectively performs a LOG(FATAL) which terminates the process and
|
||||||
// DLOG_IF(INFO, num_cookies > 10) << "Got lots of cookies";
|
/// generates a crashdump unless a debugger is attached.
|
||||||
//
|
///
|
||||||
// All "debug mode" logging is compiled away to nothing for non-debug mode
|
/// There are also "debug mode" logging macros like the ones above:
|
||||||
// compiles. LOG_IF and development flags also work well together
|
///
|
||||||
// because the code can be compiled away sometimes.
|
/// <pre>
|
||||||
//
|
/// DLOG(INFO) << "Found cookies";
|
||||||
// We also have
|
///
|
||||||
//
|
/// DLOG_IF(INFO, num_cookies > 10) << "Got lots of cookies";
|
||||||
// LOG_ASSERT(assertion);
|
/// </pre>
|
||||||
// DLOG_ASSERT(assertion);
|
///
|
||||||
//
|
/// All "debug mode" logging is compiled away to nothing for non-debug mode
|
||||||
// which is syntactic sugar for {,D}LOG_IF(FATAL, assert fails) << assertion;
|
/// compiles. LOG_IF and development flags also work well together
|
||||||
//
|
/// because the code can be compiled away sometimes.
|
||||||
// There are "verbose level" logging macros. They look like
|
///
|
||||||
//
|
/// We also have
|
||||||
// VLOG(1) << "I'm printed when you run the program with --v=1 or more";
|
///
|
||||||
// VLOG(2) << "I'm printed when you run the program with --v=2 or more";
|
/// <pre>
|
||||||
//
|
/// LOG_ASSERT(assertion);
|
||||||
// These always log at the INFO log level (when they log at all).
|
/// DLOG_ASSERT(assertion);
|
||||||
// The verbose logging can also be turned on module-by-module. For instance,
|
/// </pre>
|
||||||
// --vmodule=profile=2,icon_loader=1,browser_*=3,*/chromeos/*=4 --v=0
|
///
|
||||||
// will cause:
|
/// which is syntactic sugar for "{,D}LOG_IF(FATAL, assert fails) << assertion;"
|
||||||
// a. VLOG(2) and lower messages to be printed from profile.{h,cc}
|
///
|
||||||
// b. VLOG(1) and lower messages to be printed from icon_loader.{h,cc}
|
/// There are "verbose level" logging macros. They look like
|
||||||
// c. VLOG(3) and lower messages to be printed from files prefixed with
|
///
|
||||||
// "browser"
|
/// <pre>
|
||||||
// d. VLOG(4) and lower messages to be printed from files under a
|
/// VLOG(1) << "I'm printed when you run the program with --v=1 or more";
|
||||||
// "chromeos" directory.
|
/// VLOG(2) << "I'm printed when you run the program with --v=2 or more";
|
||||||
// e. VLOG(0) and lower messages to be printed from elsewhere
|
/// </pre>
|
||||||
//
|
///
|
||||||
// The wildcarding functionality shown by (c) supports both '*' (match
|
/// These always log at the INFO log level (when they log at all).
|
||||||
// 0 or more characters) and '?' (match any single character)
|
/// The verbose logging can also be turned on module-by-module. For instance,
|
||||||
// wildcards. Any pattern containing a forward or backward slash will
|
/// <pre>
|
||||||
// be tested against the whole pathname and not just the module.
|
/// --vmodule=profile=2,icon_loader=1,browser_*=3,*/chromeos/*=4 --v=0
|
||||||
// E.g., "*/foo/bar/*=2" would change the logging level for all code
|
/// </pre>
|
||||||
// in source files under a "foo/bar" directory.
|
/// will cause:
|
||||||
//
|
/// 1. VLOG(2) and lower messages to be printed from profile.{h,cc}
|
||||||
// There's also VLOG_IS_ON(n) "verbose level" condition macro. To be used as
|
/// 2. VLOG(1) and lower messages to be printed from icon_loader.{h,cc}
|
||||||
//
|
/// 3. VLOG(3) and lower messages to be printed from files prefixed with
|
||||||
// if (VLOG_IS_ON(2)) {
|
/// "browser"
|
||||||
// // do some logging preparation and logging
|
/// 4. VLOG(4) and lower messages to be printed from files under a
|
||||||
// // that can't be accomplished with just VLOG(2) << ...;
|
/// "chromeos" directory.
|
||||||
// }
|
/// 5. VLOG(0) and lower messages to be printed from elsewhere
|
||||||
//
|
///
|
||||||
// There is also a VLOG_IF "verbose level" condition macro for sample
|
/// The wildcarding functionality shown by (c) supports both '*' (match
|
||||||
// cases, when some extra computation and preparation for logs is not
|
/// 0 or more characters) and '?' (match any single character)
|
||||||
// needed.
|
/// wildcards. Any pattern containing a forward or backward slash will
|
||||||
//
|
/// be tested against the whole pathname and not just the module.
|
||||||
// VLOG_IF(1, (size > 1024))
|
/// E.g., "*/foo/bar/*=2" would change the logging level for all code
|
||||||
// << "I'm printed when size is more than 1024 and when you run the "
|
/// in source files under a "foo/bar" directory.
|
||||||
// "program with --v=1 or more";
|
///
|
||||||
//
|
/// There's also VLOG_IS_ON(n) "verbose level" condition macro. To be used as
|
||||||
// We also override the standard 'assert' to use 'DLOG_ASSERT'.
|
///
|
||||||
//
|
/// <pre>
|
||||||
// Lastly, there is:
|
/// if (VLOG_IS_ON(2)) {
|
||||||
//
|
/// // do some logging preparation and logging
|
||||||
// PLOG(ERROR) << "Couldn't do foo";
|
/// // that can't be accomplished with just VLOG(2) << ...;
|
||||||
// DPLOG(ERROR) << "Couldn't do foo";
|
/// }
|
||||||
// PLOG_IF(ERROR, cond) << "Couldn't do foo";
|
/// </pre>
|
||||||
// DPLOG_IF(ERROR, cond) << "Couldn't do foo";
|
///
|
||||||
// PCHECK(condition) << "Couldn't do foo";
|
/// There is also a VLOG_IF "verbose level" condition macro for sample
|
||||||
// DPCHECK(condition) << "Couldn't do foo";
|
/// cases, when some extra computation and preparation for logs is not
|
||||||
//
|
/// needed.
|
||||||
// which append the last system error to the message in string form (taken from
|
///
|
||||||
// GetLastError() on Windows and errno on POSIX).
|
/// <pre>
|
||||||
//
|
/// VLOG_IF(1, (size > 1024))
|
||||||
// The supported severity levels for macros that allow you to specify one
|
/// << "I'm printed when size is more than 1024 and when you run the "
|
||||||
// are (in increasing order of severity) INFO, WARNING, ERROR, and FATAL.
|
/// "program with --v=1 or more";
|
||||||
//
|
/// </pre>
|
||||||
// Very important: logging a message at the FATAL severity level causes
|
///
|
||||||
// the program to terminate (after the message is logged).
|
/// We also override the standard 'assert' to use 'DLOG_ASSERT'.
|
||||||
//
|
///
|
||||||
// There is the special severity of DFATAL, which logs FATAL in debug mode,
|
/// Lastly, there is:
|
||||||
// ERROR in normal mode.
|
///
|
||||||
//
|
/// <pre>
|
||||||
|
/// PLOG(ERROR) << "Couldn't do foo";
|
||||||
|
/// DPLOG(ERROR) << "Couldn't do foo";
|
||||||
|
/// PLOG_IF(ERROR, cond) << "Couldn't do foo";
|
||||||
|
/// DPLOG_IF(ERROR, cond) << "Couldn't do foo";
|
||||||
|
/// PCHECK(condition) << "Couldn't do foo";
|
||||||
|
/// DPCHECK(condition) << "Couldn't do foo";
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
|
/// which append the last system error to the message in string form (taken from
|
||||||
|
/// GetLastError() on Windows and errno on POSIX).
|
||||||
|
///
|
||||||
|
/// The supported severity levels for macros that allow you to specify one
|
||||||
|
/// are (in increasing order of severity) INFO, WARNING, ERROR, and FATAL.
|
||||||
|
///
|
||||||
|
/// Very important: logging a message at the FATAL severity level causes
|
||||||
|
/// the program to terminate (after the message is logged).
|
||||||
|
///
|
||||||
|
/// There is the special severity of DFATAL, which logs FATAL in debug mode,
|
||||||
|
/// ERROR in normal mode.
|
||||||
|
///
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_BASE_CEF_LOGGING_H_
|
#ifndef CEF_INCLUDE_BASE_CEF_LOGGING_H_
|
||||||
#define CEF_INCLUDE_BASE_CEF_LOGGING_H_
|
#define CEF_INCLUDE_BASE_CEF_LOGGING_H_
|
||||||
@@ -164,7 +184,6 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "include/base/cef_build.h"
|
#include "include/base/cef_build.h"
|
||||||
#include "include/base/cef_macros.h"
|
|
||||||
#include "include/internal/cef_logging_internal.h"
|
#include "include/internal/cef_logging_internal.h"
|
||||||
|
|
||||||
namespace cef {
|
namespace cef {
|
||||||
@@ -583,6 +602,9 @@ class LogMessage {
|
|||||||
LogSeverity severity,
|
LogSeverity severity,
|
||||||
std::string* result);
|
std::string* result);
|
||||||
|
|
||||||
|
LogMessage(const LogMessage&) = delete;
|
||||||
|
LogMessage& operator=(const LogMessage&) = delete;
|
||||||
|
|
||||||
~LogMessage();
|
~LogMessage();
|
||||||
|
|
||||||
std::ostream& stream() { return stream_; }
|
std::ostream& stream() { return stream_; }
|
||||||
@@ -614,8 +636,6 @@ class LogMessage {
|
|||||||
|
|
||||||
SaveLastError last_error_;
|
SaveLastError last_error_;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(LogMessage);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// A non-macro interface to the log facility; (useful
|
// A non-macro interface to the log facility; (useful
|
||||||
@@ -655,6 +675,9 @@ class Win32ErrorLogMessage {
|
|||||||
LogSeverity severity,
|
LogSeverity severity,
|
||||||
SystemErrorCode err);
|
SystemErrorCode err);
|
||||||
|
|
||||||
|
Win32ErrorLogMessage(const Win32ErrorLogMessage&) = delete;
|
||||||
|
Win32ErrorLogMessage& operator=(const Win32ErrorLogMessage&) = delete;
|
||||||
|
|
||||||
// Appends the error message before destructing the encapsulated class.
|
// Appends the error message before destructing the encapsulated class.
|
||||||
~Win32ErrorLogMessage();
|
~Win32ErrorLogMessage();
|
||||||
|
|
||||||
@@ -663,8 +686,6 @@ class Win32ErrorLogMessage {
|
|||||||
private:
|
private:
|
||||||
SystemErrorCode err_;
|
SystemErrorCode err_;
|
||||||
LogMessage log_message_;
|
LogMessage log_message_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(Win32ErrorLogMessage);
|
|
||||||
};
|
};
|
||||||
#elif defined(OS_POSIX)
|
#elif defined(OS_POSIX)
|
||||||
// Appends a formatted system message of the errno type
|
// Appends a formatted system message of the errno type
|
||||||
@@ -675,6 +696,9 @@ class ErrnoLogMessage {
|
|||||||
LogSeverity severity,
|
LogSeverity severity,
|
||||||
SystemErrorCode err);
|
SystemErrorCode err);
|
||||||
|
|
||||||
|
ErrnoLogMessage(const ErrnoLogMessage&) = delete;
|
||||||
|
ErrnoLogMessage& operator=(const ErrnoLogMessage&) = delete;
|
||||||
|
|
||||||
// Appends the error message before destructing the encapsulated class.
|
// Appends the error message before destructing the encapsulated class.
|
||||||
~ErrnoLogMessage();
|
~ErrnoLogMessage();
|
||||||
|
|
||||||
@@ -683,8 +707,6 @@ class ErrnoLogMessage {
|
|||||||
private:
|
private:
|
||||||
SystemErrorCode err_;
|
SystemErrorCode err_;
|
||||||
LogMessage log_message_;
|
LogMessage log_message_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(ErrnoLogMessage);
|
|
||||||
};
|
};
|
||||||
#endif // OS_WIN
|
#endif // OS_WIN
|
||||||
|
|
||||||
|
|||||||
@@ -32,18 +32,14 @@
|
|||||||
#define CEF_INCLUDE_BASE_CEF_MACROS_H_
|
#define CEF_INCLUDE_BASE_CEF_MACROS_H_
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#if defined(USING_CHROMIUM_INCLUDES)
|
#if !defined(USING_CHROMIUM_INCLUDES)
|
||||||
// When building CEF include the Chromium header directly.
|
|
||||||
#include "base/macros.h"
|
|
||||||
|
|
||||||
#else // !USING_CHROMIUM_INCLUDES
|
|
||||||
// The following is substantially similar to the Chromium implementation.
|
// The following is substantially similar to the Chromium implementation.
|
||||||
// If the Chromium implementation diverges the below implementation should be
|
// If the Chromium implementation diverges the below implementation should be
|
||||||
// updated to match.
|
// updated to match.
|
||||||
|
|
||||||
// ALL DISALLOW_xxx MACROS ARE DEPRECATED; DO NOT USE IN NEW CODE.
|
// ALL DISALLOW_xxx MACROS ARE DEPRECATED; DO NOT USE IN NEW CODE.
|
||||||
// Use explicit deletions instead. See the section on copyability/movability in
|
// Use explicit deletions instead. For more information see
|
||||||
// //styleguide/c++/c++-dos-and-donts.md for more information.
|
// https://chromium.googlesource.com/chromium/src/+/lkgr/styleguide/c++/c++-dos-and-donts.md#explicitly-declare-class-copyability_movability
|
||||||
|
|
||||||
// DEPRECATED: See above. Makes a class uncopyable.
|
// DEPRECATED: See above. Makes a class uncopyable.
|
||||||
#define DISALLOW_COPY(TypeName) TypeName(const TypeName&) = delete
|
#define DISALLOW_COPY(TypeName) TypeName(const TypeName&) = delete
|
||||||
@@ -62,17 +58,6 @@
|
|||||||
TypeName() = delete; \
|
TypeName() = delete; \
|
||||||
DISALLOW_COPY_AND_ASSIGN(TypeName)
|
DISALLOW_COPY_AND_ASSIGN(TypeName)
|
||||||
|
|
||||||
// Used to explicitly mark the return value of a function as unused. If you are
|
|
||||||
// really sure you don't want to do anything with the return value of a function
|
|
||||||
// that has been marked WARN_UNUSED_RESULT, wrap it with this. Example:
|
|
||||||
//
|
|
||||||
// std::unique_ptr<MyType> my_var = ...;
|
|
||||||
// if (TakeOwnership(my_var.get()) == SUCCESS)
|
|
||||||
// ignore_result(my_var.release());
|
|
||||||
//
|
|
||||||
template <typename T>
|
|
||||||
inline void ignore_result(const T&) {}
|
|
||||||
|
|
||||||
#endif // !USING_CHROMIUM_INCLUDES
|
#endif // !USING_CHROMIUM_INCLUDES
|
||||||
|
|
||||||
#endif // CEF_INCLUDE_BASE_CEF_MACROS_H_
|
#endif // CEF_INCLUDE_BASE_CEF_MACROS_H_
|
||||||
|
|||||||
@@ -49,17 +49,21 @@
|
|||||||
|
|
||||||
namespace base {
|
namespace base {
|
||||||
|
|
||||||
// Used for logging. Always an integer value.
|
///
|
||||||
|
/// Used for logging. Always an integer value.
|
||||||
|
///
|
||||||
typedef cef_platform_thread_id_t PlatformThreadId;
|
typedef cef_platform_thread_id_t PlatformThreadId;
|
||||||
|
|
||||||
// Used for thread checking and debugging.
|
///
|
||||||
// Meant to be as fast as possible.
|
/// Used for thread checking and debugging.
|
||||||
// These are produced by PlatformThread::CurrentRef(), and used to later
|
/// Meant to be as fast as possible.
|
||||||
// check if we are on the same thread or not by using ==. These are safe
|
/// These are produced by PlatformThread::CurrentRef(), and used to later
|
||||||
// to copy between threads, but can't be copied to another process as they
|
/// check if we are on the same thread or not by using ==. These are safe
|
||||||
// have no meaning there. Also, the internal identifier can be re-used
|
/// to copy between threads, but can't be copied to another process as they
|
||||||
// after a thread dies, so a PlatformThreadRef cannot be reliably used
|
/// have no meaning there. Also, the internal identifier can be re-used
|
||||||
// to distinguish a new thread from an old, dead thread.
|
/// after a thread dies, so a PlatformThreadRef cannot be reliably used
|
||||||
|
/// to distinguish a new thread from an old, dead thread.
|
||||||
|
///
|
||||||
class PlatformThreadRef {
|
class PlatformThreadRef {
|
||||||
public:
|
public:
|
||||||
typedef cef_platform_thread_handle_t RefType;
|
typedef cef_platform_thread_handle_t RefType;
|
||||||
@@ -76,18 +80,24 @@ class PlatformThreadRef {
|
|||||||
RefType id_;
|
RefType id_;
|
||||||
};
|
};
|
||||||
|
|
||||||
// A namespace for low-level thread functions.
|
///
|
||||||
// Chromium uses a class with static methods but CEF uses an actual namespace
|
/// A namespace for low-level thread functions.
|
||||||
// to avoid linker problems with the sandbox libaries on Windows.
|
/// Chromium uses a class with static methods but CEF uses an actual namespace
|
||||||
|
/// to avoid linker problems with the sandbox libaries on Windows.
|
||||||
|
///
|
||||||
namespace PlatformThread {
|
namespace PlatformThread {
|
||||||
|
|
||||||
// Gets the current thread id, which may be useful for logging purposes.
|
///
|
||||||
|
/// Gets the current thread id, which may be useful for logging purposes.
|
||||||
|
///
|
||||||
inline PlatformThreadId CurrentId() {
|
inline PlatformThreadId CurrentId() {
|
||||||
return cef_get_current_platform_thread_id();
|
return cef_get_current_platform_thread_id();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gets the current thread reference, which can be used to check if
|
///
|
||||||
// we're on the right thread quickly.
|
/// Gets the current thread reference, which can be used to check if
|
||||||
|
/// we're on the right thread quickly.
|
||||||
|
///
|
||||||
inline PlatformThreadRef CurrentRef() {
|
inline PlatformThreadRef CurrentRef() {
|
||||||
return PlatformThreadRef(cef_get_current_platform_thread_handle());
|
return PlatformThreadRef(cef_get_current_platform_thread_handle());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,9 +45,11 @@
|
|||||||
|
|
||||||
namespace base {
|
namespace base {
|
||||||
|
|
||||||
// Helper to transfer ownership of a raw pointer to a std::unique_ptr<T>.
|
///
|
||||||
// Note that std::unique_ptr<T> has very different semantics from
|
/// Helper to transfer ownership of a raw pointer to a std::unique_ptr<T>.
|
||||||
// std::unique_ptr<T[]>: do not use this helper for array allocations.
|
/// Note that std::unique_ptr<T> has very different semantics from
|
||||||
|
/// std::unique_ptr<T[]>: do not use this helper for array allocations.
|
||||||
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
std::unique_ptr<T> WrapUnique(T* ptr) {
|
std::unique_ptr<T> WrapUnique(T* ptr) {
|
||||||
return std::unique_ptr<T>(ptr);
|
return std::unique_ptr<T>(ptr);
|
||||||
|
|||||||
@@ -49,7 +49,6 @@
|
|||||||
#include "include/base/cef_build.h"
|
#include "include/base/cef_build.h"
|
||||||
#include "include/base/cef_compiler_specific.h"
|
#include "include/base/cef_compiler_specific.h"
|
||||||
#include "include/base/cef_logging.h"
|
#include "include/base/cef_logging.h"
|
||||||
#include "include/base/cef_macros.h"
|
|
||||||
#include "include/base/cef_scoped_refptr.h"
|
#include "include/base/cef_scoped_refptr.h"
|
||||||
#include "include/base/cef_template_util.h"
|
#include "include/base/cef_template_util.h"
|
||||||
#include "include/base/cef_thread_checker.h"
|
#include "include/base/cef_thread_checker.h"
|
||||||
@@ -76,6 +75,9 @@ class RefCountedBase {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RefCountedBase(const RefCountedBase&) = delete;
|
||||||
|
RefCountedBase& operator=(const RefCountedBase&) = delete;
|
||||||
|
|
||||||
~RefCountedBase() {
|
~RefCountedBase() {
|
||||||
#if DCHECK_IS_ON()
|
#if DCHECK_IS_ON()
|
||||||
DCHECK(in_dtor_) << "RefCounted object deleted without calling Release()";
|
DCHECK(in_dtor_) << "RefCounted object deleted without calling Release()";
|
||||||
@@ -103,13 +105,16 @@ class RefCountedBase {
|
|||||||
|
|
||||||
#if DCHECK_IS_ON()
|
#if DCHECK_IS_ON()
|
||||||
DCHECK(!in_dtor_);
|
DCHECK(!in_dtor_);
|
||||||
if (ref_count_ == 0)
|
if (ref_count_ == 0) {
|
||||||
in_dtor_ = true;
|
in_dtor_ = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (ref_count_ >= 1)
|
if (ref_count_ >= 1) {
|
||||||
DCHECK(CalledOnValidThread());
|
DCHECK(CalledOnValidThread());
|
||||||
if (ref_count_ == 1)
|
}
|
||||||
|
if (ref_count_ == 1) {
|
||||||
thread_checker_.DetachFromThread();
|
thread_checker_.DetachFromThread();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return ref_count_ == 0;
|
return ref_count_ == 0;
|
||||||
@@ -168,8 +173,6 @@ class RefCountedBase {
|
|||||||
mutable bool in_dtor_ = false;
|
mutable bool in_dtor_ = false;
|
||||||
mutable ThreadChecker thread_checker_;
|
mutable ThreadChecker thread_checker_;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(RefCountedBase);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class RefCountedThreadSafeBase {
|
class RefCountedThreadSafeBase {
|
||||||
@@ -186,6 +189,9 @@ class RefCountedThreadSafeBase {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RefCountedThreadSafeBase(const RefCountedThreadSafeBase&) = delete;
|
||||||
|
RefCountedThreadSafeBase& operator=(const RefCountedThreadSafeBase&) = delete;
|
||||||
|
|
||||||
#if DCHECK_IS_ON()
|
#if DCHECK_IS_ON()
|
||||||
~RefCountedThreadSafeBase();
|
~RefCountedThreadSafeBase();
|
||||||
#else
|
#else
|
||||||
@@ -259,8 +265,6 @@ class RefCountedThreadSafeBase {
|
|||||||
mutable bool needs_adopt_ref_ = false;
|
mutable bool needs_adopt_ref_ = false;
|
||||||
mutable bool in_dtor_ = false;
|
mutable bool in_dtor_ = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(RefCountedThreadSafeBase);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// ScopedAllowCrossThreadRefCountAccess disables the check documented on
|
// ScopedAllowCrossThreadRefCountAccess disables the check documented on
|
||||||
@@ -289,52 +293,26 @@ class ScopedAllowCrossThreadRefCountAccess final {
|
|||||||
using ScopedAllowCrossThreadRefCountAccess =
|
using ScopedAllowCrossThreadRefCountAccess =
|
||||||
cef_subtle::ScopedAllowCrossThreadRefCountAccess;
|
cef_subtle::ScopedAllowCrossThreadRefCountAccess;
|
||||||
|
|
||||||
//
|
///
|
||||||
// A base class for reference counted classes. Otherwise, known as a cheap
|
/// The reference count starts from zero by default, and we intended to migrate
|
||||||
// knock-off of WebKit's RefCounted<T> class. To use this, just extend your
|
/// to start-from-one ref count. Put REQUIRE_ADOPTION_FOR_REFCOUNTED_TYPE() to
|
||||||
// class from it like so:
|
/// the ref counted class to opt-in.
|
||||||
//
|
///
|
||||||
// class MyFoo : public base::RefCounted<MyFoo> {
|
/// If an object has start-from-one ref count, the first scoped_refptr need to
|
||||||
// ...
|
/// be created by base::AdoptRef() or base::MakeRefCounted(). We can use
|
||||||
// private:
|
/// base::MakeRefCounted() to create create both type of ref counted object.
|
||||||
// friend class base::RefCounted<MyFoo>;
|
///
|
||||||
// ~MyFoo();
|
/// The motivations to use start-from-one ref count are:
|
||||||
// };
|
/// - Start-from-one ref count doesn't need the ref count increment for the
|
||||||
//
|
/// first reference.
|
||||||
// Usage Notes:
|
/// - It can detect an invalid object acquisition for a being-deleted object
|
||||||
// 1. You should always make your destructor non-public, to avoid any code
|
/// that has zero ref count. That tends to happen on custom deleter that
|
||||||
// deleting the object accidentally while there are references to it.
|
/// delays the deletion.
|
||||||
// 2. You should always make the ref-counted base class a friend of your class,
|
/// TODO(tzik): Implement invalid acquisition detection.
|
||||||
// so that it can access the destructor.
|
/// - Behavior parity to Blink's WTF::RefCounted, whose count starts from one.
|
||||||
//
|
/// And start-from-one ref count is a step to merge WTF::RefCounted into
|
||||||
// The ref count manipulation to RefCounted is NOT thread safe and has DCHECKs
|
/// base::RefCounted.
|
||||||
// to trap unsafe cross thread usage. A subclass instance of RefCounted can be
|
///
|
||||||
// passed to another execution thread only when its ref count is 1. If the ref
|
|
||||||
// count is more than 1, the RefCounted class verifies the ref updates are made
|
|
||||||
// on the same execution thread as the previous ones. The subclass can also
|
|
||||||
// manually call IsOnValidThread to trap other non-thread-safe accesses; see
|
|
||||||
// the documentation for that method.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// The reference count starts from zero by default, and we intended to migrate
|
|
||||||
// to start-from-one ref count. Put REQUIRE_ADOPTION_FOR_REFCOUNTED_TYPE() to
|
|
||||||
// the ref counted class to opt-in.
|
|
||||||
//
|
|
||||||
// If an object has start-from-one ref count, the first scoped_refptr need to be
|
|
||||||
// created by base::AdoptRef() or base::MakeRefCounted(). We can use
|
|
||||||
// base::MakeRefCounted() to create create both type of ref counted object.
|
|
||||||
//
|
|
||||||
// The motivations to use start-from-one ref count are:
|
|
||||||
// - Start-from-one ref count doesn't need the ref count increment for the
|
|
||||||
// first reference.
|
|
||||||
// - It can detect an invalid object acquisition for a being-deleted object
|
|
||||||
// that has zero ref count. That tends to happen on custom deleter that
|
|
||||||
// delays the deletion.
|
|
||||||
// TODO(tzik): Implement invalid acquisition detection.
|
|
||||||
// - Behavior parity to Blink's WTF::RefCounted, whose count starts from one.
|
|
||||||
// And start-from-one ref count is a step to merge WTF::RefCounted into
|
|
||||||
// base::RefCounted.
|
|
||||||
//
|
|
||||||
#define REQUIRE_ADOPTION_FOR_REFCOUNTED_TYPE() \
|
#define REQUIRE_ADOPTION_FOR_REFCOUNTED_TYPE() \
|
||||||
static constexpr ::base::cef_subtle::StartRefCountFromOneTag \
|
static constexpr ::base::cef_subtle::StartRefCountFromOneTag \
|
||||||
kRefCountPreference = ::base::cef_subtle::kStartRefCountFromOneTag
|
kRefCountPreference = ::base::cef_subtle::kStartRefCountFromOneTag
|
||||||
@@ -342,6 +320,10 @@ using ScopedAllowCrossThreadRefCountAccess =
|
|||||||
template <class T, typename Traits>
|
template <class T, typename Traits>
|
||||||
class RefCounted;
|
class RefCounted;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Default traits for RefCounted<T>. Deletes the object when its ref count
|
||||||
|
/// reaches 0. Overload to delete it on a different thread etc.
|
||||||
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct DefaultRefCountedTraits {
|
struct DefaultRefCountedTraits {
|
||||||
static void Destruct(const T* x) {
|
static void Destruct(const T* x) {
|
||||||
@@ -349,6 +331,34 @@ struct DefaultRefCountedTraits {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
///
|
||||||
|
/// A base class for reference counted classes. Otherwise, known as a cheap
|
||||||
|
/// knock-off of WebKit's RefCounted<T> class. To use this, just extend your
|
||||||
|
/// class from it like so:
|
||||||
|
///
|
||||||
|
/// <pre>
|
||||||
|
/// class MyFoo : public base::RefCounted<MyFoo> {
|
||||||
|
/// ...
|
||||||
|
/// private:
|
||||||
|
/// friend class base::RefCounted<MyFoo>;
|
||||||
|
/// ~MyFoo();
|
||||||
|
/// };
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
|
/// Usage Notes:
|
||||||
|
/// 1. You should always make your destructor non-public, to avoid any code
|
||||||
|
/// deleting the object accidentally while there are references to it.
|
||||||
|
/// 2. You should always make the ref-counted base class a friend of your class,
|
||||||
|
/// so that it can access the destructor.
|
||||||
|
///
|
||||||
|
/// The ref count manipulation to RefCounted is NOT thread safe and has DCHECKs
|
||||||
|
/// to trap unsafe cross thread usage. A subclass instance of RefCounted can be
|
||||||
|
/// passed to another execution thread only when its ref count is 1. If the ref
|
||||||
|
/// count is more than 1, the RefCounted class verifies the ref updates are made
|
||||||
|
/// on the same execution thread as the previous ones. The subclass can also
|
||||||
|
/// manually call IsOnValidThread to trap other non-thread-safe accesses; see
|
||||||
|
/// the documentation for that method.
|
||||||
|
///
|
||||||
template <class T, typename Traits = DefaultRefCountedTraits<T>>
|
template <class T, typename Traits = DefaultRefCountedTraits<T>>
|
||||||
class RefCounted : public cef_subtle::RefCountedBase {
|
class RefCounted : public cef_subtle::RefCountedBase {
|
||||||
public:
|
public:
|
||||||
@@ -357,6 +367,9 @@ class RefCounted : public cef_subtle::RefCountedBase {
|
|||||||
|
|
||||||
RefCounted() : cef_subtle::RefCountedBase(T::kRefCountPreference) {}
|
RefCounted() : cef_subtle::RefCountedBase(T::kRefCountPreference) {}
|
||||||
|
|
||||||
|
RefCounted(const RefCounted&) = delete;
|
||||||
|
RefCounted& operator=(const RefCounted&) = delete;
|
||||||
|
|
||||||
void AddRef() const { cef_subtle::RefCountedBase::AddRef(); }
|
void AddRef() const { cef_subtle::RefCountedBase::AddRef(); }
|
||||||
|
|
||||||
void Release() const {
|
void Release() const {
|
||||||
@@ -379,16 +392,16 @@ class RefCounted : public cef_subtle::RefCountedBase {
|
|||||||
static void DeleteInternal(const U* x) {
|
static void DeleteInternal(const U* x) {
|
||||||
delete x;
|
delete x;
|
||||||
}
|
}
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(RefCounted);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Forward declaration.
|
// Forward declaration.
|
||||||
template <class T, typename Traits>
|
template <class T, typename Traits>
|
||||||
class RefCountedThreadSafe;
|
class RefCountedThreadSafe;
|
||||||
|
|
||||||
// Default traits for RefCountedThreadSafe<T>. Deletes the object when its ref
|
///
|
||||||
// count reaches 0. Overload to delete it on a different thread etc.
|
/// Default traits for RefCountedThreadSafe<T>. Deletes the object when its ref
|
||||||
|
/// count reaches 0. Overload to delete it on a different thread etc.
|
||||||
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct DefaultRefCountedThreadSafeTraits {
|
struct DefaultRefCountedThreadSafeTraits {
|
||||||
static void Destruct(const T* x) {
|
static void Destruct(const T* x) {
|
||||||
@@ -400,21 +413,26 @@ struct DefaultRefCountedThreadSafeTraits {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
///
|
||||||
// A thread-safe variant of RefCounted<T>
|
/// A thread-safe variant of RefCounted<T>
|
||||||
//
|
///
|
||||||
// class MyFoo : public base::RefCountedThreadSafe<MyFoo> {
|
/// <pre>
|
||||||
// ...
|
/// class MyFoo : public base::RefCountedThreadSafe<MyFoo> {
|
||||||
// };
|
/// ...
|
||||||
//
|
/// };
|
||||||
// If you're using the default trait, then you should add compile time
|
/// </pre>
|
||||||
// asserts that no one else is deleting your object. i.e.
|
///
|
||||||
// private:
|
/// If you're using the default trait, then you should add compile time
|
||||||
// friend class base::RefCountedThreadSafe<MyFoo>;
|
/// asserts that no one else is deleting your object. i.e.
|
||||||
// ~MyFoo();
|
/// <pre>
|
||||||
//
|
/// private:
|
||||||
// We can use REQUIRE_ADOPTION_FOR_REFCOUNTED_TYPE() with RefCountedThreadSafe
|
/// friend class base::RefCountedThreadSafe<MyFoo>;
|
||||||
// too. See the comment above the RefCounted definition for details.
|
/// ~MyFoo();
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
|
/// We can use REQUIRE_ADOPTION_FOR_REFCOUNTED_TYPE() with RefCountedThreadSafe
|
||||||
|
/// too. See the comment above the RefCounted definition for details.
|
||||||
|
///
|
||||||
template <class T, typename Traits = DefaultRefCountedThreadSafeTraits<T>>
|
template <class T, typename Traits = DefaultRefCountedThreadSafeTraits<T>>
|
||||||
class RefCountedThreadSafe : public cef_subtle::RefCountedThreadSafeBase {
|
class RefCountedThreadSafe : public cef_subtle::RefCountedThreadSafeBase {
|
||||||
public:
|
public:
|
||||||
@@ -424,6 +442,9 @@ class RefCountedThreadSafe : public cef_subtle::RefCountedThreadSafeBase {
|
|||||||
explicit RefCountedThreadSafe()
|
explicit RefCountedThreadSafe()
|
||||||
: cef_subtle::RefCountedThreadSafeBase(T::kRefCountPreference) {}
|
: cef_subtle::RefCountedThreadSafeBase(T::kRefCountPreference) {}
|
||||||
|
|
||||||
|
RefCountedThreadSafe(const RefCountedThreadSafe&) = delete;
|
||||||
|
RefCountedThreadSafe& operator=(const RefCountedThreadSafe&) = delete;
|
||||||
|
|
||||||
void AddRef() const { AddRefImpl(T::kRefCountPreference); }
|
void AddRef() const { AddRefImpl(T::kRefCountPreference); }
|
||||||
|
|
||||||
void Release() const {
|
void Release() const {
|
||||||
@@ -450,14 +471,12 @@ class RefCountedThreadSafe : public cef_subtle::RefCountedThreadSafeBase {
|
|||||||
void AddRefImpl(cef_subtle::StartRefCountFromOneTag) const {
|
void AddRefImpl(cef_subtle::StartRefCountFromOneTag) const {
|
||||||
cef_subtle::RefCountedThreadSafeBase::AddRefWithCheck();
|
cef_subtle::RefCountedThreadSafeBase::AddRefWithCheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(RefCountedThreadSafe);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
///
|
||||||
// A thread-safe wrapper for some piece of data so we can place other
|
/// A thread-safe wrapper for some piece of data so we can place other
|
||||||
// things in scoped_refptrs<>.
|
/// things in scoped_refptrs<>.
|
||||||
//
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class RefCountedData
|
class RefCountedData
|
||||||
: public base::RefCountedThreadSafe<base::RefCountedData<T>> {
|
: public base::RefCountedThreadSafe<base::RefCountedData<T>> {
|
||||||
|
|||||||
@@ -46,9 +46,7 @@
|
|||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "include/base/cef_compiler_specific.h"
|
|
||||||
#include "include/base/cef_logging.h"
|
#include "include/base/cef_logging.h"
|
||||||
#include "include/base/cef_macros.h"
|
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
class scoped_refptr;
|
class scoped_refptr;
|
||||||
@@ -144,68 +142,76 @@ scoped_refptr<T> WrapRefCounted(T* t) {
|
|||||||
|
|
||||||
} // namespace base
|
} // namespace base
|
||||||
|
|
||||||
//
|
///
|
||||||
// A smart pointer class for reference counted objects. Use this class instead
|
/// A smart pointer class for reference counted objects. Use this class instead
|
||||||
// of calling AddRef and Release manually on a reference counted object to
|
/// of calling AddRef and Release manually on a reference counted object to
|
||||||
// avoid common memory leaks caused by forgetting to Release an object
|
/// avoid common memory leaks caused by forgetting to Release an object
|
||||||
// reference. Sample usage:
|
/// reference. Sample usage:
|
||||||
//
|
///
|
||||||
// class MyFoo : public RefCounted<MyFoo> {
|
/// <pre>
|
||||||
// ...
|
/// class MyFoo : public RefCounted<MyFoo> {
|
||||||
// private:
|
/// ...
|
||||||
// friend class RefCounted<MyFoo>; // Allow destruction by RefCounted<>.
|
/// private:
|
||||||
// ~MyFoo(); // Destructor must be private/protected.
|
/// friend class RefCounted<MyFoo>; // Allow destruction by RefCounted<>.
|
||||||
// };
|
/// ~MyFoo(); // Destructor must be
|
||||||
//
|
/// private/protected.
|
||||||
// void some_function() {
|
/// };
|
||||||
// scoped_refptr<MyFoo> foo = MakeRefCounted<MyFoo>();
|
///
|
||||||
// foo->Method(param);
|
/// void some_function() {
|
||||||
// // |foo| is released when this function returns
|
/// scoped_refptr<MyFoo> foo = MakeRefCounted<MyFoo>();
|
||||||
// }
|
/// foo->Method(param);
|
||||||
//
|
/// // |foo| is released when this function returns
|
||||||
// void some_other_function() {
|
/// }
|
||||||
// scoped_refptr<MyFoo> foo = MakeRefCounted<MyFoo>();
|
///
|
||||||
// ...
|
/// void some_other_function() {
|
||||||
// foo.reset(); // explicitly releases |foo|
|
/// scoped_refptr<MyFoo> foo = MakeRefCounted<MyFoo>();
|
||||||
// ...
|
/// ...
|
||||||
// if (foo)
|
/// foo.reset(); // explicitly releases |foo|
|
||||||
// foo->Method(param);
|
/// ...
|
||||||
// }
|
/// if (foo)
|
||||||
//
|
/// foo->Method(param);
|
||||||
// The above examples show how scoped_refptr<T> acts like a pointer to T.
|
/// }
|
||||||
// Given two scoped_refptr<T> classes, it is also possible to exchange
|
/// </pre>
|
||||||
// references between the two objects, like so:
|
///
|
||||||
//
|
/// The above examples show how scoped_refptr<T> acts like a pointer to T.
|
||||||
// {
|
/// Given two scoped_refptr<T> classes, it is also possible to exchange
|
||||||
// scoped_refptr<MyFoo> a = MakeRefCounted<MyFoo>();
|
/// references between the two objects, like so:
|
||||||
// scoped_refptr<MyFoo> b;
|
///
|
||||||
//
|
/// <pre>
|
||||||
// b.swap(a);
|
/// {
|
||||||
// // now, |b| references the MyFoo object, and |a| references nullptr.
|
/// scoped_refptr<MyFoo> a = MakeRefCounted<MyFoo>();
|
||||||
// }
|
/// scoped_refptr<MyFoo> b;
|
||||||
//
|
///
|
||||||
// To make both |a| and |b| in the above example reference the same MyFoo
|
/// b.swap(a);
|
||||||
// object, simply use the assignment operator:
|
/// // now, |b| references the MyFoo object, and |a| references nullptr.
|
||||||
//
|
/// }
|
||||||
// {
|
/// </pre>
|
||||||
// scoped_refptr<MyFoo> a = MakeRefCounted<MyFoo>();
|
///
|
||||||
// scoped_refptr<MyFoo> b;
|
/// To make both |a| and |b| in the above example reference the same MyFoo
|
||||||
//
|
/// object, simply use the assignment operator:
|
||||||
// b = a;
|
///
|
||||||
// // now, |a| and |b| each own a reference to the same MyFoo object.
|
/// <pre>
|
||||||
// }
|
/// {
|
||||||
//
|
/// scoped_refptr<MyFoo> a = MakeRefCounted<MyFoo>();
|
||||||
// Also see Chromium's ownership and calling conventions:
|
/// scoped_refptr<MyFoo> b;
|
||||||
// https://chromium.googlesource.com/chromium/src/+/lkgr/styleguide/c++/c++.md#object-ownership-and-calling-conventions
|
///
|
||||||
// Specifically:
|
/// b = a;
|
||||||
// If the function (at least sometimes) takes a ref on a refcounted object,
|
/// // now, |a| and |b| each own a reference to the same MyFoo object.
|
||||||
// declare the param as scoped_refptr<T>. The caller can decide whether it
|
/// }
|
||||||
// wishes to transfer ownership (by calling std::move(t) when passing t) or
|
/// </pre>
|
||||||
// retain its ref (by simply passing t directly).
|
///
|
||||||
// In other words, use scoped_refptr like you would a std::unique_ptr except
|
/// Also see Chromium's ownership and calling conventions:
|
||||||
// in the odd case where it's required to hold on to a ref while handing one
|
/// https://chromium.googlesource.com/chromium/src/+/lkgr/styleguide/c++/c++.md#object-ownership-and-calling-conventions
|
||||||
// to another component (if a component merely needs to use t on the stack
|
/// Specifically:
|
||||||
// without keeping a ref: pass t as a raw T*).
|
/// If the function (at least sometimes) takes a ref on a refcounted object,
|
||||||
|
/// declare the param as scoped_refptr<T>. The caller can decide whether it
|
||||||
|
/// wishes to transfer ownership (by calling std::move(t) when passing t) or
|
||||||
|
/// retain its ref (by simply passing t directly).
|
||||||
|
/// In other words, use scoped_refptr like you would a std::unique_ptr except
|
||||||
|
/// in the odd case where it's required to hold on to a ref while handing one
|
||||||
|
/// to another component (if a component merely needs to use t on the stack
|
||||||
|
/// without keeping a ref: pass t as a raw T*).
|
||||||
|
///
|
||||||
template <class T>
|
template <class T>
|
||||||
class TRIVIAL_ABI scoped_refptr {
|
class TRIVIAL_ABI scoped_refptr {
|
||||||
public:
|
public:
|
||||||
@@ -223,9 +229,10 @@ class TRIVIAL_ABI scoped_refptr {
|
|||||||
// should move or copy construct from an existing scoped_refptr<T> to the
|
// should move or copy construct from an existing scoped_refptr<T> to the
|
||||||
// ref-counted object.
|
// ref-counted object.
|
||||||
scoped_refptr(T* p) : ptr_(p) {
|
scoped_refptr(T* p) : ptr_(p) {
|
||||||
if (ptr_)
|
if (ptr_) {
|
||||||
AddRef(ptr_);
|
AddRef(ptr_);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Copy constructor. This is required in addition to the copy conversion
|
// Copy constructor. This is required in addition to the copy conversion
|
||||||
// constructor below.
|
// constructor below.
|
||||||
@@ -255,9 +262,10 @@ class TRIVIAL_ABI scoped_refptr {
|
|||||||
"It's unsafe to override the ref count preference."
|
"It's unsafe to override the ref count preference."
|
||||||
" Please remove REQUIRE_ADOPTION_FOR_REFCOUNTED_TYPE"
|
" Please remove REQUIRE_ADOPTION_FOR_REFCOUNTED_TYPE"
|
||||||
" from subclasses.");
|
" from subclasses.");
|
||||||
if (ptr_)
|
if (ptr_) {
|
||||||
Release(ptr_);
|
Release(ptr_);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
T* get() const { return ptr_; }
|
T* get() const { return ptr_; }
|
||||||
|
|
||||||
@@ -290,7 +298,7 @@ class TRIVIAL_ABI scoped_refptr {
|
|||||||
|
|
||||||
// Returns the owned pointer (if any), releasing ownership to the caller. The
|
// Returns the owned pointer (if any), releasing ownership to the caller. The
|
||||||
// caller is responsible for managing the lifetime of the reference.
|
// caller is responsible for managing the lifetime of the reference.
|
||||||
T* release() WARN_UNUSED_RESULT;
|
[[nodiscard]] T* release();
|
||||||
|
|
||||||
void swap(scoped_refptr& r) noexcept { std::swap(ptr_, r.ptr_); }
|
void swap(scoped_refptr& r) noexcept { std::swap(ptr_, r.ptr_); }
|
||||||
|
|
||||||
|
|||||||
@@ -28,40 +28,6 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
// ScopedTypeRef<> is patterned after std::unique_ptr<>, but maintains ownership
|
|
||||||
// of a reference to any type that is maintained by Retain and Release methods.
|
|
||||||
//
|
|
||||||
// The Traits structure must provide the Retain and Release methods for type T.
|
|
||||||
// A default ScopedTypeRefTraits is used but not defined, and should be defined
|
|
||||||
// for each type to use this interface. For example, an appropriate definition
|
|
||||||
// of ScopedTypeRefTraits for CGLContextObj would be:
|
|
||||||
//
|
|
||||||
// template<>
|
|
||||||
// struct ScopedTypeRefTraits<CGLContextObj> {
|
|
||||||
// static CGLContextObj InvalidValue() { return nullptr; }
|
|
||||||
// static CGLContextObj Retain(CGLContextObj object) {
|
|
||||||
// CGLContextRetain(object);
|
|
||||||
// return object;
|
|
||||||
// }
|
|
||||||
// static void Release(CGLContextObj object) { CGLContextRelease(object); }
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// For the many types that have pass-by-pointer create functions, the function
|
|
||||||
// InitializeInto() is provided to allow direct initialization and assumption
|
|
||||||
// of ownership of the object. For example, continuing to use the above
|
|
||||||
// CGLContextObj specialization:
|
|
||||||
//
|
|
||||||
// base::ScopedTypeRef<CGLContextObj> context;
|
|
||||||
// CGLCreateContext(pixel_format, share_group, context.InitializeInto());
|
|
||||||
//
|
|
||||||
// For initialization with an existing object, the caller may specify whether
|
|
||||||
// the ScopedTypeRef<> being initialized is assuming the caller's existing
|
|
||||||
// ownership of the object (and should not call Retain in initialization) or if
|
|
||||||
// it should not assume this ownership and must create its own (by calling
|
|
||||||
// Retain in initialization). This behavior is based on the |policy| parameter,
|
|
||||||
// with |ASSUME| for the former and |RETAIN| for the latter. The default policy
|
|
||||||
// is to |ASSUME|.
|
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_BASE_CEF_SCOPED_TYPEREF_MAC_H_
|
#ifndef CEF_INCLUDE_BASE_CEF_SCOPED_TYPEREF_MAC_H_
|
||||||
#define CEF_INCLUDE_BASE_CEF_SCOPED_TYPEREF_MAC_H_
|
#define CEF_INCLUDE_BASE_CEF_SCOPED_TYPEREF_MAC_H_
|
||||||
#pragma once
|
#pragma once
|
||||||
@@ -74,7 +40,6 @@
|
|||||||
// If the Chromium implementation diverges the below implementation should be
|
// If the Chromium implementation diverges the below implementation should be
|
||||||
// updated to match.
|
// updated to match.
|
||||||
|
|
||||||
#include "include/base/cef_compiler_specific.h"
|
|
||||||
#include "include/base/cef_logging.h"
|
#include "include/base/cef_logging.h"
|
||||||
#include "include/base/internal/cef_scoped_policy.h"
|
#include "include/base/internal/cef_scoped_policy.h"
|
||||||
|
|
||||||
@@ -83,6 +48,46 @@ namespace base {
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
struct ScopedTypeRefTraits;
|
struct ScopedTypeRefTraits;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// ScopedTypeRef<> is patterned after std::unique_ptr<>, but maintains
|
||||||
|
/// ownership of a reference to any type that is maintained by Retain and
|
||||||
|
/// Release methods.
|
||||||
|
///
|
||||||
|
/// The Traits structure must provide the Retain and Release methods for type T.
|
||||||
|
/// A default ScopedTypeRefTraits is used but not defined, and should be defined
|
||||||
|
/// for each type to use this interface. For example, an appropriate definition
|
||||||
|
/// of ScopedTypeRefTraits for CGLContextObj would be:
|
||||||
|
///
|
||||||
|
/// <pre>
|
||||||
|
/// template<>
|
||||||
|
/// struct ScopedTypeRefTraits<CGLContextObj> {
|
||||||
|
/// static CGLContextObj InvalidValue() { return nullptr; }
|
||||||
|
/// static CGLContextObj Retain(CGLContextObj object) {
|
||||||
|
/// CGLContextRetain(object);
|
||||||
|
/// return object;
|
||||||
|
/// }
|
||||||
|
/// static void Release(CGLContextObj object) { CGLContextRelease(object); }
|
||||||
|
/// };
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
|
/// For the many types that have pass-by-pointer create functions, the function
|
||||||
|
/// InitializeInto() is provided to allow direct initialization and assumption
|
||||||
|
/// of ownership of the object. For example, continuing to use the above
|
||||||
|
/// CGLContextObj specialization:
|
||||||
|
///
|
||||||
|
/// <pre>
|
||||||
|
/// base::ScopedTypeRef<CGLContextObj> context;
|
||||||
|
/// CGLCreateContext(pixel_format, share_group, context.InitializeInto());
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
|
/// For initialization with an existing object, the caller may specify whether
|
||||||
|
/// the ScopedTypeRef<> being initialized is assuming the caller's existing
|
||||||
|
/// ownership of the object (and should not call Retain in initialization) or if
|
||||||
|
/// it should not assume this ownership and must create its own (by calling
|
||||||
|
/// Retain in initialization). This behavior is based on the |policy| parameter,
|
||||||
|
/// with |ASSUME| for the former and |RETAIN| for the latter. The default policy
|
||||||
|
/// is to |ASSUME|.
|
||||||
|
///
|
||||||
template <typename T, typename Traits = ScopedTypeRefTraits<T>>
|
template <typename T, typename Traits = ScopedTypeRefTraits<T>>
|
||||||
class ScopedTypeRef {
|
class ScopedTypeRef {
|
||||||
public:
|
public:
|
||||||
@@ -92,32 +97,35 @@ class ScopedTypeRef {
|
|||||||
element_type object = Traits::InvalidValue(),
|
element_type object = Traits::InvalidValue(),
|
||||||
base::scoped_policy::OwnershipPolicy policy = base::scoped_policy::ASSUME)
|
base::scoped_policy::OwnershipPolicy policy = base::scoped_policy::ASSUME)
|
||||||
: object_(object) {
|
: object_(object) {
|
||||||
if (object_ && policy == base::scoped_policy::RETAIN)
|
if (object_ && policy == base::scoped_policy::RETAIN) {
|
||||||
object_ = Traits::Retain(object_);
|
object_ = Traits::Retain(object_);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ScopedTypeRef(const ScopedTypeRef<T, Traits>& that)
|
ScopedTypeRef(const ScopedTypeRef<T, Traits>& that) : object_(that.object_) {
|
||||||
: object_(that.object_) {
|
if (object_) {
|
||||||
if (object_)
|
|
||||||
object_ = Traits::Retain(object_);
|
object_ = Traits::Retain(object_);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// This allows passing an object to a function that takes its superclass.
|
// This allows passing an object to a function that takes its superclass.
|
||||||
template <typename R, typename RTraits>
|
template <typename R, typename RTraits>
|
||||||
explicit ScopedTypeRef(const ScopedTypeRef<R, RTraits>& that_as_subclass)
|
explicit ScopedTypeRef(const ScopedTypeRef<R, RTraits>& that_as_subclass)
|
||||||
: object_(that_as_subclass.get()) {
|
: object_(that_as_subclass.get()) {
|
||||||
if (object_)
|
if (object_) {
|
||||||
object_ = Traits::Retain(object_);
|
object_ = Traits::Retain(object_);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ScopedTypeRef(ScopedTypeRef<T, Traits>&& that) : object_(that.object_) {
|
ScopedTypeRef(ScopedTypeRef<T, Traits>&& that) : object_(that.object_) {
|
||||||
that.object_ = Traits::InvalidValue();
|
that.object_ = Traits::InvalidValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
~ScopedTypeRef() {
|
~ScopedTypeRef() {
|
||||||
if (object_)
|
if (object_) {
|
||||||
Traits::Release(object_);
|
Traits::Release(object_);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ScopedTypeRef& operator=(const ScopedTypeRef<T, Traits>& that) {
|
ScopedTypeRef& operator=(const ScopedTypeRef<T, Traits>& that) {
|
||||||
reset(that.get(), base::scoped_policy::RETAIN);
|
reset(that.get(), base::scoped_policy::RETAIN);
|
||||||
@@ -127,7 +135,7 @@ class ScopedTypeRef {
|
|||||||
// This is to be used only to take ownership of objects that are created
|
// This is to be used only to take ownership of objects that are created
|
||||||
// by pass-by-pointer create functions. To enforce this, require that the
|
// by pass-by-pointer create functions. To enforce this, require that the
|
||||||
// object be reset to NULL before this may be used.
|
// object be reset to NULL before this may be used.
|
||||||
element_type* InitializeInto() WARN_UNUSED_RESULT {
|
[[nodiscard]] element_type* InitializeInto() {
|
||||||
DCHECK(!object_);
|
DCHECK(!object_);
|
||||||
return &object_;
|
return &object_;
|
||||||
}
|
}
|
||||||
@@ -139,10 +147,12 @@ class ScopedTypeRef {
|
|||||||
void reset(element_type object = Traits::InvalidValue(),
|
void reset(element_type object = Traits::InvalidValue(),
|
||||||
base::scoped_policy::OwnershipPolicy policy =
|
base::scoped_policy::OwnershipPolicy policy =
|
||||||
base::scoped_policy::ASSUME) {
|
base::scoped_policy::ASSUME) {
|
||||||
if (object && policy == base::scoped_policy::RETAIN)
|
if (object && policy == base::scoped_policy::RETAIN) {
|
||||||
object = Traits::Retain(object);
|
object = Traits::Retain(object);
|
||||||
if (object_)
|
}
|
||||||
|
if (object_) {
|
||||||
Traits::Release(object_);
|
Traits::Release(object_);
|
||||||
|
}
|
||||||
object_ = object;
|
object_ = object;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -163,7 +173,7 @@ class ScopedTypeRef {
|
|||||||
// ScopedTypeRef<>::release() is like std::unique_ptr<>::release. It is NOT
|
// ScopedTypeRef<>::release() is like std::unique_ptr<>::release. It is NOT
|
||||||
// a wrapper for Release(). To force a ScopedTypeRef<> object to call
|
// a wrapper for Release(). To force a ScopedTypeRef<> object to call
|
||||||
// Release(), use ScopedTypeRef<>::reset().
|
// Release(), use ScopedTypeRef<>::reset().
|
||||||
element_type release() WARN_UNUSED_RESULT {
|
[[nodiscard]] element_type release() {
|
||||||
element_type temp = object_;
|
element_type temp = object_;
|
||||||
object_ = Traits::InvalidValue();
|
object_ = Traits::InvalidValue();
|
||||||
return temp;
|
return temp;
|
||||||
|
|||||||
@@ -73,9 +73,12 @@
|
|||||||
|
|
||||||
namespace base {
|
namespace base {
|
||||||
|
|
||||||
template <class T> struct is_non_const_reference : std::false_type {};
|
template <class T>
|
||||||
template <class T> struct is_non_const_reference<T&> : std::true_type {};
|
struct is_non_const_reference : std::false_type {};
|
||||||
template <class T> struct is_non_const_reference<const T&> : 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 {
|
namespace internal {
|
||||||
|
|
||||||
@@ -113,7 +116,7 @@ template <typename T>
|
|||||||
struct SupportsToString<T, decltype(void(std::declval<T>().ToString()))>
|
struct SupportsToString<T, decltype(void(std::declval<T>().ToString()))>
|
||||||
: std::true_type {};
|
: std::true_type {};
|
||||||
|
|
||||||
// Used to detech whether the given type is an iterator. This is normally used
|
// 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
|
// with std::enable_if to provide disambiguation for functions that take
|
||||||
// templatzed iterators as input.
|
// templatzed iterators as input.
|
||||||
template <typename T, typename = void>
|
template <typename T, typename = void>
|
||||||
@@ -276,8 +279,13 @@ struct negation : bool_constant<!static_cast<bool>(B::value)> {};
|
|||||||
// References:
|
// References:
|
||||||
// [1] https://en.cppreference.com/w/cpp/types/result_of
|
// [1] https://en.cppreference.com/w/cpp/types/result_of
|
||||||
// [2] https://wg21.link/meta.trans.other#lib:invoke_result
|
// [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>
|
template <typename Functor, typename... Args>
|
||||||
using invoke_result = std::result_of<Functor && (Args && ...)>;
|
using invoke_result = std::result_of<Functor && (Args && ...)>;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Implementation of C++17's std::invoke_result_t.
|
// Implementation of C++17's std::invoke_result_t.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -43,10 +43,12 @@
|
|||||||
#include "include/base/cef_logging.h"
|
#include "include/base/cef_logging.h"
|
||||||
#include "include/base/internal/cef_thread_checker_impl.h"
|
#include "include/base/internal/cef_thread_checker_impl.h"
|
||||||
|
|
||||||
// Apart from debug builds, we also enable the thread checker in
|
///
|
||||||
// builds with DCHECK_ALWAYS_ON so that trybots and waterfall bots
|
/// Apart from debug builds, we also enable the thread checker in
|
||||||
// with this define will get the same level of thread checking as
|
/// builds with DCHECK_ALWAYS_ON so that trybots and waterfall bots
|
||||||
// debug bots.
|
/// with this define will get the same level of thread checking as
|
||||||
|
/// debug bots.
|
||||||
|
///
|
||||||
#if DCHECK_IS_ON()
|
#if DCHECK_IS_ON()
|
||||||
#define ENABLE_THREAD_CHECKER 1
|
#define ENABLE_THREAD_CHECKER 1
|
||||||
#else
|
#else
|
||||||
@@ -57,10 +59,12 @@ namespace base {
|
|||||||
|
|
||||||
namespace cef_internal {
|
namespace cef_internal {
|
||||||
|
|
||||||
// Do nothing implementation, for use in release mode.
|
///
|
||||||
//
|
/// Do nothing implementation, for use in release mode.
|
||||||
// Note: You should almost always use the ThreadChecker class to get the
|
///
|
||||||
// right version for your build configuration.
|
/// Note: You should almost always use the ThreadChecker class to get the
|
||||||
|
/// right version for your build configuration.
|
||||||
|
///
|
||||||
class ThreadCheckerDoNothing {
|
class ThreadCheckerDoNothing {
|
||||||
public:
|
public:
|
||||||
bool CalledOnValidThread() const { return true; }
|
bool CalledOnValidThread() const { return true; }
|
||||||
@@ -70,37 +74,42 @@ class ThreadCheckerDoNothing {
|
|||||||
|
|
||||||
} // namespace cef_internal
|
} // namespace cef_internal
|
||||||
|
|
||||||
// ThreadChecker is a helper class used to help verify that some methods of a
|
///
|
||||||
// class are called from the same thread. It provides identical functionality to
|
/// ThreadChecker is a helper class used to help verify that some methods of a
|
||||||
// base::NonThreadSafe, but it is meant to be held as a member variable, rather
|
/// class are called from the same thread. It provides identical functionality
|
||||||
// than inherited from base::NonThreadSafe.
|
/// to base::NonThreadSafe, but it is meant to be held as a member variable,
|
||||||
//
|
/// rather than inherited from base::NonThreadSafe.
|
||||||
// While inheriting from base::NonThreadSafe may give a clear indication about
|
///
|
||||||
// the thread-safety of a class, it may also lead to violations of the style
|
/// While inheriting from base::NonThreadSafe may give a clear indication about
|
||||||
// guide with regard to multiple inheritance. The choice between having a
|
/// the thread-safety of a class, it may also lead to violations of the style
|
||||||
// ThreadChecker member and inheriting from base::NonThreadSafe should be based
|
/// guide with regard to multiple inheritance. The choice between having a
|
||||||
// on whether:
|
/// ThreadChecker member and inheriting from base::NonThreadSafe should be based
|
||||||
// - Derived classes need to know the thread they belong to, as opposed to
|
/// on whether:
|
||||||
// having that functionality fully encapsulated in the base class.
|
/// - Derived classes need to know the thread they belong to, as opposed to
|
||||||
// - Derived classes should be able to reassign the base class to another
|
/// having that functionality fully encapsulated in the base class.
|
||||||
// thread, via DetachFromThread.
|
/// - Derived classes should be able to reassign the base class to another
|
||||||
//
|
/// thread, via DetachFromThread.
|
||||||
// If neither of these are true, then having a ThreadChecker member and calling
|
///
|
||||||
// CalledOnValidThread is the preferable solution.
|
/// If neither of these are true, then having a ThreadChecker member and calling
|
||||||
//
|
/// CalledOnValidThread is the preferable solution.
|
||||||
// Example:
|
///
|
||||||
// class MyClass {
|
/// Example:
|
||||||
// public:
|
///
|
||||||
// void Foo() {
|
/// <pre>
|
||||||
// DCHECK(thread_checker_.CalledOnValidThread());
|
/// class MyClass {
|
||||||
// ... (do stuff) ...
|
/// public:
|
||||||
// }
|
/// void Foo() {
|
||||||
//
|
/// DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
// private:
|
/// ... (do stuff) ...
|
||||||
// ThreadChecker thread_checker_;
|
/// }
|
||||||
// }
|
///
|
||||||
//
|
/// private:
|
||||||
// In Release mode, CalledOnValidThread will always return true.
|
/// ThreadChecker thread_checker_;
|
||||||
|
/// }
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
|
/// In Release mode, CalledOnValidThread will always return true.
|
||||||
|
///
|
||||||
#if ENABLE_THREAD_CHECKER
|
#if ENABLE_THREAD_CHECKER
|
||||||
class ThreadChecker : public cef_internal::ThreadCheckerImpl {};
|
class ThreadChecker : public cef_internal::ThreadCheckerImpl {};
|
||||||
#else
|
#else
|
||||||
|
|||||||
@@ -29,111 +29,133 @@
|
|||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
///
|
///
|
||||||
// Trace events are for tracking application performance and resource usage.
|
/// \file
|
||||||
// Macros are provided to track:
|
/// Trace events are for tracking application performance and resource usage.
|
||||||
// Begin and end of function calls
|
/// Macros are provided to track:
|
||||||
// Counters
|
/// Begin and end of function calls
|
||||||
//
|
/// Counters
|
||||||
// Events are issued against categories. Whereas LOG's categories are statically
|
///
|
||||||
// defined, TRACE categories are created implicitly with a string. For example:
|
/// Events are issued against categories. Whereas LOG's categories are
|
||||||
// TRACE_EVENT_INSTANT0("MY_SUBSYSTEM", "SomeImportantEvent")
|
/// statically defined, TRACE categories are created implicitly with a string.
|
||||||
//
|
/// For example: <pre>
|
||||||
// Events can be INSTANT, or can be pairs of BEGIN and END in the same scope:
|
/// TRACE_EVENT_INSTANT0("MY_SUBSYSTEM", "SomeImportantEvent")
|
||||||
// TRACE_EVENT_BEGIN0("MY_SUBSYSTEM", "SomethingCostly")
|
/// </pre>
|
||||||
// doSomethingCostly()
|
///
|
||||||
// TRACE_EVENT_END0("MY_SUBSYSTEM", "SomethingCostly")
|
/// Events can be INSTANT, or can be pairs of BEGIN and END in the same scope:
|
||||||
// Note: Our tools can't always determine the correct BEGIN/END pairs unless
|
/// <pre>
|
||||||
// these are used in the same scope. Use ASYNC_BEGIN/ASYNC_END macros if you
|
/// TRACE_EVENT_BEGIN0("MY_SUBSYSTEM", "SomethingCostly")
|
||||||
// need them to be in separate scopes.
|
/// doSomethingCostly()
|
||||||
//
|
/// TRACE_EVENT_END0("MY_SUBSYSTEM", "SomethingCostly")
|
||||||
// A common use case is to trace entire function scopes. This issues a trace
|
/// </pre>
|
||||||
// BEGIN and END automatically:
|
/// Note: Our tools can't always determine the correct BEGIN/END pairs unless
|
||||||
// void doSomethingCostly() {
|
/// these are used in the same scope. Use ASYNC_BEGIN/ASYNC_END macros if you
|
||||||
// TRACE_EVENT0("MY_SUBSYSTEM", "doSomethingCostly");
|
/// need them to be in separate scopes.
|
||||||
// ...
|
///
|
||||||
// }
|
/// A common use case is to trace entire function scopes. This issues a trace
|
||||||
//
|
/// BEGIN and END automatically:
|
||||||
// Additional parameters can be associated with an event:
|
/// <pre>
|
||||||
// void doSomethingCostly2(int howMuch) {
|
/// void doSomethingCostly() {
|
||||||
// TRACE_EVENT1("MY_SUBSYSTEM", "doSomethingCostly",
|
/// TRACE_EVENT0("MY_SUBSYSTEM", "doSomethingCostly");
|
||||||
// "howMuch", howMuch);
|
/// ...
|
||||||
// ...
|
/// }
|
||||||
// }
|
/// </pre>
|
||||||
//
|
///
|
||||||
// The trace system will automatically add to this information the current
|
/// Additional parameters can be associated with an event:
|
||||||
// process id, thread id, and a timestamp in microseconds.
|
/// <pre>
|
||||||
//
|
/// void doSomethingCostly2(int howMuch) {
|
||||||
// To trace an asynchronous procedure such as an IPC send/receive, use
|
/// TRACE_EVENT1("MY_SUBSYSTEM", "doSomethingCostly",
|
||||||
// ASYNC_BEGIN and ASYNC_END:
|
/// "howMuch", howMuch);
|
||||||
// [single threaded sender code]
|
/// ...
|
||||||
// static int send_count = 0;
|
/// }
|
||||||
// ++send_count;
|
/// </pre>
|
||||||
// TRACE_EVENT_ASYNC_BEGIN0("ipc", "message", send_count);
|
///
|
||||||
// Send(new MyMessage(send_count));
|
/// The trace system will automatically add to this information the current
|
||||||
// [receive code]
|
/// process id, thread id, and a timestamp in microseconds.
|
||||||
// void OnMyMessage(send_count) {
|
///
|
||||||
// TRACE_EVENT_ASYNC_END0("ipc", "message", send_count);
|
/// To trace an asynchronous procedure such as an IPC send/receive, use
|
||||||
// }
|
/// ASYNC_BEGIN and ASYNC_END:
|
||||||
// The third parameter is a unique ID to match ASYNC_BEGIN/ASYNC_END pairs.
|
/// <pre>
|
||||||
// ASYNC_BEGIN and ASYNC_END can occur on any thread of any traced process.
|
/// [single threaded sender code]
|
||||||
// Pointers can be used for the ID parameter, and they will be mangled
|
/// static int send_count = 0;
|
||||||
// internally so that the same pointer on two different processes will not
|
/// ++send_count;
|
||||||
// match. For example:
|
/// TRACE_EVENT_ASYNC_BEGIN0("ipc", "message", send_count);
|
||||||
// class MyTracedClass {
|
/// Send(new MyMessage(send_count));
|
||||||
// public:
|
/// [receive code]
|
||||||
// MyTracedClass() {
|
/// void OnMyMessage(send_count) {
|
||||||
// TRACE_EVENT_ASYNC_BEGIN0("category", "MyTracedClass", this);
|
/// TRACE_EVENT_ASYNC_END0("ipc", "message", send_count);
|
||||||
// }
|
/// }
|
||||||
// ~MyTracedClass() {
|
/// </pre>
|
||||||
// TRACE_EVENT_ASYNC_END0("category", "MyTracedClass", this);
|
/// The third parameter is a unique ID to match ASYNC_BEGIN/ASYNC_END pairs.
|
||||||
// }
|
/// ASYNC_BEGIN and ASYNC_END can occur on any thread of any traced process.
|
||||||
// }
|
/// Pointers can be used for the ID parameter, and they will be mangled
|
||||||
//
|
/// internally so that the same pointer on two different processes will not
|
||||||
// The trace event also supports counters, which is a way to track a quantity
|
/// match. For example:
|
||||||
// as it varies over time. Counters are created with the following macro:
|
/// <pre>
|
||||||
// TRACE_COUNTER1("MY_SUBSYSTEM", "myCounter", g_myCounterValue);
|
/// class MyTracedClass {
|
||||||
//
|
/// public:
|
||||||
// Counters are process-specific. The macro itself can be issued from any
|
/// MyTracedClass() {
|
||||||
// thread, however.
|
/// TRACE_EVENT_ASYNC_BEGIN0("category", "MyTracedClass", this);
|
||||||
//
|
/// }
|
||||||
// Sometimes, you want to track two counters at once. You can do this with two
|
/// ~MyTracedClass() {
|
||||||
// counter macros:
|
/// TRACE_EVENT_ASYNC_END0("category", "MyTracedClass", this);
|
||||||
// TRACE_COUNTER1("MY_SUBSYSTEM", "myCounter0", g_myCounterValue[0]);
|
/// }
|
||||||
// TRACE_COUNTER1("MY_SUBSYSTEM", "myCounter1", g_myCounterValue[1]);
|
/// }
|
||||||
// Or you can do it with a combined macro:
|
/// </pre>
|
||||||
// TRACE_COUNTER2("MY_SUBSYSTEM", "myCounter",
|
///
|
||||||
// "bytesPinned", g_myCounterValue[0],
|
/// The trace event also supports counters, which is a way to track a quantity
|
||||||
// "bytesAllocated", g_myCounterValue[1]);
|
/// as it varies over time. Counters are created with the following macro:
|
||||||
// This indicates to the tracing UI that these counters should be displayed
|
/// <pre>
|
||||||
// in a single graph, as a summed area chart.
|
/// TRACE_COUNTER1("MY_SUBSYSTEM", "myCounter", g_myCounterValue);
|
||||||
//
|
/// </pre>
|
||||||
// Since counters are in a global namespace, you may want to disembiguate with a
|
///
|
||||||
// unique ID, by using the TRACE_COUNTER_ID* variations.
|
/// Counters are process-specific. The macro itself can be issued from any
|
||||||
//
|
/// thread, however.
|
||||||
// By default, trace collection is compiled in, but turned off at runtime.
|
///
|
||||||
// Collecting trace data is the responsibility of the embedding application. In
|
/// Sometimes, you want to track two counters at once. You can do this with two
|
||||||
// CEF's case, calling BeginTracing will turn on tracing on all active
|
/// counter macros:
|
||||||
// processes.
|
/// <pre>
|
||||||
//
|
/// TRACE_COUNTER1("MY_SUBSYSTEM", "myCounter0", g_myCounterValue[0]);
|
||||||
//
|
/// TRACE_COUNTER1("MY_SUBSYSTEM", "myCounter1", g_myCounterValue[1]);
|
||||||
// Memory scoping note:
|
/// </pre>
|
||||||
// Tracing copies the pointers, not the string content, of the strings passed
|
/// Or you can do it with a combined macro:
|
||||||
// in for category, name, and arg_names. Thus, the following code will cause
|
/// <pre>
|
||||||
// problems:
|
/// TRACE_COUNTER2("MY_SUBSYSTEM", "myCounter",
|
||||||
// char* str = strdup("impprtantName");
|
/// "bytesPinned", g_myCounterValue[0],
|
||||||
// TRACE_EVENT_INSTANT0("SUBSYSTEM", str); // BAD!
|
/// "bytesAllocated", g_myCounterValue[1]);
|
||||||
// free(str); // Trace system now has dangling pointer
|
/// </pre>
|
||||||
//
|
/// This indicates to the tracing UI that these counters should be displayed
|
||||||
// To avoid this issue with the |name| and |arg_name| parameters, use the
|
/// in a single graph, as a summed area chart.
|
||||||
// TRACE_EVENT_COPY_XXX overloads of the macros at additional runtime
|
///
|
||||||
// overhead.
|
/// Since counters are in a global namespace, you may want to disembiguate with
|
||||||
// Notes: The category must always be in a long-lived char* (i.e. static const).
|
/// a unique ID, by using the TRACE_COUNTER_ID* variations.
|
||||||
// The |arg_values|, when used, are always deep copied with the _COPY
|
///
|
||||||
// macros.
|
/// By default, trace collection is compiled in, but turned off at runtime.
|
||||||
//
|
/// Collecting trace data is the responsibility of the embedding application. In
|
||||||
//
|
/// CEF's case, calling BeginTracing will turn on tracing on all active
|
||||||
// Thread Safety:
|
/// processes.
|
||||||
// All macros are thread safe and can be used from any process.
|
///
|
||||||
|
///
|
||||||
|
/// Memory scoping note:
|
||||||
|
/// Tracing copies the pointers, not the string content, of the strings passed
|
||||||
|
/// in for category, name, and arg_names. Thus, the following code will cause
|
||||||
|
/// problems:
|
||||||
|
/// <pre>
|
||||||
|
/// char* str = strdup("impprtantName");
|
||||||
|
/// TRACE_EVENT_INSTANT0("SUBSYSTEM", str); // BAD!
|
||||||
|
/// 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.
|
||||||
///
|
///
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_BASE_CEF_TRACE_EVENT_H_
|
#ifndef CEF_INCLUDE_BASE_CEF_TRACE_EVENT_H_
|
||||||
@@ -141,7 +163,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#if defined(USING_CHROMIUM_INCLUDES)
|
#if defined(USING_CHROMIUM_INCLUDES)
|
||||||
// When building CEF include the Chromium header directly.
|
/// When building CEF include the Chromium header directly.
|
||||||
#include "base/trace_event/trace_event.h"
|
#include "base/trace_event/trace_event.h"
|
||||||
#else // !USING_CHROMIUM_INCLUDES
|
#else // !USING_CHROMIUM_INCLUDES
|
||||||
// The following is substantially similar to the Chromium implementation.
|
// The following is substantially similar to the Chromium implementation.
|
||||||
@@ -150,11 +172,13 @@
|
|||||||
|
|
||||||
#include "include/internal/cef_trace_event_internal.h"
|
#include "include/internal/cef_trace_event_internal.h"
|
||||||
|
|
||||||
// Records a pair of begin and end events called "name" for the current
|
///
|
||||||
// scope, with 0, 1 or 2 associated arguments. If the category is not
|
/// Records a pair of begin and end events called "name" for the current
|
||||||
// enabled, then this does nothing.
|
/// scope, with 0, 1 or 2 associated arguments. If the category is not
|
||||||
// - category and name strings must have application lifetime (statics or
|
/// enabled, then this does nothing.
|
||||||
// literals). They may not include " chars.
|
/// - category and name strings must have application lifetime (statics or
|
||||||
|
/// literals). They may not include " chars.
|
||||||
|
///
|
||||||
#define TRACE_EVENT0(category, name) \
|
#define TRACE_EVENT0(category, name) \
|
||||||
cef_trace_event_begin(category, name, NULL, 0, NULL, 0, false); \
|
cef_trace_event_begin(category, name, NULL, 0, NULL, 0, false); \
|
||||||
CEF_INTERNAL_TRACE_END_ON_SCOPE_CLOSE(category, name)
|
CEF_INTERNAL_TRACE_END_ON_SCOPE_CLOSE(category, name)
|
||||||
@@ -179,11 +203,13 @@
|
|||||||
cef_trace_event::CefTraceEndOnScopeClose CEF_INTERNAL_TRACE_EVENT_UID( \
|
cef_trace_event::CefTraceEndOnScopeClose CEF_INTERNAL_TRACE_EVENT_UID( \
|
||||||
profileScope)(category, name)
|
profileScope)(category, name)
|
||||||
|
|
||||||
// Records a single event called "name" immediately, with 0, 1 or 2
|
///
|
||||||
// associated arguments. If the category is not enabled, then this
|
/// Records a single event called "name" immediately, with 0, 1 or 2
|
||||||
// does nothing.
|
/// associated arguments. If the category is not enabled, then this
|
||||||
// - category and name strings must have application lifetime (statics or
|
/// does nothing.
|
||||||
// literals). They may not include " chars.
|
/// - category and name strings must have application lifetime (statics or
|
||||||
|
/// literals). They may not include " chars.
|
||||||
|
///
|
||||||
#define TRACE_EVENT_INSTANT0(category, name) \
|
#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, false)
|
||||||
#define TRACE_EVENT_INSTANT1(category, name, arg1_name, arg1_val) \
|
#define TRACE_EVENT_INSTANT1(category, name, arg1_name, arg1_val) \
|
||||||
@@ -201,11 +227,13 @@
|
|||||||
cef_trace_event_instant(category, name, arg1_name, arg1_val, arg2_name, \
|
cef_trace_event_instant(category, name, arg1_name, arg1_val, arg2_name, \
|
||||||
arg2_val, true)
|
arg2_val, true)
|
||||||
|
|
||||||
// Records a single BEGIN event called "name" immediately, with 0, 1 or 2
|
///
|
||||||
// associated arguments. If the category is not enabled, then this
|
/// Records a single BEGIN event called "name" immediately, with 0, 1 or 2
|
||||||
// does nothing.
|
/// associated arguments. If the category is not enabled, then this
|
||||||
// - category and name strings must have application lifetime (statics or
|
/// does nothing.
|
||||||
// literals). They may not include " chars.
|
/// - category and name strings must have application lifetime (statics or
|
||||||
|
/// literals). They may not include " chars.
|
||||||
|
///
|
||||||
#define TRACE_EVENT_BEGIN0(category, name) \
|
#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, false)
|
||||||
#define TRACE_EVENT_BEGIN1(category, name, arg1_name, arg1_val) \
|
#define TRACE_EVENT_BEGIN1(category, name, arg1_name, arg1_val) \
|
||||||
@@ -223,10 +251,12 @@
|
|||||||
cef_trace_event_begin(category, name, arg1_name, arg1_val, arg2_name, \
|
cef_trace_event_begin(category, name, arg1_name, arg1_val, arg2_name, \
|
||||||
arg2_val, true)
|
arg2_val, true)
|
||||||
|
|
||||||
// Records a single END event for "name" immediately. If the category
|
///
|
||||||
// is not enabled, then this does nothing.
|
/// Records a single END event for "name" immediately. If the category
|
||||||
// - category and name strings must have application lifetime (statics or
|
/// is not enabled, then this does nothing.
|
||||||
// literals). They may not include " chars.
|
/// - category and name strings must have application lifetime (statics or
|
||||||
|
/// literals). They may not include " chars.
|
||||||
|
///
|
||||||
#define TRACE_EVENT_END0(category, name) \
|
#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, false)
|
||||||
#define TRACE_EVENT_END1(category, name, arg1_name, arg1_val) \
|
#define TRACE_EVENT_END1(category, name, arg1_name, arg1_val) \
|
||||||
@@ -244,20 +274,24 @@
|
|||||||
cef_trace_event_end(category, name, arg1_name, arg1_val, arg2_name, \
|
cef_trace_event_end(category, name, arg1_name, arg1_val, arg2_name, \
|
||||||
arg2_val, true)
|
arg2_val, true)
|
||||||
|
|
||||||
// Records the value of a counter called "name" immediately. Value
|
///
|
||||||
// must be representable as a 32 bit integer.
|
/// Records the value of a counter called "name" immediately. Value
|
||||||
// - category and name strings must have application lifetime (statics or
|
/// must be representable as a 32 bit integer.
|
||||||
// literals). They may not include " chars.
|
/// - category and name strings must have application lifetime (statics or
|
||||||
|
/// literals). They may not include " chars.
|
||||||
|
///
|
||||||
#define TRACE_COUNTER1(category, name, value) \
|
#define TRACE_COUNTER1(category, name, value) \
|
||||||
cef_trace_counter(category, name, NULL, value, NULL, 0, false)
|
cef_trace_counter(category, name, NULL, value, NULL, 0, false)
|
||||||
#define TRACE_COPY_COUNTER1(category, name, value) \
|
#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, true)
|
||||||
|
|
||||||
// Records the values of a multi-parted counter called "name" immediately.
|
///
|
||||||
// The UI will treat value1 and value2 as parts of a whole, displaying their
|
/// Records the values of a multi-parted counter called "name" immediately.
|
||||||
// values as a stacked-bar chart.
|
/// The UI will treat value1 and value2 as parts of a whole, displaying their
|
||||||
// - category and name strings must have application lifetime (statics or
|
/// values as a stacked-bar chart.
|
||||||
// literals). They may not include " chars.
|
/// - category and name strings must have application lifetime (statics or
|
||||||
|
/// literals). They may not include " chars.
|
||||||
|
///
|
||||||
#define TRACE_COUNTER2(category, name, value1_name, value1_val, value2_name, \
|
#define TRACE_COUNTER2(category, name, value1_name, value1_val, value2_name, \
|
||||||
value2_val) \
|
value2_val) \
|
||||||
cef_trace_counter(category, name, value1_name, value1_val, value2_name, \
|
cef_trace_counter(category, name, value1_name, value1_val, value2_name, \
|
||||||
@@ -267,28 +301,32 @@
|
|||||||
cef_trace_counter(category, name, value1_name, value1_val, value2_name, \
|
cef_trace_counter(category, name, value1_name, value1_val, value2_name, \
|
||||||
value2_val, true)
|
value2_val, true)
|
||||||
|
|
||||||
// Records the value of a counter called "name" immediately. Value
|
///
|
||||||
// must be representable as a 32 bit integer.
|
/// Records the value of a counter called "name" immediately. Value
|
||||||
// - category and name strings must have application lifetime (statics or
|
/// must be representable as a 32 bit integer.
|
||||||
// literals). They may not include " chars.
|
/// - category and name strings must have application lifetime (statics or
|
||||||
// - |id| is used to disambiguate counters with the same name. It must either
|
/// literals). They may not include " chars.
|
||||||
// be a pointer or an integer value up to 64 bits. If it's a pointer, the
|
/// - |id| is used to disambiguate counters with the same name. It must either
|
||||||
// bits will be xored with a hash of the process ID so that the same pointer
|
/// be a pointer or an integer value up to 64 bits. If it's a pointer, the
|
||||||
// on two different processes will not collide.
|
/// bits will be xored with a hash of the process ID so that the same pointer
|
||||||
|
/// on two different processes will not collide.
|
||||||
|
///
|
||||||
#define TRACE_COUNTER_ID1(category, name, id, value) \
|
#define TRACE_COUNTER_ID1(category, name, id, value) \
|
||||||
cef_trace_counter_id(category, name, id, NULL, value, NULL, 0, false)
|
cef_trace_counter_id(category, name, id, NULL, value, NULL, 0, false)
|
||||||
#define TRACE_COPY_COUNTER_ID1(category, name, id, value) \
|
#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, true)
|
||||||
|
|
||||||
// Records the values of a multi-parted counter called "name" immediately.
|
///
|
||||||
// The UI will treat value1 and value2 as parts of a whole, displaying their
|
/// Records the values of a multi-parted counter called "name" immediately.
|
||||||
// values as a stacked-bar chart.
|
/// The UI will treat value1 and value2 as parts of a whole, displaying their
|
||||||
// - category and name strings must have application lifetime (statics or
|
/// values as a stacked-bar chart.
|
||||||
// literals). They may not include " chars.
|
/// - category and name strings must have application lifetime (statics or
|
||||||
// - |id| is used to disambiguate counters with the same name. It must either
|
/// literals). They may not include " chars.
|
||||||
// be a pointer or an integer value up to 64 bits. If it's a pointer, the
|
/// - |id| is used to disambiguate counters with the same name. It must either
|
||||||
// bits will be xored with a hash of the process ID so that the same pointer
|
/// be a pointer or an integer value up to 64 bits. If it's a pointer, the
|
||||||
// on two different processes will not collide.
|
/// bits will be xored with a hash of the process ID so that the same pointer
|
||||||
|
/// on two different processes will not collide.
|
||||||
|
///
|
||||||
#define TRACE_COUNTER_ID2(category, name, id, value1_name, value1_val, \
|
#define TRACE_COUNTER_ID2(category, name, id, value1_name, value1_val, \
|
||||||
value2_name, value2_val) \
|
value2_name, value2_val) \
|
||||||
cef_trace_counter_id(category, name, id, value1_name, value1_val, \
|
cef_trace_counter_id(category, name, id, value1_name, value1_val, \
|
||||||
@@ -298,22 +336,24 @@
|
|||||||
cef_trace_counter_id(category, name, id, value1_name, value1_val, \
|
cef_trace_counter_id(category, name, id, value1_name, value1_val, \
|
||||||
value2_name, value2_val, true)
|
value2_name, value2_val, true)
|
||||||
|
|
||||||
// Records a single ASYNC_BEGIN event called "name" immediately, with 0, 1 or 2
|
///
|
||||||
// associated arguments. If the category is not enabled, then this
|
/// Records a single ASYNC_BEGIN event called "name" immediately, with 0, 1 or 2
|
||||||
// does nothing.
|
/// associated arguments. If the category is not enabled, then this
|
||||||
// - category and name strings must have application lifetime (statics or
|
/// does nothing.
|
||||||
// literals). They may not include " chars.
|
/// - category and name strings must have application lifetime (statics or
|
||||||
// - |id| is used to match the ASYNC_BEGIN event with the ASYNC_END event.
|
/// literals). They may not include " chars.
|
||||||
// ASYNC events are considered to match if their category, name and id values
|
/// - |id| is used to match the ASYNC_BEGIN event with the ASYNC_END event.
|
||||||
// all match. |id| must either be a pointer or an integer value up to 64
|
/// ASYNC events are considered to match if their category, name and id values
|
||||||
// bits. If it's a pointer, the bits will be xored with a hash of the process
|
/// all match. |id| must either be a pointer or an integer value up to 64
|
||||||
// ID sothat the same pointer on two different processes will not collide.
|
/// bits. If it's a pointer, the bits will be xored with a hash of the process
|
||||||
// An asynchronous operation can consist of multiple phases. The first phase is
|
/// ID sothat the same pointer on two different processes will not collide.
|
||||||
// defined by the ASYNC_BEGIN calls. Additional phases can be defined using the
|
/// An asynchronous operation can consist of multiple phases. The first phase is
|
||||||
// ASYNC_STEP_BEGIN macros. When the operation completes, call ASYNC_END.
|
/// defined by the ASYNC_BEGIN calls. Additional phases can be defined using the
|
||||||
// An async operation can span threads and processes, but all events in that
|
/// ASYNC_STEP_BEGIN macros. When the operation completes, call ASYNC_END.
|
||||||
// operation must use the same |name| and |id|. Each event can have its own
|
/// An async operation can span threads and processes, but all events in that
|
||||||
// args.
|
/// operation must use the same |name| and |id|. Each event can have its own
|
||||||
|
/// args.
|
||||||
|
///
|
||||||
#define TRACE_EVENT_ASYNC_BEGIN0(category, name, id) \
|
#define TRACE_EVENT_ASYNC_BEGIN0(category, name, id) \
|
||||||
cef_trace_event_async_begin(category, name, id, NULL, 0, NULL, 0, false)
|
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) \
|
#define TRACE_EVENT_ASYNC_BEGIN1(category, name, id, arg1_name, arg1_val) \
|
||||||
@@ -333,12 +373,14 @@
|
|||||||
cef_trace_event_async_begin(category, name, id, arg1_name, arg1_val, \
|
cef_trace_event_async_begin(category, name, id, arg1_name, arg1_val, \
|
||||||
arg2_name, arg2_val, true)
|
arg2_name, arg2_val, true)
|
||||||
|
|
||||||
// Records a single ASYNC_STEP_INTO event for |step| immediately. If the
|
///
|
||||||
// category is not enabled, then this does nothing. The |name| and |id| must
|
/// Records a single ASYNC_STEP_INTO event for |step| immediately. If the
|
||||||
// match the ASYNC_BEGIN event above. The |step| param identifies this step
|
/// category is not enabled, then this does nothing. The |name| and |id| must
|
||||||
// within the async event. This should be called at the beginning of the next
|
/// match the ASYNC_BEGIN event above. The |step| param identifies this step
|
||||||
// phase of an asynchronous operation. The ASYNC_BEGIN event must not have any
|
/// within the async event. This should be called at the beginning of the next
|
||||||
// ASYNC_STEP_PAST events.
|
/// phase of an asynchronous operation. The ASYNC_BEGIN event must not have any
|
||||||
|
/// ASYNC_STEP_PAST events.
|
||||||
|
///
|
||||||
#define TRACE_EVENT_ASYNC_STEP_INTO0(category, name, id, step) \
|
#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, false)
|
||||||
#define TRACE_EVENT_ASYNC_STEP_INTO1(category, name, id, step, arg1_name, \
|
#define TRACE_EVENT_ASYNC_STEP_INTO1(category, name, id, step, arg1_name, \
|
||||||
@@ -352,12 +394,14 @@
|
|||||||
cef_trace_event_async_step_into(category, name, id, step, arg1_name, \
|
cef_trace_event_async_step_into(category, name, id, step, arg1_name, \
|
||||||
arg1_val, true)
|
arg1_val, true)
|
||||||
|
|
||||||
// Records a single ASYNC_STEP_PAST event for |step| immediately. If the
|
///
|
||||||
// category is not enabled, then this does nothing. The |name| and |id| must
|
/// Records a single ASYNC_STEP_PAST event for |step| immediately. If the
|
||||||
// match the ASYNC_BEGIN event above. The |step| param identifies this step
|
/// category is not enabled, then this does nothing. The |name| and |id| must
|
||||||
// within the async event. This should be called at the beginning of the next
|
/// match the ASYNC_BEGIN event above. The |step| param identifies this step
|
||||||
// phase of an asynchronous operation. The ASYNC_BEGIN event must not have any
|
/// within the async event. This should be called at the beginning of the next
|
||||||
// ASYNC_STEP_INTO events.
|
/// phase of an asynchronous operation. The ASYNC_BEGIN event must not have any
|
||||||
|
/// ASYNC_STEP_INTO events.
|
||||||
|
///
|
||||||
#define TRACE_EVENT_ASYNC_STEP_PAST0(category, name, id, step) \
|
#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, false)
|
||||||
#define TRACE_EVENT_ASYNC_STEP_PAST1(category, name, id, step, arg1_name, \
|
#define TRACE_EVENT_ASYNC_STEP_PAST1(category, name, id, step, arg1_name, \
|
||||||
@@ -371,8 +415,10 @@
|
|||||||
cef_trace_event_async_step_past(category, name, id, step, arg1_name, \
|
cef_trace_event_async_step_past(category, name, id, step, arg1_name, \
|
||||||
arg1_val, true)
|
arg1_val, true)
|
||||||
|
|
||||||
// Records a single ASYNC_END event for "name" immediately. If the category
|
///
|
||||||
// is not enabled, then this does nothing.
|
/// 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) \
|
#define TRACE_EVENT_ASYNC_END0(category, name, id) \
|
||||||
cef_trace_event_async_end(category, name, id, NULL, 0, NULL, 0, false)
|
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) \
|
#define TRACE_EVENT_ASYNC_END1(category, name, id, arg1_name, arg1_val) \
|
||||||
@@ -394,7 +440,9 @@
|
|||||||
|
|
||||||
namespace cef_trace_event {
|
namespace cef_trace_event {
|
||||||
|
|
||||||
// Used by TRACE_EVENTx macro. Do not use directly.
|
///
|
||||||
|
/// Used by TRACE_EVENTx macro. Do not use directly.
|
||||||
|
///
|
||||||
class CefTraceEndOnScopeClose {
|
class CefTraceEndOnScopeClose {
|
||||||
public:
|
public:
|
||||||
CefTraceEndOnScopeClose(const char* category, const char* name)
|
CefTraceEndOnScopeClose(const char* category, const char* name)
|
||||||
@@ -408,7 +456,7 @@ class CefTraceEndOnScopeClose {
|
|||||||
const char* name_;
|
const char* name_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // cef_trace_event
|
} // namespace cef_trace_event
|
||||||
|
|
||||||
#endif // !USING_CHROMIUM_INCLUDES
|
#endif // !USING_CHROMIUM_INCLUDES
|
||||||
|
|
||||||
|
|||||||
@@ -28,25 +28,30 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
// Use std::tuple as tuple type. This file contains helper functions for
|
///
|
||||||
// working with std::tuples.
|
/// \file
|
||||||
// The functions DispatchToMethod and DispatchToFunction take a function pointer
|
/// Use std::tuple as tuple type. This file contains helper functions for
|
||||||
// or instance and method pointer, and unpack a tuple into arguments to the
|
/// working with std::tuples.
|
||||||
// call.
|
/// The functions DispatchToMethod and DispatchToFunction take a function
|
||||||
//
|
/// pointer or instance and method pointer, and unpack a tuple into arguments to
|
||||||
// Example usage:
|
/// the call.
|
||||||
// // These two methods of creating a Tuple are identical.
|
///
|
||||||
// std::tuple<int, const char*> tuple_a(1, "wee");
|
/// Example usage:
|
||||||
// std::tuple<int, const char*> tuple_b = std::make_tuple(1, "wee");
|
/// <pre>
|
||||||
//
|
/// // These two methods of creating a Tuple are identical.
|
||||||
// void SomeFunc(int a, const char* b) { }
|
/// std::tuple<int, const char*> tuple_a(1, "wee");
|
||||||
// DispatchToFunction(&SomeFunc, tuple_a); // SomeFunc(1, "wee")
|
/// std::tuple<int, const char*> tuple_b = std::make_tuple(1, "wee");
|
||||||
// DispatchToFunction(
|
///
|
||||||
// &SomeFunc, std::make_tuple(10, "foo")); // SomeFunc(10, "foo")
|
/// void SomeFunc(int a, const char* b) { }
|
||||||
//
|
/// DispatchToFunction(&SomeFunc, tuple_a); // SomeFunc(1, "wee")
|
||||||
// struct { void SomeMeth(int a, int b, int c) { } } foo;
|
/// DispatchToFunction(
|
||||||
// DispatchToMethod(&foo, &Foo::SomeMeth, std::make_tuple(1, 2, 3));
|
/// &SomeFunc, std::make_tuple(10, "foo")); // SomeFunc(10, "foo")
|
||||||
// // foo->SomeMeth(1, 2, 3);
|
///
|
||||||
|
/// struct { void SomeMeth(int a, int b, int c) { } } foo;
|
||||||
|
/// DispatchToMethod(&foo, &Foo::SomeMeth, std::make_tuple(1, 2, 3));
|
||||||
|
/// // foo->SomeMeth(1, 2, 3);
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_BASE_CEF_TUPLE_H_
|
#ifndef CEF_INCLUDE_BASE_CEF_TUPLE_H_
|
||||||
#define CEF_INCLUDE_BASE_CEF_TUPLE_H_
|
#define CEF_INCLUDE_BASE_CEF_TUPLE_H_
|
||||||
@@ -88,9 +93,7 @@ inline void DispatchToMethodImpl(const ObjT& obj,
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename ObjT, typename Method, typename Tuple>
|
template <typename ObjT, typename Method, typename Tuple>
|
||||||
inline void DispatchToMethod(const ObjT& obj,
|
inline void DispatchToMethod(const ObjT& obj, Method method, Tuple&& args) {
|
||||||
Method method,
|
|
||||||
Tuple&& args) {
|
|
||||||
constexpr size_t size = std::tuple_size<std::decay_t<Tuple>>::value;
|
constexpr size_t size = std::tuple_size<std::decay_t<Tuple>>::value;
|
||||||
DispatchToMethodImpl(obj, method, std::forward<Tuple>(args),
|
DispatchToMethodImpl(obj, method, std::forward<Tuple>(args),
|
||||||
std::make_index_sequence<size>());
|
std::make_index_sequence<size>());
|
||||||
|
|||||||
@@ -28,69 +28,73 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
// Weak pointers are pointers to an object that do not affect its lifetime,
|
///
|
||||||
// and which may be invalidated (i.e. reset to nullptr) by the object, or its
|
/// \file
|
||||||
// owner, at any time, most commonly when the object is about to be deleted.
|
/// Weak pointers are pointers to an object that do not affect its lifetime.
|
||||||
|
/// They may be invalidated (i.e. reset to nullptr) by the object, or its
|
||||||
// Weak pointers are useful when an object needs to be accessed safely by one
|
/// owner, at any time, most commonly when the object is about to be deleted.
|
||||||
// or more objects other than its owner, and those callers can cope with the
|
///
|
||||||
// object vanishing and e.g. tasks posted to it being silently dropped.
|
/// Weak pointers are useful when an object needs to be accessed safely by one
|
||||||
// Reference-counting such an object would complicate the ownership graph and
|
/// or more objects other than its owner, and those callers can cope with the
|
||||||
// make it harder to reason about the object's lifetime.
|
/// object vanishing and e.g. tasks posted to it being silently dropped.
|
||||||
|
/// Reference-counting such an object would complicate the ownership graph and
|
||||||
// EXAMPLE:
|
/// make it harder to reason about the object's lifetime.
|
||||||
//
|
///
|
||||||
// class Controller {
|
/// EXAMPLE:
|
||||||
// public:
|
///
|
||||||
// void SpawnWorker() { Worker::StartNew(weak_factory_.GetWeakPtr()); }
|
/// <pre>
|
||||||
// void WorkComplete(const Result& result) { ... }
|
/// class Controller {
|
||||||
// private:
|
/// public:
|
||||||
// // Member variables should appear before the WeakPtrFactory, to ensure
|
/// void SpawnWorker() { Worker::StartNew(weak_factory_.GetWeakPtr()); }
|
||||||
// // that any WeakPtrs to Controller are invalidated before its members
|
/// void WorkComplete(const Result& result) { ... }
|
||||||
// // variable's destructors are executed, rendering them invalid.
|
/// private:
|
||||||
// WeakPtrFactory<Controller> weak_factory_{this};
|
/// // Member variables should appear before the WeakPtrFactory, to ensure
|
||||||
// };
|
/// // that any WeakPtrs to Controller are invalidated before its members
|
||||||
//
|
/// // variable's destructors are executed, rendering them invalid.
|
||||||
// class Worker {
|
/// WeakPtrFactory<Controller> weak_factory_{this};
|
||||||
// public:
|
/// };
|
||||||
// static void StartNew(WeakPtr<Controller> controller) {
|
///
|
||||||
// Worker* worker = new Worker(std::move(controller));
|
/// class Worker {
|
||||||
// // Kick off asynchronous processing...
|
/// public:
|
||||||
// }
|
/// static void StartNew(WeakPtr<Controller> controller) {
|
||||||
// private:
|
/// Worker* worker = new Worker(std::move(controller));
|
||||||
// Worker(WeakPtr<Controller> controller)
|
/// // Kick off asynchronous processing...
|
||||||
// : controller_(std::move(controller)) {}
|
/// }
|
||||||
// void DidCompleteAsynchronousProcessing(const Result& result) {
|
/// private:
|
||||||
// if (controller_)
|
/// Worker(WeakPtr<Controller> controller)
|
||||||
// controller_->WorkComplete(result);
|
/// : controller_(std::move(controller)) {}
|
||||||
// }
|
/// void DidCompleteAsynchronousProcessing(const Result& result) {
|
||||||
// WeakPtr<Controller> controller_;
|
/// if (controller_)
|
||||||
// };
|
/// controller_->WorkComplete(result);
|
||||||
//
|
/// }
|
||||||
// With this implementation a caller may use SpawnWorker() to dispatch multiple
|
/// WeakPtr<Controller> controller_;
|
||||||
// Workers and subsequently delete the Controller, without waiting for all
|
/// };
|
||||||
// Workers to have completed.
|
/// </pre>
|
||||||
|
///
|
||||||
// ------------------------- IMPORTANT: Thread-safety -------------------------
|
/// With this implementation a caller may use SpawnWorker() to dispatch multiple
|
||||||
|
/// Workers and subsequently delete the Controller, without waiting for all
|
||||||
// Weak pointers may be passed safely between threads, but must always be
|
/// Workers to have completed.
|
||||||
// dereferenced and invalidated on the same ThreaddTaskRunner otherwise
|
///
|
||||||
// checking the pointer would be racey.
|
/// <b>IMPORTANT: Thread-safety</b>
|
||||||
//
|
///
|
||||||
// To ensure correct use, the first time a WeakPtr issued by a WeakPtrFactory
|
/// Weak pointers may be passed safely between threads, but must always be
|
||||||
// is dereferenced, the factory and its WeakPtrs become bound to the calling
|
/// dereferenced and invalidated on the same ThreaddTaskRunner otherwise
|
||||||
// thread or current ThreaddWorkerPool token, and cannot be dereferenced or
|
/// checking the pointer would be racey.
|
||||||
// invalidated on any other task runner. Bound WeakPtrs can still be handed
|
///
|
||||||
// off to other task runners, e.g. to use to post tasks back to object on the
|
/// To ensure correct use, the first time a WeakPtr issued by a WeakPtrFactory
|
||||||
// bound thread.
|
/// is dereferenced, the factory and its WeakPtrs become bound to the calling
|
||||||
//
|
/// thread or current ThreaddWorkerPool token, and cannot be dereferenced or
|
||||||
// If all WeakPtr objects are destroyed or invalidated then the factory is
|
/// invalidated on any other task runner. Bound WeakPtrs can still be handed
|
||||||
// unbound from the ThreaddTaskRunner/Thread. The WeakPtrFactory may then be
|
/// off to other task runners, e.g. to use to post tasks back to object on the
|
||||||
// destroyed, or new WeakPtr objects may be used, from a different thread.
|
/// bound thread.
|
||||||
//
|
///
|
||||||
// Thus, at least one WeakPtr object must exist and have been dereferenced on
|
/// If all WeakPtr objects are destroyed or invalidated then the factory is
|
||||||
// the correct thread to enforce that other WeakPtr objects will enforce they
|
/// unbound from the ThreadedTaskRunner/Thread. The WeakPtrFactory may then be
|
||||||
// are used on the desired thread.
|
/// destroyed, or new WeakPtr objects may be used, from a different thread.
|
||||||
|
///
|
||||||
|
/// Thus, at least one WeakPtr object must exist and have been dereferenced on
|
||||||
|
/// the correct thread to enforce that other WeakPtr objects will enforce they
|
||||||
|
/// are used on the desired thread.
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_BASE_CEF_WEAK_PTR_H_
|
#ifndef CEF_INCLUDE_BASE_CEF_WEAK_PTR_H_
|
||||||
#define CEF_INCLUDE_BASE_CEF_WEAK_PTR_H_
|
#define CEF_INCLUDE_BASE_CEF_WEAK_PTR_H_
|
||||||
@@ -109,7 +113,6 @@
|
|||||||
|
|
||||||
#include "include/base/cef_atomic_flag.h"
|
#include "include/base/cef_atomic_flag.h"
|
||||||
#include "include/base/cef_logging.h"
|
#include "include/base/cef_logging.h"
|
||||||
#include "include/base/cef_macros.h"
|
|
||||||
#include "include/base/cef_ref_counted.h"
|
#include "include/base/cef_ref_counted.h"
|
||||||
#include "include/base/cef_thread_checker.h"
|
#include "include/base/cef_thread_checker.h"
|
||||||
|
|
||||||
@@ -244,27 +247,32 @@ class SupportsWeakPtrBase {
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
class WeakPtrFactory;
|
class WeakPtrFactory;
|
||||||
|
|
||||||
// The WeakPtr class holds a weak reference to |T*|.
|
///
|
||||||
//
|
/// The WeakPtr class holds a weak reference to |T*|.
|
||||||
// This class is designed to be used like a normal pointer. You should always
|
///
|
||||||
// null-test an object of this class before using it or invoking a method that
|
/// This class is designed to be used like a normal pointer. You should always
|
||||||
// may result in the underlying object being destroyed.
|
/// null-test an object of this class before using it or invoking a method that
|
||||||
//
|
/// may result in the underlying object being destroyed.
|
||||||
// EXAMPLE:
|
///
|
||||||
//
|
/// EXAMPLE:
|
||||||
// class Foo { ... };
|
///
|
||||||
// WeakPtr<Foo> foo;
|
/// <pre>
|
||||||
// if (foo)
|
/// class Foo { ... };
|
||||||
// foo->method();
|
/// WeakPtr<Foo> foo;
|
||||||
//
|
/// if (foo)
|
||||||
|
/// foo->method();
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class WeakPtr : public internal::WeakPtrBase {
|
class WeakPtr : public internal::WeakPtrBase {
|
||||||
public:
|
public:
|
||||||
WeakPtr() = default;
|
WeakPtr() = default;
|
||||||
WeakPtr(std::nullptr_t) {}
|
WeakPtr(std::nullptr_t) {}
|
||||||
|
|
||||||
// Allow conversion from U to T provided U "is a" T. Note that this
|
///
|
||||||
// is separate from the (implicit) copy and move constructors.
|
/// Allow conversion from U to T provided U "is a" T. Note that this
|
||||||
|
/// is separate from the (implicit) copy and move constructors.
|
||||||
|
///
|
||||||
template <typename U>
|
template <typename U>
|
||||||
WeakPtr(const WeakPtr<U>& other) : WeakPtrBase(other) {
|
WeakPtr(const WeakPtr<U>& other) : WeakPtrBase(other) {
|
||||||
// Need to cast from U* to T* to do pointer adjustment in case of multiple
|
// Need to cast from U* to T* to do pointer adjustment in case of multiple
|
||||||
@@ -293,21 +301,27 @@ class WeakPtr : public internal::WeakPtrBase {
|
|||||||
return get();
|
return get();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allow conditionals to test validity, e.g. if (weak_ptr) {...};
|
///
|
||||||
|
/// Allow conditionals to test validity, e.g. `if (weak_ptr) {...}`;
|
||||||
|
///
|
||||||
explicit operator bool() const { return get() != nullptr; }
|
explicit operator bool() const { return get() != nullptr; }
|
||||||
|
|
||||||
// Returns false if the WeakPtr is confirmed to be invalid. This call is safe
|
///
|
||||||
// to make from any thread, e.g. to optimize away unnecessary work, but
|
/// Returns false if the WeakPtr is confirmed to be invalid. This call is safe
|
||||||
// operator bool() must always be called, on the correct thread, before
|
/// to make from any thread, e.g. to optimize away unnecessary work, but
|
||||||
// actually using the pointer.
|
/// operator bool() must always be called, on the correct thread, before
|
||||||
//
|
/// actually using the pointer.
|
||||||
// Warning: as with any object, this call is only thread-safe if the WeakPtr
|
///
|
||||||
// instance isn't being re-assigned or reset() racily with this call.
|
/// Warning: as with any object, this call is only thread-safe if the WeakPtr
|
||||||
|
/// instance isn't being re-assigned or reset() racily with this call.
|
||||||
|
///
|
||||||
bool MaybeValid() const { return ref_.MaybeValid(); }
|
bool MaybeValid() const { return ref_.MaybeValid(); }
|
||||||
|
|
||||||
// Returns whether the object |this| points to has been invalidated. This can
|
///
|
||||||
// be used to distinguish a WeakPtr to a destroyed object from one that has
|
/// Returns whether the object |this| points to has been invalidated. This can
|
||||||
// been explicitly set to null.
|
/// be used to distinguish a WeakPtr to a destroyed object from one that has
|
||||||
|
/// been explicitly set to null.
|
||||||
|
///
|
||||||
bool WasInvalidated() const { return ptr_ && !ref_.IsValid(); }
|
bool WasInvalidated() const { return ptr_ && !ref_.IsValid(); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -321,7 +335,9 @@ class WeakPtr : public internal::WeakPtrBase {
|
|||||||
: WeakPtrBase(ref, reinterpret_cast<uintptr_t>(ptr)) {}
|
: WeakPtrBase(ref, reinterpret_cast<uintptr_t>(ptr)) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Allow callers to compare WeakPtrs against nullptr to test validity.
|
///
|
||||||
|
/// Allow callers to compare WeakPtrs against nullptr to test validity.
|
||||||
|
///
|
||||||
template <class T>
|
template <class T>
|
||||||
bool operator!=(const WeakPtr<T>& weak_ptr, std::nullptr_t) {
|
bool operator!=(const WeakPtr<T>& weak_ptr, std::nullptr_t) {
|
||||||
return !(weak_ptr == nullptr);
|
return !(weak_ptr == nullptr);
|
||||||
@@ -349,17 +365,25 @@ class WeakPtrFactoryBase {
|
|||||||
};
|
};
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
|
|
||||||
// A class may be composed of a WeakPtrFactory and thereby
|
///
|
||||||
// control how it exposes weak pointers to itself. This is helpful if you only
|
/// A class may be composed of a WeakPtrFactory and thereby control how it
|
||||||
// need weak pointers within the implementation of a class. This class is also
|
/// exposes weak pointers to itself. This is helpful if you only need weak
|
||||||
// useful when working with primitive types. For example, you could have a
|
/// pointers within the implementation of a class. This class is also useful
|
||||||
// WeakPtrFactory<bool> that is used to pass around a weak reference to a bool.
|
/// when working with primitive types. For example, you could have a
|
||||||
|
/// WeakPtrFactory<bool> that is used to pass around a weak reference to a
|
||||||
|
/// bool.
|
||||||
|
///
|
||||||
template <class T>
|
template <class T>
|
||||||
class WeakPtrFactory : public internal::WeakPtrFactoryBase {
|
class WeakPtrFactory : public internal::WeakPtrFactoryBase {
|
||||||
public:
|
public:
|
||||||
|
WeakPtrFactory() = delete;
|
||||||
|
|
||||||
explicit WeakPtrFactory(T* ptr)
|
explicit WeakPtrFactory(T* ptr)
|
||||||
: WeakPtrFactoryBase(reinterpret_cast<uintptr_t>(ptr)) {}
|
: WeakPtrFactoryBase(reinterpret_cast<uintptr_t>(ptr)) {}
|
||||||
|
|
||||||
|
WeakPtrFactory(const WeakPtrFactory&) = delete;
|
||||||
|
WeakPtrFactory& operator=(const WeakPtrFactory&) = delete;
|
||||||
|
|
||||||
~WeakPtrFactory() = default;
|
~WeakPtrFactory() = default;
|
||||||
|
|
||||||
WeakPtr<T> GetWeakPtr() const {
|
WeakPtr<T> GetWeakPtr() const {
|
||||||
@@ -367,32 +391,38 @@ class WeakPtrFactory : public internal::WeakPtrFactoryBase {
|
|||||||
reinterpret_cast<T*>(ptr_));
|
reinterpret_cast<T*>(ptr_));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Call this method to invalidate all existing weak pointers.
|
///
|
||||||
|
/// Call this method to invalidate all existing weak pointers.
|
||||||
|
///
|
||||||
void InvalidateWeakPtrs() {
|
void InvalidateWeakPtrs() {
|
||||||
DCHECK(ptr_);
|
DCHECK(ptr_);
|
||||||
weak_reference_owner_.Invalidate();
|
weak_reference_owner_.Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Call this method to determine if any weak pointers exist.
|
///
|
||||||
|
/// Call this method to determine if any weak pointers exist.
|
||||||
|
///
|
||||||
bool HasWeakPtrs() const {
|
bool HasWeakPtrs() const {
|
||||||
DCHECK(ptr_);
|
DCHECK(ptr_);
|
||||||
return weak_reference_owner_.HasRefs();
|
return weak_reference_owner_.HasRefs();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
|
||||||
DISALLOW_IMPLICIT_CONSTRUCTORS(WeakPtrFactory);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// A class may extend from SupportsWeakPtr to let others take weak pointers to
|
///
|
||||||
// it. This avoids the class itself implementing boilerplate to dispense weak
|
/// A class may extend from SupportsWeakPtr to let others take weak pointers to
|
||||||
// pointers. However, since SupportsWeakPtr's destructor won't invalidate
|
/// it. This avoids the class itself implementing boilerplate to dispense weak
|
||||||
// weak pointers to the class until after the derived class' members have been
|
/// pointers. However, since SupportsWeakPtr's destructor won't invalidate
|
||||||
// destroyed, its use can lead to subtle use-after-destroy issues.
|
/// weak pointers to the class until after the derived class' members have been
|
||||||
|
/// destroyed, its use can lead to subtle use-after-destroy issues.
|
||||||
|
///
|
||||||
template <class T>
|
template <class T>
|
||||||
class SupportsWeakPtr : public internal::SupportsWeakPtrBase {
|
class SupportsWeakPtr : public internal::SupportsWeakPtrBase {
|
||||||
public:
|
public:
|
||||||
SupportsWeakPtr() = default;
|
SupportsWeakPtr() = default;
|
||||||
|
|
||||||
|
SupportsWeakPtr(const SupportsWeakPtr&) = delete;
|
||||||
|
SupportsWeakPtr& operator=(const SupportsWeakPtr&) = delete;
|
||||||
|
|
||||||
WeakPtr<T> AsWeakPtr() {
|
WeakPtr<T> AsWeakPtr() {
|
||||||
return WeakPtr<T>(weak_reference_owner_.GetRef(), static_cast<T*>(this));
|
return WeakPtr<T>(weak_reference_owner_.GetRef(), static_cast<T*>(this));
|
||||||
}
|
}
|
||||||
@@ -402,27 +432,31 @@ class SupportsWeakPtr : public internal::SupportsWeakPtrBase {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
internal::WeakReferenceOwner weak_reference_owner_;
|
internal::WeakReferenceOwner weak_reference_owner_;
|
||||||
DISALLOW_COPY_AND_ASSIGN(SupportsWeakPtr);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Helper function that uses type deduction to safely return a WeakPtr<Derived>
|
///
|
||||||
// when Derived doesn't directly extend SupportsWeakPtr<Derived>, instead it
|
/// Helper function that uses type deduction to safely return a WeakPtr<Derived>
|
||||||
// extends a Base that extends SupportsWeakPtr<Base>.
|
/// when Derived doesn't directly extend SupportsWeakPtr<Derived>, instead it
|
||||||
//
|
/// extends a Base that extends SupportsWeakPtr<Base>.
|
||||||
// EXAMPLE:
|
///
|
||||||
// class Base : public base::SupportsWeakPtr<Producer> {};
|
/// EXAMPLE:
|
||||||
// class Derived : public Base {};
|
/// <pre>
|
||||||
//
|
/// class Base : public base::SupportsWeakPtr<Producer> {};
|
||||||
// Derived derived;
|
/// class Derived : public Base {};
|
||||||
// base::WeakPtr<Derived> ptr = base::AsWeakPtr(&derived);
|
///
|
||||||
//
|
/// Derived derived;
|
||||||
// Note that the following doesn't work (invalid type conversion) since
|
/// base::WeakPtr<Derived> ptr = base::AsWeakPtr(&derived);
|
||||||
// Derived::AsWeakPtr() is WeakPtr<Base> SupportsWeakPtr<Base>::AsWeakPtr(),
|
/// </pre>
|
||||||
// and there's no way to safely cast WeakPtr<Base> to WeakPtr<Derived> at
|
///
|
||||||
// the caller.
|
/// Note that the following doesn't work (invalid type conversion) since
|
||||||
//
|
/// Derived::AsWeakPtr() is WeakPtr<Base> SupportsWeakPtr<Base>::AsWeakPtr(),
|
||||||
// base::WeakPtr<Derived> ptr = derived.AsWeakPtr(); // Fails.
|
/// and there's no way to safely cast WeakPtr<Base> to WeakPtr<Derived> at
|
||||||
|
/// the caller.
|
||||||
|
///
|
||||||
|
/// <pre>
|
||||||
|
/// base::WeakPtr<Derived> ptr = derived.AsWeakPtr(); // Fails.
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
template <typename Derived>
|
template <typename Derived>
|
||||||
WeakPtr<Derived> AsWeakPtr(Derived* t) {
|
WeakPtr<Derived> AsWeakPtr(Derived* t) {
|
||||||
return internal::SupportsWeakPtrBase::StaticAsWeakPtr<Derived>(t);
|
return internal::SupportsWeakPtrBase::StaticAsWeakPtr<Derived>(t);
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ struct BindUnwrapTraits;
|
|||||||
template <typename Functor, typename BoundArgsTuple, typename SFINAE = void>
|
template <typename Functor, typename BoundArgsTuple, typename SFINAE = void>
|
||||||
struct CallbackCancellationTraits;
|
struct CallbackCancellationTraits;
|
||||||
|
|
||||||
namespace internal {
|
namespace cef_internal {
|
||||||
|
|
||||||
template <typename Functor, typename SFINAE = void>
|
template <typename Functor, typename SFINAE = void>
|
||||||
struct FunctorTraits;
|
struct FunctorTraits;
|
||||||
@@ -687,8 +687,9 @@ struct InvokeHelper<true, ReturnType> {
|
|||||||
static inline void MakeItSo(Functor&& functor,
|
static inline void MakeItSo(Functor&& functor,
|
||||||
BoundWeakPtr&& weak_ptr,
|
BoundWeakPtr&& weak_ptr,
|
||||||
RunArgs&&... args) {
|
RunArgs&&... args) {
|
||||||
if (!weak_ptr)
|
if (!weak_ptr) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
using Traits = MakeFunctorTraits<Functor>;
|
using Traits = MakeFunctorTraits<Functor>;
|
||||||
Traits::Invoke(std::forward<Functor>(functor),
|
Traits::Invoke(std::forward<Functor>(functor),
|
||||||
std::forward<BoundWeakPtr>(weak_ptr),
|
std::forward<BoundWeakPtr>(weak_ptr),
|
||||||
@@ -1189,7 +1190,11 @@ struct AssertBindArgsValidity<std::index_sequence<Ns...>,
|
|||||||
TypeList<Args...>,
|
TypeList<Args...>,
|
||||||
TypeList<Unwrapped...>,
|
TypeList<Unwrapped...>,
|
||||||
TypeList<Params...>>
|
TypeList<Params...>>
|
||||||
: AssertConstructible<Ns, Args, std::decay_t<Args>, Unwrapped, Params>... {
|
: AssertConstructible<static_cast<int>(Ns),
|
||||||
|
Args,
|
||||||
|
std::decay_t<Args>,
|
||||||
|
Unwrapped,
|
||||||
|
Params>... {
|
||||||
static constexpr bool ok = true;
|
static constexpr bool ok = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1255,7 +1260,7 @@ decltype(auto) BindImpl(Functor&& functor, Args&&... args) {
|
|||||||
std::forward<Functor>(functor), std::forward<Args>(args)...));
|
std::forward<Functor>(functor), std::forward<Args>(args)...));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace internal
|
} // namespace cef_internal
|
||||||
|
|
||||||
// An injection point to control |this| pointer behavior on a method invocation.
|
// An injection point to control |this| pointer behavior on a method invocation.
|
||||||
// If IsWeakReceiver<> is true_type for |T| and |T| is used for a receiver of a
|
// If IsWeakReceiver<> is true_type for |T| and |T| is used for a receiver of a
|
||||||
@@ -1299,30 +1304,36 @@ struct BindUnwrapTraits {
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct BindUnwrapTraits<internal::UnretainedWrapper<T>> {
|
struct BindUnwrapTraits<cef_internal::UnretainedWrapper<T>> {
|
||||||
static T* Unwrap(const internal::UnretainedWrapper<T>& o) { return o.get(); }
|
static T* Unwrap(const cef_internal::UnretainedWrapper<T>& o) {
|
||||||
};
|
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
struct BindUnwrapTraits<internal::RetainedRefWrapper<T>> {
|
|
||||||
static T* Unwrap(const internal::RetainedRefWrapper<T>& o) { return o.get(); }
|
|
||||||
};
|
|
||||||
|
|
||||||
template <typename T, typename Deleter>
|
|
||||||
struct BindUnwrapTraits<internal::OwnedWrapper<T, Deleter>> {
|
|
||||||
static T* Unwrap(const internal::OwnedWrapper<T, Deleter>& o) {
|
|
||||||
return o.get();
|
return o.get();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct BindUnwrapTraits<internal::OwnedRefWrapper<T>> {
|
struct BindUnwrapTraits<cef_internal::RetainedRefWrapper<T>> {
|
||||||
static T& Unwrap(const internal::OwnedRefWrapper<T>& o) { return o.get(); }
|
static T* Unwrap(const cef_internal::RetainedRefWrapper<T>& o) {
|
||||||
|
return o.get();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T, typename Deleter>
|
||||||
|
struct BindUnwrapTraits<cef_internal::OwnedWrapper<T, Deleter>> {
|
||||||
|
static T* Unwrap(const cef_internal::OwnedWrapper<T, Deleter>& o) {
|
||||||
|
return o.get();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct BindUnwrapTraits<internal::PassedWrapper<T>> {
|
struct BindUnwrapTraits<cef_internal::OwnedRefWrapper<T>> {
|
||||||
static T Unwrap(const internal::PassedWrapper<T>& o) { return o.Take(); }
|
static T& Unwrap(const cef_internal::OwnedRefWrapper<T>& o) {
|
||||||
|
return o.get();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct BindUnwrapTraits<cef_internal::PassedWrapper<T>> {
|
||||||
|
static T Unwrap(const cef_internal::PassedWrapper<T>& o) { return o.Take(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(OS_WIN)
|
#if defined(OS_WIN)
|
||||||
@@ -1346,8 +1357,8 @@ template <typename Functor, typename... BoundArgs>
|
|||||||
struct CallbackCancellationTraits<
|
struct CallbackCancellationTraits<
|
||||||
Functor,
|
Functor,
|
||||||
std::tuple<BoundArgs...>,
|
std::tuple<BoundArgs...>,
|
||||||
std::enable_if_t<
|
std::enable_if_t<cef_internal::IsWeakMethod<
|
||||||
internal::IsWeakMethod<internal::FunctorTraits<Functor>::is_method,
|
cef_internal::FunctorTraits<Functor>::is_method,
|
||||||
BoundArgs...>::value>> {
|
BoundArgs...>::value>> {
|
||||||
static constexpr bool is_cancellable = true;
|
static constexpr bool is_cancellable = true;
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace base {
|
|||||||
|
|
||||||
struct FakeBindState;
|
struct FakeBindState;
|
||||||
|
|
||||||
namespace internal {
|
namespace cef_internal {
|
||||||
|
|
||||||
class BindStateBase;
|
class BindStateBase;
|
||||||
class FinallyExecutorCommon;
|
class FinallyExecutorCommon;
|
||||||
@@ -269,7 +269,7 @@ struct ThenHelper<OriginalCallback<OriginalR(OriginalArgs...)>,
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace internal
|
} // namespace cef_internal
|
||||||
} // namespace base
|
} // namespace base
|
||||||
|
|
||||||
#endif // CEF_INCLUDE_BASE_INTERNAL_CEF_CALLBACK_INTERNAL_H_
|
#endif // CEF_INCLUDE_BASE_INTERNAL_CEF_CALLBACK_INTERNAL_H_
|
||||||
|
|||||||
@@ -40,8 +40,6 @@
|
|||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "include/base/cef_macros.h"
|
|
||||||
|
|
||||||
namespace base {
|
namespace base {
|
||||||
namespace cef_internal {
|
namespace cef_internal {
|
||||||
|
|
||||||
@@ -57,6 +55,10 @@ class LockImpl {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
LockImpl();
|
LockImpl();
|
||||||
|
|
||||||
|
LockImpl(const LockImpl&) = delete;
|
||||||
|
LockImpl& operator=(const LockImpl&) = delete;
|
||||||
|
|
||||||
~LockImpl();
|
~LockImpl();
|
||||||
|
|
||||||
// If the lock is not held, take it and return true. If the lock is already
|
// If the lock is not held, take it and return true. If the lock is already
|
||||||
@@ -77,8 +79,6 @@ class LockImpl {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
NativeHandle native_handle_;
|
NativeHandle native_handle_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(LockImpl);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace cef_internal
|
} // namespace cef_internal
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ namespace base {
|
|||||||
|
|
||||||
// This is a base internal implementation file used by task.h and callback.h.
|
// This is a base internal implementation file used by task.h and callback.h.
|
||||||
// Not for public consumption, so we wrap it in namespace internal.
|
// Not for public consumption, so we wrap it in namespace internal.
|
||||||
namespace internal {
|
namespace cef_internal {
|
||||||
|
|
||||||
template <typename T, typename = void>
|
template <typename T, typename = void>
|
||||||
struct IsRefCountedType : std::false_type {};
|
struct IsRefCountedType : std::false_type {};
|
||||||
@@ -68,7 +68,7 @@ struct NeedsScopedRefptrButGetsRawPtr
|
|||||||
"NeedsScopedRefptrButGetsRawPtr requires non-reference type.");
|
"NeedsScopedRefptrButGetsRawPtr requires non-reference type.");
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace internal
|
} // namespace cef_internal
|
||||||
|
|
||||||
} // namespace base
|
} // namespace base
|
||||||
|
|
||||||
|
|||||||
@@ -38,13 +38,14 @@
|
|||||||
#include "include/base/cef_scoped_typeref_mac.h"
|
#include "include/base/cef_scoped_typeref_mac.h"
|
||||||
|
|
||||||
#if defined(__has_feature) && __has_feature(objc_arc)
|
#if defined(__has_feature) && __has_feature(objc_arc)
|
||||||
#error "Cannot include include/base/internal/cef_scoped_block_mac.h in file built with ARC."
|
#error \
|
||||||
|
"Cannot include include/base/internal/cef_scoped_block_mac.h in file built with ARC."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace base {
|
namespace base {
|
||||||
namespace mac {
|
namespace mac {
|
||||||
|
|
||||||
namespace internal {
|
namespace cef_internal {
|
||||||
|
|
||||||
template <typename B>
|
template <typename B>
|
||||||
struct ScopedBlockTraits {
|
struct ScopedBlockTraits {
|
||||||
@@ -53,12 +54,12 @@ struct ScopedBlockTraits {
|
|||||||
static void Release(B block) { Block_release(block); }
|
static void Release(B block) { Block_release(block); }
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace internal
|
} // namespace cef_internal
|
||||||
|
|
||||||
// ScopedBlock<> is patterned after ScopedCFTypeRef<>, but uses Block_copy() and
|
// ScopedBlock<> is patterned after ScopedCFTypeRef<>, but uses Block_copy() and
|
||||||
// Block_release() instead of CFRetain() and CFRelease().
|
// Block_release() instead of CFRetain() and CFRelease().
|
||||||
template <typename B>
|
template <typename B>
|
||||||
using ScopedBlock = ScopedTypeRef<B, internal::ScopedBlockTraits<B>>;
|
using ScopedBlock = ScopedTypeRef<B, cef_internal::ScopedBlockTraits<B>>;
|
||||||
|
|
||||||
} // namespace mac
|
} // namespace mac
|
||||||
} // namespace base
|
} // namespace base
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=c487e5fd787b1be8224a8981839e0cfdd0ed74f3$
|
// $hash=0ac3c8ca887778a840c65108d56038d4d776e073$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_ACCESSIBILITY_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_ACCESSIBILITY_HANDLER_CAPI_H_
|
||||||
@@ -47,27 +47,27 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to receive accessibility notification when
|
/// Implement this structure to receive accessibility notification when
|
||||||
// accessibility events have been registered. The functions of this structure
|
/// accessibility events have been registered. The functions of this structure
|
||||||
// will be called on the UI thread.
|
/// will be called on the UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_accessibility_handler_t {
|
typedef struct _cef_accessibility_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called after renderer process sends accessibility tree changes to the
|
/// Called after renderer process sends accessibility tree changes to the
|
||||||
// browser process.
|
/// browser process.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_accessibility_tree_change)(
|
void(CEF_CALLBACK* on_accessibility_tree_change)(
|
||||||
struct _cef_accessibility_handler_t* self,
|
struct _cef_accessibility_handler_t* self,
|
||||||
struct _cef_value_t* value);
|
struct _cef_value_t* value);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called after renderer process sends accessibility location changes to the
|
/// Called after renderer process sends accessibility location changes to the
|
||||||
// browser process.
|
/// browser process.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_accessibility_location_change)(
|
void(CEF_CALLBACK* on_accessibility_location_change)(
|
||||||
struct _cef_accessibility_handler_t* self,
|
struct _cef_accessibility_handler_t* self,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=a4b63e6e7942e3a3961b4f7141a963980178ae6f$
|
// $hash=9b523fbf312a8a0cb1c743a3c8aca7bc9cc22bbc$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_APP_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_APP_CAPI_H_
|
||||||
@@ -54,25 +54,26 @@ extern "C" {
|
|||||||
struct _cef_app_t;
|
struct _cef_app_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to provide handler implementations. Methods will be
|
/// Implement this structure to provide handler implementations. Methods will be
|
||||||
// called by the process and/or thread indicated.
|
/// called by the process and/or thread indicated.
|
||||||
///
|
///
|
||||||
typedef struct _cef_app_t {
|
typedef struct _cef_app_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Provides an opportunity to view and/or modify command-line arguments before
|
/// Provides an opportunity to view and/or modify command-line arguments
|
||||||
// processing by CEF and Chromium. The |process_type| value will be NULL for
|
/// before processing by CEF and Chromium. The |process_type| value will be
|
||||||
// the browser process. Do not keep a reference to the cef_command_line_t
|
/// NULL for the browser process. Do not keep a reference to the
|
||||||
// object passed to this function. The CefSettings.command_line_args_disabled
|
/// cef_command_line_t object passed to this function. The
|
||||||
// value can be used to start with an NULL command-line object. Any values
|
/// cef_settings_t.command_line_args_disabled value can be used to start with
|
||||||
// specified in CefSettings that equate to command-line arguments will be set
|
/// an NULL command-line object. Any values specified in CefSettings that
|
||||||
// before this function is called. Be cautious when using this function to
|
/// equate to command-line arguments will be set before this function is
|
||||||
// modify command-line arguments for non-browser processes as this may result
|
/// called. Be cautious when using this function to modify command-line
|
||||||
// in undefined behavior including crashes.
|
/// arguments for non-browser processes as this may result in undefined
|
||||||
|
/// behavior including crashes.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_before_command_line_processing)(
|
void(CEF_CALLBACK* on_before_command_line_processing)(
|
||||||
struct _cef_app_t* self,
|
struct _cef_app_t* self,
|
||||||
@@ -80,119 +81,107 @@ typedef struct _cef_app_t {
|
|||||||
struct _cef_command_line_t* command_line);
|
struct _cef_command_line_t* command_line);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Provides an opportunity to register custom schemes. Do not keep a reference
|
/// Provides an opportunity to register custom schemes. Do not keep a
|
||||||
// to the |registrar| object. This function is called on the main thread for
|
/// reference to the |registrar| object. This function is called on the main
|
||||||
// each process and the registered schemes should be the same across all
|
/// thread for each process and the registered schemes should be the same
|
||||||
// processes.
|
/// across all processes.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_register_custom_schemes)(
|
void(CEF_CALLBACK* on_register_custom_schemes)(
|
||||||
struct _cef_app_t* self,
|
struct _cef_app_t* self,
|
||||||
struct _cef_scheme_registrar_t* registrar);
|
struct _cef_scheme_registrar_t* registrar);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for resource bundle events. If
|
/// Return the handler for resource bundle events. If
|
||||||
// CefSettings.pack_loading_disabled is true (1) a handler must be returned.
|
/// cef_settings_t.pack_loading_disabled is true (1) a handler must be
|
||||||
// If no handler is returned resources will be loaded from pack files. This
|
/// returned. If no handler is returned resources will be loaded from pack
|
||||||
// function is called by the browser and render processes on multiple threads.
|
/// files. This function is called by the browser and render processes on
|
||||||
|
/// multiple threads.
|
||||||
///
|
///
|
||||||
struct _cef_resource_bundle_handler_t*(
|
struct _cef_resource_bundle_handler_t*(
|
||||||
CEF_CALLBACK* get_resource_bundle_handler)(struct _cef_app_t* self);
|
CEF_CALLBACK* get_resource_bundle_handler)(struct _cef_app_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for functionality specific to the browser process. This
|
/// Return the handler for functionality specific to the browser process. This
|
||||||
// function is called on multiple threads in the browser process.
|
/// function is called on multiple threads in the browser process.
|
||||||
///
|
///
|
||||||
struct _cef_browser_process_handler_t*(
|
struct _cef_browser_process_handler_t*(
|
||||||
CEF_CALLBACK* get_browser_process_handler)(struct _cef_app_t* self);
|
CEF_CALLBACK* get_browser_process_handler)(struct _cef_app_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for functionality specific to the render process. This
|
/// Return the handler for functionality specific to the render process. This
|
||||||
// function is called on the render process main thread.
|
/// function is called on the render process main thread.
|
||||||
///
|
///
|
||||||
struct _cef_render_process_handler_t*(
|
struct _cef_render_process_handler_t*(
|
||||||
CEF_CALLBACK* get_render_process_handler)(struct _cef_app_t* self);
|
CEF_CALLBACK* get_render_process_handler)(struct _cef_app_t* self);
|
||||||
} cef_app_t;
|
} cef_app_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// This function should be called from the application entry point function to
|
/// This function should be called from the application entry point function to
|
||||||
// execute a secondary process. It can be used to run secondary processes from
|
/// execute a secondary process. It can be used to run secondary processes from
|
||||||
// the browser client executable (default behavior) or from a separate
|
/// the browser client executable (default behavior) or from a separate
|
||||||
// executable specified by the CefSettings.browser_subprocess_path value. If
|
/// executable specified by the cef_settings_t.browser_subprocess_path value. If
|
||||||
// called for the browser process (identified by no "type" command-line value)
|
/// called for the browser process (identified by no "type" command-line value)
|
||||||
// it will return immediately with a value of -1. If called for a recognized
|
/// it will return immediately with a value of -1. If called for a recognized
|
||||||
// secondary process it will block until the process should exit and then return
|
/// secondary process it will block until the process should exit and then
|
||||||
// the process exit code. The |application| parameter may be NULL. The
|
/// return the process exit code. The |application| parameter may be NULL. The
|
||||||
// |windows_sandbox_info| parameter is only used on Windows and may be NULL (see
|
/// |windows_sandbox_info| parameter is only used on Windows and may be NULL
|
||||||
// cef_sandbox_win.h for details).
|
/// (see cef_sandbox_win.h for details).
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_execute_process(const struct _cef_main_args_t* args,
|
CEF_EXPORT int cef_execute_process(const cef_main_args_t* args,
|
||||||
cef_app_t* application,
|
cef_app_t* application,
|
||||||
void* windows_sandbox_info);
|
void* windows_sandbox_info);
|
||||||
|
|
||||||
///
|
///
|
||||||
// This function should be called on the main application thread to initialize
|
/// This function should be called on the main application thread to initialize
|
||||||
// the CEF browser process. The |application| parameter may be NULL. A return
|
/// 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
|
/// value of true (1) indicates that it succeeded and false (0) indicates that
|
||||||
// failed. The |windows_sandbox_info| parameter is only used on Windows and may
|
/// it failed. The |windows_sandbox_info| parameter is only used on Windows and
|
||||||
// be NULL (see cef_sandbox_win.h for details).
|
/// may be NULL (see cef_sandbox_win.h for details).
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_initialize(const struct _cef_main_args_t* args,
|
CEF_EXPORT int cef_initialize(const cef_main_args_t* args,
|
||||||
const struct _cef_settings_t* settings,
|
const struct _cef_settings_t* settings,
|
||||||
cef_app_t* application,
|
cef_app_t* application,
|
||||||
void* windows_sandbox_info);
|
void* windows_sandbox_info);
|
||||||
|
|
||||||
///
|
///
|
||||||
// This function should be called on the main application thread to shut down
|
/// 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.
|
||||||
///
|
///
|
||||||
CEF_EXPORT void cef_shutdown();
|
CEF_EXPORT void cef_shutdown(void);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Perform a single iteration of CEF message loop processing. This function is
|
/// Perform a single iteration of CEF message loop processing. This function is
|
||||||
// provided for cases where the CEF message loop must be integrated into an
|
/// provided for cases where the CEF message loop must be integrated into an
|
||||||
// existing application message loop. Use of this function is not recommended
|
/// existing application message loop. Use of this function is not recommended
|
||||||
// for most users; use either the cef_run_message_loop() function or
|
/// for most users; use either the cef_run_message_loop() function or
|
||||||
// CefSettings.multi_threaded_message_loop if possible. When using this function
|
/// cef_settings_t.multi_threaded_message_loop if possible. When using this
|
||||||
// care must be taken to balance performance against excessive CPU usage. It is
|
/// function care must be taken to balance performance against excessive CPU
|
||||||
// recommended to enable the CefSettings.external_message_pump option when using
|
/// usage. It is recommended to enable the cef_settings_t.external_message_pump
|
||||||
// this function so that
|
/// option when using this function so that
|
||||||
// cef_browser_process_handler_t::on_schedule_message_pump_work() callbacks can
|
/// cef_browser_process_handler_t::on_schedule_message_pump_work() callbacks can
|
||||||
// facilitate the scheduling process. This function should only be called on the
|
/// facilitate the scheduling process. This function should only be called on
|
||||||
// main application thread and only if cef_initialize() is called with a
|
/// the main application thread and only if cef_initialize() is called with a
|
||||||
// CefSettings.multi_threaded_message_loop value of false (0). This function
|
/// cef_settings_t.multi_threaded_message_loop value of false (0). This function
|
||||||
// will not block.
|
/// will not block.
|
||||||
///
|
///
|
||||||
CEF_EXPORT void cef_do_message_loop_work();
|
CEF_EXPORT void cef_do_message_loop_work(void);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Run the CEF message loop. Use this function instead of an application-
|
/// Run the CEF message loop. Use this function instead of an application-
|
||||||
// provided message loop to get the best balance between performance and CPU
|
/// provided message loop to get the best balance between performance and CPU
|
||||||
// usage. This function should only be called on the main application thread and
|
/// usage. This function should only be called on the main application thread
|
||||||
// only if cef_initialize() is called with a
|
/// and only if cef_initialize() is called with a
|
||||||
// CefSettings.multi_threaded_message_loop value of false (0). This function
|
/// cef_settings_t.multi_threaded_message_loop value of false (0). This function
|
||||||
// will block until a quit message is received by the system.
|
/// will block until a quit message is received by the system.
|
||||||
///
|
///
|
||||||
CEF_EXPORT void cef_run_message_loop();
|
CEF_EXPORT void cef_run_message_loop(void);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Quit the CEF message loop that was started by calling cef_run_message_loop().
|
/// Quit the CEF message loop that was started by calling
|
||||||
// This function should only be called on the main application thread and only
|
/// cef_run_message_loop(). This function should only be called on the main
|
||||||
// if cef_run_message_loop() was used.
|
/// application thread and only if cef_run_message_loop() was used.
|
||||||
///
|
///
|
||||||
CEF_EXPORT void cef_quit_message_loop();
|
CEF_EXPORT void cef_quit_message_loop(void);
|
||||||
|
|
||||||
///
|
|
||||||
// Set to true (1) before calling Windows APIs like TrackPopupMenu that enter a
|
|
||||||
// modal message loop. Set to false (0) after exiting the modal message loop.
|
|
||||||
///
|
|
||||||
CEF_EXPORT void cef_set_osmodal_loop(int osModalLoop);
|
|
||||||
|
|
||||||
///
|
|
||||||
// Call during process startup to enable High-DPI support on Windows 7 or newer.
|
|
||||||
// Older versions of Windows should be left DPI-unaware because they do not
|
|
||||||
// support DirectWrite and GDI fonts are kerned very badly.
|
|
||||||
///
|
|
||||||
CEF_EXPORT void cef_enable_highdpi_support();
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=7a483ed552ecca4f1aaa03800d366beca1ea2dee$
|
// $hash=936274d5539f225ff7adb7e0acba517fd9a8e2f8$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_AUDIO_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_AUDIO_HANDLER_CAPI_H_
|
||||||
@@ -48,30 +48,30 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle audio events.
|
/// Implement this structure to handle audio events.
|
||||||
///
|
///
|
||||||
typedef struct _cef_audio_handler_t {
|
typedef struct _cef_audio_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the UI thread to allow configuration of audio stream parameters.
|
/// Called on the UI thread to allow configuration of audio stream parameters.
|
||||||
// Return true (1) to proceed with audio stream capture, or false (0) to
|
/// Return true (1) to proceed with audio stream capture, or false (0) to
|
||||||
// cancel it. All members of |params| can optionally be configured here, but
|
/// cancel it. All members of |params| can optionally be configured here, but
|
||||||
// they are also pre-filled with some sensible defaults.
|
/// they are also pre-filled with some sensible defaults.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_audio_parameters)(struct _cef_audio_handler_t* self,
|
int(CEF_CALLBACK* get_audio_parameters)(struct _cef_audio_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
cef_audio_parameters_t* params);
|
cef_audio_parameters_t* params);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on a browser audio capture thread when the browser starts streaming
|
/// Called on a browser audio capture thread when the browser starts streaming
|
||||||
// audio. OnAudioSteamStopped will always be called after
|
/// audio. OnAudioStreamStopped will always be called after
|
||||||
// OnAudioStreamStarted; both functions may be called multiple times for the
|
/// OnAudioStreamStarted; both functions may be called multiple times for the
|
||||||
// same browser. |params| contains the audio parameters like sample rate and
|
/// same browser. |params| contains the audio parameters like sample rate and
|
||||||
// channel layout. |channels| is the number of channels.
|
/// channel layout. |channels| is the number of channels.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_audio_stream_started)(
|
void(CEF_CALLBACK* on_audio_stream_started)(
|
||||||
struct _cef_audio_handler_t* self,
|
struct _cef_audio_handler_t* self,
|
||||||
@@ -80,14 +80,14 @@ typedef struct _cef_audio_handler_t {
|
|||||||
int channels);
|
int channels);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the audio stream thread when a PCM packet is received for the
|
/// Called on the audio stream thread when a PCM packet is received for the
|
||||||
// stream. |data| is an array representing the raw PCM data as a floating
|
/// stream. |data| is an array representing the raw PCM data as a floating
|
||||||
// point type, i.e. 4-byte value(s). |frames| is the number of frames in the
|
/// point type, i.e. 4-byte value(s). |frames| is the number of frames in the
|
||||||
// PCM packet. |pts| is the presentation timestamp (in milliseconds since the
|
/// PCM packet. |pts| is the presentation timestamp (in milliseconds since the
|
||||||
// Unix Epoch) and represents the time at which the decompressed packet should
|
/// Unix Epoch) and represents the time at which the decompressed packet
|
||||||
// be presented to the user. Based on |frames| and the |channel_layout| value
|
/// should be presented to the user. Based on |frames| and the
|
||||||
// passed to OnAudioStreamStarted you can calculate the size of the |data|
|
/// |channel_layout| value passed to OnAudioStreamStarted you can calculate
|
||||||
// array in bytes.
|
/// the size of the |data| array in bytes.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_audio_stream_packet)(struct _cef_audio_handler_t* self,
|
void(CEF_CALLBACK* on_audio_stream_packet)(struct _cef_audio_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -96,18 +96,18 @@ typedef struct _cef_audio_handler_t {
|
|||||||
int64 pts);
|
int64 pts);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the UI thread when the stream has stopped. OnAudioSteamStopped
|
/// Called on the UI thread when the stream has stopped. OnAudioSteamStopped
|
||||||
// will always be called after OnAudioStreamStarted; both functions may be
|
/// will always be called after OnAudioStreamStarted; both functions may be
|
||||||
// called multiple times for the same stream.
|
/// called multiple times for the same stream.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_audio_stream_stopped)(struct _cef_audio_handler_t* self,
|
void(CEF_CALLBACK* on_audio_stream_stopped)(struct _cef_audio_handler_t* self,
|
||||||
struct _cef_browser_t* browser);
|
struct _cef_browser_t* browser);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the UI or audio stream thread when an error occurred. During the
|
/// Called on the UI or audio stream thread when an error occurred. During the
|
||||||
// stream creation phase this callback will be called on the UI thread while
|
/// stream creation phase this callback will be called on the UI thread while
|
||||||
// in the capturing phase it will be called on the audio stream thread. The
|
/// in the capturing phase it will be called on the audio stream thread. The
|
||||||
// stream will be stopped immediately.
|
/// stream will be stopped immediately.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_audio_stream_error)(struct _cef_audio_handler_t* self,
|
void(CEF_CALLBACK* on_audio_stream_error)(struct _cef_audio_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=2b9508a328ed0218e2c576af455f8d76e5978545$
|
// $hash=4b9c31ef9a23f899c6d8cd3da49934a41f1bd231$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_AUTH_CALLBACK_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_AUTH_CALLBACK_CAPI_H_
|
||||||
@@ -47,24 +47,24 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback structure used for asynchronous continuation of authentication
|
/// Callback structure used for asynchronous continuation of authentication
|
||||||
// requests.
|
/// requests.
|
||||||
///
|
///
|
||||||
typedef struct _cef_auth_callback_t {
|
typedef struct _cef_auth_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Continue the authentication request.
|
/// Continue the authentication request.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cont)(struct _cef_auth_callback_t* self,
|
void(CEF_CALLBACK* cont)(struct _cef_auth_callback_t* self,
|
||||||
const cef_string_t* username,
|
const cef_string_t* username,
|
||||||
const cef_string_t* password);
|
const cef_string_t* password);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Cancel the authentication request.
|
/// Cancel the authentication request.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cancel)(struct _cef_auth_callback_t* self);
|
void(CEF_CALLBACK* cancel)(struct _cef_auth_callback_t* self);
|
||||||
} cef_auth_callback_t;
|
} cef_auth_callback_t;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=ade537f836add7fe0b5fd94ceba26d678abb3e43$
|
// $hash=4ef8b73a5218531b370fdd76c23153a1f83b7f7b$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_PROCESS_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_PROCESS_HANDLER_CAPI_H_
|
||||||
@@ -43,6 +43,7 @@
|
|||||||
#include "include/capi/cef_base_capi.h"
|
#include "include/capi/cef_base_capi.h"
|
||||||
#include "include/capi/cef_client_capi.h"
|
#include "include/capi/cef_client_capi.h"
|
||||||
#include "include/capi/cef_command_line_capi.h"
|
#include "include/capi/cef_command_line_capi.h"
|
||||||
|
#include "include/capi/cef_preference_capi.h"
|
||||||
#include "include/capi/cef_values_capi.h"
|
#include "include/capi/cef_values_capi.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -50,57 +51,84 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used to implement browser process callbacks. The functions of this
|
/// Structure used to implement browser process callbacks. The functions of this
|
||||||
// structure will be called on the browser process main thread unless otherwise
|
/// structure will be called on the browser process main thread unless otherwise
|
||||||
// indicated.
|
/// indicated.
|
||||||
///
|
///
|
||||||
typedef struct _cef_browser_process_handler_t {
|
typedef struct _cef_browser_process_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the browser process UI thread immediately after the CEF context
|
/// Provides an opportunity to register custom preferences prior to global and
|
||||||
// has been initialized.
|
/// request context initialization.
|
||||||
|
///
|
||||||
|
/// 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.
|
||||||
|
///
|
||||||
|
/// If |type| is CEF_PREFERENCES_TYPE_REQUEST_CONTEXT the preferences can be
|
||||||
|
/// accessed via the cef_request_context_t after
|
||||||
|
/// cef_request_context_handler_t::OnRequestContextInitialized is called.
|
||||||
|
/// 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.
|
||||||
|
///
|
||||||
|
/// Do not keep a reference to the |registrar| object. This function is called
|
||||||
|
/// on the browser process UI thread.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* on_register_custom_preferences)(
|
||||||
|
struct _cef_browser_process_handler_t* self,
|
||||||
|
cef_preferences_type_t type,
|
||||||
|
struct _cef_preference_registrar_t* registrar);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called on the browser process UI thread immediately after the CEF context
|
||||||
|
/// has been initialized.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_context_initialized)(
|
void(CEF_CALLBACK* on_context_initialized)(
|
||||||
struct _cef_browser_process_handler_t* self);
|
struct _cef_browser_process_handler_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called before a child process is launched. Will be called on the browser
|
/// Called before a child process is launched. Will be called on the browser
|
||||||
// process UI thread when launching a render process and on the browser
|
/// process UI thread when launching a render process and on the browser
|
||||||
// process IO thread when launching a GPU or plugin process. Provides an
|
/// process IO thread when launching a GPU process. Provides an opportunity to
|
||||||
// opportunity to modify the child process command line. Do not keep a
|
/// modify the child process command line. Do not keep a reference to
|
||||||
// reference to |command_line| outside of this function.
|
/// |command_line| outside of this function.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_before_child_process_launch)(
|
void(CEF_CALLBACK* on_before_child_process_launch)(
|
||||||
struct _cef_browser_process_handler_t* self,
|
struct _cef_browser_process_handler_t* self,
|
||||||
struct _cef_command_line_t* command_line);
|
struct _cef_command_line_t* command_line);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called from any thread when work has been scheduled for the browser process
|
/// Called from any thread when work has been scheduled for the browser
|
||||||
// main (UI) thread. This callback is used in combination with CefSettings.
|
/// process main (UI) thread. This callback is used in combination with
|
||||||
// external_message_pump and cef_do_message_loop_work() in cases where the CEF
|
/// cef_settings_t.external_message_pump and cef_do_message_loop_work() in
|
||||||
// message loop must be integrated into an existing application message loop
|
/// cases where the CEF message loop must be integrated into an existing
|
||||||
// (see additional comments and warnings on CefDoMessageLoopWork). This
|
/// application message loop (see additional comments and warnings on
|
||||||
// callback should schedule a cef_do_message_loop_work() call to happen on the
|
/// CefDoMessageLoopWork). This callback should schedule a
|
||||||
// main (UI) thread. |delay_ms| is the requested delay in milliseconds. If
|
/// cef_do_message_loop_work() call to happen on the main (UI) thread.
|
||||||
// |delay_ms| is <= 0 then the call should happen reasonably soon. If
|
/// |delay_ms| is the requested delay in milliseconds. If |delay_ms| is <= 0
|
||||||
// |delay_ms| is > 0 then the call should be scheduled to happen after the
|
/// then the call should happen reasonably soon. If |delay_ms| is > 0 then the
|
||||||
// specified delay and any currently pending scheduled call should be
|
/// call should be scheduled to happen after the specified delay and any
|
||||||
// cancelled.
|
/// currently pending scheduled call should be cancelled.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_schedule_message_pump_work)(
|
void(CEF_CALLBACK* on_schedule_message_pump_work)(
|
||||||
struct _cef_browser_process_handler_t* self,
|
struct _cef_browser_process_handler_t* self,
|
||||||
int64 delay_ms);
|
int64 delay_ms);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the default client for use with a newly created browser window. If
|
/// 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
|
/// null is returned the browser will be unmanaged (no callbacks will be
|
||||||
// executed for that browser) and application shutdown will be blocked until
|
/// executed for that browser) and application shutdown will be blocked until
|
||||||
// the browser window is closed manually. This function is currently only used
|
/// the browser window is closed manually. This function is currently only
|
||||||
// with the chrome runtime.
|
/// used with the chrome runtime.
|
||||||
///
|
///
|
||||||
struct _cef_client_t*(CEF_CALLBACK* get_default_client)(
|
struct _cef_client_t*(CEF_CALLBACK* get_default_client)(
|
||||||
struct _cef_browser_process_handler_t* self);
|
struct _cef_browser_process_handler_t* self);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=cd8c183355a6808abd763ecc0396b5da6c15b3f9$
|
// $hash=4fd98ff68ecb42677c3344b75e26d4787161b0d2$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_CALLBACK_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_CALLBACK_CAPI_H_
|
||||||
@@ -47,36 +47,36 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Generic callback structure used for asynchronous continuation.
|
/// Generic callback structure used for asynchronous continuation.
|
||||||
///
|
///
|
||||||
typedef struct _cef_callback_t {
|
typedef struct _cef_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Continue processing.
|
/// Continue processing.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cont)(struct _cef_callback_t* self);
|
void(CEF_CALLBACK* cont)(struct _cef_callback_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Cancel processing.
|
/// Cancel processing.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cancel)(struct _cef_callback_t* self);
|
void(CEF_CALLBACK* cancel)(struct _cef_callback_t* self);
|
||||||
} cef_callback_t;
|
} cef_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Generic callback structure used for asynchronous completion.
|
/// Generic callback structure used for asynchronous completion.
|
||||||
///
|
///
|
||||||
typedef struct _cef_completion_callback_t {
|
typedef struct _cef_completion_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Method that will be called once the task is complete.
|
/// Method that will be called once the task is complete.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_complete)(struct _cef_completion_callback_t* self);
|
void(CEF_CALLBACK* on_complete)(struct _cef_completion_callback_t* self);
|
||||||
} cef_completion_callback_t;
|
} cef_completion_callback_t;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=845a1d1dda63a06f4ae33ed39acfd2599b46a885$
|
// $hash=eb9dcb574252483dfab12834af93ba14138d4089$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_CLIENT_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_CLIENT_CAPI_H_
|
||||||
@@ -42,6 +42,7 @@
|
|||||||
|
|
||||||
#include "include/capi/cef_audio_handler_capi.h"
|
#include "include/capi/cef_audio_handler_capi.h"
|
||||||
#include "include/capi/cef_base_capi.h"
|
#include "include/capi/cef_base_capi.h"
|
||||||
|
#include "include/capi/cef_command_handler_capi.h"
|
||||||
#include "include/capi/cef_context_menu_handler_capi.h"
|
#include "include/capi/cef_context_menu_handler_capi.h"
|
||||||
#include "include/capi/cef_dialog_handler_capi.h"
|
#include "include/capi/cef_dialog_handler_capi.h"
|
||||||
#include "include/capi/cef_display_handler_capi.h"
|
#include "include/capi/cef_display_handler_capi.h"
|
||||||
@@ -54,6 +55,7 @@
|
|||||||
#include "include/capi/cef_keyboard_handler_capi.h"
|
#include "include/capi/cef_keyboard_handler_capi.h"
|
||||||
#include "include/capi/cef_life_span_handler_capi.h"
|
#include "include/capi/cef_life_span_handler_capi.h"
|
||||||
#include "include/capi/cef_load_handler_capi.h"
|
#include "include/capi/cef_load_handler_capi.h"
|
||||||
|
#include "include/capi/cef_permission_handler_capi.h"
|
||||||
#include "include/capi/cef_print_handler_capi.h"
|
#include "include/capi/cef_print_handler_capi.h"
|
||||||
#include "include/capi/cef_process_message_capi.h"
|
#include "include/capi/cef_process_message_capi.h"
|
||||||
#include "include/capi/cef_render_handler_capi.h"
|
#include "include/capi/cef_render_handler_capi.h"
|
||||||
@@ -64,121 +66,134 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to provide handler implementations.
|
/// Implement this structure to provide handler implementations.
|
||||||
///
|
///
|
||||||
typedef struct _cef_client_t {
|
typedef struct _cef_client_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for audio rendering events.
|
/// Return the handler for audio rendering events.
|
||||||
///
|
///
|
||||||
struct _cef_audio_handler_t*(CEF_CALLBACK* get_audio_handler)(
|
struct _cef_audio_handler_t*(CEF_CALLBACK* get_audio_handler)(
|
||||||
struct _cef_client_t* self);
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for context menus. If no handler is provided the default
|
/// Return the handler for commands. If no handler is provided the default
|
||||||
// implementation will be used.
|
/// implementation will be used.
|
||||||
|
///
|
||||||
|
struct _cef_command_handler_t*(CEF_CALLBACK* get_command_handler)(
|
||||||
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Return the handler for context menus. If no handler is provided the
|
||||||
|
/// default implementation will be used.
|
||||||
///
|
///
|
||||||
struct _cef_context_menu_handler_t*(CEF_CALLBACK* get_context_menu_handler)(
|
struct _cef_context_menu_handler_t*(CEF_CALLBACK* get_context_menu_handler)(
|
||||||
struct _cef_client_t* self);
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for dialogs. If no handler is provided the default
|
/// Return the handler for dialogs. If no handler is provided the default
|
||||||
// implementation will be used.
|
/// implementation will be used.
|
||||||
///
|
///
|
||||||
struct _cef_dialog_handler_t*(CEF_CALLBACK* get_dialog_handler)(
|
struct _cef_dialog_handler_t*(CEF_CALLBACK* get_dialog_handler)(
|
||||||
struct _cef_client_t* self);
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for browser display state events.
|
/// Return the handler for browser display state events.
|
||||||
///
|
///
|
||||||
struct _cef_display_handler_t*(CEF_CALLBACK* get_display_handler)(
|
struct _cef_display_handler_t*(CEF_CALLBACK* get_display_handler)(
|
||||||
struct _cef_client_t* self);
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for download events. If no handler is returned downloads
|
/// Return the handler for download events. If no handler is returned
|
||||||
// will not be allowed.
|
/// downloads will not be allowed.
|
||||||
///
|
///
|
||||||
struct _cef_download_handler_t*(CEF_CALLBACK* get_download_handler)(
|
struct _cef_download_handler_t*(CEF_CALLBACK* get_download_handler)(
|
||||||
struct _cef_client_t* self);
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for drag events.
|
/// Return the handler for drag events.
|
||||||
///
|
///
|
||||||
struct _cef_drag_handler_t*(CEF_CALLBACK* get_drag_handler)(
|
struct _cef_drag_handler_t*(CEF_CALLBACK* get_drag_handler)(
|
||||||
struct _cef_client_t* self);
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for find result events.
|
/// Return the handler for find result events.
|
||||||
///
|
///
|
||||||
struct _cef_find_handler_t*(CEF_CALLBACK* get_find_handler)(
|
struct _cef_find_handler_t*(CEF_CALLBACK* get_find_handler)(
|
||||||
struct _cef_client_t* self);
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for focus events.
|
/// Return the handler for focus events.
|
||||||
///
|
///
|
||||||
struct _cef_focus_handler_t*(CEF_CALLBACK* get_focus_handler)(
|
struct _cef_focus_handler_t*(CEF_CALLBACK* get_focus_handler)(
|
||||||
struct _cef_client_t* self);
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for events related to cef_frame_t lifespan. This
|
/// Return the handler for events related to cef_frame_t lifespan. This
|
||||||
// function will be called once during cef_browser_t creation and the result
|
/// function will be called once during cef_browser_t creation and the result
|
||||||
// will be cached for performance reasons.
|
/// will be cached for performance reasons.
|
||||||
///
|
///
|
||||||
struct _cef_frame_handler_t*(CEF_CALLBACK* get_frame_handler)(
|
struct _cef_frame_handler_t*(CEF_CALLBACK* get_frame_handler)(
|
||||||
struct _cef_client_t* self);
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for JavaScript dialogs. If no handler is provided the
|
/// Return the handler for permission requests.
|
||||||
// default implementation will be used.
|
///
|
||||||
|
struct _cef_permission_handler_t*(CEF_CALLBACK* get_permission_handler)(
|
||||||
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Return the handler for JavaScript dialogs. If no handler is provided the
|
||||||
|
/// default implementation will be used.
|
||||||
///
|
///
|
||||||
struct _cef_jsdialog_handler_t*(CEF_CALLBACK* get_jsdialog_handler)(
|
struct _cef_jsdialog_handler_t*(CEF_CALLBACK* get_jsdialog_handler)(
|
||||||
struct _cef_client_t* self);
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for keyboard events.
|
/// Return the handler for keyboard events.
|
||||||
///
|
///
|
||||||
struct _cef_keyboard_handler_t*(CEF_CALLBACK* get_keyboard_handler)(
|
struct _cef_keyboard_handler_t*(CEF_CALLBACK* get_keyboard_handler)(
|
||||||
struct _cef_client_t* self);
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for browser life span events.
|
/// Return the handler for browser life span events.
|
||||||
///
|
///
|
||||||
struct _cef_life_span_handler_t*(CEF_CALLBACK* get_life_span_handler)(
|
struct _cef_life_span_handler_t*(CEF_CALLBACK* get_life_span_handler)(
|
||||||
struct _cef_client_t* self);
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for browser load status events.
|
/// Return the handler for browser load status events.
|
||||||
///
|
///
|
||||||
struct _cef_load_handler_t*(CEF_CALLBACK* get_load_handler)(
|
struct _cef_load_handler_t*(CEF_CALLBACK* get_load_handler)(
|
||||||
struct _cef_client_t* self);
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for printing on Linux. If a print handler is not
|
/// Return the handler for printing on Linux. If a print handler is not
|
||||||
// provided then printing will not be supported on the Linux platform.
|
/// provided then printing will not be supported on the Linux platform.
|
||||||
///
|
///
|
||||||
struct _cef_print_handler_t*(CEF_CALLBACK* get_print_handler)(
|
struct _cef_print_handler_t*(CEF_CALLBACK* get_print_handler)(
|
||||||
struct _cef_client_t* self);
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for off-screen rendering events.
|
/// Return the handler for off-screen rendering events.
|
||||||
///
|
///
|
||||||
struct _cef_render_handler_t*(CEF_CALLBACK* get_render_handler)(
|
struct _cef_render_handler_t*(CEF_CALLBACK* get_render_handler)(
|
||||||
struct _cef_client_t* self);
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for browser request events.
|
/// Return the handler for browser request events.
|
||||||
///
|
///
|
||||||
struct _cef_request_handler_t*(CEF_CALLBACK* get_request_handler)(
|
struct _cef_request_handler_t*(CEF_CALLBACK* get_request_handler)(
|
||||||
struct _cef_client_t* self);
|
struct _cef_client_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when a new message is received from a different process. Return true
|
/// Called when a new message is received from a different process. Return
|
||||||
// (1) if the message was handled or false (0) otherwise. It is safe to keep
|
/// true (1) if the message was handled or false (0) otherwise. It is safe to
|
||||||
// a reference to |message| outside of this callback.
|
/// keep a reference to |message| outside of this callback.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_process_message_received)(
|
int(CEF_CALLBACK* on_process_message_received)(
|
||||||
struct _cef_client_t* self,
|
struct _cef_client_t* self,
|
||||||
|
|||||||
80
include/capi/cef_command_handler_capi.h
Normal file
80
include/capi/cef_command_handler_capi.h
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
// 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=46817ef557307a55a9b7138134c4f5c32562f2d7$
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef CEF_INCLUDE_CAPI_CEF_COMMAND_HANDLER_CAPI_H_
|
||||||
|
#define CEF_INCLUDE_CAPI_CEF_COMMAND_HANDLER_CAPI_H_
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "include/capi/cef_base_capi.h"
|
||||||
|
#include "include/capi/cef_browser_capi.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Implement this structure to handle events related to commands. The functions
|
||||||
|
/// of this structure will be called on the UI thread.
|
||||||
|
///
|
||||||
|
typedef struct _cef_command_handler_t {
|
||||||
|
///
|
||||||
|
/// Base structure.
|
||||||
|
///
|
||||||
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called to execute a Chrome command triggered via menu selection or
|
||||||
|
/// keyboard shortcut. Values for |command_id| can be found in the
|
||||||
|
/// cef_command_ids.h file. |disposition| provides information about the
|
||||||
|
/// 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.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* on_chrome_command)(
|
||||||
|
struct _cef_command_handler_t* self,
|
||||||
|
struct _cef_browser_t* browser,
|
||||||
|
int command_id,
|
||||||
|
cef_window_open_disposition_t disposition);
|
||||||
|
} cef_command_handler_t;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // CEF_INCLUDE_CAPI_CEF_COMMAND_HANDLER_CAPI_H_
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=3ecebd6b30bb8fb837e062eacd021c1a1ff3620a$
|
// $hash=ac8fd3a7da20cff1fe2f20a75b045bf27c0312f2$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_COMMAND_LINE_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_COMMAND_LINE_CAPI_H_
|
||||||
@@ -47,104 +47,104 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used to create and/or parse command line arguments. Arguments with
|
/// Structure used to create and/or parse command line arguments. Arguments with
|
||||||
// '--', '-' and, on Windows, '/' prefixes are considered switches. Switches
|
/// "--", "-" and, on Windows, "/" prefixes are considered switches. Switches
|
||||||
// will always precede any arguments without switch prefixes. Switches can
|
/// will always precede any arguments without switch prefixes. Switches can
|
||||||
// optionally have a value specified using the '=' delimiter (e.g.
|
/// optionally have a value specified using the "=" delimiter (e.g.
|
||||||
// "-switch=value"). An argument of "--" will terminate switch parsing with all
|
/// "-switch=value"). An argument of "--" will terminate switch parsing with all
|
||||||
// subsequent tokens, regardless of prefix, being interpreted as non-switch
|
/// subsequent tokens, regardless of prefix, being interpreted as non-switch
|
||||||
// arguments. Switch names should be lowercase ASCII and will be converted to
|
/// arguments. Switch names should be lowercase ASCII and will be converted to
|
||||||
// such if necessary. Switch values will retain the original case and UTF8
|
/// such if necessary. Switch values will retain the original case and UTF8
|
||||||
// encoding. This structure can be used before cef_initialize() is called.
|
/// encoding. This structure can be used before cef_initialize() is called.
|
||||||
///
|
///
|
||||||
typedef struct _cef_command_line_t {
|
typedef struct _cef_command_line_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this object is valid. Do not call any other functions
|
/// Returns true (1) if this object is valid. Do not call any other functions
|
||||||
// if this function returns false (0).
|
/// if this function returns false (0).
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_valid)(struct _cef_command_line_t* self);
|
int(CEF_CALLBACK* is_valid)(struct _cef_command_line_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the values of this object are read-only. Some APIs may
|
/// Returns true (1) if the values of this object are read-only. Some APIs may
|
||||||
// expose read-only objects.
|
/// expose read-only objects.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_read_only)(struct _cef_command_line_t* self);
|
int(CEF_CALLBACK* is_read_only)(struct _cef_command_line_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns a writable copy of this object.
|
/// Returns a writable copy of this object.
|
||||||
///
|
///
|
||||||
struct _cef_command_line_t*(CEF_CALLBACK* copy)(
|
struct _cef_command_line_t*(CEF_CALLBACK* copy)(
|
||||||
struct _cef_command_line_t* self);
|
struct _cef_command_line_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Initialize the command line with the specified |argc| and |argv| values.
|
/// Initialize the command line with the specified |argc| and |argv| values.
|
||||||
// The first argument must be the name of the program. This function is only
|
/// The first argument must be the name of the program. This function is only
|
||||||
// supported on non-Windows platforms.
|
/// supported on non-Windows platforms.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* init_from_argv)(struct _cef_command_line_t* self,
|
void(CEF_CALLBACK* init_from_argv)(struct _cef_command_line_t* self,
|
||||||
int argc,
|
int argc,
|
||||||
const char* const* argv);
|
const char* const* argv);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Initialize the command line with the string returned by calling
|
/// Initialize the command line with the string returned by calling
|
||||||
// GetCommandLineW(). This function is only supported on Windows.
|
/// GetCommandLineW(). This function is only supported on Windows.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* init_from_string)(struct _cef_command_line_t* self,
|
void(CEF_CALLBACK* init_from_string)(struct _cef_command_line_t* self,
|
||||||
const cef_string_t* command_line);
|
const cef_string_t* command_line);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Reset the command-line switches and arguments but leave the program
|
/// Reset the command-line switches and arguments but leave the program
|
||||||
// component unchanged.
|
/// component unchanged.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* reset)(struct _cef_command_line_t* self);
|
void(CEF_CALLBACK* reset)(struct _cef_command_line_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Retrieve the original command line string as a vector of strings. The argv
|
/// Retrieve the original command line string as a vector of strings. The argv
|
||||||
// array: { program, [(--|-|/)switch[=value]]*, [--], [argument]* }
|
/// array: `{ program, [(--|-|/)switch[=value]]*, [--], [argument]* }`
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* get_argv)(struct _cef_command_line_t* self,
|
void(CEF_CALLBACK* get_argv)(struct _cef_command_line_t* self,
|
||||||
cef_string_list_t argv);
|
cef_string_list_t argv);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Constructs and returns the represented command line string. Use this
|
/// Constructs and returns the represented command line string. Use this
|
||||||
// function cautiously because quoting behavior is unclear.
|
/// function cautiously because quoting behavior is unclear.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_command_line_string)(
|
cef_string_userfree_t(CEF_CALLBACK* get_command_line_string)(
|
||||||
struct _cef_command_line_t* self);
|
struct _cef_command_line_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the program part of the command line string (the first item).
|
/// Get the program part of the command line string (the first item).
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_program)(
|
cef_string_userfree_t(CEF_CALLBACK* get_program)(
|
||||||
struct _cef_command_line_t* self);
|
struct _cef_command_line_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the program part of the command line string (the first item).
|
/// Set the program part of the command line string (the first item).
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_program)(struct _cef_command_line_t* self,
|
void(CEF_CALLBACK* set_program)(struct _cef_command_line_t* self,
|
||||||
const cef_string_t* program);
|
const cef_string_t* program);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the command line has switches.
|
/// Returns true (1) if the command line has switches.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* has_switches)(struct _cef_command_line_t* self);
|
int(CEF_CALLBACK* has_switches)(struct _cef_command_line_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the command line contains the given switch.
|
/// Returns true (1) if the command line contains the given switch.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* has_switch)(struct _cef_command_line_t* self,
|
int(CEF_CALLBACK* has_switch)(struct _cef_command_line_t* self,
|
||||||
const cef_string_t* name);
|
const cef_string_t* name);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the value associated with the given switch. If the switch has no
|
/// Returns the value associated with the given switch. If the switch has no
|
||||||
// value or isn't present this function returns the NULL string.
|
/// value or isn't present this function returns the NULL string.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_switch_value)(
|
cef_string_userfree_t(CEF_CALLBACK* get_switch_value)(
|
||||||
@@ -152,61 +152,61 @@ typedef struct _cef_command_line_t {
|
|||||||
const cef_string_t* name);
|
const cef_string_t* name);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the map of switch names and values. If a switch has no value an
|
/// Returns the map of switch names and values. If a switch has no value an
|
||||||
// NULL string is returned.
|
/// NULL string is returned.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* get_switches)(struct _cef_command_line_t* self,
|
void(CEF_CALLBACK* get_switches)(struct _cef_command_line_t* self,
|
||||||
cef_string_map_t switches);
|
cef_string_map_t switches);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Add a switch to the end of the command line. If the switch has no value
|
/// Add a switch to the end of the command line.
|
||||||
// pass an NULL value string.
|
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* append_switch)(struct _cef_command_line_t* self,
|
void(CEF_CALLBACK* append_switch)(struct _cef_command_line_t* self,
|
||||||
const cef_string_t* name);
|
const cef_string_t* name);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Add a switch with the specified value to the end of the command line.
|
/// Add a switch with the specified value to the end of the command line. If
|
||||||
|
/// the switch has no value pass an NULL value string.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* append_switch_with_value)(struct _cef_command_line_t* self,
|
void(CEF_CALLBACK* append_switch_with_value)(struct _cef_command_line_t* self,
|
||||||
const cef_string_t* name,
|
const cef_string_t* name,
|
||||||
const cef_string_t* value);
|
const cef_string_t* value);
|
||||||
|
|
||||||
///
|
///
|
||||||
// True if there are remaining command line arguments.
|
/// True if there are remaining command line arguments.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* has_arguments)(struct _cef_command_line_t* self);
|
int(CEF_CALLBACK* has_arguments)(struct _cef_command_line_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the remaining command line arguments.
|
/// Get the remaining command line arguments.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* get_arguments)(struct _cef_command_line_t* self,
|
void(CEF_CALLBACK* get_arguments)(struct _cef_command_line_t* self,
|
||||||
cef_string_list_t arguments);
|
cef_string_list_t arguments);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Add an argument to the end of the command line.
|
/// Add an argument to the end of the command line.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* append_argument)(struct _cef_command_line_t* self,
|
void(CEF_CALLBACK* append_argument)(struct _cef_command_line_t* self,
|
||||||
const cef_string_t* argument);
|
const cef_string_t* argument);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Insert a command before the current command. Common for debuggers, like
|
/// Insert a command before the current command. Common for debuggers, like
|
||||||
// "valgrind" or "gdb --args".
|
/// "valgrind" or "gdb --args".
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* prepend_wrapper)(struct _cef_command_line_t* self,
|
void(CEF_CALLBACK* prepend_wrapper)(struct _cef_command_line_t* self,
|
||||||
const cef_string_t* wrapper);
|
const cef_string_t* wrapper);
|
||||||
} cef_command_line_t;
|
} cef_command_line_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Create a new cef_command_line_t instance.
|
/// Create a new cef_command_line_t instance.
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_command_line_t* cef_command_line_create();
|
CEF_EXPORT cef_command_line_t* cef_command_line_create(void);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the singleton global cef_command_line_t object. The returned object
|
/// Returns the singleton global cef_command_line_t object. The returned object
|
||||||
// will be read-only.
|
/// will be read-only.
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_command_line_t* cef_command_line_get_global();
|
CEF_EXPORT cef_command_line_t* cef_command_line_get_global(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=175779df75a1405fcc5c337a09e6322c556698ba$
|
// $hash=c82f41d81f5afa5ed6995693e012c13d2a609f88$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_CONTEXT_MENU_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_CONTEXT_MENU_HANDLER_CAPI_H_
|
||||||
@@ -52,44 +52,67 @@ extern "C" {
|
|||||||
struct _cef_context_menu_params_t;
|
struct _cef_context_menu_params_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback structure used for continuation of custom context menu display.
|
/// Callback structure used for continuation of custom context menu display.
|
||||||
///
|
///
|
||||||
typedef struct _cef_run_context_menu_callback_t {
|
typedef struct _cef_run_context_menu_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Complete context menu display by selecting the specified |command_id| and
|
/// Complete context menu display by selecting the specified |command_id| and
|
||||||
// |event_flags|.
|
/// |event_flags|.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cont)(struct _cef_run_context_menu_callback_t* self,
|
void(CEF_CALLBACK* cont)(struct _cef_run_context_menu_callback_t* self,
|
||||||
int command_id,
|
int command_id,
|
||||||
cef_event_flags_t event_flags);
|
cef_event_flags_t event_flags);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Cancel context menu display.
|
/// Cancel context menu display.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cancel)(struct _cef_run_context_menu_callback_t* self);
|
void(CEF_CALLBACK* cancel)(struct _cef_run_context_menu_callback_t* self);
|
||||||
} cef_run_context_menu_callback_t;
|
} cef_run_context_menu_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle context menu events. The functions of this
|
/// Callback structure used for continuation of custom quick menu display.
|
||||||
// structure will be called on the UI thread.
|
|
||||||
///
|
///
|
||||||
typedef struct _cef_context_menu_handler_t {
|
typedef struct _cef_run_quick_menu_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called before a context menu is displayed. |params| provides information
|
/// Complete quick menu display by selecting the specified |command_id| and
|
||||||
// about the context menu state. |model| initially contains the default
|
/// |event_flags|.
|
||||||
// context menu. The |model| can be cleared to show no context menu or
|
///
|
||||||
// modified to show a custom menu. Do not keep references to |params| or
|
void(CEF_CALLBACK* cont)(struct _cef_run_quick_menu_callback_t* self,
|
||||||
// |model| outside of this callback.
|
int command_id,
|
||||||
|
cef_event_flags_t event_flags);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Cancel quick menu display.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* cancel)(struct _cef_run_quick_menu_callback_t* self);
|
||||||
|
} cef_run_quick_menu_callback_t;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Implement this structure to handle context menu events. The functions of
|
||||||
|
/// this structure will be called on the UI thread.
|
||||||
|
///
|
||||||
|
typedef struct _cef_context_menu_handler_t {
|
||||||
|
///
|
||||||
|
/// Base structure.
|
||||||
|
///
|
||||||
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called before a context menu is displayed. |params| provides information
|
||||||
|
/// about the context menu state. |model| initially contains the default
|
||||||
|
/// context menu. The |model| can be cleared to show no context menu or
|
||||||
|
/// modified to show a custom menu. Do not keep references to |params| or
|
||||||
|
/// |model| outside of this callback.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_before_context_menu)(
|
void(CEF_CALLBACK* on_before_context_menu)(
|
||||||
struct _cef_context_menu_handler_t* self,
|
struct _cef_context_menu_handler_t* self,
|
||||||
@@ -99,12 +122,12 @@ typedef struct _cef_context_menu_handler_t {
|
|||||||
struct _cef_menu_model_t* model);
|
struct _cef_menu_model_t* model);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called to allow custom display of the context menu. |params| provides
|
/// Called to allow custom display of the context menu. |params| provides
|
||||||
// information about the context menu state. |model| contains the context menu
|
/// information about the context menu state. |model| contains the context
|
||||||
// model resulting from OnBeforeContextMenu. For custom display return true
|
/// menu model resulting from OnBeforeContextMenu. For custom display return
|
||||||
// (1) and execute |callback| either synchronously or asynchronously with the
|
/// true (1) and execute |callback| either synchronously or asynchronously
|
||||||
// selected command ID. For default display return false (0). Do not keep
|
/// with the selected command ID. For default display return false (0). Do not
|
||||||
// references to |params| or |model| outside of this callback.
|
/// keep references to |params| or |model| outside of this callback.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* run_context_menu)(
|
int(CEF_CALLBACK* run_context_menu)(
|
||||||
struct _cef_context_menu_handler_t* self,
|
struct _cef_context_menu_handler_t* self,
|
||||||
@@ -115,13 +138,13 @@ typedef struct _cef_context_menu_handler_t {
|
|||||||
struct _cef_run_context_menu_callback_t* callback);
|
struct _cef_run_context_menu_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called to execute a command selected from the context menu. Return true (1)
|
/// Called to execute a command selected from the context menu. Return true
|
||||||
// if the command was handled or false (0) for the default implementation. See
|
/// (1) if the command was handled or false (0) for the default
|
||||||
// cef_menu_id_t for the command ids that have default implementations. All
|
/// implementation. See cef_menu_id_t for the command ids that have default
|
||||||
// user-defined command ids should be between MENU_ID_USER_FIRST and
|
/// implementations. All user-defined command ids should be between
|
||||||
// MENU_ID_USER_LAST. |params| will have the same values as what was passed to
|
/// MENU_ID_USER_FIRST and MENU_ID_USER_LAST. |params| will have the same
|
||||||
// on_before_context_menu(). Do not keep a reference to |params| outside of
|
/// values as what was passed to on_before_context_menu(). Do not keep a
|
||||||
// this callback.
|
/// reference to |params| outside of this callback.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_context_menu_command)(
|
int(CEF_CALLBACK* on_context_menu_command)(
|
||||||
struct _cef_context_menu_handler_t* self,
|
struct _cef_context_menu_handler_t* self,
|
||||||
@@ -132,166 +155,207 @@ typedef struct _cef_context_menu_handler_t {
|
|||||||
cef_event_flags_t event_flags);
|
cef_event_flags_t event_flags);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the context menu is dismissed irregardless of whether the menu
|
/// Called when the context menu is dismissed irregardless of whether the menu
|
||||||
// was NULL or a command was selected.
|
/// was canceled or a command was selected.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_context_menu_dismissed)(
|
void(CEF_CALLBACK* on_context_menu_dismissed)(
|
||||||
struct _cef_context_menu_handler_t* self,
|
struct _cef_context_menu_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
struct _cef_frame_t* frame);
|
struct _cef_frame_t* frame);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called to allow custom display of the quick menu for a windowless browser.
|
||||||
|
/// |location| is the top left corner of the selected region. |size| is the
|
||||||
|
/// size of the selected region. |edit_state_flags| is a combination of flags
|
||||||
|
/// that represent the state of the quick menu. Return true (1) if the menu
|
||||||
|
/// will be handled and execute |callback| either synchronously or
|
||||||
|
/// asynchronously with the selected command ID. Return false (0) to cancel
|
||||||
|
/// the menu.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* run_quick_menu)(
|
||||||
|
struct _cef_context_menu_handler_t* self,
|
||||||
|
struct _cef_browser_t* browser,
|
||||||
|
struct _cef_frame_t* frame,
|
||||||
|
const cef_point_t* location,
|
||||||
|
const cef_size_t* size,
|
||||||
|
cef_quick_menu_edit_state_flags_t edit_state_flags,
|
||||||
|
struct _cef_run_quick_menu_callback_t* callback);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called to execute a command selected from the quick menu for a windowless
|
||||||
|
/// browser. Return true (1) if the command was handled or false (0) for the
|
||||||
|
/// default implementation. See cef_menu_id_t for command IDs that have
|
||||||
|
/// default implementations.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* on_quick_menu_command)(
|
||||||
|
struct _cef_context_menu_handler_t* self,
|
||||||
|
struct _cef_browser_t* browser,
|
||||||
|
struct _cef_frame_t* frame,
|
||||||
|
int command_id,
|
||||||
|
cef_event_flags_t event_flags);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called when the quick menu for a windowless browser is dismissed
|
||||||
|
/// irregardless of whether the menu was canceled or a command was selected.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* on_quick_menu_dismissed)(
|
||||||
|
struct _cef_context_menu_handler_t* self,
|
||||||
|
struct _cef_browser_t* browser,
|
||||||
|
struct _cef_frame_t* frame);
|
||||||
} cef_context_menu_handler_t;
|
} cef_context_menu_handler_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Provides information about the context menu state. The ethods of this
|
/// Provides information about the context menu state. The functions of this
|
||||||
// structure can only be accessed on browser process the UI thread.
|
/// structure can only be accessed on browser process the UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_context_menu_params_t {
|
typedef struct _cef_context_menu_params_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the X coordinate of the mouse where the context menu was invoked.
|
/// Returns the X coordinate of the mouse where the context menu was invoked.
|
||||||
// Coords are relative to the associated RenderView's origin.
|
/// Coords are relative to the associated RenderView's origin.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_xcoord)(struct _cef_context_menu_params_t* self);
|
int(CEF_CALLBACK* get_xcoord)(struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the Y coordinate of the mouse where the context menu was invoked.
|
/// Returns the Y coordinate of the mouse where the context menu was invoked.
|
||||||
// Coords are relative to the associated RenderView's origin.
|
/// Coords are relative to the associated RenderView's origin.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_ycoord)(struct _cef_context_menu_params_t* self);
|
int(CEF_CALLBACK* get_ycoord)(struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns flags representing the type of node that the context menu was
|
/// Returns flags representing the type of node that the context menu was
|
||||||
// invoked on.
|
/// invoked on.
|
||||||
///
|
///
|
||||||
cef_context_menu_type_flags_t(CEF_CALLBACK* get_type_flags)(
|
cef_context_menu_type_flags_t(CEF_CALLBACK* get_type_flags)(
|
||||||
struct _cef_context_menu_params_t* self);
|
struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the URL of the link, if any, that encloses the node that the
|
/// Returns the URL of the link, if any, that encloses the node that the
|
||||||
// context menu was invoked on.
|
/// context menu was invoked on.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_link_url)(
|
cef_string_userfree_t(CEF_CALLBACK* get_link_url)(
|
||||||
struct _cef_context_menu_params_t* self);
|
struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the link URL, if any, to be used ONLY for "copy link address". We
|
/// Returns the link URL, if any, to be used ONLY for "copy link address". We
|
||||||
// don't validate this field in the frontend process.
|
/// don't validate this field in the frontend process.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_unfiltered_link_url)(
|
cef_string_userfree_t(CEF_CALLBACK* get_unfiltered_link_url)(
|
||||||
struct _cef_context_menu_params_t* self);
|
struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the source URL, if any, for the element that the context menu was
|
/// Returns the source URL, if any, for the element that the context menu was
|
||||||
// invoked on. Example of elements with source URLs are img, audio, and video.
|
/// invoked on. Example of elements with source URLs are img, audio, and
|
||||||
|
/// video.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_source_url)(
|
cef_string_userfree_t(CEF_CALLBACK* get_source_url)(
|
||||||
struct _cef_context_menu_params_t* self);
|
struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the context menu was invoked on an image which has non-
|
/// Returns true (1) if the context menu was invoked on an image which has
|
||||||
// NULL contents.
|
/// non-NULL contents.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* has_image_contents)(
|
int(CEF_CALLBACK* has_image_contents)(
|
||||||
struct _cef_context_menu_params_t* self);
|
struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the title text or the alt text if the context menu was invoked on
|
/// Returns the title text or the alt text if the context menu was invoked on
|
||||||
// an image.
|
/// an image.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_title_text)(
|
cef_string_userfree_t(CEF_CALLBACK* get_title_text)(
|
||||||
struct _cef_context_menu_params_t* self);
|
struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the URL of the top level page that the context menu was invoked on.
|
/// Returns the URL of the top level page that the context menu was invoked
|
||||||
|
/// on.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_page_url)(
|
cef_string_userfree_t(CEF_CALLBACK* get_page_url)(
|
||||||
struct _cef_context_menu_params_t* self);
|
struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the URL of the subframe that the context menu was invoked on.
|
/// Returns the URL of the subframe that the context menu was invoked on.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_frame_url)(
|
cef_string_userfree_t(CEF_CALLBACK* get_frame_url)(
|
||||||
struct _cef_context_menu_params_t* self);
|
struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the character encoding of the subframe that the context menu was
|
/// Returns the character encoding of the subframe that the context menu was
|
||||||
// invoked on.
|
/// invoked on.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_frame_charset)(
|
cef_string_userfree_t(CEF_CALLBACK* get_frame_charset)(
|
||||||
struct _cef_context_menu_params_t* self);
|
struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the type of context node that the context menu was invoked on.
|
/// Returns the type of context node that the context menu was invoked on.
|
||||||
///
|
///
|
||||||
cef_context_menu_media_type_t(CEF_CALLBACK* get_media_type)(
|
cef_context_menu_media_type_t(CEF_CALLBACK* get_media_type)(
|
||||||
struct _cef_context_menu_params_t* self);
|
struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns flags representing the actions supported by the media element, if
|
/// Returns flags representing the actions supported by the media element, if
|
||||||
// any, that the context menu was invoked on.
|
/// any, that the context menu was invoked on.
|
||||||
///
|
///
|
||||||
cef_context_menu_media_state_flags_t(CEF_CALLBACK* get_media_state_flags)(
|
cef_context_menu_media_state_flags_t(CEF_CALLBACK* get_media_state_flags)(
|
||||||
struct _cef_context_menu_params_t* self);
|
struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the text of the selection, if any, that the context menu was
|
/// Returns the text of the selection, if any, that the context menu was
|
||||||
// invoked on.
|
/// invoked on.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_selection_text)(
|
cef_string_userfree_t(CEF_CALLBACK* get_selection_text)(
|
||||||
struct _cef_context_menu_params_t* self);
|
struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the text of the misspelled word, if any, that the context menu was
|
/// Returns the text of the misspelled word, if any, that the context menu was
|
||||||
// invoked on.
|
/// invoked on.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_misspelled_word)(
|
cef_string_userfree_t(CEF_CALLBACK* get_misspelled_word)(
|
||||||
struct _cef_context_menu_params_t* self);
|
struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if suggestions exist, false (0) otherwise. Fills in
|
/// Returns true (1) if suggestions exist, false (0) otherwise. Fills in
|
||||||
// |suggestions| from the spell check service for the misspelled word if there
|
/// |suggestions| from the spell check service for the misspelled word if
|
||||||
// is one.
|
/// there is one.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_dictionary_suggestions)(
|
int(CEF_CALLBACK* get_dictionary_suggestions)(
|
||||||
struct _cef_context_menu_params_t* self,
|
struct _cef_context_menu_params_t* self,
|
||||||
cef_string_list_t suggestions);
|
cef_string_list_t suggestions);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the context menu was invoked on an editable node.
|
/// Returns true (1) if the context menu was invoked on an editable node.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_editable)(struct _cef_context_menu_params_t* self);
|
int(CEF_CALLBACK* is_editable)(struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the context menu was invoked on an editable node where
|
/// Returns true (1) if the context menu was invoked on an editable node where
|
||||||
// spell-check is enabled.
|
/// spell-check is enabled.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_spell_check_enabled)(
|
int(CEF_CALLBACK* is_spell_check_enabled)(
|
||||||
struct _cef_context_menu_params_t* self);
|
struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns flags representing the actions supported by the editable node, if
|
/// Returns flags representing the actions supported by the editable node, if
|
||||||
// any, that the context menu was invoked on.
|
/// any, that the context menu was invoked on.
|
||||||
///
|
///
|
||||||
cef_context_menu_edit_state_flags_t(CEF_CALLBACK* get_edit_state_flags)(
|
cef_context_menu_edit_state_flags_t(CEF_CALLBACK* get_edit_state_flags)(
|
||||||
struct _cef_context_menu_params_t* self);
|
struct _cef_context_menu_params_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the context menu contains items specified by the
|
/// Returns true (1) if the context menu contains items specified by the
|
||||||
// renderer process (for example, plugin placeholder or pepper plugin menu
|
/// renderer process.
|
||||||
// items).
|
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_custom_menu)(struct _cef_context_menu_params_t* self);
|
int(CEF_CALLBACK* is_custom_menu)(struct _cef_context_menu_params_t* self);
|
||||||
} cef_context_menu_params_t;
|
} cef_context_menu_params_t;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=b19ef1c8a781f8d59276357609fe64370bb8a107$
|
// $hash=598c6f530b2e2553197d8c6a72ad9e2bf72b5443$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_COOKIE_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_COOKIE_CAPI_H_
|
||||||
@@ -52,29 +52,29 @@ struct _cef_delete_cookies_callback_t;
|
|||||||
struct _cef_set_cookie_callback_t;
|
struct _cef_set_cookie_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used for managing cookies. The functions of this structure may be
|
/// Structure used for managing cookies. The functions of this structure may be
|
||||||
// called on any thread unless otherwise indicated.
|
/// called on any thread unless otherwise indicated.
|
||||||
///
|
///
|
||||||
typedef struct _cef_cookie_manager_t {
|
typedef struct _cef_cookie_manager_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Visit all cookies on the UI thread. The returned cookies are ordered by
|
/// Visit all cookies on the UI thread. The returned cookies are ordered by
|
||||||
// longest path, then by earliest creation date. Returns false (0) if cookies
|
/// longest path, then by earliest creation date. Returns false (0) if cookies
|
||||||
// cannot be accessed.
|
/// cannot be accessed.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* visit_all_cookies)(struct _cef_cookie_manager_t* self,
|
int(CEF_CALLBACK* visit_all_cookies)(struct _cef_cookie_manager_t* self,
|
||||||
struct _cef_cookie_visitor_t* visitor);
|
struct _cef_cookie_visitor_t* visitor);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Visit a subset of cookies on the UI thread. The results are filtered by the
|
/// Visit a subset of cookies on the UI thread. The results are filtered by
|
||||||
// given url scheme, host, domain and path. If |includeHttpOnly| is true (1)
|
/// the given url scheme, host, domain and path. If |includeHttpOnly| is true
|
||||||
// HTTP-only cookies will also be included in the results. The returned
|
/// (1) HTTP-only cookies will also be included in the results. The returned
|
||||||
// cookies are ordered by longest path, then by earliest creation date.
|
/// cookies are ordered by longest path, then by earliest creation date.
|
||||||
// Returns false (0) if cookies cannot be accessed.
|
/// Returns false (0) if cookies cannot be accessed.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* visit_url_cookies)(struct _cef_cookie_manager_t* self,
|
int(CEF_CALLBACK* visit_url_cookies)(struct _cef_cookie_manager_t* self,
|
||||||
const cef_string_t* url,
|
const cef_string_t* url,
|
||||||
@@ -82,13 +82,13 @@ typedef struct _cef_cookie_manager_t {
|
|||||||
struct _cef_cookie_visitor_t* visitor);
|
struct _cef_cookie_visitor_t* visitor);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Sets a cookie given a valid URL and explicit user-provided cookie
|
/// Sets a cookie given a valid URL and explicit user-provided cookie
|
||||||
// attributes. This function expects each attribute to be well-formed. It will
|
/// attributes. This function expects each attribute to be well-formed. It
|
||||||
// check for disallowed characters (e.g. the ';' character is disallowed
|
/// will check for disallowed characters (e.g. the ';' character is disallowed
|
||||||
// within the cookie value attribute) and fail without setting the cookie if
|
/// within the cookie value attribute) and fail without setting the cookie if
|
||||||
// such characters are found. If |callback| is non-NULL it will be executed
|
/// such characters are found. If |callback| is non-NULL it will be executed
|
||||||
// asnychronously on the UI thread after the cookie has been set. Returns
|
/// asnychronously on the UI thread after the cookie has been set. Returns
|
||||||
// false (0) if an invalid URL is specified or if cookies cannot be accessed.
|
/// false (0) if an invalid URL is specified or if cookies cannot be accessed.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_cookie)(struct _cef_cookie_manager_t* self,
|
int(CEF_CALLBACK* set_cookie)(struct _cef_cookie_manager_t* self,
|
||||||
const cef_string_t* url,
|
const cef_string_t* url,
|
||||||
@@ -96,15 +96,15 @@ typedef struct _cef_cookie_manager_t {
|
|||||||
struct _cef_set_cookie_callback_t* callback);
|
struct _cef_set_cookie_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Delete all cookies that match the specified parameters. If both |url| and
|
/// Delete all cookies that match the specified parameters. If both |url| and
|
||||||
// |cookie_name| values are specified all host and domain cookies matching
|
/// |cookie_name| values are specified all host and domain cookies matching
|
||||||
// both will be deleted. If only |url| is specified all host cookies (but not
|
/// both will be deleted. If only |url| is specified all host cookies (but not
|
||||||
// domain cookies) irrespective of path will be deleted. If |url| is NULL all
|
/// domain cookies) irrespective of path will be deleted. If |url| is NULL all
|
||||||
// cookies for all hosts and domains will be deleted. If |callback| is non-
|
/// cookies for all hosts and domains will be deleted. If |callback| is non-
|
||||||
// NULL it will be executed asnychronously on the UI thread after the cookies
|
/// NULL it will be executed asnychronously on the UI thread after the cookies
|
||||||
// have been deleted. Returns false (0) if a non-NULL invalid URL is specified
|
/// have been deleted. Returns false (0) if a non-NULL invalid URL is
|
||||||
// or if cookies cannot be accessed. Cookies can alternately be deleted using
|
/// specified or if cookies cannot be accessed. Cookies can alternately be
|
||||||
// the Visit*Cookies() functions.
|
/// deleted using the Visit*Cookies() functions.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* delete_cookies)(
|
int(CEF_CALLBACK* delete_cookies)(
|
||||||
struct _cef_cookie_manager_t* self,
|
struct _cef_cookie_manager_t* self,
|
||||||
@@ -113,41 +113,41 @@ typedef struct _cef_cookie_manager_t {
|
|||||||
struct _cef_delete_cookies_callback_t* callback);
|
struct _cef_delete_cookies_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Flush the backing store (if any) to disk. If |callback| is non-NULL it will
|
/// Flush the backing store (if any) to disk. If |callback| is non-NULL it
|
||||||
// be executed asnychronously on the UI thread after the flush is complete.
|
/// will be executed asnychronously on the UI thread after the flush is
|
||||||
// Returns false (0) if cookies cannot be accessed.
|
/// complete. Returns false (0) if cookies cannot be accessed.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* flush_store)(struct _cef_cookie_manager_t* self,
|
int(CEF_CALLBACK* flush_store)(struct _cef_cookie_manager_t* self,
|
||||||
struct _cef_completion_callback_t* callback);
|
struct _cef_completion_callback_t* callback);
|
||||||
} cef_cookie_manager_t;
|
} cef_cookie_manager_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the global cookie manager. By default data will be stored at
|
/// Returns the global cookie manager. By default data will be stored at
|
||||||
// CefSettings.cache_path if specified or in memory otherwise. If |callback| is
|
/// cef_settings_t.cache_path if specified or in memory otherwise. If |callback|
|
||||||
// non-NULL it will be executed asnychronously on the UI thread after the
|
/// 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
|
/// manager's storage has been initialized. Using this function is equivalent to
|
||||||
// calling cef_request_context_t::cef_request_context_get_global_context()->GetD
|
/// calling cef_request_context_t::cef_request_context_get_global_context()->Get
|
||||||
// efaultCookieManager().
|
/// DefaultCookieManager().
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_cookie_manager_t* cef_cookie_manager_get_global_manager(
|
CEF_EXPORT cef_cookie_manager_t* cef_cookie_manager_get_global_manager(
|
||||||
struct _cef_completion_callback_t* callback);
|
struct _cef_completion_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure to implement for visiting cookie values. The functions of this
|
/// Structure to implement for visiting cookie values. The functions of this
|
||||||
// structure will always be called on the UI thread.
|
/// structure will always be called on the UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_cookie_visitor_t {
|
typedef struct _cef_cookie_visitor_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Method that will be called once for each cookie. |count| is the 0-based
|
/// Method that will be called once for each cookie. |count| is the 0-based
|
||||||
// index for the current cookie. |total| is the total number of cookies. Set
|
/// index for the current cookie. |total| is the total number of cookies. Set
|
||||||
// |deleteCookie| to true (1) to delete the cookie currently being visited.
|
/// |deleteCookie| to true (1) to delete the cookie currently being visited.
|
||||||
// Return false (0) to stop visiting cookies. This function may never be
|
/// Return false (0) to stop visiting cookies. This function may never be
|
||||||
// called if no cookies are found.
|
/// called if no cookies are found.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* visit)(struct _cef_cookie_visitor_t* self,
|
int(CEF_CALLBACK* visit)(struct _cef_cookie_visitor_t* self,
|
||||||
const struct _cef_cookie_t* cookie,
|
const struct _cef_cookie_t* cookie,
|
||||||
@@ -157,36 +157,36 @@ typedef struct _cef_cookie_visitor_t {
|
|||||||
} cef_cookie_visitor_t;
|
} cef_cookie_visitor_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure to implement to be notified of asynchronous completion via
|
/// Structure to implement to be notified of asynchronous completion via
|
||||||
// cef_cookie_manager_t::set_cookie().
|
/// cef_cookie_manager_t::set_cookie().
|
||||||
///
|
///
|
||||||
typedef struct _cef_set_cookie_callback_t {
|
typedef struct _cef_set_cookie_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Method that will be called upon completion. |success| will be true (1) if
|
/// Method that will be called upon completion. |success| will be true (1) if
|
||||||
// the cookie was set successfully.
|
/// the cookie was set successfully.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_complete)(struct _cef_set_cookie_callback_t* self,
|
void(CEF_CALLBACK* on_complete)(struct _cef_set_cookie_callback_t* self,
|
||||||
int success);
|
int success);
|
||||||
} cef_set_cookie_callback_t;
|
} cef_set_cookie_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure to implement to be notified of asynchronous completion via
|
/// Structure to implement to be notified of asynchronous completion via
|
||||||
// cef_cookie_manager_t::delete_cookies().
|
/// cef_cookie_manager_t::delete_cookies().
|
||||||
///
|
///
|
||||||
typedef struct _cef_delete_cookies_callback_t {
|
typedef struct _cef_delete_cookies_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Method that will be called upon completion. |num_deleted| will be the
|
/// Method that will be called upon completion. |num_deleted| will be the
|
||||||
// number of cookies that were deleted.
|
/// number of cookies that were deleted.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_complete)(struct _cef_delete_cookies_callback_t* self,
|
void(CEF_CALLBACK* on_complete)(struct _cef_delete_cookies_callback_t* self,
|
||||||
int num_deleted);
|
int num_deleted);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=5e19231e3476eef376c2742e8d375bee7bd4ea2d$
|
// $hash=5c6e0b9e37b8103a182f200fccdf5973104fcd70$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_CRASH_UTIL_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_CRASH_UTIL_CAPI_H_
|
||||||
@@ -47,99 +47,102 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Crash reporting is configured using an INI-style config file named
|
/// Crash reporting is configured using an INI-style config file named
|
||||||
// "crash_reporter.cfg". On Windows and Linux this file must be placed next to
|
/// "crash_reporter.cfg". On Windows and Linux this file must be placed next to
|
||||||
// the main application executable. On macOS this file must be placed in the
|
/// the main application executable. On macOS this file must be placed in the
|
||||||
// top-level app bundle Resources directory (e.g.
|
/// top-level app bundle Resources directory (e.g.
|
||||||
// "<appname>.app/Contents/Resources"). File contents are as follows:
|
/// "<appname>.app/Contents/Resources"). File contents are as follows:
|
||||||
//
|
|
||||||
// # Comments start with a hash character and must be on their own line.
|
|
||||||
//
|
|
||||||
// [Config]
|
|
||||||
// ProductName=<Value of the "prod" crash key; defaults to "cef">
|
|
||||||
// ProductVersion=<Value of the "ver" crash key; defaults to the CEF version>
|
|
||||||
// AppName=<Windows only; App-specific folder name component for storing crash
|
|
||||||
// information; default to "CEF">
|
|
||||||
// ExternalHandler=<Windows only; Name of the external handler exe to use
|
|
||||||
// instead of re-launching the main exe; default to empty>
|
|
||||||
// BrowserCrashForwardingEnabled=<macOS only; True if browser process crashes
|
|
||||||
// should be forwarded to the system crash
|
|
||||||
// reporter; default to false>
|
|
||||||
// ServerURL=<crash server URL; default to empty>
|
|
||||||
// RateLimitEnabled=<True if uploads should be rate limited; default to true>
|
|
||||||
// MaxUploadsPerDay=<Max uploads per 24 hours, used if rate limit is enabled;
|
|
||||||
// default to 5>
|
|
||||||
// MaxDatabaseSizeInMb=<Total crash report disk usage greater than this value
|
|
||||||
// will cause older reports to be deleted; default to 20>
|
|
||||||
// MaxDatabaseAgeInDays=<Crash reports older than this value will be deleted;
|
|
||||||
// default to 5>
|
|
||||||
//
|
|
||||||
// [CrashKeys]
|
|
||||||
// my_key1=<small|medium|large>
|
|
||||||
// my_key2=<small|medium|large>
|
|
||||||
//
|
|
||||||
// Config section:
|
|
||||||
//
|
|
||||||
// If "ProductName" and/or "ProductVersion" are set then the specified values
|
|
||||||
// will be included in the crash dump metadata. On macOS if these values are set
|
|
||||||
// to NULL then they will be retrieved from the Info.plist file using the
|
|
||||||
// "CFBundleName" and "CFBundleShortVersionString" keys respectively.
|
|
||||||
//
|
|
||||||
// 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 CefSettings.user_data_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
|
|
||||||
// exe. The value can be an absolute path or a path relative to the main exe
|
|
||||||
// directory. On Linux the CefSettings.browser_subprocess_path value will be
|
|
||||||
// used. On macOS the existing subprocess app bundle will be used.
|
|
||||||
//
|
|
||||||
// If "BrowserCrashForwardingEnabled" is set to true (1) on macOS then browser
|
|
||||||
// process crashes will be forwarded to the system crash reporter. This results
|
|
||||||
// in the crash UI dialog being displayed to the user and crash reports being
|
|
||||||
// logged under "~/Library/Logs/DiagnosticReports". Forwarding of crash reports
|
|
||||||
// from non-browser processes and Debug builds is always disabled.
|
|
||||||
//
|
|
||||||
// If "ServerURL" is set then crashes will be uploaded as a multi-part POST
|
|
||||||
// request to the specified URL. Otherwise, reports will only be stored locally
|
|
||||||
// on disk.
|
|
||||||
//
|
|
||||||
// If "RateLimitEnabled" is set to true (1) then crash report uploads will be
|
|
||||||
// rate limited as follows:
|
|
||||||
// 1. If "MaxUploadsPerDay" is set to a positive value then at most the
|
|
||||||
// specified number of crashes will be uploaded in each 24 hour period.
|
|
||||||
// 2. If crash upload fails due to a network or server error then an
|
|
||||||
// incremental backoff delay up to a maximum of 24 hours will be applied for
|
|
||||||
// retries.
|
|
||||||
// 3. If a backoff delay is applied and "MaxUploadsPerDay" is > 1 then the
|
|
||||||
// "MaxUploadsPerDay" value will be reduced to 1 until the client is
|
|
||||||
// restarted. This helps to avoid an upload flood when the network or
|
|
||||||
// server error is resolved.
|
|
||||||
// Rate limiting is not supported on Linux.
|
|
||||||
//
|
|
||||||
// If "MaxDatabaseSizeInMb" is set to a positive value then crash report storage
|
|
||||||
// on disk will be limited to that size in megabytes. For example, on Windows
|
|
||||||
// each dump is about 600KB so a "MaxDatabaseSizeInMb" value of 20 equates to
|
|
||||||
// about 34 crash reports stored on disk. Not supported on Linux.
|
|
||||||
//
|
|
||||||
// If "MaxDatabaseAgeInDays" is set to a positive value then crash reports older
|
|
||||||
// than the specified age in days will be deleted. Not supported on Linux.
|
|
||||||
//
|
|
||||||
// CrashKeys section:
|
|
||||||
//
|
|
||||||
// A maximum of 26 crash keys of each size can be specified for use by the
|
|
||||||
// application. Crash key values will be truncated based on the specified size
|
|
||||||
// (small = 64 bytes, medium = 256 bytes, large = 1024 bytes). The value of
|
|
||||||
// crash keys can be set from any thread or process using the
|
|
||||||
// CefSetCrashKeyValue function. These key/value pairs will be sent to the crash
|
|
||||||
// server along with the crash dump file.
|
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_crash_reporting_enabled();
|
/// <pre>
|
||||||
|
/// # Comments start with a hash character and must be on their own line.
|
||||||
|
///
|
||||||
|
/// [Config]
|
||||||
|
/// ProductName=<Value of the "prod" crash key; defaults to "cef">
|
||||||
|
/// ProductVersion=<Value of the "ver" crash key; defaults to the CEF version>
|
||||||
|
/// AppName=<Windows only; App-specific folder name component for storing crash
|
||||||
|
/// information; default to "CEF">
|
||||||
|
/// ExternalHandler=<Windows only; Name of the external handler exe to use
|
||||||
|
/// instead of re-launching the main exe; default to empty>
|
||||||
|
/// BrowserCrashForwardingEnabled=<macOS only; True if browser process crashes
|
||||||
|
/// should be forwarded to the system crash
|
||||||
|
/// reporter; default to false>
|
||||||
|
/// ServerURL=<crash server URL; default to empty>
|
||||||
|
/// RateLimitEnabled=<True if uploads should be rate limited; default to true>
|
||||||
|
/// MaxUploadsPerDay=<Max uploads per 24 hours, used if rate limit is enabled;
|
||||||
|
/// default to 5>
|
||||||
|
/// MaxDatabaseSizeInMb=<Total crash report disk usage greater than this value
|
||||||
|
/// will cause older reports to be deleted; default to 20>
|
||||||
|
/// MaxDatabaseAgeInDays=<Crash reports older than this value will be deleted;
|
||||||
|
/// default to 5>
|
||||||
|
///
|
||||||
|
/// [CrashKeys]
|
||||||
|
/// my_key1=<small|medium|large>
|
||||||
|
/// my_key2=<small|medium|large>
|
||||||
|
/// </pre>
|
||||||
|
///
|
||||||
|
/// <b>Config section:</b>
|
||||||
|
///
|
||||||
|
/// If "ProductName" and/or "ProductVersion" are set then the specified values
|
||||||
|
/// will be included in the crash dump metadata. On macOS if these values are
|
||||||
|
/// set to NULL then they will be retrieved from the Info.plist file using the
|
||||||
|
/// "CFBundleName" and "CFBundleShortVersionString" keys respectively.
|
||||||
|
///
|
||||||
|
/// 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.
|
||||||
|
///
|
||||||
|
/// If "ExternalHandler" is set on Windows then the specified exe will be
|
||||||
|
/// launched as the crashpad-handler instead of re-launching the main process
|
||||||
|
/// exe. The value can be an absolute path or a path relative to the main exe
|
||||||
|
/// directory. On Linux the cef_settings_t.browser_subprocess_path value will be
|
||||||
|
/// used. On macOS the existing subprocess app bundle will be used.
|
||||||
|
///
|
||||||
|
/// If "BrowserCrashForwardingEnabled" is set to true (1) on macOS then browser
|
||||||
|
/// process crashes will be forwarded to the system crash reporter. This results
|
||||||
|
/// in the crash UI dialog being displayed to the user and crash reports being
|
||||||
|
/// logged under "~/Library/Logs/DiagnosticReports". Forwarding of crash reports
|
||||||
|
/// from non-browser processes and Debug builds is always disabled.
|
||||||
|
///
|
||||||
|
/// If "ServerURL" is set then crashes will be uploaded as a multi-part POST
|
||||||
|
/// request to the specified URL. Otherwise, reports will only be stored locally
|
||||||
|
/// on disk.
|
||||||
|
///
|
||||||
|
/// If "RateLimitEnabled" is set to true (1) then crash report uploads will be
|
||||||
|
/// rate limited as follows:
|
||||||
|
/// 1. If "MaxUploadsPerDay" is set to a positive value then at most the
|
||||||
|
/// specified number of crashes will be uploaded in each 24 hour period.
|
||||||
|
/// 2. If crash upload fails due to a network or server error then an
|
||||||
|
/// incremental backoff delay up to a maximum of 24 hours will be applied
|
||||||
|
/// for retries.
|
||||||
|
/// 3. If a backoff delay is applied and "MaxUploadsPerDay" is > 1 then the
|
||||||
|
/// "MaxUploadsPerDay" value will be reduced to 1 until the client is
|
||||||
|
/// restarted. This helps to avoid an upload flood when the network or
|
||||||
|
/// server error is resolved.
|
||||||
|
/// Rate limiting is not supported on Linux.
|
||||||
|
///
|
||||||
|
/// If "MaxDatabaseSizeInMb" is set to a positive value then crash report
|
||||||
|
/// storage on disk will be limited to that size in megabytes. For example, on
|
||||||
|
/// Windows each dump is about 600KB so a "MaxDatabaseSizeInMb" value of 20
|
||||||
|
/// equates to about 34 crash reports stored on disk. Not supported on Linux.
|
||||||
|
///
|
||||||
|
/// If "MaxDatabaseAgeInDays" is set to a positive value then crash reports
|
||||||
|
/// older than the specified age in days will be deleted. Not supported on
|
||||||
|
/// Linux.
|
||||||
|
///
|
||||||
|
/// <b>CrashKeys section:</b>
|
||||||
|
///
|
||||||
|
/// A maximum of 26 crash keys of each size can be specified for use by the
|
||||||
|
/// application. Crash key values will be truncated based on the specified size
|
||||||
|
/// (small = 64 bytes, medium = 256 bytes, large = 1024 bytes). The value of
|
||||||
|
/// crash keys can be set from any thread or process using the
|
||||||
|
/// CefSetCrashKeyValue function. These key/value pairs will be sent to the
|
||||||
|
/// crash server along with the crash dump file.
|
||||||
|
///
|
||||||
|
CEF_EXPORT int cef_crash_reporting_enabled(void);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Sets or clears a specific key-value pair from the crash metadata.
|
/// Sets or clears a specific key-value pair from the crash metadata.
|
||||||
///
|
///
|
||||||
CEF_EXPORT void cef_set_crash_key_value(const cef_string_t* key,
|
CEF_EXPORT void cef_set_crash_key_value(const cef_string_t* key,
|
||||||
const cef_string_t* value);
|
const cef_string_t* value);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=1a256c04042ebd4867f39e1c31def558871b2bab$
|
// $hash=777485120b9a9df0f890579ee698d33f273819c5$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_DEVTOOLS_MESSAGE_OBSERVER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_DEVTOOLS_MESSAGE_OBSERVER_CAPI_H_
|
||||||
@@ -49,35 +49,36 @@ extern "C" {
|
|||||||
struct _cef_browser_t;
|
struct _cef_browser_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback structure for cef_browser_host_t::AddDevToolsMessageObserver. The
|
/// Callback structure for cef_browser_host_t::AddDevToolsMessageObserver. The
|
||||||
// functions of this structure will be called on the browser process UI thread.
|
/// functions of this structure will be called on the browser process UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_dev_tools_message_observer_t {
|
typedef struct _cef_dev_tools_message_observer_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Method that will be called on receipt of a DevTools protocol message.
|
/// Method that will be called on receipt of a DevTools protocol message.
|
||||||
// |browser| is the originating browser instance. |message| is a UTF8-encoded
|
/// |browser| is the originating browser instance. |message| is a UTF8-encoded
|
||||||
// JSON dictionary representing either a function result or an event.
|
/// JSON dictionary representing either a function result or an event.
|
||||||
// |message| is only valid for the scope of this callback and should be copied
|
/// |message| is only valid for the scope of this callback and should be
|
||||||
// if necessary. Return true (1) if the message was handled or false (0) if
|
/// copied if necessary. Return true (1) if the message was handled or false
|
||||||
// the message should be further processed and passed to the
|
/// (0) if the message should be further processed and passed to the
|
||||||
// OnDevToolsMethodResult or OnDevToolsEvent functions as appropriate.
|
/// OnDevToolsMethodResult or OnDevToolsEvent functions as appropriate.
|
||||||
//
|
///
|
||||||
// Method result dictionaries include an "id" (int) value that identifies the
|
/// Method result dictionaries include an "id" (int) value that identifies the
|
||||||
// orginating function call sent from cef_browser_host_t::SendDevToolsMessage,
|
/// orginating function call sent from
|
||||||
// and optionally either a "result" (dictionary) or "error" (dictionary)
|
/// cef_browser_host_t::SendDevToolsMessage, and optionally either a "result"
|
||||||
// value. The "error" dictionary will contain "code" (int) and "message"
|
/// (dictionary) or "error" (dictionary) value. The "error" dictionary will
|
||||||
// (string) values. Event dictionaries include a "function" (string) value and
|
/// contain "code" (int) and "message" (string) values. Event dictionaries
|
||||||
// optionally a "params" (dictionary) value. See the DevTools protocol
|
/// include a "function" (string) value and optionally a "params" (dictionary)
|
||||||
// documentation at https://chromedevtools.github.io/devtools-protocol/ for
|
/// value. See the DevTools protocol documentation at
|
||||||
// details of supported function calls and the expected "result" or "params"
|
/// https://chromedevtools.github.io/devtools-protocol/ for details of
|
||||||
// dictionary contents. JSON dictionaries can be parsed using the CefParseJSON
|
/// supported function calls and the expected "result" or "params" dictionary
|
||||||
// function if desired, however be aware of performance considerations when
|
/// contents. JSON dictionaries can be parsed using the CefParseJSON function
|
||||||
// parsing large messages (some of which may exceed 1MB in size).
|
/// if desired, however be aware of performance considerations when parsing
|
||||||
|
/// large messages (some of which may exceed 1MB in size).
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_dev_tools_message)(
|
int(CEF_CALLBACK* on_dev_tools_message)(
|
||||||
struct _cef_dev_tools_message_observer_t* self,
|
struct _cef_dev_tools_message_observer_t* self,
|
||||||
@@ -86,16 +87,16 @@ typedef struct _cef_dev_tools_message_observer_t {
|
|||||||
size_t message_size);
|
size_t message_size);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Method that will be called after attempted execution of a DevTools protocol
|
/// Method that will be called after attempted execution of a DevTools
|
||||||
// function. |browser| is the originating browser instance. |message_id| is
|
/// protocol function. |browser| is the originating browser instance.
|
||||||
// the "id" value that identifies the originating function call message. If
|
/// |message_id| is the "id" value that identifies the originating function
|
||||||
// the function succeeded |success| will be true (1) and |result| will be the
|
/// call message. If the function succeeded |success| will be true (1) and
|
||||||
// UTF8-encoded JSON "result" dictionary value (which may be NULL). If the
|
/// |result| will be the UTF8-encoded JSON "result" dictionary value (which
|
||||||
// function failed |success| will be false (0) and |result| will be the
|
/// may be NULL). If the function failed |success| will be false (0) and
|
||||||
// UTF8-encoded JSON "error" dictionary value. |result| is only valid for the
|
/// |result| will be the UTF8-encoded JSON "error" dictionary value. |result|
|
||||||
// scope of this callback and should be copied if necessary. See the
|
/// is only valid for the scope of this callback and should be copied if
|
||||||
// OnDevToolsMessage documentation for additional details on |result|
|
/// necessary. See the OnDevToolsMessage documentation for additional details
|
||||||
// contents.
|
/// on |result| contents.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_dev_tools_method_result)(
|
void(CEF_CALLBACK* on_dev_tools_method_result)(
|
||||||
struct _cef_dev_tools_message_observer_t* self,
|
struct _cef_dev_tools_message_observer_t* self,
|
||||||
@@ -106,12 +107,12 @@ typedef struct _cef_dev_tools_message_observer_t {
|
|||||||
size_t result_size);
|
size_t result_size);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Method that will be called on receipt of a DevTools protocol event.
|
/// Method that will be called on receipt of a DevTools protocol event.
|
||||||
// |browser| is the originating browser instance. |function| is the "function"
|
/// |browser| is the originating browser instance. |function| is the
|
||||||
// value. |params| is the UTF8-encoded JSON "params" dictionary value (which
|
/// "function" value. |params| is the UTF8-encoded JSON "params" dictionary
|
||||||
// may be NULL). |params| is only valid for the scope of this callback and
|
/// value (which may be NULL). |params| is only valid for the scope of this
|
||||||
// should be copied if necessary. See the OnDevToolsMessage documentation for
|
/// callback and should be copied if necessary. See the OnDevToolsMessage
|
||||||
// additional details on |params| contents.
|
/// documentation for additional details on |params| contents.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_dev_tools_event)(
|
void(CEF_CALLBACK* on_dev_tools_event)(
|
||||||
struct _cef_dev_tools_message_observer_t* self,
|
struct _cef_dev_tools_message_observer_t* self,
|
||||||
@@ -121,19 +122,19 @@ typedef struct _cef_dev_tools_message_observer_t {
|
|||||||
size_t params_size);
|
size_t params_size);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Method that will be called when the DevTools agent has attached. |browser|
|
/// Method that will be called when the DevTools agent has attached. |browser|
|
||||||
// is the originating browser instance. This will generally occur in response
|
/// is the originating browser instance. This will generally occur in response
|
||||||
// to the first message sent while the agent is detached.
|
/// to the first message sent while the agent is detached.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_dev_tools_agent_attached)(
|
void(CEF_CALLBACK* on_dev_tools_agent_attached)(
|
||||||
struct _cef_dev_tools_message_observer_t* self,
|
struct _cef_dev_tools_message_observer_t* self,
|
||||||
struct _cef_browser_t* browser);
|
struct _cef_browser_t* browser);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Method that will be called when the DevTools agent has detached. |browser|
|
/// Method that will be called when the DevTools agent has detached. |browser|
|
||||||
// is the originating browser instance. Any function results that were pending
|
/// is the originating browser instance. Any function results that were
|
||||||
// before the agent became detached will not be delivered, and any active
|
/// pending before the agent became detached will not be delivered, and any
|
||||||
// event subscriptions will be canceled.
|
/// active event subscriptions will be canceled.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_dev_tools_agent_detached)(
|
void(CEF_CALLBACK* on_dev_tools_agent_detached)(
|
||||||
struct _cef_dev_tools_message_observer_t* self,
|
struct _cef_dev_tools_message_observer_t* self,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=5ae5556e4085faf8cf17ee757f5eeac9197f75c0$
|
// $hash=69545645f079f4593d9cbb6d8a36535c209245f7$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_DIALOG_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_DIALOG_HANDLER_CAPI_H_
|
||||||
@@ -48,55 +48,51 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback structure for asynchronous continuation of file dialog requests.
|
/// Callback structure for asynchronous continuation of file dialog requests.
|
||||||
///
|
///
|
||||||
typedef struct _cef_file_dialog_callback_t {
|
typedef struct _cef_file_dialog_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Continue the file selection. |selected_accept_filter| should be the 0-based
|
/// Continue the file selection. |file_paths| should be a single value or a
|
||||||
// index of the value selected from the accept filters array passed to
|
/// list of values depending on the dialog mode. An NULL |file_paths| value is
|
||||||
// cef_dialog_handler_t::OnFileDialog. |file_paths| should be a single value
|
/// treated the same as calling cancel().
|
||||||
// or a list of values depending on the dialog mode. An NULL |file_paths|
|
|
||||||
// value is treated the same as calling cancel().
|
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cont)(struct _cef_file_dialog_callback_t* self,
|
void(CEF_CALLBACK* cont)(struct _cef_file_dialog_callback_t* self,
|
||||||
int selected_accept_filter,
|
|
||||||
cef_string_list_t file_paths);
|
cef_string_list_t file_paths);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Cancel the file selection.
|
/// Cancel the file selection.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cancel)(struct _cef_file_dialog_callback_t* self);
|
void(CEF_CALLBACK* cancel)(struct _cef_file_dialog_callback_t* self);
|
||||||
} cef_file_dialog_callback_t;
|
} cef_file_dialog_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle dialog events. The functions of this
|
/// Implement this structure to handle dialog events. The functions of this
|
||||||
// structure will be called on the browser process UI thread.
|
/// structure will be called on the browser process UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_dialog_handler_t {
|
typedef struct _cef_dialog_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called to run a file chooser dialog. |mode| represents the type of dialog
|
/// Called to run a file chooser dialog. |mode| represents the type of dialog
|
||||||
// to display. |title| to the title to be used for the dialog and may be NULL
|
/// to display. |title| to the title to be used for the dialog and may be NULL
|
||||||
// to show the default title ("Open" or "Save" depending on the mode).
|
/// 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
|
/// |default_file_path| is the path with optional directory and/or file name
|
||||||
// component that should be initially selected in the dialog. |accept_filters|
|
/// component that should be initially selected in the dialog.
|
||||||
// are used to restrict the selectable file types and may any combination of
|
/// |accept_filters| are used to restrict the selectable file types and may
|
||||||
// (a) valid lower-cased MIME types (e.g. "text/*" or "image/*"), (b)
|
/// any combination of (a) valid lower-cased MIME types (e.g. "text/*" or
|
||||||
// individual file extensions (e.g. ".txt" or ".png"), or (c) combined
|
/// "image/*"), (b) individual file extensions (e.g. ".txt" or ".png"), or (c)
|
||||||
// description and file extension delimited using "|" and ";" (e.g. "Image
|
/// combined description and file extension delimited using "|" and ";" (e.g.
|
||||||
// Types|.png;.gif;.jpg"). |selected_accept_filter| is the 0-based index of
|
/// "Image Types|.png;.gif;.jpg"). To display a custom dialog return true (1)
|
||||||
// the filter that should be selected by default. To display a custom dialog
|
/// and execute |callback| either inline or at a later time. To display the
|
||||||
// return true (1) and execute |callback| either inline or at a later time. To
|
/// default dialog return false (0).
|
||||||
// display the default dialog return false (0).
|
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_file_dialog)(
|
int(CEF_CALLBACK* on_file_dialog)(
|
||||||
struct _cef_dialog_handler_t* self,
|
struct _cef_dialog_handler_t* self,
|
||||||
@@ -105,7 +101,6 @@ typedef struct _cef_dialog_handler_t {
|
|||||||
const cef_string_t* title,
|
const cef_string_t* title,
|
||||||
const cef_string_t* default_file_path,
|
const cef_string_t* default_file_path,
|
||||||
cef_string_list_t accept_filters,
|
cef_string_list_t accept_filters,
|
||||||
int selected_accept_filter,
|
|
||||||
struct _cef_file_dialog_callback_t* callback);
|
struct _cef_file_dialog_callback_t* callback);
|
||||||
} cef_dialog_handler_t;
|
} cef_dialog_handler_t;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=067fd169a30bec1ad8eeacc5ab1ac750cf59640e$
|
// $hash=1de3354bd0a042cc28199f1f56753b1df9e279a2$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_DISPLAY_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_DISPLAY_HANDLER_CAPI_H_
|
||||||
@@ -49,17 +49,17 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle events related to browser display state.
|
/// Implement this structure to handle events related to browser display state.
|
||||||
// The functions of this structure will be called on the UI thread.
|
/// The functions of this structure will be called on the UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_display_handler_t {
|
typedef struct _cef_display_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when a frame's address has changed.
|
/// Called when a frame's address has changed.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_address_change)(struct _cef_display_handler_t* self,
|
void(CEF_CALLBACK* on_address_change)(struct _cef_display_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -67,25 +67,25 @@ typedef struct _cef_display_handler_t {
|
|||||||
const cef_string_t* url);
|
const cef_string_t* url);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the page title changes.
|
/// Called when the page title changes.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_title_change)(struct _cef_display_handler_t* self,
|
void(CEF_CALLBACK* on_title_change)(struct _cef_display_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
const cef_string_t* title);
|
const cef_string_t* title);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the page icon changes.
|
/// Called when the page icon changes.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_favicon_urlchange)(struct _cef_display_handler_t* self,
|
void(CEF_CALLBACK* on_favicon_urlchange)(struct _cef_display_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
cef_string_list_t icon_urls);
|
cef_string_list_t icon_urls);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when web content in the page has toggled fullscreen mode. If
|
/// Called when web content in the page has toggled fullscreen mode. If
|
||||||
// |fullscreen| is true (1) the content will automatically be sized to fill
|
/// |fullscreen| is true (1) the content will automatically be sized to fill
|
||||||
// the browser content area. If |fullscreen| is false (0) the content will
|
/// the browser content area. If |fullscreen| is false (0) the content will
|
||||||
// automatically return to its original size and position. The client is
|
/// automatically return to its original size and position. The client is
|
||||||
// responsible for resizing the browser if desired.
|
/// responsible for resizing the browser if desired.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_fullscreen_mode_change)(
|
void(CEF_CALLBACK* on_fullscreen_mode_change)(
|
||||||
struct _cef_display_handler_t* self,
|
struct _cef_display_handler_t* self,
|
||||||
@@ -93,28 +93,28 @@ typedef struct _cef_display_handler_t {
|
|||||||
int fullscreen);
|
int fullscreen);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the browser is about to display a tooltip. |text| contains the
|
/// Called when the browser is about to display a tooltip. |text| contains the
|
||||||
// text that will be displayed in the tooltip. To handle the display of the
|
/// text that will be displayed in the tooltip. To handle the display of the
|
||||||
// tooltip yourself return true (1). Otherwise, you can optionally modify
|
/// tooltip yourself return true (1). Otherwise, you can optionally modify
|
||||||
// |text| and then return false (0) to allow the browser to display the
|
/// |text| and then return false (0) to allow the browser to display the
|
||||||
// tooltip. When window rendering is disabled the application is responsible
|
/// tooltip. When window rendering is disabled the application is responsible
|
||||||
// for drawing tooltips and the return value is ignored.
|
/// for drawing tooltips and the return value is ignored.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_tooltip)(struct _cef_display_handler_t* self,
|
int(CEF_CALLBACK* on_tooltip)(struct _cef_display_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
cef_string_t* text);
|
cef_string_t* text);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the browser receives a status message. |value| contains the
|
/// Called when the browser receives a status message. |value| contains the
|
||||||
// text that will be displayed in the status message.
|
/// text that will be displayed in the status message.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_status_message)(struct _cef_display_handler_t* self,
|
void(CEF_CALLBACK* on_status_message)(struct _cef_display_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
const cef_string_t* value);
|
const cef_string_t* value);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called to display a console message. Return true (1) to stop the message
|
/// Called to display a console message. Return true (1) to stop the message
|
||||||
// from being output to the console.
|
/// from being output to the console.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_console_message)(struct _cef_display_handler_t* self,
|
int(CEF_CALLBACK* on_console_message)(struct _cef_display_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -124,18 +124,18 @@ typedef struct _cef_display_handler_t {
|
|||||||
int line);
|
int line);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when auto-resize is enabled via
|
/// Called when auto-resize is enabled via
|
||||||
// cef_browser_host_t::SetAutoResizeEnabled and the contents have auto-
|
/// cef_browser_host_t::SetAutoResizeEnabled and the contents have auto-
|
||||||
// resized. |new_size| will be the desired size in view coordinates. Return
|
/// resized. |new_size| will be the desired size in view coordinates. Return
|
||||||
// true (1) if the resize was handled or false (0) for default handling.
|
/// true (1) if the resize was handled or false (0) for default handling.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_auto_resize)(struct _cef_display_handler_t* self,
|
int(CEF_CALLBACK* on_auto_resize)(struct _cef_display_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
const cef_size_t* new_size);
|
const cef_size_t* new_size);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the overall page loading progress has changed. |progress|
|
/// Called when the overall page loading progress has changed. |progress|
|
||||||
// ranges from 0.0 to 1.0.
|
/// ranges from 0.0 to 1.0.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_loading_progress_change)(
|
void(CEF_CALLBACK* on_loading_progress_change)(
|
||||||
struct _cef_display_handler_t* self,
|
struct _cef_display_handler_t* self,
|
||||||
@@ -143,17 +143,27 @@ typedef struct _cef_display_handler_t {
|
|||||||
double progress);
|
double progress);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the browser's cursor has changed. If |type| is CT_CUSTOM then
|
/// Called when the browser's cursor has changed. If |type| is CT_CUSTOM then
|
||||||
// |custom_cursor_info| will be populated with the custom cursor information.
|
/// |custom_cursor_info| will be populated with the custom cursor information.
|
||||||
// Return true (1) if the cursor change was handled or false (0) for default
|
/// Return true (1) if the cursor change was handled or false (0) for default
|
||||||
// handling.
|
/// handling.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_cursor_change)(
|
int(CEF_CALLBACK* on_cursor_change)(
|
||||||
struct _cef_display_handler_t* self,
|
struct _cef_display_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
cef_cursor_handle_t cursor,
|
cef_cursor_handle_t cursor,
|
||||||
cef_cursor_type_t type,
|
cef_cursor_type_t type,
|
||||||
const struct _cef_cursor_info_t* custom_cursor_info);
|
const cef_cursor_info_t* custom_cursor_info);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called when the browser's access to an audio and/or video source has
|
||||||
|
/// changed.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* on_media_access_change)(
|
||||||
|
struct _cef_display_handler_t* self,
|
||||||
|
struct _cef_browser_t* browser,
|
||||||
|
int has_video_access,
|
||||||
|
int has_audio_access);
|
||||||
} cef_display_handler_t;
|
} cef_display_handler_t;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=0517dc6c42fdde9fecfc4549fab1ea12b614e143$
|
// $hash=d703b8af664ed9dfac8ad935616ef43fafc062e2$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_DOM_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_DOM_CAPI_H_
|
||||||
@@ -50,120 +50,120 @@ struct _cef_domdocument_t;
|
|||||||
struct _cef_domnode_t;
|
struct _cef_domnode_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure to implement for visiting the DOM. The functions of this structure
|
/// Structure to implement for visiting the DOM. The functions of this structure
|
||||||
// will be called on the render process main thread.
|
/// will be called on the render process main thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_domvisitor_t {
|
typedef struct _cef_domvisitor_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Method executed for visiting the DOM. The document object passed to this
|
/// Method executed for visiting the DOM. The document object passed to this
|
||||||
// function represents a snapshot of the DOM at the time this function is
|
/// function represents a snapshot of the DOM at the time this function is
|
||||||
// executed. DOM objects are only valid for the scope of this function. Do not
|
/// executed. DOM objects are only valid for the scope of this function. Do
|
||||||
// keep references to or attempt to access any DOM objects outside the scope
|
/// not keep references to or attempt to access any DOM objects outside the
|
||||||
// of this function.
|
/// scope of this function.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* visit)(struct _cef_domvisitor_t* self,
|
void(CEF_CALLBACK* visit)(struct _cef_domvisitor_t* self,
|
||||||
struct _cef_domdocument_t* document);
|
struct _cef_domdocument_t* document);
|
||||||
} cef_domvisitor_t;
|
} cef_domvisitor_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used to represent a DOM document. The functions of this structure
|
/// Structure used to represent a DOM document. The functions of this structure
|
||||||
// should only be called on the render process main thread thread.
|
/// should only be called on the render process main thread thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_domdocument_t {
|
typedef struct _cef_domdocument_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the document type.
|
/// Returns the document type.
|
||||||
///
|
///
|
||||||
cef_dom_document_type_t(CEF_CALLBACK* get_type)(
|
cef_dom_document_type_t(CEF_CALLBACK* get_type)(
|
||||||
struct _cef_domdocument_t* self);
|
struct _cef_domdocument_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the root document node.
|
/// Returns the root document node.
|
||||||
///
|
///
|
||||||
struct _cef_domnode_t*(CEF_CALLBACK* get_document)(
|
struct _cef_domnode_t*(CEF_CALLBACK* get_document)(
|
||||||
struct _cef_domdocument_t* self);
|
struct _cef_domdocument_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the BODY node of an HTML document.
|
/// Returns the BODY node of an HTML document.
|
||||||
///
|
///
|
||||||
struct _cef_domnode_t*(CEF_CALLBACK* get_body)(
|
struct _cef_domnode_t*(CEF_CALLBACK* get_body)(
|
||||||
struct _cef_domdocument_t* self);
|
struct _cef_domdocument_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the HEAD node of an HTML document.
|
/// Returns the HEAD node of an HTML document.
|
||||||
///
|
///
|
||||||
struct _cef_domnode_t*(CEF_CALLBACK* get_head)(
|
struct _cef_domnode_t*(CEF_CALLBACK* get_head)(
|
||||||
struct _cef_domdocument_t* self);
|
struct _cef_domdocument_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the title of an HTML document.
|
/// Returns the title of an HTML document.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_title)(
|
cef_string_userfree_t(CEF_CALLBACK* get_title)(
|
||||||
struct _cef_domdocument_t* self);
|
struct _cef_domdocument_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the document element with the specified ID value.
|
/// Returns the document element with the specified ID value.
|
||||||
///
|
///
|
||||||
struct _cef_domnode_t*(CEF_CALLBACK* get_element_by_id)(
|
struct _cef_domnode_t*(CEF_CALLBACK* get_element_by_id)(
|
||||||
struct _cef_domdocument_t* self,
|
struct _cef_domdocument_t* self,
|
||||||
const cef_string_t* id);
|
const cef_string_t* id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the node that currently has keyboard focus.
|
/// Returns the node that currently has keyboard focus.
|
||||||
///
|
///
|
||||||
struct _cef_domnode_t*(CEF_CALLBACK* get_focused_node)(
|
struct _cef_domnode_t*(CEF_CALLBACK* get_focused_node)(
|
||||||
struct _cef_domdocument_t* self);
|
struct _cef_domdocument_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if a portion of the document is selected.
|
/// Returns true (1) if a portion of the document is selected.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* has_selection)(struct _cef_domdocument_t* self);
|
int(CEF_CALLBACK* has_selection)(struct _cef_domdocument_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the selection offset within the start node.
|
/// Returns the selection offset within the start node.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_selection_start_offset)(
|
int(CEF_CALLBACK* get_selection_start_offset)(
|
||||||
struct _cef_domdocument_t* self);
|
struct _cef_domdocument_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the selection offset within the end node.
|
/// Returns the selection offset within the end node.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_selection_end_offset)(struct _cef_domdocument_t* self);
|
int(CEF_CALLBACK* get_selection_end_offset)(struct _cef_domdocument_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the contents of this selection as markup.
|
/// Returns the contents of this selection as markup.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_selection_as_markup)(
|
cef_string_userfree_t(CEF_CALLBACK* get_selection_as_markup)(
|
||||||
struct _cef_domdocument_t* self);
|
struct _cef_domdocument_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the contents of this selection as text.
|
/// Returns the contents of this selection as text.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_selection_as_text)(
|
cef_string_userfree_t(CEF_CALLBACK* get_selection_as_text)(
|
||||||
struct _cef_domdocument_t* self);
|
struct _cef_domdocument_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the base URL for the document.
|
/// Returns the base URL for the document.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_base_url)(
|
cef_string_userfree_t(CEF_CALLBACK* get_base_url)(
|
||||||
struct _cef_domdocument_t* self);
|
struct _cef_domdocument_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns a complete URL based on the document base URL and the specified
|
/// Returns a complete URL based on the document base URL and the specified
|
||||||
// partial URL.
|
/// partial URL.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_complete_url)(
|
cef_string_userfree_t(CEF_CALLBACK* get_complete_url)(
|
||||||
@@ -172,141 +172,139 @@ typedef struct _cef_domdocument_t {
|
|||||||
} cef_domdocument_t;
|
} cef_domdocument_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used to represent a DOM node. The functions of this structure
|
/// Structure used to represent a DOM node. The functions of this structure
|
||||||
// should only be called on the render process main thread.
|
/// should only be called on the render process main thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_domnode_t {
|
typedef struct _cef_domnode_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the type for this node.
|
/// Returns the type for this node.
|
||||||
///
|
///
|
||||||
cef_dom_node_type_t(CEF_CALLBACK* get_type)(struct _cef_domnode_t* self);
|
cef_dom_node_type_t(CEF_CALLBACK* get_type)(struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this is a text node.
|
/// Returns true (1) if this is a text node.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_text)(struct _cef_domnode_t* self);
|
int(CEF_CALLBACK* is_text)(struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this is an element node.
|
/// Returns true (1) if this is an element node.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_element)(struct _cef_domnode_t* self);
|
int(CEF_CALLBACK* is_element)(struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this is an editable node.
|
/// Returns true (1) if this is an editable node.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_editable)(struct _cef_domnode_t* self);
|
int(CEF_CALLBACK* is_editable)(struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this is a form control element node.
|
/// Returns true (1) if this is a form control element node.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_form_control_element)(struct _cef_domnode_t* self);
|
int(CEF_CALLBACK* is_form_control_element)(struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the type of this form control element node.
|
/// Returns the type of this form control element node.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_form_control_element_type)(
|
cef_string_userfree_t(CEF_CALLBACK* get_form_control_element_type)(
|
||||||
struct _cef_domnode_t* self);
|
struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this object is pointing to the same handle as |that|
|
/// Returns true (1) if this object is pointing to the same handle as |that|
|
||||||
// object.
|
/// object.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_same)(struct _cef_domnode_t* self,
|
int(CEF_CALLBACK* is_same)(struct _cef_domnode_t* self,
|
||||||
struct _cef_domnode_t* that);
|
struct _cef_domnode_t* that);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the name of this node.
|
/// Returns the name of this node.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_name)(struct _cef_domnode_t* self);
|
cef_string_userfree_t(CEF_CALLBACK* get_name)(struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the value of this node.
|
/// Returns the value of this node.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_value)(struct _cef_domnode_t* self);
|
cef_string_userfree_t(CEF_CALLBACK* get_value)(struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the value of this node. Returns true (1) on success.
|
/// Set the value of this node. Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_value)(struct _cef_domnode_t* self,
|
int(CEF_CALLBACK* set_value)(struct _cef_domnode_t* self,
|
||||||
const cef_string_t* value);
|
const cef_string_t* value);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the contents of this node as markup.
|
/// Returns the contents of this node as markup.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_as_markup)(
|
cef_string_userfree_t(CEF_CALLBACK* get_as_markup)(
|
||||||
struct _cef_domnode_t* self);
|
struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the document associated with this node.
|
/// Returns the document associated with this node.
|
||||||
///
|
///
|
||||||
struct _cef_domdocument_t*(CEF_CALLBACK* get_document)(
|
struct _cef_domdocument_t*(CEF_CALLBACK* get_document)(
|
||||||
struct _cef_domnode_t* self);
|
struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the parent node.
|
/// Returns the parent node.
|
||||||
///
|
///
|
||||||
struct _cef_domnode_t*(CEF_CALLBACK* get_parent)(struct _cef_domnode_t* self);
|
struct _cef_domnode_t*(CEF_CALLBACK* get_parent)(struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the previous sibling node.
|
/// Returns the previous sibling node.
|
||||||
///
|
///
|
||||||
struct _cef_domnode_t*(CEF_CALLBACK* get_previous_sibling)(
|
struct _cef_domnode_t*(CEF_CALLBACK* get_previous_sibling)(
|
||||||
struct _cef_domnode_t* self);
|
struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the next sibling node.
|
/// Returns the next sibling node.
|
||||||
///
|
///
|
||||||
struct _cef_domnode_t*(CEF_CALLBACK* get_next_sibling)(
|
struct _cef_domnode_t*(CEF_CALLBACK* get_next_sibling)(
|
||||||
struct _cef_domnode_t* self);
|
struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this node has child nodes.
|
/// Returns true (1) if this node has child nodes.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* has_children)(struct _cef_domnode_t* self);
|
int(CEF_CALLBACK* has_children)(struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the first child node.
|
/// Return the first child node.
|
||||||
///
|
///
|
||||||
struct _cef_domnode_t*(CEF_CALLBACK* get_first_child)(
|
struct _cef_domnode_t*(CEF_CALLBACK* get_first_child)(
|
||||||
struct _cef_domnode_t* self);
|
struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the last child node.
|
/// Returns the last child node.
|
||||||
///
|
///
|
||||||
struct _cef_domnode_t*(CEF_CALLBACK* get_last_child)(
|
struct _cef_domnode_t*(CEF_CALLBACK* get_last_child)(
|
||||||
struct _cef_domnode_t* self);
|
struct _cef_domnode_t* self);
|
||||||
|
|
||||||
// The following functions are valid only for element nodes.
|
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the tag name of this element.
|
/// Returns the tag name of this element.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_element_tag_name)(
|
cef_string_userfree_t(CEF_CALLBACK* get_element_tag_name)(
|
||||||
struct _cef_domnode_t* self);
|
struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this element has attributes.
|
/// Returns true (1) if this element has attributes.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* has_element_attributes)(struct _cef_domnode_t* self);
|
int(CEF_CALLBACK* has_element_attributes)(struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this element has an attribute named |attrName|.
|
/// Returns true (1) if this element has an attribute named |attrName|.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* has_element_attribute)(struct _cef_domnode_t* self,
|
int(CEF_CALLBACK* has_element_attribute)(struct _cef_domnode_t* self,
|
||||||
const cef_string_t* attrName);
|
const cef_string_t* attrName);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the element attribute named |attrName|.
|
/// Returns the element attribute named |attrName|.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_element_attribute)(
|
cef_string_userfree_t(CEF_CALLBACK* get_element_attribute)(
|
||||||
@@ -314,28 +312,29 @@ typedef struct _cef_domnode_t {
|
|||||||
const cef_string_t* attrName);
|
const cef_string_t* attrName);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns a map of all element attributes.
|
/// Returns a map of all element attributes.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* get_element_attributes)(struct _cef_domnode_t* self,
|
void(CEF_CALLBACK* get_element_attributes)(struct _cef_domnode_t* self,
|
||||||
cef_string_map_t attrMap);
|
cef_string_map_t attrMap);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the value for the element attribute named |attrName|. Returns true (1)
|
/// Set the value for the element attribute named |attrName|. Returns true (1)
|
||||||
// on success.
|
/// on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_element_attribute)(struct _cef_domnode_t* self,
|
int(CEF_CALLBACK* set_element_attribute)(struct _cef_domnode_t* self,
|
||||||
const cef_string_t* attrName,
|
const cef_string_t* attrName,
|
||||||
const cef_string_t* value);
|
const cef_string_t* value);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the inner text of the element.
|
/// Returns the inner text of the element.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_element_inner_text)(
|
cef_string_userfree_t(CEF_CALLBACK* get_element_inner_text)(
|
||||||
struct _cef_domnode_t* self);
|
struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the bounds of the element.
|
/// Returns the bounds of the element in device pixels. Use
|
||||||
|
/// "window.devicePixelRatio" to convert to/from CSS pixels.
|
||||||
///
|
///
|
||||||
cef_rect_t(CEF_CALLBACK* get_element_bounds)(struct _cef_domnode_t* self);
|
cef_rect_t(CEF_CALLBACK* get_element_bounds)(struct _cef_domnode_t* self);
|
||||||
} cef_domnode_t;
|
} cef_domnode_t;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=f0ceb73b289072a01c45c6e7abf339a4ec924d29$
|
// $hash=f1f6a110a7ce15611a7062b3d7fe8b5c630f2980$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_HANDLER_CAPI_H_
|
||||||
@@ -49,19 +49,19 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback structure used to asynchronously continue a download.
|
/// Callback structure used to asynchronously continue a download.
|
||||||
///
|
///
|
||||||
typedef struct _cef_before_download_callback_t {
|
typedef struct _cef_before_download_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Call to continue the download. Set |download_path| to the full file path
|
/// Call to continue the download. Set |download_path| to the full file path
|
||||||
// for the download including the file name or leave blank to use the
|
/// for the download including the file name or leave blank to use the
|
||||||
// suggested name and the default temp directory. Set |show_dialog| to true
|
/// suggested name and the default temp directory. Set |show_dialog| to true
|
||||||
// (1) if you do wish to show the default "Save As" dialog.
|
/// (1) if you do wish to show the default "Save As" dialog.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cont)(struct _cef_before_download_callback_t* self,
|
void(CEF_CALLBACK* cont)(struct _cef_before_download_callback_t* self,
|
||||||
const cef_string_t* download_path,
|
const cef_string_t* download_path,
|
||||||
@@ -69,46 +69,58 @@ typedef struct _cef_before_download_callback_t {
|
|||||||
} cef_before_download_callback_t;
|
} cef_before_download_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback structure used to asynchronously cancel a download.
|
/// Callback structure used to asynchronously cancel a download.
|
||||||
///
|
///
|
||||||
typedef struct _cef_download_item_callback_t {
|
typedef struct _cef_download_item_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Call to cancel the download.
|
/// Call to cancel the download.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cancel)(struct _cef_download_item_callback_t* self);
|
void(CEF_CALLBACK* cancel)(struct _cef_download_item_callback_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Call to pause the download.
|
/// Call to pause the download.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* pause)(struct _cef_download_item_callback_t* self);
|
void(CEF_CALLBACK* pause)(struct _cef_download_item_callback_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Call to resume the download.
|
/// Call to resume the download.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* resume)(struct _cef_download_item_callback_t* self);
|
void(CEF_CALLBACK* resume)(struct _cef_download_item_callback_t* self);
|
||||||
} cef_download_item_callback_t;
|
} cef_download_item_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used to handle file downloads. The functions of this structure will
|
/// Structure used to handle file downloads. The functions of this structure
|
||||||
// called on the browser process UI thread.
|
/// will called on the browser process UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_download_handler_t {
|
typedef struct _cef_download_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called before a download begins. |suggested_name| is the suggested name for
|
/// Called before a download begins in response to a user-initiated action
|
||||||
// the download file. By default the download will be canceled. Execute
|
/// (e.g. alt + link click or link click that returns a `Content-Disposition:
|
||||||
// |callback| either asynchronously or in this function to continue the
|
/// attachment` response from the server). |url| is the target download URL
|
||||||
// download if desired. Do not keep a reference to |download_item| outside of
|
/// and |request_function| is the target function (GET, POST, etc). Return
|
||||||
// this function.
|
/// true (1) to proceed with the download or false (0) to cancel the download.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* can_download)(struct _cef_download_handler_t* self,
|
||||||
|
struct _cef_browser_t* browser,
|
||||||
|
const cef_string_t* url,
|
||||||
|
const cef_string_t* request_method);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// 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.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_before_download)(
|
void(CEF_CALLBACK* on_before_download)(
|
||||||
struct _cef_download_handler_t* self,
|
struct _cef_download_handler_t* self,
|
||||||
@@ -118,11 +130,11 @@ typedef struct _cef_download_handler_t {
|
|||||||
struct _cef_before_download_callback_t* callback);
|
struct _cef_before_download_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when a download's status or progress information has been updated.
|
/// Called when a download's status or progress information has been updated.
|
||||||
// This may be called multiple times before and after on_before_download().
|
/// This may be called multiple times before and after on_before_download().
|
||||||
// Execute |callback| either asynchronously or in this function to cancel the
|
/// Execute |callback| either asynchronously or in this function to cancel the
|
||||||
// download if desired. Do not keep a reference to |download_item| outside of
|
/// download if desired. Do not keep a reference to |download_item| outside of
|
||||||
// this function.
|
/// this function.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_download_updated)(
|
void(CEF_CALLBACK* on_download_updated)(
|
||||||
struct _cef_download_handler_t* self,
|
struct _cef_download_handler_t* self,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=d84044bb582b029af5fa46c75f35b3da948dffd2$
|
// $hash=332b9cb62b9c85573dc705aba4c9db3b34177e20$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_ITEM_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_ITEM_CAPI_H_
|
||||||
@@ -47,108 +47,109 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used to represent a download item.
|
/// Structure used to represent a download item.
|
||||||
///
|
///
|
||||||
typedef struct _cef_download_item_t {
|
typedef struct _cef_download_item_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this object is valid. Do not call any other functions
|
/// Returns true (1) if this object is valid. Do not call any other functions
|
||||||
// if this function returns false (0).
|
/// if this function returns false (0).
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_valid)(struct _cef_download_item_t* self);
|
int(CEF_CALLBACK* is_valid)(struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the download is in progress.
|
/// Returns true (1) if the download is in progress.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_in_progress)(struct _cef_download_item_t* self);
|
int(CEF_CALLBACK* is_in_progress)(struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the download is complete.
|
/// Returns true (1) if the download is complete.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_complete)(struct _cef_download_item_t* self);
|
int(CEF_CALLBACK* is_complete)(struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the download has been canceled or interrupted.
|
/// Returns true (1) if the download has been canceled or interrupted.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_canceled)(struct _cef_download_item_t* self);
|
int(CEF_CALLBACK* is_canceled)(struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns a simple speed estimate in bytes/s.
|
/// Returns a simple speed estimate in bytes/s.
|
||||||
///
|
///
|
||||||
int64(CEF_CALLBACK* get_current_speed)(struct _cef_download_item_t* self);
|
int64(CEF_CALLBACK* get_current_speed)(struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the rough percent complete or -1 if the receive total size is
|
/// Returns the rough percent complete or -1 if the receive total size is
|
||||||
// unknown.
|
/// unknown.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_percent_complete)(struct _cef_download_item_t* self);
|
int(CEF_CALLBACK* get_percent_complete)(struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the total number of bytes.
|
/// Returns the total number of bytes.
|
||||||
///
|
///
|
||||||
int64(CEF_CALLBACK* get_total_bytes)(struct _cef_download_item_t* self);
|
int64(CEF_CALLBACK* get_total_bytes)(struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the number of received bytes.
|
/// Returns the number of received bytes.
|
||||||
///
|
///
|
||||||
int64(CEF_CALLBACK* get_received_bytes)(struct _cef_download_item_t* self);
|
int64(CEF_CALLBACK* get_received_bytes)(struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the time that the download started.
|
/// Returns the time that the download started.
|
||||||
///
|
///
|
||||||
cef_time_t(CEF_CALLBACK* get_start_time)(struct _cef_download_item_t* self);
|
cef_basetime_t(CEF_CALLBACK* get_start_time)(
|
||||||
|
struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the time that the download ended.
|
/// Returns the time that the download ended.
|
||||||
///
|
///
|
||||||
cef_time_t(CEF_CALLBACK* get_end_time)(struct _cef_download_item_t* self);
|
cef_basetime_t(CEF_CALLBACK* get_end_time)(struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the full path to the downloaded or downloading file.
|
/// Returns the full path to the downloaded or downloading file.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_full_path)(
|
cef_string_userfree_t(CEF_CALLBACK* get_full_path)(
|
||||||
struct _cef_download_item_t* self);
|
struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the unique identifier for this download.
|
/// Returns the unique identifier for this download.
|
||||||
///
|
///
|
||||||
uint32(CEF_CALLBACK* get_id)(struct _cef_download_item_t* self);
|
uint32(CEF_CALLBACK* get_id)(struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the URL.
|
/// Returns the URL.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_url)(
|
cef_string_userfree_t(CEF_CALLBACK* get_url)(
|
||||||
struct _cef_download_item_t* self);
|
struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the original URL before any redirections.
|
/// Returns the original URL before any redirections.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_original_url)(
|
cef_string_userfree_t(CEF_CALLBACK* get_original_url)(
|
||||||
struct _cef_download_item_t* self);
|
struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the suggested file name.
|
/// Returns the suggested file name.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_suggested_file_name)(
|
cef_string_userfree_t(CEF_CALLBACK* get_suggested_file_name)(
|
||||||
struct _cef_download_item_t* self);
|
struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the content disposition.
|
/// Returns the content disposition.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_content_disposition)(
|
cef_string_userfree_t(CEF_CALLBACK* get_content_disposition)(
|
||||||
struct _cef_download_item_t* self);
|
struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the mime type.
|
/// Returns the mime type.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_mime_type)(
|
cef_string_userfree_t(CEF_CALLBACK* get_mime_type)(
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=9663321e2be1d000ac54e195c81f210ae40773d1$
|
// $hash=a1ce746f0dd97d21973d4c80d8ef46391c0fd463$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_DRAG_DATA_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_DRAG_DATA_CAPI_H_
|
||||||
@@ -49,177 +49,182 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used to represent drag data. The functions of this structure may be
|
/// Structure used to represent drag data. The functions of this structure may
|
||||||
// called on any thread.
|
/// be called on any thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_drag_data_t {
|
typedef struct _cef_drag_data_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns a copy of the current object.
|
/// Returns a copy of the current object.
|
||||||
///
|
///
|
||||||
struct _cef_drag_data_t*(CEF_CALLBACK* clone)(struct _cef_drag_data_t* self);
|
struct _cef_drag_data_t*(CEF_CALLBACK* clone)(struct _cef_drag_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this object is read-only.
|
/// Returns true (1) if this object is read-only.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_read_only)(struct _cef_drag_data_t* self);
|
int(CEF_CALLBACK* is_read_only)(struct _cef_drag_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the drag data is a link.
|
/// Returns true (1) if the drag data is a link.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_link)(struct _cef_drag_data_t* self);
|
int(CEF_CALLBACK* is_link)(struct _cef_drag_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the drag data is a text or html fragment.
|
/// Returns true (1) if the drag data is a text or html fragment.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_fragment)(struct _cef_drag_data_t* self);
|
int(CEF_CALLBACK* is_fragment)(struct _cef_drag_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the drag data is a file.
|
/// Returns true (1) if the drag data is a file.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_file)(struct _cef_drag_data_t* self);
|
int(CEF_CALLBACK* is_file)(struct _cef_drag_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the link URL that is being dragged.
|
/// Return the link URL that is being dragged.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_link_url)(
|
cef_string_userfree_t(CEF_CALLBACK* get_link_url)(
|
||||||
struct _cef_drag_data_t* self);
|
struct _cef_drag_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the title associated with the link being dragged.
|
/// Return the title associated with the link being dragged.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_link_title)(
|
cef_string_userfree_t(CEF_CALLBACK* get_link_title)(
|
||||||
struct _cef_drag_data_t* self);
|
struct _cef_drag_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the metadata, if any, associated with the link being dragged.
|
/// Return the metadata, if any, associated with the link being dragged.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_link_metadata)(
|
cef_string_userfree_t(CEF_CALLBACK* get_link_metadata)(
|
||||||
struct _cef_drag_data_t* self);
|
struct _cef_drag_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the plain text fragment that is being dragged.
|
/// Return the plain text fragment that is being dragged.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_fragment_text)(
|
cef_string_userfree_t(CEF_CALLBACK* get_fragment_text)(
|
||||||
struct _cef_drag_data_t* self);
|
struct _cef_drag_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the text/html fragment that is being dragged.
|
/// Return the text/html fragment that is being dragged.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_fragment_html)(
|
cef_string_userfree_t(CEF_CALLBACK* get_fragment_html)(
|
||||||
struct _cef_drag_data_t* self);
|
struct _cef_drag_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the base URL that the fragment came from. This value is used for
|
/// Return the base URL that the fragment came from. This value is used for
|
||||||
// resolving relative URLs and may be NULL.
|
/// resolving relative URLs and may be NULL.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_fragment_base_url)(
|
cef_string_userfree_t(CEF_CALLBACK* get_fragment_base_url)(
|
||||||
struct _cef_drag_data_t* self);
|
struct _cef_drag_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the name of the file being dragged out of the browser window.
|
/// Return the name of the file being dragged out of the browser window.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_file_name)(
|
cef_string_userfree_t(CEF_CALLBACK* get_file_name)(
|
||||||
struct _cef_drag_data_t* self);
|
struct _cef_drag_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Write the contents of the file being dragged out of the web view into
|
/// Write the contents of the file being dragged out of the web view into
|
||||||
// |writer|. Returns the number of bytes sent to |writer|. If |writer| is NULL
|
/// |writer|. Returns the number of bytes sent to |writer|. If |writer| is
|
||||||
// this function will return the size of the file contents in bytes. Call
|
/// NULL this function will return the size of the file contents in bytes.
|
||||||
// get_file_name() to get a suggested name for the file.
|
/// Call get_file_name() to get a suggested name for the file.
|
||||||
///
|
///
|
||||||
size_t(CEF_CALLBACK* get_file_contents)(struct _cef_drag_data_t* self,
|
size_t(CEF_CALLBACK* get_file_contents)(struct _cef_drag_data_t* self,
|
||||||
struct _cef_stream_writer_t* writer);
|
struct _cef_stream_writer_t* writer);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Retrieve the list of file names that are being dragged into the browser
|
/// Retrieve the list of file names that are being dragged into the browser
|
||||||
// window.
|
/// window.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_file_names)(struct _cef_drag_data_t* self,
|
int(CEF_CALLBACK* get_file_names)(struct _cef_drag_data_t* self,
|
||||||
cef_string_list_t names);
|
cef_string_list_t names);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the link URL that is being dragged.
|
/// Set the link URL that is being dragged.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_link_url)(struct _cef_drag_data_t* self,
|
void(CEF_CALLBACK* set_link_url)(struct _cef_drag_data_t* self,
|
||||||
const cef_string_t* url);
|
const cef_string_t* url);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the title associated with the link being dragged.
|
/// Set the title associated with the link being dragged.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_link_title)(struct _cef_drag_data_t* self,
|
void(CEF_CALLBACK* set_link_title)(struct _cef_drag_data_t* self,
|
||||||
const cef_string_t* title);
|
const cef_string_t* title);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the metadata associated with the link being dragged.
|
/// Set the metadata associated with the link being dragged.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_link_metadata)(struct _cef_drag_data_t* self,
|
void(CEF_CALLBACK* set_link_metadata)(struct _cef_drag_data_t* self,
|
||||||
const cef_string_t* data);
|
const cef_string_t* data);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the plain text fragment that is being dragged.
|
/// Set the plain text fragment that is being dragged.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_fragment_text)(struct _cef_drag_data_t* self,
|
void(CEF_CALLBACK* set_fragment_text)(struct _cef_drag_data_t* self,
|
||||||
const cef_string_t* text);
|
const cef_string_t* text);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the text/html fragment that is being dragged.
|
/// Set the text/html fragment that is being dragged.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_fragment_html)(struct _cef_drag_data_t* self,
|
void(CEF_CALLBACK* set_fragment_html)(struct _cef_drag_data_t* self,
|
||||||
const cef_string_t* html);
|
const cef_string_t* html);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the base URL that the fragment came from.
|
/// Set the base URL that the fragment came from.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_fragment_base_url)(struct _cef_drag_data_t* self,
|
void(CEF_CALLBACK* set_fragment_base_url)(struct _cef_drag_data_t* self,
|
||||||
const cef_string_t* base_url);
|
const cef_string_t* base_url);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Reset the file contents. You should do this before calling
|
/// Reset the file contents. You should do this before calling
|
||||||
// cef_browser_host_t::DragTargetDragEnter as the web view does not allow us
|
/// cef_browser_host_t::DragTargetDragEnter as the web view does not allow us
|
||||||
// to drag in this kind of data.
|
/// to drag in this kind of data.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* reset_file_contents)(struct _cef_drag_data_t* self);
|
void(CEF_CALLBACK* reset_file_contents)(struct _cef_drag_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Add a file that is being dragged into the webview.
|
/// Add a file that is being dragged into the webview.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* add_file)(struct _cef_drag_data_t* self,
|
void(CEF_CALLBACK* add_file)(struct _cef_drag_data_t* self,
|
||||||
const cef_string_t* path,
|
const cef_string_t* path,
|
||||||
const cef_string_t* display_name);
|
const cef_string_t* display_name);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the image representation of drag data. May return NULL if no image
|
/// Clear list of filenames.
|
||||||
// representation is available.
|
///
|
||||||
|
void(CEF_CALLBACK* clear_filenames)(struct _cef_drag_data_t* self);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Get the image representation of drag data. May return NULL if no image
|
||||||
|
/// representation is available.
|
||||||
///
|
///
|
||||||
struct _cef_image_t*(CEF_CALLBACK* get_image)(struct _cef_drag_data_t* self);
|
struct _cef_image_t*(CEF_CALLBACK* get_image)(struct _cef_drag_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the image hotspot (drag start location relative to image dimensions).
|
/// Get the image hotspot (drag start location relative to image dimensions).
|
||||||
///
|
///
|
||||||
cef_point_t(CEF_CALLBACK* get_image_hotspot)(struct _cef_drag_data_t* self);
|
cef_point_t(CEF_CALLBACK* get_image_hotspot)(struct _cef_drag_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if an image representation of drag data is available.
|
/// Returns true (1) if an image representation of drag data is available.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* has_image)(struct _cef_drag_data_t* self);
|
int(CEF_CALLBACK* has_image)(struct _cef_drag_data_t* self);
|
||||||
} cef_drag_data_t;
|
} cef_drag_data_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Create a new cef_drag_data_t object.
|
/// Create a new cef_drag_data_t object.
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_drag_data_t* cef_drag_data_create();
|
CEF_EXPORT cef_drag_data_t* cef_drag_data_create(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=1cc1f134e68406ae3b05f7e181e12f27262772f0$
|
// $hash=ad16b0f4320d7b363efb152a65e3ce142882b9d9$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_DRAG_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_DRAG_HANDLER_CAPI_H_
|
||||||
@@ -50,20 +50,20 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle events related to dragging. The functions
|
/// Implement this structure to handle events related to dragging. The functions
|
||||||
// of this structure will be called on the UI thread.
|
/// of this structure will be called on the UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_drag_handler_t {
|
typedef struct _cef_drag_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when an external drag event enters the browser window. |dragData|
|
/// Called when an external drag event enters the browser window. |dragData|
|
||||||
// contains the drag event data and |mask| represents the type of drag
|
/// contains the drag event data and |mask| represents the type of drag
|
||||||
// operation. Return false (0) for default drag handling behavior or true (1)
|
/// operation. Return false (0) for default drag handling behavior or true (1)
|
||||||
// to cancel the drag event.
|
/// to cancel the drag event.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_drag_enter)(struct _cef_drag_handler_t* self,
|
int(CEF_CALLBACK* on_drag_enter)(struct _cef_drag_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -71,11 +71,11 @@ typedef struct _cef_drag_handler_t {
|
|||||||
cef_drag_operations_mask_t mask);
|
cef_drag_operations_mask_t mask);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called whenever draggable regions for the browser window change. These can
|
/// Called whenever draggable regions for the browser window change. These can
|
||||||
// be specified using the '-webkit-app-region: drag/no-drag' CSS-property. If
|
/// be specified using the '-webkit-app-region: drag/no-drag' CSS-property. If
|
||||||
// draggable regions are never defined in a document this function will also
|
/// draggable regions are never defined in a document this function will also
|
||||||
// never be called. If the last draggable region is removed from a document
|
/// never be called. If the last draggable region is removed from a document
|
||||||
// this function will be called with an NULL vector.
|
/// this function will be called with an NULL vector.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_draggable_regions_changed)(
|
void(CEF_CALLBACK* on_draggable_regions_changed)(
|
||||||
struct _cef_drag_handler_t* self,
|
struct _cef_drag_handler_t* self,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=5d5251098be1477705de2a21502dec2d8338ce00$
|
// $hash=c81a74622b987483e5fcd2c508aec5c13e12389b$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_CAPI_H_
|
||||||
@@ -51,74 +51,74 @@ struct _cef_extension_handler_t;
|
|||||||
struct _cef_request_context_t;
|
struct _cef_request_context_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Object representing an extension. Methods may be called on any thread unless
|
/// Object representing an extension. Methods may be called on any thread unless
|
||||||
// otherwise indicated.
|
/// otherwise indicated.
|
||||||
///
|
///
|
||||||
typedef struct _cef_extension_t {
|
typedef struct _cef_extension_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the unique extension identifier. This is calculated based on the
|
/// Returns the unique extension identifier. This is calculated based on the
|
||||||
// extension public key, if available, or on the extension path. See
|
/// extension public key, if available, or on the extension path. See
|
||||||
// https://developer.chrome.com/extensions/manifest/key for details.
|
/// https://developer.chrome.com/extensions/manifest/key for details.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_identifier)(
|
cef_string_userfree_t(CEF_CALLBACK* get_identifier)(
|
||||||
struct _cef_extension_t* self);
|
struct _cef_extension_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the absolute path to the extension directory on disk. This value
|
/// 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
|
/// will be prefixed with PK_DIR_RESOURCES if a relative path was passed to
|
||||||
// cef_request_context_t::LoadExtension.
|
/// cef_request_context_t::LoadExtension.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// 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);
|
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.
|
/// Returns the extension manifest contents as a cef_dictionary_value_t
|
||||||
// See https://developer.chrome.com/extensions/manifest for details.
|
/// object. See https://developer.chrome.com/extensions/manifest for details.
|
||||||
///
|
///
|
||||||
struct _cef_dictionary_value_t*(CEF_CALLBACK* get_manifest)(
|
struct _cef_dictionary_value_t*(CEF_CALLBACK* get_manifest)(
|
||||||
struct _cef_extension_t* self);
|
struct _cef_extension_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this object is the same extension as |that| object.
|
/// Returns true (1) if this object is the same extension as |that| object.
|
||||||
// Extensions are considered the same if identifier, path and loader context
|
/// Extensions are considered the same if identifier, path and loader context
|
||||||
// match.
|
/// match.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_same)(struct _cef_extension_t* self,
|
int(CEF_CALLBACK* is_same)(struct _cef_extension_t* self,
|
||||||
struct _cef_extension_t* that);
|
struct _cef_extension_t* that);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the handler for this extension. Will return NULL for internal
|
/// Returns the handler for this extension. Will return NULL for internal
|
||||||
// extensions or if no handler was passed to
|
/// extensions or if no handler was passed to
|
||||||
// cef_request_context_t::LoadExtension.
|
/// cef_request_context_t::LoadExtension.
|
||||||
///
|
///
|
||||||
struct _cef_extension_handler_t*(CEF_CALLBACK* get_handler)(
|
struct _cef_extension_handler_t*(CEF_CALLBACK* get_handler)(
|
||||||
struct _cef_extension_t* self);
|
struct _cef_extension_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the request context that loaded this extension. Will return NULL
|
/// Returns the request context that loaded this extension. Will return NULL
|
||||||
// for internal extensions or if the extension has been unloaded. See the
|
/// for internal extensions or if the extension has been unloaded. See the
|
||||||
// cef_request_context_t::LoadExtension documentation for more information
|
/// cef_request_context_t::LoadExtension documentation for more information
|
||||||
// about loader contexts. Must be called on the browser process UI thread.
|
/// about loader contexts. Must be called on the browser process UI thread.
|
||||||
///
|
///
|
||||||
struct _cef_request_context_t*(CEF_CALLBACK* get_loader_context)(
|
struct _cef_request_context_t*(CEF_CALLBACK* get_loader_context)(
|
||||||
struct _cef_extension_t* self);
|
struct _cef_extension_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this extension is currently loaded. Must be called on
|
/// Returns true (1) if this extension is currently loaded. Must be called on
|
||||||
// the browser process UI thread.
|
/// the browser process UI thread.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_loaded)(struct _cef_extension_t* self);
|
int(CEF_CALLBACK* is_loaded)(struct _cef_extension_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Unload this extension if it is not an internal extension and is currently
|
/// Unload this extension if it is not an internal extension and is currently
|
||||||
// loaded. Will result in a call to
|
/// loaded. Will result in a call to
|
||||||
// cef_extension_handler_t::OnExtensionUnloaded on success.
|
/// cef_extension_handler_t::OnExtensionUnloaded on success.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* unload)(struct _cef_extension_t* self);
|
void(CEF_CALLBACK* unload)(struct _cef_extension_t* self);
|
||||||
} cef_extension_t;
|
} cef_extension_t;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=c952241dabb9d99109ebb64acba0124e43150628$
|
// $hash=ad6d3845b150f22b88a71dafa601ef01c9579824$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_HANDLER_CAPI_H_
|
||||||
@@ -52,75 +52,76 @@ extern "C" {
|
|||||||
struct _cef_client_t;
|
struct _cef_client_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback structure used for asynchronous continuation of
|
/// Callback structure used for asynchronous continuation of
|
||||||
// cef_extension_handler_t::GetExtensionResource.
|
/// cef_extension_handler_t::GetExtensionResource.
|
||||||
///
|
///
|
||||||
typedef struct _cef_get_extension_resource_callback_t {
|
typedef struct _cef_get_extension_resource_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Continue the request. Read the resource contents from |stream|.
|
/// Continue the request. Read the resource contents from |stream|.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cont)(struct _cef_get_extension_resource_callback_t* self,
|
void(CEF_CALLBACK* cont)(struct _cef_get_extension_resource_callback_t* self,
|
||||||
struct _cef_stream_reader_t* stream);
|
struct _cef_stream_reader_t* stream);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Cancel the request.
|
/// Cancel the request.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cancel)(
|
void(CEF_CALLBACK* cancel)(
|
||||||
struct _cef_get_extension_resource_callback_t* self);
|
struct _cef_get_extension_resource_callback_t* self);
|
||||||
} cef_get_extension_resource_callback_t;
|
} cef_get_extension_resource_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle events related to browser extensions. The
|
/// Implement this structure to handle events related to browser extensions. The
|
||||||
// functions of this structure will be called on the UI thread. See
|
/// functions of this structure will be called on the UI thread. See
|
||||||
// cef_request_context_t::LoadExtension for information about extension loading.
|
/// cef_request_context_t::LoadExtension for information about extension
|
||||||
|
/// loading.
|
||||||
///
|
///
|
||||||
typedef struct _cef_extension_handler_t {
|
typedef struct _cef_extension_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called if the cef_request_context_t::LoadExtension request fails. |result|
|
/// Called if the cef_request_context_t::LoadExtension request fails. |result|
|
||||||
// will be the error code.
|
/// will be the error code.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_extension_load_failed)(
|
void(CEF_CALLBACK* on_extension_load_failed)(
|
||||||
struct _cef_extension_handler_t* self,
|
struct _cef_extension_handler_t* self,
|
||||||
cef_errorcode_t result);
|
cef_errorcode_t result);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called if the cef_request_context_t::LoadExtension request succeeds.
|
/// Called if the cef_request_context_t::LoadExtension request succeeds.
|
||||||
// |extension| is the loaded extension.
|
/// |extension| is the loaded extension.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_extension_loaded)(struct _cef_extension_handler_t* self,
|
void(CEF_CALLBACK* on_extension_loaded)(struct _cef_extension_handler_t* self,
|
||||||
struct _cef_extension_t* extension);
|
struct _cef_extension_t* extension);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called after the cef_extension_t::Unload request has completed.
|
/// Called after the cef_extension_t::Unload request has completed.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_extension_unloaded)(
|
void(CEF_CALLBACK* on_extension_unloaded)(
|
||||||
struct _cef_extension_handler_t* self,
|
struct _cef_extension_handler_t* self,
|
||||||
struct _cef_extension_t* extension);
|
struct _cef_extension_t* extension);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when an extension needs a browser to host a background script
|
/// Called when an extension needs a browser to host a background script
|
||||||
// specified via the "background" manifest key. The browser will have no
|
/// specified via the "background" manifest key. The browser will have no
|
||||||
// visible window and cannot be displayed. |extension| is the extension that
|
/// visible window and cannot be displayed. |extension| is the extension that
|
||||||
// is loading the background script. |url| is an internally generated
|
/// is loading the background script. |url| is an internally generated
|
||||||
// reference to an HTML page that will be used to load the background script
|
/// 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
|
/// via a "<script>" src attribute. To allow creation of the browser
|
||||||
// modify |client| and |settings| and return false (0). To cancel creation of
|
/// optionally modify |client| and |settings| and return false (0). To cancel
|
||||||
// the browser (and consequently cancel load of the background script) return
|
/// creation of the browser (and consequently cancel load of the background
|
||||||
// true (1). Successful creation will be indicated by a call to
|
/// script) return true (1). Successful creation will be indicated by a call
|
||||||
// cef_life_span_handler_t::OnAfterCreated, and
|
/// to cef_life_span_handler_t::OnAfterCreated, and
|
||||||
// cef_browser_host_t::IsBackgroundHost will return true (1) for the resulting
|
/// cef_browser_host_t::IsBackgroundHost will return true (1) for the
|
||||||
// browser. See https://developer.chrome.com/extensions/event_pages for more
|
/// resulting browser. See https://developer.chrome.com/extensions/event_pages
|
||||||
// information about extension background script usage.
|
/// for more information about extension background script usage.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_before_background_browser)(
|
int(CEF_CALLBACK* on_before_background_browser)(
|
||||||
struct _cef_extension_handler_t* self,
|
struct _cef_extension_handler_t* self,
|
||||||
@@ -130,19 +131,19 @@ typedef struct _cef_extension_handler_t {
|
|||||||
struct _cef_browser_settings_t* settings);
|
struct _cef_browser_settings_t* settings);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when an extension API (e.g. chrome.tabs.create) requests creation of
|
/// Called when an extension API (e.g. chrome.tabs.create) requests creation
|
||||||
// a new browser. |extension| and |browser| are the source of the API call.
|
/// of a new browser. |extension| and |browser| are the source of the API
|
||||||
// |active_browser| may optionally be specified via the windowId property or
|
/// call. |active_browser| may optionally be specified via the windowId
|
||||||
// returned via the get_active_browser() callback and provides the default
|
/// property or returned via the get_active_browser() callback and provides
|
||||||
// |client| and |settings| values for the new browser. |index| is the position
|
/// the default |client| and |settings| values for the new browser. |index| is
|
||||||
// value optionally specified via the index property. |url| is the URL that
|
/// the position value optionally specified via the index property. |url| is
|
||||||
// will be loaded in the browser. |active| is true (1) if the new browser
|
/// the URL that will be loaded in the browser. |active| is true (1) if the
|
||||||
// should be active when opened. To allow creation of the browser optionally
|
/// new browser should be active when opened. To allow creation of the
|
||||||
// modify |windowInfo|, |client| and |settings| and return false (0). To
|
/// browser optionally modify |windowInfo|, |client| and |settings| and return
|
||||||
// cancel creation of the browser return true (1). Successful creation will be
|
/// false (0). To cancel creation of the browser return true (1). Successful
|
||||||
// indicated by a call to cef_life_span_handler_t::OnAfterCreated. Any
|
/// creation will be indicated by a call to
|
||||||
// modifications to |windowInfo| will be ignored if |active_browser| is
|
/// cef_life_span_handler_t::OnAfterCreated. Any modifications to |windowInfo|
|
||||||
// wrapped in a cef_browser_view_t.
|
/// will be ignored if |active_browser| is wrapped in a cef_browser_view_t.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_before_browser)(
|
int(CEF_CALLBACK* on_before_browser)(
|
||||||
struct _cef_extension_handler_t* self,
|
struct _cef_extension_handler_t* self,
|
||||||
@@ -157,13 +158,13 @@ typedef struct _cef_extension_handler_t {
|
|||||||
struct _cef_browser_settings_t* settings);
|
struct _cef_browser_settings_t* settings);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when no tabId is specified to an extension API call that accepts a
|
/// 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
|
/// 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
|
/// source of the API call. Return the browser that will be acted on by the
|
||||||
// call or return NULL to act on |browser|. The returned browser must share
|
/// API call or return NULL to act on |browser|. The returned browser must
|
||||||
// the same cef_request_context_t as |browser|. Incognito browsers should not
|
/// share the same cef_request_context_t as |browser|. Incognito browsers
|
||||||
// be considered unless the source extension has incognito access enabled, in
|
/// should not be considered unless the source extension has incognito access
|
||||||
// which case |include_incognito| will be true (1).
|
/// enabled, in which case |include_incognito| will be true (1).
|
||||||
///
|
///
|
||||||
struct _cef_browser_t*(CEF_CALLBACK* get_active_browser)(
|
struct _cef_browser_t*(CEF_CALLBACK* get_active_browser)(
|
||||||
struct _cef_extension_handler_t* self,
|
struct _cef_extension_handler_t* self,
|
||||||
@@ -172,12 +173,12 @@ typedef struct _cef_extension_handler_t {
|
|||||||
int include_incognito);
|
int include_incognito);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the tabId associated with |target_browser| is specified to an
|
/// 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 API call that accepts a tabId parameter (e.g. chrome.tabs.*).
|
||||||
// |extension| and |browser| are the source of the API call. Return true (1)
|
/// |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
|
/// to allow access of false (0) to deny access. Access to incognito browsers
|
||||||
// should not be allowed unless the source extension has incognito access
|
/// should not be allowed unless the source extension has incognito access
|
||||||
// enabled, in which case |include_incognito| will be true (1).
|
/// enabled, in which case |include_incognito| will be true (1).
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* can_access_browser)(struct _cef_extension_handler_t* self,
|
int(CEF_CALLBACK* can_access_browser)(struct _cef_extension_handler_t* self,
|
||||||
struct _cef_extension_t* extension,
|
struct _cef_extension_t* extension,
|
||||||
@@ -186,14 +187,15 @@ typedef struct _cef_extension_handler_t {
|
|||||||
struct _cef_browser_t* target_browser);
|
struct _cef_browser_t* target_browser);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called to retrieve an extension resource that would normally be loaded from
|
/// Called to retrieve an extension resource that would normally be loaded
|
||||||
// disk (e.g. if a file parameter is specified to chrome.tabs.executeScript).
|
/// from disk (e.g. if a file parameter is specified to
|
||||||
// |extension| and |browser| are the source of the resource request. |file| is
|
/// chrome.tabs.executeScript). |extension| and |browser| are the source of
|
||||||
// the requested relative file path. To handle the resource request return
|
/// the resource request. |file| is the requested relative file path. To
|
||||||
// true (1) and execute |callback| either synchronously or asynchronously. For
|
/// handle the resource request return true (1) and execute |callback| either
|
||||||
// the default behavior which reads the resource from the extension directory
|
/// synchronously or asynchronously. For the default behavior which reads the
|
||||||
// on disk return false (0). Localization substitutions will not be applied to
|
/// resource from the extension directory on disk return false (0).
|
||||||
// resources handled via this function.
|
/// Localization substitutions will not be applied to resources handled via
|
||||||
|
/// this function.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_extension_resource)(
|
int(CEF_CALLBACK* get_extension_resource)(
|
||||||
struct _cef_extension_handler_t* self,
|
struct _cef_extension_handler_t* self,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=00d75d4f1968686cec7db84a59df89d98d8fe146$
|
// $hash=4e0e0abcb72327998df950e618b147b196e76b60$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_FILE_UTIL_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_FILE_UTIL_CAPI_H_
|
||||||
@@ -47,40 +47,40 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Creates a directory and all parent directories if they don't already exist.
|
/// Creates a directory and all parent directories if they don't already exist.
|
||||||
// Returns true (1) on successful creation or if the directory already exists.
|
/// Returns true (1) on successful creation or if the directory already exists.
|
||||||
// The directory is only readable by the current user. Calling this function on
|
/// The directory is only readable by the current user. Calling this function on
|
||||||
// the browser process UI or IO threads is not allowed.
|
/// the browser process UI or IO threads is not allowed.
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_create_directory(const cef_string_t* full_path);
|
CEF_EXPORT int cef_create_directory(const cef_string_t* full_path);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the temporary directory provided by the system.
|
/// Get the temporary directory provided by the system.
|
||||||
//
|
///
|
||||||
// WARNING: In general, you should use the temp directory variants below instead
|
/// WARNING: In general, you should use the temp directory variants below
|
||||||
// of this function. Those variants will ensure that the proper permissions are
|
/// instead of this function. Those variants will ensure that the proper
|
||||||
// set so that other users on the system can't edit them while they're open
|
/// permissions are set so that other users on the system can't edit them while
|
||||||
// (which could lead to security issues).
|
/// they're open (which could lead to security issues).
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_get_temp_directory(cef_string_t* temp_dir);
|
CEF_EXPORT int cef_get_temp_directory(cef_string_t* temp_dir);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Creates a new directory. On Windows if |prefix| is provided the new directory
|
/// Creates a new directory. On Windows if |prefix| is provided the new
|
||||||
// name is in the format of "prefixyyyy". Returns true (1) on success and sets
|
/// directory name is in the format of "prefixyyyy". Returns true (1) on success
|
||||||
// |new_temp_path| to the full path of the directory that was created. The
|
/// and sets |new_temp_path| to the full path of the directory that was created.
|
||||||
// directory is only readable by the current user. Calling this function on the
|
/// The directory is only readable by the current user. Calling this function on
|
||||||
// browser process UI or IO threads is not allowed.
|
/// the browser process UI or IO threads is not allowed.
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_create_new_temp_directory(const cef_string_t* prefix,
|
CEF_EXPORT int cef_create_new_temp_directory(const cef_string_t* prefix,
|
||||||
cef_string_t* new_temp_path);
|
cef_string_t* new_temp_path);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Creates a directory within another directory. Extra characters will be
|
/// Creates a directory within another directory. Extra characters will be
|
||||||
// appended to |prefix| to ensure that the new directory does not have the same
|
/// appended to |prefix| to ensure that the new directory does not have the same
|
||||||
// name as an existing directory. Returns true (1) on success and sets |new_dir|
|
/// name as an existing directory. Returns true (1) on success and sets
|
||||||
// to the full path of the directory that was created. The directory is only
|
/// |new_dir| to the full path of the directory that was created. The directory
|
||||||
// readable by the current user. Calling this function on the browser process UI
|
/// is only readable by the current user. Calling this function on the browser
|
||||||
// or IO threads is not allowed.
|
/// process UI or IO threads is not allowed.
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_create_temp_directory_in_directory(
|
CEF_EXPORT int cef_create_temp_directory_in_directory(
|
||||||
const cef_string_t* base_dir,
|
const cef_string_t* base_dir,
|
||||||
@@ -88,39 +88,40 @@ CEF_EXPORT int cef_create_temp_directory_in_directory(
|
|||||||
cef_string_t* new_dir);
|
cef_string_t* new_dir);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the given path exists and is a directory. Calling this
|
/// Returns true (1) if the given path exists and is a directory. Calling this
|
||||||
// function on the browser process UI or IO threads is not allowed.
|
/// function on the browser process UI or IO threads is not allowed.
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_directory_exists(const cef_string_t* path);
|
CEF_EXPORT int cef_directory_exists(const cef_string_t* path);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Deletes the given path whether it's a file or a directory. If |path| is a
|
/// Deletes the given path whether it's a file or a directory. If |path| is a
|
||||||
// directory all contents will be deleted. If |recursive| is true (1) any sub-
|
/// directory all contents will be deleted. If |recursive| is true (1) any sub-
|
||||||
// directories and their contents will also be deleted (equivalent to executing
|
/// directories and their contents will also be deleted (equivalent to executing
|
||||||
// "rm -rf", so use with caution). On POSIX environments if |path| is a symbolic
|
/// "rm -rf", so use with caution). On POSIX environments if |path| is a
|
||||||
// link then only the symlink will be deleted. Returns true (1) on successful
|
/// symbolic link then only the symlink will be deleted. Returns true (1) on
|
||||||
// deletion or if |path| does not exist. Calling this function on the browser
|
/// successful deletion or if |path| does not exist. Calling this function on
|
||||||
// process UI or IO threads is not allowed.
|
/// the browser process UI or IO threads is not allowed.
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_delete_file(const cef_string_t* path, int recursive);
|
CEF_EXPORT int cef_delete_file(const cef_string_t* path, int recursive);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Writes the contents of |src_dir| into a zip archive at |dest_file|. If
|
/// Writes the contents of |src_dir| into a zip archive at |dest_file|. If
|
||||||
// |include_hidden_files| is true (1) files starting with "." will be included.
|
/// |include_hidden_files| is true (1) files starting with "." will be included.
|
||||||
// Returns true (1) on success. Calling this function on the browser process UI
|
/// Returns true (1) on success. Calling this function on the browser process
|
||||||
// or IO threads is not allowed.
|
/// UI or IO threads is not allowed.
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_zip_directory(const cef_string_t* src_dir,
|
CEF_EXPORT int cef_zip_directory(const cef_string_t* src_dir,
|
||||||
const cef_string_t* dest_file,
|
const cef_string_t* dest_file,
|
||||||
int include_hidden_files);
|
int include_hidden_files);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Loads the existing "Certificate Revocation Lists" file that is managed by
|
/// Loads the existing "Certificate Revocation Lists" file that is managed by
|
||||||
// Google Chrome. This file can generally be found in Chrome's User Data
|
/// Google Chrome. This file can generally be found in Chrome's User Data
|
||||||
// directory (e.g. "C:\Users\[User]\AppData\Local\Google\Chrome\User Data\" on
|
/// directory (e.g. "C:\Users\[User]\AppData\Local\Google\Chrome\User Data\" on
|
||||||
// Windows) and is updated periodically by Chrome's component updater service.
|
/// Windows) and is updated periodically by Chrome's component updater service.
|
||||||
// Must be called in the browser process after the context has been initialized.
|
/// Must be called in the browser process after the context has been
|
||||||
// See https://dev.chromium.org/Home/chromium-security/crlsets for background.
|
/// initialized. See https://dev.chromium.org/Home/chromium-security/crlsets for
|
||||||
|
/// background.
|
||||||
///
|
///
|
||||||
CEF_EXPORT void cef_load_crlsets_file(const cef_string_t* path);
|
CEF_EXPORT void cef_load_crlsets_file(const cef_string_t* path);
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=03bb69a14868a95abf3bf7b1608dc351480e307f$
|
// $hash=8149c82dd6671d676ee62cb6749bf30b32a5832c$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_FIND_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_FIND_HANDLER_CAPI_H_
|
||||||
@@ -48,22 +48,23 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle events related to find results. The
|
/// Implement this structure to handle events related to find results. The
|
||||||
// functions of this structure will be called on the UI thread.
|
/// functions of this structure will be called on the UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_find_handler_t {
|
typedef struct _cef_find_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called to report find results returned by cef_browser_host_t::find().
|
/// Called to report find results returned by cef_browser_host_t::find().
|
||||||
// |identifer| is the identifier passed to find(), |count| is the number of
|
/// |identifer| is a unique incremental identifier for the currently active
|
||||||
// matches currently identified, |selectionRect| is the location of where the
|
/// search, |count| is the number of matches currently identified,
|
||||||
// match was found (in window coordinates), |activeMatchOrdinal| is the
|
/// |selectionRect| is the location of where the match was found (in window
|
||||||
// current position in the search results, and |finalUpdate| is true (1) if
|
/// coordinates), |activeMatchOrdinal| is the current position in the search
|
||||||
// this is the last find notification.
|
/// results, and |finalUpdate| is true (1) if this is the last find
|
||||||
|
/// notification.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_find_result)(struct _cef_find_handler_t* self,
|
void(CEF_CALLBACK* on_find_result)(struct _cef_find_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=0fccb41381e922e9d9545ae45ba3e6cf1916c4b0$
|
// $hash=53ec33c8937c735f646f9e0a14a416218e32887c$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_FOCUS_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_FOCUS_HANDLER_CAPI_H_
|
||||||
@@ -50,36 +50,37 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle events related to focus. The functions of
|
/// Implement this structure to handle events related to focus. The functions of
|
||||||
// this structure will be called on the UI thread.
|
/// this structure will be called on the UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_focus_handler_t {
|
typedef struct _cef_focus_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the browser component is about to loose focus. For instance, if
|
/// Called when the browser component is about to loose focus. For instance,
|
||||||
// focus was on the last HTML element and the user pressed the TAB key. |next|
|
/// if focus was on the last HTML element and the user pressed the TAB key.
|
||||||
// will be true (1) if the browser is giving focus to the next component and
|
/// |next| will be true (1) if the browser is giving focus to the next
|
||||||
// false (0) if the browser is giving focus to the previous component.
|
/// component and false (0) if the browser is giving focus to the previous
|
||||||
|
/// component.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_take_focus)(struct _cef_focus_handler_t* self,
|
void(CEF_CALLBACK* on_take_focus)(struct _cef_focus_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
int next);
|
int next);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the browser component is requesting focus. |source| indicates
|
/// Called when the browser component is requesting focus. |source| indicates
|
||||||
// where the focus request is originating from. Return false (0) to allow the
|
/// where the focus request is originating from. Return false (0) to allow the
|
||||||
// focus to be set or true (1) to cancel setting the focus.
|
/// focus to be set or true (1) to cancel setting the focus.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_set_focus)(struct _cef_focus_handler_t* self,
|
int(CEF_CALLBACK* on_set_focus)(struct _cef_focus_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
cef_focus_source_t source);
|
cef_focus_source_t source);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the browser component has received focus.
|
/// Called when the browser component has received focus.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_got_focus)(struct _cef_focus_handler_t* self,
|
void(CEF_CALLBACK* on_got_focus)(struct _cef_focus_handler_t* self,
|
||||||
struct _cef_browser_t* browser);
|
struct _cef_browser_t* browser);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=872fd1e811d41f56f03da0da75a8f2e89cad40cd$
|
// $hash=b9b1308311999efcfd2aa678472f934ca783492c$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_FRAME_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_FRAME_CAPI_H_
|
||||||
@@ -57,100 +57,100 @@ struct _cef_urlrequest_t;
|
|||||||
struct _cef_v8context_t;
|
struct _cef_v8context_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used to represent a frame in the browser window. When used in the
|
/// Structure used to represent a frame in the browser window. When used in the
|
||||||
// browser process the functions of this structure may be called on any thread
|
/// browser process the functions of this structure may be called on any thread
|
||||||
// unless otherwise indicated in the comments. When used in the render process
|
/// unless otherwise indicated in the comments. When used in the render process
|
||||||
// the functions of this structure may only be called on the main thread.
|
/// the functions of this structure may only be called on the main thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_frame_t {
|
typedef struct _cef_frame_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// True if this object is currently attached to a valid frame.
|
/// True if this object is currently attached to a valid frame.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_valid)(struct _cef_frame_t* self);
|
int(CEF_CALLBACK* is_valid)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Execute undo in this frame.
|
/// Execute undo in this frame.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* undo)(struct _cef_frame_t* self);
|
void(CEF_CALLBACK* undo)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Execute redo in this frame.
|
/// Execute redo in this frame.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* redo)(struct _cef_frame_t* self);
|
void(CEF_CALLBACK* redo)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Execute cut in this frame.
|
/// Execute cut in this frame.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cut)(struct _cef_frame_t* self);
|
void(CEF_CALLBACK* cut)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Execute copy in this frame.
|
/// Execute copy in this frame.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* copy)(struct _cef_frame_t* self);
|
void(CEF_CALLBACK* copy)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Execute paste in this frame.
|
/// Execute paste in this frame.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* paste)(struct _cef_frame_t* self);
|
void(CEF_CALLBACK* paste)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Execute delete in this frame.
|
/// Execute delete in this frame.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* del)(struct _cef_frame_t* self);
|
void(CEF_CALLBACK* del)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Execute select all in this frame.
|
/// Execute select all in this frame.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* select_all)(struct _cef_frame_t* self);
|
void(CEF_CALLBACK* select_all)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Save this frame's HTML source to a temporary file and open it in the
|
/// Save this frame's HTML source to a temporary file and open it in the
|
||||||
// default text viewing application. This function can only be called from the
|
/// default text viewing application. This function can only be called from
|
||||||
// browser process.
|
/// the browser process.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* view_source)(struct _cef_frame_t* self);
|
void(CEF_CALLBACK* view_source)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Retrieve this frame's HTML source as a string sent to the specified
|
/// Retrieve this frame's HTML source as a string sent to the specified
|
||||||
// visitor.
|
/// visitor.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* get_source)(struct _cef_frame_t* self,
|
void(CEF_CALLBACK* get_source)(struct _cef_frame_t* self,
|
||||||
struct _cef_string_visitor_t* visitor);
|
struct _cef_string_visitor_t* visitor);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Retrieve this frame's display text as a string sent to the specified
|
/// Retrieve this frame's display text as a string sent to the specified
|
||||||
// visitor.
|
/// visitor.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* get_text)(struct _cef_frame_t* self,
|
void(CEF_CALLBACK* get_text)(struct _cef_frame_t* self,
|
||||||
struct _cef_string_visitor_t* visitor);
|
struct _cef_string_visitor_t* visitor);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Load the request represented by the |request| object.
|
/// Load the request represented by the |request| object.
|
||||||
//
|
///
|
||||||
// WARNING: This function will fail with "bad IPC message" reason
|
/// WARNING: This function will fail with "bad IPC message" reason
|
||||||
// INVALID_INITIATOR_ORIGIN (213) unless you first navigate to the request
|
/// INVALID_INITIATOR_ORIGIN (213) unless you first navigate to the request
|
||||||
// origin using some other mechanism (LoadURL, link click, etc).
|
/// origin using some other mechanism (LoadURL, link click, etc).
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* load_request)(struct _cef_frame_t* self,
|
void(CEF_CALLBACK* load_request)(struct _cef_frame_t* self,
|
||||||
struct _cef_request_t* request);
|
struct _cef_request_t* request);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Load the specified |url|.
|
/// Load the specified |url|.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* load_url)(struct _cef_frame_t* self,
|
void(CEF_CALLBACK* load_url)(struct _cef_frame_t* self,
|
||||||
const cef_string_t* url);
|
const cef_string_t* url);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Execute a string of JavaScript code in this frame. The |script_url|
|
/// Execute a string of JavaScript code in this frame. The |script_url|
|
||||||
// parameter is the URL where the script in question can be found, if any. The
|
/// parameter is the URL where the script in question can be found, if any.
|
||||||
// renderer may request this URL to show the developer the source of the
|
/// The renderer may request this URL to show the developer the source of the
|
||||||
// error. The |start_line| parameter is the base line number to use for error
|
/// error. The |start_line| parameter is the base line number to use for
|
||||||
// reporting.
|
/// error reporting.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* execute_java_script)(struct _cef_frame_t* self,
|
void(CEF_CALLBACK* execute_java_script)(struct _cef_frame_t* self,
|
||||||
const cef_string_t* code,
|
const cef_string_t* code,
|
||||||
@@ -158,83 +158,84 @@ typedef struct _cef_frame_t {
|
|||||||
int start_line);
|
int start_line);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this is the main (top-level) frame.
|
/// Returns true (1) if this is the main (top-level) frame.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_main)(struct _cef_frame_t* self);
|
int(CEF_CALLBACK* is_main)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this is the focused frame.
|
/// Returns true (1) if this is the focused frame.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_focused)(struct _cef_frame_t* self);
|
int(CEF_CALLBACK* is_focused)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the name for this frame. If the frame has an assigned name (for
|
/// Returns the name for this frame. If the frame has an assigned name (for
|
||||||
// example, set via the iframe "name" attribute) then that value will be
|
/// example, set via the iframe "name" attribute) then that value will be
|
||||||
// returned. Otherwise a unique name will be constructed based on the frame
|
/// returned. Otherwise a unique name will be constructed based on the frame
|
||||||
// parent hierarchy. The main (top-level) frame will always have an NULL name
|
/// parent hierarchy. The main (top-level) frame will always have an NULL name
|
||||||
// value.
|
/// value.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_name)(struct _cef_frame_t* self);
|
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 < 0 if the
|
||||||
// underlying frame does not yet exist.
|
/// underlying frame does not yet exist.
|
||||||
///
|
///
|
||||||
int64(CEF_CALLBACK* get_identifier)(struct _cef_frame_t* self);
|
int64(CEF_CALLBACK* get_identifier)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the parent of this frame or NULL if this is the main (top-level)
|
/// Returns the parent of this frame or NULL if this is the main (top-level)
|
||||||
// frame.
|
/// frame.
|
||||||
///
|
///
|
||||||
struct _cef_frame_t*(CEF_CALLBACK* get_parent)(struct _cef_frame_t* self);
|
struct _cef_frame_t*(CEF_CALLBACK* get_parent)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the URL currently loaded in this frame.
|
/// Returns the URL currently loaded in this frame.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_url)(struct _cef_frame_t* self);
|
cef_string_userfree_t(CEF_CALLBACK* get_url)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the browser that this frame belongs to.
|
/// Returns the browser that this frame belongs to.
|
||||||
///
|
///
|
||||||
struct _cef_browser_t*(CEF_CALLBACK* get_browser)(struct _cef_frame_t* self);
|
struct _cef_browser_t*(CEF_CALLBACK* get_browser)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the V8 context associated with the frame. This function can only be
|
/// Get the V8 context associated with the frame. This function can only be
|
||||||
// called from the render process.
|
/// called from the render process.
|
||||||
///
|
///
|
||||||
struct _cef_v8context_t*(CEF_CALLBACK* get_v8context)(
|
struct _cef_v8context_t*(CEF_CALLBACK* get_v8context)(
|
||||||
struct _cef_frame_t* self);
|
struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Visit the DOM document. This function can only be called from the render
|
/// Visit the DOM document. This function can only be called from the render
|
||||||
// process.
|
/// process.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* visit_dom)(struct _cef_frame_t* self,
|
void(CEF_CALLBACK* visit_dom)(struct _cef_frame_t* self,
|
||||||
struct _cef_domvisitor_t* visitor);
|
struct _cef_domvisitor_t* visitor);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Create a new URL request that will be treated as originating from this
|
/// Create a new URL request that will be treated as originating from this
|
||||||
// frame and the associated browser. This request may be intercepted by the
|
/// frame and the associated browser. This request may be intercepted by the
|
||||||
// client via cef_resource_request_handler_t or cef_scheme_handler_factory_t.
|
/// client via cef_resource_request_handler_t or cef_scheme_handler_factory_t.
|
||||||
// Use cef_urlrequest_t::Create instead if you do not want the request to have
|
/// Use cef_urlrequest_t::Create instead if you do not want the request to
|
||||||
// this association, in which case it may be handled differently (see
|
/// have this association, in which case it may be handled differently (see
|
||||||
// documentation on that function). Requests may originate from both the
|
/// documentation on that function). Requests may originate from both the
|
||||||
// browser process and the render process.
|
/// browser process and the render process.
|
||||||
//
|
///
|
||||||
// For requests originating from the browser process:
|
/// For requests originating from the browser process:
|
||||||
// - POST data may only contain a single element of type PDE_TYPE_FILE or
|
/// - POST data may only contain a single element of type PDE_TYPE_FILE or
|
||||||
// PDE_TYPE_BYTES.
|
/// PDE_TYPE_BYTES.
|
||||||
// For requests originating from the render process:
|
///
|
||||||
// - POST data may only contain a single element of type PDE_TYPE_BYTES.
|
/// For requests originating from the render process:
|
||||||
// - If the response contains Content-Disposition or Mime-Type header values
|
/// - POST data may only contain a single element of type PDE_TYPE_BYTES.
|
||||||
// that would not normally be rendered then the response may receive
|
/// - If the response contains Content-Disposition or Mime-Type header
|
||||||
// special handling inside the browser (for example, via the file download
|
/// values that would not normally be rendered then the response may
|
||||||
// code path instead of the URL request code path).
|
/// receive special handling inside the browser (for example, via the
|
||||||
//
|
/// file download code path instead of the URL request code path).
|
||||||
// The |request| object will be marked as read-only after calling this
|
///
|
||||||
// function.
|
/// The |request| object will be marked as read-only after calling this
|
||||||
|
/// function.
|
||||||
///
|
///
|
||||||
struct _cef_urlrequest_t*(CEF_CALLBACK* create_urlrequest)(
|
struct _cef_urlrequest_t*(CEF_CALLBACK* create_urlrequest)(
|
||||||
struct _cef_frame_t* self,
|
struct _cef_frame_t* self,
|
||||||
@@ -242,12 +243,12 @@ typedef struct _cef_frame_t {
|
|||||||
struct _cef_urlrequest_client_t* client);
|
struct _cef_urlrequest_client_t* client);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Send a message to the specified |target_process|. Ownership of the message
|
/// Send a message to the specified |target_process|. Ownership of the message
|
||||||
// contents will be transferred and the |message| reference will be
|
/// contents will be transferred and the |message| reference will be
|
||||||
// invalidated. Message delivery is not guaranteed in all cases (for example,
|
/// invalidated. Message delivery is not guaranteed in all cases (for example,
|
||||||
// if the browser is closing, navigating, or if the target process crashes).
|
/// if the browser is closing, navigating, or if the target process crashes).
|
||||||
// Send an ACK message back from the target process if confirmation is
|
/// Send an ACK message back from the target process if confirmation is
|
||||||
// required.
|
/// required.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* send_process_message)(
|
void(CEF_CALLBACK* send_process_message)(
|
||||||
struct _cef_frame_t* self,
|
struct _cef_frame_t* self,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=f6be5f7509ee3ccfe16f226470897223cc131014$
|
// $hash=4cdadeb6439415d60ec32249c3a0b6457dd586f7$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_FRAME_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_FRAME_HANDLER_CAPI_H_
|
||||||
@@ -49,107 +49,113 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle events related to cef_frame_t life span.
|
/// Implement this structure to handle events related to cef_frame_t life span.
|
||||||
// The order of callbacks is:
|
/// The order of callbacks is:
|
||||||
//
|
///
|
||||||
// (1) During initial cef_browser_host_t creation and navigation of the main
|
/// (1) During initial cef_browser_host_t creation and navigation of the main
|
||||||
// frame: - cef_frame_handler_t::OnFrameCreated => The initial main frame object
|
/// frame: - cef_frame_handler_t::OnFrameCreated => The initial main frame
|
||||||
// has been
|
/// object has been
|
||||||
// created. Any commands will be queued until the frame is attached.
|
/// created. Any commands will be queued until the frame is attached.
|
||||||
// - cef_frame_handler_t::OnMainFrameChanged => The initial main frame object
|
/// - cef_frame_handler_t::OnMainFrameChanged => The initial main frame object
|
||||||
// has
|
/// has
|
||||||
// been assigned to the browser.
|
/// been assigned to the browser.
|
||||||
// - cef_life_span_handler_t::OnAfterCreated => The browser is now valid and can
|
/// - cef_life_span_handler_t::OnAfterCreated => The browser is now valid and
|
||||||
// be
|
/// can be
|
||||||
// used.
|
/// used.
|
||||||
// - cef_frame_handler_t::OnFrameAttached => The initial main frame object is
|
/// - cef_frame_handler_t::OnFrameAttached => The initial main frame object is
|
||||||
// now
|
/// now
|
||||||
// connected to its peer in the renderer process. Commands can be routed.
|
/// 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
|
/// (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
|
/// and/or sub-frames:
|
||||||
// or sub-frame object has
|
/// - cef_frame_handler_t::OnFrameCreated => A new main frame or sub-frame
|
||||||
// been created. Any commands will be queued until the frame is attached.
|
/// object
|
||||||
// - cef_frame_handler_t::OnFrameAttached => A new main frame or sub-frame
|
/// has been created. Any commands will be queued until the frame is attached.
|
||||||
// object is
|
/// - cef_frame_handler_t::OnFrameAttached => A new main frame or sub-frame
|
||||||
// now connected to its peer in the renderer process. Commands can be routed.
|
/// object
|
||||||
// - cef_frame_handler_t::OnFrameDetached => An existing main frame or sub-frame
|
/// is now connected to its peer in the renderer process. Commands can be
|
||||||
// object has lost its connection to the renderer process. If multiple objects
|
/// routed.
|
||||||
// are detached at the same time then notifications will be sent for any
|
/// - cef_frame_handler_t::OnFrameDetached => An existing main frame or sub-
|
||||||
// sub-frame objects before the main frame object. Commands can no longer be
|
/// frame
|
||||||
// routed and will be discarded.
|
/// object has lost its connection to the renderer process. If multiple
|
||||||
// - cef_frame_handler_t::OnMainFrameChanged => A new main frame object has been
|
/// objects are detached at the same time then notifications will be sent for
|
||||||
// assigned to the browser. This will only occur with cross-origin navigation
|
/// any sub-frame objects before the main frame object. Commands can no longer
|
||||||
// or re-navigation after renderer process termination (due to crashes, etc).
|
/// be routed and will be discarded.
|
||||||
//
|
/// - cef_frame_handler_t::OnMainFrameChanged => A new main frame object has
|
||||||
// (3) During final cef_browser_host_t destruction of the main frame: -
|
/// been
|
||||||
// cef_frame_handler_t::OnFrameDetached => Any sub-frame objects have lost their
|
/// assigned to the browser. This will only occur with cross-origin navigation
|
||||||
// connection to the renderer process. Commands can no longer be routed and
|
/// or re-navigation after renderer process termination (due to crashes, etc).
|
||||||
// will be discarded.
|
///
|
||||||
// - cef_life_span_handler_t::OnBeforeClose => The browser has been destroyed. -
|
/// (3) During final cef_browser_host_t destruction of the main frame: -
|
||||||
// cef_frame_handler_t::OnFrameDetached => The main frame object have lost its
|
/// cef_frame_handler_t::OnFrameDetached => Any sub-frame objects have lost
|
||||||
// connection to the renderer process. Notifications will be sent for any
|
/// their
|
||||||
// sub-frame objects before the main frame object. Commands can no longer be
|
/// connection to the renderer process. Commands can no longer be routed and
|
||||||
// routed and will be discarded.
|
/// will be discarded.
|
||||||
// - cef_frame_handler_t::OnMainFrameChanged => The final main frame object has
|
/// - cef_life_span_handler_t::OnBeforeClose => The browser has been destroyed.
|
||||||
// been
|
/// - cef_frame_handler_t::OnFrameDetached => The main frame object have lost
|
||||||
// removed from the browser.
|
/// its
|
||||||
//
|
/// connection to the renderer process. Notifications will be sent for any
|
||||||
// Cross-origin navigation and/or loading receives special handling.
|
/// sub-frame objects before the main frame object. Commands can no longer be
|
||||||
//
|
/// routed and will be discarded.
|
||||||
// When the main frame navigates to a different origin the OnMainFrameChanged
|
/// - cef_frame_handler_t::OnMainFrameChanged => The final main frame object has
|
||||||
// callback (2) will be executed with the old and new main frame objects.
|
/// been removed from the browser.
|
||||||
//
|
///
|
||||||
// When a new sub-frame is loaded in, or an existing sub-frame is navigated to,
|
/// Cross-origin navigation and/or loading receives special handling.
|
||||||
// a different origin from the parent frame, a temporary sub-frame object will
|
///
|
||||||
// first be created in the parent's renderer process. That temporary sub-frame
|
/// When the main frame navigates to a different origin the OnMainFrameChanged
|
||||||
// will then be discarded after the real cross-origin sub-frame is created in
|
/// callback (2) will be executed with the old and new main frame objects.
|
||||||
// the new/target renderer process. The client will receive cross-origin
|
///
|
||||||
// navigation callbacks (2) for the transition from the temporary sub-frame to
|
/// When a new sub-frame is loaded in, or an existing sub-frame is navigated to,
|
||||||
// the real sub-frame. The temporary sub-frame will not recieve or execute
|
/// a different origin from the parent frame, a temporary sub-frame object will
|
||||||
// commands during this transitional period (any sent commands will be
|
/// first be created in the parent's renderer process. That temporary sub-frame
|
||||||
// discarded).
|
/// 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
|
||||||
// When a new popup browser is created in a different origin from the parent
|
/// navigation callbacks (2) for the transition from the temporary sub-frame to
|
||||||
// browser, a temporary main frame object for the popup will first be created in
|
/// the real sub-frame. The temporary sub-frame will not recieve or execute
|
||||||
// the parent's renderer process. That temporary main frame will then be
|
/// commands during this transitional period (any sent commands will be
|
||||||
// discarded after the real cross-origin main frame is created in the new/target
|
/// discarded).
|
||||||
// renderer process. The client will recieve creation and initial navigation
|
///
|
||||||
// callbacks (1) for the temporary main frame, followed by cross-origin
|
/// When a new popup browser is created in a different origin from the parent
|
||||||
// navigation callbacks (2) for the transition from the temporary main frame to
|
/// browser, a temporary main frame object for the popup will first be created
|
||||||
// the real main frame. The temporary main frame may receive and execute
|
/// in the parent's renderer process. That temporary main frame will then be
|
||||||
// commands during this transitional period (any sent commands may be executed,
|
/// discarded after the real cross-origin main frame is created in the
|
||||||
// but the behavior is potentially undesirable since they execute in the parent
|
/// new/target renderer process. The client will recieve creation and initial
|
||||||
// browser's renderer process and not the new/target renderer process).
|
/// navigation callbacks (1) for the temporary main frame, followed by cross-
|
||||||
//
|
/// origin navigation callbacks (2) for the transition from the temporary main
|
||||||
// Callbacks will not be executed for placeholders that may be created during
|
/// frame to the real main frame. The temporary main frame may receive and
|
||||||
// pre-commit navigation for sub-frames that do not yet exist in the renderer
|
/// execute commands during this transitional period (any sent commands may be
|
||||||
// process. Placeholders will have cef_frame_t::get_identifier() == -4.
|
/// executed, but the behavior is potentially undesirable since they execute in
|
||||||
//
|
/// the parent browser's renderer process and not the new/target renderer
|
||||||
// The functions of this structure will be called on the UI thread unless
|
/// process).
|
||||||
// otherwise indicated.
|
///
|
||||||
|
/// Callbacks will not be executed for placeholders that may be created during
|
||||||
|
/// pre-commit navigation for sub-frames that do not yet exist in the renderer
|
||||||
|
/// process. Placeholders will have cef_frame_t::get_identifier() == -4.
|
||||||
|
///
|
||||||
|
/// The functions of this structure will be called on the UI thread unless
|
||||||
|
/// otherwise indicated.
|
||||||
///
|
///
|
||||||
typedef struct _cef_frame_handler_t {
|
typedef struct _cef_frame_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when a new frame is created. This will be the first notification
|
/// Called when a new frame is created. This will be the first notification
|
||||||
// that references |frame|. Any commands that require transport to the
|
/// that references |frame|. Any commands that require transport to the
|
||||||
// associated renderer process (LoadRequest, SendProcessMessage, GetSource,
|
/// associated renderer process (LoadRequest, SendProcessMessage, GetSource,
|
||||||
// etc.) will be queued until OnFrameAttached is called for |frame|.
|
/// etc.) will be queued until OnFrameAttached is called for |frame|.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_frame_created)(struct _cef_frame_handler_t* self,
|
void(CEF_CALLBACK* on_frame_created)(struct _cef_frame_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
struct _cef_frame_t* frame);
|
struct _cef_frame_t* frame);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when a frame can begin routing commands to/from the associated
|
/// Called when a frame can begin routing commands to/from the associated
|
||||||
// renderer process. |reattached| will be true (1) if the frame was re-
|
/// renderer process. |reattached| will be true (1) if the frame was re-
|
||||||
// attached after exiting the BackForwardCache. Any commands that were queued
|
/// attached after exiting the BackForwardCache. Any commands that were queued
|
||||||
// have now been dispatched.
|
/// have now been dispatched.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_frame_attached)(struct _cef_frame_handler_t* self,
|
void(CEF_CALLBACK* on_frame_attached)(struct _cef_frame_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -157,29 +163,31 @@ typedef struct _cef_frame_handler_t {
|
|||||||
int reattached);
|
int reattached);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when a frame loses its connection to the renderer process and will
|
/// Called when a frame loses its connection to the renderer process and will
|
||||||
// be destroyed. Any pending or future commands will be discarded and
|
/// be destroyed. Any pending or future commands will be discarded and
|
||||||
// cef_frame_t::is_valid() will now return false (0) for |frame|. If called
|
/// cef_frame_t::is_valid() will now return false (0) for |frame|. If called
|
||||||
// after cef_life_span_handler_t::on_before_close() during browser destruction
|
/// after cef_life_span_handler_t::on_before_close() during browser
|
||||||
// then cef_browser_t::is_valid() will return false (0) for |browser|.
|
/// destruction then cef_browser_t::is_valid() will return false (0) for
|
||||||
|
/// |browser|.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_frame_detached)(struct _cef_frame_handler_t* self,
|
void(CEF_CALLBACK* on_frame_detached)(struct _cef_frame_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
struct _cef_frame_t* frame);
|
struct _cef_frame_t* frame);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the main frame changes due to (a) initial browser creation, (b)
|
/// Called when the main frame changes due to (a) initial browser creation,
|
||||||
// final browser destruction, (c) cross-origin navigation or (d) re-navigation
|
/// (b) final browser destruction, (c) cross-origin navigation or (d) re-
|
||||||
// after renderer process termination (due to crashes, etc). |old_frame| will
|
/// navigation after renderer process termination (due to crashes, etc).
|
||||||
// be NULL and |new_frame| will be non-NULL when a main frame is assigned to
|
/// |old_frame| will be NULL and |new_frame| will be non-NULL when a main
|
||||||
// |browser| for the first time. |old_frame| will be non-NULL and |new_frame|
|
/// frame is assigned to |browser| for the first time. |old_frame| will be
|
||||||
// will be NULL and when a main frame is removed from |browser| for the last
|
/// non-NULL and |new_frame| will be NULL and when a main frame is removed
|
||||||
// time. Both |old_frame| and |new_frame| will be non-NULL for cross-origin
|
/// from |browser| for the last time. Both |old_frame| and |new_frame| will be
|
||||||
// navigations or re-navigation after renderer process termination. This
|
/// non-NULL for cross-origin navigations or re-navigation after renderer
|
||||||
// function will be called after on_frame_created() for |new_frame| and/or
|
/// process termination. This function will be called after on_frame_created()
|
||||||
// after on_frame_detached() for |old_frame|. If called after
|
/// for |new_frame| and/or after on_frame_detached() for |old_frame|. If
|
||||||
// cef_life_span_handler_t::on_before_close() during browser destruction then
|
/// called after cef_life_span_handler_t::on_before_close() during browser
|
||||||
// cef_browser_t::is_valid() will return false (0) for |browser|.
|
/// destruction then cef_browser_t::is_valid() will return false (0) for
|
||||||
|
/// |browser|.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_main_frame_changed)(struct _cef_frame_handler_t* self,
|
void(CEF_CALLBACK* on_main_frame_changed)(struct _cef_frame_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=bf890f7b8e8edd423d71ad5a4d5bd43d81f1eb01$
|
// $hash=c564ee1f32a0ef05fe49fc779af5bc0b0e1b36d6$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_I18N_UTIL_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_I18N_UTIL_CAPI_H_
|
||||||
@@ -47,9 +47,9 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the application text direction is right-to-left.
|
/// Returns true (1) if the application text direction is right-to-left.
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_is_rtl();
|
CEF_EXPORT int cef_is_rtl(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=d9da8862142742e780086714bbd4fb44ac95cf2c$
|
// $hash=99c94b208f9b184985220493bba4ea08e6786046$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_IMAGE_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_IMAGE_CAPI_H_
|
||||||
@@ -48,37 +48,37 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Container for a single image represented at different scale factors. All
|
/// Container for a single image represented at different scale factors. All
|
||||||
// image representations should be the same size in density independent pixel
|
/// image representations should be the same size in density independent pixel
|
||||||
// (DIP) units. For example, if the image at scale factor 1.0 is 100x100 pixels
|
/// (DIP) units. For example, if the image at scale factor 1.0 is 100x100 pixels
|
||||||
// then the image at scale factor 2.0 should be 200x200 pixels -- both images
|
/// then the image at scale factor 2.0 should be 200x200 pixels -- both images
|
||||||
// will display with a DIP size of 100x100 units. The functions of this
|
/// will display with a DIP size of 100x100 units. The functions of this
|
||||||
// structure can be called on any browser process thread.
|
/// structure can be called on any browser process thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_image_t {
|
typedef struct _cef_image_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this Image is NULL.
|
/// Returns true (1) if this Image is NULL.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_empty)(struct _cef_image_t* self);
|
int(CEF_CALLBACK* is_empty)(struct _cef_image_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this Image and |that| Image share the same underlying
|
/// Returns true (1) if this Image and |that| Image share the same underlying
|
||||||
// storage. Will also return true (1) if both images are NULL.
|
/// storage. Will also return true (1) if both images are NULL.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_same)(struct _cef_image_t* self,
|
int(CEF_CALLBACK* is_same)(struct _cef_image_t* self,
|
||||||
struct _cef_image_t* that);
|
struct _cef_image_t* that);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Add a bitmap image representation for |scale_factor|. Only 32-bit RGBA/BGRA
|
/// Add a bitmap image representation for |scale_factor|. Only 32-bit
|
||||||
// formats are supported. |pixel_width| and |pixel_height| are the bitmap
|
/// RGBA/BGRA formats are supported. |pixel_width| and |pixel_height| are the
|
||||||
// representation size in pixel coordinates. |pixel_data| is the array of
|
/// bitmap representation size in pixel coordinates. |pixel_data| is the array
|
||||||
// pixel data and should be |pixel_width| x |pixel_height| x 4 bytes in size.
|
/// of pixel data and should be |pixel_width| x |pixel_height| x 4 bytes in
|
||||||
// |color_type| and |alpha_type| values specify the pixel format.
|
/// size. |color_type| and |alpha_type| values specify the pixel format.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* add_bitmap)(struct _cef_image_t* self,
|
int(CEF_CALLBACK* add_bitmap)(struct _cef_image_t* self,
|
||||||
float scale_factor,
|
float scale_factor,
|
||||||
@@ -90,9 +90,9 @@ typedef struct _cef_image_t {
|
|||||||
size_t pixel_data_size);
|
size_t pixel_data_size);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Add a PNG image representation for |scale_factor|. |png_data| is the image
|
/// Add a PNG image representation for |scale_factor|. |png_data| is the image
|
||||||
// data of size |png_data_size|. Any alpha transparency in the PNG data will
|
/// data of size |png_data_size|. Any alpha transparency in the PNG data will
|
||||||
// be maintained.
|
/// be maintained.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* add_png)(struct _cef_image_t* self,
|
int(CEF_CALLBACK* add_png)(struct _cef_image_t* self,
|
||||||
float scale_factor,
|
float scale_factor,
|
||||||
@@ -100,9 +100,9 @@ typedef struct _cef_image_t {
|
|||||||
size_t png_data_size);
|
size_t png_data_size);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Create a JPEG image representation for |scale_factor|. |jpeg_data| is the
|
/// Create a JPEG image representation for |scale_factor|. |jpeg_data| is the
|
||||||
// image data of size |jpeg_data_size|. The JPEG format does not support
|
/// image data of size |jpeg_data_size|. The JPEG format does not support
|
||||||
// transparency so the alpha byte will be set to 0xFF for all pixels.
|
/// transparency so the alpha byte will be set to 0xFF for all pixels.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* add_jpeg)(struct _cef_image_t* self,
|
int(CEF_CALLBACK* add_jpeg)(struct _cef_image_t* self,
|
||||||
float scale_factor,
|
float scale_factor,
|
||||||
@@ -110,33 +110,34 @@ typedef struct _cef_image_t {
|
|||||||
size_t jpeg_data_size);
|
size_t jpeg_data_size);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the image width in density independent pixel (DIP) units.
|
/// Returns the image width in density independent pixel (DIP) units.
|
||||||
///
|
///
|
||||||
size_t(CEF_CALLBACK* get_width)(struct _cef_image_t* self);
|
size_t(CEF_CALLBACK* get_width)(struct _cef_image_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the image height in density independent pixel (DIP) units.
|
/// Returns the image height in density independent pixel (DIP) units.
|
||||||
///
|
///
|
||||||
size_t(CEF_CALLBACK* get_height)(struct _cef_image_t* self);
|
size_t(CEF_CALLBACK* get_height)(struct _cef_image_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this image contains a representation for
|
/// Returns true (1) if this image contains a representation for
|
||||||
// |scale_factor|.
|
/// |scale_factor|.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* has_representation)(struct _cef_image_t* self,
|
int(CEF_CALLBACK* has_representation)(struct _cef_image_t* self,
|
||||||
float scale_factor);
|
float scale_factor);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Removes the representation for |scale_factor|. Returns true (1) on success.
|
/// Removes the representation for |scale_factor|. Returns true (1) on
|
||||||
|
/// success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* remove_representation)(struct _cef_image_t* self,
|
int(CEF_CALLBACK* remove_representation)(struct _cef_image_t* self,
|
||||||
float scale_factor);
|
float scale_factor);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns information for the representation that most closely matches
|
/// Returns information for the representation that most closely matches
|
||||||
// |scale_factor|. |actual_scale_factor| is the actual scale factor for the
|
/// |scale_factor|. |actual_scale_factor| is the actual scale factor for the
|
||||||
// representation. |pixel_width| and |pixel_height| are the representation
|
/// representation. |pixel_width| and |pixel_height| are the representation
|
||||||
// size in pixel coordinates. Returns true (1) on success.
|
/// size in pixel coordinates. Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_representation_info)(struct _cef_image_t* self,
|
int(CEF_CALLBACK* get_representation_info)(struct _cef_image_t* self,
|
||||||
float scale_factor,
|
float scale_factor,
|
||||||
@@ -145,12 +146,12 @@ typedef struct _cef_image_t {
|
|||||||
int* pixel_height);
|
int* pixel_height);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the bitmap representation that most closely matches |scale_factor|.
|
/// Returns the bitmap representation that most closely matches
|
||||||
// Only 32-bit RGBA/BGRA formats are supported. |color_type| and |alpha_type|
|
/// |scale_factor|. Only 32-bit RGBA/BGRA formats are supported. |color_type|
|
||||||
// values specify the desired output pixel format. |pixel_width| and
|
/// and |alpha_type| values specify the desired output pixel format.
|
||||||
// |pixel_height| are the output representation size in pixel coordinates.
|
/// |pixel_width| and |pixel_height| are the output representation size in
|
||||||
// Returns a cef_binary_value_t containing the pixel data on success or NULL
|
/// pixel coordinates. Returns a cef_binary_value_t containing the pixel data
|
||||||
// on failure.
|
/// on success or NULL on failure.
|
||||||
///
|
///
|
||||||
struct _cef_binary_value_t*(CEF_CALLBACK* get_as_bitmap)(
|
struct _cef_binary_value_t*(CEF_CALLBACK* get_as_bitmap)(
|
||||||
struct _cef_image_t* self,
|
struct _cef_image_t* self,
|
||||||
@@ -161,12 +162,12 @@ typedef struct _cef_image_t {
|
|||||||
int* pixel_height);
|
int* pixel_height);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the PNG representation that most closely matches |scale_factor|. If
|
/// Returns the PNG representation that most closely matches |scale_factor|.
|
||||||
// |with_transparency| is true (1) any alpha transparency in the image will be
|
/// If |with_transparency| is true (1) any alpha transparency in the image
|
||||||
// represented in the resulting PNG data. |pixel_width| and |pixel_height| are
|
/// will be represented in the resulting PNG data. |pixel_width| and
|
||||||
// the output representation size in pixel coordinates. Returns a
|
/// |pixel_height| are the output representation size in pixel coordinates.
|
||||||
// cef_binary_value_t containing the PNG image data on success or NULL on
|
/// Returns a cef_binary_value_t containing the PNG image data on success or
|
||||||
// failure.
|
/// NULL on failure.
|
||||||
///
|
///
|
||||||
struct _cef_binary_value_t*(CEF_CALLBACK* get_as_png)(
|
struct _cef_binary_value_t*(CEF_CALLBACK* get_as_png)(
|
||||||
struct _cef_image_t* self,
|
struct _cef_image_t* self,
|
||||||
@@ -176,13 +177,13 @@ typedef struct _cef_image_t {
|
|||||||
int* pixel_height);
|
int* pixel_height);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the JPEG representation that most closely matches |scale_factor|.
|
/// Returns the JPEG representation that most closely matches |scale_factor|.
|
||||||
// |quality| determines the compression level with 0 == lowest and 100 ==
|
/// |quality| determines the compression level with 0 == lowest and 100 ==
|
||||||
// highest. The JPEG format does not support alpha transparency and the alpha
|
/// highest. The JPEG format does not support alpha transparency and the alpha
|
||||||
// channel, if any, will be discarded. |pixel_width| and |pixel_height| are
|
/// channel, if any, will be discarded. |pixel_width| and |pixel_height| are
|
||||||
// the output representation size in pixel coordinates. Returns a
|
/// the output representation size in pixel coordinates. Returns a
|
||||||
// cef_binary_value_t containing the JPEG image data on success or NULL on
|
/// cef_binary_value_t containing the JPEG image data on success or NULL on
|
||||||
// failure.
|
/// failure.
|
||||||
///
|
///
|
||||||
struct _cef_binary_value_t*(CEF_CALLBACK* get_as_jpeg)(
|
struct _cef_binary_value_t*(CEF_CALLBACK* get_as_jpeg)(
|
||||||
struct _cef_image_t* self,
|
struct _cef_image_t* self,
|
||||||
@@ -193,10 +194,10 @@ typedef struct _cef_image_t {
|
|||||||
} cef_image_t;
|
} cef_image_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Create a new cef_image_t. It will initially be NULL. Use the Add*() functions
|
/// Create a new cef_image_t. It will initially be NULL. Use the Add*()
|
||||||
// to add representations at different scale factors.
|
/// functions to add representations at different scale factors.
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_image_t* cef_image_create();
|
CEF_EXPORT cef_image_t* cef_image_create(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=d991e2a7d1a58a013e4d3a963361fed6918f4ec3$
|
// $hash=e9fb0354243611f3a4de508923a4e01dab42f82d$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_JSDIALOG_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_JSDIALOG_HANDLER_CAPI_H_
|
||||||
@@ -48,18 +48,19 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback structure used for asynchronous continuation of JavaScript dialog
|
/// Callback structure used for asynchronous continuation of JavaScript dialog
|
||||||
// requests.
|
/// requests.
|
||||||
///
|
///
|
||||||
typedef struct _cef_jsdialog_callback_t {
|
typedef struct _cef_jsdialog_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Continue the JS dialog request. Set |success| to true (1) if the OK button
|
/// Continue the JS dialog request. Set |success| to true (1) if the OK button
|
||||||
// was pressed. The |user_input| value should be specified for prompt dialogs.
|
/// was pressed. The |user_input| value should be specified for prompt
|
||||||
|
/// dialogs.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cont)(struct _cef_jsdialog_callback_t* self,
|
void(CEF_CALLBACK* cont)(struct _cef_jsdialog_callback_t* self,
|
||||||
int success,
|
int success,
|
||||||
@@ -67,31 +68,31 @@ typedef struct _cef_jsdialog_callback_t {
|
|||||||
} cef_jsdialog_callback_t;
|
} cef_jsdialog_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle events related to JavaScript dialogs. The
|
/// Implement this structure to handle events related to JavaScript dialogs. The
|
||||||
// functions of this structure will be called on the UI thread.
|
/// functions of this structure will be called on the UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_jsdialog_handler_t {
|
typedef struct _cef_jsdialog_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called to run a JavaScript dialog. If |origin_url| is non-NULL it can be
|
/// Called to run a JavaScript dialog. If |origin_url| is non-NULL it can be
|
||||||
// passed to the CefFormatUrlForSecurityDisplay function to retrieve a secure
|
/// passed to the CefFormatUrlForSecurityDisplay function to retrieve a secure
|
||||||
// and user-friendly display string. The |default_prompt_text| value will be
|
/// and user-friendly display string. The |default_prompt_text| value will be
|
||||||
// specified for prompt dialogs only. Set |suppress_message| to true (1) and
|
/// specified for prompt dialogs only. Set |suppress_message| to true (1) and
|
||||||
// return false (0) to suppress the message (suppressing messages is
|
/// return false (0) to suppress the message (suppressing messages is
|
||||||
// preferable to immediately executing the callback as this is used to detect
|
/// preferable to immediately executing the callback as this is used to detect
|
||||||
// presumably malicious behavior like spamming alert messages in
|
/// presumably malicious behavior like spamming alert messages in
|
||||||
// onbeforeunload). Set |suppress_message| to false (0) and return false (0)
|
/// onbeforeunload). Set |suppress_message| to false (0) and return false (0)
|
||||||
// to use the default implementation (the default implementation will show one
|
/// to use the default implementation (the default implementation will show
|
||||||
// modal dialog at a time and suppress any additional dialog requests until
|
/// one modal dialog at a time and suppress any additional dialog requests
|
||||||
// the displayed dialog is dismissed). Return true (1) if the application will
|
/// until the displayed dialog is dismissed). Return true (1) if the
|
||||||
// use a custom dialog or if the callback has been executed immediately.
|
/// application will use a custom dialog or if the callback has been executed
|
||||||
// Custom dialogs may be either modal or modeless. If a custom dialog is used
|
/// immediately. Custom dialogs may be either modal or modeless. If a custom
|
||||||
// the application must execute |callback| once the custom dialog is
|
/// dialog is used the application must execute |callback| once the custom
|
||||||
// dismissed.
|
/// dialog is dismissed.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_jsdialog)(struct _cef_jsdialog_handler_t* self,
|
int(CEF_CALLBACK* on_jsdialog)(struct _cef_jsdialog_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -103,12 +104,12 @@ typedef struct _cef_jsdialog_handler_t {
|
|||||||
int* suppress_message);
|
int* suppress_message);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called to run a dialog asking the user if they want to leave a page. Return
|
/// Called to run a dialog asking the user if they want to leave a page.
|
||||||
// false (0) to use the default dialog implementation. Return true (1) if the
|
/// Return false (0) to use the default dialog implementation. Return true (1)
|
||||||
// application will use a custom dialog or if the callback has been executed
|
/// if the application will use a custom dialog or if the callback has been
|
||||||
// immediately. Custom dialogs may be either modal or modeless. If a custom
|
/// executed immediately. Custom dialogs may be either modal or modeless. If a
|
||||||
// dialog is used the application must execute |callback| once the custom
|
/// custom dialog is used the application must execute |callback| once the
|
||||||
// dialog is dismissed.
|
/// custom dialog is dismissed.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_before_unload_dialog)(
|
int(CEF_CALLBACK* on_before_unload_dialog)(
|
||||||
struct _cef_jsdialog_handler_t* self,
|
struct _cef_jsdialog_handler_t* self,
|
||||||
@@ -118,16 +119,16 @@ typedef struct _cef_jsdialog_handler_t {
|
|||||||
struct _cef_jsdialog_callback_t* callback);
|
struct _cef_jsdialog_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called to cancel any pending dialogs and reset any saved dialog state. Will
|
/// Called to cancel any pending dialogs and reset any saved dialog state.
|
||||||
// be called due to events like page navigation irregardless of whether any
|
/// Will be called due to events like page navigation irregardless of whether
|
||||||
// dialogs are currently pending.
|
/// any dialogs are currently pending.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_reset_dialog_state)(
|
void(CEF_CALLBACK* on_reset_dialog_state)(
|
||||||
struct _cef_jsdialog_handler_t* self,
|
struct _cef_jsdialog_handler_t* self,
|
||||||
struct _cef_browser_t* browser);
|
struct _cef_browser_t* browser);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the default implementation dialog is closed.
|
/// Called when the dialog is closed.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_dialog_closed)(struct _cef_jsdialog_handler_t* self,
|
void(CEF_CALLBACK* on_dialog_closed)(struct _cef_jsdialog_handler_t* self,
|
||||||
struct _cef_browser_t* browser);
|
struct _cef_browser_t* browser);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=d804a2db0f9ac13afd249407c85cb8d5852508ac$
|
// $hash=10fb708c5f550403205a976924abf1886bf3dfa7$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_KEYBOARD_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_KEYBOARD_HANDLER_CAPI_H_
|
||||||
@@ -48,37 +48,38 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle events related to keyboard input. The
|
/// Implement this structure to handle events related to keyboard input. The
|
||||||
// functions of this structure will be called on the UI thread.
|
/// functions of this structure will be called on the UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_keyboard_handler_t {
|
typedef struct _cef_keyboard_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called before a keyboard event is sent to the renderer. |event| contains
|
/// Called before a keyboard event is sent to the renderer. |event| contains
|
||||||
// information about the keyboard event. |os_event| is the operating system
|
/// information about the keyboard event. |os_event| is the operating system
|
||||||
// event message, if any. Return true (1) if the event was handled or false
|
/// event message, if any. Return true (1) if the event was handled or false
|
||||||
// (0) otherwise. If the event will be handled in on_key_event() as a keyboard
|
/// (0) otherwise. If the event will be handled in on_key_event() as a
|
||||||
// shortcut set |is_keyboard_shortcut| to true (1) and return false (0).
|
/// keyboard shortcut set |is_keyboard_shortcut| to true (1) and return false
|
||||||
|
/// (0).
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_pre_key_event)(struct _cef_keyboard_handler_t* self,
|
int(CEF_CALLBACK* on_pre_key_event)(struct _cef_keyboard_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
const struct _cef_key_event_t* event,
|
const cef_key_event_t* event,
|
||||||
cef_event_handle_t os_event,
|
cef_event_handle_t os_event,
|
||||||
int* is_keyboard_shortcut);
|
int* is_keyboard_shortcut);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called after the renderer and JavaScript in the page has had a chance to
|
/// Called after the renderer and JavaScript in the page has had a chance to
|
||||||
// handle the event. |event| contains information about the keyboard event.
|
/// handle the event. |event| contains information about the keyboard event.
|
||||||
// |os_event| is the operating system event message, if any. Return true (1)
|
/// |os_event| is the operating system event message, if any. Return true (1)
|
||||||
// if the keyboard event was handled or false (0) otherwise.
|
/// if the keyboard event was handled or false (0) otherwise.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_key_event)(struct _cef_keyboard_handler_t* self,
|
int(CEF_CALLBACK* on_key_event)(struct _cef_keyboard_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
const struct _cef_key_event_t* event,
|
const cef_key_event_t* event,
|
||||||
cef_event_handle_t os_event);
|
cef_event_handle_t os_event);
|
||||||
} cef_keyboard_handler_t;
|
} cef_keyboard_handler_t;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=e44bb89a337942c82bfa246275b4b033821b2782$
|
// $hash=1c807597b96889f44a1e5199e860e8db4948b473$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_LIFE_SPAN_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_LIFE_SPAN_HANDLER_CAPI_H_
|
||||||
@@ -50,40 +50,40 @@ extern "C" {
|
|||||||
struct _cef_client_t;
|
struct _cef_client_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle events related to browser life span. The
|
/// Implement this structure to handle events related to browser life span. The
|
||||||
// functions of this structure will be called on the UI thread unless otherwise
|
/// functions of this structure will be called on the UI thread unless otherwise
|
||||||
// indicated.
|
/// indicated.
|
||||||
///
|
///
|
||||||
typedef struct _cef_life_span_handler_t {
|
typedef struct _cef_life_span_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the UI thread before a new popup browser is created. The
|
/// Called on the UI thread before a new popup browser is created. The
|
||||||
// |browser| and |frame| values represent the source of the popup request. The
|
/// |browser| and |frame| values represent the source of the popup request.
|
||||||
// |target_url| and |target_frame_name| values indicate where the popup
|
/// The |target_url| and |target_frame_name| values indicate where the popup
|
||||||
// browser should navigate and may be NULL if not specified with the request.
|
/// browser should navigate and may be NULL if not specified with the request.
|
||||||
// The |target_disposition| value indicates where the user intended to open
|
/// The |target_disposition| value indicates where the user intended to open
|
||||||
// the popup (e.g. current tab, new tab, etc). The |user_gesture| value will
|
/// the popup (e.g. current tab, new tab, etc). The |user_gesture| value will
|
||||||
// be true (1) if the popup was opened via explicit user gesture (e.g.
|
/// be true (1) if the popup was opened via explicit user gesture (e.g.
|
||||||
// clicking a link) or false (0) if the popup opened automatically (e.g. via
|
/// clicking a link) or false (0) if the popup opened automatically (e.g. via
|
||||||
// the DomContentLoaded event). The |popupFeatures| structure contains
|
/// the DomContentLoaded event). The |popupFeatures| structure contains
|
||||||
// additional information about the requested popup window. To allow creation
|
/// additional information about the requested popup window. To allow creation
|
||||||
// of the popup browser optionally modify |windowInfo|, |client|, |settings|
|
/// of the popup browser optionally modify |windowInfo|, |client|, |settings|
|
||||||
// and |no_javascript_access| and return false (0). To cancel creation of the
|
/// and |no_javascript_access| and return false (0). To cancel creation of the
|
||||||
// popup browser return true (1). The |client| and |settings| values will
|
/// popup browser return true (1). The |client| and |settings| values will
|
||||||
// default to the source browser's values. If the |no_javascript_access| value
|
/// default to the source browser's values. If the |no_javascript_access|
|
||||||
// is set to false (0) the new browser will not be scriptable and may not be
|
/// value is set to false (0) the new browser will not be scriptable and may
|
||||||
// hosted in the same renderer process as the source browser. Any
|
/// not be hosted in the same renderer process as the source browser. Any
|
||||||
// modifications to |windowInfo| will be ignored if the parent browser is
|
/// modifications to |windowInfo| will be ignored if the parent browser is
|
||||||
// wrapped in a cef_browser_view_t. Popup browser creation will be canceled if
|
/// wrapped in a cef_browser_view_t. Popup browser creation will be canceled
|
||||||
// the parent browser is destroyed before the popup browser creation completes
|
/// if the parent browser is destroyed before the popup browser creation
|
||||||
// (indicated by a call to OnAfterCreated for the popup browser). The
|
/// completes (indicated by a call to OnAfterCreated for the popup browser).
|
||||||
// |extra_info| parameter provides an opportunity to specify extra information
|
/// The |extra_info| parameter provides an opportunity to specify extra
|
||||||
// specific to the created popup browser that will be passed to
|
/// information specific to the created popup browser that will be passed to
|
||||||
// cef_render_process_handler_t::on_browser_created() in the render process.
|
/// cef_render_process_handler_t::on_browser_created() in the render process.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_before_popup)(
|
int(CEF_CALLBACK* on_before_popup)(
|
||||||
struct _cef_life_span_handler_t* self,
|
struct _cef_life_span_handler_t* self,
|
||||||
@@ -93,7 +93,7 @@ typedef struct _cef_life_span_handler_t {
|
|||||||
const cef_string_t* target_frame_name,
|
const cef_string_t* target_frame_name,
|
||||||
cef_window_open_disposition_t target_disposition,
|
cef_window_open_disposition_t target_disposition,
|
||||||
int user_gesture,
|
int user_gesture,
|
||||||
const struct _cef_popup_features_t* popupFeatures,
|
const cef_popup_features_t* popupFeatures,
|
||||||
struct _cef_window_info_t* windowInfo,
|
struct _cef_window_info_t* windowInfo,
|
||||||
struct _cef_client_t** client,
|
struct _cef_client_t** client,
|
||||||
struct _cef_browser_settings_t* settings,
|
struct _cef_browser_settings_t* settings,
|
||||||
@@ -101,117 +101,118 @@ typedef struct _cef_life_span_handler_t {
|
|||||||
int* no_javascript_access);
|
int* no_javascript_access);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called after a new browser is created. It is now safe to begin performing
|
/// 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
|
/// actions with |browser|. cef_frame_handler_t callbacks related to initial
|
||||||
// main frame creation will arrive before this callback. See
|
/// main frame creation will arrive before this callback. See
|
||||||
// cef_frame_handler_t documentation for additional usage information.
|
/// cef_frame_handler_t documentation for additional usage information.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_after_created)(struct _cef_life_span_handler_t* self,
|
void(CEF_CALLBACK* on_after_created)(struct _cef_life_span_handler_t* self,
|
||||||
struct _cef_browser_t* browser);
|
struct _cef_browser_t* browser);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when a browser has recieved a request to close. This may result
|
/// 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
|
/// 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
|
/// 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
|
/// user attempts to close that window (by clicking the 'X', for example). The
|
||||||
// do_close() function will be called after the JavaScript 'onunload' event
|
/// do_close() function will be called after the JavaScript 'onunload' event
|
||||||
// has been fired.
|
/// has been fired.
|
||||||
//
|
///
|
||||||
// An application should handle top-level owner window close notifications by
|
/// An application should handle top-level owner window close notifications by
|
||||||
// calling cef_browser_host_t::try_close_browser() or
|
/// calling cef_browser_host_t::try_close_browser() or
|
||||||
// cef_browser_host_t::CloseBrowser(false (0)) instead of allowing the window
|
/// cef_browser_host_t::CloseBrowser(false (0)) instead of allowing the window
|
||||||
// to close immediately (see the examples below). This gives CEF an
|
/// to close immediately (see the examples below). This gives CEF an
|
||||||
// opportunity to process the 'onbeforeunload' event and optionally cancel the
|
/// opportunity to process the 'onbeforeunload' event and optionally cancel
|
||||||
// close before do_close() is called.
|
/// the close before do_close() is called.
|
||||||
//
|
///
|
||||||
// When windowed rendering is enabled CEF will internally create a window or
|
/// 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()
|
/// 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
|
/// 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
|
/// 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
|
/// 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
|
/// 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
|
/// tear-down, for example) then do_close() will not be called for that
|
||||||
// since is no longer possible to cancel the close.
|
/// browser since is no longer possible to cancel the close.
|
||||||
//
|
///
|
||||||
// When windowed rendering is disabled returning false (0) from do_close()
|
/// When windowed rendering is disabled returning false (0) from do_close()
|
||||||
// will cause the browser object to be destroyed immediately.
|
/// 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 owner window requires a non-standard close
|
||||||
// notification then send that notification from do_close() and return true
|
/// notification then send that notification from do_close() and return true
|
||||||
// (1).
|
/// (1).
|
||||||
//
|
///
|
||||||
// The cef_life_span_handler_t::on_before_close() function will be called
|
/// The cef_life_span_handler_t::on_before_close() function will be called
|
||||||
// after do_close() (if do_close() is called) and immediately before the
|
/// after do_close() (if do_close() is called) and immediately before the
|
||||||
// browser object is destroyed. The application should only exit after
|
/// browser object is destroyed. The application should only exit after
|
||||||
// on_before_close() has been called for all existing browsers.
|
/// on_before_close() has been called for all existing browsers.
|
||||||
//
|
///
|
||||||
// The below examples describe what should happen during window close when the
|
/// The below examples describe what should happen during window close when
|
||||||
// browser is parented to an application-provided top-level window.
|
/// the browser is parented to an application-provided top-level window.
|
||||||
//
|
///
|
||||||
// Example 1: Using cef_browser_host_t::try_close_browser(). This is
|
/// Example 1: Using cef_browser_host_t::try_close_browser(). This is
|
||||||
// recommended for clients using standard close handling and windows created
|
/// recommended for clients using standard close handling and windows created
|
||||||
// on the browser process UI thread. 1. User clicks the window close button
|
/// on the browser process UI thread. 1. User clicks the window close button
|
||||||
// which sends a close notification to
|
/// which sends a close notification
|
||||||
// the application's top-level window.
|
/// to the application's top-level window.
|
||||||
// 2. Application's top-level window receives the close notification and
|
/// 2. Application's top-level window receives the close notification and
|
||||||
// calls TryCloseBrowser() (which internally calls CloseBrowser(false)).
|
/// calls TryCloseBrowser() (which internally calls CloseBrowser(false)).
|
||||||
// TryCloseBrowser() returns false so the client cancels the window close.
|
/// TryCloseBrowser() returns false so the client cancels the window
|
||||||
// 3. JavaScript 'onbeforeunload' handler executes and shows the close
|
/// close.
|
||||||
// confirmation dialog (which can be overridden via
|
/// 3. JavaScript 'onbeforeunload' handler executes and shows the close
|
||||||
// CefJSDialogHandler::OnBeforeUnloadDialog()).
|
/// confirmation dialog (which can be overridden via
|
||||||
// 4. User approves the close. 5. JavaScript 'onunload' handler executes. 6.
|
/// CefJSDialogHandler::OnBeforeUnloadDialog()).
|
||||||
// CEF sends a close notification to the application's top-level window
|
/// 4. User approves the close. 5. JavaScript 'onunload' handler executes.
|
||||||
// (because DoClose() returned false by default).
|
/// 6. CEF sends a close notification to the application's top-level window
|
||||||
// 7. Application's top-level window receives the close notification and
|
/// (because DoClose() returned false by default).
|
||||||
// calls TryCloseBrowser(). TryCloseBrowser() returns true so the client
|
/// 7. Application's top-level window receives the close notification and
|
||||||
// allows the window close.
|
/// calls TryCloseBrowser(). TryCloseBrowser() returns true so the client
|
||||||
// 8. Application's top-level window is destroyed. 9. Application's
|
/// allows the window close.
|
||||||
// on_before_close() handler is called and the browser object
|
/// 8. Application's top-level window is destroyed. 9. Application's
|
||||||
// is destroyed.
|
/// on_before_close() handler is called and the browser object
|
||||||
// 10. Application exits by calling cef_quit_message_loop() if no other
|
/// is destroyed.
|
||||||
// browsers
|
/// 10. Application exits by calling cef_quit_message_loop() if no other
|
||||||
// exist.
|
/// browsers
|
||||||
//
|
/// exist.
|
||||||
// Example 2: Using cef_browser_host_t::CloseBrowser(false (0)) and
|
///
|
||||||
// implementing the do_close() callback. This is recommended for clients using
|
/// Example 2: Using cef_browser_host_t::CloseBrowser(false (0)) and
|
||||||
// non-standard close handling or windows that were not created on the browser
|
/// implementing the do_close() callback. This is recommended for clients
|
||||||
// process UI thread. 1. User clicks the window close button which sends a
|
/// using non-standard close handling or windows that were not created on the
|
||||||
// close notification to
|
/// browser process UI thread. 1. User clicks the window close button which
|
||||||
// the application's top-level window.
|
/// sends a close notification
|
||||||
// 2. Application's top-level window receives the close notification and:
|
/// to the application's top-level window.
|
||||||
// A. Calls CefBrowserHost::CloseBrowser(false).
|
/// 2. Application's top-level window receives the close notification and:
|
||||||
// B. Cancels the window close.
|
/// A. Calls CefBrowserHost::CloseBrowser(false).
|
||||||
// 3. JavaScript 'onbeforeunload' handler executes and shows the close
|
/// B. Cancels the window close.
|
||||||
// confirmation dialog (which can be overridden via
|
/// 3. JavaScript 'onbeforeunload' handler executes and shows the close
|
||||||
// CefJSDialogHandler::OnBeforeUnloadDialog()).
|
/// confirmation dialog (which can be overridden via
|
||||||
// 4. User approves the close. 5. JavaScript 'onunload' handler executes. 6.
|
/// CefJSDialogHandler::OnBeforeUnloadDialog()).
|
||||||
// Application's do_close() handler is called. Application will:
|
/// 4. User approves the close. 5. JavaScript 'onunload' handler executes.
|
||||||
// A. Set a flag to indicate that the next close attempt will be allowed.
|
/// 6. Application's do_close() handler is called. Application will:
|
||||||
// B. Return false.
|
/// A. Set a flag to indicate that the next close attempt will be allowed.
|
||||||
// 7. CEF sends an close notification to the application's top-level window.
|
/// B. Return false.
|
||||||
// 8. Application's top-level window receives the close notification and
|
/// 7. CEF sends an close notification to the application's top-level window.
|
||||||
// allows the window to close based on the flag from #6B.
|
/// 8. Application's top-level window receives the close notification and
|
||||||
// 9. Application's top-level window is destroyed. 10. Application's
|
/// allows the window to close based on the flag from #6B.
|
||||||
// on_before_close() handler is called and the browser object
|
/// 9. Application's top-level window is destroyed. 10. Application's
|
||||||
// is destroyed.
|
/// on_before_close() handler is called and the browser object
|
||||||
// 11. Application exits by calling cef_quit_message_loop() if no other
|
/// is destroyed.
|
||||||
// browsers
|
/// 11. Application exits by calling cef_quit_message_loop() if no other
|
||||||
// exist.
|
/// browsers
|
||||||
|
/// exist.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* do_close)(struct _cef_life_span_handler_t* self,
|
int(CEF_CALLBACK* do_close)(struct _cef_life_span_handler_t* self,
|
||||||
struct _cef_browser_t* browser);
|
struct _cef_browser_t* browser);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called just before a browser is destroyed. Release all references to the
|
/// Called just before a browser is destroyed. Release all references to the
|
||||||
// browser object and do not attempt to execute any functions on the browser
|
/// browser object and do not attempt to execute any functions on the browser
|
||||||
// object (other than IsValid, GetIdentifier or IsSame) after this callback
|
/// object (other than IsValid, GetIdentifier or IsSame) after this callback
|
||||||
// returns. cef_frame_handler_t callbacks related to final main frame
|
/// returns. cef_frame_handler_t callbacks related to final main frame
|
||||||
// destruction will arrive after this callback and cef_browser_t::IsValid will
|
/// destruction will arrive after this callback and cef_browser_t::IsValid
|
||||||
// return false (0) at that time. Any in-progress network requests associated
|
/// will return false (0) at that time. Any in-progress network requests
|
||||||
// with |browser| will be aborted when the browser is destroyed, and
|
/// associated with |browser| will be aborted when the browser is destroyed,
|
||||||
// cef_resource_request_handler_t callbacks related to those requests may
|
/// and cef_resource_request_handler_t callbacks related to those requests may
|
||||||
// still arrive on the IO thread after this callback. See cef_frame_handler_t
|
/// still arrive on the IO thread after this callback. See cef_frame_handler_t
|
||||||
// and do_close() documentation for additional usage information.
|
/// and do_close() documentation for additional usage information.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_before_close)(struct _cef_life_span_handler_t* self,
|
void(CEF_CALLBACK* on_before_close)(struct _cef_life_span_handler_t* self,
|
||||||
struct _cef_browser_t* browser);
|
struct _cef_browser_t* browser);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=6c6a719d7cbbc01adfdc9bbe0dff6da10e06e3f3$
|
// $hash=1ee684174554f7d1cf8899992705d072c1c56ae7$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_LOAD_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_LOAD_HANDLER_CAPI_H_
|
||||||
@@ -49,22 +49,22 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle events related to browser load status. The
|
/// Implement this structure to handle events related to browser load status.
|
||||||
// functions of this structure will be called on the browser process UI thread
|
/// The functions of this structure will be called on the browser process UI
|
||||||
// or render process main thread (TID_RENDERER).
|
/// thread or render process main thread (TID_RENDERER).
|
||||||
///
|
///
|
||||||
typedef struct _cef_load_handler_t {
|
typedef struct _cef_load_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the loading state has changed. This callback will be executed
|
/// Called when the loading state has changed. This callback will be executed
|
||||||
// twice -- once when loading is initiated either programmatically or by user
|
/// twice -- once when loading is initiated either programmatically or by user
|
||||||
// action, and once when loading is terminated due to completion, cancellation
|
/// action, and once when loading is terminated due to completion,
|
||||||
// of failure. It will be called before any calls to OnLoadStart and after all
|
/// cancellation of failure. It will be called before any calls to OnLoadStart
|
||||||
// calls to OnLoadError and/or OnLoadEnd.
|
/// and after all calls to OnLoadError and/or OnLoadEnd.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_loading_state_change)(struct _cef_load_handler_t* self,
|
void(CEF_CALLBACK* on_loading_state_change)(struct _cef_load_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -73,16 +73,16 @@ typedef struct _cef_load_handler_t {
|
|||||||
int canGoForward);
|
int canGoForward);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called after a navigation has been committed and before the browser begins
|
/// Called after a navigation has been committed and before the browser begins
|
||||||
// loading contents in the frame. The |frame| value will never be NULL -- call
|
/// loading contents in the frame. The |frame| value will never be NULL --
|
||||||
// the is_main() function to check if this frame is the main frame.
|
/// call the is_main() function to check if this frame is the main frame.
|
||||||
// |transition_type| provides information about the source of the navigation
|
/// |transition_type| provides information about the source of the navigation
|
||||||
// and an accurate value is only available in the browser process. Multiple
|
/// and an accurate value is only available in the browser process. Multiple
|
||||||
// frames may be loading at the same time. Sub-frames may start or continue
|
/// frames may be loading at the same time. Sub-frames may start or continue
|
||||||
// loading after the main frame load has ended. This function will not be
|
/// loading after the main frame load has ended. This function will not be
|
||||||
// called for same page navigations (fragments, history state, etc.) or for
|
/// called for same page navigations (fragments, history state, etc.) or for
|
||||||
// navigations that fail or are canceled before commit. For notification of
|
/// navigations that fail or are canceled before commit. For notification of
|
||||||
// overall browser load status use OnLoadingStateChange instead.
|
/// overall browser load status use OnLoadingStateChange instead.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_load_start)(struct _cef_load_handler_t* self,
|
void(CEF_CALLBACK* on_load_start)(struct _cef_load_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -90,14 +90,14 @@ typedef struct _cef_load_handler_t {
|
|||||||
cef_transition_type_t transition_type);
|
cef_transition_type_t transition_type);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the browser is done loading a frame. The |frame| value will
|
/// Called when the browser is done loading a frame. The |frame| value will
|
||||||
// never be NULL -- call the is_main() function to check if this frame is the
|
/// never be NULL -- call the is_main() function to check if this frame is the
|
||||||
// main frame. Multiple frames may be loading at the same time. Sub-frames may
|
/// main frame. Multiple frames may be loading at the same time. Sub-frames
|
||||||
// start or continue loading after the main frame load has ended. This
|
/// may start or continue loading after the main frame load has ended. This
|
||||||
// function will not be called for same page navigations (fragments, history
|
/// function will not be called for same page navigations (fragments, history
|
||||||
// state, etc.) or for navigations that fail or are canceled before commit.
|
/// state, etc.) or for navigations that fail or are canceled before commit.
|
||||||
// For notification of overall browser load status use OnLoadingStateChange
|
/// For notification of overall browser load status use OnLoadingStateChange
|
||||||
// instead.
|
/// instead.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_load_end)(struct _cef_load_handler_t* self,
|
void(CEF_CALLBACK* on_load_end)(struct _cef_load_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -105,11 +105,11 @@ typedef struct _cef_load_handler_t {
|
|||||||
int httpStatusCode);
|
int httpStatusCode);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when a navigation fails or is canceled. This function may be called
|
/// Called when a navigation fails or is canceled. This function may be called
|
||||||
// by itself if before commit or in combination with OnLoadStart/OnLoadEnd if
|
/// by itself if before commit or in combination with OnLoadStart/OnLoadEnd if
|
||||||
// after commit. |errorCode| is the error code number, |errorText| is the
|
/// after commit. |errorCode| is the error code number, |errorText| is the
|
||||||
// error text and |failedUrl| is the URL that failed to load. See
|
/// error text and |failedUrl| is the URL that failed to load. See
|
||||||
// net\base\net_error_list.h for complete descriptions of the error codes.
|
/// net\base\net_error_list.h for complete descriptions of the error codes.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_load_error)(struct _cef_load_handler_t* self,
|
void(CEF_CALLBACK* on_load_error)(struct _cef_load_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
|
|||||||
108
include/capi/cef_media_access_handler_capi.h
Normal file
108
include/capi/cef_media_access_handler_capi.h
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
// Copyright (c) 2022 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=91101808168ec0faf1f39b1924579e31478a6616$
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef CEF_INCLUDE_CAPI_CEF_MEDIA_ACCESS_HANDLER_CAPI_H_
|
||||||
|
#define CEF_INCLUDE_CAPI_CEF_MEDIA_ACCESS_HANDLER_CAPI_H_
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "include/capi/cef_base_capi.h"
|
||||||
|
#include "include/capi/cef_browser_capi.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
///
|
||||||
|
// Callback structure used for asynchronous continuation of media access
|
||||||
|
// permission requests.
|
||||||
|
///
|
||||||
|
typedef struct _cef_media_access_callback_t {
|
||||||
|
///
|
||||||
|
// Base structure.
|
||||||
|
///
|
||||||
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
|
///
|
||||||
|
// Call to allow or deny media access. If this callback was initiated in
|
||||||
|
// response to a getUserMedia (indicated by
|
||||||
|
// CEF_MEDIA_PERMISSION_DEVICE_AUDIO_CAPTURE and/or
|
||||||
|
// CEF_MEDIA_PERMISSION_DEVICE_VIDEO_CAPTURE being set) the
|
||||||
|
// |allowed_permissions| are required to match those given in
|
||||||
|
// |required_permissions| in the OnRequestMediaAccessPermission.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* cont)(struct _cef_media_access_callback_t* self,
|
||||||
|
int allowed_permissions);
|
||||||
|
|
||||||
|
///
|
||||||
|
// Cancel the media access request.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* cancel)(struct _cef_media_access_callback_t* self);
|
||||||
|
} cef_media_access_callback_t;
|
||||||
|
|
||||||
|
///
|
||||||
|
// Implement this structure to handle events related to media access permission
|
||||||
|
// requests. The functions of this structure will be called on the browser
|
||||||
|
// process UI thread.
|
||||||
|
///
|
||||||
|
typedef struct _cef_media_access_handler_t {
|
||||||
|
///
|
||||||
|
// Base structure.
|
||||||
|
///
|
||||||
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
|
///
|
||||||
|
// Called when a page requests permission to access media. |requesting_url| is
|
||||||
|
// the URL requesting permission. Return true (1) and call
|
||||||
|
// cef_media_access_callback_t::cont() either in this function or at a later
|
||||||
|
// time to continue or cancel the request. Return false (0) to cancel the
|
||||||
|
// request immediately.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* on_request_media_access_permission)(
|
||||||
|
struct _cef_media_access_handler_t* self,
|
||||||
|
struct _cef_browser_t* browser,
|
||||||
|
struct _cef_frame_t* frame,
|
||||||
|
const cef_string_t* requesting_url,
|
||||||
|
int32_t requested_permissions,
|
||||||
|
struct _cef_media_access_callback_t* callback);
|
||||||
|
} cef_media_access_handler_t;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // CEF_INCLUDE_CAPI_CEF_MEDIA_ACCESS_HANDLER_CAPI_H_
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=79e4e38c732c0cfeef495c8a9726e105054012bb$
|
// $hash=de4a9b856c6951231f446991a9b1efb89096ad3b$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_MEDIA_ROUTER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_MEDIA_ROUTER_CAPI_H_
|
||||||
@@ -56,46 +56,46 @@ struct _cef_media_sink_t;
|
|||||||
struct _cef_media_source_t;
|
struct _cef_media_source_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Supports discovery of and communication with media devices on the local
|
/// Supports discovery of and communication with media devices on the local
|
||||||
// network via the Cast and DIAL protocols. The functions of this structure may
|
/// network via the Cast and DIAL protocols. The functions of this structure may
|
||||||
// be called on any browser process thread unless otherwise indicated.
|
/// be called on any browser process thread unless otherwise indicated.
|
||||||
///
|
///
|
||||||
typedef struct _cef_media_router_t {
|
typedef struct _cef_media_router_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Add an observer for MediaRouter events. The observer will remain registered
|
/// Add an observer for MediaRouter events. The observer will remain
|
||||||
// until the returned Registration object is destroyed.
|
/// registered until the returned Registration object is destroyed.
|
||||||
///
|
///
|
||||||
struct _cef_registration_t*(CEF_CALLBACK* add_observer)(
|
struct _cef_registration_t*(CEF_CALLBACK* add_observer)(
|
||||||
struct _cef_media_router_t* self,
|
struct _cef_media_router_t* self,
|
||||||
struct _cef_media_observer_t* observer);
|
struct _cef_media_observer_t* observer);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns a MediaSource object for the specified media source URN. Supported
|
/// Returns a MediaSource object for the specified media source URN. Supported
|
||||||
// URN schemes include "cast:" and "dial:", and will be already known by the
|
/// URN schemes include "cast:" and "dial:", and will be already known by the
|
||||||
// client application (e.g. "cast:<appId>?clientId=<clientId>").
|
/// client application (e.g. "cast:<appId>?clientId=<clientId>").
|
||||||
///
|
///
|
||||||
struct _cef_media_source_t*(CEF_CALLBACK* get_source)(
|
struct _cef_media_source_t*(CEF_CALLBACK* get_source)(
|
||||||
struct _cef_media_router_t* self,
|
struct _cef_media_router_t* self,
|
||||||
const cef_string_t* urn);
|
const cef_string_t* urn);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Trigger an asynchronous call to cef_media_observer_t::OnSinks on all
|
/// Trigger an asynchronous call to cef_media_observer_t::OnSinks on all
|
||||||
// registered observers.
|
/// registered observers.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* notify_current_sinks)(struct _cef_media_router_t* self);
|
void(CEF_CALLBACK* notify_current_sinks)(struct _cef_media_router_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Create a new route between |source| and |sink|. Source and sink must be
|
/// Create a new route between |source| and |sink|. Source and sink must be
|
||||||
// valid, compatible (as reported by cef_media_sink_t::IsCompatibleWith), and
|
/// valid, compatible (as reported by cef_media_sink_t::IsCompatibleWith), and
|
||||||
// a route between them must not already exist. |callback| will be executed on
|
/// a route between them must not already exist. |callback| will be executed
|
||||||
// success or failure. If route creation succeeds it will also trigger an
|
/// on success or failure. If route creation succeeds it will also trigger an
|
||||||
// asynchronous call to cef_media_observer_t::OnRoutes on all registered
|
/// asynchronous call to cef_media_observer_t::OnRoutes on all registered
|
||||||
// observers.
|
/// observers.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* create_route)(
|
void(CEF_CALLBACK* create_route)(
|
||||||
struct _cef_media_router_t* self,
|
struct _cef_media_router_t* self,
|
||||||
@@ -104,51 +104,51 @@ typedef struct _cef_media_router_t {
|
|||||||
struct _cef_media_route_create_callback_t* callback);
|
struct _cef_media_route_create_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Trigger an asynchronous call to cef_media_observer_t::OnRoutes on all
|
/// Trigger an asynchronous call to cef_media_observer_t::OnRoutes on all
|
||||||
// registered observers.
|
/// registered observers.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* notify_current_routes)(struct _cef_media_router_t* self);
|
void(CEF_CALLBACK* notify_current_routes)(struct _cef_media_router_t* self);
|
||||||
} cef_media_router_t;
|
} cef_media_router_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the MediaRouter object associated with the global request context. If
|
/// Returns the MediaRouter object associated with the global request context.
|
||||||
// |callback| is non-NULL it will be executed asnychronously on the UI thread
|
/// If |callback| is non-NULL it will be executed asnychronously on the UI
|
||||||
// after the manager's storage has been initialized. Equivalent to calling cef_r
|
/// thread after the manager's storage has been initialized. Equivalent to
|
||||||
// equest_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(
|
CEF_EXPORT cef_media_router_t* cef_media_router_get_global(
|
||||||
struct _cef_completion_callback_t* callback);
|
struct _cef_completion_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implemented by the client to observe MediaRouter events and registered via
|
/// Implemented by the client to observe MediaRouter events and registered via
|
||||||
// cef_media_router_t::AddObserver. The functions of this structure will be
|
/// cef_media_router_t::AddObserver. The functions of this structure will be
|
||||||
// called on the browser process UI thread.
|
/// called on the browser process UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_media_observer_t {
|
typedef struct _cef_media_observer_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// The list of available media sinks has changed or
|
/// The list of available media sinks has changed or
|
||||||
// cef_media_router_t::NotifyCurrentSinks was called.
|
/// cef_media_router_t::NotifyCurrentSinks was called.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_sinks)(struct _cef_media_observer_t* self,
|
void(CEF_CALLBACK* on_sinks)(struct _cef_media_observer_t* self,
|
||||||
size_t sinksCount,
|
size_t sinksCount,
|
||||||
struct _cef_media_sink_t* const* sinks);
|
struct _cef_media_sink_t* const* sinks);
|
||||||
|
|
||||||
///
|
///
|
||||||
// The list of available media routes has changed or
|
/// The list of available media routes has changed or
|
||||||
// cef_media_router_t::NotifyCurrentRoutes was called.
|
/// cef_media_router_t::NotifyCurrentRoutes was called.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_routes)(struct _cef_media_observer_t* self,
|
void(CEF_CALLBACK* on_routes)(struct _cef_media_observer_t* self,
|
||||||
size_t routesCount,
|
size_t routesCount,
|
||||||
struct _cef_media_route_t* const* routes);
|
struct _cef_media_route_t* const* routes);
|
||||||
|
|
||||||
///
|
///
|
||||||
// The connection state of |route| has changed.
|
/// The connection state of |route| has changed.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_route_state_changed)(
|
void(CEF_CALLBACK* on_route_state_changed)(
|
||||||
struct _cef_media_observer_t* self,
|
struct _cef_media_observer_t* self,
|
||||||
@@ -156,8 +156,8 @@ typedef struct _cef_media_observer_t {
|
|||||||
cef_media_route_connection_state_t state);
|
cef_media_route_connection_state_t state);
|
||||||
|
|
||||||
///
|
///
|
||||||
// A message was recieved over |route|. |message| is only valid for the scope
|
/// A message was recieved over |route|. |message| is only valid for the scope
|
||||||
// of this callback and should be copied if necessary.
|
/// of this callback and should be copied if necessary.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_route_message_received)(
|
void(CEF_CALLBACK* on_route_message_received)(
|
||||||
struct _cef_media_observer_t* self,
|
struct _cef_media_observer_t* self,
|
||||||
@@ -167,65 +167,65 @@ typedef struct _cef_media_observer_t {
|
|||||||
} cef_media_observer_t;
|
} cef_media_observer_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Represents the route between a media source and sink. Instances of this
|
/// Represents the route between a media source and sink. Instances of this
|
||||||
// object are created via cef_media_router_t::CreateRoute and retrieved via
|
/// object are created via cef_media_router_t::CreateRoute and retrieved via
|
||||||
// cef_media_observer_t::OnRoutes. Contains the status and metadata of a routing
|
/// cef_media_observer_t::OnRoutes. Contains the status and metadata of a
|
||||||
// operation. The functions of this structure may be called on any browser
|
/// routing operation. The functions of this structure may be called on any
|
||||||
// process thread unless otherwise indicated.
|
/// browser process thread unless otherwise indicated.
|
||||||
///
|
///
|
||||||
typedef struct _cef_media_route_t {
|
typedef struct _cef_media_route_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the ID for this route.
|
/// Returns the ID for this route.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_id)(struct _cef_media_route_t* self);
|
cef_string_userfree_t(CEF_CALLBACK* get_id)(struct _cef_media_route_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the source associated with this route.
|
/// Returns the source associated with this route.
|
||||||
///
|
///
|
||||||
struct _cef_media_source_t*(CEF_CALLBACK* get_source)(
|
struct _cef_media_source_t*(CEF_CALLBACK* get_source)(
|
||||||
struct _cef_media_route_t* self);
|
struct _cef_media_route_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the sink associated with this route.
|
/// Returns the sink associated with this route.
|
||||||
///
|
///
|
||||||
struct _cef_media_sink_t*(CEF_CALLBACK* get_sink)(
|
struct _cef_media_sink_t*(CEF_CALLBACK* get_sink)(
|
||||||
struct _cef_media_route_t* self);
|
struct _cef_media_route_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Send a message over this route. |message| will be copied if necessary.
|
/// Send a message over this route. |message| will be copied if necessary.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* send_route_message)(struct _cef_media_route_t* self,
|
void(CEF_CALLBACK* send_route_message)(struct _cef_media_route_t* self,
|
||||||
const void* message,
|
const void* message,
|
||||||
size_t message_size);
|
size_t message_size);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Terminate this route. Will result in an asynchronous call to
|
/// Terminate this route. Will result in an asynchronous call to
|
||||||
// cef_media_observer_t::OnRoutes on all registered observers.
|
/// cef_media_observer_t::OnRoutes on all registered observers.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* terminate)(struct _cef_media_route_t* self);
|
void(CEF_CALLBACK* terminate)(struct _cef_media_route_t* self);
|
||||||
} cef_media_route_t;
|
} cef_media_route_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback structure for cef_media_router_t::CreateRoute. The functions of this
|
/// Callback structure for cef_media_router_t::CreateRoute. The functions of
|
||||||
// structure will be called on the browser process UI thread.
|
/// this structure will be called on the browser process UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_media_route_create_callback_t {
|
typedef struct _cef_media_route_create_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Method that will be executed when the route creation has finished. |result|
|
/// Method that will be executed when the route creation has finished.
|
||||||
// will be CEF_MRCR_OK if the route creation succeeded. |error| will be a
|
/// |result| will be CEF_MRCR_OK if the route creation succeeded. |error| will
|
||||||
// description of the error if the route creation failed. |route| is the
|
/// be a description of the error if the route creation failed. |route| is the
|
||||||
// resulting route, or NULL if the route creation failed.
|
/// resulting route, or NULL if the route creation failed.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_media_route_create_finished)(
|
void(CEF_CALLBACK* on_media_route_create_finished)(
|
||||||
struct _cef_media_route_create_callback_t* self,
|
struct _cef_media_route_create_callback_t* self,
|
||||||
@@ -235,78 +235,71 @@ typedef struct _cef_media_route_create_callback_t {
|
|||||||
} cef_media_route_create_callback_t;
|
} cef_media_route_create_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Represents a sink to which media can be routed. Instances of this object are
|
/// Represents a sink to which media can be routed. Instances of this object are
|
||||||
// retrieved via cef_media_observer_t::OnSinks. The functions of this structure
|
/// retrieved via cef_media_observer_t::OnSinks. The functions of this structure
|
||||||
// may be called on any browser process thread unless otherwise indicated.
|
/// may be called on any browser process thread unless otherwise indicated.
|
||||||
///
|
///
|
||||||
typedef struct _cef_media_sink_t {
|
typedef struct _cef_media_sink_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the ID for this sink.
|
/// Returns the ID for this sink.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_id)(struct _cef_media_sink_t* self);
|
cef_string_userfree_t(CEF_CALLBACK* get_id)(struct _cef_media_sink_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the name of this sink.
|
/// Returns the name of this sink.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_name)(struct _cef_media_sink_t* self);
|
cef_string_userfree_t(CEF_CALLBACK* get_name)(struct _cef_media_sink_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the description of this sink.
|
/// Returns the icon type for this sink.
|
||||||
///
|
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_description)(
|
|
||||||
struct _cef_media_sink_t* self);
|
|
||||||
|
|
||||||
///
|
|
||||||
// Returns the icon type for this sink.
|
|
||||||
///
|
///
|
||||||
cef_media_sink_icon_type_t(CEF_CALLBACK* get_icon_type)(
|
cef_media_sink_icon_type_t(CEF_CALLBACK* get_icon_type)(
|
||||||
struct _cef_media_sink_t* self);
|
struct _cef_media_sink_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Asynchronously retrieves device info.
|
/// Asynchronously retrieves device info.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* get_device_info)(
|
void(CEF_CALLBACK* get_device_info)(
|
||||||
struct _cef_media_sink_t* self,
|
struct _cef_media_sink_t* self,
|
||||||
struct _cef_media_sink_device_info_callback_t* callback);
|
struct _cef_media_sink_device_info_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this sink accepts content via Cast.
|
/// Returns true (1) if this sink accepts content via Cast.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_cast_sink)(struct _cef_media_sink_t* self);
|
int(CEF_CALLBACK* is_cast_sink)(struct _cef_media_sink_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this sink accepts content via DIAL.
|
/// Returns true (1) if this sink accepts content via DIAL.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_dial_sink)(struct _cef_media_sink_t* self);
|
int(CEF_CALLBACK* is_dial_sink)(struct _cef_media_sink_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this sink is compatible with |source|.
|
/// Returns true (1) if this sink is compatible with |source|.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_compatible_with)(struct _cef_media_sink_t* self,
|
int(CEF_CALLBACK* is_compatible_with)(struct _cef_media_sink_t* self,
|
||||||
struct _cef_media_source_t* source);
|
struct _cef_media_source_t* source);
|
||||||
} cef_media_sink_t;
|
} cef_media_sink_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback structure for cef_media_sink_t::GetDeviceInfo. The functions of this
|
/// Callback structure for cef_media_sink_t::GetDeviceInfo. The functions of
|
||||||
// structure will be called on the browser process UI thread.
|
/// this structure will be called on the browser process UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_media_sink_device_info_callback_t {
|
typedef struct _cef_media_sink_device_info_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Method that will be executed asyncronously once device information has been
|
/// Method that will be executed asyncronously once device information has
|
||||||
// retrieved.
|
/// been retrieved.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_media_sink_device_info)(
|
void(CEF_CALLBACK* on_media_sink_device_info)(
|
||||||
struct _cef_media_sink_device_info_callback_t* self,
|
struct _cef_media_sink_device_info_callback_t* self,
|
||||||
@@ -314,30 +307,30 @@ typedef struct _cef_media_sink_device_info_callback_t {
|
|||||||
} cef_media_sink_device_info_callback_t;
|
} cef_media_sink_device_info_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Represents a source from which media can be routed. Instances of this object
|
/// Represents a source from which media can be routed. Instances of this object
|
||||||
// are retrieved via cef_media_router_t::GetSource. The functions of this
|
/// are retrieved via cef_media_router_t::GetSource. The functions of this
|
||||||
// structure may be called on any browser process thread unless otherwise
|
/// structure may be called on any browser process thread unless otherwise
|
||||||
// indicated.
|
/// indicated.
|
||||||
///
|
///
|
||||||
typedef struct _cef_media_source_t {
|
typedef struct _cef_media_source_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the ID (media source URN or URL) for this source.
|
/// Returns the ID (media source URN or URL) for this source.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_id)(struct _cef_media_source_t* self);
|
cef_string_userfree_t(CEF_CALLBACK* get_id)(struct _cef_media_source_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this source outputs its content via Cast.
|
/// Returns true (1) if this source outputs its content via Cast.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_cast_source)(struct _cef_media_source_t* self);
|
int(CEF_CALLBACK* is_cast_source)(struct _cef_media_source_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this source outputs its content via DIAL.
|
/// Returns true (1) if this source outputs its content via DIAL.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_dial_source)(struct _cef_media_source_t* self);
|
int(CEF_CALLBACK* is_dial_source)(struct _cef_media_source_t* self);
|
||||||
} cef_media_source_t;
|
} cef_media_source_t;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=28fa978051bd3ddff69d58e0dc8f445f64a61480$
|
// $hash=d70b78b8108bb08b4f53b2627ed4ebfdffece7c1$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_CAPI_H_
|
||||||
@@ -48,54 +48,54 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Supports creation and modification of menus. See cef_menu_id_t for the
|
/// Supports creation and modification of menus. See cef_menu_id_t for the
|
||||||
// command ids that have default implementations. All user-defined command ids
|
/// command ids that have default implementations. All user-defined command ids
|
||||||
// should be between MENU_ID_USER_FIRST and MENU_ID_USER_LAST. The functions of
|
/// should be between MENU_ID_USER_FIRST and MENU_ID_USER_LAST. The functions of
|
||||||
// this structure can only be accessed on the browser process the UI thread.
|
/// this structure can only be accessed on the browser process the UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_menu_model_t {
|
typedef struct _cef_menu_model_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this menu is a submenu.
|
/// Returns true (1) if this menu is a submenu.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_sub_menu)(struct _cef_menu_model_t* self);
|
int(CEF_CALLBACK* is_sub_menu)(struct _cef_menu_model_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Clears the menu. Returns true (1) on success.
|
/// Clears the menu. Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* clear)(struct _cef_menu_model_t* self);
|
int(CEF_CALLBACK* clear)(struct _cef_menu_model_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the number of items in this menu.
|
/// Returns the number of items in this menu.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_count)(struct _cef_menu_model_t* self);
|
size_t(CEF_CALLBACK* get_count)(struct _cef_menu_model_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Add a separator to the menu. Returns true (1) on success.
|
/// Add a separator to the menu. Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* add_separator)(struct _cef_menu_model_t* self);
|
int(CEF_CALLBACK* add_separator)(struct _cef_menu_model_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Add an item to the menu. Returns true (1) on success.
|
/// Add an item to the menu. Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* add_item)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* add_item)(struct _cef_menu_model_t* self,
|
||||||
int command_id,
|
int command_id,
|
||||||
const cef_string_t* label);
|
const cef_string_t* label);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Add a check item to the menu. Returns true (1) on success.
|
/// Add a check item to the menu. Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* add_check_item)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* add_check_item)(struct _cef_menu_model_t* self,
|
||||||
int command_id,
|
int command_id,
|
||||||
const cef_string_t* label);
|
const cef_string_t* label);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Add a radio item to the menu. Only a single item with the specified
|
/// Add a radio item to the menu. Only a single item with the specified
|
||||||
// |group_id| can be checked at a time. Returns true (1) on success.
|
/// |group_id| can be checked at a time. Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* add_radio_item)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* add_radio_item)(struct _cef_menu_model_t* self,
|
||||||
int command_id,
|
int command_id,
|
||||||
@@ -103,7 +103,7 @@ typedef struct _cef_menu_model_t {
|
|||||||
int group_id);
|
int group_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Add a sub-menu to the menu. The new sub-menu is returned.
|
/// Add a sub-menu to the menu. The new sub-menu is returned.
|
||||||
///
|
///
|
||||||
struct _cef_menu_model_t*(CEF_CALLBACK* add_sub_menu)(
|
struct _cef_menu_model_t*(CEF_CALLBACK* add_sub_menu)(
|
||||||
struct _cef_menu_model_t* self,
|
struct _cef_menu_model_t* self,
|
||||||
@@ -111,260 +111,266 @@ typedef struct _cef_menu_model_t {
|
|||||||
const cef_string_t* label);
|
const cef_string_t* label);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Insert a separator in the menu at the specified |index|. Returns true (1)
|
/// Insert a separator in the menu at the specified |index|. Returns true (1)
|
||||||
// on success.
|
/// on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* insert_separator_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* insert_separator_at)(struct _cef_menu_model_t* self,
|
||||||
int index);
|
size_t index);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Insert an item in the menu at the specified |index|. Returns true (1) on
|
/// Insert an item in the menu at the specified |index|. Returns true (1) on
|
||||||
// success.
|
/// success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* insert_item_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* insert_item_at)(struct _cef_menu_model_t* self,
|
||||||
int index,
|
size_t index,
|
||||||
int command_id,
|
int command_id,
|
||||||
const cef_string_t* label);
|
const cef_string_t* label);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Insert a check item in the menu at the specified |index|. Returns true (1)
|
/// Insert a check item in the menu at the specified |index|. Returns true (1)
|
||||||
// on success.
|
/// on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* insert_check_item_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* insert_check_item_at)(struct _cef_menu_model_t* self,
|
||||||
int index,
|
size_t index,
|
||||||
int command_id,
|
int command_id,
|
||||||
const cef_string_t* label);
|
const cef_string_t* label);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Insert a radio item in the menu at the specified |index|. Only a single
|
/// Insert a radio item in the menu at the specified |index|. Only a single
|
||||||
// item with the specified |group_id| can be checked at a time. Returns true
|
/// item with the specified |group_id| can be checked at a time. Returns true
|
||||||
// (1) on success.
|
/// (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* insert_radio_item_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* insert_radio_item_at)(struct _cef_menu_model_t* self,
|
||||||
int index,
|
size_t index,
|
||||||
int command_id,
|
int command_id,
|
||||||
const cef_string_t* label,
|
const cef_string_t* label,
|
||||||
int group_id);
|
int group_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Insert a sub-menu in the menu at the specified |index|. The new sub-menu is
|
/// Insert a sub-menu in the menu at the specified |index|. The new sub-menu
|
||||||
// returned.
|
/// is returned.
|
||||||
///
|
///
|
||||||
struct _cef_menu_model_t*(CEF_CALLBACK* insert_sub_menu_at)(
|
struct _cef_menu_model_t*(CEF_CALLBACK* insert_sub_menu_at)(
|
||||||
struct _cef_menu_model_t* self,
|
struct _cef_menu_model_t* self,
|
||||||
int index,
|
size_t index,
|
||||||
int command_id,
|
int command_id,
|
||||||
const cef_string_t* label);
|
const cef_string_t* label);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Removes the item with the specified |command_id|. Returns true (1) on
|
/// Removes the item with the specified |command_id|. Returns true (1) on
|
||||||
// success.
|
/// success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* remove)(struct _cef_menu_model_t* self, int command_id);
|
int(CEF_CALLBACK* remove)(struct _cef_menu_model_t* self, int command_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Removes the item at the specified |index|. Returns true (1) on success.
|
/// Removes the item at the specified |index|. Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* remove_at)(struct _cef_menu_model_t* self, int index);
|
int(CEF_CALLBACK* remove_at)(struct _cef_menu_model_t* self, size_t index);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the index associated with the specified |command_id| or -1 if not
|
/// Returns the index associated with the specified |command_id| or -1 if not
|
||||||
// found due to the command id not existing in the menu.
|
/// found due to the command id not existing in the menu.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_index_of)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* get_index_of)(struct _cef_menu_model_t* self,
|
||||||
int command_id);
|
int command_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the command id at the specified |index| or -1 if not found due to
|
/// Returns the command id at the specified |index| or -1 if not found due to
|
||||||
// invalid range or the index being a separator.
|
/// invalid range or the index being a separator.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_command_id_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* get_command_id_at)(struct _cef_menu_model_t* self,
|
||||||
int index);
|
size_t index);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Sets the command id at the specified |index|. Returns true (1) on success.
|
/// Sets the command id at the specified |index|. Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_command_id_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_command_id_at)(struct _cef_menu_model_t* self,
|
||||||
int index,
|
size_t index,
|
||||||
int command_id);
|
int command_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the label for the specified |command_id| or NULL if not found.
|
/// Returns the label for the specified |command_id| or NULL if not found.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_label)(struct _cef_menu_model_t* self,
|
cef_string_userfree_t(CEF_CALLBACK* get_label)(struct _cef_menu_model_t* self,
|
||||||
int command_id);
|
int command_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the label at the specified |index| or NULL if not found due to
|
/// Returns the label at the specified |index| or NULL if not found due to
|
||||||
// invalid range or the index being a separator.
|
/// invalid range or the index being a separator.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(
|
cef_string_userfree_t(
|
||||||
CEF_CALLBACK* get_label_at)(struct _cef_menu_model_t* self, int index);
|
CEF_CALLBACK* get_label_at)(struct _cef_menu_model_t* self, size_t index);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Sets the label for the specified |command_id|. Returns true (1) on success.
|
/// Sets the label for the specified |command_id|. Returns true (1) on
|
||||||
|
/// success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_label)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_label)(struct _cef_menu_model_t* self,
|
||||||
int command_id,
|
int command_id,
|
||||||
const cef_string_t* label);
|
const cef_string_t* label);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the label at the specified |index|. Returns true (1) on success.
|
/// Set the label at the specified |index|. Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_label_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_label_at)(struct _cef_menu_model_t* self,
|
||||||
int index,
|
size_t index,
|
||||||
const cef_string_t* label);
|
const cef_string_t* label);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the item type for the specified |command_id|.
|
/// Returns the item type for the specified |command_id|.
|
||||||
///
|
///
|
||||||
cef_menu_item_type_t(CEF_CALLBACK* get_type)(struct _cef_menu_model_t* self,
|
cef_menu_item_type_t(CEF_CALLBACK* get_type)(struct _cef_menu_model_t* self,
|
||||||
int command_id);
|
int command_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the item type at the specified |index|.
|
/// Returns the item type at the specified |index|.
|
||||||
///
|
///
|
||||||
cef_menu_item_type_t(
|
cef_menu_item_type_t(
|
||||||
CEF_CALLBACK* get_type_at)(struct _cef_menu_model_t* self, int index);
|
CEF_CALLBACK* get_type_at)(struct _cef_menu_model_t* self, size_t index);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the group id for the specified |command_id| or -1 if invalid.
|
/// Returns the group id for the specified |command_id| or -1 if invalid.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_group_id)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* get_group_id)(struct _cef_menu_model_t* self,
|
||||||
int command_id);
|
int command_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the group id at the specified |index| or -1 if invalid.
|
/// Returns the group id at the specified |index| or -1 if invalid.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_group_id_at)(struct _cef_menu_model_t* self, int index);
|
int(CEF_CALLBACK* get_group_id_at)(struct _cef_menu_model_t* self,
|
||||||
|
size_t index);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Sets the group id for the specified |command_id|. Returns true (1) on
|
/// Sets the group id for the specified |command_id|. Returns true (1) on
|
||||||
// success.
|
/// success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_group_id)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_group_id)(struct _cef_menu_model_t* self,
|
||||||
int command_id,
|
int command_id,
|
||||||
int group_id);
|
int group_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Sets the group id at the specified |index|. Returns true (1) on success.
|
/// Sets the group id at the specified |index|. Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_group_id_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_group_id_at)(struct _cef_menu_model_t* self,
|
||||||
int index,
|
size_t index,
|
||||||
int group_id);
|
int group_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the submenu for the specified |command_id| or NULL if invalid.
|
/// Returns the submenu for the specified |command_id| or NULL if invalid.
|
||||||
///
|
///
|
||||||
struct _cef_menu_model_t*(CEF_CALLBACK* get_sub_menu)(
|
struct _cef_menu_model_t*(CEF_CALLBACK* get_sub_menu)(
|
||||||
struct _cef_menu_model_t* self,
|
struct _cef_menu_model_t* self,
|
||||||
int command_id);
|
int command_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the submenu at the specified |index| or NULL if invalid.
|
/// Returns the submenu at the specified |index| or NULL if invalid.
|
||||||
///
|
///
|
||||||
struct _cef_menu_model_t*(
|
struct _cef_menu_model_t*(CEF_CALLBACK* get_sub_menu_at)(
|
||||||
CEF_CALLBACK* get_sub_menu_at)(struct _cef_menu_model_t* self, int index);
|
struct _cef_menu_model_t* self,
|
||||||
|
size_t index);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the specified |command_id| is visible.
|
/// Returns true (1) if the specified |command_id| is visible.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_visible)(struct _cef_menu_model_t* self, int command_id);
|
int(CEF_CALLBACK* is_visible)(struct _cef_menu_model_t* self, int command_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the specified |index| is visible.
|
/// Returns true (1) if the specified |index| is visible.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_visible_at)(struct _cef_menu_model_t* self, int index);
|
int(CEF_CALLBACK* is_visible_at)(struct _cef_menu_model_t* self,
|
||||||
|
size_t index);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Change the visibility of the specified |command_id|. Returns true (1) on
|
/// Change the visibility of the specified |command_id|. Returns true (1) on
|
||||||
// success.
|
/// success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_visible)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_visible)(struct _cef_menu_model_t* self,
|
||||||
int command_id,
|
int command_id,
|
||||||
int visible);
|
int visible);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Change the visibility at the specified |index|. Returns true (1) on
|
/// Change the visibility at the specified |index|. Returns true (1) on
|
||||||
// success.
|
/// success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_visible_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_visible_at)(struct _cef_menu_model_t* self,
|
||||||
int index,
|
size_t index,
|
||||||
int visible);
|
int visible);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the specified |command_id| is enabled.
|
/// Returns true (1) if the specified |command_id| is enabled.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_enabled)(struct _cef_menu_model_t* self, int command_id);
|
int(CEF_CALLBACK* is_enabled)(struct _cef_menu_model_t* self, int command_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the specified |index| is enabled.
|
/// Returns true (1) if the specified |index| is enabled.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_enabled_at)(struct _cef_menu_model_t* self, int index);
|
int(CEF_CALLBACK* is_enabled_at)(struct _cef_menu_model_t* self,
|
||||||
|
size_t index);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Change the enabled status of the specified |command_id|. Returns true (1)
|
/// Change the enabled status of the specified |command_id|. Returns true (1)
|
||||||
// on success.
|
/// on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_enabled)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_enabled)(struct _cef_menu_model_t* self,
|
||||||
int command_id,
|
int command_id,
|
||||||
int enabled);
|
int enabled);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Change the enabled status at the specified |index|. Returns true (1) on
|
/// Change the enabled status at the specified |index|. Returns true (1) on
|
||||||
// success.
|
/// success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_enabled_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_enabled_at)(struct _cef_menu_model_t* self,
|
||||||
int index,
|
size_t index,
|
||||||
int enabled);
|
int enabled);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the specified |command_id| is checked. Only applies to
|
/// Returns true (1) if the specified |command_id| is checked. Only applies to
|
||||||
// check and radio items.
|
/// check and radio items.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_checked)(struct _cef_menu_model_t* self, int command_id);
|
int(CEF_CALLBACK* is_checked)(struct _cef_menu_model_t* self, int command_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the specified |index| is checked. Only applies to check
|
/// Returns true (1) if the specified |index| is checked. Only applies to
|
||||||
// and radio items.
|
/// check and radio items.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_checked_at)(struct _cef_menu_model_t* self, int index);
|
int(CEF_CALLBACK* is_checked_at)(struct _cef_menu_model_t* self,
|
||||||
|
size_t index);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Check the specified |command_id|. Only applies to check and radio items.
|
/// Check the specified |command_id|. Only applies to check and radio items.
|
||||||
// Returns true (1) on success.
|
/// Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_checked)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_checked)(struct _cef_menu_model_t* self,
|
||||||
int command_id,
|
int command_id,
|
||||||
int checked);
|
int checked);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Check the specified |index|. Only applies to check and radio items. Returns
|
/// Check the specified |index|. Only applies to check and radio items.
|
||||||
// true (1) on success.
|
/// Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_checked_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_checked_at)(struct _cef_menu_model_t* self,
|
||||||
int index,
|
size_t index,
|
||||||
int checked);
|
int checked);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the specified |command_id| has a keyboard accelerator
|
/// Returns true (1) if the specified |command_id| has a keyboard accelerator
|
||||||
// assigned.
|
/// assigned.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* has_accelerator)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* has_accelerator)(struct _cef_menu_model_t* self,
|
||||||
int command_id);
|
int command_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the specified |index| has a keyboard accelerator
|
/// Returns true (1) if the specified |index| has a keyboard accelerator
|
||||||
// assigned.
|
/// assigned.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* has_accelerator_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* has_accelerator_at)(struct _cef_menu_model_t* self,
|
||||||
int index);
|
size_t index);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the keyboard accelerator for the specified |command_id|. |key_code| can
|
/// Set the keyboard accelerator for the specified |command_id|. |key_code|
|
||||||
// be any virtual key or character value. Returns true (1) on success.
|
/// can be any virtual key or character value. Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_accelerator)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_accelerator)(struct _cef_menu_model_t* self,
|
||||||
int command_id,
|
int command_id,
|
||||||
@@ -374,33 +380,33 @@ typedef struct _cef_menu_model_t {
|
|||||||
int alt_pressed);
|
int alt_pressed);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the keyboard accelerator at the specified |index|. |key_code| can be
|
/// Set the keyboard accelerator at the specified |index|. |key_code| can be
|
||||||
// any virtual key or character value. Returns true (1) on success.
|
/// any virtual key or character value. Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_accelerator_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_accelerator_at)(struct _cef_menu_model_t* self,
|
||||||
int index,
|
size_t index,
|
||||||
int key_code,
|
int key_code,
|
||||||
int shift_pressed,
|
int shift_pressed,
|
||||||
int ctrl_pressed,
|
int ctrl_pressed,
|
||||||
int alt_pressed);
|
int alt_pressed);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Remove the keyboard accelerator for the specified |command_id|. Returns
|
/// Remove the keyboard accelerator for the specified |command_id|. Returns
|
||||||
// true (1) on success.
|
/// true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* remove_accelerator)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* remove_accelerator)(struct _cef_menu_model_t* self,
|
||||||
int command_id);
|
int command_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Remove the keyboard accelerator at the specified |index|. Returns true (1)
|
/// Remove the keyboard accelerator at the specified |index|. Returns true (1)
|
||||||
// on success.
|
/// on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* remove_accelerator_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* remove_accelerator_at)(struct _cef_menu_model_t* self,
|
||||||
int index);
|
size_t index);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Retrieves the keyboard accelerator for the specified |command_id|. Returns
|
/// Retrieves the keyboard accelerator for the specified |command_id|. Returns
|
||||||
// true (1) on success.
|
/// true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_accelerator)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* get_accelerator)(struct _cef_menu_model_t* self,
|
||||||
int command_id,
|
int command_id,
|
||||||
@@ -410,21 +416,21 @@ typedef struct _cef_menu_model_t {
|
|||||||
int* alt_pressed);
|
int* alt_pressed);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Retrieves the keyboard accelerator for the specified |index|. Returns true
|
/// Retrieves the keyboard accelerator for the specified |index|. Returns true
|
||||||
// (1) on success.
|
/// (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_accelerator_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* get_accelerator_at)(struct _cef_menu_model_t* self,
|
||||||
int index,
|
size_t index,
|
||||||
int* key_code,
|
int* key_code,
|
||||||
int* shift_pressed,
|
int* shift_pressed,
|
||||||
int* ctrl_pressed,
|
int* ctrl_pressed,
|
||||||
int* alt_pressed);
|
int* alt_pressed);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the explicit color for |command_id| and |color_type| to |color|.
|
/// Set the explicit color for |command_id| and |color_type| to |color|.
|
||||||
// Specify a |color| value of 0 to remove the explicit color. If no explicit
|
/// Specify a |color| value of 0 to remove the explicit color. If no explicit
|
||||||
// color or default color is set for |color_type| then the system color will
|
/// color or default color is set for |color_type| then the system color will
|
||||||
// be used. Returns true (1) on success.
|
/// be used. Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_color)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_color)(struct _cef_menu_model_t* self,
|
||||||
int command_id,
|
int command_id,
|
||||||
@@ -432,11 +438,11 @@ typedef struct _cef_menu_model_t {
|
|||||||
cef_color_t color);
|
cef_color_t color);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the explicit color for |command_id| and |index| to |color|. Specify a
|
/// Set the explicit color for |command_id| and |index| to |color|. Specify a
|
||||||
// |color| value of 0 to remove the explicit color. Specify an |index| value
|
/// |color| value of 0 to remove the explicit color. Specify an |index| value
|
||||||
// of -1 to set the default color for items that do not have an explicit color
|
/// of -1 to set the default color for items that do not have an explicit
|
||||||
// set. If no explicit color or default color is set for |color_type| then the
|
/// color set. If no explicit color or default color is set for |color_type|
|
||||||
// system color will be used. Returns true (1) on success.
|
/// then the system color will be used. Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_color_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_color_at)(struct _cef_menu_model_t* self,
|
||||||
int index,
|
int index,
|
||||||
@@ -444,9 +450,9 @@ typedef struct _cef_menu_model_t {
|
|||||||
cef_color_t color);
|
cef_color_t color);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns in |color| the color that was explicitly set for |command_id| and
|
/// Returns in |color| the color that was explicitly set for |command_id| and
|
||||||
// |color_type|. If a color was not set then 0 will be returned in |color|.
|
/// |color_type|. If a color was not set then 0 will be returned in |color|.
|
||||||
// Returns true (1) on success.
|
/// Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_color)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* get_color)(struct _cef_menu_model_t* self,
|
||||||
int command_id,
|
int command_id,
|
||||||
@@ -454,10 +460,10 @@ typedef struct _cef_menu_model_t {
|
|||||||
cef_color_t* color);
|
cef_color_t* color);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns in |color| the color that was explicitly set for |command_id| and
|
/// Returns in |color| the color that was explicitly set for |command_id| and
|
||||||
// |color_type|. Specify an |index| value of -1 to return the default color in
|
/// |color_type|. Specify an |index| value of -1 to return the default color
|
||||||
// |color|. If a color was not set then 0 will be returned in |color|. Returns
|
/// in |color|. If a color was not set then 0 will be returned in |color|.
|
||||||
// true (1) on success.
|
/// Returns true (1) on success.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_color_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* get_color_at)(struct _cef_menu_model_t* self,
|
||||||
int index,
|
int index,
|
||||||
@@ -465,33 +471,33 @@ typedef struct _cef_menu_model_t {
|
|||||||
cef_color_t* color);
|
cef_color_t* color);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Sets the font list for the specified |command_id|. If |font_list| is NULL
|
/// 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
|
/// 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-
|
/// "<FONT_FAMILY_LIST>,[STYLES] <SIZE>", where: - FONT_FAMILY_LIST is a
|
||||||
// separated list of font family names, - STYLES is an optional space-
|
/// comma-separated list of font family names, - STYLES is an optional space-
|
||||||
// separated list of style names (case-sensitive
|
/// separated list of style names
|
||||||
// "Bold" and "Italic" are supported), and
|
/// (case-sensitive "Bold" and "Italic" are supported), and
|
||||||
// - SIZE is an integer font size in pixels with the suffix "px".
|
/// - SIZE is an integer font size in pixels with the suffix "px".
|
||||||
//
|
///
|
||||||
// Here are examples of valid font description strings: - "Arial, Helvetica,
|
/// Here are examples of valid font description strings: - "Arial, Helvetica,
|
||||||
// Bold Italic 14px" - "Arial, 14px"
|
/// Bold Italic 14px" - "Arial, 14px"
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_font_list)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_font_list)(struct _cef_menu_model_t* self,
|
||||||
int command_id,
|
int command_id,
|
||||||
const cef_string_t* font_list);
|
const cef_string_t* font_list);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Sets the font list for the specified |index|. Specify an |index| value of
|
/// 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
|
/// -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
|
/// used. Returns true (1) on success. The format is
|
||||||
// "<FONT_FAMILY_LIST>,[STYLES] <SIZE>", where: - FONT_FAMILY_LIST is a comma-
|
/// "<FONT_FAMILY_LIST>,[STYLES] <SIZE>", where: - FONT_FAMILY_LIST is a
|
||||||
// separated list of font family names, - STYLES is an optional space-
|
/// comma-separated list of font family names, - STYLES is an optional space-
|
||||||
// separated list of style names (case-sensitive
|
/// separated list of style names
|
||||||
// "Bold" and "Italic" are supported), and
|
/// (case-sensitive "Bold" and "Italic" are supported), and
|
||||||
// - SIZE is an integer font size in pixels with the suffix "px".
|
/// - SIZE is an integer font size in pixels with the suffix "px".
|
||||||
//
|
///
|
||||||
// Here are examples of valid font description strings: - "Arial, Helvetica,
|
/// Here are examples of valid font description strings: - "Arial, Helvetica,
|
||||||
// Bold Italic 14px" - "Arial, 14px"
|
/// Bold Italic 14px" - "Arial, 14px"
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_font_list_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_font_list_at)(struct _cef_menu_model_t* self,
|
||||||
int index,
|
int index,
|
||||||
@@ -499,7 +505,7 @@ typedef struct _cef_menu_model_t {
|
|||||||
} cef_menu_model_t;
|
} cef_menu_model_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Create a new MenuModel with the specified |delegate|.
|
/// Create a new MenuModel with the specified |delegate|.
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_menu_model_t* cef_menu_model_create(
|
CEF_EXPORT cef_menu_model_t* cef_menu_model_create(
|
||||||
struct _cef_menu_model_delegate_t* delegate);
|
struct _cef_menu_model_delegate_t* delegate);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=edc411cb0447a6c2965cdeb5f709fe56c43ec2bb$
|
// $hash=933a90dfb7b94a3aba7f2944e4540662dc8c79d7$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_DELEGATE_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_DELEGATE_CAPI_H_
|
||||||
@@ -49,19 +49,19 @@ extern "C" {
|
|||||||
struct _cef_menu_model_t;
|
struct _cef_menu_model_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle menu model events. The functions of this
|
/// Implement this structure to handle menu model events. The functions of this
|
||||||
// structure will be called on the browser process UI thread unless otherwise
|
/// structure will be called on the browser process UI thread unless otherwise
|
||||||
// indicated.
|
/// indicated.
|
||||||
///
|
///
|
||||||
typedef struct _cef_menu_model_delegate_t {
|
typedef struct _cef_menu_model_delegate_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Perform the action associated with the specified |command_id| and optional
|
/// Perform the action associated with the specified |command_id| and optional
|
||||||
// |event_flags|.
|
/// |event_flags|.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* execute_command)(struct _cef_menu_model_delegate_t* self,
|
void(CEF_CALLBACK* execute_command)(struct _cef_menu_model_delegate_t* self,
|
||||||
struct _cef_menu_model_t* menu_model,
|
struct _cef_menu_model_t* menu_model,
|
||||||
@@ -69,8 +69,8 @@ typedef struct _cef_menu_model_delegate_t {
|
|||||||
cef_event_flags_t event_flags);
|
cef_event_flags_t event_flags);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the user moves the mouse outside the menu and over the owning
|
/// Called when the user moves the mouse outside the menu and over the owning
|
||||||
// window.
|
/// window.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* mouse_outside_menu)(
|
void(CEF_CALLBACK* mouse_outside_menu)(
|
||||||
struct _cef_menu_model_delegate_t* self,
|
struct _cef_menu_model_delegate_t* self,
|
||||||
@@ -78,8 +78,8 @@ typedef struct _cef_menu_model_delegate_t {
|
|||||||
const cef_point_t* screen_point);
|
const cef_point_t* screen_point);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on unhandled open submenu keyboard commands. |is_rtl| will be true
|
/// Called on unhandled open submenu keyboard commands. |is_rtl| will be true
|
||||||
// (1) if the menu is displaying a right-to-left language.
|
/// (1) if the menu is displaying a right-to-left language.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* unhandled_open_submenu)(
|
void(CEF_CALLBACK* unhandled_open_submenu)(
|
||||||
struct _cef_menu_model_delegate_t* self,
|
struct _cef_menu_model_delegate_t* self,
|
||||||
@@ -87,8 +87,8 @@ typedef struct _cef_menu_model_delegate_t {
|
|||||||
int is_rtl);
|
int is_rtl);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on unhandled close submenu keyboard commands. |is_rtl| will be true
|
/// Called on unhandled close submenu keyboard commands. |is_rtl| will be true
|
||||||
// (1) if the menu is displaying a right-to-left language.
|
/// (1) if the menu is displaying a right-to-left language.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* unhandled_close_submenu)(
|
void(CEF_CALLBACK* unhandled_close_submenu)(
|
||||||
struct _cef_menu_model_delegate_t* self,
|
struct _cef_menu_model_delegate_t* self,
|
||||||
@@ -96,20 +96,20 @@ typedef struct _cef_menu_model_delegate_t {
|
|||||||
int is_rtl);
|
int is_rtl);
|
||||||
|
|
||||||
///
|
///
|
||||||
// The menu is about to show.
|
/// The menu is about to show.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* menu_will_show)(struct _cef_menu_model_delegate_t* self,
|
void(CEF_CALLBACK* menu_will_show)(struct _cef_menu_model_delegate_t* self,
|
||||||
struct _cef_menu_model_t* menu_model);
|
struct _cef_menu_model_t* menu_model);
|
||||||
|
|
||||||
///
|
///
|
||||||
// The menu has closed.
|
/// The menu has closed.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* menu_closed)(struct _cef_menu_model_delegate_t* self,
|
void(CEF_CALLBACK* menu_closed)(struct _cef_menu_model_delegate_t* self,
|
||||||
struct _cef_menu_model_t* menu_model);
|
struct _cef_menu_model_t* menu_model);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Optionally modify a menu item label. Return true (1) if |label| was
|
/// Optionally modify a menu item label. Return true (1) if |label| was
|
||||||
// modified.
|
/// modified.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* format_label)(struct _cef_menu_model_delegate_t* self,
|
int(CEF_CALLBACK* format_label)(struct _cef_menu_model_delegate_t* self,
|
||||||
struct _cef_menu_model_t* menu_model,
|
struct _cef_menu_model_t* menu_model,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=f14afbd6941bcb37b14cce81569882512c3d7194$
|
// $hash=d33771c31b7b0964aa2ccf1c2bc2ca1226194977$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_NAVIGATION_ENTRY_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_NAVIGATION_ENTRY_CAPI_H_
|
||||||
@@ -48,78 +48,79 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used to represent an entry in navigation history.
|
/// Structure used to represent an entry in navigation history.
|
||||||
///
|
///
|
||||||
typedef struct _cef_navigation_entry_t {
|
typedef struct _cef_navigation_entry_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this object is valid. Do not call any other functions
|
/// Returns true (1) if this object is valid. Do not call any other functions
|
||||||
// if this function returns false (0).
|
/// if this function returns false (0).
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_valid)(struct _cef_navigation_entry_t* self);
|
int(CEF_CALLBACK* is_valid)(struct _cef_navigation_entry_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the actual URL of the page. For some pages this may be data: URL or
|
/// Returns the actual URL of the page. For some pages this may be data: URL
|
||||||
// similar. Use get_display_url() to return a display-friendly version.
|
/// or similar. Use get_display_url() to return a display-friendly version.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_url)(
|
cef_string_userfree_t(CEF_CALLBACK* get_url)(
|
||||||
struct _cef_navigation_entry_t* self);
|
struct _cef_navigation_entry_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns a display-friendly version of the URL.
|
/// Returns a display-friendly version of the URL.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_display_url)(
|
cef_string_userfree_t(CEF_CALLBACK* get_display_url)(
|
||||||
struct _cef_navigation_entry_t* self);
|
struct _cef_navigation_entry_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the original URL that was entered by the user before any redirects.
|
/// Returns the original URL that was entered by the user before any
|
||||||
|
/// redirects.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_original_url)(
|
cef_string_userfree_t(CEF_CALLBACK* get_original_url)(
|
||||||
struct _cef_navigation_entry_t* self);
|
struct _cef_navigation_entry_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the title set by the page. This value may be NULL.
|
/// Returns the title set by the page. This value may be NULL.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_title)(
|
cef_string_userfree_t(CEF_CALLBACK* get_title)(
|
||||||
struct _cef_navigation_entry_t* self);
|
struct _cef_navigation_entry_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the transition type which indicates what the user did to move to
|
/// Returns the transition type which indicates what the user did to move to
|
||||||
// this page from the previous page.
|
/// this page from the previous page.
|
||||||
///
|
///
|
||||||
cef_transition_type_t(CEF_CALLBACK* get_transition_type)(
|
cef_transition_type_t(CEF_CALLBACK* get_transition_type)(
|
||||||
struct _cef_navigation_entry_t* self);
|
struct _cef_navigation_entry_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this navigation includes post data.
|
/// Returns true (1) if this navigation includes post data.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* has_post_data)(struct _cef_navigation_entry_t* self);
|
int(CEF_CALLBACK* has_post_data)(struct _cef_navigation_entry_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the time for the last known successful navigation completion. A
|
/// Returns the time for the last known successful navigation completion. A
|
||||||
// navigation may be completed more than once if the page is reloaded. May be
|
/// navigation may be completed more than once if the page is reloaded. May be
|
||||||
// 0 if the navigation has not yet completed.
|
/// 0 if the navigation has not yet completed.
|
||||||
///
|
///
|
||||||
cef_time_t(CEF_CALLBACK* get_completion_time)(
|
cef_basetime_t(CEF_CALLBACK* get_completion_time)(
|
||||||
struct _cef_navigation_entry_t* self);
|
struct _cef_navigation_entry_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the HTTP status code for the last known successful navigation
|
/// Returns the HTTP status code for the last known successful navigation
|
||||||
// response. May be 0 if the response has not yet been received or if the
|
/// response. May be 0 if the response has not yet been received or if the
|
||||||
// navigation has not yet completed.
|
/// navigation has not yet completed.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_http_status_code)(struct _cef_navigation_entry_t* self);
|
int(CEF_CALLBACK* get_http_status_code)(struct _cef_navigation_entry_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the SSL information for this navigation entry.
|
/// Returns the SSL information for this navigation entry.
|
||||||
///
|
///
|
||||||
struct _cef_sslstatus_t*(CEF_CALLBACK* get_sslstatus)(
|
struct _cef_sslstatus_t*(CEF_CALLBACK* get_sslstatus)(
|
||||||
struct _cef_navigation_entry_t* self);
|
struct _cef_navigation_entry_t* self);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=6798e6147540596c1abac8c7457d9d1d4d99bd54$
|
// $hash=b564dfe24017a0805e393854d12791a71c46c454$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_ORIGIN_WHITELIST_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_ORIGIN_WHITELIST_CAPI_H_
|
||||||
@@ -47,40 +47,41 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Add an entry to the cross-origin access whitelist.
|
/// Add an entry to the cross-origin access whitelist.
|
||||||
//
|
///
|
||||||
// The same-origin policy restricts how scripts hosted from different origins
|
/// The same-origin policy restricts how scripts hosted from different origins
|
||||||
// (scheme + domain + port) can communicate. By default, scripts can only access
|
/// (scheme + domain + port) can communicate. By default, scripts can only
|
||||||
// resources with the same origin. Scripts hosted on the HTTP and HTTPS schemes
|
/// access resources with the same origin. Scripts hosted on the HTTP and HTTPS
|
||||||
// (but no other schemes) can use the "Access-Control-Allow-Origin" header to
|
/// schemes (but no other schemes) can use the "Access-Control-Allow-Origin"
|
||||||
// allow cross-origin requests. For example, https://source.example.com can make
|
/// header to allow cross-origin requests. For example,
|
||||||
// XMLHttpRequest requests on http://target.example.com if the
|
/// https://source.example.com can make XMLHttpRequest requests on
|
||||||
// http://target.example.com request returns an "Access-Control-Allow-Origin:
|
/// http://target.example.com if the http://target.example.com request returns
|
||||||
// https://source.example.com" response header.
|
/// an "Access-Control-Allow-Origin: https://source.example.com" response
|
||||||
//
|
/// header.
|
||||||
// Scripts in separate frames or iframes and hosted from the same protocol and
|
///
|
||||||
// domain suffix can execute cross-origin JavaScript if both pages set the
|
/// Scripts in separate frames or iframes and hosted from the same protocol and
|
||||||
// document.domain value to the same domain suffix. For example,
|
/// domain suffix can execute cross-origin JavaScript if both pages set the
|
||||||
// scheme://foo.example.com and scheme://bar.example.com can communicate using
|
/// document.domain value to the same domain suffix. For example,
|
||||||
// JavaScript if both domains set document.domain="example.com".
|
/// scheme://foo.example.com and scheme://bar.example.com can communicate using
|
||||||
//
|
/// JavaScript if both domains set document.domain="example.com".
|
||||||
// This function is used to allow access to origins that would otherwise violate
|
///
|
||||||
// the same-origin policy. Scripts hosted underneath the fully qualified
|
/// This function is used to allow access to origins that would otherwise
|
||||||
// |source_origin| URL (like http://www.example.com) will be allowed access to
|
/// violate the same-origin policy. Scripts hosted underneath the fully
|
||||||
// all resources hosted on the specified |target_protocol| and |target_domain|.
|
/// qualified |source_origin| URL (like http://www.example.com) will be allowed
|
||||||
// If |target_domain| is non-NULL and |allow_target_subdomains| if false (0)
|
/// access to all resources hosted on the specified |target_protocol| and
|
||||||
// only exact domain matches will be allowed. If |target_domain| contains a top-
|
/// |target_domain|. If |target_domain| is non-NULL and
|
||||||
// level domain component (like "example.com") and |allow_target_subdomains| is
|
/// |allow_target_subdomains| if false (0) only exact domain matches will be
|
||||||
// true (1) sub-domain matches will be allowed. If |target_domain| is NULL and
|
/// allowed. If |target_domain| contains a top- level domain component (like
|
||||||
// |allow_target_subdomains| if true (1) all domains and IP addresses will be
|
/// "example.com") and |allow_target_subdomains| is true (1) sub-domain matches
|
||||||
// allowed.
|
/// will be allowed. If |target_domain| is NULL and |allow_target_subdomains| if
|
||||||
//
|
/// true (1) all domains and IP addresses will be allowed.
|
||||||
// This function cannot be used to bypass the restrictions on local or display
|
///
|
||||||
// isolated schemes. See the comments on CefRegisterCustomScheme for more
|
/// This function cannot be used to bypass the restrictions on local or display
|
||||||
// information.
|
/// isolated schemes. See the comments on CefRegisterCustomScheme for more
|
||||||
//
|
/// information.
|
||||||
// This function may be called on any thread. Returns false (0) if
|
///
|
||||||
// |source_origin| is invalid or the whitelist cannot be accessed.
|
/// This function may be called on any thread. Returns false (0) if
|
||||||
|
/// |source_origin| is invalid or the whitelist cannot be accessed.
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_add_cross_origin_whitelist_entry(
|
CEF_EXPORT int cef_add_cross_origin_whitelist_entry(
|
||||||
const cef_string_t* source_origin,
|
const cef_string_t* source_origin,
|
||||||
@@ -89,8 +90,8 @@ CEF_EXPORT int cef_add_cross_origin_whitelist_entry(
|
|||||||
int allow_target_subdomains);
|
int allow_target_subdomains);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Remove an entry from the cross-origin access whitelist. Returns false (0) if
|
/// Remove an entry from the cross-origin access whitelist. Returns false (0) if
|
||||||
// |source_origin| is invalid or the whitelist cannot be accessed.
|
/// |source_origin| is invalid or the whitelist cannot be accessed.
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_remove_cross_origin_whitelist_entry(
|
CEF_EXPORT int cef_remove_cross_origin_whitelist_entry(
|
||||||
const cef_string_t* source_origin,
|
const cef_string_t* source_origin,
|
||||||
@@ -99,10 +100,10 @@ CEF_EXPORT int cef_remove_cross_origin_whitelist_entry(
|
|||||||
int allow_target_subdomains);
|
int allow_target_subdomains);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Remove all entries from the cross-origin access whitelist. Returns false (0)
|
/// Remove all entries from the cross-origin access whitelist. Returns false (0)
|
||||||
// if the whitelist cannot be accessed.
|
/// if the whitelist cannot be accessed.
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_clear_cross_origin_whitelist();
|
CEF_EXPORT int cef_clear_cross_origin_whitelist(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=84149324b177c47287b935dcb3d5900a33acfdf5$
|
// $hash=5d6dad4bfaeef0117d068b6e67a8da7490fe7c2d$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_PARSER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_PARSER_CAPI_H_
|
||||||
@@ -47,84 +47,92 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Parse the specified |url| into its component parts. Returns false (0) if the
|
/// Combines specified |base_url| and |relative_url| into |resolved_url|.
|
||||||
// URL is NULL or invalid.
|
/// Returns false (0) if one of the URLs is NULL or invalid.
|
||||||
|
///
|
||||||
|
CEF_EXPORT int cef_resolve_url(const cef_string_t* base_url,
|
||||||
|
const cef_string_t* relative_url,
|
||||||
|
cef_string_t* resolved_url);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Parse the specified |url| into its component parts. Returns false (0) if the
|
||||||
|
/// URL is NULL or invalid.
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_parse_url(const cef_string_t* url,
|
CEF_EXPORT int cef_parse_url(const cef_string_t* url,
|
||||||
struct _cef_urlparts_t* parts);
|
struct _cef_urlparts_t* parts);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Creates a URL from the specified |parts|, which must contain a non-NULL spec
|
/// Creates a URL from the specified |parts|, which must contain a non-NULL spec
|
||||||
// or a non-NULL host and path (at a minimum), but not both. Returns false (0)
|
/// or a non-NULL host and path (at a minimum), but not both. Returns false (0)
|
||||||
// if |parts| isn't initialized as described.
|
/// if |parts| isn't initialized as described.
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_create_url(const struct _cef_urlparts_t* parts,
|
CEF_EXPORT int cef_create_url(const struct _cef_urlparts_t* parts,
|
||||||
cef_string_t* url);
|
cef_string_t* url);
|
||||||
|
|
||||||
///
|
///
|
||||||
// This is a convenience function for formatting a URL in a concise and human-
|
/// This is a convenience function for formatting a URL in a concise and human-
|
||||||
// friendly way to help users make security-related decisions (or in other
|
/// friendly way to help users make security-related decisions (or in other
|
||||||
// circumstances when people need to distinguish sites, origins, or otherwise-
|
/// circumstances when people need to distinguish sites, origins, or otherwise-
|
||||||
// simplified URLs from each other). Internationalized domain names (IDN) may be
|
/// simplified URLs from each other). Internationalized domain names (IDN) may
|
||||||
// presented in Unicode if the conversion is considered safe. The returned value
|
/// be presented in Unicode if the conversion is considered safe. The returned
|
||||||
// will (a) omit the path for standard schemes, excepting file and filesystem,
|
/// value will (a) omit the path for standard schemes, excepting file and
|
||||||
// and (b) omit the port if it is the default for the scheme. Do not use this
|
/// filesystem, and (b) omit the port if it is the default for the scheme. Do
|
||||||
// for URLs which will be parsed or sent to other applications.
|
/// not use this for URLs which will be parsed or sent to other applications.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
CEF_EXPORT cef_string_userfree_t
|
CEF_EXPORT cef_string_userfree_t
|
||||||
cef_format_url_for_security_display(const cef_string_t* origin_url);
|
cef_format_url_for_security_display(const cef_string_t* origin_url);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the mime type for the specified file extension or an NULL string if
|
/// Returns the mime type for the specified file extension or an NULL string if
|
||||||
// unknown.
|
/// unknown.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
CEF_EXPORT cef_string_userfree_t
|
CEF_EXPORT cef_string_userfree_t
|
||||||
cef_get_mime_type(const cef_string_t* extension);
|
cef_get_mime_type(const cef_string_t* extension);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the extensions associated with the given mime type. This should be passed
|
/// Get the extensions associated with the given mime type. This should be
|
||||||
// in lower case. There could be multiple extensions for a given mime type, like
|
/// passed in lower case. There could be multiple extensions for a given mime
|
||||||
// "html,htm" for "text/html", or "txt,text,html,..." for "text/*". Any existing
|
/// type, like "html,htm" for "text/html", or "txt,text,html,..." for "text/*".
|
||||||
// elements in the provided vector will not be erased.
|
/// Any existing elements in the provided vector will not be erased.
|
||||||
///
|
///
|
||||||
CEF_EXPORT void cef_get_extensions_for_mime_type(const cef_string_t* mime_type,
|
CEF_EXPORT void cef_get_extensions_for_mime_type(const cef_string_t* mime_type,
|
||||||
cef_string_list_t extensions);
|
cef_string_list_t extensions);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Encodes |data| as a base64 string.
|
/// Encodes |data| as a base64 string.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
CEF_EXPORT cef_string_userfree_t cef_base64encode(const void* data,
|
CEF_EXPORT cef_string_userfree_t cef_base64encode(const void* data,
|
||||||
size_t data_size);
|
size_t data_size);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Decodes the base64 encoded string |data|. The returned value will be NULL if
|
/// Decodes the base64 encoded string |data|. The returned value will be NULL if
|
||||||
// the decoding fails.
|
/// the decoding fails.
|
||||||
///
|
///
|
||||||
CEF_EXPORT struct _cef_binary_value_t* cef_base64decode(
|
CEF_EXPORT struct _cef_binary_value_t* cef_base64decode(
|
||||||
const cef_string_t* data);
|
const cef_string_t* data);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Escapes characters in |text| which are unsuitable for use as a query
|
/// Escapes characters in |text| which are unsuitable for use as a query
|
||||||
// parameter value. Everything except alphanumerics and -_.!~*'() will be
|
/// parameter value. Everything except alphanumerics and -_.!~*'() will be
|
||||||
// converted to "%XX". If |use_plus| is true (1) spaces will change to "+". The
|
/// converted to "%XX". If |use_plus| is true (1) spaces will change to "+". The
|
||||||
// result is basically the same as encodeURIComponent in Javacript.
|
/// result is basically the same as encodeURIComponent in Javacript.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
CEF_EXPORT cef_string_userfree_t cef_uriencode(const cef_string_t* text,
|
CEF_EXPORT cef_string_userfree_t cef_uriencode(const cef_string_t* text,
|
||||||
int use_plus);
|
int use_plus);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Unescapes |text| and returns the result. Unescaping consists of looking for
|
/// Unescapes |text| and returns the result. Unescaping consists of looking for
|
||||||
// the exact pattern "%XX" where each X is a hex digit and converting to the
|
/// the exact pattern "%XX" where each X is a hex digit and converting to the
|
||||||
// character with the numerical value of those digits (e.g. "i%20=%203%3b"
|
/// character with the numerical value of those digits (e.g. "i%20=%203%3b"
|
||||||
// unescapes to "i = 3;"). If |convert_to_utf8| is true (1) this function will
|
/// unescapes to "i = 3;"). If |convert_to_utf8| is true (1) this function will
|
||||||
// attempt to interpret the initial decoded result as UTF-8. If the result is
|
/// attempt to interpret the initial decoded result as UTF-8. If the result is
|
||||||
// convertable into UTF-8 it will be returned as converted. Otherwise the
|
/// convertable into UTF-8 it will be returned as converted. Otherwise the
|
||||||
// initial decoded result will be returned. The |unescape_rule| parameter
|
/// initial decoded result will be returned. The |unescape_rule| parameter
|
||||||
// supports further customization the decoding process.
|
/// supports further customization the decoding process.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
CEF_EXPORT cef_string_userfree_t
|
CEF_EXPORT cef_string_userfree_t
|
||||||
@@ -133,17 +141,17 @@ cef_uridecode(const cef_string_t* text,
|
|||||||
cef_uri_unescape_rule_t unescape_rule);
|
cef_uri_unescape_rule_t unescape_rule);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Parses the specified |json_string| and returns a dictionary or list
|
/// Parses the specified |json_string| and returns a dictionary or list
|
||||||
// representation. If JSON parsing fails this function returns NULL.
|
/// representation. If JSON parsing fails this function returns NULL.
|
||||||
///
|
///
|
||||||
CEF_EXPORT struct _cef_value_t* cef_parse_json(
|
CEF_EXPORT struct _cef_value_t* cef_parse_json(
|
||||||
const cef_string_t* json_string,
|
const cef_string_t* json_string,
|
||||||
cef_json_parser_options_t options);
|
cef_json_parser_options_t options);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Parses the specified UTF8-encoded |json| buffer of size |json_size| and
|
/// Parses the specified UTF8-encoded |json| buffer of size |json_size| and
|
||||||
// returns a dictionary or list representation. If JSON parsing fails this
|
/// returns a dictionary or list representation. If JSON parsing fails this
|
||||||
// function returns NULL.
|
/// function returns NULL.
|
||||||
///
|
///
|
||||||
CEF_EXPORT struct _cef_value_t* cef_parse_json_buffer(
|
CEF_EXPORT struct _cef_value_t* cef_parse_json_buffer(
|
||||||
const void* json,
|
const void* json,
|
||||||
@@ -151,9 +159,9 @@ CEF_EXPORT struct _cef_value_t* cef_parse_json_buffer(
|
|||||||
cef_json_parser_options_t options);
|
cef_json_parser_options_t options);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Parses the specified |json_string| and returns a dictionary or list
|
/// Parses the specified |json_string| and returns a dictionary or list
|
||||||
// representation. If JSON parsing fails this function returns NULL and
|
/// representation. If JSON parsing fails this function returns NULL and
|
||||||
// populates |error_msg_out| with a formatted error message.
|
/// populates |error_msg_out| with a formatted error message.
|
||||||
///
|
///
|
||||||
CEF_EXPORT struct _cef_value_t* cef_parse_jsonand_return_error(
|
CEF_EXPORT struct _cef_value_t* cef_parse_jsonand_return_error(
|
||||||
const cef_string_t* json_string,
|
const cef_string_t* json_string,
|
||||||
@@ -161,9 +169,9 @@ CEF_EXPORT struct _cef_value_t* cef_parse_jsonand_return_error(
|
|||||||
cef_string_t* error_msg_out);
|
cef_string_t* error_msg_out);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Generates a JSON string from the specified root |node| which should be a
|
/// Generates a JSON string from the specified root |node| which should be a
|
||||||
// dictionary or list value. Returns an NULL string on failure. This function
|
/// dictionary or list value. Returns an NULL string on failure. This function
|
||||||
// requires exclusive access to |node| including any underlying data.
|
/// requires exclusive access to |node| including any underlying data.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
CEF_EXPORT cef_string_userfree_t
|
CEF_EXPORT cef_string_userfree_t
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=0ae1fe7f7141eb05eb7fd44c2d41e4c576afae1e$
|
// $hash=70b306534b9cb8334c9ea260feacfd8f2f503292$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_PATH_UTIL_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_PATH_UTIL_CAPI_H_
|
||||||
@@ -47,8 +47,8 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Retrieve the path associated with the specified |key|. Returns true (1) on
|
/// Retrieve the path associated with the specified |key|. Returns true (1) on
|
||||||
// success. Can be called on any thread in the browser process.
|
/// success. Can be called on any thread in the browser process.
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_get_path(cef_path_key_t key, cef_string_t* path);
|
CEF_EXPORT int cef_get_path(cef_path_key_t key, cef_string_t* path);
|
||||||
|
|
||||||
|
|||||||
164
include/capi/cef_permission_handler_capi.h
Normal file
164
include/capi/cef_permission_handler_capi.h
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
// 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=bc44eb70b7f0b48e0646825e919cb9996ac99781$
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef CEF_INCLUDE_CAPI_CEF_PERMISSION_HANDLER_CAPI_H_
|
||||||
|
#define CEF_INCLUDE_CAPI_CEF_PERMISSION_HANDLER_CAPI_H_
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "include/capi/cef_base_capi.h"
|
||||||
|
#include "include/capi/cef_browser_capi.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Callback structure used for asynchronous continuation of media access
|
||||||
|
/// permission requests.
|
||||||
|
///
|
||||||
|
typedef struct _cef_media_access_callback_t {
|
||||||
|
///
|
||||||
|
/// Base structure.
|
||||||
|
///
|
||||||
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Call to allow or deny media access. If this callback was initiated in
|
||||||
|
/// response to a getUserMedia (indicated by
|
||||||
|
/// CEF_MEDIA_PERMISSION_DEVICE_AUDIO_CAPTURE and/or
|
||||||
|
/// CEF_MEDIA_PERMISSION_DEVICE_VIDEO_CAPTURE being set) then
|
||||||
|
/// |allowed_permissions| must match |required_permissions| passed to
|
||||||
|
/// OnRequestMediaAccessPermission.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* cont)(struct _cef_media_access_callback_t* self,
|
||||||
|
uint32 allowed_permissions);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Cancel the media access request.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* cancel)(struct _cef_media_access_callback_t* self);
|
||||||
|
} cef_media_access_callback_t;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Callback structure used for asynchronous continuation of permission prompts.
|
||||||
|
///
|
||||||
|
typedef struct _cef_permission_prompt_callback_t {
|
||||||
|
///
|
||||||
|
/// Base structure.
|
||||||
|
///
|
||||||
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Complete the permissions request with the specified |result|.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* cont)(struct _cef_permission_prompt_callback_t* self,
|
||||||
|
cef_permission_request_result_t result);
|
||||||
|
} cef_permission_prompt_callback_t;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Implement this structure to handle events related to permission requests.
|
||||||
|
/// The functions of this structure will be called on the browser process UI
|
||||||
|
/// thread.
|
||||||
|
///
|
||||||
|
typedef struct _cef_permission_handler_t {
|
||||||
|
///
|
||||||
|
/// Base structure.
|
||||||
|
///
|
||||||
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called when a page requests permission to access media.
|
||||||
|
/// |requesting_origin| is the URL origin requesting permission.
|
||||||
|
/// |requested_permissions| is a combination of values from
|
||||||
|
/// 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.
|
||||||
|
///
|
||||||
|
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,
|
||||||
|
struct _cef_media_access_callback_t* callback);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called when a page should show a permission prompt. |prompt_id| uniquely
|
||||||
|
/// identifies the prompt. |requesting_origin| is the URL origin requesting
|
||||||
|
/// permission. |requested_permissions| is a combination of values from
|
||||||
|
/// 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.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* on_show_permission_prompt)(
|
||||||
|
struct _cef_permission_handler_t* self,
|
||||||
|
struct _cef_browser_t* browser,
|
||||||
|
uint64 prompt_id,
|
||||||
|
const cef_string_t* requesting_origin,
|
||||||
|
uint32 requested_permissions,
|
||||||
|
struct _cef_permission_prompt_callback_t* callback);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called when a permission prompt handled via OnShowPermissionPrompt is
|
||||||
|
/// dismissed. |prompt_id| will match the value that was passed to
|
||||||
|
/// OnShowPermissionPrompt. |result| will be the value passed to
|
||||||
|
/// cef_permission_prompt_callback_t::Continue or CEF_PERMISSION_RESULT_IGNORE
|
||||||
|
/// if the dialog was dismissed for other reasons such as navigation, browser
|
||||||
|
/// closure, etc. This function will not be called if OnShowPermissionPrompt
|
||||||
|
/// returned false (0) for |prompt_id|.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* on_dismiss_permission_prompt)(
|
||||||
|
struct _cef_permission_handler_t* self,
|
||||||
|
struct _cef_browser_t* browser,
|
||||||
|
uint64 prompt_id,
|
||||||
|
cef_permission_request_result_t result);
|
||||||
|
} cef_permission_handler_t;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // CEF_INCLUDE_CAPI_CEF_PERMISSION_HANDLER_CAPI_H_
|
||||||
148
include/capi/cef_preference_capi.h
Normal file
148
include/capi/cef_preference_capi.h
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
// 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=922659242ea25c52d02884a7cc5918d086cbfaca$
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef CEF_INCLUDE_CAPI_CEF_PREFERENCE_CAPI_H_
|
||||||
|
#define CEF_INCLUDE_CAPI_CEF_PREFERENCE_CAPI_H_
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "include/capi/cef_base_capi.h"
|
||||||
|
#include "include/capi/cef_values_capi.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Structure that manages custom preference registrations.
|
||||||
|
///
|
||||||
|
typedef struct _cef_preference_registrar_t {
|
||||||
|
///
|
||||||
|
/// Base structure.
|
||||||
|
///
|
||||||
|
cef_base_scoped_t base;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Register a preference with the specified |name| and |default_value|. To
|
||||||
|
/// avoid conflicts with built-in preferences the |name| value should contain
|
||||||
|
/// an application-specific prefix followed by a period (e.g. "myapp.value").
|
||||||
|
/// The contents of |default_value| will be copied. The data type for the
|
||||||
|
/// preference will be inferred from |default_value|'s type and cannot be
|
||||||
|
/// changed after registration. Returns true (1) on success. Returns false (0)
|
||||||
|
/// if |name| is already registered or if |default_value| has an invalid type.
|
||||||
|
/// This function must be called from within the scope of the
|
||||||
|
/// cef_browser_process_handler_t::OnRegisterCustomPreferences callback.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* add_preference)(struct _cef_preference_registrar_t* self,
|
||||||
|
const cef_string_t* name,
|
||||||
|
struct _cef_value_t* default_value);
|
||||||
|
} cef_preference_registrar_t;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Manage access to preferences. Many built-in preferences are registered by
|
||||||
|
/// Chromium. Custom preferences can be registered in
|
||||||
|
/// cef_browser_process_handler_t::OnRegisterCustomPreferences.
|
||||||
|
///
|
||||||
|
typedef struct _cef_preference_manager_t {
|
||||||
|
///
|
||||||
|
/// Base structure.
|
||||||
|
///
|
||||||
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns true (1) if a preference with the specified |name| exists. This
|
||||||
|
/// function must be called on the browser process UI thread.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* has_preference)(struct _cef_preference_manager_t* self,
|
||||||
|
const cef_string_t* name);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns the value for the preference with the specified |name|. Returns
|
||||||
|
/// NULL if the preference does not exist. The returned object contains a copy
|
||||||
|
/// of the underlying preference value and modifications to the returned
|
||||||
|
/// object will not modify the underlying preference value. This function must
|
||||||
|
/// be called on the browser process UI thread.
|
||||||
|
///
|
||||||
|
struct _cef_value_t*(CEF_CALLBACK* get_preference)(
|
||||||
|
struct _cef_preference_manager_t* self,
|
||||||
|
const cef_string_t* name);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns all preferences as a dictionary. If |include_defaults| is true (1)
|
||||||
|
/// then preferences currently at their default value will be included. The
|
||||||
|
/// returned object contains a copy of the underlying preference values and
|
||||||
|
/// modifications to the returned object will not modify the underlying
|
||||||
|
/// preference values. This function must be called on the browser process UI
|
||||||
|
/// thread.
|
||||||
|
///
|
||||||
|
struct _cef_dictionary_value_t*(CEF_CALLBACK* get_all_preferences)(
|
||||||
|
struct _cef_preference_manager_t* self,
|
||||||
|
int include_defaults);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns true (1) if the preference with the specified |name| can be
|
||||||
|
/// modified using SetPreference. As one example preferences set via the
|
||||||
|
/// command-line usually cannot be modified. This function must be called on
|
||||||
|
/// the browser process UI thread.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* can_set_preference)(struct _cef_preference_manager_t* self,
|
||||||
|
const cef_string_t* name);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Set the |value| associated with preference |name|. Returns true (1) if the
|
||||||
|
/// value is set successfully and false (0) otherwise. If |value| is NULL the
|
||||||
|
/// preference will be restored to its default value. If setting the
|
||||||
|
/// preference fails then |error| will be populated with a detailed
|
||||||
|
/// description of the problem. This function must be called on the browser
|
||||||
|
/// process UI thread.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* set_preference)(struct _cef_preference_manager_t* self,
|
||||||
|
const cef_string_t* name,
|
||||||
|
struct _cef_value_t* value,
|
||||||
|
cef_string_t* error);
|
||||||
|
} cef_preference_manager_t;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns the global preference manager object.
|
||||||
|
///
|
||||||
|
CEF_EXPORT cef_preference_manager_t* cef_preference_manager_get_global(void);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // CEF_INCLUDE_CAPI_CEF_PREFERENCE_CAPI_H_
|
||||||
116
include/capi/cef_preference_manager_capi.h
Normal file
116
include/capi/cef_preference_manager_capi.h
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
// Copyright (c) 2022 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=1f5dd49cfc5aeb4b673c10750de01768f5cd2694$
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef CEF_INCLUDE_CAPI_CEF_PREFERENCE_MANAGER_CAPI_H_
|
||||||
|
#define CEF_INCLUDE_CAPI_CEF_PREFERENCE_MANAGER_CAPI_H_
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "include/capi/cef_base_capi.h"
|
||||||
|
#include "include/capi/cef_values_capi.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Manage access to preferences.
|
||||||
|
///
|
||||||
|
typedef struct _cef_preference_manager_t {
|
||||||
|
///
|
||||||
|
/// Base structure.
|
||||||
|
///
|
||||||
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns true (1) if a preference with the specified |name| exists. This
|
||||||
|
/// function must be called on the browser process UI thread.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* has_preference)(struct _cef_preference_manager_t* self,
|
||||||
|
const cef_string_t* name);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns the value for the preference with the specified |name|. Returns
|
||||||
|
/// NULL if the preference does not exist. The returned object contains a copy
|
||||||
|
/// of the underlying preference value and modifications to the returned
|
||||||
|
/// object will not modify the underlying preference value. This function must
|
||||||
|
/// be called on the browser process UI thread.
|
||||||
|
///
|
||||||
|
struct _cef_value_t*(CEF_CALLBACK* get_preference)(
|
||||||
|
struct _cef_preference_manager_t* self,
|
||||||
|
const cef_string_t* name);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns all preferences as a dictionary. If |include_defaults| is true (1)
|
||||||
|
/// then preferences currently at their default value will be included. The
|
||||||
|
/// returned object contains a copy of the underlying preference values and
|
||||||
|
/// modifications to the returned object will not modify the underlying
|
||||||
|
/// preference values. This function must be called on the browser process UI
|
||||||
|
/// thread.
|
||||||
|
///
|
||||||
|
struct _cef_dictionary_value_t*(CEF_CALLBACK* get_all_preferences)(
|
||||||
|
struct _cef_preference_manager_t* self,
|
||||||
|
int include_defaults);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns true (1) if the preference with the specified |name| can be
|
||||||
|
/// modified using SetPreference. As one example preferences set via the
|
||||||
|
/// command-line usually cannot be modified. This function must be called on
|
||||||
|
/// the browser process UI thread.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* can_set_preference)(struct _cef_preference_manager_t* self,
|
||||||
|
const cef_string_t* name);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Set the |value| associated with preference |name|. Returns true (1) if the
|
||||||
|
/// value is set successfully and false (0) otherwise. If |value| is NULL the
|
||||||
|
/// preference will be restored to its default value. If setting the
|
||||||
|
/// preference fails then |error| will be populated with a detailed
|
||||||
|
/// description of the problem. This function must be called on the browser
|
||||||
|
/// process UI thread.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* set_preference)(struct _cef_preference_manager_t* self,
|
||||||
|
const cef_string_t* name,
|
||||||
|
struct _cef_value_t* value,
|
||||||
|
cef_string_t* error);
|
||||||
|
} cef_preference_manager_t;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // CEF_INCLUDE_CAPI_CEF_PREFERENCE_MANAGER_CAPI_H_
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=84fc58b3898f25476d9cdd260553390ba5e0b30b$
|
// $hash=d09937fb047debd9da39c4072a434659b3c5682c$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_PRINT_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_PRINT_HANDLER_CAPI_H_
|
||||||
@@ -49,65 +49,66 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback structure for asynchronous continuation of print dialog requests.
|
/// Callback structure for asynchronous continuation of print dialog requests.
|
||||||
///
|
///
|
||||||
typedef struct _cef_print_dialog_callback_t {
|
typedef struct _cef_print_dialog_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Continue printing with the specified |settings|.
|
/// Continue printing with the specified |settings|.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cont)(struct _cef_print_dialog_callback_t* self,
|
void(CEF_CALLBACK* cont)(struct _cef_print_dialog_callback_t* self,
|
||||||
struct _cef_print_settings_t* settings);
|
struct _cef_print_settings_t* settings);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Cancel the printing.
|
/// Cancel the printing.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cancel)(struct _cef_print_dialog_callback_t* self);
|
void(CEF_CALLBACK* cancel)(struct _cef_print_dialog_callback_t* self);
|
||||||
} cef_print_dialog_callback_t;
|
} cef_print_dialog_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback structure for asynchronous continuation of print job requests.
|
/// Callback structure for asynchronous continuation of print job requests.
|
||||||
///
|
///
|
||||||
typedef struct _cef_print_job_callback_t {
|
typedef struct _cef_print_job_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Indicate completion of the print job.
|
/// Indicate completion of the print job.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cont)(struct _cef_print_job_callback_t* self);
|
void(CEF_CALLBACK* cont)(struct _cef_print_job_callback_t* self);
|
||||||
} cef_print_job_callback_t;
|
} cef_print_job_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle printing on Linux. Each browser will have
|
/// Implement this structure to handle printing on Linux. Each browser will have
|
||||||
// only one print job in progress at a time. The functions of this structure
|
/// only one print job in progress at a time. The functions of this structure
|
||||||
// will be called on the browser process UI thread.
|
/// will be called on the browser process UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_print_handler_t {
|
typedef struct _cef_print_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when printing has started for the specified |browser|. This function
|
/// Called when printing has started for the specified |browser|. This
|
||||||
// will be called before the other OnPrint*() functions and irrespective of
|
/// function will be called before the other OnPrint*() functions and
|
||||||
// how printing was initiated (e.g. cef_browser_host_t::print(), JavaScript
|
/// irrespective of how printing was initiated (e.g.
|
||||||
// window.print() or PDF extension print button).
|
/// cef_browser_host_t::print(), JavaScript window.print() or PDF extension
|
||||||
|
/// print button).
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_print_start)(struct _cef_print_handler_t* self,
|
void(CEF_CALLBACK* on_print_start)(struct _cef_print_handler_t* self,
|
||||||
struct _cef_browser_t* browser);
|
struct _cef_browser_t* browser);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Synchronize |settings| with client state. If |get_defaults| is true (1)
|
/// Synchronize |settings| with client state. If |get_defaults| is true (1)
|
||||||
// then populate |settings| with the default print settings. Do not keep a
|
/// then populate |settings| with the default print settings. Do not keep a
|
||||||
// reference to |settings| outside of this callback.
|
/// reference to |settings| outside of this callback.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_print_settings)(struct _cef_print_handler_t* self,
|
void(CEF_CALLBACK* on_print_settings)(struct _cef_print_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -115,9 +116,9 @@ typedef struct _cef_print_handler_t {
|
|||||||
int get_defaults);
|
int get_defaults);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Show the print dialog. Execute |callback| once the dialog is dismissed.
|
/// Show the print dialog. Execute |callback| once the dialog is dismissed.
|
||||||
// Return true (1) if the dialog will be displayed or false (0) to cancel the
|
/// Return true (1) if the dialog will be displayed or false (0) to cancel the
|
||||||
// printing immediately.
|
/// printing immediately.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_print_dialog)(
|
int(CEF_CALLBACK* on_print_dialog)(
|
||||||
struct _cef_print_handler_t* self,
|
struct _cef_print_handler_t* self,
|
||||||
@@ -126,9 +127,9 @@ typedef struct _cef_print_handler_t {
|
|||||||
struct _cef_print_dialog_callback_t* callback);
|
struct _cef_print_dialog_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Send the print job to the printer. Execute |callback| once the job is
|
/// Send the print job to the printer. Execute |callback| once the job is
|
||||||
// completed. Return true (1) if the job will proceed or false (0) to cancel
|
/// completed. Return true (1) if the job will proceed or false (0) to cancel
|
||||||
// the job immediately.
|
/// the job immediately.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_print_job)(struct _cef_print_handler_t* self,
|
int(CEF_CALLBACK* on_print_job)(struct _cef_print_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -137,14 +138,14 @@ typedef struct _cef_print_handler_t {
|
|||||||
struct _cef_print_job_callback_t* callback);
|
struct _cef_print_job_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Reset client state related to printing.
|
/// Reset client state related to printing.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_print_reset)(struct _cef_print_handler_t* self,
|
void(CEF_CALLBACK* on_print_reset)(struct _cef_print_handler_t* self,
|
||||||
struct _cef_browser_t* browser);
|
struct _cef_browser_t* browser);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the PDF paper size in device units. Used in combination with
|
/// Return the PDF paper size in device units. Used in combination with
|
||||||
// cef_browser_host_t::print_to_pdf().
|
/// cef_browser_host_t::print_to_pdf().
|
||||||
///
|
///
|
||||||
cef_size_t(CEF_CALLBACK* get_pdf_paper_size)(
|
cef_size_t(CEF_CALLBACK* get_pdf_paper_size)(
|
||||||
struct _cef_print_handler_t* self,
|
struct _cef_print_handler_t* self,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=4b52323c4ce2d0ebcc3438e16fc9a9b181a58adc$
|
// $hash=46508464579e797d4684f4a7facdb39f9bdb312b$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_PRINT_SETTINGS_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_PRINT_SETTINGS_CAPI_H_
|
||||||
@@ -47,41 +47,41 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure representing print settings.
|
/// Structure representing print settings.
|
||||||
///
|
///
|
||||||
typedef struct _cef_print_settings_t {
|
typedef struct _cef_print_settings_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this object is valid. Do not call any other functions
|
/// Returns true (1) if this object is valid. Do not call any other functions
|
||||||
// if this function returns false (0).
|
/// if this function returns false (0).
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_valid)(struct _cef_print_settings_t* self);
|
int(CEF_CALLBACK* is_valid)(struct _cef_print_settings_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the values of this object are read-only. Some APIs may
|
/// Returns true (1) if the values of this object are read-only. Some APIs may
|
||||||
// expose read-only objects.
|
/// expose read-only objects.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_read_only)(struct _cef_print_settings_t* self);
|
int(CEF_CALLBACK* is_read_only)(struct _cef_print_settings_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the page orientation.
|
/// Set the page orientation.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_orientation)(struct _cef_print_settings_t* self,
|
void(CEF_CALLBACK* set_orientation)(struct _cef_print_settings_t* self,
|
||||||
int landscape);
|
int landscape);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the orientation is landscape.
|
/// Returns true (1) if the orientation is landscape.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_landscape)(struct _cef_print_settings_t* self);
|
int(CEF_CALLBACK* is_landscape)(struct _cef_print_settings_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the printer printable area in device units. Some platforms already
|
/// Set the printer printable area in device units. Some platforms already
|
||||||
// provide flipped area. Set |landscape_needs_flip| to false (0) on those
|
/// provide flipped area. Set |landscape_needs_flip| to false (0) on those
|
||||||
// platforms to avoid double flipping.
|
/// platforms to avoid double flipping.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_printer_printable_area)(
|
void(CEF_CALLBACK* set_printer_printable_area)(
|
||||||
struct _cef_print_settings_t* self,
|
struct _cef_print_settings_t* self,
|
||||||
@@ -90,110 +90,110 @@ typedef struct _cef_print_settings_t {
|
|||||||
int landscape_needs_flip);
|
int landscape_needs_flip);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the device name.
|
/// Set the device name.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_device_name)(struct _cef_print_settings_t* self,
|
void(CEF_CALLBACK* set_device_name)(struct _cef_print_settings_t* self,
|
||||||
const cef_string_t* name);
|
const cef_string_t* name);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the device name.
|
/// Get the device name.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_device_name)(
|
cef_string_userfree_t(CEF_CALLBACK* get_device_name)(
|
||||||
struct _cef_print_settings_t* self);
|
struct _cef_print_settings_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the DPI (dots per inch).
|
/// Set the DPI (dots per inch).
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_dpi)(struct _cef_print_settings_t* self, int dpi);
|
void(CEF_CALLBACK* set_dpi)(struct _cef_print_settings_t* self, int dpi);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the DPI (dots per inch).
|
/// Get the DPI (dots per inch).
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_dpi)(struct _cef_print_settings_t* self);
|
int(CEF_CALLBACK* get_dpi)(struct _cef_print_settings_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the page ranges.
|
/// Set the page ranges.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_page_ranges)(struct _cef_print_settings_t* self,
|
void(CEF_CALLBACK* set_page_ranges)(struct _cef_print_settings_t* self,
|
||||||
size_t rangesCount,
|
size_t rangesCount,
|
||||||
cef_range_t const* ranges);
|
cef_range_t const* ranges);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the number of page ranges that currently exist.
|
/// Returns the number of page ranges that currently exist.
|
||||||
///
|
///
|
||||||
size_t(CEF_CALLBACK* get_page_ranges_count)(
|
size_t(CEF_CALLBACK* get_page_ranges_count)(
|
||||||
struct _cef_print_settings_t* self);
|
struct _cef_print_settings_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Retrieve the page ranges.
|
/// Retrieve the page ranges.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* get_page_ranges)(struct _cef_print_settings_t* self,
|
void(CEF_CALLBACK* get_page_ranges)(struct _cef_print_settings_t* self,
|
||||||
size_t* rangesCount,
|
size_t* rangesCount,
|
||||||
cef_range_t* ranges);
|
cef_range_t* ranges);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set whether only the selection will be printed.
|
/// Set whether only the selection will be printed.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_selection_only)(struct _cef_print_settings_t* self,
|
void(CEF_CALLBACK* set_selection_only)(struct _cef_print_settings_t* self,
|
||||||
int selection_only);
|
int selection_only);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if only the selection will be printed.
|
/// Returns true (1) if only the selection will be printed.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_selection_only)(struct _cef_print_settings_t* self);
|
int(CEF_CALLBACK* is_selection_only)(struct _cef_print_settings_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set whether pages will be collated.
|
/// Set whether pages will be collated.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_collate)(struct _cef_print_settings_t* self,
|
void(CEF_CALLBACK* set_collate)(struct _cef_print_settings_t* self,
|
||||||
int collate);
|
int collate);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if pages will be collated.
|
/// Returns true (1) if pages will be collated.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* will_collate)(struct _cef_print_settings_t* self);
|
int(CEF_CALLBACK* will_collate)(struct _cef_print_settings_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the color model.
|
/// Set the color model.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_color_model)(struct _cef_print_settings_t* self,
|
void(CEF_CALLBACK* set_color_model)(struct _cef_print_settings_t* self,
|
||||||
cef_color_model_t model);
|
cef_color_model_t model);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the color model.
|
/// Get the color model.
|
||||||
///
|
///
|
||||||
cef_color_model_t(CEF_CALLBACK* get_color_model)(
|
cef_color_model_t(CEF_CALLBACK* get_color_model)(
|
||||||
struct _cef_print_settings_t* self);
|
struct _cef_print_settings_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the number of copies.
|
/// Set the number of copies.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_copies)(struct _cef_print_settings_t* self,
|
void(CEF_CALLBACK* set_copies)(struct _cef_print_settings_t* self,
|
||||||
int copies);
|
int copies);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the number of copies.
|
/// Get the number of copies.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_copies)(struct _cef_print_settings_t* self);
|
int(CEF_CALLBACK* get_copies)(struct _cef_print_settings_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the duplex mode.
|
/// Set the duplex mode.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_duplex_mode)(struct _cef_print_settings_t* self,
|
void(CEF_CALLBACK* set_duplex_mode)(struct _cef_print_settings_t* self,
|
||||||
cef_duplex_mode_t mode);
|
cef_duplex_mode_t mode);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the duplex mode.
|
/// Get the duplex mode.
|
||||||
///
|
///
|
||||||
cef_duplex_mode_t(CEF_CALLBACK* get_duplex_mode)(
|
cef_duplex_mode_t(CEF_CALLBACK* get_duplex_mode)(
|
||||||
struct _cef_print_settings_t* self);
|
struct _cef_print_settings_t* self);
|
||||||
} cef_print_settings_t;
|
} cef_print_settings_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Create a new cef_print_settings_t object.
|
/// Create a new cef_print_settings_t object.
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_print_settings_t* cef_print_settings_create();
|
CEF_EXPORT cef_print_settings_t* cef_print_settings_create(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=53ff22b73527aa331d2bd96e008f4cb4f0413042$
|
// $hash=e20a8d6a5803dae5ba156adde40c8b964899b176$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_PROCESS_MESSAGE_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_PROCESS_MESSAGE_CAPI_H_
|
||||||
@@ -41,6 +41,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "include/capi/cef_base_capi.h"
|
#include "include/capi/cef_base_capi.h"
|
||||||
|
#include "include/capi/cef_shared_memory_region_capi.h"
|
||||||
#include "include/capi/cef_values_capi.h"
|
#include "include/capi/cef_values_capi.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -48,48 +49,57 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure representing a message. Can be used on any process and thread.
|
/// Structure representing a message. Can be used on any process and thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_process_message_t {
|
typedef struct _cef_process_message_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this object is valid. Do not call any other functions
|
/// Returns true (1) if this object is valid. Do not call any other functions
|
||||||
// if this function returns false (0).
|
/// if this function returns false (0).
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_valid)(struct _cef_process_message_t* self);
|
int(CEF_CALLBACK* is_valid)(struct _cef_process_message_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the values of this object are read-only. Some APIs may
|
/// Returns true (1) if the values of this object are read-only. Some APIs may
|
||||||
// expose read-only objects.
|
/// expose read-only objects.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_read_only)(struct _cef_process_message_t* self);
|
int(CEF_CALLBACK* is_read_only)(struct _cef_process_message_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns a writable copy of this object.
|
/// Returns a writable copy of this object. Returns nullptr when message
|
||||||
|
/// contains a shared memory region.
|
||||||
///
|
///
|
||||||
struct _cef_process_message_t*(CEF_CALLBACK* copy)(
|
struct _cef_process_message_t*(CEF_CALLBACK* copy)(
|
||||||
struct _cef_process_message_t* self);
|
struct _cef_process_message_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the message name.
|
/// Returns the message name.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_name)(
|
cef_string_userfree_t(CEF_CALLBACK* get_name)(
|
||||||
struct _cef_process_message_t* self);
|
struct _cef_process_message_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the list of arguments.
|
/// Returns the list of arguments. Returns nullptr when message contains a
|
||||||
|
/// shared memory region.
|
||||||
///
|
///
|
||||||
struct _cef_list_value_t*(CEF_CALLBACK* get_argument_list)(
|
struct _cef_list_value_t*(CEF_CALLBACK* get_argument_list)(
|
||||||
struct _cef_process_message_t* self);
|
struct _cef_process_message_t* self);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns the shared memory region. Returns nullptr when message contains an
|
||||||
|
/// argument list.
|
||||||
|
///
|
||||||
|
struct _cef_shared_memory_region_t*(CEF_CALLBACK* get_shared_memory_region)(
|
||||||
|
struct _cef_process_message_t* self);
|
||||||
} cef_process_message_t;
|
} cef_process_message_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Create a new cef_process_message_t object with the specified name.
|
/// Create a new cef_process_message_t object with the specified name.
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_process_message_t* cef_process_message_create(
|
CEF_EXPORT cef_process_message_t* cef_process_message_create(
|
||||||
const cef_string_t* name);
|
const cef_string_t* name);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=c476a8d22852994d9d9695db901efaef13bbfc9d$
|
// $hash=88c42c5f216798304b07bfe985296014cf65996c$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_PROCESS_UTIL_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_PROCESS_UTIL_CAPI_H_
|
||||||
@@ -47,14 +47,14 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Launches the process specified via |command_line|. Returns true (1) upon
|
/// Launches the process specified via |command_line|. Returns true (1) upon
|
||||||
// success. Must be called on the browser process TID_PROCESS_LAUNCHER thread.
|
/// success. Must be called on the browser process TID_PROCESS_LAUNCHER thread.
|
||||||
//
|
///
|
||||||
// Unix-specific notes: - All file descriptors open in the parent process will
|
/// Unix-specific notes: - All file descriptors open in the parent process will
|
||||||
// be closed in the
|
/// be closed in the
|
||||||
// child process except for stdin, stdout, and stderr.
|
/// child process except for stdin, stdout, and stderr.
|
||||||
// - If the first argument on the command line does not contain a slash,
|
/// - If the first argument on the command line does not contain a slash,
|
||||||
// PATH will be searched. (See man execvp.)
|
/// PATH will be searched. (See man execvp.)
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_launch_process(struct _cef_command_line_t* command_line);
|
CEF_EXPORT int cef_launch_process(struct _cef_command_line_t* command_line);
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=8cde223bdb8d25ff163edd95da0d9e238b298016$
|
// $hash=b1b38a3171dd3626029e70e75b482dfa3531215b$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_REGISTRATION_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_REGISTRATION_CAPI_H_
|
||||||
@@ -47,11 +47,11 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Generic callback structure used for managing the lifespan of a registration.
|
/// Generic callback structure used for managing the lifespan of a registration.
|
||||||
///
|
///
|
||||||
typedef struct _cef_registration_t {
|
typedef struct _cef_registration_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
} cef_registration_t;
|
} cef_registration_t;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=e4bdab963041a270edabc0954b415eb4cae8e5cb$
|
// $hash=32d8176f39b05487bae048990b2dee3212ae3b78$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_RENDER_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_RENDER_HANDLER_CAPI_H_
|
||||||
@@ -50,42 +50,44 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle events when window rendering is disabled.
|
/// Implement this structure to handle events when window rendering is disabled.
|
||||||
// The functions of this structure will be called on the UI thread.
|
/// The functions of this structure will be called on the UI thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_render_handler_t {
|
typedef struct _cef_render_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for accessibility notifications. If no handler is
|
/// Return the handler for accessibility notifications. If no handler is
|
||||||
// provided the default implementation will be used.
|
/// provided the default implementation will be used.
|
||||||
///
|
///
|
||||||
struct _cef_accessibility_handler_t*(CEF_CALLBACK* get_accessibility_handler)(
|
struct _cef_accessibility_handler_t*(CEF_CALLBACK* get_accessibility_handler)(
|
||||||
struct _cef_render_handler_t* self);
|
struct _cef_render_handler_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called to retrieve the root window rectangle in screen coordinates. Return
|
/// Called to retrieve the root window rectangle in screen DIP coordinates.
|
||||||
// true (1) if the rectangle was provided. If this function returns false (0)
|
/// Return true (1) if the rectangle was provided. If this function returns
|
||||||
// the rectangle from GetViewRect will be used.
|
/// false (0) the rectangle from GetViewRect will be used.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_root_screen_rect)(struct _cef_render_handler_t* self,
|
int(CEF_CALLBACK* get_root_screen_rect)(struct _cef_render_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
cef_rect_t* rect);
|
cef_rect_t* rect);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called to retrieve the view rectangle which is relative to screen
|
/// Called to retrieve the view rectangle in screen DIP coordinates. This
|
||||||
// coordinates. This function must always provide a non-NULL rectangle.
|
/// function must always provide a non-NULL rectangle.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* get_view_rect)(struct _cef_render_handler_t* self,
|
void(CEF_CALLBACK* get_view_rect)(struct _cef_render_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
cef_rect_t* rect);
|
cef_rect_t* rect);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called to retrieve the translation from view coordinates to actual screen
|
/// Called to retrieve the translation from view DIP coordinates to screen
|
||||||
// coordinates. Return true (1) if the screen coordinates were provided.
|
/// coordinates. Windows/Linux should provide screen device (pixel)
|
||||||
|
/// coordinates and MacOS should provide screen DIP coordinates. Return true
|
||||||
|
/// (1) if the requested coordinates were provided.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_screen_point)(struct _cef_render_handler_t* self,
|
int(CEF_CALLBACK* get_screen_point)(struct _cef_render_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -95,44 +97,44 @@ typedef struct _cef_render_handler_t {
|
|||||||
int* screenY);
|
int* screenY);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called to allow the client to fill in the CefScreenInfo object with
|
/// Called to allow the client to fill in the CefScreenInfo object with
|
||||||
// appropriate values. Return true (1) if the |screen_info| structure has been
|
/// appropriate values. Return true (1) if the |screen_info| structure has
|
||||||
// modified.
|
/// been modified.
|
||||||
//
|
///
|
||||||
// If the screen info rectangle is left NULL the rectangle from GetViewRect
|
/// If the screen info rectangle is left NULL the rectangle from GetViewRect
|
||||||
// will be used. If the rectangle is still NULL or invalid popups may not be
|
/// will be used. If the rectangle is still NULL or invalid popups may not be
|
||||||
// drawn correctly.
|
/// drawn correctly.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_screen_info)(struct _cef_render_handler_t* self,
|
int(CEF_CALLBACK* get_screen_info)(struct _cef_render_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
struct _cef_screen_info_t* screen_info);
|
cef_screen_info_t* screen_info);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the browser wants to show or hide the popup widget. The popup
|
/// Called when the browser wants to show or hide the popup widget. The popup
|
||||||
// should be shown if |show| is true (1) and hidden if |show| is false (0).
|
/// should be shown if |show| is true (1) and hidden if |show| is false (0).
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_popup_show)(struct _cef_render_handler_t* self,
|
void(CEF_CALLBACK* on_popup_show)(struct _cef_render_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
int show);
|
int show);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the browser wants to move or resize the popup widget. |rect|
|
/// Called when the browser wants to move or resize the popup widget. |rect|
|
||||||
// contains the new location and size in view coordinates.
|
/// contains the new location and size in view coordinates.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_popup_size)(struct _cef_render_handler_t* self,
|
void(CEF_CALLBACK* on_popup_size)(struct _cef_render_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
const cef_rect_t* rect);
|
const cef_rect_t* rect);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when an element should be painted. Pixel values passed to this
|
/// Called when an element should be painted. Pixel values passed to this
|
||||||
// function are scaled relative to view coordinates based on the value of
|
/// function are scaled relative to view coordinates based on the value of
|
||||||
// CefScreenInfo.device_scale_factor returned from GetScreenInfo. |type|
|
/// CefScreenInfo.device_scale_factor returned from GetScreenInfo. |type|
|
||||||
// indicates whether the element is the view or the popup widget. |buffer|
|
/// indicates whether the element is the view or the popup widget. |buffer|
|
||||||
// contains the pixel data for the whole image. |dirtyRects| contains the set
|
/// contains the pixel data for the whole image. |dirtyRects| contains the set
|
||||||
// of rectangles in pixel coordinates that need to be repainted. |buffer| will
|
/// of rectangles in pixel coordinates that need to be repainted. |buffer|
|
||||||
// be |width|*|height|*4 bytes in size and represents a BGRA image with an
|
/// will be |width|*|height|*4 bytes in size and represents a BGRA image with
|
||||||
// upper-left origin. This function is only called when
|
/// an upper-left origin. This function is only called when
|
||||||
// cef_window_tInfo::shared_texture_enabled is set to false (0).
|
/// cef_window_tInfo::shared_texture_enabled is set to false (0).
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_paint)(struct _cef_render_handler_t* self,
|
void(CEF_CALLBACK* on_paint)(struct _cef_render_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -144,13 +146,13 @@ typedef struct _cef_render_handler_t {
|
|||||||
int height);
|
int height);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when an element has been rendered to the shared texture handle.
|
/// Called when an element has been rendered to the shared texture handle.
|
||||||
// |type| indicates whether the element is the view or the popup widget.
|
/// |type| indicates whether the element is the view or the popup widget.
|
||||||
// |dirtyRects| contains the set of rectangles in pixel coordinates that need
|
/// |dirtyRects| contains the set of rectangles in pixel coordinates that need
|
||||||
// to be repainted. |shared_handle| is the handle for a D3D11 Texture2D that
|
/// to be repainted. |shared_handle| is the handle for a D3D11 Texture2D that
|
||||||
// can be accessed via ID3D11Device using the OpenSharedResource function.
|
/// can be accessed via ID3D11Device using the OpenSharedResource function.
|
||||||
// This function is only called when cef_window_tInfo::shared_texture_enabled
|
/// This function is only called when cef_window_tInfo::shared_texture_enabled
|
||||||
// is set to true (1), and is currently only supported on Windows.
|
/// is set to true (1), and is currently only supported on Windows.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_accelerated_paint)(struct _cef_render_handler_t* self,
|
void(CEF_CALLBACK* on_accelerated_paint)(struct _cef_render_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -160,18 +162,37 @@ typedef struct _cef_render_handler_t {
|
|||||||
void* shared_handle);
|
void* shared_handle);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the user starts dragging content in the web view. Contextual
|
/// Called to retrieve the size of the touch handle for the specified
|
||||||
// information about the dragged content is supplied by |drag_data|. (|x|,
|
/// |orientation|.
|
||||||
// |y|) is the drag start location in screen coordinates. OS APIs that run a
|
///
|
||||||
// system message loop may be used within the StartDragging call.
|
void(CEF_CALLBACK* get_touch_handle_size)(
|
||||||
//
|
struct _cef_render_handler_t* self,
|
||||||
// Return false (0) to abort the drag operation. Don't call any of
|
struct _cef_browser_t* browser,
|
||||||
// cef_browser_host_t::DragSource*Ended* functions after returning false (0).
|
cef_horizontal_alignment_t orientation,
|
||||||
//
|
cef_size_t* size);
|
||||||
// Return true (1) to handle the drag operation. Call
|
|
||||||
// cef_browser_host_t::DragSourceEndedAt and DragSourceSystemDragEnded either
|
///
|
||||||
// synchronously or asynchronously to inform the web view that the drag
|
/// Called when touch handle state is updated. The client is responsible for
|
||||||
// operation has ended.
|
/// rendering the touch handles.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* on_touch_handle_state_changed)(
|
||||||
|
struct _cef_render_handler_t* self,
|
||||||
|
struct _cef_browser_t* browser,
|
||||||
|
const cef_touch_handle_state_t* state);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called when the user starts dragging content in the web view. Contextual
|
||||||
|
/// information about the dragged content is supplied by |drag_data|. (|x|,
|
||||||
|
/// |y|) is the drag start location in screen coordinates. OS APIs that run a
|
||||||
|
/// system message loop may be used within the StartDragging call.
|
||||||
|
///
|
||||||
|
/// Return false (0) to abort the drag operation. Don't call any of
|
||||||
|
/// cef_browser_host_t::DragSource*Ended* functions after returning false (0).
|
||||||
|
///
|
||||||
|
/// Return true (1) to handle the drag operation. Call
|
||||||
|
/// cef_browser_host_t::DragSourceEndedAt and DragSourceSystemDragEnded either
|
||||||
|
/// synchronously or asynchronously to inform the web view that the drag
|
||||||
|
/// operation has ended.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* start_dragging)(struct _cef_render_handler_t* self,
|
int(CEF_CALLBACK* start_dragging)(struct _cef_render_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -181,16 +202,16 @@ typedef struct _cef_render_handler_t {
|
|||||||
int y);
|
int y);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the web view wants to update the mouse cursor during a drag &
|
/// Called when the web view wants to update the mouse cursor during a drag &
|
||||||
// drop operation. |operation| describes the allowed operation (none, move,
|
/// drop operation. |operation| describes the allowed operation (none, move,
|
||||||
// copy, link).
|
/// copy, link).
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* update_drag_cursor)(struct _cef_render_handler_t* self,
|
void(CEF_CALLBACK* update_drag_cursor)(struct _cef_render_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
cef_drag_operations_mask_t operation);
|
cef_drag_operations_mask_t operation);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the scroll offset has changed.
|
/// Called when the scroll offset has changed.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_scroll_offset_changed)(
|
void(CEF_CALLBACK* on_scroll_offset_changed)(
|
||||||
struct _cef_render_handler_t* self,
|
struct _cef_render_handler_t* self,
|
||||||
@@ -199,9 +220,9 @@ typedef struct _cef_render_handler_t {
|
|||||||
double y);
|
double y);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when the IME composition range has changed. |selected_range| is the
|
/// Called when the IME composition range has changed. |selected_range| is the
|
||||||
// range of characters that have been selected. |character_bounds| is the
|
/// range of characters that have been selected. |character_bounds| is the
|
||||||
// bounds of each character in view coordinates.
|
/// bounds of each character in view coordinates.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_ime_composition_range_changed)(
|
void(CEF_CALLBACK* on_ime_composition_range_changed)(
|
||||||
struct _cef_render_handler_t* self,
|
struct _cef_render_handler_t* self,
|
||||||
@@ -211,9 +232,9 @@ typedef struct _cef_render_handler_t {
|
|||||||
cef_rect_t const* character_bounds);
|
cef_rect_t const* character_bounds);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when text selection has changed for the specified |browser|.
|
/// Called when text selection has changed for the specified |browser|.
|
||||||
// |selected_text| is the currently selected text and |selected_range| is the
|
/// |selected_text| is the currently selected text and |selected_range| is the
|
||||||
// character range.
|
/// character range.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_text_selection_changed)(
|
void(CEF_CALLBACK* on_text_selection_changed)(
|
||||||
struct _cef_render_handler_t* self,
|
struct _cef_render_handler_t* self,
|
||||||
@@ -222,10 +243,10 @@ typedef struct _cef_render_handler_t {
|
|||||||
const cef_range_t* selected_range);
|
const cef_range_t* selected_range);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when an on-screen keyboard should be shown or hidden for the
|
/// Called when an on-screen keyboard should be shown or hidden for the
|
||||||
// specified |browser|. |input_mode| specifies what kind of keyboard should be
|
/// specified |browser|. |input_mode| specifies what kind of keyboard should
|
||||||
// opened. If |input_mode| is CEF_TEXT_INPUT_MODE_NONE, any existing keyboard
|
/// be opened. If |input_mode| is CEF_TEXT_INPUT_MODE_NONE, any existing
|
||||||
// for this browser should be hidden.
|
/// keyboard for this browser should be hidden.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_virtual_keyboard_requested)(
|
void(CEF_CALLBACK* on_virtual_keyboard_requested)(
|
||||||
struct _cef_render_handler_t* self,
|
struct _cef_render_handler_t* self,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=4ebf99611a11cc8714d710c37417fbd9f50f0618$
|
// $hash=d807c7566ce3085243e9e7ea279fee7241acfc5f$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_RENDER_PROCESS_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_RENDER_PROCESS_HANDLER_CAPI_H_
|
||||||
@@ -54,30 +54,30 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used to implement render process callbacks. The functions of this
|
/// Structure used to implement render process callbacks. The functions of this
|
||||||
// structure will be called on the render process main thread (TID_RENDERER)
|
/// structure will be called on the render process main thread (TID_RENDERER)
|
||||||
// unless otherwise indicated.
|
/// unless otherwise indicated.
|
||||||
///
|
///
|
||||||
typedef struct _cef_render_process_handler_t {
|
typedef struct _cef_render_process_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called after WebKit has been initialized.
|
/// Called after WebKit has been initialized.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_web_kit_initialized)(
|
void(CEF_CALLBACK* on_web_kit_initialized)(
|
||||||
struct _cef_render_process_handler_t* self);
|
struct _cef_render_process_handler_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called after a browser has been created. When browsing cross-origin a new
|
/// Called after a browser has been created. When browsing cross-origin a new
|
||||||
// browser will be created before the old browser with the same identifier is
|
/// browser will be created before the old browser with the same identifier is
|
||||||
// destroyed. |extra_info| is an optional read-only value originating from
|
/// destroyed. |extra_info| is an optional read-only value originating from
|
||||||
// cef_browser_host_t::cef_browser_host_create_browser(),
|
/// cef_browser_host_t::cef_browser_host_create_browser(),
|
||||||
// cef_browser_host_t::cef_browser_host_create_browser_sync(),
|
/// cef_browser_host_t::cef_browser_host_create_browser_sync(),
|
||||||
// cef_life_span_handler_t::on_before_popup() or
|
/// cef_life_span_handler_t::on_before_popup() or
|
||||||
// cef_browser_view_t::cef_browser_view_create().
|
/// cef_browser_view_t::cef_browser_view_create().
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_browser_created)(
|
void(CEF_CALLBACK* on_browser_created)(
|
||||||
struct _cef_render_process_handler_t* self,
|
struct _cef_render_process_handler_t* self,
|
||||||
@@ -85,25 +85,25 @@ typedef struct _cef_render_process_handler_t {
|
|||||||
struct _cef_dictionary_value_t* extra_info);
|
struct _cef_dictionary_value_t* extra_info);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called before a browser is destroyed.
|
/// Called before a browser is destroyed.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_browser_destroyed)(
|
void(CEF_CALLBACK* on_browser_destroyed)(
|
||||||
struct _cef_render_process_handler_t* self,
|
struct _cef_render_process_handler_t* self,
|
||||||
struct _cef_browser_t* browser);
|
struct _cef_browser_t* browser);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the handler for browser load status events.
|
/// Return the handler for browser load status events.
|
||||||
///
|
///
|
||||||
struct _cef_load_handler_t*(CEF_CALLBACK* get_load_handler)(
|
struct _cef_load_handler_t*(CEF_CALLBACK* get_load_handler)(
|
||||||
struct _cef_render_process_handler_t* self);
|
struct _cef_render_process_handler_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called immediately after the V8 context for a frame has been created. To
|
/// Called immediately after the V8 context for a frame has been created. To
|
||||||
// retrieve the JavaScript 'window' object use the
|
/// retrieve the JavaScript 'window' object use the
|
||||||
// cef_v8context_t::get_global() function. V8 handles can only be accessed
|
/// cef_v8context_t::get_global() function. V8 handles can only be accessed
|
||||||
// from the thread on which they are created. A task runner for posting tasks
|
/// from the thread on which they are created. A task runner for posting tasks
|
||||||
// on the associated thread can be retrieved via the
|
/// on the associated thread can be retrieved via the
|
||||||
// cef_v8context_t::get_task_runner() function.
|
/// cef_v8context_t::get_task_runner() function.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_context_created)(
|
void(CEF_CALLBACK* on_context_created)(
|
||||||
struct _cef_render_process_handler_t* self,
|
struct _cef_render_process_handler_t* self,
|
||||||
@@ -112,8 +112,8 @@ typedef struct _cef_render_process_handler_t {
|
|||||||
struct _cef_v8context_t* context);
|
struct _cef_v8context_t* context);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called immediately before the V8 context for a frame is released. No
|
/// Called immediately before the V8 context for a frame is released. No
|
||||||
// references to the context should be kept after this function is called.
|
/// references to the context should be kept after this function is called.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_context_released)(
|
void(CEF_CALLBACK* on_context_released)(
|
||||||
struct _cef_render_process_handler_t* self,
|
struct _cef_render_process_handler_t* self,
|
||||||
@@ -122,9 +122,9 @@ typedef struct _cef_render_process_handler_t {
|
|||||||
struct _cef_v8context_t* context);
|
struct _cef_v8context_t* context);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called for global uncaught exceptions in a frame. Execution of this
|
/// Called for global uncaught exceptions in a frame. Execution of this
|
||||||
// callback is disabled by default. To enable set
|
/// callback is disabled by default. To enable set
|
||||||
// CefSettings.uncaught_exception_stack_size > 0.
|
/// cef_settings_t.uncaught_exception_stack_size > 0.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_uncaught_exception)(
|
void(CEF_CALLBACK* on_uncaught_exception)(
|
||||||
struct _cef_render_process_handler_t* self,
|
struct _cef_render_process_handler_t* self,
|
||||||
@@ -135,12 +135,12 @@ typedef struct _cef_render_process_handler_t {
|
|||||||
struct _cef_v8stack_trace_t* stackTrace);
|
struct _cef_v8stack_trace_t* stackTrace);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when a new node in the the browser gets focus. The |node| value may
|
/// Called when a new node in the the browser gets focus. The |node| value may
|
||||||
// be NULL if no specific node has gained focus. The node object passed to
|
/// be NULL if no specific node has gained focus. The node object passed to
|
||||||
// this function represents a snapshot of the DOM at the time this function is
|
/// this function represents a snapshot of the DOM at the time this function
|
||||||
// executed. DOM objects are only valid for the scope of this function. Do not
|
/// is executed. DOM objects are only valid for the scope of this function. Do
|
||||||
// keep references to or attempt to access any DOM objects outside the scope
|
/// not keep references to or attempt to access any DOM objects outside the
|
||||||
// of this function.
|
/// scope of this function.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_focused_node_changed)(
|
void(CEF_CALLBACK* on_focused_node_changed)(
|
||||||
struct _cef_render_process_handler_t* self,
|
struct _cef_render_process_handler_t* self,
|
||||||
@@ -149,9 +149,9 @@ typedef struct _cef_render_process_handler_t {
|
|||||||
struct _cef_domnode_t* node);
|
struct _cef_domnode_t* node);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called when a new message is received from a different process. Return true
|
/// Called when a new message is received from a different process. Return
|
||||||
// (1) if the message was handled or false (0) otherwise. It is safe to keep a
|
/// true (1) if the message was handled or false (0) otherwise. It is safe to
|
||||||
// reference to |message| outside of this callback.
|
/// keep a reference to |message| outside of this callback.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_process_message_received)(
|
int(CEF_CALLBACK* on_process_message_received)(
|
||||||
struct _cef_render_process_handler_t* self,
|
struct _cef_render_process_handler_t* self,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=a5e9055958c3588d583d4d128a5d7c8639f39946$
|
// $hash=3339290cad3a77c8b0b07d422f0faf902a047838$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CAPI_H_
|
||||||
@@ -50,96 +50,96 @@ struct _cef_post_data_element_t;
|
|||||||
struct _cef_post_data_t;
|
struct _cef_post_data_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used to represent a web request. The functions of this structure
|
/// Structure used to represent a web request. The functions of this structure
|
||||||
// may be called on any thread.
|
/// may be called on any thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_request_t {
|
typedef struct _cef_request_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this object is read-only.
|
/// Returns true (1) if this object is read-only.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_read_only)(struct _cef_request_t* self);
|
int(CEF_CALLBACK* is_read_only)(struct _cef_request_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the fully qualified URL.
|
/// Get the fully qualified URL.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_url)(struct _cef_request_t* self);
|
cef_string_userfree_t(CEF_CALLBACK* get_url)(struct _cef_request_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the fully qualified URL.
|
/// Set the fully qualified URL.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_url)(struct _cef_request_t* self,
|
void(CEF_CALLBACK* set_url)(struct _cef_request_t* self,
|
||||||
const cef_string_t* url);
|
const cef_string_t* url);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the request function type. The value will default to POST if post data
|
/// Get the request function type. The value will default to POST if post data
|
||||||
// is provided and GET otherwise.
|
/// is provided and GET otherwise.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_method)(struct _cef_request_t* self);
|
cef_string_userfree_t(CEF_CALLBACK* get_method)(struct _cef_request_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the request function type.
|
/// Set the request function type.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_method)(struct _cef_request_t* self,
|
void(CEF_CALLBACK* set_method)(struct _cef_request_t* self,
|
||||||
const cef_string_t* method);
|
const cef_string_t* method);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the referrer URL and policy. If non-NULL the referrer URL must be fully
|
/// Set the referrer URL and policy. If non-NULL the referrer URL must be
|
||||||
// qualified with an HTTP or HTTPS scheme component. Any username, password or
|
/// fully qualified with an HTTP or HTTPS scheme component. Any username,
|
||||||
// ref component will be removed.
|
/// password or ref component will be removed.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_referrer)(struct _cef_request_t* self,
|
void(CEF_CALLBACK* set_referrer)(struct _cef_request_t* self,
|
||||||
const cef_string_t* referrer_url,
|
const cef_string_t* referrer_url,
|
||||||
cef_referrer_policy_t policy);
|
cef_referrer_policy_t policy);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the referrer URL.
|
/// Get the referrer URL.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_referrer_url)(
|
cef_string_userfree_t(CEF_CALLBACK* get_referrer_url)(
|
||||||
struct _cef_request_t* self);
|
struct _cef_request_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the referrer policy.
|
/// Get the referrer policy.
|
||||||
///
|
///
|
||||||
cef_referrer_policy_t(CEF_CALLBACK* get_referrer_policy)(
|
cef_referrer_policy_t(CEF_CALLBACK* get_referrer_policy)(
|
||||||
struct _cef_request_t* self);
|
struct _cef_request_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the post data.
|
/// Get the post data.
|
||||||
///
|
///
|
||||||
struct _cef_post_data_t*(CEF_CALLBACK* get_post_data)(
|
struct _cef_post_data_t*(CEF_CALLBACK* get_post_data)(
|
||||||
struct _cef_request_t* self);
|
struct _cef_request_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the post data.
|
/// Set the post data.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_post_data)(struct _cef_request_t* self,
|
void(CEF_CALLBACK* set_post_data)(struct _cef_request_t* self,
|
||||||
struct _cef_post_data_t* postData);
|
struct _cef_post_data_t* postData);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the header values. Will not include the Referer value if any.
|
/// Get the header values. Will not include the Referer value if any.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* get_header_map)(struct _cef_request_t* self,
|
void(CEF_CALLBACK* get_header_map)(struct _cef_request_t* self,
|
||||||
cef_string_multimap_t headerMap);
|
cef_string_multimap_t headerMap);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the header values. If a Referer value exists in the header map it will
|
/// Set the header values. If a Referer value exists in the header map it will
|
||||||
// be removed and ignored.
|
/// be removed and ignored.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_header_map)(struct _cef_request_t* self,
|
void(CEF_CALLBACK* set_header_map)(struct _cef_request_t* self,
|
||||||
cef_string_multimap_t headerMap);
|
cef_string_multimap_t headerMap);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the first header value for |name| or an NULL string if not found.
|
/// Returns the first header value for |name| or an NULL string if not found.
|
||||||
// Will not return the Referer value if any. Use GetHeaderMap instead if
|
/// Will not return the Referer value if any. Use GetHeaderMap instead if
|
||||||
// |name| might have multiple values.
|
/// |name| might have multiple values.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_header_by_name)(
|
cef_string_userfree_t(CEF_CALLBACK* get_header_by_name)(
|
||||||
@@ -147,10 +147,10 @@ typedef struct _cef_request_t {
|
|||||||
const cef_string_t* name);
|
const cef_string_t* name);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the header |name| to |value|. If |overwrite| is true (1) any existing
|
/// Set the header |name| to |value|. If |overwrite| is true (1) any existing
|
||||||
// values will be replaced with the new value. If |overwrite| is false (0) any
|
/// values will be replaced with the new value. If |overwrite| is false (0)
|
||||||
// existing values will not be overwritten. The Referer value cannot be set
|
/// any existing values will not be overwritten. The Referer value cannot be
|
||||||
// using this function.
|
/// set using this function.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_header_by_name)(struct _cef_request_t* self,
|
void(CEF_CALLBACK* set_header_by_name)(struct _cef_request_t* self,
|
||||||
const cef_string_t* name,
|
const cef_string_t* name,
|
||||||
@@ -158,7 +158,7 @@ typedef struct _cef_request_t {
|
|||||||
int overwrite);
|
int overwrite);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set all values at one time.
|
/// Set all values at one time.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set)(struct _cef_request_t* self,
|
void(CEF_CALLBACK* set)(struct _cef_request_t* self,
|
||||||
const cef_string_t* url,
|
const cef_string_t* url,
|
||||||
@@ -167,174 +167,176 @@ typedef struct _cef_request_t {
|
|||||||
cef_string_multimap_t headerMap);
|
cef_string_multimap_t headerMap);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the flags used in combination with cef_urlrequest_t. See
|
/// Get the flags used in combination with cef_urlrequest_t. See
|
||||||
// cef_urlrequest_flags_t for supported values.
|
/// cef_urlrequest_flags_t for supported values.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_flags)(struct _cef_request_t* self);
|
int(CEF_CALLBACK* get_flags)(struct _cef_request_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the flags used in combination with cef_urlrequest_t. See
|
/// Set the flags used in combination with cef_urlrequest_t. See
|
||||||
// cef_urlrequest_flags_t for supported values.
|
/// cef_urlrequest_flags_t for supported values.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_flags)(struct _cef_request_t* self, int flags);
|
void(CEF_CALLBACK* set_flags)(struct _cef_request_t* self, int flags);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the URL to the first party for cookies used in combination with
|
/// Get the URL to the first party for cookies used in combination with
|
||||||
// cef_urlrequest_t.
|
/// cef_urlrequest_t.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_first_party_for_cookies)(
|
cef_string_userfree_t(CEF_CALLBACK* get_first_party_for_cookies)(
|
||||||
struct _cef_request_t* self);
|
struct _cef_request_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Set the URL to the first party for cookies used in combination with
|
/// Set the URL to the first party for cookies used in combination with
|
||||||
// cef_urlrequest_t.
|
/// cef_urlrequest_t.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_first_party_for_cookies)(struct _cef_request_t* self,
|
void(CEF_CALLBACK* set_first_party_for_cookies)(struct _cef_request_t* self,
|
||||||
const cef_string_t* url);
|
const cef_string_t* url);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the resource type for this request. Only available in the browser
|
/// Get the resource type for this request. Only available in the browser
|
||||||
// process.
|
/// process.
|
||||||
///
|
///
|
||||||
cef_resource_type_t(CEF_CALLBACK* get_resource_type)(
|
cef_resource_type_t(CEF_CALLBACK* get_resource_type)(
|
||||||
struct _cef_request_t* self);
|
struct _cef_request_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Get the transition type for this request. Only available in the browser
|
/// Get the transition type for this request. Only available in the browser
|
||||||
// process and only applies to requests that represent a main frame or sub-
|
/// process and only applies to requests that represent a main frame or sub-
|
||||||
// frame navigation.
|
/// frame navigation.
|
||||||
///
|
///
|
||||||
cef_transition_type_t(CEF_CALLBACK* get_transition_type)(
|
cef_transition_type_t(CEF_CALLBACK* get_transition_type)(
|
||||||
struct _cef_request_t* self);
|
struct _cef_request_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the globally unique identifier for this request or 0 if not
|
/// Returns the globally unique identifier for this request or 0 if not
|
||||||
// specified. Can be used by cef_resource_request_handler_t implementations in
|
/// specified. Can be used by cef_resource_request_handler_t implementations
|
||||||
// the browser process to track a single request across multiple callbacks.
|
/// in the browser process to track a single request across multiple
|
||||||
|
/// callbacks.
|
||||||
///
|
///
|
||||||
uint64(CEF_CALLBACK* get_identifier)(struct _cef_request_t* self);
|
uint64(CEF_CALLBACK* get_identifier)(struct _cef_request_t* self);
|
||||||
} cef_request_t;
|
} cef_request_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Create a new cef_request_t object.
|
/// Create a new cef_request_t object.
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_request_t* cef_request_create();
|
CEF_EXPORT cef_request_t* cef_request_create(void);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used to represent post data for a web request. The functions of
|
/// Structure used to represent post data for a web request. The functions of
|
||||||
// this structure may be called on any thread.
|
/// this structure may be called on any thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_post_data_t {
|
typedef struct _cef_post_data_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this object is read-only.
|
/// Returns true (1) if this object is read-only.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_read_only)(struct _cef_post_data_t* self);
|
int(CEF_CALLBACK* is_read_only)(struct _cef_post_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if the underlying POST data includes elements that are not
|
/// Returns true (1) if the underlying POST data includes elements that are
|
||||||
// represented by this cef_post_data_t object (for example, multi-part file
|
/// not represented by this cef_post_data_t object (for example, multi-part
|
||||||
// upload data). Modifying cef_post_data_t objects with excluded elements may
|
/// file upload data). Modifying cef_post_data_t objects with excluded
|
||||||
// result in the request failing.
|
/// elements may result in the request failing.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* has_excluded_elements)(struct _cef_post_data_t* self);
|
int(CEF_CALLBACK* has_excluded_elements)(struct _cef_post_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the number of existing post data elements.
|
/// Returns the number of existing post data elements.
|
||||||
///
|
///
|
||||||
size_t(CEF_CALLBACK* get_element_count)(struct _cef_post_data_t* self);
|
size_t(CEF_CALLBACK* get_element_count)(struct _cef_post_data_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Retrieve the post data elements.
|
/// Retrieve the post data elements.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* get_elements)(struct _cef_post_data_t* self,
|
void(CEF_CALLBACK* get_elements)(struct _cef_post_data_t* self,
|
||||||
size_t* elementsCount,
|
size_t* elementsCount,
|
||||||
struct _cef_post_data_element_t** elements);
|
struct _cef_post_data_element_t** elements);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Remove the specified post data element. Returns true (1) if the removal
|
/// Remove the specified post data element. Returns true (1) if the removal
|
||||||
// succeeds.
|
/// succeeds.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* remove_element)(struct _cef_post_data_t* self,
|
int(CEF_CALLBACK* remove_element)(struct _cef_post_data_t* self,
|
||||||
struct _cef_post_data_element_t* element);
|
struct _cef_post_data_element_t* element);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Add the specified post data element. Returns true (1) if the add succeeds.
|
/// Add the specified post data element. Returns true (1) if the add
|
||||||
|
/// succeeds.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* add_element)(struct _cef_post_data_t* self,
|
int(CEF_CALLBACK* add_element)(struct _cef_post_data_t* self,
|
||||||
struct _cef_post_data_element_t* element);
|
struct _cef_post_data_element_t* element);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Remove all existing post data elements.
|
/// Remove all existing post data elements.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* remove_elements)(struct _cef_post_data_t* self);
|
void(CEF_CALLBACK* remove_elements)(struct _cef_post_data_t* self);
|
||||||
} cef_post_data_t;
|
} cef_post_data_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Create a new cef_post_data_t object.
|
/// Create a new cef_post_data_t object.
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_post_data_t* cef_post_data_create();
|
CEF_EXPORT cef_post_data_t* cef_post_data_create(void);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used to represent a single element in the request post data. The
|
/// Structure used to represent a single element in the request post data. The
|
||||||
// functions of this structure may be called on any thread.
|
/// functions of this structure may be called on any thread.
|
||||||
///
|
///
|
||||||
typedef struct _cef_post_data_element_t {
|
typedef struct _cef_post_data_element_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this object is read-only.
|
/// Returns true (1) if this object is read-only.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_read_only)(struct _cef_post_data_element_t* self);
|
int(CEF_CALLBACK* is_read_only)(struct _cef_post_data_element_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Remove all contents from the post data element.
|
/// Remove all contents from the post data element.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_to_empty)(struct _cef_post_data_element_t* self);
|
void(CEF_CALLBACK* set_to_empty)(struct _cef_post_data_element_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// The post data element will represent a file.
|
/// The post data element will represent a file.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_to_file)(struct _cef_post_data_element_t* self,
|
void(CEF_CALLBACK* set_to_file)(struct _cef_post_data_element_t* self,
|
||||||
const cef_string_t* fileName);
|
const cef_string_t* fileName);
|
||||||
|
|
||||||
///
|
///
|
||||||
// The post data element will represent bytes. The bytes passed in will be
|
/// The post data element will represent bytes. The bytes passed in will be
|
||||||
// copied.
|
/// copied.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_to_bytes)(struct _cef_post_data_element_t* self,
|
void(CEF_CALLBACK* set_to_bytes)(struct _cef_post_data_element_t* self,
|
||||||
size_t size,
|
size_t size,
|
||||||
const void* bytes);
|
const void* bytes);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the type of this post data element.
|
/// Return the type of this post data element.
|
||||||
///
|
///
|
||||||
cef_postdataelement_type_t(CEF_CALLBACK* get_type)(
|
cef_postdataelement_type_t(CEF_CALLBACK* get_type)(
|
||||||
struct _cef_post_data_element_t* self);
|
struct _cef_post_data_element_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the file name.
|
/// Return the file name.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_file)(
|
cef_string_userfree_t(CEF_CALLBACK* get_file)(
|
||||||
struct _cef_post_data_element_t* self);
|
struct _cef_post_data_element_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Return the number of bytes.
|
/// Return the number of bytes.
|
||||||
///
|
///
|
||||||
size_t(CEF_CALLBACK* get_bytes_count)(struct _cef_post_data_element_t* self);
|
size_t(CEF_CALLBACK* get_bytes_count)(struct _cef_post_data_element_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Read up to |size| bytes into |bytes| and return the number of bytes
|
/// Read up to |size| bytes into |bytes| and return the number of bytes
|
||||||
// actually read.
|
/// actually read.
|
||||||
///
|
///
|
||||||
size_t(CEF_CALLBACK* get_bytes)(struct _cef_post_data_element_t* self,
|
size_t(CEF_CALLBACK* get_bytes)(struct _cef_post_data_element_t* self,
|
||||||
size_t size,
|
size_t size,
|
||||||
@@ -342,9 +344,9 @@ typedef struct _cef_post_data_element_t {
|
|||||||
} cef_post_data_element_t;
|
} cef_post_data_element_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Create a new cef_post_data_element_t object.
|
/// Create a new cef_post_data_element_t object.
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_post_data_element_t* cef_post_data_element_create();
|
CEF_EXPORT cef_post_data_element_t* cef_post_data_element_create(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=2e42334fc22050e207e5a0af6fe290a592e4105f$
|
// $hash=c2a6265e8e9acce475a8b5755a8c58b97b495207$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_CAPI_H_
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
#include "include/capi/cef_extension_capi.h"
|
#include "include/capi/cef_extension_capi.h"
|
||||||
#include "include/capi/cef_extension_handler_capi.h"
|
#include "include/capi/cef_extension_handler_capi.h"
|
||||||
#include "include/capi/cef_media_router_capi.h"
|
#include "include/capi/cef_media_router_capi.h"
|
||||||
#include "include/capi/cef_values_capi.h"
|
#include "include/capi/cef_preference_capi.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@@ -55,18 +55,18 @@ struct _cef_request_context_handler_t;
|
|||||||
struct _cef_scheme_handler_factory_t;
|
struct _cef_scheme_handler_factory_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback structure for cef_request_context_t::ResolveHost.
|
/// Callback structure for cef_request_context_t::ResolveHost.
|
||||||
///
|
///
|
||||||
typedef struct _cef_resolve_callback_t {
|
typedef struct _cef_resolve_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the UI thread after the ResolveHost request has completed.
|
/// Called on the UI thread after the ResolveHost request has completed.
|
||||||
// |result| will be the result code. |resolved_ips| will be the list of
|
/// |result| will be the result code. |resolved_ips| will be the list of
|
||||||
// resolved IP addresses or NULL if the resolution failed.
|
/// resolved IP addresses or NULL if the resolution failed.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_resolve_completed)(struct _cef_resolve_callback_t* self,
|
void(CEF_CALLBACK* on_resolve_completed)(struct _cef_resolve_callback_t* self,
|
||||||
cef_errorcode_t result,
|
cef_errorcode_t result,
|
||||||
@@ -74,83 +74,83 @@ typedef struct _cef_resolve_callback_t {
|
|||||||
} cef_resolve_callback_t;
|
} cef_resolve_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// A request context provides request handling for a set of related browser or
|
/// A request context provides request handling for a set of related browser or
|
||||||
// URL request objects. A request context can be specified when creating a new
|
/// URL request objects. A request context can be specified when creating a new
|
||||||
// browser via the cef_browser_host_t static factory functions or when creating
|
/// browser via the cef_browser_host_t static factory functions or when creating
|
||||||
// a new URL request via the cef_urlrequest_t static factory functions. Browser
|
/// a new URL request via the cef_urlrequest_t static factory functions. Browser
|
||||||
// objects with different request contexts will never be hosted in the same
|
/// objects with different request contexts will never be hosted in the same
|
||||||
// render process. Browser objects with the same request context may or may not
|
/// render process. Browser objects with the same request context may or may not
|
||||||
// be hosted in the same render process depending on the process model. Browser
|
/// be hosted in the same render process depending on the process model. Browser
|
||||||
// objects created indirectly via the JavaScript window.open function or
|
/// objects created indirectly via the JavaScript window.open function or
|
||||||
// targeted links will share the same render process and the same request
|
/// targeted links will share the same render process and the same request
|
||||||
// context as the source browser. When running in single-process mode there is
|
/// context as the source browser. When running in single-process mode there is
|
||||||
// only a single render process (the main process) and so all browsers created
|
/// only a single render process (the main process) and so all browsers created
|
||||||
// in single-process mode will share the same request context. This will be the
|
/// in single-process mode will share the same request context. This will be the
|
||||||
// first request context passed into a cef_browser_host_t static factory
|
/// first request context passed into a cef_browser_host_t static factory
|
||||||
// function and all other request context objects will be ignored.
|
/// function and all other request context objects will be ignored.
|
||||||
///
|
///
|
||||||
typedef struct _cef_request_context_t {
|
typedef struct _cef_request_context_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_preference_manager_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this object is pointing to the same context as |that|
|
/// Returns true (1) if this object is pointing to the same context as |that|
|
||||||
// object.
|
/// object.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_same)(struct _cef_request_context_t* self,
|
int(CEF_CALLBACK* is_same)(struct _cef_request_context_t* self,
|
||||||
struct _cef_request_context_t* other);
|
struct _cef_request_context_t* other);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this object is sharing the same storage as |that|
|
/// Returns true (1) if this object is sharing the same storage as |that|
|
||||||
// object.
|
/// object.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_sharing_with)(struct _cef_request_context_t* self,
|
int(CEF_CALLBACK* is_sharing_with)(struct _cef_request_context_t* self,
|
||||||
struct _cef_request_context_t* other);
|
struct _cef_request_context_t* other);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this object is the global context. The global context
|
/// Returns true (1) if this object is the global context. The global context
|
||||||
// is used by default when creating a browser or URL request with a NULL
|
/// is used by default when creating a browser or URL request with a NULL
|
||||||
// context argument.
|
/// context argument.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_global)(struct _cef_request_context_t* self);
|
int(CEF_CALLBACK* is_global)(struct _cef_request_context_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the handler for this context if any.
|
/// Returns the handler for this context if any.
|
||||||
///
|
///
|
||||||
struct _cef_request_context_handler_t*(CEF_CALLBACK* get_handler)(
|
struct _cef_request_context_handler_t*(CEF_CALLBACK* get_handler)(
|
||||||
struct _cef_request_context_t* self);
|
struct _cef_request_context_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the cache path for this object. If NULL an "incognito mode" in-
|
/// Returns the cache path for this object. If NULL an "incognito mode" in-
|
||||||
// memory cache is being used.
|
/// memory cache is being used.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_cache_path)(
|
cef_string_userfree_t(CEF_CALLBACK* get_cache_path)(
|
||||||
struct _cef_request_context_t* self);
|
struct _cef_request_context_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the cookie manager for this object. If |callback| is non-NULL it
|
/// Returns the cookie manager for this object. If |callback| is non-NULL it
|
||||||
// will be executed asnychronously on the UI thread after the manager's
|
/// will be executed asnychronously on the UI thread after the manager's
|
||||||
// storage has been initialized.
|
/// storage has been initialized.
|
||||||
///
|
///
|
||||||
struct _cef_cookie_manager_t*(CEF_CALLBACK* get_cookie_manager)(
|
struct _cef_cookie_manager_t*(CEF_CALLBACK* get_cookie_manager)(
|
||||||
struct _cef_request_context_t* self,
|
struct _cef_request_context_t* self,
|
||||||
struct _cef_completion_callback_t* callback);
|
struct _cef_completion_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Register a scheme handler factory for the specified |scheme_name| and
|
/// Register a scheme handler factory for the specified |scheme_name| and
|
||||||
// optional |domain_name|. An NULL |domain_name| value for a standard scheme
|
/// optional |domain_name|. An NULL |domain_name| value for a standard scheme
|
||||||
// will cause the factory to match all domain names. The |domain_name| value
|
/// will cause the factory to match all domain names. The |domain_name| value
|
||||||
// will be ignored for non-standard schemes. If |scheme_name| is a built-in
|
/// will be ignored for non-standard schemes. If |scheme_name| is a built-in
|
||||||
// scheme and no handler is returned by |factory| then the built-in scheme
|
/// scheme and no handler is returned by |factory| then the built-in scheme
|
||||||
// handler factory will be called. If |scheme_name| is a custom scheme then
|
/// handler factory will be called. If |scheme_name| is a custom scheme then
|
||||||
// you must also implement the cef_app_t::on_register_custom_schemes()
|
/// you must also implement the cef_app_t::on_register_custom_schemes()
|
||||||
// function in all processes. This function may be called multiple times to
|
/// function in all processes. This function may be called multiple times to
|
||||||
// change or remove the factory that matches the specified |scheme_name| and
|
/// change or remove the factory that matches the specified |scheme_name| and
|
||||||
// optional |domain_name|. Returns false (0) if an error occurs. This function
|
/// optional |domain_name|. Returns false (0) if an error occurs. This
|
||||||
// may be called on any thread in the browser process.
|
/// function may be called on any thread in the browser process.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* register_scheme_handler_factory)(
|
int(CEF_CALLBACK* register_scheme_handler_factory)(
|
||||||
struct _cef_request_context_t* self,
|
struct _cef_request_context_t* self,
|
||||||
@@ -159,160 +159,98 @@ typedef struct _cef_request_context_t {
|
|||||||
struct _cef_scheme_handler_factory_t* factory);
|
struct _cef_scheme_handler_factory_t* factory);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Clear all registered scheme handler factories. Returns false (0) on error.
|
/// Clear all registered scheme handler factories. Returns false (0) on error.
|
||||||
// This function may be called on any thread in the browser process.
|
/// This function may be called on any thread in the browser process.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* clear_scheme_handler_factories)(
|
int(CEF_CALLBACK* clear_scheme_handler_factories)(
|
||||||
struct _cef_request_context_t* self);
|
struct _cef_request_context_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Tells all renderer processes associated with this context to throw away
|
/// Clears all certificate exceptions that were added as part of handling
|
||||||
// their plugin list cache. If |reload_pages| is true (1) they will also
|
/// cef_request_handler_t::on_certificate_error(). If you call this it is
|
||||||
// reload all pages with plugins.
|
/// recommended that you also call close_all_connections() or you risk not
|
||||||
// cef_request_context_handler_t::OnBeforePluginLoad may be called to rebuild
|
/// being prompted again for server certificates if you reconnect quickly. If
|
||||||
// the plugin list cache.
|
/// |callback| is non-NULL it will be executed on the UI thread after
|
||||||
///
|
/// completion.
|
||||||
void(CEF_CALLBACK* purge_plugin_list_cache)(
|
|
||||||
struct _cef_request_context_t* self,
|
|
||||||
int reload_pages);
|
|
||||||
|
|
||||||
///
|
|
||||||
// Returns true (1) if a preference with the specified |name| exists. This
|
|
||||||
// function must be called on the browser process UI thread.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* has_preference)(struct _cef_request_context_t* self,
|
|
||||||
const cef_string_t* name);
|
|
||||||
|
|
||||||
///
|
|
||||||
// Returns the value for the preference with the specified |name|. Returns
|
|
||||||
// NULL if the preference does not exist. The returned object contains a copy
|
|
||||||
// of the underlying preference value and modifications to the returned object
|
|
||||||
// will not modify the underlying preference value. This function must be
|
|
||||||
// called on the browser process UI thread.
|
|
||||||
///
|
|
||||||
struct _cef_value_t*(CEF_CALLBACK* get_preference)(
|
|
||||||
struct _cef_request_context_t* self,
|
|
||||||
const cef_string_t* name);
|
|
||||||
|
|
||||||
///
|
|
||||||
// Returns all preferences as a dictionary. If |include_defaults| is true (1)
|
|
||||||
// then preferences currently at their default value will be included. The
|
|
||||||
// returned object contains a copy of the underlying preference values and
|
|
||||||
// modifications to the returned object will not modify the underlying
|
|
||||||
// preference values. This function must be called on the browser process UI
|
|
||||||
// thread.
|
|
||||||
///
|
|
||||||
struct _cef_dictionary_value_t*(CEF_CALLBACK* get_all_preferences)(
|
|
||||||
struct _cef_request_context_t* self,
|
|
||||||
int include_defaults);
|
|
||||||
|
|
||||||
///
|
|
||||||
// Returns true (1) if the preference with the specified |name| can be
|
|
||||||
// modified using SetPreference. As one example preferences set via the
|
|
||||||
// command-line usually cannot be modified. This function must be called on
|
|
||||||
// the browser process UI thread.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* can_set_preference)(struct _cef_request_context_t* self,
|
|
||||||
const cef_string_t* name);
|
|
||||||
|
|
||||||
///
|
|
||||||
// Set the |value| associated with preference |name|. Returns true (1) if the
|
|
||||||
// value is set successfully and false (0) otherwise. If |value| is NULL the
|
|
||||||
// preference will be restored to its default value. If setting the preference
|
|
||||||
// fails then |error| will be populated with a detailed description of the
|
|
||||||
// problem. This function must be called on the browser process UI thread.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* set_preference)(struct _cef_request_context_t* self,
|
|
||||||
const cef_string_t* name,
|
|
||||||
struct _cef_value_t* value,
|
|
||||||
cef_string_t* error);
|
|
||||||
|
|
||||||
///
|
|
||||||
// Clears all certificate exceptions that were added as part of handling
|
|
||||||
// cef_request_handler_t::on_certificate_error(). If you call this it is
|
|
||||||
// recommended that you also call close_all_connections() or you risk not
|
|
||||||
// being prompted again for server certificates if you reconnect quickly. If
|
|
||||||
// |callback| is non-NULL it will be executed on the UI thread after
|
|
||||||
// completion.
|
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* clear_certificate_exceptions)(
|
void(CEF_CALLBACK* clear_certificate_exceptions)(
|
||||||
struct _cef_request_context_t* self,
|
struct _cef_request_context_t* self,
|
||||||
struct _cef_completion_callback_t* callback);
|
struct _cef_completion_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Clears all HTTP authentication credentials that were added as part of
|
/// Clears all HTTP authentication credentials that were added as part of
|
||||||
// handling GetAuthCredentials. If |callback| is non-NULL it will be executed
|
/// handling GetAuthCredentials. If |callback| is non-NULL it will be executed
|
||||||
// on the UI thread after completion.
|
/// on the UI thread after completion.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* clear_http_auth_credentials)(
|
void(CEF_CALLBACK* clear_http_auth_credentials)(
|
||||||
struct _cef_request_context_t* self,
|
struct _cef_request_context_t* self,
|
||||||
struct _cef_completion_callback_t* callback);
|
struct _cef_completion_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Clears all active and idle connections that Chromium currently has. This is
|
/// Clears all active and idle connections that Chromium currently has. This
|
||||||
// only recommended if you have released all other CEF objects but don't yet
|
/// is only recommended if you have released all other CEF objects but don't
|
||||||
// want to call cef_shutdown(). If |callback| is non-NULL it will be executed
|
/// yet want to call cef_shutdown(). If |callback| is non-NULL it will be
|
||||||
// on the UI thread after completion.
|
/// executed on the UI thread after completion.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* close_all_connections)(
|
void(CEF_CALLBACK* close_all_connections)(
|
||||||
struct _cef_request_context_t* self,
|
struct _cef_request_context_t* self,
|
||||||
struct _cef_completion_callback_t* callback);
|
struct _cef_completion_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Attempts to resolve |origin| to a list of associated IP addresses.
|
/// Attempts to resolve |origin| to a list of associated IP addresses.
|
||||||
// |callback| will be executed on the UI thread after completion.
|
/// |callback| will be executed on the UI thread after completion.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* resolve_host)(struct _cef_request_context_t* self,
|
void(CEF_CALLBACK* resolve_host)(struct _cef_request_context_t* self,
|
||||||
const cef_string_t* origin,
|
const cef_string_t* origin,
|
||||||
struct _cef_resolve_callback_t* callback);
|
struct _cef_resolve_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Load an extension.
|
/// Load an extension.
|
||||||
//
|
///
|
||||||
// If extension resources will be read from disk using the default load
|
/// If extension resources will be read from disk using the default load
|
||||||
// implementation then |root_directory| should be the absolute path to the
|
/// implementation then |root_directory| should be the absolute path to the
|
||||||
// extension resources directory and |manifest| should be NULL. If extension
|
/// extension resources directory and |manifest| should be NULL. If extension
|
||||||
// resources will be provided by the client (e.g. via cef_request_handler_t
|
/// 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
|
/// 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
|
/// component unique to the extension (if not absolute this will be internally
|
||||||
// prefixed with the PK_DIR_RESOURCES path) and |manifest| should contain the
|
/// prefixed with the PK_DIR_RESOURCES path) and |manifest| should contain the
|
||||||
// contents that would otherwise be read from the "manifest.json" file on
|
/// contents that would otherwise be read from the "manifest.json" file on
|
||||||
// disk.
|
/// disk.
|
||||||
//
|
///
|
||||||
// The loaded extension will be accessible in all contexts sharing the same
|
/// The loaded extension will be accessible in all contexts sharing the same
|
||||||
// storage (HasExtension returns true (1)). However, only the context on which
|
/// storage (HasExtension returns true (1)). However, only the context on
|
||||||
// this function was called is considered the loader (DidLoadExtension returns
|
/// which this function was called is considered the loader (DidLoadExtension
|
||||||
// true (1)) and only the loader will receive cef_request_context_handler_t
|
/// returns true (1)) and only the loader will receive
|
||||||
// callbacks for the extension.
|
/// cef_request_context_handler_t callbacks for the extension.
|
||||||
//
|
///
|
||||||
// cef_extension_handler_t::OnExtensionLoaded will be called on load success
|
/// cef_extension_handler_t::OnExtensionLoaded will be called on load success
|
||||||
// or cef_extension_handler_t::OnExtensionLoadFailed will be called on load
|
/// or cef_extension_handler_t::OnExtensionLoadFailed will be called on load
|
||||||
// failure.
|
/// failure.
|
||||||
//
|
///
|
||||||
// If the extension specifies a background script via the "background"
|
/// If the extension specifies a background script via the "background"
|
||||||
// manifest key then cef_extension_handler_t::OnBeforeBackgroundBrowser will
|
/// manifest key then cef_extension_handler_t::OnBeforeBackgroundBrowser will
|
||||||
// be called to create the background browser. See that function for
|
/// be called to create the background browser. See that function for
|
||||||
// additional information about background scripts.
|
/// additional information about background scripts.
|
||||||
//
|
///
|
||||||
// For visible extension views the client application should evaluate the
|
/// For visible extension views the client application should evaluate the
|
||||||
// manifest to determine the correct extension URL to load and then pass that
|
/// 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
|
/// URL to the cef_browser_host_t::CreateBrowser* function after the extension
|
||||||
// has loaded. For example, the client can look for the "browser_action"
|
/// has loaded. For example, the client can look for the "browser_action"
|
||||||
// manifest key as documented at
|
/// manifest key as documented at
|
||||||
// https://developer.chrome.com/extensions/browserAction. Extension URLs take
|
/// https://developer.chrome.com/extensions/browserAction. Extension URLs take
|
||||||
// the form "chrome-extension://<extension_id>/<path>".
|
/// the form "chrome-extension://<extension_id>/<path>".
|
||||||
//
|
///
|
||||||
// Browsers that host extensions differ from normal browsers as follows:
|
/// Browsers that host extensions differ from normal browsers as follows:
|
||||||
// - Can access chrome.* JavaScript APIs if allowed by the manifest. Visit
|
/// - Can access chrome.* JavaScript APIs if allowed by the manifest. Visit
|
||||||
// chrome://extensions-support for the list of extension APIs currently
|
/// chrome://extensions-support for the list of extension APIs currently
|
||||||
// supported by CEF.
|
/// supported by CEF.
|
||||||
// - Main frame navigation to non-extension content is blocked.
|
/// - Main frame navigation to non-extension content is blocked.
|
||||||
// - Pinch-zooming is disabled.
|
/// - Pinch-zooming is disabled.
|
||||||
// - CefBrowserHost::GetExtension returns the hosted extension.
|
/// - CefBrowserHost::GetExtension returns the hosted extension.
|
||||||
// - CefBrowserHost::IsBackgroundHost returns true for background hosts.
|
/// - CefBrowserHost::IsBackgroundHost returns true for background hosts.
|
||||||
//
|
///
|
||||||
// See https://developer.chrome.com/extensions for extension implementation
|
/// See https://developer.chrome.com/extensions for extension implementation
|
||||||
// and usage documentation.
|
/// and usage documentation.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* load_extension)(struct _cef_request_context_t* self,
|
void(CEF_CALLBACK* load_extension)(struct _cef_request_context_t* self,
|
||||||
const cef_string_t* root_directory,
|
const cef_string_t* root_directory,
|
||||||
@@ -320,45 +258,45 @@ typedef struct _cef_request_context_t {
|
|||||||
struct _cef_extension_handler_t* handler);
|
struct _cef_extension_handler_t* handler);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this context was used to load the extension identified
|
/// 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
|
/// by |extension_id|. Other contexts sharing the same storage will also have
|
||||||
// access to the extension (see HasExtension). This function must be called on
|
/// access to the extension (see HasExtension). This function must be called
|
||||||
// the browser process UI thread.
|
/// on the browser process UI thread.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* did_load_extension)(struct _cef_request_context_t* self,
|
int(CEF_CALLBACK* did_load_extension)(struct _cef_request_context_t* self,
|
||||||
const cef_string_t* extension_id);
|
const cef_string_t* extension_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this context has access to the extension identified by
|
/// 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_id|. This may not be the context that was used to load the
|
||||||
// extension (see DidLoadExtension). This function must be called on the
|
/// extension (see DidLoadExtension). This function must be called on the
|
||||||
// browser process UI thread.
|
/// browser process UI thread.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* has_extension)(struct _cef_request_context_t* self,
|
int(CEF_CALLBACK* has_extension)(struct _cef_request_context_t* self,
|
||||||
const cef_string_t* extension_id);
|
const cef_string_t* extension_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Retrieve the list of all extensions that this context has access to (see
|
/// Retrieve the list of all extensions that this context has access to (see
|
||||||
// HasExtension). |extension_ids| will be populated with the list of extension
|
/// HasExtension). |extension_ids| will be populated with the list of
|
||||||
// ID values. Returns true (1) on success. This function must be called on the
|
/// extension ID values. Returns true (1) on success. This function must be
|
||||||
// browser process UI thread.
|
/// called on the browser process UI thread.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_extensions)(struct _cef_request_context_t* self,
|
int(CEF_CALLBACK* get_extensions)(struct _cef_request_context_t* self,
|
||||||
cef_string_list_t extension_ids);
|
cef_string_list_t extension_ids);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the extension matching |extension_id| or NULL if no matching
|
/// Returns the extension matching |extension_id| or NULL if no matching
|
||||||
// extension is accessible in this context (see HasExtension). This function
|
/// extension is accessible in this context (see HasExtension). This function
|
||||||
// must be called on the browser process UI thread.
|
/// must be called on the browser process UI thread.
|
||||||
///
|
///
|
||||||
struct _cef_extension_t*(CEF_CALLBACK* get_extension)(
|
struct _cef_extension_t*(CEF_CALLBACK* get_extension)(
|
||||||
struct _cef_request_context_t* self,
|
struct _cef_request_context_t* self,
|
||||||
const cef_string_t* extension_id);
|
const cef_string_t* extension_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the MediaRouter object associated with this context. If |callback|
|
/// Returns the MediaRouter object associated with this context. If
|
||||||
// is non-NULL it will be executed asnychronously on the UI thread after the
|
/// |callback| is non-NULL it will be executed asnychronously on the UI thread
|
||||||
// manager's context has been initialized.
|
/// after the manager's context has been initialized.
|
||||||
///
|
///
|
||||||
struct _cef_media_router_t*(CEF_CALLBACK* get_media_router)(
|
struct _cef_media_router_t*(CEF_CALLBACK* get_media_router)(
|
||||||
struct _cef_request_context_t* self,
|
struct _cef_request_context_t* self,
|
||||||
@@ -366,21 +304,21 @@ typedef struct _cef_request_context_t {
|
|||||||
} cef_request_context_t;
|
} cef_request_context_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the global context object.
|
/// Returns the global context object.
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_request_context_t* cef_request_context_get_global_context();
|
CEF_EXPORT cef_request_context_t* cef_request_context_get_global_context(void);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Creates a new context object with the specified |settings| and optional
|
/// Creates a new context object with the specified |settings| and optional
|
||||||
// |handler|.
|
/// |handler|.
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_request_context_t* cef_request_context_create_context(
|
CEF_EXPORT cef_request_context_t* cef_request_context_create_context(
|
||||||
const struct _cef_request_context_settings_t* settings,
|
const struct _cef_request_context_settings_t* settings,
|
||||||
struct _cef_request_context_handler_t* handler);
|
struct _cef_request_context_handler_t* handler);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Creates a new context object that shares storage with |other| and uses an
|
/// Creates a new context object that shares storage with |other| and uses an
|
||||||
// optional |handler|.
|
/// optional |handler|.
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_request_context_t* cef_create_context_shared(
|
CEF_EXPORT cef_request_context_t* cef_create_context_shared(
|
||||||
cef_request_context_t* other,
|
cef_request_context_t* other,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=fa148db8a0ecd79966814086fb92e439687be701$
|
// $hash=b0b532a12106d960adc446b980affeee12b93ae3$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_HANDLER_CAPI_H_
|
||||||
@@ -43,78 +43,51 @@
|
|||||||
#include "include/capi/cef_base_capi.h"
|
#include "include/capi/cef_base_capi.h"
|
||||||
#include "include/capi/cef_browser_capi.h"
|
#include "include/capi/cef_browser_capi.h"
|
||||||
#include "include/capi/cef_frame_capi.h"
|
#include "include/capi/cef_frame_capi.h"
|
||||||
|
#include "include/capi/cef_preference_capi.h"
|
||||||
#include "include/capi/cef_request_capi.h"
|
#include "include/capi/cef_request_capi.h"
|
||||||
#include "include/capi/cef_resource_request_handler_capi.h"
|
#include "include/capi/cef_resource_request_handler_capi.h"
|
||||||
#include "include/capi/cef_web_plugin_capi.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to provide handler implementations. The handler
|
/// Implement this structure to provide handler implementations. The handler
|
||||||
// instance will not be released until all objects related to the context have
|
/// instance will not be released until all objects related to the context have
|
||||||
// been destroyed.
|
/// been destroyed.
|
||||||
///
|
///
|
||||||
typedef struct _cef_request_context_handler_t {
|
typedef struct _cef_request_context_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the browser process UI thread immediately after the request
|
/// Called on the browser process UI thread immediately after the request
|
||||||
// context has been initialized.
|
/// context has been initialized.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_request_context_initialized)(
|
void(CEF_CALLBACK* on_request_context_initialized)(
|
||||||
struct _cef_request_context_handler_t* self,
|
struct _cef_request_context_handler_t* self,
|
||||||
struct _cef_request_context_t* request_context);
|
struct _cef_request_context_t* request_context);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on multiple browser process threads before a plugin instance is
|
/// Called on the browser process IO thread before a resource request is
|
||||||
// loaded. |mime_type| is the mime type of the plugin that will be loaded.
|
/// initiated. The |browser| and |frame| values represent the source of the
|
||||||
// |plugin_url| is the content URL that the plugin will load and may be NULL.
|
/// request, and may be NULL for requests originating from service workers or
|
||||||
// |is_main_frame| will be true (1) if the plugin is being loaded in the main
|
/// cef_urlrequest_t. |request| represents the request contents and cannot be
|
||||||
// (top-level) frame, |top_origin_url| is the URL for the top-level frame that
|
/// modified in this callback. |is_navigation| will be true (1) if the
|
||||||
// contains the plugin when loading a specific plugin instance or NULL when
|
/// resource request is a navigation. |is_download| will be true (1) if the
|
||||||
// building the initial list of enabled plugins for 'navigator.plugins'
|
/// resource request is a download. |request_initiator| is the origin (scheme
|
||||||
// JavaScript state. |plugin_info| includes additional information about the
|
/// + domain) of the page that initiated the request. Set
|
||||||
// plugin that will be loaded. |plugin_policy| is the recommended policy.
|
/// |disable_default_handling| to true (1) to disable default handling of the
|
||||||
// Modify |plugin_policy| and return true (1) to change the policy. Return
|
/// request, in which case it will need to be handled via
|
||||||
// false (0) to use the recommended policy. The default plugin policy can be
|
/// cef_resource_request_handler_t::GetResourceHandler or it will be canceled.
|
||||||
// set at runtime using the `--plugin-policy=[allow|detect|block]` command-
|
/// To allow the resource load to proceed with default handling return NULL.
|
||||||
// line flag. Decisions to mark a plugin as disabled by setting
|
/// To specify a handler for the resource return a
|
||||||
// |plugin_policy| to PLUGIN_POLICY_DISABLED may be cached when
|
/// cef_resource_request_handler_t object. This function will not be called if
|
||||||
// |top_origin_url| is NULL. To purge the plugin list cache and potentially
|
/// the client associated with |browser| returns a non-NULL value from
|
||||||
// trigger new calls to this function call
|
/// cef_request_handler_t::GetResourceRequestHandler for the same request
|
||||||
// cef_request_context_t::PurgePluginListCache.
|
/// (identified by cef_request_t::GetIdentifier).
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* on_before_plugin_load)(
|
|
||||||
struct _cef_request_context_handler_t* self,
|
|
||||||
const cef_string_t* mime_type,
|
|
||||||
const cef_string_t* plugin_url,
|
|
||||||
int is_main_frame,
|
|
||||||
const cef_string_t* top_origin_url,
|
|
||||||
struct _cef_web_plugin_info_t* plugin_info,
|
|
||||||
cef_plugin_policy_t* plugin_policy);
|
|
||||||
|
|
||||||
///
|
|
||||||
// Called on the browser process IO thread before a resource request is
|
|
||||||
// initiated. The |browser| and |frame| values represent the source of the
|
|
||||||
// request, and may be NULL for requests originating from service workers or
|
|
||||||
// cef_urlrequest_t. |request| represents the request contents and cannot be
|
|
||||||
// modified in this callback. |is_navigation| will be true (1) if the resource
|
|
||||||
// request is a navigation. |is_download| will be true (1) if the resource
|
|
||||||
// request is a download. |request_initiator| is the origin (scheme + domain)
|
|
||||||
// of the page that initiated the request. Set |disable_default_handling| to
|
|
||||||
// true (1) to disable default handling of the request, in which case it will
|
|
||||||
// need to be handled via cef_resource_request_handler_t::GetResourceHandler
|
|
||||||
// or it will be canceled. To allow the resource load to proceed with default
|
|
||||||
// handling return NULL. To specify a handler for the resource return a
|
|
||||||
// cef_resource_request_handler_t object. This function will not be called if
|
|
||||||
// the client associated with |browser| returns a non-NULL value from
|
|
||||||
// cef_request_handler_t::GetResourceRequestHandler for the same request
|
|
||||||
// (identified by cef_request_t::GetIdentifier).
|
|
||||||
///
|
///
|
||||||
struct _cef_resource_request_handler_t*(
|
struct _cef_resource_request_handler_t*(
|
||||||
CEF_CALLBACK* get_resource_request_handler)(
|
CEF_CALLBACK* get_resource_request_handler)(
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=83ff671e8a4db001029be8a02a414333fe4354af$
|
// $hash=092d897e223273a940ed623547d82645f764519c$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_HANDLER_CAPI_H_
|
||||||
@@ -55,17 +55,17 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback structure used to select a client certificate for authentication.
|
/// Callback structure used to select a client certificate for authentication.
|
||||||
///
|
///
|
||||||
typedef struct _cef_select_client_certificate_callback_t {
|
typedef struct _cef_select_client_certificate_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Chooses the specified certificate for client certificate authentication.
|
/// Chooses the specified certificate for client certificate authentication.
|
||||||
// NULL value means that no client certificate should be used.
|
/// NULL value means that no client certificate should be used.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* select)(
|
void(CEF_CALLBACK* select)(
|
||||||
struct _cef_select_client_certificate_callback_t* self,
|
struct _cef_select_client_certificate_callback_t* self,
|
||||||
@@ -73,26 +73,27 @@ typedef struct _cef_select_client_certificate_callback_t {
|
|||||||
} cef_select_client_certificate_callback_t;
|
} cef_select_client_certificate_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Implement this structure to handle events related to browser requests. The
|
/// Implement this structure to handle events related to browser requests. The
|
||||||
// functions of this structure will be called on the thread indicated.
|
/// functions of this structure will be called on the thread indicated.
|
||||||
///
|
///
|
||||||
typedef struct _cef_request_handler_t {
|
typedef struct _cef_request_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the UI thread before browser navigation. Return true (1) to
|
/// Called on the UI thread before browser navigation. Return true (1) to
|
||||||
// cancel the navigation or false (0) to allow the navigation to proceed. The
|
/// cancel the navigation or false (0) to allow the navigation to proceed. The
|
||||||
// |request| object cannot be modified in this callback.
|
/// |request| object cannot be modified in this callback.
|
||||||
// cef_load_handler_t::OnLoadingStateChange will be called twice in all cases.
|
/// cef_load_handler_t::OnLoadingStateChange will be called twice in all
|
||||||
// If the navigation is allowed cef_load_handler_t::OnLoadStart and
|
/// cases. If the navigation is allowed cef_load_handler_t::OnLoadStart and
|
||||||
// cef_load_handler_t::OnLoadEnd will be called. If the navigation is canceled
|
/// cef_load_handler_t::OnLoadEnd will be called. If the navigation is
|
||||||
// cef_load_handler_t::OnLoadError will be called with an |errorCode| value of
|
/// canceled cef_load_handler_t::OnLoadError will be called with an
|
||||||
// ERR_ABORTED. The |user_gesture| value will be true (1) if the browser
|
/// |errorCode| value of ERR_ABORTED. The |user_gesture| value will be true
|
||||||
// navigated via explicit user gesture (e.g. clicking a link) or false (0) if
|
/// (1) if the browser navigated via explicit user gesture (e.g. clicking a
|
||||||
// it navigated automatically (e.g. via the DomContentLoaded event).
|
/// link) or false (0) if it navigated automatically (e.g. via the
|
||||||
|
/// DomContentLoaded event).
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_before_browse)(struct _cef_request_handler_t* self,
|
int(CEF_CALLBACK* on_before_browse)(struct _cef_request_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -102,20 +103,20 @@ typedef struct _cef_request_handler_t {
|
|||||||
int is_redirect);
|
int is_redirect);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the UI thread before OnBeforeBrowse in certain limited cases
|
/// Called on the UI thread before OnBeforeBrowse in certain limited cases
|
||||||
// where navigating a new or different browser might be desirable. This
|
/// where navigating a new or different browser might be desirable. This
|
||||||
// includes user-initiated navigation that might open in a special way (e.g.
|
/// includes user-initiated navigation that might open in a special way (e.g.
|
||||||
// links clicked via middle-click or ctrl + left-click) and certain types of
|
/// links clicked via middle-click or ctrl + left-click) and certain types of
|
||||||
// cross-origin navigation initiated from the renderer process (e.g.
|
/// cross-origin navigation initiated from the renderer process (e.g.
|
||||||
// navigating the top-level frame to/from a file URL). The |browser| and
|
/// navigating the top-level frame to/from a file URL). The |browser| and
|
||||||
// |frame| values represent the source of the navigation. The
|
/// |frame| values represent the source of the navigation. The
|
||||||
// |target_disposition| value indicates where the user intended to navigate
|
/// |target_disposition| value indicates where the user intended to navigate
|
||||||
// the browser based on standard Chromium behaviors (e.g. current tab, new
|
/// the browser based on standard Chromium behaviors (e.g. current tab, new
|
||||||
// tab, etc). The |user_gesture| value will be true (1) if the browser
|
/// tab, etc). The |user_gesture| value will be true (1) if the browser
|
||||||
// navigated via explicit user gesture (e.g. clicking a link) or false (0) if
|
/// navigated via explicit user gesture (e.g. clicking a link) or false (0) if
|
||||||
// it navigated automatically (e.g. via the DomContentLoaded event). Return
|
/// it navigated automatically (e.g. via the DomContentLoaded event). Return
|
||||||
// true (1) to cancel the navigation or false (0) to allow the navigation to
|
/// true (1) to cancel the navigation or false (0) to allow the navigation to
|
||||||
// proceed in the source browser's top-level frame.
|
/// proceed in the source browser's top-level frame.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_open_urlfrom_tab)(
|
int(CEF_CALLBACK* on_open_urlfrom_tab)(
|
||||||
struct _cef_request_handler_t* self,
|
struct _cef_request_handler_t* self,
|
||||||
@@ -126,20 +127,20 @@ typedef struct _cef_request_handler_t {
|
|||||||
int user_gesture);
|
int user_gesture);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the browser process IO thread before a resource request is
|
/// Called on the browser process IO thread before a resource request is
|
||||||
// initiated. The |browser| and |frame| values represent the source of the
|
/// initiated. The |browser| and |frame| values represent the source of the
|
||||||
// request. |request| represents the request contents and cannot be modified
|
/// request. |request| represents the request contents and cannot be modified
|
||||||
// in this callback. |is_navigation| will be true (1) if the resource request
|
/// in this callback. |is_navigation| will be true (1) if the resource request
|
||||||
// is a navigation. |is_download| will be true (1) if the resource request is
|
/// is a navigation. |is_download| will be true (1) if the resource request is
|
||||||
// a download. |request_initiator| is the origin (scheme + domain) of the page
|
/// a download. |request_initiator| is the origin (scheme + domain) of the
|
||||||
// that initiated the request. Set |disable_default_handling| to true (1) to
|
/// page that initiated the request. Set |disable_default_handling| to true
|
||||||
// disable default handling of the request, in which case it will need to be
|
/// (1) to disable default handling of the request, in which case it will need
|
||||||
// handled via cef_resource_request_handler_t::GetResourceHandler or it will
|
/// to be handled via cef_resource_request_handler_t::GetResourceHandler or it
|
||||||
// be canceled. To allow the resource load to proceed with default handling
|
/// will be canceled. To allow the resource load to proceed with default
|
||||||
// return NULL. To specify a handler for the resource return a
|
/// handling return NULL. To specify a handler for the resource return a
|
||||||
// cef_resource_request_handler_t object. If this callback returns NULL the
|
/// cef_resource_request_handler_t object. If this callback returns NULL the
|
||||||
// same function will be called on the associated
|
/// same function will be called on the associated
|
||||||
// cef_request_context_handler_t, if any.
|
/// cef_request_context_handler_t, if any.
|
||||||
///
|
///
|
||||||
struct _cef_resource_request_handler_t*(
|
struct _cef_resource_request_handler_t*(
|
||||||
CEF_CALLBACK* get_resource_request_handler)(
|
CEF_CALLBACK* get_resource_request_handler)(
|
||||||
@@ -153,16 +154,16 @@ typedef struct _cef_request_handler_t {
|
|||||||
int* disable_default_handling);
|
int* disable_default_handling);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the IO thread when the browser needs credentials from the user.
|
/// Called on the IO thread when the browser needs credentials from the user.
|
||||||
// |origin_url| is the origin making this authentication request. |isProxy|
|
/// |origin_url| is the origin making this authentication request. |isProxy|
|
||||||
// indicates whether the host is a proxy server. |host| contains the hostname
|
/// indicates whether the host is a proxy server. |host| contains the hostname
|
||||||
// and |port| contains the port number. |realm| is the realm of the challenge
|
/// and |port| contains the port number. |realm| is the realm of the challenge
|
||||||
// and may be NULL. |scheme| is the authentication scheme used, such as
|
/// and may be NULL. |scheme| is the authentication scheme used, such as
|
||||||
// "basic" or "digest", and will be NULL if the source of the request is an
|
/// "basic" or "digest", and will be NULL if the source of the request is an
|
||||||
// FTP server. Return true (1) to continue the request and call
|
/// FTP server. Return true (1) to continue the request and call
|
||||||
// cef_auth_callback_t::cont() either in this function or at a later time when
|
/// cef_auth_callback_t::cont() either in this function or at a later time
|
||||||
// the authentication information is available. Return false (0) to cancel the
|
/// when the authentication information is available. Return false (0) to
|
||||||
// request immediately.
|
/// cancel the request immediately.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_auth_credentials)(
|
int(CEF_CALLBACK* get_auth_credentials)(
|
||||||
struct _cef_request_handler_t* self,
|
struct _cef_request_handler_t* self,
|
||||||
@@ -176,27 +177,12 @@ typedef struct _cef_request_handler_t {
|
|||||||
struct _cef_auth_callback_t* callback);
|
struct _cef_auth_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the IO thread when JavaScript requests a specific storage quota
|
/// Called on the UI thread to handle requests for URLs with an invalid SSL
|
||||||
// size via the webkitStorageInfo.requestQuota function. |origin_url| is the
|
/// certificate. Return true (1) and call cef_callback_t functions either in
|
||||||
// origin of the page making the request. |new_size| is the requested quota
|
/// this function or at a later time to continue or cancel the request. Return
|
||||||
// size in bytes. Return true (1) to continue the request and call
|
/// false (0) to cancel the request immediately. If
|
||||||
// cef_callback_t functions either in this function or at a later time to
|
/// cef_settings_t.ignore_certificate_errors is set all invalid certificates
|
||||||
// grant or deny the request. Return false (0) to cancel the request
|
/// will be accepted without calling this function.
|
||||||
// immediately.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* on_quota_request)(struct _cef_request_handler_t* self,
|
|
||||||
struct _cef_browser_t* browser,
|
|
||||||
const cef_string_t* origin_url,
|
|
||||||
int64 new_size,
|
|
||||||
struct _cef_callback_t* callback);
|
|
||||||
|
|
||||||
///
|
|
||||||
// Called on the UI thread to handle requests for URLs with an invalid SSL
|
|
||||||
// certificate. Return true (1) and call cef_callback_t functions either in
|
|
||||||
// this function or at a later time to continue or cancel the request. Return
|
|
||||||
// false (0) to cancel the request immediately. If
|
|
||||||
// CefSettings.ignore_certificate_errors is set all invalid certificates will
|
|
||||||
// be accepted without calling this function.
|
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_certificate_error)(struct _cef_request_handler_t* self,
|
int(CEF_CALLBACK* on_certificate_error)(struct _cef_request_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -206,17 +192,17 @@ typedef struct _cef_request_handler_t {
|
|||||||
struct _cef_callback_t* callback);
|
struct _cef_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the UI thread when a client certificate is being requested for
|
/// Called on the UI thread when a client certificate is being requested for
|
||||||
// authentication. Return false (0) to use the default behavior and
|
/// authentication. Return false (0) to use the default behavior and
|
||||||
// automatically select the first certificate available. Return true (1) and
|
/// automatically select the first certificate available. Return true (1) and
|
||||||
// call cef_select_client_certificate_callback_t::Select either in this
|
/// call cef_select_client_certificate_callback_t::Select either in this
|
||||||
// function or at a later time to select a certificate. Do not call Select or
|
/// function or at a later time to select a certificate. Do not call Select or
|
||||||
// call it with NULL to continue without using any certificate. |isProxy|
|
/// call it with NULL to continue without using any certificate. |isProxy|
|
||||||
// indicates whether the host is an HTTPS proxy or the origin server. |host|
|
/// indicates whether the host is an HTTPS proxy or the origin server. |host|
|
||||||
// and |port| contains the hostname and port of the SSL server. |certificates|
|
/// and |port| contains the hostname and port of the SSL server.
|
||||||
// is the list of certificates to choose from; this list has already been
|
/// |certificates| is the list of certificates to choose from; this list has
|
||||||
// pruned by Chromium so that it only contains certificates from issuers that
|
/// already been pruned by Chromium so that it only contains certificates from
|
||||||
// the server trusts.
|
/// issuers that the server trusts.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_select_client_certificate)(
|
int(CEF_CALLBACK* on_select_client_certificate)(
|
||||||
struct _cef_request_handler_t* self,
|
struct _cef_request_handler_t* self,
|
||||||
@@ -229,24 +215,16 @@ typedef struct _cef_request_handler_t {
|
|||||||
struct _cef_select_client_certificate_callback_t* callback);
|
struct _cef_select_client_certificate_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the browser process UI thread when a plugin has crashed.
|
/// Called on the browser process UI thread when the render view associated
|
||||||
// |plugin_path| is the path of the plugin that crashed.
|
/// with |browser| is ready to receive/handle IPC messages in the render
|
||||||
///
|
/// process.
|
||||||
void(CEF_CALLBACK* on_plugin_crashed)(struct _cef_request_handler_t* self,
|
|
||||||
struct _cef_browser_t* browser,
|
|
||||||
const cef_string_t* plugin_path);
|
|
||||||
|
|
||||||
///
|
|
||||||
// Called on the browser process UI thread when the render view associated
|
|
||||||
// with |browser| is ready to receive/handle IPC messages in the render
|
|
||||||
// process.
|
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_render_view_ready)(struct _cef_request_handler_t* self,
|
void(CEF_CALLBACK* on_render_view_ready)(struct _cef_request_handler_t* self,
|
||||||
struct _cef_browser_t* browser);
|
struct _cef_browser_t* browser);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the browser process UI thread when the render process terminates
|
/// 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.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_render_process_terminated)(
|
void(CEF_CALLBACK* on_render_process_terminated)(
|
||||||
struct _cef_request_handler_t* self,
|
struct _cef_request_handler_t* self,
|
||||||
@@ -254,8 +232,8 @@ typedef struct _cef_request_handler_t {
|
|||||||
cef_termination_status_t status);
|
cef_termination_status_t status);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called on the browser process UI thread when the window.document object of
|
/// Called on the browser process UI thread when the window.document object of
|
||||||
// the main frame has been created.
|
/// the main frame has been created.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_document_available_in_main_frame)(
|
void(CEF_CALLBACK* on_document_available_in_main_frame)(
|
||||||
struct _cef_request_handler_t* self,
|
struct _cef_request_handler_t* self,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=ffe0de3b50e0a612bd1b055b873c265b030e721d$
|
// $hash=e8e8dd2730a47aad9414f7bfc2e6ad96aba2c875$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_BUNDLE_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_BUNDLE_CAPI_H_
|
||||||
@@ -48,22 +48,22 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used for retrieving resources from the resource bundle (*.pak)
|
/// Structure used for retrieving resources from the resource bundle (*.pak)
|
||||||
// files loaded by CEF during startup or via the cef_resource_bundle_handler_t
|
/// files loaded by CEF during startup or via the cef_resource_bundle_handler_t
|
||||||
// returned from cef_app_t::GetResourceBundleHandler. See CefSettings for
|
/// returned from cef_app_t::GetResourceBundleHandler. See CefSettings for
|
||||||
// additional options related to resource bundle loading. The functions of this
|
/// additional options related to resource bundle loading. The functions of this
|
||||||
// structure may be called on any thread unless otherwise indicated.
|
/// structure may be called on any thread unless otherwise indicated.
|
||||||
///
|
///
|
||||||
typedef struct _cef_resource_bundle_t {
|
typedef struct _cef_resource_bundle_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the localized string for the specified |string_id| or an NULL
|
/// Returns the localized string for the specified |string_id| or an NULL
|
||||||
// string if the value is not found. Include cef_pack_strings.h for a listing
|
/// string if the value is not found. Include cef_pack_strings.h for a listing
|
||||||
// of valid string ID values.
|
/// of valid string ID values.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_localized_string)(
|
cef_string_userfree_t(CEF_CALLBACK* get_localized_string)(
|
||||||
@@ -71,20 +71,20 @@ typedef struct _cef_resource_bundle_t {
|
|||||||
int string_id);
|
int string_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns a cef_binary_value_t containing the decompressed contents of the
|
/// Returns a cef_binary_value_t containing the decompressed contents of the
|
||||||
// specified scale independent |resource_id| or NULL if not found. Include
|
/// specified scale independent |resource_id| or NULL if not found. Include
|
||||||
// cef_pack_resources.h for a listing of valid resource ID values.
|
/// cef_pack_resources.h for a listing of valid resource ID values.
|
||||||
///
|
///
|
||||||
struct _cef_binary_value_t*(CEF_CALLBACK* get_data_resource)(
|
struct _cef_binary_value_t*(CEF_CALLBACK* get_data_resource)(
|
||||||
struct _cef_resource_bundle_t* self,
|
struct _cef_resource_bundle_t* self,
|
||||||
int resource_id);
|
int resource_id);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns a cef_binary_value_t containing the decompressed contents of the
|
/// Returns a cef_binary_value_t containing the decompressed contents of the
|
||||||
// specified |resource_id| nearest the scale factor |scale_factor| or NULL if
|
/// specified |resource_id| nearest the scale factor |scale_factor| or NULL if
|
||||||
// not found. Use a |scale_factor| value of SCALE_FACTOR_NONE for scale
|
/// not found. Use a |scale_factor| value of SCALE_FACTOR_NONE for scale
|
||||||
// independent resources or call GetDataResource instead.Include
|
/// independent resources or call GetDataResource instead.Include
|
||||||
// cef_pack_resources.h for a listing of valid resource ID values.
|
/// cef_pack_resources.h for a listing of valid resource ID values.
|
||||||
///
|
///
|
||||||
struct _cef_binary_value_t*(CEF_CALLBACK* get_data_resource_for_scale)(
|
struct _cef_binary_value_t*(CEF_CALLBACK* get_data_resource_for_scale)(
|
||||||
struct _cef_resource_bundle_t* self,
|
struct _cef_resource_bundle_t* self,
|
||||||
@@ -93,9 +93,9 @@ typedef struct _cef_resource_bundle_t {
|
|||||||
} cef_resource_bundle_t;
|
} cef_resource_bundle_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the global resource bundle instance.
|
/// Returns the global resource bundle instance.
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_resource_bundle_t* cef_resource_bundle_get_global();
|
CEF_EXPORT cef_resource_bundle_t* cef_resource_bundle_get_global(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=b9723e0dfe6d03c24665eac2264396743a5254df$
|
// $hash=00023b2ec108ae6e4bd282d16e82032cdc99d548$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_BUNDLE_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_BUNDLE_HANDLER_CAPI_H_
|
||||||
@@ -47,21 +47,21 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used to implement a custom resource bundle structure. See
|
/// Structure used to implement a custom resource bundle structure. See
|
||||||
// CefSettings for additional options related to resource bundle loading. The
|
/// CefSettings for additional options related to resource bundle loading. The
|
||||||
// functions of this structure may be called on multiple threads.
|
/// functions of this structure may be called on multiple threads.
|
||||||
///
|
///
|
||||||
typedef struct _cef_resource_bundle_handler_t {
|
typedef struct _cef_resource_bundle_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called to retrieve a localized translation for the specified |string_id|.
|
/// Called to retrieve a localized translation for the specified |string_id|.
|
||||||
// To provide the translation set |string| to the translation string and
|
/// To provide the translation set |string| to the translation string and
|
||||||
// return true (1). To use the default translation return false (0). Include
|
/// return true (1). To use the default translation return false (0). Include
|
||||||
// cef_pack_strings.h for a listing of valid string ID values.
|
/// cef_pack_strings.h for a listing of valid string ID values.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_localized_string)(
|
int(CEF_CALLBACK* get_localized_string)(
|
||||||
struct _cef_resource_bundle_handler_t* self,
|
struct _cef_resource_bundle_handler_t* self,
|
||||||
@@ -69,12 +69,12 @@ typedef struct _cef_resource_bundle_handler_t {
|
|||||||
cef_string_t* string);
|
cef_string_t* string);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called to retrieve data for the specified scale independent |resource_id|.
|
/// Called to retrieve data for the specified scale independent |resource_id|.
|
||||||
// To provide the resource data set |data| and |data_size| to the data pointer
|
/// To provide the resource data set |data| and |data_size| to the data
|
||||||
// and size respectively and return true (1). To use the default resource data
|
/// pointer and size respectively and return true (1). To use the default
|
||||||
// return false (0). The resource data will not be copied and must remain
|
/// resource data return false (0). The resource data will not be copied and
|
||||||
// resident in memory. Include cef_pack_resources.h for a listing of valid
|
/// must remain resident in memory. Include cef_pack_resources.h for a listing
|
||||||
// resource ID values.
|
/// of valid resource ID values.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_data_resource)(
|
int(CEF_CALLBACK* get_data_resource)(
|
||||||
struct _cef_resource_bundle_handler_t* self,
|
struct _cef_resource_bundle_handler_t* self,
|
||||||
@@ -83,12 +83,12 @@ typedef struct _cef_resource_bundle_handler_t {
|
|||||||
size_t* data_size);
|
size_t* data_size);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Called to retrieve data for the specified |resource_id| nearest the scale
|
/// Called to retrieve data for the specified |resource_id| nearest the scale
|
||||||
// factor |scale_factor|. To provide the resource data set |data| and
|
/// factor |scale_factor|. To provide the resource data set |data| and
|
||||||
// |data_size| to the data pointer and size respectively and return true (1).
|
/// |data_size| to the data pointer and size respectively and return true (1).
|
||||||
// To use the default resource data return false (0). The resource data will
|
/// To use the default resource data return false (0). The resource data will
|
||||||
// not be copied and must remain resident in memory. Include
|
/// not be copied and must remain resident in memory. Include
|
||||||
// cef_pack_resources.h for a listing of valid resource ID values.
|
/// cef_pack_resources.h for a listing of valid resource ID values.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* get_data_resource_for_scale)(
|
int(CEF_CALLBACK* get_data_resource_for_scale)(
|
||||||
struct _cef_resource_bundle_handler_t* self,
|
struct _cef_resource_bundle_handler_t* self,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2021 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=a9598f4e94a864e749b425aa62bc519589f5753e$
|
// $hash=93e5c4f5e93f56b63b5944208300669dcecba972$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_HANDLER_CAPI_H_
|
||||||
@@ -52,63 +52,64 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback for asynchronous continuation of cef_resource_handler_t::skip().
|
/// Callback for asynchronous continuation of cef_resource_handler_t::skip().
|
||||||
///
|
///
|
||||||
typedef struct _cef_resource_skip_callback_t {
|
typedef struct _cef_resource_skip_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback for asynchronous continuation of skip(). If |bytes_skipped| > 0
|
/// Callback for asynchronous continuation of skip(). If |bytes_skipped| > 0
|
||||||
// then either skip() will be called again until the requested number of bytes
|
/// then either skip() will be called again until the requested number of
|
||||||
// have been skipped or the request will proceed. If |bytes_skipped| <= 0 the
|
/// bytes have been skipped or the request will proceed. If |bytes_skipped| <=
|
||||||
// request will fail with ERR_REQUEST_RANGE_NOT_SATISFIABLE.
|
/// 0 the request will fail with ERR_REQUEST_RANGE_NOT_SATISFIABLE.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cont)(struct _cef_resource_skip_callback_t* self,
|
void(CEF_CALLBACK* cont)(struct _cef_resource_skip_callback_t* self,
|
||||||
int64 bytes_skipped);
|
int64 bytes_skipped);
|
||||||
} cef_resource_skip_callback_t;
|
} cef_resource_skip_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback for asynchronous continuation of cef_resource_handler_t::read().
|
/// Callback for asynchronous continuation of cef_resource_handler_t::read().
|
||||||
///
|
///
|
||||||
typedef struct _cef_resource_read_callback_t {
|
typedef struct _cef_resource_read_callback_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Callback for asynchronous continuation of read(). If |bytes_read| == 0 the
|
/// Callback for asynchronous continuation of read(). If |bytes_read| == 0 the
|
||||||
// response will be considered complete. If |bytes_read| > 0 then read() will
|
/// response will be considered complete. If |bytes_read| > 0 then read() will
|
||||||
// be called again until the request is complete (based on either the result
|
/// be called again until the request is complete (based on either the result
|
||||||
// or the expected content length). If |bytes_read| < 0 then the request will
|
/// or the expected content length). If |bytes_read| < 0 then the request will
|
||||||
// fail and the |bytes_read| value will be treated as the error code.
|
/// fail and the |bytes_read| value will be treated as the error code.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cont)(struct _cef_resource_read_callback_t* self,
|
void(CEF_CALLBACK* cont)(struct _cef_resource_read_callback_t* self,
|
||||||
int bytes_read);
|
int bytes_read);
|
||||||
} cef_resource_read_callback_t;
|
} cef_resource_read_callback_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Structure used to implement a custom request handler structure. The functions
|
/// Structure used to implement a custom request handler structure. The
|
||||||
// of this structure will be called on the IO thread unless otherwise indicated.
|
/// functions of this structure will be called on the IO thread unless otherwise
|
||||||
|
/// indicated.
|
||||||
///
|
///
|
||||||
typedef struct _cef_resource_handler_t {
|
typedef struct _cef_resource_handler_t {
|
||||||
///
|
///
|
||||||
// Base structure.
|
/// Base structure.
|
||||||
///
|
///
|
||||||
cef_base_ref_counted_t base;
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Open the response stream. To handle the request immediately set
|
/// Open the response stream. To handle the request immediately set
|
||||||
// |handle_request| to true (1) and return true (1). To decide at a later time
|
/// |handle_request| to true (1) and return true (1). To decide at a later
|
||||||
// set |handle_request| to false (0), return true (1), and execute |callback|
|
/// time set |handle_request| to false (0), return true (1), and execute
|
||||||
// to continue or cancel the request. To cancel the request immediately set
|
/// |callback| to continue or cancel the request. To cancel the request
|
||||||
// |handle_request| to true (1) and return false (0). This function will be
|
/// immediately set |handle_request| to true (1) and return false (0). This
|
||||||
// called in sequence but not from a dedicated thread. For backwards
|
/// function will be called in sequence but not from a dedicated thread. For
|
||||||
// compatibility set |handle_request| to false (0) and return false (0) and
|
/// backwards compatibility set |handle_request| to false (0) and return false
|
||||||
// the ProcessRequest function will be called.
|
/// (0) and the ProcessRequest function will be called.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* open)(struct _cef_resource_handler_t* self,
|
int(CEF_CALLBACK* open)(struct _cef_resource_handler_t* self,
|
||||||
struct _cef_request_t* request,
|
struct _cef_request_t* request,
|
||||||
@@ -116,32 +117,32 @@ typedef struct _cef_resource_handler_t {
|
|||||||
struct _cef_callback_t* callback);
|
struct _cef_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Begin processing the request. To handle the request return true (1) and
|
/// Begin processing the request. To handle the request return true (1) and
|
||||||
// call cef_callback_t::cont() once the response header information is
|
/// call cef_callback_t::cont() once the response header information is
|
||||||
// available (cef_callback_t::cont() can also be called from inside this
|
/// available (cef_callback_t::cont() can also be called from inside this
|
||||||
// function if header information is available immediately). To cancel the
|
/// function if header information is available immediately). To cancel the
|
||||||
// request return false (0).
|
/// request return false (0).
|
||||||
//
|
///
|
||||||
// WARNING: This function is deprecated. Use Open instead.
|
/// WARNING: This function is deprecated. Use Open instead.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* process_request)(struct _cef_resource_handler_t* self,
|
int(CEF_CALLBACK* process_request)(struct _cef_resource_handler_t* self,
|
||||||
struct _cef_request_t* request,
|
struct _cef_request_t* request,
|
||||||
struct _cef_callback_t* callback);
|
struct _cef_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Retrieve response header information. If the response length is not known
|
/// Retrieve response header information. If the response length is not known
|
||||||
// set |response_length| to -1 and read_response() will be called until it
|
/// set |response_length| to -1 and read_response() will be called until it
|
||||||
// returns false (0). If the response length is known set |response_length| to
|
/// returns false (0). If the response length is known set |response_length|
|
||||||
// a positive value and read_response() will be called until it returns false
|
/// to a positive value and read_response() will be called until it returns
|
||||||
// (0) or the specified number of bytes have been read. Use the |response|
|
/// false (0) or the specified number of bytes have been read. Use the
|
||||||
// object to set the mime type, http status code and other optional header
|
/// |response| object to set the mime type, http status code and other
|
||||||
// values. To redirect the request to a new URL set |redirectUrl| to the new
|
/// optional header values. To redirect the request to a new URL set
|
||||||
// URL. |redirectUrl| can be either a relative or fully qualified URL. It is
|
/// |redirectUrl| to the new URL. |redirectUrl| can be either a relative or
|
||||||
// also possible to set |response| to a redirect http status code and pass the
|
/// fully qualified URL. It is also possible to set |response| to a redirect
|
||||||
// new URL via a Location header. Likewise with |redirectUrl| it is valid to
|
/// http status code and pass the new URL via a Location header. Likewise with
|
||||||
// set a relative or fully qualified URL as the Location header value. If an
|
/// |redirectUrl| it is valid to set a relative or fully qualified URL as the
|
||||||
// error occured while setting up the request you can call set_error() on
|
/// Location header value. If an error occured while setting up the request
|
||||||
// |response| to indicate the error condition.
|
/// you can call set_error() on |response| to indicate the error condition.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* get_response_headers)(struct _cef_resource_handler_t* self,
|
void(CEF_CALLBACK* get_response_headers)(struct _cef_resource_handler_t* self,
|
||||||
struct _cef_response_t* response,
|
struct _cef_response_t* response,
|
||||||
@@ -149,13 +150,13 @@ typedef struct _cef_resource_handler_t {
|
|||||||
cef_string_t* redirectUrl);
|
cef_string_t* redirectUrl);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Skip response data when requested by a Range header. Skip over and discard
|
/// Skip response data when requested by a Range header. Skip over and discard
|
||||||
// |bytes_to_skip| bytes of response data. If data is available immediately
|
/// |bytes_to_skip| bytes of response data. If data is available immediately
|
||||||
// set |bytes_skipped| to the number of bytes skipped and return true (1). To
|
/// set |bytes_skipped| to the number of bytes skipped and return true (1). To
|
||||||
// read the data at a later time set |bytes_skipped| to 0, return true (1) and
|
/// read the data at a later time set |bytes_skipped| to 0, return true (1)
|
||||||
// execute |callback| when the data is available. To indicate failure set
|
/// and execute |callback| when the data is available. To indicate failure set
|
||||||
// |bytes_skipped| to < 0 (e.g. -2 for ERR_FAILED) and return false (0). This
|
/// |bytes_skipped| to < 0 (e.g. -2 for ERR_FAILED) and return false (0). This
|
||||||
// function will be called in sequence but not from a dedicated thread.
|
/// function will be called in sequence but not from a dedicated thread.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* skip)(struct _cef_resource_handler_t* self,
|
int(CEF_CALLBACK* skip)(struct _cef_resource_handler_t* self,
|
||||||
int64 bytes_to_skip,
|
int64 bytes_to_skip,
|
||||||
@@ -163,17 +164,17 @@ typedef struct _cef_resource_handler_t {
|
|||||||
struct _cef_resource_skip_callback_t* callback);
|
struct _cef_resource_skip_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Read response data. If data is available immediately copy up to
|
/// Read response data. If data is available immediately copy up to
|
||||||
// |bytes_to_read| bytes into |data_out|, set |bytes_read| to the number of
|
/// |bytes_to_read| bytes into |data_out|, set |bytes_read| to the number of
|
||||||
// bytes copied, and return true (1). To read the data at a later time keep a
|
/// bytes copied, and return true (1). To read the data at a later time keep a
|
||||||
// pointer to |data_out|, set |bytes_read| to 0, return true (1) and execute
|
/// pointer to |data_out|, set |bytes_read| to 0, return true (1) and execute
|
||||||
// |callback| when the data is available (|data_out| will remain valid until
|
/// |callback| when the data is available (|data_out| will remain valid until
|
||||||
// the callback is executed). To indicate response completion set |bytes_read|
|
/// the callback is executed). To indicate response completion set
|
||||||
// to 0 and return false (0). To indicate failure set |bytes_read| to < 0
|
/// |bytes_read| to 0 and return false (0). To indicate failure set
|
||||||
// (e.g. -2 for ERR_FAILED) and return false (0). This function will be called
|
/// |bytes_read| to < 0 (e.g. -2 for ERR_FAILED) and return false (0). This
|
||||||
// in sequence but not from a dedicated thread. For backwards compatibility
|
/// function will be called in sequence but not from a dedicated thread. For
|
||||||
// set |bytes_read| to -1 and return false (0) and the ReadResponse function
|
/// backwards compatibility set |bytes_read| to -1 and return false (0) and
|
||||||
// will be called.
|
/// the ReadResponse function will be called.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* read)(struct _cef_resource_handler_t* self,
|
int(CEF_CALLBACK* read)(struct _cef_resource_handler_t* self,
|
||||||
void* data_out,
|
void* data_out,
|
||||||
@@ -182,13 +183,13 @@ typedef struct _cef_resource_handler_t {
|
|||||||
struct _cef_resource_read_callback_t* callback);
|
struct _cef_resource_read_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Read response data. If data is available immediately copy up to
|
/// Read response data. If data is available immediately copy up to
|
||||||
// |bytes_to_read| bytes into |data_out|, set |bytes_read| to the number of
|
/// |bytes_to_read| bytes into |data_out|, set |bytes_read| to the number of
|
||||||
// bytes copied, and return true (1). To read the data at a later time set
|
/// bytes copied, and return true (1). To read the data at a later time set
|
||||||
// |bytes_read| to 0, return true (1) and call cef_callback_t::cont() when the
|
/// |bytes_read| to 0, return true (1) and call cef_callback_t::cont() when
|
||||||
// data is available. To indicate response completion return false (0).
|
/// the data is available. To indicate response completion return false (0).
|
||||||
//
|
///
|
||||||
// WARNING: This function is deprecated. Use Skip and Read instead.
|
/// WARNING: This function is deprecated. Use Skip and Read instead.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* read_response)(struct _cef_resource_handler_t* self,
|
int(CEF_CALLBACK* read_response)(struct _cef_resource_handler_t* self,
|
||||||
void* data_out,
|
void* data_out,
|
||||||
@@ -197,7 +198,7 @@ typedef struct _cef_resource_handler_t {
|
|||||||
struct _cef_callback_t* callback);
|
struct _cef_callback_t* callback);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Request processing has been canceled.
|
/// Request processing has been canceled.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* cancel)(struct _cef_resource_handler_t* self);
|
void(CEF_CALLBACK* cancel)(struct _cef_resource_handler_t* self);
|
||||||
} cef_resource_handler_t;
|
} cef_resource_handler_t;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user