mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Compare commits
243 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
a29e9a3611 | ||
|
481a82af37 | ||
|
03f933676a | ||
|
8bb770500e | ||
|
fc87911e98 | ||
|
a717e440aa | ||
|
8856df480e | ||
|
ca81ee15f8 | ||
|
315d248d53 | ||
|
dd613a387b | ||
|
68f4b0c134 | ||
|
bbf40c7646 | ||
|
04acc3ebc4 | ||
|
9a70877443 | ||
|
be119b4c9a | ||
|
cc1b6ac609 | ||
|
4578ec8d19 | ||
|
4dd4abc3c2 | ||
|
c3aa36323b | ||
|
a1ba0c9166 | ||
|
e618f44667 | ||
|
9e296bde3c | ||
|
015e3621a3 | ||
|
cae194f493 | ||
|
4fbd247231 | ||
|
e94a261bf5 | ||
|
9022d40e6a | ||
|
38d8acfa18 | ||
|
7ca9e9c54b | ||
|
64c561f0bd | ||
|
f2c0c3f8fb | ||
|
5f9bd3ecbd | ||
|
8796d3cd95 | ||
|
cc56720bd2 | ||
|
88faf1023a | ||
|
42f517ec69 | ||
|
4791109a28 | ||
|
19391d8ab0 | ||
|
59a779c38a | ||
|
b579b37db4 | ||
|
4aad5f23a0 | ||
|
e6047bd54b | ||
|
24c2f2fa38 | ||
|
6b1e5335bc | ||
|
2e94bfafea | ||
|
b09cd1a197 | ||
|
d63e5bbd8a | ||
|
6337aa6fad | ||
|
08ebbb395a | ||
|
87c8a72831 | ||
|
11f37bc6eb | ||
|
a5d88d697a | ||
|
f89c0d74dd | ||
|
9e60357fc8 | ||
|
75e0f9f60e | ||
|
9717d3e1da | ||
|
b822ea43b9 | ||
|
ac99621829 | ||
|
99d66db930 | ||
|
c27fceb7de | ||
|
845322b5fb | ||
|
ef7e98c616 | ||
|
a3919cb0ec | ||
|
034bd641de | ||
|
ca1c00f95d | ||
|
0add3eaacb | ||
|
574d4dcedc | ||
|
82d6bcbbea | ||
|
e87fedd27c | ||
|
fab2af8876 | ||
|
e8573173dd | ||
|
13e3c8b42a | ||
|
280c9127c1 | ||
|
6573df6cc3 | ||
|
03c9156c80 | ||
|
02cdf05848 | ||
|
e9bf3cdb98 | ||
|
6cb9f0c695 | ||
|
6152d68b6a | ||
|
88b88251e7 | ||
|
48fc0bd220 | ||
|
619f18fea0 | ||
|
7b518511df | ||
|
5c1118230d | ||
|
0dfefe391c | ||
|
b3a8da9b25 | ||
|
84f3ff2afd | ||
|
f5587b74f0 | ||
|
1174994211 | ||
|
049caf9131 | ||
|
39aed35644 | ||
|
a9aef28966 | ||
|
790d248111 | ||
|
640cd0f411 | ||
|
cfe8e320be | ||
|
5780bf40d4 | ||
|
31d3e88d32 | ||
|
7ecaa8afdd | ||
|
8c996d2efd | ||
|
d8b4281c06 | ||
|
c82eb3e80f | ||
|
14571658a2 | ||
|
aa4473e2c6 | ||
|
9deef4189c | ||
|
25d81e0f1d | ||
|
70590a759d | ||
|
8d01442d75 | ||
|
d65483ae16 | ||
|
7c6e53ddfb | ||
|
ff0c36b465 | ||
|
dafce45e49 | ||
|
be6af15754 | ||
|
cbc0625272 | ||
|
fd1f465fa7 | ||
|
8ed39e4ae5 | ||
|
3adb801ca8 | ||
|
ccf7b28723 | ||
|
e876217e24 | ||
|
ec0c57d0e1 | ||
|
87a7c4f94b | ||
|
27257d0288 | ||
|
245bc9bfab | ||
|
fa519f5108 | ||
|
30d83cb94a | ||
|
f5c79bf50c | ||
|
ea1324a9f1 | ||
|
261a8899fc | ||
|
a5de549456 | ||
|
bdaa857c49 | ||
|
1c14900093 | ||
|
01f385a6f7 | ||
|
cf6b57d659 | ||
|
f742ab4994 | ||
|
cfac1c347c | ||
|
047e8f9349 | ||
|
3d87a68561 | ||
|
66433c1869 | ||
|
869ae21c9f | ||
|
03fd5b15da | ||
|
fecd582035 | ||
|
180e9bd362 | ||
|
2fbb6ba1e9 | ||
|
51e12b3866 | ||
|
a6f9d78c1c | ||
|
8cf82c24dc | ||
|
438382c5df | ||
|
1ab44722e8 | ||
|
4291776473 | ||
|
06a5ef3cd8 | ||
|
9d9ee8b45f | ||
|
a22b670a00 | ||
|
8c6cc302d0 | ||
|
afcee77abe | ||
|
294eb75355 | ||
|
e472228f29 | ||
|
fb925e7aa5 | ||
|
a141082b91 | ||
|
71768ea6c3 | ||
|
ed39922f85 | ||
|
1da3f71357 | ||
|
c3d4f24720 | ||
|
9df4a54308 | ||
|
492c6c6843 | ||
|
a12c2ab3e1 | ||
|
f2f6ae4f29 | ||
|
679850a267 | ||
|
c90b65a72c | ||
|
d02d252690 | ||
|
b785d34d29 | ||
|
f5eef5390a | ||
|
97d559982e | ||
|
7a701546e1 | ||
|
ea63799c3e | ||
|
c05c3e4065 | ||
|
c629c5bb59 | ||
|
53b98a5022 | ||
|
f0347f0589 | ||
|
06a5a5bb36 | ||
|
08f6cbb675 | ||
|
1a406d079b | ||
|
3afa29d499 | ||
|
b98f142e0e | ||
|
894ac21532 | ||
|
e1132672ee | ||
|
15226b9332 | ||
|
1b85022c58 | ||
|
dbc479e490 | ||
|
5792cea985 | ||
|
16e8710a81 | ||
|
503ec7c2e6 | ||
|
11ee7e984c | ||
|
8d0ae1f894 | ||
|
95daea76fc | ||
|
8ca0b4580e | ||
|
80fc651d7e | ||
|
0f944cdc55 | ||
|
7653e9e04c | ||
|
7c866328e0 | ||
|
0d4879763a | ||
|
440dbfb6df | ||
|
875b202cbb | ||
|
beb005138a | ||
|
a94dc6a058 | ||
|
1c88c74f86 | ||
|
dfcfb51bef | ||
|
49786ccc34 | ||
|
c4284b2938 | ||
|
a90c9f9c3e | ||
|
bb006b46e6 | ||
|
f9706f260a | ||
|
319de22d89 | ||
|
115f760821 | ||
|
b9fc93955c | ||
|
f2756b5318 | ||
|
3a8778e2f8 | ||
|
58e17b3cdc | ||
|
cc6f285abd | ||
|
04c9bcd802 | ||
|
c8d0813669 | ||
|
9b9a9f359e | ||
|
b51a4de540 | ||
|
65f97a60ad | ||
|
4f07cba011 | ||
|
aad4bf2464 | ||
|
329facfbdf | ||
|
a4b6ef577e | ||
|
01e75761d3 | ||
|
737ff18498 | ||
|
d28efe8797 | ||
|
b560f04046 | ||
|
066762217f | ||
|
1a661a2d15 | ||
|
aefe9a4195 | ||
|
1d515adc22 | ||
|
9cdda243a1 | ||
|
22746985f2 | ||
|
76368bda60 | ||
|
88ecf49549 | ||
|
e7b66aa43a | ||
|
152141d7f4 | ||
|
466f5e23db | ||
|
eea1f6be63 | ||
|
5da1649653 |
@@ -1,6 +1,8 @@
|
||||
# This file is an addendum to the Chromium AUTHORS file.
|
||||
# Names should be added to this file like so:
|
||||
# Name or Organization <email address>
|
||||
# This file is an addendum to the Chromium AUTHORS file. It lists authors
|
||||
# through March 16, 2015 when Git was introduced for source code management.
|
||||
# A list of additional authors added after that date can be found by executing
|
||||
# this command on a local Git checkout:
|
||||
# git log --all --format="%aN <%aE>" | sort -u
|
||||
|
||||
Marshall Greenblatt <magreenblatt@gmail.com>
|
||||
Jamie Kirkpatrick <jkp@spotify.com>
|
||||
|
426
BUILD.gn
426
BUILD.gn
@@ -106,6 +106,7 @@ import("//media/media_options.gni")
|
||||
import("//mojo/public/tools/bindings/mojom.gni")
|
||||
import("//ppapi/buildflags/buildflags.gni")
|
||||
import("//printing/buildflags/buildflags.gni")
|
||||
import("//testing/test.gni")
|
||||
import("//third_party/icu/config.gni")
|
||||
import("//third_party/widevine/cdm/widevine.gni")
|
||||
import("//tools/grit/repack.gni")
|
||||
@@ -121,8 +122,8 @@ if (is_linux) {
|
||||
import("//third_party/fontconfig/fontconfig.gni")
|
||||
}
|
||||
if (is_mac) {
|
||||
import("//build/apple/tweak_info_plist.gni")
|
||||
import("//build/config/mac/rules.gni")
|
||||
import("//build/mac/tweak_info_plist.gni")
|
||||
import("//build/util/version.gni")
|
||||
import("//media/cdm/library_cdm/cdm_paths.gni")
|
||||
import("//build/config/mac/base_rules.gni")
|
||||
@@ -253,7 +254,6 @@ if (is_linux) {
|
||||
# Set ENABLE_PRINTING=1 ENABLE_BASIC_PRINTING=1.
|
||||
assert(enable_basic_printing)
|
||||
assert(enable_print_preview)
|
||||
assert(!enable_service_discovery)
|
||||
|
||||
# Enable support for Widevine CDM.
|
||||
assert(enable_widevine)
|
||||
@@ -263,12 +263,6 @@ if (is_clang) {
|
||||
assert(!clang_use_chrome_plugins)
|
||||
}
|
||||
|
||||
if (is_linux) {
|
||||
# Use system fontconfig. This avoids a startup hang on Ubuntu 16.04.4 (see
|
||||
# issue #2424).
|
||||
assert(!use_bundled_fontconfig)
|
||||
}
|
||||
|
||||
if (is_mac) {
|
||||
# Always generate dSYM files. The make_distrib script will fail if
|
||||
# enable_dsyms=true is not explicitly set when is_official_build=false.
|
||||
@@ -303,6 +297,10 @@ gypi_paths2 = exec_script("//cef/tools/gypi_to_gn.py",
|
||||
"scope",
|
||||
[ "cef_paths2.gypi" ])
|
||||
|
||||
includes_common = gypi_paths2.includes_common + gypi_paths2.includes_common_capi
|
||||
includes_mac = gypi_paths2.includes_mac + gypi_paths2.includes_mac_capi
|
||||
includes_linux = gypi_paths2.includes_linux + gypi_paths2.includes_linux_capi
|
||||
includes_win = gypi_paths2.includes_win + gypi_paths2.includes_win_capi
|
||||
|
||||
#
|
||||
# Targets that will be built when depending on "//cef".
|
||||
@@ -313,6 +311,7 @@ group("cef") {
|
||||
deps = [
|
||||
":cefsimple",
|
||||
":ceftests",
|
||||
":libcef_static_unittests",
|
||||
]
|
||||
|
||||
if (!is_linux || use_x11) {
|
||||
@@ -370,21 +369,75 @@ if (is_win) {
|
||||
}
|
||||
}
|
||||
|
||||
# libcef_static source files that have unit tests.
|
||||
source_set("libcef_static_unittested") {
|
||||
sources = [
|
||||
"libcef/browser/devtools/devtools_util.cc",
|
||||
"libcef/browser/devtools/devtools_util.h",
|
||||
]
|
||||
|
||||
deps = [
|
||||
"//base",
|
||||
]
|
||||
|
||||
configs += [
|
||||
"libcef/features:config",
|
||||
"//build/config:precompiled_headers",
|
||||
]
|
||||
}
|
||||
|
||||
# Executable target for libcef_static unit tests.
|
||||
test("libcef_static_unittests") {
|
||||
sources = [
|
||||
"libcef/browser/devtools/devtools_util_unittest.cc",
|
||||
]
|
||||
|
||||
deps = [
|
||||
":libcef_static_unittested",
|
||||
"//base/test:run_all_unittests",
|
||||
"//testing/gtest",
|
||||
]
|
||||
|
||||
configs += [
|
||||
"libcef/features:config",
|
||||
"//build/config:precompiled_headers",
|
||||
]
|
||||
}
|
||||
|
||||
static_library("libcef_static") {
|
||||
sources = gypi_paths2.includes_common +
|
||||
sources = includes_common +
|
||||
gypi_paths.autogen_cpp_includes + [
|
||||
"libcef/browser/alloy/alloy_browser_context.cc",
|
||||
"libcef/browser/alloy/alloy_browser_context.h",
|
||||
"libcef/browser/alloy/alloy_browser_host_impl.cc",
|
||||
"libcef/browser/alloy/alloy_browser_host_impl.h",
|
||||
"libcef/browser/alloy/alloy_browser_main.cc",
|
||||
"libcef/browser/alloy/alloy_browser_main.h",
|
||||
"libcef/browser/alloy/browser_platform_delegate_alloy.cc",
|
||||
"libcef/browser/alloy/browser_platform_delegate_alloy.h",
|
||||
"libcef/browser/alloy/chrome_browser_process_alloy.cc",
|
||||
"libcef/browser/alloy/chrome_browser_process_alloy.h",
|
||||
"libcef/browser/alloy/chrome_profile_manager_alloy.cc",
|
||||
"libcef/browser/alloy/chrome_profile_manager_alloy.h",
|
||||
"libcef/browser/alloy/chrome_profile_alloy.cc",
|
||||
"libcef/browser/alloy/chrome_profile_alloy.h",
|
||||
"libcef/browser/alloy/alloy_content_browser_client.cc",
|
||||
"libcef/browser/alloy/alloy_content_browser_client.h",
|
||||
"libcef/browser/audio_capturer.cc",
|
||||
"libcef/browser/audio_capturer.h",
|
||||
"libcef/browser/browser_contents_delegate.cc",
|
||||
"libcef/browser/browser_contents_delegate.h",
|
||||
"libcef/browser/browser_context.cc",
|
||||
"libcef/browser/browser_context.h",
|
||||
"libcef/browser/browser_context_keyed_service_factories.cc",
|
||||
"libcef/browser/browser_context_keyed_service_factories.h",
|
||||
"libcef/browser/browser_host_impl.cc",
|
||||
"libcef/browser/browser_host_impl.h",
|
||||
"libcef/browser/browser_host_base.cc",
|
||||
"libcef/browser/browser_host_base.h",
|
||||
"libcef/browser/browser_host_create.cc",
|
||||
"libcef/browser/browser_info.cc",
|
||||
"libcef/browser/browser_info.h",
|
||||
"libcef/browser/browser_info_manager.cc",
|
||||
"libcef/browser/browser_info_manager.h",
|
||||
"libcef/browser/browser_main.cc",
|
||||
"libcef/browser/browser_main.h",
|
||||
"libcef/browser/browser_message_filter.cc",
|
||||
"libcef/browser/browser_message_filter.h",
|
||||
"libcef/browser/browser_message_loop.cc",
|
||||
@@ -394,23 +447,32 @@ static_library("libcef_static") {
|
||||
"libcef/browser/browser_platform_delegate_create.cc",
|
||||
"libcef/browser/browser_util.cc",
|
||||
"libcef/browser/browser_util.h",
|
||||
"libcef/browser/chrome_browser_process_stub.cc",
|
||||
"libcef/browser/chrome_browser_process_stub.h",
|
||||
"libcef/browser/chrome/browser_delegate.h",
|
||||
"libcef/browser/chrome/browser_platform_delegate_chrome.cc",
|
||||
"libcef/browser/chrome/browser_platform_delegate_chrome.h",
|
||||
"libcef/browser/chrome/chrome_browser_context.cc",
|
||||
"libcef/browser/chrome/chrome_browser_context.h",
|
||||
"libcef/browser/chrome/chrome_browser_delegate.cc",
|
||||
"libcef/browser/chrome/chrome_browser_delegate.h",
|
||||
"libcef/browser/chrome/chrome_browser_host_impl.cc",
|
||||
"libcef/browser/chrome/chrome_browser_host_impl.h",
|
||||
"libcef/browser/chrome/chrome_browser_main_extra_parts_cef.cc",
|
||||
"libcef/browser/chrome/chrome_browser_main_extra_parts_cef.h",
|
||||
"libcef/browser/chrome/chrome_content_browser_client_cef.cc",
|
||||
"libcef/browser/chrome/chrome_content_browser_client_cef.h",
|
||||
"libcef/browser/chrome_crash_reporter_client_stub.cc",
|
||||
"libcef/browser/chrome_profile_manager_stub.cc",
|
||||
"libcef/browser/chrome_profile_manager_stub.h",
|
||||
"libcef/browser/chrome_profile_stub.cc",
|
||||
"libcef/browser/chrome_profile_stub.h",
|
||||
"libcef/browser/content_browser_client.cc",
|
||||
"libcef/browser/content_browser_client.h",
|
||||
"libcef/browser/context.cc",
|
||||
"libcef/browser/context.h",
|
||||
"libcef/browser/context_menu_params_impl.cc",
|
||||
"libcef/browser/context_menu_params_impl.h",
|
||||
"libcef/browser/devtools/devtools_controller.cc",
|
||||
"libcef/browser/devtools/devtools_controller.h",
|
||||
"libcef/browser/devtools/devtools_file_manager.cc",
|
||||
"libcef/browser/devtools/devtools_file_manager.h",
|
||||
"libcef/browser/devtools/devtools_frontend.cc",
|
||||
"libcef/browser/devtools/devtools_frontend.h",
|
||||
"libcef/browser/devtools/devtools_manager.cc",
|
||||
"libcef/browser/devtools/devtools_manager.h",
|
||||
"libcef/browser/devtools/devtools_manager_delegate.cc",
|
||||
"libcef/browser/devtools/devtools_manager_delegate.h",
|
||||
"libcef/browser/download_item_impl.cc",
|
||||
@@ -468,11 +530,25 @@ static_library("libcef_static") {
|
||||
"libcef/browser/frame_host_impl.h",
|
||||
"libcef/browser/image_impl.cc",
|
||||
"libcef/browser/image_impl.h",
|
||||
"libcef/browser/iothread_state.cc",
|
||||
"libcef/browser/iothread_state.h",
|
||||
"libcef/browser/javascript_dialog_runner.h",
|
||||
"libcef/browser/javascript_dialog_manager.cc",
|
||||
"libcef/browser/javascript_dialog_manager.h",
|
||||
"libcef/browser/main_runner.cc",
|
||||
"libcef/browser/main_runner.h",
|
||||
"libcef/browser/media_capture_devices_dispatcher.cc",
|
||||
"libcef/browser/media_capture_devices_dispatcher.h",
|
||||
"libcef/browser/media_router/media_route_impl.cc",
|
||||
"libcef/browser/media_router/media_route_impl.h",
|
||||
"libcef/browser/media_router/media_router_impl.cc",
|
||||
"libcef/browser/media_router/media_router_impl.h",
|
||||
"libcef/browser/media_router/media_router_manager.cc",
|
||||
"libcef/browser/media_router/media_router_manager.h",
|
||||
"libcef/browser/media_router/media_sink_impl.cc",
|
||||
"libcef/browser/media_router/media_sink_impl.h",
|
||||
"libcef/browser/media_router/media_source_impl.cc",
|
||||
"libcef/browser/media_router/media_source_impl.h",
|
||||
"libcef/browser/menu_manager.cc",
|
||||
"libcef/browser/menu_manager.h",
|
||||
"libcef/browser/menu_model_impl.cc",
|
||||
@@ -480,6 +556,8 @@ static_library("libcef_static") {
|
||||
"libcef/browser/menu_runner.h",
|
||||
"libcef/browser/native/browser_platform_delegate_native.cc",
|
||||
"libcef/browser/native/browser_platform_delegate_native.h",
|
||||
"libcef/browser/native/cursor_util.h",
|
||||
"libcef/browser/native/cursor_util.cc",
|
||||
"libcef/browser/navigate_params.cc",
|
||||
"libcef/browser/navigate_params.h",
|
||||
"libcef/browser/navigation_entry_impl.cc",
|
||||
@@ -493,6 +571,8 @@ static_library("libcef_static") {
|
||||
"libcef/browser/net/internal_scheme_handler.h",
|
||||
"libcef/browser/net/scheme_handler.cc",
|
||||
"libcef/browser/net/scheme_handler.h",
|
||||
"libcef/browser/net/throttle_handler.cc",
|
||||
"libcef/browser/net/throttle_handler.h",
|
||||
"libcef/browser/net_service/browser_urlrequest_impl.cc",
|
||||
"libcef/browser/net_service/browser_urlrequest_impl.h",
|
||||
"libcef/browser/net_service/cookie_helper.cc",
|
||||
@@ -551,8 +631,6 @@ static_library("libcef_static") {
|
||||
"libcef/browser/printing/print_view_manager.cc",
|
||||
"libcef/browser/printing/print_view_manager.h",
|
||||
"libcef/browser/process_util_impl.cc",
|
||||
"libcef/browser/resource_context.cc",
|
||||
"libcef/browser/resource_context.h",
|
||||
"libcef/browser/request_context_handler_map.cc",
|
||||
"libcef/browser/request_context_handler_map.h",
|
||||
"libcef/browser/request_context_impl.cc",
|
||||
@@ -586,6 +664,14 @@ static_library("libcef_static") {
|
||||
"libcef/browser/xml_reader_impl.h",
|
||||
"libcef/browser/zip_reader_impl.cc",
|
||||
"libcef/browser/zip_reader_impl.h",
|
||||
"libcef/common/alloy/alloy_content_client.cc",
|
||||
"libcef/common/alloy/alloy_content_client.h",
|
||||
"libcef/common/alloy/alloy_main_delegate.cc",
|
||||
"libcef/common/alloy/alloy_main_delegate.h",
|
||||
"libcef/common/alloy/alloy_main_runner_delegate.cc",
|
||||
"libcef/common/alloy/alloy_main_runner_delegate.h",
|
||||
"libcef/common/app_manager.cc",
|
||||
"libcef/common/app_manager.h",
|
||||
"libcef/common/base_impl.cc",
|
||||
"libcef/common/cef_message_generator.cc",
|
||||
"libcef/common/cef_message_generator.h",
|
||||
@@ -593,10 +679,14 @@ static_library("libcef_static") {
|
||||
"libcef/common/cef_messages.h",
|
||||
"libcef/common/cef_switches.cc",
|
||||
"libcef/common/cef_switches.h",
|
||||
"libcef/common/chrome/chrome_content_client_cef.cc",
|
||||
"libcef/common/chrome/chrome_content_client_cef.h",
|
||||
"libcef/common/chrome/chrome_main_delegate_cef.cc",
|
||||
"libcef/common/chrome/chrome_main_delegate_cef.h",
|
||||
"libcef/common/chrome/chrome_main_runner_delegate.cc",
|
||||
"libcef/common/chrome/chrome_main_runner_delegate.h",
|
||||
"libcef/common/command_line_impl.cc",
|
||||
"libcef/common/command_line_impl.h",
|
||||
"libcef/common/content_client.cc",
|
||||
"libcef/common/content_client.h",
|
||||
"libcef/common/crash_reporter_client.cc",
|
||||
"libcef/common/crash_reporter_client.h",
|
||||
"libcef/common/crash_reporting.cc",
|
||||
@@ -615,8 +705,8 @@ static_library("libcef_static") {
|
||||
"libcef/common/frame_util.cc",
|
||||
"libcef/common/frame_util.h",
|
||||
"libcef/common/json_impl.cc",
|
||||
"libcef/common/main_delegate.cc",
|
||||
"libcef/common/main_delegate.h",
|
||||
"libcef/common/main_runner_delegate.h",
|
||||
"libcef/common/main_runner_handler.h",
|
||||
"libcef/common/net/http_header_utils.cc",
|
||||
"libcef/common/net/http_header_utils.h",
|
||||
"libcef/common/net/net_resource_provider.cc",
|
||||
@@ -638,6 +728,8 @@ static_library("libcef_static") {
|
||||
"libcef/common/resource_bundle_delegate.h",
|
||||
"libcef/common/resource_bundle_impl.cc",
|
||||
"libcef/common/resource_bundle_impl.h",
|
||||
"libcef/common/resource_util.cc",
|
||||
"libcef/common/resource_util.h",
|
||||
"libcef/common/response_impl.cc",
|
||||
"libcef/common/response_impl.h",
|
||||
"libcef/common/response_manager.cc",
|
||||
@@ -651,6 +743,8 @@ static_library("libcef_static") {
|
||||
"libcef/common/task_impl.cc",
|
||||
"libcef/common/task_runner_impl.cc",
|
||||
"libcef/common/task_runner_impl.h",
|
||||
"libcef/common/task_runner_manager.cc",
|
||||
"libcef/common/task_runner_manager.h",
|
||||
"libcef/common/test/translator_test_impl.cc",
|
||||
"libcef/common/thread_impl.cc",
|
||||
"libcef/common/thread_impl.h",
|
||||
@@ -667,10 +761,22 @@ static_library("libcef_static") {
|
||||
"libcef/common/waitable_event_impl.h",
|
||||
"libcef/common/widevine_loader.cc",
|
||||
"libcef/common/widevine_loader.h",
|
||||
"libcef/features/runtime.h",
|
||||
"libcef/features/runtime_checks.h",
|
||||
"libcef/renderer/alloy/alloy_content_renderer_client.cc",
|
||||
"libcef/renderer/alloy/alloy_content_renderer_client.h",
|
||||
"libcef/renderer/alloy/alloy_render_frame_observer.cc",
|
||||
"libcef/renderer/alloy/alloy_render_frame_observer.h",
|
||||
"libcef/renderer/alloy/alloy_render_thread_observer.cc",
|
||||
"libcef/renderer/alloy/alloy_render_thread_observer.h",
|
||||
"libcef/renderer/alloy/url_loader_throttle_provider_impl.cc",
|
||||
"libcef/renderer/alloy/url_loader_throttle_provider_impl.h",
|
||||
"libcef/renderer/browser_impl.cc",
|
||||
"libcef/renderer/browser_impl.h",
|
||||
"libcef/renderer/content_renderer_client.cc",
|
||||
"libcef/renderer/content_renderer_client.h",
|
||||
"libcef/renderer/browser_manager.cc",
|
||||
"libcef/renderer/browser_manager.h",
|
||||
"libcef/renderer/chrome/chrome_content_renderer_client_cef.cc",
|
||||
"libcef/renderer/chrome/chrome_content_renderer_client_cef.h",
|
||||
"libcef/renderer/dom_document_impl.cc",
|
||||
"libcef/renderer/dom_document_impl.h",
|
||||
"libcef/renderer/dom_node_impl.cc",
|
||||
@@ -687,28 +793,17 @@ static_library("libcef_static") {
|
||||
"libcef/renderer/render_frame_observer.h",
|
||||
"libcef/renderer/render_frame_util.cc",
|
||||
"libcef/renderer/render_frame_util.h",
|
||||
"libcef/renderer/render_message_filter.cc",
|
||||
"libcef/renderer/render_message_filter.h",
|
||||
"libcef/renderer/render_thread_observer.cc",
|
||||
"libcef/renderer/render_thread_observer.h",
|
||||
"libcef/renderer/render_urlrequest_impl.cc",
|
||||
"libcef/renderer/render_urlrequest_impl.h",
|
||||
"libcef/renderer/thread_util.h",
|
||||
"libcef/renderer/url_loader_throttle_provider_impl.cc",
|
||||
"libcef/renderer/url_loader_throttle_provider_impl.h",
|
||||
"libcef/renderer/v8_impl.cc",
|
||||
"libcef/renderer/v8_impl.h",
|
||||
|
||||
"//chrome/browser/local_discovery/service_discovery_device_lister.cc",
|
||||
"//chrome/browser/local_discovery/service_discovery_device_lister.h",
|
||||
"//chrome/browser/local_discovery/service_discovery_client_impl.cc",
|
||||
"//chrome/browser/local_discovery/service_discovery_client_impl.h",
|
||||
"//chrome/browser/local_discovery/service_discovery_client.cc",
|
||||
"//chrome/browser/local_discovery/service_discovery_client.h",
|
||||
"//chrome/browser/local_discovery/service_discovery_client_mdns.cc",
|
||||
"//chrome/browser/local_discovery/service_discovery_client_mdns.h",
|
||||
"//chrome/browser/local_discovery/service_discovery_shared_client.cc",
|
||||
"//chrome/browser/local_discovery/service_discovery_shared_client.h",
|
||||
# For Chrome runtime support.
|
||||
"//chrome/app/chrome_main_delegate.cc",
|
||||
"//chrome/app/chrome_main_delegate.h",
|
||||
]
|
||||
|
||||
configs += [
|
||||
@@ -735,7 +830,8 @@ static_library("libcef_static") {
|
||||
|
||||
deps = [
|
||||
":cef_make_headers",
|
||||
":cef_service_manifests",
|
||||
|
||||
":libcef_static_unittested",
|
||||
|
||||
# Generate API bindings for extensions.
|
||||
# TODO(cef): Enable if/when CEF exposes its own Mojo APIs. See
|
||||
@@ -749,12 +845,13 @@ static_library("libcef_static") {
|
||||
"//base:base_static",
|
||||
"//base/third_party/dynamic_annotations",
|
||||
"//cc",
|
||||
"//chrome/browser",
|
||||
"//chrome/child",
|
||||
"//chrome/common",
|
||||
"//chrome/renderer",
|
||||
"//chrome:browser_dependencies",
|
||||
"//chrome:child_dependencies",
|
||||
"//chrome:packed_resources",
|
||||
"//chrome:resources",
|
||||
"//chrome:strings",
|
||||
"//chrome/common:buildflags",
|
||||
"//chrome/services/printing:lib",
|
||||
"//chrome/utility",
|
||||
"//components/cdm/renderer",
|
||||
"//components/certificate_transparency",
|
||||
"//components/content_settings/core/browser",
|
||||
@@ -764,8 +861,9 @@ static_library("libcef_static") {
|
||||
"//components/google/core/common",
|
||||
"//components/keyed_service/content:content",
|
||||
"//components/keyed_service/core:core",
|
||||
"//components/media_router/common/mojom:media_router",
|
||||
"//components/navigation_interception",
|
||||
"//components/network_session_configurator/browser",
|
||||
"//components/network_session_configurator/common",
|
||||
"//components/pdf/browser",
|
||||
"//components/pdf/renderer",
|
||||
"//components/plugins/renderer",
|
||||
@@ -774,10 +872,9 @@ static_library("libcef_static") {
|
||||
"//components/printing/common",
|
||||
"//components/printing/renderer",
|
||||
"//components/proxy_config",
|
||||
"//components/safe_browsing/db:test_database_manager",
|
||||
"//components/services/pdf_compositor/public/cpp",
|
||||
"//components/services/pdf_compositor/public/mojom",
|
||||
"//components/tracing",
|
||||
"//components/safe_browsing/core/db:test_database_manager",
|
||||
"//components/services/print_compositor/public/cpp",
|
||||
"//components/services/print_compositor/public/mojom",
|
||||
"//components/update_client",
|
||||
"//components/url_formatter",
|
||||
"//components/user_prefs",
|
||||
@@ -787,7 +884,7 @@ static_library("libcef_static") {
|
||||
"//components/visitedlink/renderer",
|
||||
"//components/viz/service",
|
||||
"//components/web_cache/renderer",
|
||||
"//content/public/app:both",
|
||||
"//content/public/app",
|
||||
"//content/public/browser",
|
||||
"//content/public/child",
|
||||
"//content/public/common",
|
||||
@@ -807,13 +904,11 @@ static_library("libcef_static") {
|
||||
"//media",
|
||||
"//media/blink",
|
||||
"//net",
|
||||
"//net:net_with_v8",
|
||||
"//pdf",
|
||||
"//ppapi/buildflags",
|
||||
"//printing/buildflags",
|
||||
"//services/network:network_service",
|
||||
"//services/network/public/cpp",
|
||||
"//services/service_manager/embedder",
|
||||
"//services/service_manager/public/cpp",
|
||||
"//skia",
|
||||
"//storage/browser",
|
||||
@@ -822,7 +917,7 @@ static_library("libcef_static") {
|
||||
"//third_party/cld_3/src/src:cld_3",
|
||||
"//third_party/hunspell",
|
||||
"//third_party/leveldatabase",
|
||||
"//third_party/libxml",
|
||||
"//third_party/libxml:libxml",
|
||||
"//third_party/widevine/cdm:headers",
|
||||
"//third_party/widevine/cdm",
|
||||
"//third_party/icu",
|
||||
@@ -841,10 +936,11 @@ static_library("libcef_static") {
|
||||
]
|
||||
|
||||
if (is_win) {
|
||||
sources += gypi_paths2.includes_win + [
|
||||
"libcef/browser/browser_main_win.cc",
|
||||
sources += includes_win + [
|
||||
"libcef/browser/alloy/alloy_browser_main_win.cc",
|
||||
"libcef/browser/native/browser_platform_delegate_native_win.cc",
|
||||
"libcef/browser/native/browser_platform_delegate_native_win.h",
|
||||
"libcef/browser/native/cursor_util_win.cc",
|
||||
"libcef/browser/native/file_dialog_runner_win.cc",
|
||||
"libcef/browser/native/file_dialog_runner_win.h",
|
||||
"libcef/browser/native/javascript_dialog_runner_win.cc",
|
||||
@@ -858,7 +954,6 @@ static_library("libcef_static") {
|
||||
"libcef/browser/native/native_menu_win.h",
|
||||
"libcef/browser/osr/browser_platform_delegate_osr_win.cc",
|
||||
"libcef/browser/osr/browser_platform_delegate_osr_win.h",
|
||||
"libcef/browser/osr/render_widget_host_view_osr_win.cc",
|
||||
|
||||
# Part of //chrome/utility.
|
||||
"//chrome/utility/printing_handler.cc",
|
||||
@@ -886,14 +981,14 @@ static_library("libcef_static") {
|
||||
}
|
||||
|
||||
if (is_linux) {
|
||||
sources += gypi_paths2.includes_linux + [
|
||||
sources += includes_linux + [
|
||||
"libcef/browser/native/browser_platform_delegate_native_linux.cc",
|
||||
"libcef/browser/native/browser_platform_delegate_native_linux.h",
|
||||
"libcef/browser/native/cursor_util_linux.cc",
|
||||
"libcef/browser/native/menu_runner_linux.cc",
|
||||
"libcef/browser/native/menu_runner_linux.h",
|
||||
"libcef/browser/osr/browser_platform_delegate_osr_linux.cc",
|
||||
"libcef/browser/osr/browser_platform_delegate_osr_linux.h",
|
||||
"libcef/browser/osr/render_widget_host_view_osr_linux.cc",
|
||||
"libcef/browser/printing/print_dialog_linux.cc",
|
||||
"libcef/browser/printing/print_dialog_linux.h",
|
||||
]
|
||||
@@ -918,7 +1013,7 @@ static_library("libcef_static") {
|
||||
}
|
||||
|
||||
if (is_mac) {
|
||||
sources += gypi_paths2.includes_mac + [
|
||||
sources += includes_mac + [
|
||||
"libcef/browser/native/browser_platform_delegate_native_mac.h",
|
||||
"libcef/browser/native/browser_platform_delegate_native_mac.mm",
|
||||
"libcef/browser/native/file_dialog_runner_mac.h",
|
||||
@@ -931,6 +1026,10 @@ static_library("libcef_static") {
|
||||
"libcef/browser/osr/browser_platform_delegate_osr_mac.mm",
|
||||
"libcef/common/util_mac.h",
|
||||
"libcef/common/util_mac.mm",
|
||||
|
||||
# For Chrome runtime support.
|
||||
"//chrome/app/chrome_main_mac.h",
|
||||
"//chrome/app/chrome_main_mac.mm",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -949,7 +1048,7 @@ static_library("libcef_static") {
|
||||
]
|
||||
|
||||
deps += [
|
||||
"//components/crash/content/app",
|
||||
"//components/crash/core/app",
|
||||
"//components/crash/content/browser",
|
||||
]
|
||||
}
|
||||
@@ -1081,16 +1180,14 @@ static_library("libcef_static") {
|
||||
"//ui/aura/test/aura_test_utils.cc",
|
||||
"//ui/aura/test/aura_test_utils.h",
|
||||
# Part of //ui/events:test_support which is testingonly.
|
||||
"//ui/events/test/platform_event_waiter.cc",
|
||||
"//ui/events/test/platform_event_waiter.h",
|
||||
"//ui/events/test/x11_event_waiter.cc",
|
||||
"//ui/events/test/x11_event_waiter.h",
|
||||
]
|
||||
|
||||
if (use_x11) {
|
||||
sources += [
|
||||
# Support for UI input events.
|
||||
# Part of //ui/aura:test_support which is testingonly.
|
||||
"//ui/aura/test/ui_controls_factory_aurax11.cc",
|
||||
"//ui/aura/test/x11_event_sender.cc",
|
||||
"//ui/aura/test/x11_event_sender.h",
|
||||
# Part of //ui/views:test_support which is testingonly.
|
||||
"//ui/views/test/ui_controls_factory_desktop_aurax11.cc",
|
||||
@@ -1098,6 +1195,13 @@ static_library("libcef_static") {
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
if (is_win || is_linux) {
|
||||
sources += [
|
||||
"libcef/browser/native/browser_platform_delegate_native_aura.cc",
|
||||
"libcef/browser/native/browser_platform_delegate_native_aura.h",
|
||||
]
|
||||
}
|
||||
} else {
|
||||
sources += [
|
||||
# Provides stub implementations for the views static methods.
|
||||
@@ -1125,7 +1229,7 @@ config("libcef_dll_wrapper_config") {
|
||||
|
||||
# libcef_dll_wrapper target.
|
||||
static_library("libcef_dll_wrapper") {
|
||||
sources = gypi_paths2.includes_common +
|
||||
sources = includes_common +
|
||||
gypi_paths.autogen_cpp_includes +
|
||||
gypi_paths2.includes_capi +
|
||||
gypi_paths.autogen_capi_includes +
|
||||
@@ -1154,7 +1258,7 @@ if (is_win) {
|
||||
sources = [ "libcef_dll/sandbox/sandbox_win.cc" ]
|
||||
# CEF sources use include paths relative to the CEF root directory.
|
||||
include_dirs = [ "." ]
|
||||
deps = [ "//sandbox" ]
|
||||
deps = [ "libcef/features", "//sandbox" ]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1163,61 +1267,13 @@ if (is_mac) {
|
||||
sources = [ "libcef_dll/sandbox/sandbox_mac.mm" ]
|
||||
# CEF sources use include paths relative to the CEF root directory.
|
||||
include_dirs = [ "." ]
|
||||
deps = [ "//sandbox/mac:seatbelt" ]
|
||||
deps = [
|
||||
"//build/config:executable_deps",
|
||||
"//sandbox/mac:seatbelt"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Service manifests.
|
||||
#
|
||||
|
||||
source_set("cef_content_browser_overlay_manifest") {
|
||||
sources = [
|
||||
"libcef/common/service_manifests/cef_content_browser_overlay_manifest.cc",
|
||||
"libcef/common/service_manifests/cef_content_browser_overlay_manifest.h",
|
||||
]
|
||||
|
||||
configs += [
|
||||
"libcef/features:config"
|
||||
]
|
||||
|
||||
deps = [
|
||||
"//base",
|
||||
"//extensions/buildflags",
|
||||
"//extensions/common:mojom",
|
||||
"//extensions/common/api:mojom",
|
||||
"//services/service_manager/public/cpp",
|
||||
"//third_party/blink/public/common",
|
||||
]
|
||||
}
|
||||
|
||||
source_set("cef_content_renderer_overlay_manifest") {
|
||||
sources = [
|
||||
"libcef/common/service_manifests/cef_content_renderer_overlay_manifest.cc",
|
||||
"libcef/common/service_manifests/cef_content_renderer_overlay_manifest.h",
|
||||
]
|
||||
|
||||
configs += [
|
||||
"libcef/features:config"
|
||||
]
|
||||
|
||||
deps = [
|
||||
"//base",
|
||||
"//components/subresource_filter/content/mojom",
|
||||
"//extensions/buildflags",
|
||||
"//extensions/common:mojom",
|
||||
"//services/service_manager/public/cpp",
|
||||
"//third_party/blink/public/common",
|
||||
]
|
||||
}
|
||||
|
||||
source_set("cef_service_manifests") {
|
||||
public_deps = [
|
||||
":cef_content_browser_overlay_manifest",
|
||||
":cef_content_renderer_overlay_manifest",
|
||||
]
|
||||
}
|
||||
|
||||
#
|
||||
# Resource grit/pack targets.
|
||||
#
|
||||
@@ -1286,13 +1342,15 @@ repack("pak_devtools") {
|
||||
# Add associated .h files in the make_pack_header("resources") target.
|
||||
sources = [
|
||||
"$root_gen_dir/content/browser/devtools/devtools_resources.pak",
|
||||
"$root_gen_dir/third_party/blink/public/resources/inspector_overlay_resources.pak",
|
||||
]
|
||||
|
||||
# Use public_deps so that generated grit headers are discoverable from
|
||||
# the libcef_static target. Grit deps that generate .cc files must be
|
||||
# listed both here and in the libcef_static target.
|
||||
public_deps = [
|
||||
"//content/browser/devtools:resources",
|
||||
"//content/browser/devtools:devtools_resources",
|
||||
"//third_party/blink/public:devtools_inspector_resources",
|
||||
]
|
||||
|
||||
output = "$root_out_dir/devtools_resources.pak"
|
||||
@@ -1304,6 +1362,8 @@ repack("pak_extensions") {
|
||||
# Add associated .h files in the make_pack_header("resources") target.
|
||||
sources = [
|
||||
"$root_gen_dir/chrome/component_extension_resources.pak",
|
||||
"$root_gen_dir/content/browser/resources/media/media_internals_resources.pak",
|
||||
"$root_gen_dir/content/browser/webrtc/resources/webrtc_internals_resources.pak",
|
||||
"$root_gen_dir/extensions/extensions_renderer_resources.pak",
|
||||
"$root_gen_dir/extensions/extensions_resources.pak",
|
||||
"$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
|
||||
@@ -1315,6 +1375,8 @@ repack("pak_extensions") {
|
||||
# listed both here and in the libcef_static target.
|
||||
public_deps = [
|
||||
"//chrome/browser/resources:component_extension_resources",
|
||||
"//content/browser/resources/media:media_internals_resources",
|
||||
"//content/browser/webrtc/resources",
|
||||
"//extensions:extensions_renderer_resources",
|
||||
"//extensions:extensions_resources_grd",
|
||||
"//mojo/public/js:resources",
|
||||
@@ -1370,13 +1432,17 @@ repack("pak") {
|
||||
# Add associated .h files in the make_pack_header("resources") target.
|
||||
sources = [
|
||||
"$root_gen_dir/chrome/browser_resources.pak",
|
||||
"$root_gen_dir/chrome/dev_ui_browser_resources.pak",
|
||||
"$root_gen_dir/chrome/net_internals_resources.pak",
|
||||
"$root_gen_dir/chrome/print_preview_pdf_resources.pak",
|
||||
"$root_gen_dir/chrome/print_preview_resources.pak",
|
||||
"$root_gen_dir/chrome/common_resources.pak",
|
||||
"$root_gen_dir/components/components_resources.pak",
|
||||
"$root_gen_dir/components/dev_ui_components_resources.pak",
|
||||
"$root_gen_dir/cef/cef_resources.pak",
|
||||
"$root_gen_dir/content/browser/tracing/tracing_resources.pak",
|
||||
"$root_gen_dir/content/content_resources.pak",
|
||||
"$root_gen_dir/content/dev_ui_content_resources.pak",
|
||||
"$root_gen_dir/net/net_resources.pak",
|
||||
"$root_gen_dir/third_party/blink/public/resources/blink_resources.pak",
|
||||
]
|
||||
@@ -1385,14 +1451,18 @@ repack("pak") {
|
||||
# the libcef_static target. Grit deps that generate .cc files must be
|
||||
# listed both here and in the libcef_static target.
|
||||
public_deps = [
|
||||
"//chrome/browser:dev_ui_browser_resources",
|
||||
"//chrome/browser:resources",
|
||||
"//chrome/browser/resources:net_internals_resources",
|
||||
"//chrome/browser/resources/net_internals:net_internals_resources",
|
||||
"//chrome/browser/resources:print_preview_pdf_resources",
|
||||
"//chrome/browser/resources:print_preview_resources",
|
||||
"//chrome/common:resources",
|
||||
"//components/resources:components_resources",
|
||||
"//components/resources:dev_ui_components_resources",
|
||||
":cef_resources",
|
||||
"//content/browser/tracing:resources",
|
||||
"//content:resources",
|
||||
"//content:content_resources",
|
||||
"//content:dev_ui_content_resources",
|
||||
"//net:net_resources",
|
||||
"//third_party/blink/public:resources",
|
||||
]
|
||||
@@ -1435,12 +1505,17 @@ make_pack_header("resources") {
|
||||
"$root_gen_dir/chrome/grit/browser_resources.h",
|
||||
"$root_gen_dir/chrome/grit/common_resources.h",
|
||||
"$root_gen_dir/chrome/grit/component_extension_resources.h",
|
||||
"$root_gen_dir/chrome/grit/dev_ui_browser_resources.h",
|
||||
"$root_gen_dir/chrome/grit/net_internals_resources.h",
|
||||
"$root_gen_dir/chrome/grit/print_preview_pdf_resources.h",
|
||||
"$root_gen_dir/chrome/grit/print_preview_resources.h",
|
||||
"$root_gen_dir/chrome/grit/renderer_resources.h",
|
||||
"$root_gen_dir/components/grit/components_resources.h",
|
||||
"$root_gen_dir/components/grit/dev_ui_components_resources.h",
|
||||
"$root_gen_dir/content/browser/devtools/grit/devtools_resources.h",
|
||||
"$root_gen_dir/content/browser/tracing/grit/tracing_resources.h",
|
||||
"$root_gen_dir/content/grit/content_resources.h",
|
||||
"$root_gen_dir/content/grit/dev_ui_content_resources.h",
|
||||
"$root_gen_dir/extensions/grit/extensions_browser_resources.h",
|
||||
"$root_gen_dir/extensions/grit/extensions_renderer_resources.h",
|
||||
"$root_gen_dir/extensions/grit/extensions_resources.h",
|
||||
@@ -1461,19 +1536,38 @@ make_pack_header("strings") {
|
||||
"$root_gen_dir/chrome/grit/generated_resources.h",
|
||||
"$root_gen_dir/chrome/grit/locale_settings.h",
|
||||
"$root_gen_dir/chrome/grit/platform_locale_settings.h",
|
||||
"$root_gen_dir/components/strings/grit/components_chromium_strings.h",
|
||||
"$root_gen_dir/components/strings/grit/components_strings.h",
|
||||
"$root_gen_dir/content/app/strings/grit/content_strings.h",
|
||||
"$root_gen_dir/extensions/strings/grit/extensions_strings.h",
|
||||
"$root_gen_dir/services/strings/grit/services_strings.h",
|
||||
"$root_gen_dir/third_party/blink/public/strings/grit/blink_strings.h",
|
||||
"$root_gen_dir/ui/strings/grit/ui_strings.h",
|
||||
]
|
||||
}
|
||||
|
||||
# Generate cef_api_hash.h.
|
||||
action("make_api_hash_header") {
|
||||
script = "tools/make_api_hash_header.py"
|
||||
|
||||
# List of all C API files that will be checked for changes by cef_api_hash.py.
|
||||
inputs = gypi_paths2.includes_common_capi +
|
||||
gypi_paths2.includes_linux_capi +
|
||||
gypi_paths2.includes_mac_capi +
|
||||
gypi_paths2.includes_win_capi +
|
||||
gypi_paths2.includes_capi +
|
||||
gypi_paths.autogen_capi_includes
|
||||
include_dir = [ "include" ]
|
||||
outputs = [ "$root_out_dir/includes/include/cef_api_hash.h" ]
|
||||
|
||||
args = rebase_path(outputs + include_dir, root_build_dir)
|
||||
}
|
||||
|
||||
# Generate pack files and associated CEF header files.
|
||||
group("cef_make_headers") {
|
||||
deps = [
|
||||
":make_pack_header_resources",
|
||||
":make_pack_header_strings",
|
||||
":make_api_hash_header",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1537,12 +1631,11 @@ if (is_mac) {
|
||||
|
||||
if (v8_use_external_startup_data) {
|
||||
sources += [
|
||||
"$root_out_dir/natives_blob.bin",
|
||||
"$root_out_dir/snapshot_blob.bin",
|
||||
]
|
||||
public_deps += [ "//v8" ]
|
||||
if (use_v8_context_snapshot) {
|
||||
sources += [ "$root_out_dir/v8_context_snapshot.bin" ]
|
||||
sources += [ "$root_out_dir/$v8_context_snapshot_filename" ]
|
||||
public_deps += [ "//tools/v8_context_snapshot" ]
|
||||
}
|
||||
}
|
||||
@@ -1572,12 +1665,15 @@ if (is_mac) {
|
||||
sources = [
|
||||
"$root_out_dir/egl_intermediates/libswiftshader_libEGL.dylib",
|
||||
"$root_out_dir/egl_intermediates/libswiftshader_libGLESv2.dylib",
|
||||
"$root_out_dir/vk_intermediates/libvk_swiftshader.dylib",
|
||||
"$root_out_dir/vk_intermediates/vk_swiftshader_icd.json",
|
||||
]
|
||||
outputs = [
|
||||
"{{bundle_contents_dir}}/Libraries/{{source_file_part}}",
|
||||
]
|
||||
public_deps = [
|
||||
"//ui/gl:swiftshader_library_copy",
|
||||
"//ui/gl:swiftshader_egl_library_copy",
|
||||
"//ui/gl:swiftshader_vk_library_copy",
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1607,18 +1703,14 @@ if (is_mac) {
|
||||
"Resources",
|
||||
]
|
||||
|
||||
sources = gypi_paths2.includes_common +
|
||||
gypi_paths2.includes_mac +
|
||||
sources = includes_common +
|
||||
includes_mac +
|
||||
gypi_paths.autogen_cpp_includes +
|
||||
gypi_paths2.includes_capi +
|
||||
gypi_paths.autogen_capi_includes +
|
||||
gypi_paths2.libcef_sources_common +
|
||||
gypi_paths.autogen_library_side
|
||||
|
||||
# TODO(rsesek): Handle these missing pieces:
|
||||
# - crash_inspector
|
||||
# - crash_report_sender.app
|
||||
|
||||
deps = [
|
||||
":cef_framework_angle_library",
|
||||
":cef_framework_locales",
|
||||
@@ -1651,7 +1743,7 @@ if (is_mac) {
|
||||
}
|
||||
} else {
|
||||
shared_library("libcef") {
|
||||
sources = gypi_paths2.includes_common +
|
||||
sources = includes_common +
|
||||
gypi_paths.autogen_cpp_includes +
|
||||
gypi_paths2.includes_capi +
|
||||
gypi_paths.autogen_capi_includes +
|
||||
@@ -1663,15 +1755,10 @@ if (is_mac) {
|
||||
]
|
||||
|
||||
if (is_win) {
|
||||
sources += gypi_paths2.includes_win + [
|
||||
sources += includes_win + [
|
||||
"libcef_dll/libcef_dll.rc",
|
||||
]
|
||||
|
||||
# This is a large module that can't do incremental linking in some cases.
|
||||
configs -= [ "//build/config/win:default_incremental_linking" ]
|
||||
configs +=
|
||||
[ "//build/config/win:default_large_module_incremental_linking" ]
|
||||
|
||||
deps += [
|
||||
# Bring in ui_unscaled_resources.rc which contains custom cursors.
|
||||
# TODO(cef): Remove this once custom cursors can be loaded via
|
||||
@@ -1824,8 +1911,8 @@ if (is_mac) {
|
||||
deps += invoker.deps
|
||||
}
|
||||
|
||||
if (defined(invoker.libs)) {
|
||||
libs = invoker.libs
|
||||
if (defined(invoker.frameworks)) {
|
||||
frameworks = invoker.frameworks
|
||||
}
|
||||
|
||||
if (defined(invoker.defines)) {
|
||||
@@ -1879,8 +1966,8 @@ if (is_mac) {
|
||||
|
||||
cef_app("cefclient") {
|
||||
helper_info_plist = "tests/cefclient/resources/mac/helper-Info.plist"
|
||||
helper_sources = gypi_paths2.includes_mac +
|
||||
gypi_paths2.includes_common +
|
||||
helper_sources = includes_common +
|
||||
includes_mac +
|
||||
gypi_paths2.includes_wrapper +
|
||||
gypi_paths2.includes_wrapper_mac +
|
||||
gypi_paths2.shared_sources_common +
|
||||
@@ -1893,8 +1980,8 @@ if (is_mac) {
|
||||
]
|
||||
|
||||
info_plist = "tests/cefclient/resources/mac/Info.plist"
|
||||
sources = gypi_paths2.includes_mac +
|
||||
gypi_paths2.includes_common +
|
||||
sources = includes_common +
|
||||
includes_mac +
|
||||
gypi_paths2.includes_wrapper +
|
||||
gypi_paths2.includes_wrapper_mac +
|
||||
gypi_paths2.shared_sources_browser +
|
||||
@@ -1909,7 +1996,7 @@ if (is_mac) {
|
||||
":cefclient_resources_bundle_data_english",
|
||||
":cefclient_xibs",
|
||||
]
|
||||
libs = [
|
||||
frameworks = [
|
||||
"AppKit.framework",
|
||||
"OpenGL.framework",
|
||||
]
|
||||
@@ -1952,8 +2039,8 @@ if (is_mac) {
|
||||
|
||||
cef_app("cefsimple") {
|
||||
helper_info_plist = "tests/cefsimple/mac/helper-Info.plist"
|
||||
helper_sources = gypi_paths2.includes_mac +
|
||||
gypi_paths2.includes_common +
|
||||
helper_sources = includes_common +
|
||||
includes_mac +
|
||||
gypi_paths2.includes_wrapper +
|
||||
gypi_paths2.includes_wrapper_mac +
|
||||
gypi_paths2.cefsimple_sources_mac_helper
|
||||
@@ -1962,8 +2049,8 @@ if (is_mac) {
|
||||
]
|
||||
|
||||
info_plist = "tests/cefsimple/mac/Info.plist"
|
||||
sources = gypi_paths2.includes_mac +
|
||||
gypi_paths2.includes_common +
|
||||
sources = includes_common +
|
||||
includes_mac +
|
||||
gypi_paths2.includes_wrapper +
|
||||
gypi_paths2.includes_wrapper_mac +
|
||||
gypi_paths2.cefsimple_sources_common +
|
||||
@@ -1973,7 +2060,7 @@ if (is_mac) {
|
||||
":cefsimple_resources_bundle_data_english",
|
||||
":cefsimple_xibs",
|
||||
]
|
||||
libs = [
|
||||
frameworks = [
|
||||
"AppKit.framework",
|
||||
]
|
||||
defines = [
|
||||
@@ -2029,8 +2116,8 @@ if (is_mac) {
|
||||
]
|
||||
|
||||
info_plist = "tests/ceftests/resources/mac/Info.plist"
|
||||
sources = gypi_paths2.includes_mac +
|
||||
gypi_paths2.includes_common +
|
||||
sources = includes_common +
|
||||
includes_mac +
|
||||
gypi_paths2.includes_wrapper +
|
||||
gypi_paths2.includes_wrapper_mac +
|
||||
gypi_paths2.shared_sources_browser +
|
||||
@@ -2044,7 +2131,7 @@ if (is_mac) {
|
||||
":ceftests_xibs",
|
||||
"//testing/gtest",
|
||||
]
|
||||
libs = [
|
||||
frameworks = [
|
||||
"AppKit.framework",
|
||||
]
|
||||
defines = [
|
||||
@@ -2098,7 +2185,7 @@ if (is_mac) {
|
||||
}
|
||||
|
||||
executable("cefclient") {
|
||||
sources = gypi_paths2.includes_common +
|
||||
sources = includes_common +
|
||||
gypi_paths2.includes_wrapper +
|
||||
gypi_paths2.shared_sources_browser +
|
||||
gypi_paths2.shared_sources_common +
|
||||
@@ -2117,7 +2204,7 @@ if (is_mac) {
|
||||
]
|
||||
|
||||
if (is_win) {
|
||||
sources += gypi_paths2.includes_win +
|
||||
sources += includes_win +
|
||||
gypi_paths2.shared_sources_win +
|
||||
gypi_paths2.cefclient_sources_win
|
||||
|
||||
@@ -2137,17 +2224,22 @@ if (is_mac) {
|
||||
libs = [
|
||||
"comctl32.lib",
|
||||
"d3d11.lib",
|
||||
"glu32.lib",
|
||||
"imm32.lib",
|
||||
"oleacc.lib",
|
||||
"opengl32.lib",
|
||||
"rpcrt4.lib",
|
||||
"shlwapi.lib",
|
||||
]
|
||||
|
||||
if (target_cpu != "arm64") {
|
||||
libs += [
|
||||
"opengl32.lib",
|
||||
"glu32.lib"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
if (is_linux) {
|
||||
sources += gypi_paths2.includes_linux +
|
||||
sources += includes_linux +
|
||||
gypi_paths2.shared_sources_linux +
|
||||
gypi_paths2.cefclient_sources_linux
|
||||
|
||||
@@ -2186,7 +2278,7 @@ if (is_mac) {
|
||||
#
|
||||
|
||||
executable("cefsimple") {
|
||||
sources = gypi_paths2.includes_common +
|
||||
sources = includes_common +
|
||||
gypi_paths2.includes_wrapper +
|
||||
gypi_paths2.cefsimple_sources_common
|
||||
|
||||
@@ -2200,7 +2292,7 @@ if (is_mac) {
|
||||
]
|
||||
|
||||
if (is_win) {
|
||||
sources += gypi_paths2.includes_win +
|
||||
sources += includes_win +
|
||||
gypi_paths2.cefsimple_sources_win
|
||||
|
||||
# Set /SUBSYSTEM:WINDOWS.
|
||||
@@ -2220,7 +2312,7 @@ if (is_mac) {
|
||||
}
|
||||
|
||||
if (is_linux) {
|
||||
sources += gypi_paths2.includes_linux +
|
||||
sources += includes_linux +
|
||||
gypi_paths2.cefsimple_sources_linux
|
||||
|
||||
if (use_x11) {
|
||||
@@ -2251,7 +2343,7 @@ if (is_mac) {
|
||||
executable("ceftests") {
|
||||
testonly = true
|
||||
|
||||
sources = gypi_paths2.includes_common +
|
||||
sources = includes_common +
|
||||
gypi_paths2.includes_wrapper +
|
||||
gypi_paths2.shared_sources_browser +
|
||||
gypi_paths2.shared_sources_common +
|
||||
|
@@ -7,5 +7,6 @@
|
||||
# https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding
|
||||
|
||||
{
|
||||
'chromium_checkout': 'refs/tags/78.0.3904.108'
|
||||
'chromium_checkout': 'refs/tags/87.0.4280.141',
|
||||
'depot_tools_checkout': '39d870e1f0'
|
||||
}
|
||||
|
@@ -27,8 +27,6 @@
|
||||
# Files in the chromium/src directory that should be evaluated for changes.
|
||||
# Similar changes may need to be applied to the CEF source code.
|
||||
'files': [
|
||||
'chrome/app/chrome_*_manifest.*',
|
||||
'chrome/app/chrome_*_manifests.*',
|
||||
'chrome/browser/browser_process.h',
|
||||
'chrome/browser/extensions/api/tabs/tabs_api.*',
|
||||
'chrome/browser/extensions/chrome_component_extension_resource_manager.*',
|
||||
@@ -57,7 +55,10 @@
|
||||
'content/shell/renderer/shell_*',
|
||||
'content/shell/utility/shell_*',
|
||||
'extensions/shell/*',
|
||||
'net/base/features.cc',
|
||||
'net/cookies/cookie_store.h',
|
||||
'services/network/public/cpp/features.cc',
|
||||
'ui/base/ui_base_features.cc',
|
||||
],
|
||||
# Patterns that should not be found in the chromium/src directory after
|
||||
# applying patch files.
|
||||
|
@@ -12,8 +12,8 @@
|
||||
# distribution include:
|
||||
#
|
||||
# Linux: Ninja, Unix Makefiles
|
||||
# Mac OS X: Ninja, Xcode 5+
|
||||
# Windows: Ninja, Visual Studio 2010+
|
||||
# MacOS: Ninja, Xcode 8+ (x64) or Xcode 12.2+ (ARM64)
|
||||
# Windows: Ninja, Visual Studio 2015+
|
||||
#
|
||||
# Ninja is a cross-platform open-source tool for running fast builds using
|
||||
# pre-installed platform toolchains (GNU, clang, Xcode or MSVC). It can be
|
||||
@@ -40,21 +40,21 @@
|
||||
#
|
||||
# - Linux requirements:
|
||||
# Currently supported distributions include Debian Wheezy, Ubuntu Precise, and
|
||||
# related. Ubuntu 14.04 64-bit is recommended. Newer versions will likely also
|
||||
# related. Ubuntu 18.04 64-bit is recommended. Newer versions will likely also
|
||||
# work but may not have been tested.
|
||||
# Required packages include:
|
||||
# build-essential
|
||||
# libgtk2.0-dev (required by the cefclient target only)
|
||||
# libgtkglext1-dev (required by the cefclient target only)
|
||||
#
|
||||
# - Mac OS X requirements:
|
||||
# Xcode 5 or newer building on Mac OS X 10.9 (Mavericks) or newer. Xcode 8.3
|
||||
# and OS X 10.12 are recommended. The Xcode command-line tools must also be
|
||||
# installed. Only 64-bit builds are supported on OS X.
|
||||
# - MacOS requirements:
|
||||
# Xcode 8 or newer building on MacOS 10.10 (Yosemite) or newer. Xcode 11.2
|
||||
# and MacOS 10.14 are recommended. The Xcode command-line tools must also be
|
||||
# installed. Only 64-bit builds are supported.
|
||||
#
|
||||
# - Windows requirements:
|
||||
# Visual Studio 2010 or newer building on Windows 7 or newer. Visual Studio
|
||||
# 2015 Update 3 and Windows 10 64-bit are recommended.
|
||||
# Visual Studio 2015 Update 2 or newer building on Windows 7 or newer. Visual
|
||||
# Studio 2019 and Windows 10 64-bit are recommended.
|
||||
#
|
||||
# BUILD EXAMPLES
|
||||
#
|
||||
@@ -75,7 +75,7 @@
|
||||
# > cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug ..
|
||||
# > ninja cefclient cefsimple
|
||||
#
|
||||
# To perform a Mac OS X build using a 64-bit CEF binary distribution:
|
||||
# To perform a MacOS build using a 64-bit CEF binary distribution:
|
||||
# Using the Xcode IDE:
|
||||
# > cmake -G "Xcode" -DPROJECT_ARCH="x86_64" ..
|
||||
# Open build\cef.xcodeproj in Xcode and select Product > Build.
|
||||
@@ -84,25 +84,34 @@
|
||||
# > cmake -G "Ninja" -DPROJECT_ARCH="x86_64" -DCMAKE_BUILD_TYPE=Debug ..
|
||||
# > ninja cefclient cefsimple
|
||||
#
|
||||
# To perform a MacOS build using an ARM64 CEF binary distribution:
|
||||
# Using the Xcode IDE:
|
||||
# > cmake -G "Xcode" -DPROJECT_ARCH="arm64" ..
|
||||
# Open build\cef.xcodeproj in Xcode and select Product > Build.
|
||||
#
|
||||
# Using Ninja:
|
||||
# > cmake -G "Ninja" -DPROJECT_ARCH="arm64" -DCMAKE_BUILD_TYPE=Debug ..
|
||||
# > ninja cefclient cefsimple
|
||||
#
|
||||
# To perform a Windows build using a 32-bit CEF binary distribution:
|
||||
# Using the Visual Studio 2015 IDE:
|
||||
# > cmake -G "Visual Studio 14" ..
|
||||
# Using the Visual Studio 2019 IDE:
|
||||
# > cmake -G "Visual Studio 16" -A Win32 ..
|
||||
# Open build\cef.sln in Visual Studio and select Build > Build Solution.
|
||||
#
|
||||
# Using Ninja with Visual Studio 2015 command-line tools:
|
||||
# Using Ninja with Visual Studio 2019 command-line tools:
|
||||
# (this path may be different depending on your Visual Studio installation)
|
||||
# > "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat"
|
||||
# > "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars32.bat"
|
||||
# > cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug ..
|
||||
# > ninja cefclient cefsimple
|
||||
#
|
||||
# To perform a Windows build using a 64-bit CEF binary distribution:
|
||||
# Using the Visual Studio 2015 IDE:
|
||||
# > cmake -G "Visual Studio 14 Win64" ..
|
||||
# Using the Visual Studio 2019 IDE:
|
||||
# > cmake -G "Visual Studio 16" -A x64 ..
|
||||
# Open build\cef.sln in Visual Studio and select Build > Build Solution.
|
||||
#
|
||||
# Using Ninja with Visual Studio 2015 command-line tools:
|
||||
# Using Ninja with Visual Studio 2019 command-line tools:
|
||||
# (this path may be different depending on your Visual Studio installation)
|
||||
# > "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat"
|
||||
# > "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars64.bat"
|
||||
# > cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug ..
|
||||
# > ninja cefclient cefsimple
|
||||
|
||||
|
@@ -8,7 +8,7 @@
|
||||
# by hand. See the translator.README.txt file in the tools directory for
|
||||
# more information.
|
||||
#
|
||||
# $hash=98198bc4243deb46c848735f0d5499aa4891e535$
|
||||
# $hash=72268a78a76d7d91b8ad47f6b6e9f6d9cb04d9cf$
|
||||
#
|
||||
|
||||
{
|
||||
@@ -16,6 +16,7 @@
|
||||
'autogen_cpp_includes': [
|
||||
'include/cef_accessibility_handler.h',
|
||||
'include/cef_app.h',
|
||||
'include/cef_audio_handler.h',
|
||||
'include/cef_auth_callback.h',
|
||||
'include/cef_browser.h',
|
||||
'include/cef_browser_process_handler.h',
|
||||
@@ -25,6 +26,7 @@
|
||||
'include/cef_context_menu_handler.h',
|
||||
'include/cef_cookie.h',
|
||||
'include/cef_crash_util.h',
|
||||
'include/cef_devtools_message_observer.h',
|
||||
'include/cef_dialog_handler.h',
|
||||
'include/cef_display_handler.h',
|
||||
'include/cef_dom.h',
|
||||
@@ -43,6 +45,7 @@
|
||||
'include/cef_keyboard_handler.h',
|
||||
'include/cef_life_span_handler.h',
|
||||
'include/cef_load_handler.h',
|
||||
'include/cef_media_router.h',
|
||||
'include/cef_menu_model.h',
|
||||
'include/cef_menu_model_delegate.h',
|
||||
'include/cef_navigation_entry.h',
|
||||
@@ -53,6 +56,7 @@
|
||||
'include/cef_print_settings.h',
|
||||
'include/cef_process_message.h',
|
||||
'include/cef_process_util.h',
|
||||
'include/cef_registration.h',
|
||||
'include/cef_render_handler.h',
|
||||
'include/cef_render_process_handler.h',
|
||||
'include/cef_request.h',
|
||||
@@ -109,6 +113,7 @@
|
||||
'autogen_capi_includes': [
|
||||
'include/capi/cef_accessibility_handler_capi.h',
|
||||
'include/capi/cef_app_capi.h',
|
||||
'include/capi/cef_audio_handler_capi.h',
|
||||
'include/capi/cef_auth_callback_capi.h',
|
||||
'include/capi/cef_browser_capi.h',
|
||||
'include/capi/cef_browser_process_handler_capi.h',
|
||||
@@ -118,6 +123,7 @@
|
||||
'include/capi/cef_context_menu_handler_capi.h',
|
||||
'include/capi/cef_cookie_capi.h',
|
||||
'include/capi/cef_crash_util_capi.h',
|
||||
'include/capi/cef_devtools_message_observer_capi.h',
|
||||
'include/capi/cef_dialog_handler_capi.h',
|
||||
'include/capi/cef_display_handler_capi.h',
|
||||
'include/capi/cef_dom_capi.h',
|
||||
@@ -136,6 +142,7 @@
|
||||
'include/capi/cef_keyboard_handler_capi.h',
|
||||
'include/capi/cef_life_span_handler_capi.h',
|
||||
'include/capi/cef_load_handler_capi.h',
|
||||
'include/capi/cef_media_router_capi.h',
|
||||
'include/capi/cef_menu_model_capi.h',
|
||||
'include/capi/cef_menu_model_delegate_capi.h',
|
||||
'include/capi/cef_navigation_entry_capi.h',
|
||||
@@ -146,6 +153,7 @@
|
||||
'include/capi/cef_print_settings_capi.h',
|
||||
'include/capi/cef_process_message_capi.h',
|
||||
'include/capi/cef_process_util_capi.h',
|
||||
'include/capi/cef_registration_capi.h',
|
||||
'include/capi/cef_render_handler_capi.h',
|
||||
'include/capi/cef_render_process_handler_capi.h',
|
||||
'include/capi/cef_request_capi.h',
|
||||
@@ -204,6 +212,8 @@
|
||||
'libcef_dll/ctocpp/accessibility_handler_ctocpp.h',
|
||||
'libcef_dll/ctocpp/app_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/app_ctocpp.h',
|
||||
'libcef_dll/ctocpp/audio_handler_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/audio_handler_ctocpp.h',
|
||||
'libcef_dll/cpptoc/auth_callback_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/auth_callback_cpptoc.h',
|
||||
'libcef_dll/cpptoc/before_download_callback_cpptoc.cc',
|
||||
@@ -252,6 +262,8 @@
|
||||
'libcef_dll/ctocpp/domvisitor_ctocpp.h',
|
||||
'libcef_dll/ctocpp/delete_cookies_callback_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/delete_cookies_callback_ctocpp.h',
|
||||
'libcef_dll/ctocpp/dev_tools_message_observer_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/dev_tools_message_observer_ctocpp.h',
|
||||
'libcef_dll/ctocpp/dialog_handler_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/dialog_handler_ctocpp.h',
|
||||
'libcef_dll/cpptoc/dictionary_value_cpptoc.cc',
|
||||
@@ -308,6 +320,20 @@
|
||||
'libcef_dll/cpptoc/list_value_cpptoc.h',
|
||||
'libcef_dll/ctocpp/load_handler_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/load_handler_ctocpp.h',
|
||||
'libcef_dll/ctocpp/media_observer_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/media_observer_ctocpp.h',
|
||||
'libcef_dll/cpptoc/media_route_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/media_route_cpptoc.h',
|
||||
'libcef_dll/ctocpp/media_route_create_callback_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/media_route_create_callback_ctocpp.h',
|
||||
'libcef_dll/cpptoc/media_router_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/media_router_cpptoc.h',
|
||||
'libcef_dll/cpptoc/media_sink_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/media_sink_cpptoc.h',
|
||||
'libcef_dll/ctocpp/media_sink_device_info_callback_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/media_sink_device_info_callback_ctocpp.h',
|
||||
'libcef_dll/cpptoc/media_source_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/media_source_cpptoc.h',
|
||||
'libcef_dll/cpptoc/views/menu_button_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/views/menu_button_cpptoc.h',
|
||||
'libcef_dll/ctocpp/views/menu_button_delegate_ctocpp.cc',
|
||||
@@ -346,6 +372,8 @@
|
||||
'libcef_dll/ctocpp/read_handler_ctocpp.h',
|
||||
'libcef_dll/ctocpp/register_cdm_callback_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/register_cdm_callback_ctocpp.h',
|
||||
'libcef_dll/cpptoc/registration_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/registration_cpptoc.h',
|
||||
'libcef_dll/ctocpp/render_handler_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/render_handler_ctocpp.h',
|
||||
'libcef_dll/ctocpp/render_process_handler_ctocpp.cc',
|
||||
@@ -494,6 +522,8 @@
|
||||
'libcef_dll/cpptoc/accessibility_handler_cpptoc.h',
|
||||
'libcef_dll/cpptoc/app_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/app_cpptoc.h',
|
||||
'libcef_dll/cpptoc/audio_handler_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/audio_handler_cpptoc.h',
|
||||
'libcef_dll/ctocpp/auth_callback_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/auth_callback_ctocpp.h',
|
||||
'libcef_dll/ctocpp/before_download_callback_ctocpp.cc',
|
||||
@@ -542,6 +572,8 @@
|
||||
'libcef_dll/cpptoc/domvisitor_cpptoc.h',
|
||||
'libcef_dll/cpptoc/delete_cookies_callback_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/delete_cookies_callback_cpptoc.h',
|
||||
'libcef_dll/cpptoc/dev_tools_message_observer_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/dev_tools_message_observer_cpptoc.h',
|
||||
'libcef_dll/cpptoc/dialog_handler_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/dialog_handler_cpptoc.h',
|
||||
'libcef_dll/ctocpp/dictionary_value_ctocpp.cc',
|
||||
@@ -598,6 +630,20 @@
|
||||
'libcef_dll/ctocpp/list_value_ctocpp.h',
|
||||
'libcef_dll/cpptoc/load_handler_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/load_handler_cpptoc.h',
|
||||
'libcef_dll/cpptoc/media_observer_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/media_observer_cpptoc.h',
|
||||
'libcef_dll/ctocpp/media_route_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/media_route_ctocpp.h',
|
||||
'libcef_dll/cpptoc/media_route_create_callback_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/media_route_create_callback_cpptoc.h',
|
||||
'libcef_dll/ctocpp/media_router_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/media_router_ctocpp.h',
|
||||
'libcef_dll/ctocpp/media_sink_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/media_sink_ctocpp.h',
|
||||
'libcef_dll/cpptoc/media_sink_device_info_callback_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/media_sink_device_info_callback_cpptoc.h',
|
||||
'libcef_dll/ctocpp/media_source_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/media_source_ctocpp.h',
|
||||
'libcef_dll/ctocpp/views/menu_button_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/views/menu_button_ctocpp.h',
|
||||
'libcef_dll/cpptoc/views/menu_button_delegate_cpptoc.cc',
|
||||
@@ -636,6 +682,8 @@
|
||||
'libcef_dll/cpptoc/read_handler_cpptoc.h',
|
||||
'libcef_dll/cpptoc/register_cdm_callback_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/register_cdm_callback_cpptoc.h',
|
||||
'libcef_dll/ctocpp/registration_ctocpp.cc',
|
||||
'libcef_dll/ctocpp/registration_ctocpp.h',
|
||||
'libcef_dll/cpptoc/render_handler_cpptoc.cc',
|
||||
'libcef_dll/cpptoc/render_handler_cpptoc.h',
|
||||
'libcef_dll/cpptoc/render_process_handler_cpptoc.cc',
|
||||
|
@@ -39,19 +39,21 @@
|
||||
'include/cef_config.h',
|
||||
'include/cef_version.h',
|
||||
'include/internal/cef_export.h',
|
||||
'include/internal/cef_logging_internal.h',
|
||||
'include/internal/cef_ptr.h',
|
||||
'include/internal/cef_string_wrappers.h',
|
||||
'include/internal/cef_types_wrappers.h',
|
||||
],
|
||||
'includes_common_capi': [
|
||||
'include/internal/cef_logging_internal.h',
|
||||
'include/internal/cef_string.h',
|
||||
'include/internal/cef_string_list.h',
|
||||
'include/internal/cef_string_map.h',
|
||||
'include/internal/cef_string_multimap.h',
|
||||
'include/internal/cef_string_types.h',
|
||||
'include/internal/cef_string_wrappers.h',
|
||||
'include/internal/cef_thread_internal.h',
|
||||
'include/internal/cef_time.h',
|
||||
'include/internal/cef_trace_event_internal.h',
|
||||
'include/internal/cef_types.h',
|
||||
'include/internal/cef_types_wrappers.h',
|
||||
],
|
||||
'includes_capi': [
|
||||
'include/capi/cef_base_capi.h',
|
||||
@@ -75,15 +77,19 @@
|
||||
'include/base/internal/cef_atomicops_x86_msvc.h',
|
||||
'include/base/internal/cef_bind_internal_win.h',
|
||||
'include/cef_sandbox_win.h',
|
||||
'include/internal/cef_types_win.h',
|
||||
'include/internal/cef_win.h',
|
||||
],
|
||||
'includes_win_capi': [
|
||||
'include/internal/cef_types_win.h',
|
||||
],
|
||||
'includes_mac': [
|
||||
'include/base/internal/cef_atomicops_atomicword_compat.h',
|
||||
'include/base/internal/cef_atomicops_mac.h',
|
||||
'include/cef_application_mac.h',
|
||||
'include/cef_sandbox_mac.h',
|
||||
'include/internal/cef_mac.h',
|
||||
],
|
||||
'includes_mac_capi': [
|
||||
'include/internal/cef_types_mac.h',
|
||||
],
|
||||
'includes_linux': [
|
||||
@@ -92,6 +98,8 @@
|
||||
'include/base/internal/cef_atomicops_arm64_gcc.h',
|
||||
'include/base/internal/cef_atomicops_x86_gcc.h',
|
||||
'include/internal/cef_linux.h',
|
||||
],
|
||||
'includes_linux_capi': [
|
||||
'include/internal/cef_types_linux.h',
|
||||
],
|
||||
'libcef_sources_common': [
|
||||
@@ -238,6 +246,8 @@
|
||||
'tests/cefclient/browser/main_context.h',
|
||||
'tests/cefclient/browser/main_context_impl.cc',
|
||||
'tests/cefclient/browser/main_context_impl.h',
|
||||
'tests/cefclient/browser/media_router_test.cc',
|
||||
'tests/cefclient/browser/media_router_test.h',
|
||||
'tests/cefclient/browser/osr_dragdrop_events.h',
|
||||
'tests/cefclient/browser/osr_renderer.h',
|
||||
'tests/cefclient/browser/osr_renderer.cc',
|
||||
@@ -287,6 +297,7 @@
|
||||
'tests/cefclient/resources/drm.html',
|
||||
'tests/cefclient/resources/localstorage.html',
|
||||
'tests/cefclient/resources/logo.png',
|
||||
'tests/cefclient/resources/media_router.html',
|
||||
'tests/cefclient/resources/menu_icon.1x.png',
|
||||
'tests/cefclient/resources/menu_icon.2x.png',
|
||||
'tests/cefclient/resources/other_tests.html',
|
||||
@@ -455,9 +466,12 @@
|
||||
'tests/cefsimple/simple_handler_linux.cc',
|
||||
],
|
||||
'ceftests_sources_common': [
|
||||
'tests/ceftests/audio_output_unittest.cc',
|
||||
'tests/ceftests/browser_info_map_unittest.cc',
|
||||
'tests/ceftests/command_line_unittest.cc',
|
||||
'tests/ceftests/cookie_unittest.cc',
|
||||
'tests/ceftests/cors_unittest.cc',
|
||||
'tests/ceftests/devtools_message_unittest.cc',
|
||||
'tests/ceftests/dialog_unittest.cc',
|
||||
'tests/ceftests/display_unittest.cc',
|
||||
'tests/ceftests/dom_unittest.cc',
|
||||
@@ -507,6 +521,11 @@
|
||||
'tests/ceftests/task_unittest.cc',
|
||||
'tests/ceftests/test_handler.cc',
|
||||
'tests/ceftests/test_handler.h',
|
||||
'tests/ceftests/test_request.cc',
|
||||
'tests/ceftests/test_request.h',
|
||||
'tests/ceftests/test_server.cc',
|
||||
'tests/ceftests/test_server.h',
|
||||
'tests/ceftests/test_server_unittest.cc',
|
||||
'tests/ceftests/test_suite.cc',
|
||||
'tests/ceftests/test_suite.h',
|
||||
'tests/ceftests/test_util.cc',
|
||||
@@ -515,6 +534,7 @@
|
||||
'tests/ceftests/thread_helper.h',
|
||||
'tests/ceftests/thread_unittest.cc',
|
||||
'tests/ceftests/tracing_unittest.cc',
|
||||
'tests/ceftests/track_callback.h',
|
||||
'tests/ceftests/translator_unittest.cc',
|
||||
'tests/ceftests/urlrequest_unittest.cc',
|
||||
'tests/ceftests/v8_unittest.cc',
|
||||
@@ -554,6 +574,7 @@
|
||||
'tests/shared/browser/resource_util.h',
|
||||
'tests/shared/browser/resource_util_mac.mm',
|
||||
'tests/shared/browser/resource_util_posix.cc',
|
||||
'tests/ceftests/audio_output_unittest.cc',
|
||||
'tests/ceftests/client_app_delegates.cc',
|
||||
'tests/ceftests/cookie_unittest.cc',
|
||||
'tests/ceftests/dom_unittest.cc',
|
||||
@@ -573,10 +594,15 @@
|
||||
'tests/ceftests/urlrequest_unittest.cc',
|
||||
'tests/ceftests/test_handler.cc',
|
||||
'tests/ceftests/test_handler.h',
|
||||
'tests/ceftests/test_request.cc',
|
||||
'tests/ceftests/test_request.h',
|
||||
'tests/ceftests/test_server.cc',
|
||||
'tests/ceftests/test_server.h',
|
||||
'tests/ceftests/test_suite.cc',
|
||||
'tests/ceftests/test_suite.h',
|
||||
'tests/ceftests/test_util.cc',
|
||||
'tests/ceftests/test_util.h',
|
||||
'tests/ceftests/track_callback.h',
|
||||
'tests/ceftests/thread_helper.cc',
|
||||
'tests/ceftests/thread_helper.h',
|
||||
'tests/ceftests/thread_unittest.cc',
|
||||
|
@@ -34,11 +34,12 @@ template("_repack_one_locale") {
|
||||
"${root_gen_dir}/chrome/generated_resources_${locale}.pak",
|
||||
"${root_gen_dir}/chrome/locale_settings_${locale}.pak",
|
||||
"${root_gen_dir}/chrome/platform_locale_settings_${locale}.pak",
|
||||
"${root_gen_dir}/components/strings/components_chromium_strings_${locale}.pak",
|
||||
"${root_gen_dir}/components/strings/components_locale_settings_${locale}.pak",
|
||||
"${root_gen_dir}/components/strings/components_strings_${locale}.pak",
|
||||
"${root_gen_dir}/content/app/strings/content_strings_${locale}.pak",
|
||||
"${root_gen_dir}/extensions/strings/extensions_strings_${locale}.pak",
|
||||
"${root_gen_dir}/services/strings/services_strings_${locale}.pak",
|
||||
"${root_gen_dir}/third_party/blink/public/strings/blink_strings_${locale}.pak",
|
||||
"${root_gen_dir}/ui/strings/app_locale_settings_${locale}.pak",
|
||||
"${root_gen_dir}/ui/strings/ui_strings_${locale}.pak",
|
||||
]
|
||||
@@ -52,11 +53,12 @@ template("_repack_one_locale") {
|
||||
"//chrome/app:generated_resources",
|
||||
"//chrome/app/resources:locale_settings",
|
||||
"//chrome/app/resources:platform_locale_settings",
|
||||
"//components/strings:components_chromium_strings",
|
||||
"//components/strings:components_locale_settings",
|
||||
"//components/strings:components_strings",
|
||||
"//content/app/strings",
|
||||
"//extensions/strings",
|
||||
"//services/strings",
|
||||
"//third_party/blink/public/strings",
|
||||
"//ui/strings:app_locale_settings",
|
||||
"//ui/strings:ui_strings",
|
||||
]
|
||||
|
@@ -25,7 +25,7 @@ macro(PRINT_CEF_CONFIG)
|
||||
|
||||
message(STATUS "Binary distribution root: ${_CEF_ROOT}")
|
||||
|
||||
if(OS_MACOSX)
|
||||
if(OS_MAC)
|
||||
message(STATUS "Base SDK: ${CMAKE_OSX_SYSROOT}")
|
||||
message(STATUS "Target SDK: ${CEF_TARGET_SDK}")
|
||||
endif()
|
||||
@@ -75,8 +75,8 @@ macro(APPEND_PLATFORM_SOURCES name_of_list)
|
||||
if(OS_WINDOWS AND ${name_of_list}_WINDOWS)
|
||||
list(APPEND ${name_of_list} ${${name_of_list}_WINDOWS})
|
||||
endif()
|
||||
if(OS_MACOSX AND ${name_of_list}_MACOSX)
|
||||
list(APPEND ${name_of_list} ${${name_of_list}_MACOSX})
|
||||
if(OS_MAC AND ${name_of_list}_MAC)
|
||||
list(APPEND ${name_of_list} ${${name_of_list}_MAC})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
@@ -184,10 +184,10 @@ endif(OS_LINUX)
|
||||
# Mac OS X macros.
|
||||
#
|
||||
|
||||
if(OS_MACOSX)
|
||||
if(OS_MAC)
|
||||
|
||||
# Manually process and copy over resource files.
|
||||
macro(COPY_MACOSX_RESOURCES resource_list prefix_list target source_dir app_path)
|
||||
macro(COPY_MAC_RESOURCES resource_list prefix_list target source_dir app_path)
|
||||
foreach(FILENAME ${resource_list})
|
||||
# Remove one or more prefixes from the source paths.
|
||||
set(TARGET_FILENAME "${FILENAME}")
|
||||
@@ -229,7 +229,7 @@ macro(COPY_MACOSX_RESOURCES resource_list prefix_list target source_dir app_path
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
endif(OS_MACOSX)
|
||||
endif(OS_MAC)
|
||||
|
||||
|
||||
#
|
||||
@@ -298,7 +298,7 @@ macro(SET_COMMON_TARGET_PROPERTIES target)
|
||||
set_property(TARGET ${target} PROPERTY LINK_FLAGS_RELEASE ${_flags_str})
|
||||
endif()
|
||||
|
||||
if(OS_MACOSX)
|
||||
if(OS_MAC)
|
||||
# Set Xcode target properties.
|
||||
set_target_properties(${target} PROPERTIES
|
||||
XCODE_ATTRIBUTE_ALWAYS_SEARCH_USER_PATHS NO
|
||||
|
@@ -14,7 +14,8 @@ endif()
|
||||
|
||||
# Determine the platform.
|
||||
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
|
||||
set(OS_MACOSX 1)
|
||||
set(OS_MAC 1)
|
||||
set(OS_MACOSX 1) # For backwards compatibility.
|
||||
set(OS_POSIX 1)
|
||||
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
|
||||
set(OS_LINUX 1)
|
||||
@@ -31,7 +32,7 @@ if(NOT DEFINED PROJECT_ARCH)
|
||||
set(PROJECT_ARCH "x86")
|
||||
endif()
|
||||
|
||||
if(OS_MACOSX)
|
||||
if(OS_MAC)
|
||||
# PROJECT_ARCH should be specified on Mac OS X.
|
||||
message(WARNING "No PROJECT_ARCH value specified, using ${PROJECT_ARCH}")
|
||||
endif()
|
||||
@@ -218,7 +219,6 @@ if(OS_LINUX)
|
||||
libcef.so
|
||||
libEGL.so
|
||||
libGLESv2.so
|
||||
natives_blob.bin
|
||||
snapshot_blob.bin
|
||||
v8_context_snapshot.bin
|
||||
swiftshader
|
||||
@@ -247,7 +247,7 @@ endif()
|
||||
# Mac OS X configuration.
|
||||
#
|
||||
|
||||
if(OS_MACOSX)
|
||||
if(OS_MAC)
|
||||
# Platform-specific compiler/linker flags.
|
||||
# See also Xcode target properties in cef_macros.cmake.
|
||||
set(CEF_LIBTYPE SHARED)
|
||||
@@ -311,7 +311,7 @@ if(OS_MACOSX)
|
||||
|
||||
# Find the newest available base SDK.
|
||||
execute_process(COMMAND xcode-select --print-path OUTPUT_VARIABLE XCODE_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
foreach(OS_VERSION 10.11 10.10 10.9)
|
||||
foreach(OS_VERSION 10.15 10.14 10.13 10.12 10.11 10.10)
|
||||
set(SDK "${XCODE_PATH}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${OS_VERSION}.sdk")
|
||||
if(NOT "${CMAKE_OSX_SYSROOT}" AND EXISTS "${SDK}" AND IS_DIRECTORY "${SDK}")
|
||||
set(CMAKE_OSX_SYSROOT ${SDK})
|
||||
@@ -319,7 +319,7 @@ if(OS_MACOSX)
|
||||
endforeach()
|
||||
|
||||
# Target SDK.
|
||||
set(CEF_TARGET_SDK "10.9")
|
||||
set(CEF_TARGET_SDK "10.10")
|
||||
list(APPEND CEF_COMPILER_FLAGS
|
||||
-mmacosx-version-min=${CEF_TARGET_SDK}
|
||||
)
|
||||
@@ -328,6 +328,8 @@ if(OS_MACOSX)
|
||||
# Target architecture.
|
||||
if(PROJECT_ARCH STREQUAL "x86_64")
|
||||
set(CMAKE_OSX_ARCHITECTURES "x86_64")
|
||||
elseif(PROJECT_ARCH STREQUAL "arm64")
|
||||
set(CMAKE_OSX_ARCHITECTURES "arm64")
|
||||
else()
|
||||
set(CMAKE_OSX_ARCHITECTURES "i386")
|
||||
endif()
|
||||
@@ -376,24 +378,8 @@ if(OS_WINDOWS)
|
||||
|
||||
if(USE_SANDBOX)
|
||||
# Check if the current MSVC version is compatible with the cef_sandbox.lib
|
||||
# static library. For a list of all version numbers see
|
||||
# https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B#Internal_version_numbering
|
||||
list(APPEND supported_msvc_versions
|
||||
1900 # VS2015 and updates 1, 2, & 3
|
||||
1910 # VS2017 version 15.1 & 15.2
|
||||
1911 # VS2017 version 15.3 & 15.4
|
||||
1912 # VS2017 version 15.5
|
||||
1913 # VS2017 version 15.6
|
||||
1914 # VS2017 version 15.7
|
||||
1915 # VS2017 version 15.8
|
||||
1916 # VS2017 version 15.9
|
||||
1920 # VS2019 version 16.0
|
||||
1921 # VS2019 version 16.1
|
||||
1922 # VS2019 version 16.2
|
||||
1923 # VS2019 version 16.3
|
||||
)
|
||||
list(FIND supported_msvc_versions ${MSVC_VERSION} _index)
|
||||
if (${_index} EQUAL -1)
|
||||
# static library. We require VS2015 or newer.
|
||||
if(MSVC_VERSION LESS 1900)
|
||||
message(WARNING "CEF sandbox is not compatible with the current MSVC version (${MSVC_VERSION})")
|
||||
set(USE_SANDBOX OFF)
|
||||
endif()
|
||||
@@ -480,7 +466,6 @@ if(OS_WINDOWS)
|
||||
libcef.dll
|
||||
libEGL.dll
|
||||
libGLESv2.dll
|
||||
natives_blob.bin
|
||||
snapshot_blob.bin
|
||||
v8_context_snapshot.bin
|
||||
swiftshader
|
||||
|
@@ -178,9 +178,9 @@ Atomic64 Release_Load(volatile const Atomic64* ptr);
|
||||
// Include our platform specific implementation.
|
||||
#if defined(OS_WIN) && defined(COMPILER_MSVC) && defined(ARCH_CPU_X86_FAMILY)
|
||||
#include "include/base/internal/cef_atomicops_x86_msvc.h"
|
||||
#elif defined(OS_WIN) && defined(__ARM_ARCH_ISA_A64)
|
||||
#elif defined(OS_WIN) && (defined(__ARM_ARCH_ISA_A64) || defined(_M_ARM64))
|
||||
#include "include/base/internal/cef_atomicops_arm64_msvc.h"
|
||||
#elif defined(OS_MACOSX)
|
||||
#elif defined(OS_MAC)
|
||||
#include "include/base/internal/cef_atomicops_mac.h"
|
||||
#elif defined(COMPILER_GCC) && defined(ARCH_CPU_X86_FAMILY)
|
||||
#include "include/base/internal/cef_atomicops_x86_gcc.h"
|
||||
@@ -194,7 +194,7 @@ Atomic64 Release_Load(volatile const Atomic64* ptr);
|
||||
|
||||
// On some platforms we need additional declarations to make
|
||||
// AtomicWord compatible with our other Atomic* types.
|
||||
#if defined(OS_MACOSX) || defined(OS_OPENBSD)
|
||||
#if defined(OS_MAC) || defined(OS_OPENBSD)
|
||||
#include "include/base/internal/cef_atomicops_atomicword_compat.h"
|
||||
#endif
|
||||
|
||||
|
@@ -42,7 +42,7 @@
|
||||
//
|
||||
// On Mac OS X, |long long| is used for 64-bit types for compatibility with
|
||||
// <inttypes.h> format macros even in the LP64 model.
|
||||
#if defined(__LP64__) && !defined(OS_MACOSX) && !defined(OS_OPENBSD)
|
||||
#if defined(__LP64__) && !defined(OS_MAC) && !defined(OS_OPENBSD)
|
||||
typedef long int64;
|
||||
typedef unsigned long uint64;
|
||||
#else
|
||||
|
@@ -44,6 +44,14 @@
|
||||
#define OS_WIN 1
|
||||
#endif
|
||||
#elif defined(__APPLE__)
|
||||
// New platform defines after https://crbug.com/1105907.
|
||||
#ifndef OS_MAC
|
||||
#define OS_MAC 1
|
||||
#endif
|
||||
#ifndef OS_APPLE
|
||||
#define OS_APPLE 1
|
||||
#endif
|
||||
// Old platform defines retained for backwards compatibility.
|
||||
#ifndef OS_MACOSX
|
||||
#define OS_MACOSX 1
|
||||
#endif
|
||||
@@ -57,7 +65,7 @@
|
||||
|
||||
// For access to standard POSIXish features, use OS_POSIX instead of a
|
||||
// more specific macro.
|
||||
#if defined(OS_MACOSX) || defined(OS_LINUX)
|
||||
#if defined(OS_MAC) || defined(OS_LINUX)
|
||||
#ifndef OS_POSIX
|
||||
#define OS_POSIX 1
|
||||
#endif
|
||||
@@ -95,7 +103,7 @@
|
||||
#define ARCH_CPU_ARMEL 1
|
||||
#define ARCH_CPU_32_BITS 1
|
||||
#define ARCH_CPU_LITTLE_ENDIAN 1
|
||||
#elif defined(__aarch64__)
|
||||
#elif defined(__aarch64__) || defined(_M_ARM64)
|
||||
#define ARCH_CPU_ARM_FAMILY 1
|
||||
#define ARCH_CPU_ARM64 1
|
||||
#define ARCH_CPU_64_BITS 1
|
||||
|
@@ -136,7 +136,11 @@
|
||||
#define CEF_INCLUDE_BASE_CEF_LOGGING_H_
|
||||
#pragma once
|
||||
|
||||
#if defined(DCHECK)
|
||||
#if defined(USING_CHROMIUM_INCLUDES)
|
||||
// When building CEF include the Chromium header directly.
|
||||
#include "base/logging.h"
|
||||
#include "base/notreached.h"
|
||||
#elif defined(DCHECK)
|
||||
// Do nothing if the macros provided by this header already exist.
|
||||
// This can happen in cases where Chromium code is used directly by the
|
||||
// client application. When using Chromium code directly always include
|
||||
@@ -144,15 +148,12 @@
|
||||
|
||||
// Always define the DCHECK_IS_ON macro which is used from other CEF headers.
|
||||
#if defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON)
|
||||
#define DCHECK_IS_ON() 0
|
||||
#define DCHECK_IS_ON() false
|
||||
#else
|
||||
#define DCHECK_IS_ON() 1
|
||||
#define DCHECK_IS_ON() true
|
||||
#endif
|
||||
|
||||
#elif defined(USING_CHROMIUM_INCLUDES)
|
||||
// When building CEF include the Chromium header directly.
|
||||
#include "base/logging.h"
|
||||
#else // !USING_CHROMIUM_INCLUDES
|
||||
#else // !defined(DCHECK)
|
||||
// The following is substantially similar to the Chromium implementation.
|
||||
// If the Chromium implementation diverges the below implementation should be
|
||||
// updated to match.
|
||||
|
@@ -250,11 +250,11 @@ class WeakPtr : public cef_internal::WeakPtrBase {
|
||||
T* get() const { return ref_.is_valid() ? ptr_ : NULL; }
|
||||
|
||||
T& operator*() const {
|
||||
DCHECK(get() != NULL);
|
||||
CHECK(ref_.is_valid());
|
||||
return *get();
|
||||
}
|
||||
T* operator->() const {
|
||||
DCHECK(get() != NULL);
|
||||
CHECK(ref_.is_valid());
|
||||
return get();
|
||||
}
|
||||
|
||||
|
121
include/capi/cef_audio_handler_capi.h
Normal file
121
include/capi/cef_audio_handler_capi.h
Normal file
@@ -0,0 +1,121 @@
|
||||
// Copyright (c) 2020 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=430877d950508a545d0baa18c8c8c0d2d183fec4$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_AUDIO_HANDLER_CAPI_H_
|
||||
#define CEF_INCLUDE_CAPI_CEF_AUDIO_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 audio events.
|
||||
///
|
||||
typedef struct _cef_audio_handler_t {
|
||||
///
|
||||
// Base structure.
|
||||
///
|
||||
cef_base_ref_counted_t base;
|
||||
|
||||
///
|
||||
// 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
|
||||
// cancel it. All members of |params| can optionally be configured here, but
|
||||
// they are also pre-filled with some sensible defaults.
|
||||
///
|
||||
int(CEF_CALLBACK* get_audio_parameters)(struct _cef_audio_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
cef_audio_parameters_t* params);
|
||||
|
||||
///
|
||||
// Called on a browser audio capture thread when the browser starts streaming
|
||||
// audio. OnAudioSteamStopped will always be called after
|
||||
// OnAudioStreamStarted; both functions may be called multiple times for the
|
||||
// same browser. |params| contains the audio parameters like sample rate and
|
||||
// channel layout. |channels| is the number of channels.
|
||||
///
|
||||
void(CEF_CALLBACK* on_audio_stream_started)(
|
||||
struct _cef_audio_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
const cef_audio_parameters_t* params,
|
||||
int channels);
|
||||
|
||||
///
|
||||
// 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
|
||||
// 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
|
||||
// Unix Epoch) and represents the time at which the decompressed packet should
|
||||
// be presented to the user. Based on |frames| and the |channel_layout| value
|
||||
// passed to OnAudioStreamStarted you can calculate the size of the |data|
|
||||
// array in bytes.
|
||||
///
|
||||
void(CEF_CALLBACK* on_audio_stream_packet)(struct _cef_audio_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
const float** data,
|
||||
int frames,
|
||||
int64 pts);
|
||||
|
||||
///
|
||||
// Called on the UI thread when the stream has stopped. OnAudioSteamStopped
|
||||
// will always be called after OnAudioStreamStarted; both functions may be
|
||||
// called multiple times for the same stream.
|
||||
///
|
||||
void(CEF_CALLBACK* on_audio_stream_stopped)(struct _cef_audio_handler_t* self,
|
||||
struct _cef_browser_t* browser);
|
||||
|
||||
///
|
||||
// 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
|
||||
// in the capturing phase it will be called on the audio stream thread. The
|
||||
// stream will be stopped immediately.
|
||||
///
|
||||
void(CEF_CALLBACK* on_audio_stream_error)(struct _cef_audio_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
const cef_string_t* message);
|
||||
} cef_audio_handler_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // CEF_INCLUDE_CAPI_CEF_AUDIO_HANDLER_CAPI_H_
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=85c1114638668d2b663a74844840ef50e2efa9f6$
|
||||
// $hash=965eb2e55afec0a4618a7acd9478b9c1215be29d$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_CAPI_H_
|
||||
@@ -41,10 +41,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "include/capi/cef_base_capi.h"
|
||||
#include "include/capi/cef_devtools_message_observer_capi.h"
|
||||
#include "include/capi/cef_drag_data_capi.h"
|
||||
#include "include/capi/cef_frame_capi.h"
|
||||
#include "include/capi/cef_image_capi.h"
|
||||
#include "include/capi/cef_navigation_entry_capi.h"
|
||||
#include "include/capi/cef_registration_capi.h"
|
||||
#include "include/capi/cef_request_context_capi.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -484,6 +486,71 @@ typedef struct _cef_browser_host_t {
|
||||
///
|
||||
int(CEF_CALLBACK* has_dev_tools)(struct _cef_browser_host_t* self);
|
||||
|
||||
///
|
||||
// Send a function call message over the DevTools protocol. |message| must be
|
||||
// a UTF8-encoded JSON dictionary that contains "id" (int), "function"
|
||||
// (string) and "params" (dictionary, optional) values. See the DevTools
|
||||
// protocol documentation at https://chromedevtools.github.io/devtools-
|
||||
// protocol/ for details of supported functions and the expected "params"
|
||||
// dictionary contents. |message| will be copied if necessary. This function
|
||||
// will return true (1) if called on the UI thread and the message was
|
||||
// successfully submitted for validation, otherwise false (0). Validation will
|
||||
// be applied asynchronously and any messages that fail due to formatting
|
||||
// errors or missing parameters may be discarded without notification. Prefer
|
||||
// ExecuteDevToolsMethod if a more structured approach to message formatting
|
||||
// is desired.
|
||||
//
|
||||
// Every valid function call will result in an asynchronous function result or
|
||||
// error message that references the sent message "id". Event messages are
|
||||
// received while notifications are enabled (for example, between function
|
||||
// calls for "Page.enable" and "Page.disable"). All received messages will be
|
||||
// delivered to the observer(s) registered with AddDevToolsMessageObserver.
|
||||
// See cef_dev_tools_message_observer_t::OnDevToolsMessage documentation for
|
||||
// details of received message contents.
|
||||
//
|
||||
// Usage of the SendDevToolsMessage, ExecuteDevToolsMethod and
|
||||
// AddDevToolsMessageObserver functions does not require an active DevTools
|
||||
// front-end or remote-debugging session. Other active DevTools sessions will
|
||||
// continue to function independently. However, any modification of global
|
||||
// browser state by one session may not be reflected in the UI of other
|
||||
// sessions.
|
||||
//
|
||||
// Communication with the DevTools front-end (when displayed) can be logged
|
||||
// for development purposes by passing the `--devtools-protocol-log-
|
||||
// file=<path>` command-line flag.
|
||||
///
|
||||
int(CEF_CALLBACK* send_dev_tools_message)(struct _cef_browser_host_t* self,
|
||||
const void* message,
|
||||
size_t message_size);
|
||||
|
||||
///
|
||||
// Execute a function call over the DevTools protocol. This is a more
|
||||
// structured version of SendDevToolsMessage. |message_id| is an incremental
|
||||
// number that uniquely identifies the message (pass 0 to have the next number
|
||||
// assigned automatically based on previous values). |function| is the
|
||||
// function name. |params| are the function parameters, which may be NULL. See
|
||||
// the DevTools protocol documentation (linked above) for details of supported
|
||||
// functions and the expected |params| dictionary contents. This function will
|
||||
// return the assigned message ID if called on the UI thread and the message
|
||||
// was successfully submitted for validation, otherwise 0. See the
|
||||
// SendDevToolsMessage documentation for additional usage information.
|
||||
///
|
||||
int(CEF_CALLBACK* execute_dev_tools_method)(
|
||||
struct _cef_browser_host_t* self,
|
||||
int message_id,
|
||||
const cef_string_t* method,
|
||||
struct _cef_dictionary_value_t* params);
|
||||
|
||||
///
|
||||
// Add an observer for DevTools protocol messages (function results and
|
||||
// events). The observer will remain registered until the returned
|
||||
// Registration object is destroyed. See the SendDevToolsMessage documentation
|
||||
// for additional usage information.
|
||||
///
|
||||
struct _cef_registration_t*(CEF_CALLBACK* add_dev_tools_message_observer)(
|
||||
struct _cef_browser_host_t* self,
|
||||
struct _cef_dev_tools_message_observer_t* observer);
|
||||
|
||||
///
|
||||
// Retrieve a snapshot of current navigation entries as values sent to the
|
||||
// specified visitor. If |current_only| is true (1) only the current
|
||||
@@ -495,19 +562,6 @@ typedef struct _cef_browser_host_t {
|
||||
struct _cef_navigation_entry_visitor_t* visitor,
|
||||
int current_only);
|
||||
|
||||
///
|
||||
// Set whether mouse cursor change is disabled.
|
||||
///
|
||||
void(CEF_CALLBACK* set_mouse_cursor_change_disabled)(
|
||||
struct _cef_browser_host_t* self,
|
||||
int disabled);
|
||||
|
||||
///
|
||||
// Returns true (1) if mouse cursor change is disabled.
|
||||
///
|
||||
int(CEF_CALLBACK* is_mouse_cursor_change_disabled)(
|
||||
struct _cef_browser_host_t* self);
|
||||
|
||||
///
|
||||
// If a misspelled word is currently selected in an editable node calling this
|
||||
// function will replace it with the specified |word|.
|
||||
@@ -829,7 +883,7 @@ typedef struct _cef_browser_host_t {
|
||||
|
||||
///
|
||||
// Returns the extension hosted in this browser or NULL if no extension is
|
||||
// hosted. See cef_request_tContext::LoadExtension for details.
|
||||
// hosted. See cef_request_context_t::LoadExtension for details.
|
||||
///
|
||||
struct _cef_extension_t*(CEF_CALLBACK* get_extension)(
|
||||
struct _cef_browser_host_t* self);
|
||||
@@ -837,7 +891,7 @@ typedef struct _cef_browser_host_t {
|
||||
///
|
||||
// Returns true (1) if this browser is hosting an extension background script.
|
||||
// Background hosts do not have a window and are not displayable. See
|
||||
// cef_request_tContext::LoadExtension for details.
|
||||
// cef_request_context_t::LoadExtension for details.
|
||||
///
|
||||
int(CEF_CALLBACK* is_background_host)(struct _cef_browser_host_t* self);
|
||||
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=b15ba2c750f5227b6b40fea59965817ba4431ee0$
|
||||
// $hash=d56cbf83d6faefa9f716c7308bf7007dad98697d$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_PROCESS_HANDLER_CAPI_H_
|
||||
@@ -41,6 +41,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "include/capi/cef_base_capi.h"
|
||||
#include "include/capi/cef_client_capi.h"
|
||||
#include "include/capi/cef_command_line_capi.h"
|
||||
#include "include/capi/cef_print_handler_capi.h"
|
||||
#include "include/capi/cef_values_capi.h"
|
||||
@@ -60,6 +61,25 @@ typedef struct _cef_browser_process_handler_t {
|
||||
///
|
||||
cef_base_ref_counted_t base;
|
||||
|
||||
///
|
||||
// Called on the browser process UI thread to retrieve the list of schemes
|
||||
// that should support cookies. If |include_defaults| is true (1) the default
|
||||
// schemes ("http", "https", "ws" and "wss") will also be supported. Providing
|
||||
// an NULL |schemes| value and setting |include_defaults| to false (0) will
|
||||
// disable all loading and saving of cookies.
|
||||
//
|
||||
// This state will apply to the cef_cookie_manager_t associated with the
|
||||
// global cef_request_context_t. It will also be used as the initial state for
|
||||
// any new cef_request_context_ts created by the client. After creating a new
|
||||
// cef_request_context_t the cef_cookie_manager_t::SetSupportedSchemes
|
||||
// function may be called on the associated cef_cookie_manager_t to futher
|
||||
// override these values.
|
||||
///
|
||||
void(CEF_CALLBACK* get_cookieable_schemes)(
|
||||
struct _cef_browser_process_handler_t* self,
|
||||
cef_string_list_t schemes,
|
||||
int* include_defaults);
|
||||
|
||||
///
|
||||
// Called on the browser process UI thread immediately after the CEF context
|
||||
// has been initialized.
|
||||
@@ -78,17 +98,6 @@ typedef struct _cef_browser_process_handler_t {
|
||||
struct _cef_browser_process_handler_t* self,
|
||||
struct _cef_command_line_t* command_line);
|
||||
|
||||
///
|
||||
// Called on the browser process IO thread after the main thread has been
|
||||
// created for a new render process. Provides an opportunity to specify extra
|
||||
// information that will be passed to
|
||||
// cef_render_process_handler_t::on_render_thread_created() in the render
|
||||
// process. Do not keep a reference to |extra_info| outside of this function.
|
||||
///
|
||||
void(CEF_CALLBACK* on_render_process_thread_created)(
|
||||
struct _cef_browser_process_handler_t* self,
|
||||
struct _cef_list_value_t* extra_info);
|
||||
|
||||
///
|
||||
// Return the handler for printing on Linux. If a print handler is not
|
||||
// provided then printing will not be supported on the Linux platform.
|
||||
@@ -112,6 +121,16 @@ typedef struct _cef_browser_process_handler_t {
|
||||
void(CEF_CALLBACK* on_schedule_message_pump_work)(
|
||||
struct _cef_browser_process_handler_t* self,
|
||||
int64 delay_ms);
|
||||
|
||||
///
|
||||
// Return the default client for use with a newly created browser window. If
|
||||
// null is returned the browser will be unmanaged (no callbacks will be
|
||||
// executed for that browser) and application shutdown will be blocked until
|
||||
// the browser window is closed manually. This function is currently only used
|
||||
// with the chrome runtime.
|
||||
///
|
||||
struct _cef_client_t*(CEF_CALLBACK* get_default_client)(
|
||||
struct _cef_browser_process_handler_t* self);
|
||||
} cef_browser_process_handler_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@@ -33,13 +33,14 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=6a0312765614a697d56e87c8503afba8404bb08b$
|
||||
// $hash=8d4cb3e0bbf230804c93898daa4a8b2866a2c1ce$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_CLIENT_CAPI_H_
|
||||
#define CEF_INCLUDE_CAPI_CEF_CLIENT_CAPI_H_
|
||||
#pragma once
|
||||
|
||||
#include "include/capi/cef_audio_handler_capi.h"
|
||||
#include "include/capi/cef_base_capi.h"
|
||||
#include "include/capi/cef_context_menu_handler_capi.h"
|
||||
#include "include/capi/cef_dialog_handler_capi.h"
|
||||
@@ -69,6 +70,12 @@ typedef struct _cef_client_t {
|
||||
///
|
||||
cef_base_ref_counted_t base;
|
||||
|
||||
///
|
||||
// Return the handler for audio rendering events.
|
||||
///
|
||||
struct _cef_audio_handler_t*(CEF_CALLBACK* get_audio_handler)(
|
||||
struct _cef_client_t* self);
|
||||
|
||||
///
|
||||
// Return the handler for context menus. If no handler is provided the default
|
||||
// implementation will be used.
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=c18e084ad06a04096b1ce50e488cf2276211a66c$
|
||||
// $hash=2f5721138da26a9d7cce300a635b58dae9f51a4a$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_COOKIE_CAPI_H_
|
||||
@@ -141,8 +141,8 @@ typedef struct _cef_cookie_manager_t {
|
||||
// CefSettings.cache_path if specified or in memory otherwise. If |callback| is
|
||||
// non-NULL it will be executed asnychronously on the UI thread after the
|
||||
// manager's storage has been initialized. Using this function is equivalent to
|
||||
// calling cef_request_tContext::cef_request_context_get_global_context()->GetDe
|
||||
// faultCookieManager().
|
||||
// calling cef_request_context_t::cef_request_context_get_global_context()->GetD
|
||||
// efaultCookieManager().
|
||||
///
|
||||
CEF_EXPORT cef_cookie_manager_t* cef_cookie_manager_get_global_manager(
|
||||
struct _cef_completion_callback_t* callback);
|
||||
|
147
include/capi/cef_devtools_message_observer_capi.h
Normal file
147
include/capi/cef_devtools_message_observer_capi.h
Normal file
@@ -0,0 +1,147 @@
|
||||
// Copyright (c) 2020 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=86906c2e971fea7e479738f59bbf85d71ce31953$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_DEVTOOLS_MESSAGE_OBSERVER_CAPI_H_
|
||||
#define CEF_INCLUDE_CAPI_CEF_DEVTOOLS_MESSAGE_OBSERVER_CAPI_H_
|
||||
#pragma once
|
||||
|
||||
#include "include/capi/cef_base_capi.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct _cef_browser_t;
|
||||
|
||||
///
|
||||
// Callback structure for cef_browser_host_t::AddDevToolsMessageObserver. The
|
||||
// functions of this structure will be called on the browser process UI thread.
|
||||
///
|
||||
typedef struct _cef_dev_tools_message_observer_t {
|
||||
///
|
||||
// Base structure.
|
||||
///
|
||||
cef_base_ref_counted_t base;
|
||||
|
||||
///
|
||||
// Method that will be called on receipt of a DevTools protocol message.
|
||||
// |browser| is the originating browser instance. |message| is a UTF8-encoded
|
||||
// JSON dictionary representing either a function result or an event.
|
||||
// |message| is only valid for the scope of this callback and should be copied
|
||||
// if necessary. Return true (1) if the message was handled or false (0) if
|
||||
// the message should be further processed and passed to the
|
||||
// OnDevToolsMethodResult or OnDevToolsEvent functions as appropriate.
|
||||
//
|
||||
// Method result dictionaries include an "id" (int) value that identifies the
|
||||
// orginating function call sent from cef_browser_host_t::SendDevToolsMessage,
|
||||
// and optionally either a "result" (dictionary) or "error" (dictionary)
|
||||
// value. The "error" dictionary will contain "code" (int) and "message"
|
||||
// (string) values. Event dictionaries include a "function" (string) value and
|
||||
// optionally a "params" (dictionary) value. See the DevTools protocol
|
||||
// documentation at https://chromedevtools.github.io/devtools-protocol/ for
|
||||
// details of supported function calls and the expected "result" or "params"
|
||||
// dictionary contents. JSON dictionaries can be parsed using the CefParseJSON
|
||||
// function 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)(
|
||||
struct _cef_dev_tools_message_observer_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
const void* message,
|
||||
size_t message_size);
|
||||
|
||||
///
|
||||
// Method that will be called after attempted execution of a DevTools protocol
|
||||
// function. |browser| is the originating browser instance. |message_id| is
|
||||
// the "id" value that identifies the originating function call message. If
|
||||
// the function succeeded |success| will be true (1) and |result| will be the
|
||||
// UTF8-encoded JSON "result" dictionary value (which may be NULL). If the
|
||||
// function failed |success| will be false (0) and |result| will be the
|
||||
// UTF8-encoded JSON "error" dictionary value. |result| is only valid for the
|
||||
// scope of this callback and should be copied if necessary. See the
|
||||
// OnDevToolsMessage documentation for additional details on |result|
|
||||
// contents.
|
||||
///
|
||||
void(CEF_CALLBACK* on_dev_tools_method_result)(
|
||||
struct _cef_dev_tools_message_observer_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
int message_id,
|
||||
int success,
|
||||
const void* result,
|
||||
size_t result_size);
|
||||
|
||||
///
|
||||
// Method that will be called on receipt of a DevTools protocol event.
|
||||
// |browser| is the originating browser instance. |function| is the "function"
|
||||
// value. |params| is the UTF8-encoded JSON "params" dictionary value (which
|
||||
// may be NULL). |params| is only valid for the scope of this callback and
|
||||
// should be copied if necessary. See the OnDevToolsMessage documentation for
|
||||
// additional details on |params| contents.
|
||||
///
|
||||
void(CEF_CALLBACK* on_dev_tools_event)(
|
||||
struct _cef_dev_tools_message_observer_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
const cef_string_t* method,
|
||||
const void* params,
|
||||
size_t params_size);
|
||||
|
||||
///
|
||||
// Method that will be called when the DevTools agent has attached. |browser|
|
||||
// is the originating browser instance. This will generally occur in response
|
||||
// to the first message sent while the agent is detached.
|
||||
///
|
||||
void(CEF_CALLBACK* on_dev_tools_agent_attached)(
|
||||
struct _cef_dev_tools_message_observer_t* self,
|
||||
struct _cef_browser_t* browser);
|
||||
|
||||
///
|
||||
// Method that will be called when the DevTools agent has detached. |browser|
|
||||
// is the originating browser instance. Any function results that were pending
|
||||
// before the agent became detached will not be delivered, and any active
|
||||
// event subscriptions will be canceled.
|
||||
///
|
||||
void(CEF_CALLBACK* on_dev_tools_agent_detached)(
|
||||
struct _cef_dev_tools_message_observer_t* self,
|
||||
struct _cef_browser_t* browser);
|
||||
} cef_dev_tools_message_observer_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // CEF_INCLUDE_CAPI_CEF_DEVTOOLS_MESSAGE_OBSERVER_CAPI_H_
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=951c936c8070dbf9bd246cc766b81cdfe06a3d81$
|
||||
// $hash=eada7e92085d96497f4e69f3e8a7e8aa6746b175$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_DISPLAY_HANDLER_CAPI_H_
|
||||
@@ -141,6 +141,19 @@ typedef struct _cef_display_handler_t {
|
||||
struct _cef_display_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
double progress);
|
||||
|
||||
///
|
||||
// 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.
|
||||
// Return true (1) if the cursor change was handled or false (0) for default
|
||||
// handling.
|
||||
///
|
||||
int(CEF_CALLBACK* on_cursor_change)(
|
||||
struct _cef_display_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
cef_cursor_handle_t cursor,
|
||||
cef_cursor_type_t type,
|
||||
const struct _cef_cursor_info_t* custom_cursor_info);
|
||||
} cef_display_handler_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=36cf362d97cf6f68692f9d8e060cc9306b1d64b1$
|
||||
// $hash=b50087959cb679e4132f0fccfd23f01f76079018$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_CAPI_H_
|
||||
@@ -72,7 +72,7 @@ typedef struct _cef_extension_t {
|
||||
///
|
||||
// Returns the absolute path to the extension directory on disk. This value
|
||||
// will be prefixed with PK_DIR_RESOURCES if a relative path was passed to
|
||||
// cef_request_tContext::LoadExtension.
|
||||
// cef_request_context_t::LoadExtension.
|
||||
///
|
||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||
cef_string_userfree_t(CEF_CALLBACK* get_path)(struct _cef_extension_t* self);
|
||||
@@ -95,7 +95,7 @@ typedef struct _cef_extension_t {
|
||||
///
|
||||
// Returns the handler for this extension. Will return NULL for internal
|
||||
// extensions or if no handler was passed to
|
||||
// cef_request_tContext::LoadExtension.
|
||||
// cef_request_context_t::LoadExtension.
|
||||
///
|
||||
struct _cef_extension_handler_t*(CEF_CALLBACK* get_handler)(
|
||||
struct _cef_extension_t* self);
|
||||
@@ -103,7 +103,7 @@ typedef struct _cef_extension_t {
|
||||
///
|
||||
// Returns the request context that loaded this extension. Will return NULL
|
||||
// for internal extensions or if the extension has been unloaded. See the
|
||||
// cef_request_tContext::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.
|
||||
///
|
||||
struct _cef_request_context_t*(CEF_CALLBACK* get_loader_context)(
|
||||
@@ -118,7 +118,7 @@ typedef struct _cef_extension_t {
|
||||
///
|
||||
// Unload this extension if it is not an internal extension and is currently
|
||||
// loaded. Will result in a call to
|
||||
// cef_extension_tHandler::OnExtensionUnloaded on success.
|
||||
// cef_extension_handler_t::OnExtensionUnloaded on success.
|
||||
///
|
||||
void(CEF_CALLBACK* unload)(struct _cef_extension_t* self);
|
||||
} cef_extension_t;
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=af959ada2c76d9868fa43b1b61a299a90b205949$
|
||||
// $hash=a13b5b607d5a2108fac5fe75f5ebd2ede7eaef6a$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_HANDLER_CAPI_H_
|
||||
@@ -53,7 +53,7 @@ struct _cef_client_t;
|
||||
|
||||
///
|
||||
// Callback structure used for asynchronous continuation of
|
||||
// cef_extension_tHandler::GetExtensionResource.
|
||||
// cef_extension_handler_t::GetExtensionResource.
|
||||
///
|
||||
typedef struct _cef_get_extension_resource_callback_t {
|
||||
///
|
||||
@@ -77,7 +77,7 @@ typedef struct _cef_get_extension_resource_callback_t {
|
||||
///
|
||||
// Implement this structure to handle events related to browser extensions. The
|
||||
// functions of this structure will be called on the UI thread. See
|
||||
// cef_request_tContext::LoadExtension for information about extension loading.
|
||||
// cef_request_context_t::LoadExtension for information about extension loading.
|
||||
///
|
||||
typedef struct _cef_extension_handler_t {
|
||||
///
|
||||
@@ -86,7 +86,7 @@ typedef struct _cef_extension_handler_t {
|
||||
cef_base_ref_counted_t base;
|
||||
|
||||
///
|
||||
// Called if the cef_request_tContext::LoadExtension request fails. |result|
|
||||
// Called if the cef_request_context_t::LoadExtension request fails. |result|
|
||||
// will be the error code.
|
||||
///
|
||||
void(CEF_CALLBACK* on_extension_load_failed)(
|
||||
@@ -94,7 +94,7 @@ typedef struct _cef_extension_handler_t {
|
||||
cef_errorcode_t result);
|
||||
|
||||
///
|
||||
// Called if the cef_request_tContext::LoadExtension request succeeds.
|
||||
// Called if the cef_request_context_t::LoadExtension request succeeds.
|
||||
// |extension| is the loaded extension.
|
||||
///
|
||||
void(CEF_CALLBACK* on_extension_loaded)(struct _cef_extension_handler_t* self,
|
||||
@@ -161,7 +161,7 @@ typedef struct _cef_extension_handler_t {
|
||||
// tabId parameter (e.g. chrome.tabs.*). |extension| and |browser| are the
|
||||
// source of the API call. Return the browser that will be acted on by the API
|
||||
// call or return NULL to act on |browser|. The returned browser must share
|
||||
// the same cef_request_tContext as |browser|. Incognito browsers should not
|
||||
// the same cef_request_context_t as |browser|. Incognito browsers should not
|
||||
// be considered unless the source extension has incognito access enabled, in
|
||||
// which case |include_incognito| will be true (1).
|
||||
///
|
||||
|
345
include/capi/cef_media_router_capi.h
Normal file
345
include/capi/cef_media_router_capi.h
Normal file
@@ -0,0 +1,345 @@
|
||||
// Copyright (c) 2020 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=4f4a0d76efaf87055ebf5e784f5d1b69fafdabc2$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_MEDIA_ROUTER_CAPI_H_
|
||||
#define CEF_INCLUDE_CAPI_CEF_MEDIA_ROUTER_CAPI_H_
|
||||
#pragma once
|
||||
|
||||
#include "include/capi/cef_base_capi.h"
|
||||
#include "include/capi/cef_registration_capi.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct _cef_media_observer_t;
|
||||
struct _cef_media_route_create_callback_t;
|
||||
struct _cef_media_route_t;
|
||||
struct _cef_media_sink_device_info_callback_t;
|
||||
struct _cef_media_sink_t;
|
||||
struct _cef_media_source_t;
|
||||
|
||||
///
|
||||
// Supports discovery of and communication with media devices on the local
|
||||
// network via the Cast and DIAL protocols. The functions of this structure may
|
||||
// be called on any browser process thread unless otherwise indicated.
|
||||
///
|
||||
typedef struct _cef_media_router_t {
|
||||
///
|
||||
// Base structure.
|
||||
///
|
||||
cef_base_ref_counted_t base;
|
||||
|
||||
///
|
||||
// Add an observer for MediaRouter events. The observer will remain registered
|
||||
// until the returned Registration object is destroyed.
|
||||
///
|
||||
struct _cef_registration_t*(CEF_CALLBACK* add_observer)(
|
||||
struct _cef_media_router_t* self,
|
||||
struct _cef_media_observer_t* observer);
|
||||
|
||||
///
|
||||
// Returns a MediaSource object for the specified media source URN. Supported
|
||||
// URN schemes include "cast:" and "dial:", and will be already known by the
|
||||
// client application (e.g. "cast:<appId>?clientId=<clientId>").
|
||||
///
|
||||
struct _cef_media_source_t*(CEF_CALLBACK* get_source)(
|
||||
struct _cef_media_router_t* self,
|
||||
const cef_string_t* urn);
|
||||
|
||||
///
|
||||
// Trigger an asynchronous call to cef_media_observer_t::OnSinks on all
|
||||
// registered observers.
|
||||
///
|
||||
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
|
||||
// valid, compatible (as reported by cef_media_sink_t::IsCompatibleWith), and
|
||||
// a route between them must not already exist. |callback| will be executed on
|
||||
// success or failure. If route creation succeeds it will also trigger an
|
||||
// asynchronous call to cef_media_observer_t::OnRoutes on all registered
|
||||
// observers.
|
||||
///
|
||||
void(CEF_CALLBACK* create_route)(
|
||||
struct _cef_media_router_t* self,
|
||||
struct _cef_media_source_t* source,
|
||||
struct _cef_media_sink_t* sink,
|
||||
struct _cef_media_route_create_callback_t* callback);
|
||||
|
||||
///
|
||||
// Trigger an asynchronous call to cef_media_observer_t::OnRoutes on all
|
||||
// registered observers.
|
||||
///
|
||||
void(CEF_CALLBACK* notify_current_routes)(struct _cef_media_router_t* self);
|
||||
} cef_media_router_t;
|
||||
|
||||
///
|
||||
// Returns the MediaRouter object associated with the global request context.
|
||||
// Equivalent to calling cef_request_context_t::cef_request_context_get_global_c
|
||||
// ontext()->get_media_router().
|
||||
///
|
||||
CEF_EXPORT cef_media_router_t* cef_media_router_get_global();
|
||||
|
||||
///
|
||||
// Implemented by the client to observe MediaRouter events and registered via
|
||||
// cef_media_router_t::AddObserver. The functions of this structure will be
|
||||
// called on the browser process UI thread.
|
||||
///
|
||||
typedef struct _cef_media_observer_t {
|
||||
///
|
||||
// Base structure.
|
||||
///
|
||||
cef_base_ref_counted_t base;
|
||||
|
||||
///
|
||||
// The list of available media sinks has changed or
|
||||
// cef_media_router_t::NotifyCurrentSinks was called.
|
||||
///
|
||||
void(CEF_CALLBACK* on_sinks)(struct _cef_media_observer_t* self,
|
||||
size_t sinksCount,
|
||||
struct _cef_media_sink_t* const* sinks);
|
||||
|
||||
///
|
||||
// The list of available media routes has changed or
|
||||
// cef_media_router_t::NotifyCurrentRoutes was called.
|
||||
///
|
||||
void(CEF_CALLBACK* on_routes)(struct _cef_media_observer_t* self,
|
||||
size_t routesCount,
|
||||
struct _cef_media_route_t* const* routes);
|
||||
|
||||
///
|
||||
// The connection state of |route| has changed.
|
||||
///
|
||||
void(CEF_CALLBACK* on_route_state_changed)(
|
||||
struct _cef_media_observer_t* self,
|
||||
struct _cef_media_route_t* route,
|
||||
cef_media_route_connection_state_t state);
|
||||
|
||||
///
|
||||
// A message was recieved over |route|. |message| is only valid for the scope
|
||||
// of this callback and should be copied if necessary.
|
||||
///
|
||||
void(CEF_CALLBACK* on_route_message_received)(
|
||||
struct _cef_media_observer_t* self,
|
||||
struct _cef_media_route_t* route,
|
||||
const void* message,
|
||||
size_t message_size);
|
||||
} cef_media_observer_t;
|
||||
|
||||
///
|
||||
// Represents the route between a media source and sink. Instances of this
|
||||
// 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
|
||||
// operation. The functions of this structure may be called on any browser
|
||||
// process thread unless otherwise indicated.
|
||||
///
|
||||
typedef struct _cef_media_route_t {
|
||||
///
|
||||
// Base structure.
|
||||
///
|
||||
cef_base_ref_counted_t base;
|
||||
|
||||
///
|
||||
// Returns the ID for this route.
|
||||
///
|
||||
// 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);
|
||||
|
||||
///
|
||||
// Returns the source associated with this route.
|
||||
///
|
||||
struct _cef_media_source_t*(CEF_CALLBACK* get_source)(
|
||||
struct _cef_media_route_t* self);
|
||||
|
||||
///
|
||||
// Returns the sink associated with this route.
|
||||
///
|
||||
struct _cef_media_sink_t*(CEF_CALLBACK* get_sink)(
|
||||
struct _cef_media_route_t* self);
|
||||
|
||||
///
|
||||
// Send a message over this route. |message| will be copied if necessary.
|
||||
///
|
||||
void(CEF_CALLBACK* send_route_message)(struct _cef_media_route_t* self,
|
||||
const void* message,
|
||||
size_t message_size);
|
||||
|
||||
///
|
||||
// Terminate this route. Will result in an asynchronous call to
|
||||
// cef_media_observer_t::OnRoutes on all registered observers.
|
||||
///
|
||||
void(CEF_CALLBACK* terminate)(struct _cef_media_route_t* self);
|
||||
} cef_media_route_t;
|
||||
|
||||
///
|
||||
// Callback structure for cef_media_router_t::CreateRoute. The functions of this
|
||||
// structure will be called on the browser process UI thread.
|
||||
///
|
||||
typedef struct _cef_media_route_create_callback_t {
|
||||
///
|
||||
// Base structure.
|
||||
///
|
||||
cef_base_ref_counted_t base;
|
||||
|
||||
///
|
||||
// Method that will be executed when the route creation has finished. |result|
|
||||
// will be CEF_MRCR_OK if the route creation succeeded. |error| will be a
|
||||
// description of the error if the route creation failed. |route| is the
|
||||
// resulting route, or NULL if the route creation failed.
|
||||
///
|
||||
void(CEF_CALLBACK* on_media_route_create_finished)(
|
||||
struct _cef_media_route_create_callback_t* self,
|
||||
cef_media_route_create_result_t result,
|
||||
const cef_string_t* error,
|
||||
struct _cef_media_route_t* route);
|
||||
} cef_media_route_create_callback_t;
|
||||
|
||||
///
|
||||
// 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
|
||||
// may be called on any browser process thread unless otherwise indicated.
|
||||
///
|
||||
typedef struct _cef_media_sink_t {
|
||||
///
|
||||
// Base structure.
|
||||
///
|
||||
cef_base_ref_counted_t base;
|
||||
|
||||
///
|
||||
// Returns the ID for this sink.
|
||||
///
|
||||
// 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);
|
||||
|
||||
///
|
||||
// Returns the name of this sink.
|
||||
///
|
||||
// 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);
|
||||
|
||||
///
|
||||
// Returns the description of 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)(
|
||||
struct _cef_media_sink_t* self);
|
||||
|
||||
///
|
||||
// Asynchronously retrieves device info.
|
||||
///
|
||||
void(CEF_CALLBACK* get_device_info)(
|
||||
struct _cef_media_sink_t* self,
|
||||
struct _cef_media_sink_device_info_callback_t* callback);
|
||||
|
||||
///
|
||||
// Returns true (1) if this sink accepts content via Cast.
|
||||
///
|
||||
int(CEF_CALLBACK* is_cast_sink)(struct _cef_media_sink_t* self);
|
||||
|
||||
///
|
||||
// Returns true (1) if this sink accepts content via DIAL.
|
||||
///
|
||||
int(CEF_CALLBACK* is_dial_sink)(struct _cef_media_sink_t* self);
|
||||
|
||||
///
|
||||
// Returns true (1) if this sink is compatible with |source|.
|
||||
///
|
||||
int(CEF_CALLBACK* is_compatible_with)(struct _cef_media_sink_t* self,
|
||||
struct _cef_media_source_t* source);
|
||||
} cef_media_sink_t;
|
||||
|
||||
///
|
||||
// Callback structure for cef_media_sink_t::GetDeviceInfo. The functions of this
|
||||
// structure will be called on the browser process UI thread.
|
||||
///
|
||||
typedef struct _cef_media_sink_device_info_callback_t {
|
||||
///
|
||||
// Base structure.
|
||||
///
|
||||
cef_base_ref_counted_t base;
|
||||
|
||||
///
|
||||
// Method that will be executed asyncronously once device information has been
|
||||
// retrieved.
|
||||
///
|
||||
void(CEF_CALLBACK* on_media_sink_device_info)(
|
||||
struct _cef_media_sink_device_info_callback_t* self,
|
||||
const struct _cef_media_sink_device_info_t* device_info);
|
||||
} cef_media_sink_device_info_callback_t;
|
||||
|
||||
///
|
||||
// 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
|
||||
// structure may be called on any browser process thread unless otherwise
|
||||
// indicated.
|
||||
///
|
||||
typedef struct _cef_media_source_t {
|
||||
///
|
||||
// Base structure.
|
||||
///
|
||||
cef_base_ref_counted_t base;
|
||||
|
||||
///
|
||||
// Returns the ID (media source URN or URL) for this source.
|
||||
///
|
||||
// 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);
|
||||
|
||||
///
|
||||
// Returns true (1) if this source outputs its content via Cast.
|
||||
///
|
||||
int(CEF_CALLBACK* is_cast_source)(struct _cef_media_source_t* self);
|
||||
|
||||
///
|
||||
// Returns true (1) if this source outputs its content via DIAL.
|
||||
///
|
||||
int(CEF_CALLBACK* is_dial_source)(struct _cef_media_source_t* self);
|
||||
} cef_media_source_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // CEF_INCLUDE_CAPI_CEF_MEDIA_ROUTER_CAPI_H_
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=3bc4225f43428d8a3a24dcac1830dafac18b0caf$
|
||||
// $hash=19337a70a13352e70452be7fcc25ef2de4b1ae4c$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_PARSER_CAPI_H_
|
||||
@@ -140,16 +140,24 @@ CEF_EXPORT struct _cef_value_t* cef_parse_json(
|
||||
const cef_string_t* json_string,
|
||||
cef_json_parser_options_t options);
|
||||
|
||||
///
|
||||
// Parses the specified UTF8-encoded |json| buffer of size |json_size| and
|
||||
// returns a dictionary or list representation. If JSON parsing fails this
|
||||
// function returns NULL.
|
||||
///
|
||||
CEF_EXPORT struct _cef_value_t* cef_parse_json_buffer(
|
||||
const void* json,
|
||||
size_t json_size,
|
||||
cef_json_parser_options_t options);
|
||||
|
||||
///
|
||||
// Parses the specified |json_string| and returns a dictionary or list
|
||||
// representation. If JSON parsing fails this function returns NULL and
|
||||
// populates |error_code_out| and |error_msg_out| with an error code and a
|
||||
// formatted error message respectively.
|
||||
// populates |error_msg_out| with a formatted error message.
|
||||
///
|
||||
CEF_EXPORT struct _cef_value_t* cef_parse_jsonand_return_error(
|
||||
const cef_string_t* json_string,
|
||||
cef_json_parser_options_t options,
|
||||
cef_json_parser_error_t* error_code_out,
|
||||
cef_string_t* error_msg_out);
|
||||
|
||||
///
|
||||
|
63
include/capi/cef_registration_capi.h
Normal file
63
include/capi/cef_registration_capi.h
Normal file
@@ -0,0 +1,63 @@
|
||||
// Copyright (c) 2020 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=029e237cf80f94a25453bac5a9b1e0765bb56f37$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_REGISTRATION_CAPI_H_
|
||||
#define CEF_INCLUDE_CAPI_CEF_REGISTRATION_CAPI_H_
|
||||
#pragma once
|
||||
|
||||
#include "include/capi/cef_base_capi.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
///
|
||||
// Generic callback structure used for managing the lifespan of a registration.
|
||||
///
|
||||
typedef struct _cef_registration_t {
|
||||
///
|
||||
// Base structure.
|
||||
///
|
||||
cef_base_ref_counted_t base;
|
||||
} cef_registration_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // CEF_INCLUDE_CAPI_CEF_REGISTRATION_CAPI_H_
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=e642fc1fe3b97a90c0eae7f0fc0a5cfd385e3e17$
|
||||
// $hash=f9806cd79f33b6a762fff25edd4189ae42bc8fd2$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_RENDER_HANDLER_CAPI_H_
|
||||
@@ -159,17 +159,6 @@ typedef struct _cef_render_handler_t {
|
||||
cef_rect_t const* dirtyRects,
|
||||
void* shared_handle);
|
||||
|
||||
///
|
||||
// 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.
|
||||
///
|
||||
void(CEF_CALLBACK* on_cursor_change)(
|
||||
struct _cef_render_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
cef_cursor_handle_t cursor,
|
||||
cef_cursor_type_t type,
|
||||
const struct _cef_cursor_info_t* custom_cursor_info);
|
||||
|
||||
///
|
||||
// Called when the user starts dragging content in the web view. Contextual
|
||||
// information about the dragged content is supplied by |drag_data|. (|x|,
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=3630a82a4ea731b43ed4ba468a57c5dfe15f8679$
|
||||
// $hash=8419eb3eba9dd372b019bd367d4f195433b21c9b$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_RENDER_PROCESS_HANDLER_CAPI_H_
|
||||
@@ -64,16 +64,6 @@ typedef struct _cef_render_process_handler_t {
|
||||
///
|
||||
cef_base_ref_counted_t base;
|
||||
|
||||
///
|
||||
// Called after the render process main thread has been created. |extra_info|
|
||||
// is a read-only value originating from
|
||||
// cef_browser_process_handler_t::on_render_process_thread_created(). Do not
|
||||
// keep a reference to |extra_info| outside of this function.
|
||||
///
|
||||
void(CEF_CALLBACK* on_render_thread_created)(
|
||||
struct _cef_render_process_handler_t* self,
|
||||
struct _cef_list_value_t* extra_info);
|
||||
|
||||
///
|
||||
// Called after WebKit has been initialized.
|
||||
///
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=451a33c751f88091d9421fd499f2e32d4a227fcc$
|
||||
// $hash=7ce0953f069204a4dd2037c4a05ac9454c5e66a6$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_CAPI_H_
|
||||
@@ -44,6 +44,7 @@
|
||||
#include "include/capi/cef_cookie_capi.h"
|
||||
#include "include/capi/cef_extension_capi.h"
|
||||
#include "include/capi/cef_extension_handler_capi.h"
|
||||
#include "include/capi/cef_media_router_capi.h"
|
||||
#include "include/capi/cef_values_capi.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -54,7 +55,7 @@ struct _cef_request_context_handler_t;
|
||||
struct _cef_scheme_handler_factory_t;
|
||||
|
||||
///
|
||||
// Callback structure for cef_request_tContext::ResolveHost.
|
||||
// Callback structure for cef_request_context_t::ResolveHost.
|
||||
///
|
||||
typedef struct _cef_resolve_callback_t {
|
||||
///
|
||||
@@ -168,7 +169,7 @@ typedef struct _cef_request_context_t {
|
||||
// Tells all renderer processes associated with this context to throw away
|
||||
// their plugin list cache. If |reload_pages| is true (1) they will also
|
||||
// reload all pages with plugins.
|
||||
// cef_request_tContextHandler::OnBeforePluginLoad may be called to rebuild
|
||||
// cef_request_context_handler_t::OnBeforePluginLoad may be called to rebuild
|
||||
// the plugin list cache.
|
||||
///
|
||||
void(CEF_CALLBACK* purge_plugin_list_cache)(
|
||||
@@ -228,7 +229,7 @@ typedef struct _cef_request_context_t {
|
||||
|
||||
///
|
||||
// Clears all certificate exceptions that were added as part of handling
|
||||
// cef_request_tHandler::on_certificate_error(). If you call this it is
|
||||
// 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
|
||||
@@ -250,7 +251,7 @@ typedef struct _cef_request_context_t {
|
||||
///
|
||||
// Clears all active and idle connections that Chromium currently has. This is
|
||||
// only recommended if you have released all other CEF objects but don't yet
|
||||
// want to call Cefshutdown(). If |callback| is non-NULL it will be executed
|
||||
// want to call cef_shutdown(). If |callback| is non-NULL it will be executed
|
||||
// on the UI thread after completion.
|
||||
///
|
||||
void(CEF_CALLBACK* close_all_connections)(
|
||||
@@ -271,8 +272,8 @@ typedef struct _cef_request_context_t {
|
||||
// If extension resources will be read from disk using the default load
|
||||
// implementation then |root_directory| should be the absolute path to the
|
||||
// extension resources directory and |manifest| should be NULL. If extension
|
||||
// resources will be provided by the client (e.g. via cef_request_tHandler
|
||||
// and/or cef_extension_tHandler) then |root_directory| should be a path
|
||||
// resources will be provided by the client (e.g. via cef_request_handler_t
|
||||
// and/or cef_extension_handler_t) then |root_directory| should be a path
|
||||
// component unique to the extension (if not absolute this will be internally
|
||||
// prefixed with the PK_DIR_RESOURCES path) and |manifest| should contain the
|
||||
// contents that would otherwise be read from the "manifest.json" file on
|
||||
@@ -281,17 +282,17 @@ typedef struct _cef_request_context_t {
|
||||
// The loaded extension will be accessible in all contexts sharing the same
|
||||
// storage (HasExtension returns true (1)). However, only the context on which
|
||||
// this function was called is considered the loader (DidLoadExtension returns
|
||||
// true (1)) and only the loader will receive cef_request_tContextHandler
|
||||
// true (1)) and only the loader will receive cef_request_context_handler_t
|
||||
// callbacks for the extension.
|
||||
//
|
||||
// cef_extension_tHandler::OnExtensionLoaded will be called on load success or
|
||||
// cef_extension_tHandler::OnExtensionLoadFailed will be called on load
|
||||
// cef_extension_handler_t::OnExtensionLoaded will be called on load success
|
||||
// or cef_extension_handler_t::OnExtensionLoadFailed will be called on load
|
||||
// failure.
|
||||
//
|
||||
// If the extension specifies a background script via the "background"
|
||||
// manifest key then cef_extension_tHandler::OnBeforeBackgroundBrowser will be
|
||||
// called to create the background browser. See that function for additional
|
||||
// information about background scripts.
|
||||
// manifest key then cef_extension_handler_t::OnBeforeBackgroundBrowser will
|
||||
// be called to create the background browser. See that function for
|
||||
// additional information about background scripts.
|
||||
//
|
||||
// For visible extension views the client application should evaluate the
|
||||
// manifest to determine the correct extension URL to load and then pass that
|
||||
@@ -353,6 +354,12 @@ typedef struct _cef_request_context_t {
|
||||
struct _cef_extension_t*(CEF_CALLBACK* get_extension)(
|
||||
struct _cef_request_context_t* self,
|
||||
const cef_string_t* extension_id);
|
||||
|
||||
///
|
||||
// Returns the MediaRouter object associated with this context.
|
||||
///
|
||||
struct _cef_media_router_t*(CEF_CALLBACK* get_media_router)(
|
||||
struct _cef_request_context_t* self);
|
||||
} cef_request_context_t;
|
||||
|
||||
///
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=fe927e3bff2650b45332e053b63fb61d712313db$
|
||||
// $hash=e758d8c53334b91bce818cc6e9f84915778d7827$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_HANDLER_CAPI_H_
|
||||
@@ -87,7 +87,7 @@ typedef struct _cef_request_context_handler_t {
|
||||
// |plugin_policy| to PLUGIN_POLICY_DISABLED may be cached when
|
||||
// |top_origin_url| is NULL. To purge the plugin list cache and potentially
|
||||
// trigger new calls to this function call
|
||||
// cef_request_tContext::PurgePluginListCache.
|
||||
// cef_request_context_t::PurgePluginListCache.
|
||||
///
|
||||
int(CEF_CALLBACK* on_before_plugin_load)(
|
||||
struct _cef_request_context_handler_t* self,
|
||||
@@ -113,7 +113,7 @@ typedef struct _cef_request_context_handler_t {
|
||||
// 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_tHandler::GetResourceRequestHandler for the same request
|
||||
// cef_request_handler_t::GetResourceRequestHandler for the same request
|
||||
// (identified by cef_request_t::GetIdentifier).
|
||||
///
|
||||
struct _cef_resource_request_handler_t*(
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=f0543a081b43ad33a0e02bdf8b59207d4352ef36$
|
||||
// $hash=0167eb1abe614bd6391d273a8085fa3e53e7c217$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_HANDLER_CAPI_H_
|
||||
@@ -138,8 +138,8 @@ typedef struct _cef_request_handler_t {
|
||||
// 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. If this callback returns NULL the
|
||||
// same function will be called on the associated cef_request_tContextHandler,
|
||||
// if any.
|
||||
// same function will be called on the associated
|
||||
// cef_request_context_handler_t, if any.
|
||||
///
|
||||
struct _cef_resource_request_handler_t*(
|
||||
CEF_CALLBACK* get_resource_request_handler)(
|
||||
@@ -180,8 +180,8 @@ typedef struct _cef_request_handler_t {
|
||||
// size via the webkitStorageInfo.requestQuota function. |origin_url| is the
|
||||
// origin of the page making the request. |new_size| is the requested quota
|
||||
// size in bytes. Return true (1) to continue the request and call
|
||||
// cef_request_tCallback::cont() either in this function or at a later time to
|
||||
// grant or deny the request. Return false (0) to cancel the request
|
||||
// cef_request_callback_t::cont() either in this function or at a later time
|
||||
// to grant or deny the request. Return false (0) to cancel the request
|
||||
// immediately.
|
||||
///
|
||||
int(CEF_CALLBACK* on_quota_request)(struct _cef_request_handler_t* self,
|
||||
@@ -192,7 +192,7 @@ typedef struct _cef_request_handler_t {
|
||||
|
||||
///
|
||||
// Called on the UI thread to handle requests for URLs with an invalid SSL
|
||||
// certificate. Return true (1) and call cef_request_tCallback::cont() either
|
||||
// certificate. Return true (1) and call cef_request_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. If
|
||||
// CefSettings.ignore_certificate_errors is set all invalid certificates will
|
||||
@@ -253,6 +253,14 @@ typedef struct _cef_request_handler_t {
|
||||
struct _cef_request_handler_t* self,
|
||||
struct _cef_browser_t* browser,
|
||||
cef_termination_status_t status);
|
||||
|
||||
///
|
||||
// Called on the browser process UI thread when the window.document object of
|
||||
// the main frame has been created.
|
||||
///
|
||||
void(CEF_CALLBACK* on_document_available_in_main_frame)(
|
||||
struct _cef_request_handler_t* self,
|
||||
struct _cef_browser_t* browser);
|
||||
} cef_request_handler_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=a2203cb5bfab20cd4128a11557915c22f21033b8$
|
||||
// $hash=b0e2b63b467c6d4e990405d948908da3546ea1c7$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_BUNDLE_CAPI_H_
|
||||
@@ -41,6 +41,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "include/capi/cef_base_capi.h"
|
||||
#include "include/capi/cef_values_capi.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -48,7 +49,7 @@ extern "C" {
|
||||
|
||||
///
|
||||
// Structure used for retrieving resources from the resource bundle (*.pak)
|
||||
// files loaded by CEF during startup or via the cef_resource_bundle_tHandler
|
||||
// files loaded by CEF during startup or via the cef_resource_bundle_handler_t
|
||||
// returned from cef_app_t::GetResourceBundleHandler. See CefSettings for
|
||||
// additional options related to resource bundle loading. The functions of this
|
||||
// structure may be called on any thread unless otherwise indicated.
|
||||
@@ -70,34 +71,25 @@ typedef struct _cef_resource_bundle_t {
|
||||
int string_id);
|
||||
|
||||
///
|
||||
// Retrieves the contents of the specified scale independent |resource_id|. If
|
||||
// the value is found then |data| and |data_size| will be populated and this
|
||||
// function will return true (1). If the value is not found then this function
|
||||
// will return false (0). The returned |data| pointer will remain resident in
|
||||
// memory and should not be freed. Include cef_pack_resources.h for a listing
|
||||
// of valid resource ID values.
|
||||
// Returns a cef_binary_value_t containing the decompressed contents of the
|
||||
// specified scale independent |resource_id| or NULL if not found. Include
|
||||
// cef_pack_resources.h for a listing of valid resource ID values.
|
||||
///
|
||||
int(CEF_CALLBACK* get_data_resource)(struct _cef_resource_bundle_t* self,
|
||||
int resource_id,
|
||||
void** data,
|
||||
size_t* data_size);
|
||||
struct _cef_binary_value_t*(CEF_CALLBACK* get_data_resource)(
|
||||
struct _cef_resource_bundle_t* self,
|
||||
int resource_id);
|
||||
|
||||
///
|
||||
// Retrieves the contents of the specified |resource_id| nearest the scale
|
||||
// factor |scale_factor|. Use a |scale_factor| value of SCALE_FACTOR_NONE for
|
||||
// scale independent resources or call GetDataResource instead. If the value
|
||||
// is found then |data| and |data_size| will be populated and this function
|
||||
// will return true (1). If the value is not found then this function will
|
||||
// return false (0). The returned |data| pointer will remain resident in
|
||||
// memory and should not be freed. Include cef_pack_resources.h for a listing
|
||||
// of valid resource ID values.
|
||||
// Returns a cef_binary_value_t containing the decompressed contents of the
|
||||
// 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
|
||||
// independent resources or call GetDataResource instead.Include
|
||||
// cef_pack_resources.h for a listing of valid resource ID values.
|
||||
///
|
||||
int(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,
|
||||
int resource_id,
|
||||
cef_scale_factor_t scale_factor,
|
||||
void** data,
|
||||
size_t* data_size);
|
||||
cef_scale_factor_t scale_factor);
|
||||
} cef_resource_bundle_t;
|
||||
|
||||
///
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=67463808f6bacde8afd0c0af6c4459a8981adfa2$
|
||||
// $hash=afc96f188710bd336d09ce479a650aaa3a55357a$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_REQUEST_HANDLER_CAPI_H_
|
||||
@@ -87,7 +87,7 @@ typedef struct _cef_resource_request_handler_t {
|
||||
// or change the resource load optionally modify |request|. Modification of
|
||||
// the request URL will be treated as a redirect. Return RV_CONTINUE to
|
||||
// continue the request immediately. Return RV_CONTINUE_ASYNC and call
|
||||
// cef_request_tCallback:: cont() at a later time to continue or cancel the
|
||||
// cef_request_callback_t:: cont() at a later time to continue or cancel the
|
||||
// request asynchronously. Return RV_CANCEL to cancel the request immediately.
|
||||
//
|
||||
///
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=324e2fd030633115fb8f788da1d07496821a6f58$
|
||||
// $hash=d93b4ad0b71ffe0a05326b39c3ed0bdb26a73fac$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_SCHEME_CAPI_H_
|
||||
@@ -115,9 +115,9 @@ typedef struct _cef_scheme_handler_factory_t {
|
||||
// function may be called multiple times to change or remove the factory that
|
||||
// matches the specified |scheme_name| and optional |domain_name|. Returns false
|
||||
// (0) if an error occurs. This function may be called on any thread in the
|
||||
// browser process. Using this function is equivalent to calling cef_request_tCo
|
||||
// ntext::cef_request_context_get_global_context()->register_scheme_handler_fact
|
||||
// ory().
|
||||
// browser process. Using this function is equivalent to calling cef_request_con
|
||||
// text_t::cef_request_context_get_global_context()->register_scheme_handler_fac
|
||||
// tory().
|
||||
///
|
||||
CEF_EXPORT int cef_register_scheme_handler_factory(
|
||||
const cef_string_t* scheme_name,
|
||||
@@ -128,8 +128,8 @@ CEF_EXPORT int cef_register_scheme_handler_factory(
|
||||
// Clear all scheme handler factories registered with the global request
|
||||
// context. Returns false (0) on error. This function may be called on any
|
||||
// thread in the browser process. Using this function is equivalent to calling c
|
||||
// ef_request_tContext::cef_request_context_get_global_context()->clear_scheme_h
|
||||
// andler_factories().
|
||||
// ef_request_context_t::cef_request_context_get_global_context()->clear_scheme_
|
||||
// handler_factories().
|
||||
///
|
||||
CEF_EXPORT int cef_clear_scheme_handler_factories();
|
||||
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=3ecfe39286ee3579eb38415ab36d3fec83712abc$
|
||||
// $hash=025daa5db3bf16029953da7703e3e5968bd97fe2$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_TASK_CAPI_H_
|
||||
@@ -132,19 +132,19 @@ CEF_EXPORT cef_task_runner_t* cef_task_runner_get_for_thread(
|
||||
|
||||
///
|
||||
// Returns true (1) if called on the specified thread. Equivalent to using
|
||||
// cef_task_tRunner::GetForThread(threadId)->belongs_to_current_thread().
|
||||
// cef_task_runner_t::GetForThread(threadId)->belongs_to_current_thread().
|
||||
///
|
||||
CEF_EXPORT int cef_currently_on(cef_thread_id_t threadId);
|
||||
|
||||
///
|
||||
// Post a task for execution on the specified thread. Equivalent to using
|
||||
// cef_task_tRunner::GetForThread(threadId)->PostTask(task).
|
||||
// cef_task_runner_t::GetForThread(threadId)->PostTask(task).
|
||||
///
|
||||
CEF_EXPORT int cef_post_task(cef_thread_id_t threadId, cef_task_t* task);
|
||||
|
||||
///
|
||||
// Post a task for delayed execution on the specified thread. Equivalent to
|
||||
// using cef_task_tRunner::GetForThread(threadId)->PostDelayedTask(task,
|
||||
// using cef_task_runner_t::GetForThread(threadId)->PostDelayedTask(task,
|
||||
// delay_ms).
|
||||
///
|
||||
CEF_EXPORT int cef_post_delayed_task(cef_thread_id_t threadId,
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=1f462f42bf69d259b876c1ad8245a3e0484b3804$
|
||||
// $hash=d443c0990241554b548bc946f46f35582445e818$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_THREAD_CAPI_H_
|
||||
@@ -49,7 +49,7 @@ extern "C" {
|
||||
|
||||
///
|
||||
// A simple thread abstraction that establishes a message loop on a new thread.
|
||||
// The consumer uses cef_task_tRunner to execute code on the thread's message
|
||||
// The consumer uses cef_task_runner_t to execute code on the thread's message
|
||||
// loop. The thread is terminated when the cef_thread_t object is destroyed or
|
||||
// stop() is called. All pending tasks queued on the thread's message loop will
|
||||
// run to completion before the thread is terminated. cef_thread_create() can be
|
||||
@@ -65,7 +65,7 @@ typedef struct _cef_thread_t {
|
||||
cef_base_ref_counted_t base;
|
||||
|
||||
///
|
||||
// Returns the cef_task_tRunner that will execute code on this thread's
|
||||
// Returns the cef_task_runner_t that will execute code on this thread's
|
||||
// message loop. This function is safe to call from any thread.
|
||||
///
|
||||
struct _cef_task_runner_t*(CEF_CALLBACK* get_task_runner)(
|
||||
@@ -98,8 +98,8 @@ typedef struct _cef_thread_t {
|
||||
// identify the thread. |priority| is the thread execution priority.
|
||||
// |message_loop_type| indicates the set of asynchronous events that the thread
|
||||
// can process. If |stoppable| is true (1) the thread will stopped and joined on
|
||||
// destruction or when stop() is called; otherwise, the the thread cannot be
|
||||
// stopped and will be leaked on shutdown. On Windows the |com_init_mode| value
|
||||
// destruction or when stop() is called; otherwise, the thread cannot be stopped
|
||||
// and will be leaked on shutdown. On Windows the |com_init_mode| value
|
||||
// specifies how COM will be initialized for the thread. If |com_init_mode| is
|
||||
// set to COM_INIT_MODE_STA then |message_loop_type| must be set to ML_TYPE_UI.
|
||||
///
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=e40cee272e6edd3789896bef6b43e05cc517c424$
|
||||
// $hash=75f4f7a9ff628a6ae699a697722caa5d49546784$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_URLREQUEST_CAPI_H_
|
||||
@@ -115,20 +115,13 @@ typedef struct _cef_urlrequest_t {
|
||||
// Create a new URL request that is not associated with a specific browser or
|
||||
// frame. Use cef_frame_t::CreateURLRequest instead if you want the request to
|
||||
// have this association, in which case it may be handled differently (see
|
||||
// documentation on that function). Requests may originate from the both browser
|
||||
// process and the render process.
|
||||
//
|
||||
// For requests originating from the browser process:
|
||||
// documentation on that function). A request created with this function may
|
||||
// only originate from the browser process, and will behave as follows:
|
||||
// - It may be intercepted by the client via CefResourceRequestHandler or
|
||||
// CefSchemeHandlerFactory.
|
||||
// - POST data may only contain only a single element of type PDE_TYPE_FILE
|
||||
// or PDE_TYPE_BYTES.
|
||||
// - If |request_context| is empty the global request context will be used.
|
||||
// For requests originating from the render process:
|
||||
// - It cannot be intercepted by the client so only http(s) and blob schemes
|
||||
// are supported.
|
||||
// - POST data may only contain a single element of type PDE_TYPE_BYTES.
|
||||
// - The |request_context| parameter must be NULL.
|
||||
//
|
||||
// The |request| object will be marked as read-only after calling this function.
|
||||
///
|
||||
@@ -195,7 +188,7 @@ typedef struct _cef_urlrequest_client_t {
|
||||
// the request and call cef_auth_callback_t::cont() when the authentication
|
||||
// information is available. If the request has an associated browser/frame
|
||||
// then returning false (0) will result in a call to GetAuthCredentials on the
|
||||
// cef_request_tHandler associated with that browser, if any. Otherwise,
|
||||
// cef_request_handler_t associated with that browser, if any. Otherwise,
|
||||
// returning false (0) will cancel the request immediately. This function will
|
||||
// only be called for requests initiated from the browser process.
|
||||
///
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=deae5180f995f35ff2db04b2c5396577300c315b$
|
||||
// $hash=a5d8033127cf2d21f1cb0c87f76d2d59ec3eace0$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_TEST_CEF_TRANSLATOR_TEST_CAPI_H_
|
||||
@@ -323,7 +323,7 @@ typedef struct _cef_translator_test_t {
|
||||
|
||||
///
|
||||
// Set an object. Returns the value from
|
||||
// cef_translator_test_tRefPtrClient::get_value(). This tests input and
|
||||
// cef_translator_test_ref_ptr_client_t::get_value(). This tests input and
|
||||
// execution of a client-side object type.
|
||||
///
|
||||
int(CEF_CALLBACK* set_ref_ptr_client)(
|
||||
@@ -341,7 +341,7 @@ typedef struct _cef_translator_test_t {
|
||||
|
||||
///
|
||||
// Set a child object. Returns the value from
|
||||
// cef_translator_test_tRefPtrClient::get_value(). This tests input of a
|
||||
// cef_translator_test_ref_ptr_client_t::get_value(). This tests input of a
|
||||
// client- side child object type and execution as the parent type.
|
||||
///
|
||||
int(CEF_CALLBACK* set_child_ref_ptr_client)(
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=422243fda6e1404222aca7bdd4e7b84b961a9626$
|
||||
// $hash=652ac7a90c6cd10b1cbc6ae99a549c03f36c794e$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_DISPLAY_CAPI_H_
|
||||
@@ -50,9 +50,9 @@ extern "C" {
|
||||
// This structure typically, but not always, corresponds to a physical display
|
||||
// connected to the system. A fake Display may exist on a headless system, or a
|
||||
// Display may correspond to a remote, virtual display. All size and position
|
||||
// values are in density independent pixels (DIP) unless otherwise indicated.
|
||||
// Methods must be called on the browser process UI thread unless otherwise
|
||||
// indicated.
|
||||
// values are in density independent pixel (DIP) coordinates unless otherwise
|
||||
// indicated. Methods must be called on the browser process UI thread unless
|
||||
// otherwise indicated.
|
||||
///
|
||||
typedef struct _cef_display_t {
|
||||
///
|
||||
@@ -74,27 +74,28 @@ typedef struct _cef_display_t {
|
||||
float(CEF_CALLBACK* get_device_scale_factor)(struct _cef_display_t* self);
|
||||
|
||||
///
|
||||
// Convert |point| from density independent pixels (DIP) to pixel coordinates
|
||||
// using this Display's device scale factor.
|
||||
// Convert |point| from DIP coordinates to pixel coordinates using this
|
||||
// Display's device scale factor.
|
||||
///
|
||||
void(CEF_CALLBACK* convert_point_to_pixels)(struct _cef_display_t* self,
|
||||
cef_point_t* point);
|
||||
|
||||
///
|
||||
// Convert |point| from pixel coordinates to density independent pixels (DIP)
|
||||
// using this Display's device scale factor.
|
||||
// Convert |point| from pixel coordinates to DIP coordinates using this
|
||||
// Display's device scale factor.
|
||||
///
|
||||
void(CEF_CALLBACK* convert_point_from_pixels)(struct _cef_display_t* self,
|
||||
cef_point_t* point);
|
||||
|
||||
///
|
||||
// Returns this Display's bounds. This is the full size of the display.
|
||||
// Returns this Display's bounds in DIP screen coordinates. This is the full
|
||||
// size of the display.
|
||||
///
|
||||
cef_rect_t(CEF_CALLBACK* get_bounds)(struct _cef_display_t* self);
|
||||
|
||||
///
|
||||
// Returns this Display's work area. This excludes areas of the display that
|
||||
// are occupied for window manager toolbars, etc.
|
||||
// Returns this Display's work area in DIP screen coordinates. This excludes
|
||||
// areas of the display that are occupied with window manager toolbars, etc.
|
||||
///
|
||||
cef_rect_t(CEF_CALLBACK* get_work_area)(struct _cef_display_t* self);
|
||||
|
||||
@@ -111,7 +112,7 @@ CEF_EXPORT cef_display_t* cef_display_get_primary();
|
||||
|
||||
///
|
||||
// Returns the Display nearest |point|. Set |input_pixel_coords| to true (1) if
|
||||
// |point| is in pixel coordinates instead of density independent pixels (DIP).
|
||||
// |point| is in pixel screen coordinates instead of DIP screen coordinates.
|
||||
///
|
||||
CEF_EXPORT cef_display_t* cef_display_get_nearest_point(
|
||||
const cef_point_t* point,
|
||||
@@ -119,8 +120,8 @@ CEF_EXPORT cef_display_t* cef_display_get_nearest_point(
|
||||
|
||||
///
|
||||
// Returns the Display that most closely intersects |bounds|. Set
|
||||
// |input_pixel_coords| to true (1) if |bounds| is in pixel coordinates instead
|
||||
// of density independent pixels (DIP).
|
||||
// |input_pixel_coords| to true (1) if |bounds| is in pixel screen coordinates
|
||||
// instead of DIP screen coordinates.
|
||||
///
|
||||
CEF_EXPORT cef_display_t* cef_display_get_matching_bounds(
|
||||
const cef_rect_t* bounds,
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=72d10c0974ced675d89aa54db60de845978f6319$
|
||||
// $hash=3b9789f2149c3e6d6a2e671e5427c19654442ede$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_SCROLL_VIEW_CAPI_H_
|
||||
@@ -59,7 +59,7 @@ typedef struct _cef_scroll_view_t {
|
||||
|
||||
///
|
||||
// Set the content View. The content View must have a specified size (e.g. via
|
||||
// cef_view_t::SetBounds or cef_view_tDelegate::GetPreferredSize).
|
||||
// cef_view_t::SetBounds or cef_view_delegate_t::GetPreferredSize).
|
||||
///
|
||||
void(CEF_CALLBACK* set_content_view)(struct _cef_scroll_view_t* self,
|
||||
struct _cef_view_t* view);
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=71ba0e5714400e2bea3ca564cab4527d95e4b52c$
|
||||
// $hash=06f1c03ba824052122c6217c1227931f15dadd08$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_TEXTFIELD_CAPI_H_
|
||||
@@ -219,16 +219,13 @@ typedef struct _cef_textfield_t {
|
||||
// enabled. See additional comments on execute_command().
|
||||
///
|
||||
int(CEF_CALLBACK* is_command_enabled)(struct _cef_textfield_t* self,
|
||||
int command_id);
|
||||
cef_text_field_commands_t command_id);
|
||||
|
||||
///
|
||||
// Performs the action associated with the specified command id. Valid values
|
||||
// include IDS_APP_UNDO, IDS_APP_REDO, IDS_APP_CUT, IDS_APP_COPY,
|
||||
// IDS_APP_PASTE, IDS_APP_DELETE, IDS_APP_SELECT_ALL, IDS_DELETE_* and
|
||||
// IDS_MOVE_*. See include/cef_pack_strings.h for definitions.
|
||||
// Performs the action associated with the specified command id.
|
||||
///
|
||||
void(CEF_CALLBACK* execute_command)(struct _cef_textfield_t* self,
|
||||
int command_id);
|
||||
cef_text_field_commands_t command_id);
|
||||
|
||||
///
|
||||
// Clears Edit history.
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=45b421dfcf8ee7cf61b1991a336bc65d33fbe10a$
|
||||
// $hash=55be3e44016d9861bb8e9270b52f2bf45c8a53f5$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_VIEW_CAPI_H_
|
||||
@@ -176,64 +176,72 @@ typedef struct _cef_view_t {
|
||||
int id);
|
||||
|
||||
///
|
||||
// Sets the bounds (size and position) of this View. Position is in parent
|
||||
// coordinates.
|
||||
// Sets the bounds (size and position) of this View. |bounds| is in parent
|
||||
// coordinates, or DIP screen coordinates if there is no parent.
|
||||
///
|
||||
void(CEF_CALLBACK* set_bounds)(struct _cef_view_t* self,
|
||||
const cef_rect_t* bounds);
|
||||
|
||||
///
|
||||
// Returns the bounds (size and position) of this View. Position is in parent
|
||||
// coordinates.
|
||||
// Returns the bounds (size and position) of this View in parent coordinates,
|
||||
// or DIP screen coordinates if there is no parent.
|
||||
///
|
||||
cef_rect_t(CEF_CALLBACK* get_bounds)(struct _cef_view_t* self);
|
||||
|
||||
///
|
||||
// Returns the bounds (size and position) of this View. Position is in screen
|
||||
// Returns the bounds (size and position) of this View in DIP screen
|
||||
// coordinates.
|
||||
///
|
||||
cef_rect_t(CEF_CALLBACK* get_bounds_in_screen)(struct _cef_view_t* self);
|
||||
|
||||
///
|
||||
// Sets the size of this View without changing the position.
|
||||
// Sets the size of this View without changing the position. |size| in parent
|
||||
// coordinates, or DIP screen coordinates if there is no parent.
|
||||
///
|
||||
void(CEF_CALLBACK* set_size)(struct _cef_view_t* self,
|
||||
const cef_size_t* size);
|
||||
|
||||
///
|
||||
// Returns the size of this View.
|
||||
// Returns the size of this View in parent coordinates, or DIP screen
|
||||
// coordinates if there is no parent.
|
||||
///
|
||||
cef_size_t(CEF_CALLBACK* get_size)(struct _cef_view_t* self);
|
||||
|
||||
///
|
||||
// Sets the position of this View without changing the size. |position| is in
|
||||
// parent coordinates.
|
||||
// parent coordinates, or DIP screen coordinates if there is no parent.
|
||||
///
|
||||
void(CEF_CALLBACK* set_position)(struct _cef_view_t* self,
|
||||
const cef_point_t* position);
|
||||
|
||||
///
|
||||
// Returns the position of this View. Position is in parent coordinates.
|
||||
// Returns the position of this View. Position is in parent coordinates, or
|
||||
// DIP screen coordinates if there is no parent.
|
||||
///
|
||||
cef_point_t(CEF_CALLBACK* get_position)(struct _cef_view_t* self);
|
||||
|
||||
///
|
||||
// Returns the size this View would like to be if enough space is available.
|
||||
// Size is in parent coordinates, or DIP screen coordinates if there is no
|
||||
// parent.
|
||||
///
|
||||
cef_size_t(CEF_CALLBACK* get_preferred_size)(struct _cef_view_t* self);
|
||||
|
||||
///
|
||||
// Size this View to its preferred size.
|
||||
// Size this View to its preferred size. Size is in parent coordinates, or DIP
|
||||
// screen coordinates if there is no parent.
|
||||
///
|
||||
void(CEF_CALLBACK* size_to_preferred_size)(struct _cef_view_t* self);
|
||||
|
||||
///
|
||||
// Returns the minimum size for this View.
|
||||
// Returns the minimum size for this View. Size is in parent coordinates, or
|
||||
// DIP screen coordinates if there is no parent.
|
||||
///
|
||||
cef_size_t(CEF_CALLBACK* get_minimum_size)(struct _cef_view_t* self);
|
||||
|
||||
///
|
||||
// Returns the maximum size for this View.
|
||||
// Returns the maximum size for this View. Size is in parent coordinates, or
|
||||
// DIP screen coordinates if there is no parent.
|
||||
///
|
||||
cef_size_t(CEF_CALLBACK* get_maximum_size)(struct _cef_view_t* self);
|
||||
|
||||
@@ -327,21 +335,21 @@ typedef struct _cef_view_t {
|
||||
cef_color_t(CEF_CALLBACK* get_background_color)(struct _cef_view_t* self);
|
||||
|
||||
///
|
||||
// Convert |point| from this View's coordinate system to that of the screen.
|
||||
// This View must belong to a Window when calling this function. Returns true
|
||||
// (1) if the conversion is successful or false (0) otherwise. Use
|
||||
// cef_display_t::convert_point_to_pixels() after calling this function if
|
||||
// Convert |point| from this View's coordinate system to DIP screen
|
||||
// coordinates. This View must belong to a Window when calling this function.
|
||||
// Returns true (1) if the conversion is successful or false (0) otherwise.
|
||||
// Use cef_display_t::convert_point_to_pixels() after calling this function if
|
||||
// further conversion to display-specific pixel coordinates is desired.
|
||||
///
|
||||
int(CEF_CALLBACK* convert_point_to_screen)(struct _cef_view_t* self,
|
||||
cef_point_t* point);
|
||||
|
||||
///
|
||||
// Convert |point| to this View's coordinate system from that of the screen.
|
||||
// This View must belong to a Window when calling this function. Returns true
|
||||
// (1) if the conversion is successful or false (0) otherwise. Use
|
||||
// cef_display_t::convert_point_from_pixels() before calling this function if
|
||||
// conversion from display-specific pixel coordinates is necessary.
|
||||
// Convert |point| to this View's coordinate system from DIP screen
|
||||
// coordinates. This View must belong to a Window when calling this function.
|
||||
// Returns true (1) if the conversion is successful or false (0) otherwise.
|
||||
// Use cef_display_t::convert_point_from_pixels() before calling this function
|
||||
// if conversion from display-specific pixel coordinates is necessary.
|
||||
///
|
||||
int(CEF_CALLBACK* convert_point_from_screen)(struct _cef_view_t* self,
|
||||
cef_point_t* point);
|
||||
|
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=a0cec778fbaf0b1f5c9b3ef75dc7bbeeba777a44$
|
||||
// $hash=fee25d300df47c6143b935d0f99d543ea888f55c$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_WINDOW_DELEGATE_CAPI_H_
|
||||
@@ -87,6 +87,18 @@ typedef struct _cef_window_delegate_t {
|
||||
int* is_menu,
|
||||
int* can_activate_menu);
|
||||
|
||||
///
|
||||
// Return the initial bounds for |window| in density independent pixel (DIP)
|
||||
// coordinates. If this function returns an NULL CefRect then
|
||||
// get_preferred_size() will be called to retrieve the size, and the window
|
||||
// will be placed on the screen with origin (0,0). This function can be used
|
||||
// in combination with cef_view_t::get_bounds_in_screen() to restore the
|
||||
// previous window bounds.
|
||||
///
|
||||
cef_rect_t(CEF_CALLBACK* get_initial_bounds)(
|
||||
struct _cef_window_delegate_t* self,
|
||||
struct _cef_window_t* window);
|
||||
|
||||
///
|
||||
// Return true (1) if |window| should be created without a frame or title bar.
|
||||
// The window will be resizable if can_resize() returns true (1). Use
|
||||
|
@@ -29,12 +29,7 @@
|
||||
//
|
||||
// ---------------------------------------------------------------------------
|
||||
//
|
||||
// This file was generated by the CEF translator tool. If making changes by
|
||||
// hand only do so within the body of existing method and function
|
||||
// implementations. See the translator.README.txt file in the tools directory
|
||||
// for more information.
|
||||
//
|
||||
// $hash=06d0c1ccfa43926a01cbeb3ec95ff2a001fd0b45$
|
||||
// This file was generated by the make_api_hash_header.py tool.
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_API_HASH_H_
|
||||
@@ -47,13 +42,13 @@
|
||||
// way that may cause binary incompatibility with other builds. The universal
|
||||
// hash value will change if any platform is affected whereas the platform hash
|
||||
// values will change only if that particular platform is affected.
|
||||
#define CEF_API_HASH_UNIVERSAL "3ad9591f7024619a1e2fd796c7ad51ae3a34abbb"
|
||||
#define CEF_API_HASH_UNIVERSAL "7f349b7262bfe13bda037370004f56a6081e543b"
|
||||
#if defined(OS_WIN)
|
||||
#define CEF_API_HASH_PLATFORM "3b8e38ae40c1a930227c6277c39dbc24081ccec1"
|
||||
#elif defined(OS_MACOSX)
|
||||
#define CEF_API_HASH_PLATFORM "4a77f1908fabccdb01a2d3bdbede5ca09fbaa394"
|
||||
#define CEF_API_HASH_PLATFORM "8a5523fec15255e2fb1de64deaa15dc3554b91e5"
|
||||
#elif defined(OS_MAC)
|
||||
#define CEF_API_HASH_PLATFORM "f572c8f7d3aee3cd3b85bd398b0ba43eb7fe79a0"
|
||||
#elif defined(OS_LINUX)
|
||||
#define CEF_API_HASH_PLATFORM "434da6be7db70fd90c4265118ac47ace4073c6ae"
|
||||
#define CEF_API_HASH_PLATFORM "abf4cc6ff102e5cd019aaf51f13eb30f9bfeae45"
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@@ -178,7 +178,7 @@ class CefApp : public virtual CefBaseRefCounted {
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefResourceBundleHandler> GetResourceBundleHandler() {
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
///
|
||||
@@ -187,7 +187,7 @@ class CefApp : public virtual CefBaseRefCounted {
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefBrowserProcessHandler> GetBrowserProcessHandler() {
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
///
|
||||
@@ -196,7 +196,7 @@ class CefApp : public virtual CefBaseRefCounted {
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefRenderProcessHandler> GetRenderProcessHandler() {
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
};
|
||||
|
||||
|
@@ -35,7 +35,7 @@
|
||||
#include "include/cef_base.h"
|
||||
#endif // __cplusplus
|
||||
|
||||
#if defined(OS_MACOSX) && defined(__OBJC__)
|
||||
#if defined(OS_MAC) && defined(__OBJC__)
|
||||
|
||||
#ifdef USING_CHROMIUM_INCLUDES
|
||||
|
||||
@@ -105,6 +105,6 @@ class CefScopedSendingEvent {
|
||||
|
||||
#endif // __cplusplus
|
||||
|
||||
#endif // defined(OS_MACOSX) && defined(__OBJC__)
|
||||
#endif // defined(OS_MAC) && defined(__OBJC__)
|
||||
|
||||
#endif // CEF_INCLUDE_CEF_APPLICATION_MAC_H_
|
||||
|
111
include/cef_audio_handler.h
Normal file
111
include/cef_audio_handler.h
Normal file
@@ -0,0 +1,111 @@
|
||||
// Copyright (c) 2019 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.
|
||||
//
|
||||
// ---------------------------------------------------------------------------
|
||||
//
|
||||
// The contents of this file must follow a specific format in order to
|
||||
// support the CEF translator tool. See the translator.README.txt file in the
|
||||
// tools directory for more information.
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CEF_AUDIO_HANDLER_H_
|
||||
#define CEF_INCLUDE_CEF_AUDIO_HANDLER_H_
|
||||
#pragma once
|
||||
|
||||
#include "include/cef_base.h"
|
||||
#include "include/cef_browser.h"
|
||||
|
||||
///
|
||||
// Implement this interface to handle audio events.
|
||||
///
|
||||
/*--cef(source=client)--*/
|
||||
class CefAudioHandler : public virtual CefBaseRefCounted {
|
||||
public:
|
||||
typedef cef_channel_layout_t ChannelLayout;
|
||||
|
||||
///
|
||||
// Called on the UI thread to allow configuration of audio stream parameters.
|
||||
// Return true to proceed with audio stream capture, or false to cancel it.
|
||||
// All members of |params| can optionally be configured here, but they are
|
||||
// also pre-filled with some sensible defaults.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual bool GetAudioParameters(CefRefPtr<CefBrowser> browser,
|
||||
CefAudioParameters& params) {
|
||||
return true;
|
||||
}
|
||||
|
||||
///
|
||||
// Called on a browser audio capture thread when the browser starts
|
||||
// streaming audio. OnAudioSteamStopped will always be called after
|
||||
// OnAudioStreamStarted; both methods may be called multiple times
|
||||
// for the same browser. |params| contains the audio parameters like
|
||||
// sample rate and channel layout. |channels| is the number of channels.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnAudioStreamStarted(CefRefPtr<CefBrowser> browser,
|
||||
const CefAudioParameters& params,
|
||||
int channels) = 0;
|
||||
|
||||
///
|
||||
// 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
|
||||
// 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
|
||||
// Unix Epoch) and represents the time at which the decompressed packet should
|
||||
// be presented to the user. Based on |frames| and the |channel_layout| value
|
||||
// passed to OnAudioStreamStarted you can calculate the size of the |data|
|
||||
// array in bytes.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnAudioStreamPacket(CefRefPtr<CefBrowser> browser,
|
||||
const float** data,
|
||||
int frames,
|
||||
int64 pts) = 0;
|
||||
|
||||
///
|
||||
// Called on the UI thread when the stream has stopped. OnAudioSteamStopped
|
||||
// will always be called after OnAudioStreamStarted; both methods may be
|
||||
// called multiple times for the same stream.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnAudioStreamStopped(CefRefPtr<CefBrowser> browser) = 0;
|
||||
|
||||
///
|
||||
// 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
|
||||
// in the capturing phase it will be called on the audio stream thread. The
|
||||
// stream will be stopped immediately.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnAudioStreamError(CefRefPtr<CefBrowser> browser,
|
||||
const CefString& message) = 0;
|
||||
};
|
||||
|
||||
#endif // CEF_INCLUDE_CEF_AUDIO_HANDLER_H_
|
@@ -40,7 +40,7 @@
|
||||
#include "include/internal/cef_types_wrappers.h"
|
||||
#if defined(OS_WIN)
|
||||
#include "include/internal/cef_win.h"
|
||||
#elif defined(OS_MACOSX)
|
||||
#elif defined(OS_MAC)
|
||||
#include "include/internal/cef_mac.h"
|
||||
#elif defined(OS_LINUX)
|
||||
#include "include/internal/cef_linux.h"
|
||||
|
@@ -40,10 +40,12 @@
|
||||
|
||||
#include <vector>
|
||||
#include "include/cef_base.h"
|
||||
#include "include/cef_devtools_message_observer.h"
|
||||
#include "include/cef_drag_data.h"
|
||||
#include "include/cef_frame.h"
|
||||
#include "include/cef_image.h"
|
||||
#include "include/cef_navigation_entry.h"
|
||||
#include "include/cef_registration.h"
|
||||
#include "include/cef_request_context.h"
|
||||
|
||||
class CefBrowserHost;
|
||||
@@ -517,6 +519,69 @@ class CefBrowserHost : public virtual CefBaseRefCounted {
|
||||
/*--cef()--*/
|
||||
virtual bool HasDevTools() = 0;
|
||||
|
||||
///
|
||||
// Send a method call message over the DevTools protocol. |message| must be a
|
||||
// UTF8-encoded JSON dictionary that contains "id" (int), "method" (string)
|
||||
// and "params" (dictionary, optional) values. See the DevTools protocol
|
||||
// documentation at https://chromedevtools.github.io/devtools-protocol/ for
|
||||
// details of supported methods and the expected "params" dictionary contents.
|
||||
// |message| will be copied if necessary. This method will return true if
|
||||
// called on the UI thread and the message was successfully submitted for
|
||||
// validation, otherwise false. Validation will be applied asynchronously and
|
||||
// any messages that fail due to formatting errors or missing parameters may
|
||||
// be discarded without notification. Prefer ExecuteDevToolsMethod if a more
|
||||
// structured approach to message formatting is desired.
|
||||
//
|
||||
// Every valid method call will result in an asynchronous method result or
|
||||
// error message that references the sent message "id". Event messages are
|
||||
// received while notifications are enabled (for example, between method calls
|
||||
// for "Page.enable" and "Page.disable"). All received messages will be
|
||||
// delivered to the observer(s) registered with AddDevToolsMessageObserver.
|
||||
// See CefDevToolsMessageObserver::OnDevToolsMessage documentation for details
|
||||
// of received message contents.
|
||||
//
|
||||
// Usage of the SendDevToolsMessage, ExecuteDevToolsMethod and
|
||||
// AddDevToolsMessageObserver methods does not require an active DevTools
|
||||
// front-end or remote-debugging session. Other active DevTools sessions will
|
||||
// continue to function independently. However, any modification of global
|
||||
// browser state by one session may not be reflected in the UI of other
|
||||
// sessions.
|
||||
//
|
||||
// Communication with the DevTools front-end (when displayed) can be logged
|
||||
// for development purposes by passing the
|
||||
// `--devtools-protocol-log-file=<path>` command-line flag.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual bool SendDevToolsMessage(const void* message,
|
||||
size_t message_size) = 0;
|
||||
|
||||
///
|
||||
// Execute a method call over the DevTools protocol. This is a more structured
|
||||
// version of SendDevToolsMessage. |message_id| is an incremental number that
|
||||
// uniquely identifies the message (pass 0 to have the next number assigned
|
||||
// automatically based on previous values). |method| is the method name.
|
||||
// |params| are the method parameters, which may be empty. See the DevTools
|
||||
// protocol documentation (linked above) for details of supported methods and
|
||||
// the expected |params| dictionary contents. This method will return the
|
||||
// assigned message ID if called on the UI thread and the message was
|
||||
// successfully submitted for validation, otherwise 0. See the
|
||||
// SendDevToolsMessage documentation for additional usage information.
|
||||
///
|
||||
/*--cef(optional_param=params)--*/
|
||||
virtual int ExecuteDevToolsMethod(int message_id,
|
||||
const CefString& method,
|
||||
CefRefPtr<CefDictionaryValue> params) = 0;
|
||||
|
||||
///
|
||||
// Add an observer for DevTools protocol messages (method results and events).
|
||||
// The observer will remain registered until the returned Registration object
|
||||
// is destroyed. See the SendDevToolsMessage documentation for additional
|
||||
// usage information.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefRegistration> AddDevToolsMessageObserver(
|
||||
CefRefPtr<CefDevToolsMessageObserver> observer) = 0;
|
||||
|
||||
///
|
||||
// Retrieve a snapshot of current navigation entries as values sent to the
|
||||
// specified visitor. If |current_only| is true only the current navigation
|
||||
@@ -527,18 +592,6 @@ class CefBrowserHost : public virtual CefBaseRefCounted {
|
||||
CefRefPtr<CefNavigationEntryVisitor> visitor,
|
||||
bool current_only) = 0;
|
||||
|
||||
///
|
||||
// Set whether mouse cursor change is disabled.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void SetMouseCursorChangeDisabled(bool disabled) = 0;
|
||||
|
||||
///
|
||||
// Returns true if mouse cursor change is disabled.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual bool IsMouseCursorChangeDisabled() = 0;
|
||||
|
||||
///
|
||||
// If a misspelled word is currently selected in an editable node calling
|
||||
// this method will replace it with the specified |word|.
|
||||
|
@@ -39,6 +39,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "include/cef_base.h"
|
||||
#include "include/cef_client.h"
|
||||
#include "include/cef_command_line.h"
|
||||
#include "include/cef_print_handler.h"
|
||||
#include "include/cef_values.h"
|
||||
@@ -50,6 +51,23 @@
|
||||
/*--cef(source=client,no_debugct_check)--*/
|
||||
class CefBrowserProcessHandler : public virtual CefBaseRefCounted {
|
||||
public:
|
||||
///
|
||||
// Called on the browser process UI thread to retrieve the list of schemes
|
||||
// that should support cookies. If |include_defaults| is true the default
|
||||
// schemes ("http", "https", "ws" and "wss") will also be supported. Providing
|
||||
// an empty |schemes| value and setting |include_defaults| to false will
|
||||
// disable all loading and saving of cookies.
|
||||
//
|
||||
// This state will apply to the CefCookieManager associated with the global
|
||||
// CefRequestContext. It will also be used as the initial state for any new
|
||||
// CefRequestContexts created by the client. After creating a new
|
||||
// CefRequestContext the CefCookieManager::SetSupportedSchemes method may be
|
||||
// called on the associated CefCookieManager to futher override these values.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void GetCookieableSchemes(std::vector<CefString>& schemes,
|
||||
bool& include_defaults) {}
|
||||
|
||||
///
|
||||
// Called on the browser process UI thread immediately after the CEF context
|
||||
// has been initialized.
|
||||
@@ -68,23 +86,12 @@ class CefBrowserProcessHandler : public virtual CefBaseRefCounted {
|
||||
virtual void OnBeforeChildProcessLaunch(
|
||||
CefRefPtr<CefCommandLine> command_line) {}
|
||||
|
||||
///
|
||||
// Called on the browser process IO thread after the main thread has been
|
||||
// created for a new render process. Provides an opportunity to specify extra
|
||||
// information that will be passed to
|
||||
// CefRenderProcessHandler::OnRenderThreadCreated() in the render process. Do
|
||||
// not keep a reference to |extra_info| outside of this method.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnRenderProcessThreadCreated(
|
||||
CefRefPtr<CefListValue> extra_info) {}
|
||||
|
||||
///
|
||||
// Return the handler for printing on Linux. If a print handler is not
|
||||
// provided then printing will not be supported on the Linux platform.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefPrintHandler> GetPrintHandler() { return NULL; }
|
||||
virtual CefRefPtr<CefPrintHandler> GetPrintHandler() { return nullptr; }
|
||||
|
||||
///
|
||||
// Called from any thread when work has been scheduled for the browser process
|
||||
@@ -101,6 +108,16 @@ class CefBrowserProcessHandler : public virtual CefBaseRefCounted {
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnScheduleMessagePumpWork(int64 delay_ms) {}
|
||||
|
||||
///
|
||||
// Return the default client for use with a newly created browser window. If
|
||||
// null is returned the browser will be unmanaged (no callbacks will be
|
||||
// executed for that browser) and application shutdown will be blocked until
|
||||
// the browser window is closed manually. This method is currently only used
|
||||
// with the chrome runtime.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefClient> GetDefaultClient() { return nullptr; }
|
||||
};
|
||||
|
||||
#endif // CEF_INCLUDE_CEF_BROWSER_PROCESS_HANDLER_H_
|
||||
|
@@ -38,6 +38,7 @@
|
||||
#define CEF_INCLUDE_CEF_CLIENT_H_
|
||||
#pragma once
|
||||
|
||||
#include "include/cef_audio_handler.h"
|
||||
#include "include/cef_base.h"
|
||||
#include "include/cef_context_menu_handler.h"
|
||||
#include "include/cef_dialog_handler.h"
|
||||
@@ -60,13 +61,19 @@
|
||||
/*--cef(source=client,no_debugct_check)--*/
|
||||
class CefClient : public virtual CefBaseRefCounted {
|
||||
public:
|
||||
///
|
||||
// Return the handler for audio rendering events.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefAudioHandler> GetAudioHandler() { return nullptr; }
|
||||
|
||||
///
|
||||
// Return the handler for context menus. If no handler is provided the default
|
||||
// implementation will be used.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefContextMenuHandler> GetContextMenuHandler() {
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
///
|
||||
@@ -74,75 +81,75 @@ class CefClient : public virtual CefBaseRefCounted {
|
||||
// implementation will be used.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefDialogHandler> GetDialogHandler() { return NULL; }
|
||||
virtual CefRefPtr<CefDialogHandler> GetDialogHandler() { return nullptr; }
|
||||
|
||||
///
|
||||
// Return the handler for browser display state events.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefDisplayHandler> GetDisplayHandler() { return NULL; }
|
||||
virtual CefRefPtr<CefDisplayHandler> GetDisplayHandler() { return nullptr; }
|
||||
|
||||
///
|
||||
// Return the handler for download events. If no handler is returned downloads
|
||||
// will not be allowed.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefDownloadHandler> GetDownloadHandler() { return NULL; }
|
||||
virtual CefRefPtr<CefDownloadHandler> GetDownloadHandler() { return nullptr; }
|
||||
|
||||
///
|
||||
// Return the handler for drag events.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefDragHandler> GetDragHandler() { return NULL; }
|
||||
virtual CefRefPtr<CefDragHandler> GetDragHandler() { return nullptr; }
|
||||
|
||||
///
|
||||
// Return the handler for find result events.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefFindHandler> GetFindHandler() { return NULL; }
|
||||
virtual CefRefPtr<CefFindHandler> GetFindHandler() { return nullptr; }
|
||||
|
||||
///
|
||||
// Return the handler for focus events.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefFocusHandler> GetFocusHandler() { return NULL; }
|
||||
virtual CefRefPtr<CefFocusHandler> GetFocusHandler() { return nullptr; }
|
||||
|
||||
///
|
||||
// Return the handler for JavaScript dialogs. If no handler is provided the
|
||||
// default implementation will be used.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefJSDialogHandler> GetJSDialogHandler() { return NULL; }
|
||||
virtual CefRefPtr<CefJSDialogHandler> GetJSDialogHandler() { return nullptr; }
|
||||
|
||||
///
|
||||
// Return the handler for keyboard events.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefKeyboardHandler> GetKeyboardHandler() { return NULL; }
|
||||
virtual CefRefPtr<CefKeyboardHandler> GetKeyboardHandler() { return nullptr; }
|
||||
|
||||
///
|
||||
// Return the handler for browser life span events.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefLifeSpanHandler> GetLifeSpanHandler() { return NULL; }
|
||||
virtual CefRefPtr<CefLifeSpanHandler> GetLifeSpanHandler() { return nullptr; }
|
||||
|
||||
///
|
||||
// Return the handler for browser load status events.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefLoadHandler> GetLoadHandler() { return NULL; }
|
||||
virtual CefRefPtr<CefLoadHandler> GetLoadHandler() { return nullptr; }
|
||||
|
||||
///
|
||||
// Return the handler for off-screen rendering events.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefRenderHandler> GetRenderHandler() { return NULL; }
|
||||
virtual CefRefPtr<CefRenderHandler> GetRenderHandler() { return nullptr; }
|
||||
|
||||
///
|
||||
// Return the handler for browser request events.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefRequestHandler> GetRequestHandler() { return NULL; }
|
||||
virtual CefRefPtr<CefRequestHandler> GetRequestHandler() { return nullptr; }
|
||||
|
||||
///
|
||||
// Called when a new message is received from a different process. Return true
|
||||
|
130
include/cef_devtools_message_observer.h
Normal file
130
include/cef_devtools_message_observer.h
Normal file
@@ -0,0 +1,130 @@
|
||||
// Copyright (c) 2020 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.
|
||||
//
|
||||
// ---------------------------------------------------------------------------
|
||||
//
|
||||
// The contents of this file must follow a specific format in order to
|
||||
// support the CEF translator tool. See the translator.README.txt file in the
|
||||
// tools directory for more information.
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CEF_DEVTOOLS_MESSAGE_OBSERVER_H_
|
||||
#define CEF_INCLUDE_CEF_DEVTOOLS_MESSAGE_OBSERVER_H_
|
||||
#pragma once
|
||||
|
||||
#include "include/cef_base.h"
|
||||
|
||||
class CefBrowser;
|
||||
|
||||
///
|
||||
// Callback interface for CefBrowserHost::AddDevToolsMessageObserver. The
|
||||
// methods of this class will be called on the browser process UI thread.
|
||||
///
|
||||
/*--cef(source=client)--*/
|
||||
class CefDevToolsMessageObserver : public virtual CefBaseRefCounted {
|
||||
public:
|
||||
///
|
||||
// Method that will be called on receipt of a DevTools protocol message.
|
||||
// |browser| is the originating browser instance. |message| is a UTF8-encoded
|
||||
// JSON dictionary representing either a method result or an event. |message|
|
||||
// is only valid for the scope of this callback and should be copied if
|
||||
// necessary. Return true if the message was handled or false if the message
|
||||
// should be further processed and passed to the OnDevToolsMethodResult or
|
||||
// OnDevToolsEvent methods as appropriate.
|
||||
//
|
||||
// Method result dictionaries include an "id" (int) value that identifies the
|
||||
// orginating method call sent from CefBrowserHost::SendDevToolsMessage, and
|
||||
// optionally either a "result" (dictionary) or "error" (dictionary) value.
|
||||
// The "error" dictionary will contain "code" (int) and "message" (string)
|
||||
// values. Event dictionaries include a "method" (string) value and optionally
|
||||
// a "params" (dictionary) value. See the DevTools protocol documentation at
|
||||
// https://chromedevtools.github.io/devtools-protocol/ for details of
|
||||
// supported method calls and the expected "result" or "params" dictionary
|
||||
// contents. JSON dictionaries can be parsed using the CefParseJSON function
|
||||
// if desired, however be aware of performance considerations when parsing
|
||||
// large messages (some of which may exceed 1MB in size).
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual bool OnDevToolsMessage(CefRefPtr<CefBrowser> browser,
|
||||
const void* message,
|
||||
size_t message_size) {
|
||||
return false;
|
||||
}
|
||||
|
||||
///
|
||||
// Method that will be called after attempted execution of a DevTools protocol
|
||||
// method. |browser| is the originating browser instance. |message_id| is the
|
||||
// "id" value that identifies the originating method call message. If the
|
||||
// method succeeded |success| will be true and |result| will be the
|
||||
// UTF8-encoded JSON "result" dictionary value (which may be empty). If the
|
||||
// method failed |success| will be false and |result| will be the UTF8-encoded
|
||||
// JSON "error" dictionary value. |result| is only valid for the scope of this
|
||||
// callback and should be copied if necessary. See the OnDevToolsMessage
|
||||
// documentation for additional details on |result| contents.
|
||||
///
|
||||
/*--cef(optional_param=result)--*/
|
||||
virtual void OnDevToolsMethodResult(CefRefPtr<CefBrowser> browser,
|
||||
int message_id,
|
||||
bool success,
|
||||
const void* result,
|
||||
size_t result_size) {}
|
||||
|
||||
///
|
||||
// Method that will be called on receipt of a DevTools protocol event.
|
||||
// |browser| is the originating browser instance. |method| is the "method"
|
||||
// value. |params| is the UTF8-encoded JSON "params" dictionary value (which
|
||||
// may be empty). |params| is only valid for the scope of this callback and
|
||||
// should be copied if necessary. See the OnDevToolsMessage documentation for
|
||||
// additional details on |params| contents.
|
||||
///
|
||||
/*--cef(optional_param=params)--*/
|
||||
virtual void OnDevToolsEvent(CefRefPtr<CefBrowser> browser,
|
||||
const CefString& method,
|
||||
const void* params,
|
||||
size_t params_size) {}
|
||||
|
||||
///
|
||||
// Method that will be called when the DevTools agent has attached. |browser|
|
||||
// is the originating browser instance. This will generally occur in response
|
||||
// to the first message sent while the agent is detached.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnDevToolsAgentAttached(CefRefPtr<CefBrowser> browser) {}
|
||||
|
||||
///
|
||||
// Method that will be called when the DevTools agent has detached. |browser|
|
||||
// is the originating browser instance. Any method results that were pending
|
||||
// before the agent became detached will not be delivered, and any active
|
||||
// event subscriptions will be canceled.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnDevToolsAgentDetached(CefRefPtr<CefBrowser> browser) {}
|
||||
};
|
||||
|
||||
#endif // CEF_INCLUDE_CEF_DEVTOOLS_MESSAGE_OBSERVER_H_
|
@@ -135,6 +135,19 @@ class CefDisplayHandler : public virtual CefBaseRefCounted {
|
||||
/*--cef()--*/
|
||||
virtual void OnLoadingProgressChange(CefRefPtr<CefBrowser> browser,
|
||||
double progress) {}
|
||||
|
||||
///
|
||||
// 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.
|
||||
// Return true if the cursor change was handled or false for default handling.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual bool OnCursorChange(CefRefPtr<CefBrowser> browser,
|
||||
CefCursorHandle cursor,
|
||||
cef_cursor_type_t type,
|
||||
const CefCursorInfo& custom_cursor_info) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
#endif // CEF_INCLUDE_CEF_DISPLAY_HANDLER_H_
|
||||
|
@@ -157,7 +157,7 @@ class CefExtensionHandler : public virtual CefBaseRefCounted {
|
||||
CefRefPtr<CefExtension> extension,
|
||||
CefRefPtr<CefBrowser> browser,
|
||||
bool include_incognito) {
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
///
|
||||
|
320
include/cef_media_router.h
Normal file
320
include/cef_media_router.h
Normal file
@@ -0,0 +1,320 @@
|
||||
// Copyright (c) 2020 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.
|
||||
//
|
||||
// ---------------------------------------------------------------------------
|
||||
//
|
||||
// The contents of this file must follow a specific format in order to
|
||||
// support the CEF translator tool. See the translator.README.txt file in the
|
||||
// tools directory for more information.
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CEF_MEDIA_ROUTER_H_
|
||||
#define CEF_INCLUDE_CEF_MEDIA_ROUTER_H_
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
#include "include/cef_base.h"
|
||||
#include "include/cef_registration.h"
|
||||
|
||||
class CefMediaObserver;
|
||||
class CefMediaRoute;
|
||||
class CefMediaRouteCreateCallback;
|
||||
class CefMediaSink;
|
||||
class CefMediaSinkDeviceInfoCallback;
|
||||
class CefMediaSource;
|
||||
|
||||
///
|
||||
// Supports discovery of and communication with media devices on the local
|
||||
// network via the Cast and DIAL protocols. The methods of this class may be
|
||||
// called on any browser process thread unless otherwise indicated.
|
||||
///
|
||||
/*--cef(source=library)--*/
|
||||
class CefMediaRouter : public virtual CefBaseRefCounted {
|
||||
public:
|
||||
///
|
||||
// Returns the MediaRouter object associated with the global request context.
|
||||
// Equivalent to calling
|
||||
// CefRequestContext::GetGlobalContext()->GetMediaRouter().
|
||||
///
|
||||
/*--cef()--*/
|
||||
static CefRefPtr<CefMediaRouter> GetGlobalMediaRouter();
|
||||
|
||||
///
|
||||
// Add an observer for MediaRouter events. The observer will remain registered
|
||||
// until the returned Registration object is destroyed.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefRegistration> AddObserver(
|
||||
CefRefPtr<CefMediaObserver> observer) = 0;
|
||||
|
||||
///
|
||||
// Returns a MediaSource object for the specified media source URN. Supported
|
||||
// URN schemes include "cast:" and "dial:", and will be already known by the
|
||||
// client application (e.g. "cast:<appId>?clientId=<clientId>").
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefMediaSource> GetSource(const CefString& urn) = 0;
|
||||
|
||||
///
|
||||
// Trigger an asynchronous call to CefMediaObserver::OnSinks on all
|
||||
// registered observers.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void NotifyCurrentSinks() = 0;
|
||||
|
||||
///
|
||||
// Create a new route between |source| and |sink|. Source and sink must be
|
||||
// valid, compatible (as reported by CefMediaSink::IsCompatibleWith), and a
|
||||
// route between them must not already exist. |callback| will be executed
|
||||
// on success or failure. If route creation succeeds it will also trigger an
|
||||
// asynchronous call to CefMediaObserver::OnRoutes on all registered
|
||||
// observers.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void CreateRoute(CefRefPtr<CefMediaSource> source,
|
||||
CefRefPtr<CefMediaSink> sink,
|
||||
CefRefPtr<CefMediaRouteCreateCallback> callback) = 0;
|
||||
|
||||
///
|
||||
// Trigger an asynchronous call to CefMediaObserver::OnRoutes on all
|
||||
// registered observers.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void NotifyCurrentRoutes() = 0;
|
||||
};
|
||||
|
||||
///
|
||||
// Implemented by the client to observe MediaRouter events and registered via
|
||||
// CefMediaRouter::AddObserver. The methods of this class will be called on the
|
||||
// browser process UI thread.
|
||||
///
|
||||
/*--cef(source=client)--*/
|
||||
class CefMediaObserver : public virtual CefBaseRefCounted {
|
||||
public:
|
||||
typedef cef_media_route_connection_state_t ConnectionState;
|
||||
|
||||
///
|
||||
// The list of available media sinks has changed or
|
||||
// CefMediaRouter::NotifyCurrentSinks was called.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnSinks(const std::vector<CefRefPtr<CefMediaSink>>& sinks) = 0;
|
||||
|
||||
///
|
||||
// The list of available media routes has changed or
|
||||
// CefMediaRouter::NotifyCurrentRoutes was called.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnRoutes(
|
||||
const std::vector<CefRefPtr<CefMediaRoute>>& routes) = 0;
|
||||
|
||||
///
|
||||
// The connection state of |route| has changed.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnRouteStateChanged(CefRefPtr<CefMediaRoute> route,
|
||||
ConnectionState state) = 0;
|
||||
|
||||
///
|
||||
// A message was recieved over |route|. |message| is only valid for
|
||||
// the scope of this callback and should be copied if necessary.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnRouteMessageReceived(CefRefPtr<CefMediaRoute> route,
|
||||
const void* message,
|
||||
size_t message_size) = 0;
|
||||
};
|
||||
|
||||
///
|
||||
// Represents the route between a media source and sink. Instances of this
|
||||
// object are created via CefMediaRouter::CreateRoute and retrieved via
|
||||
// CefMediaObserver::OnRoutes. Contains the status and metadata of a
|
||||
// routing operation. The methods of this class may be called on any browser
|
||||
// process thread unless otherwise indicated.
|
||||
///
|
||||
/*--cef(source=library)--*/
|
||||
class CefMediaRoute : public virtual CefBaseRefCounted {
|
||||
public:
|
||||
///
|
||||
// Returns the ID for this route.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefString GetId() = 0;
|
||||
|
||||
///
|
||||
// Returns the source associated with this route.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefMediaSource> GetSource() = 0;
|
||||
|
||||
///
|
||||
// Returns the sink associated with this route.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefMediaSink> GetSink() = 0;
|
||||
|
||||
///
|
||||
// Send a message over this route. |message| will be copied if necessary.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void SendRouteMessage(const void* message, size_t message_size) = 0;
|
||||
|
||||
///
|
||||
// Terminate this route. Will result in an asynchronous call to
|
||||
// CefMediaObserver::OnRoutes on all registered observers.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void Terminate() = 0;
|
||||
};
|
||||
|
||||
///
|
||||
// Callback interface for CefMediaRouter::CreateRoute. The methods of this
|
||||
// class will be called on the browser process UI thread.
|
||||
///
|
||||
/*--cef(source=client)--*/
|
||||
class CefMediaRouteCreateCallback : public virtual CefBaseRefCounted {
|
||||
public:
|
||||
typedef cef_media_route_create_result_t RouteCreateResult;
|
||||
|
||||
///
|
||||
// Method that will be executed when the route creation has finished. |result|
|
||||
// will be CEF_MRCR_OK if the route creation succeeded. |error| will be a
|
||||
// description of the error if the route creation failed. |route| is the
|
||||
// resulting route, or empty if the route creation failed.
|
||||
///
|
||||
/*--cef(optional_param=error,optional_param=route)--*/
|
||||
virtual void OnMediaRouteCreateFinished(RouteCreateResult result,
|
||||
const CefString& error,
|
||||
CefRefPtr<CefMediaRoute> route) = 0;
|
||||
};
|
||||
|
||||
///
|
||||
// Represents a sink to which media can be routed. Instances of this object are
|
||||
// retrieved via CefMediaObserver::OnSinks. The methods of this class may
|
||||
// be called on any browser process thread unless otherwise indicated.
|
||||
///
|
||||
/*--cef(source=library)--*/
|
||||
class CefMediaSink : public virtual CefBaseRefCounted {
|
||||
public:
|
||||
typedef cef_media_sink_icon_type_t IconType;
|
||||
|
||||
///
|
||||
// Returns the ID for this sink.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefString GetId() = 0;
|
||||
|
||||
///
|
||||
// Returns the name of this sink.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefString GetName() = 0;
|
||||
|
||||
///
|
||||
// Returns the description of this sink.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefString GetDescription() = 0;
|
||||
|
||||
///
|
||||
// Returns the icon type for this sink.
|
||||
///
|
||||
/*--cef(default_retval=CEF_MSIT_GENERIC)--*/
|
||||
virtual IconType GetIconType() = 0;
|
||||
|
||||
///
|
||||
// Asynchronously retrieves device info.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void GetDeviceInfo(
|
||||
CefRefPtr<CefMediaSinkDeviceInfoCallback> callback) = 0;
|
||||
|
||||
///
|
||||
// Returns true if this sink accepts content via Cast.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual bool IsCastSink() = 0;
|
||||
|
||||
///
|
||||
// Returns true if this sink accepts content via DIAL.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual bool IsDialSink() = 0;
|
||||
|
||||
///
|
||||
// Returns true if this sink is compatible with |source|.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual bool IsCompatibleWith(CefRefPtr<CefMediaSource> source) = 0;
|
||||
};
|
||||
|
||||
///
|
||||
// Callback interface for CefMediaSink::GetDeviceInfo. The methods of this
|
||||
// class will be called on the browser process UI thread.
|
||||
///
|
||||
/*--cef(source=client)--*/
|
||||
class CefMediaSinkDeviceInfoCallback : public virtual CefBaseRefCounted {
|
||||
public:
|
||||
///
|
||||
// Method that will be executed asyncronously once device information has been
|
||||
// retrieved.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnMediaSinkDeviceInfo(
|
||||
const CefMediaSinkDeviceInfo& device_info) = 0;
|
||||
};
|
||||
|
||||
///
|
||||
// Represents a source from which media can be routed. Instances of this object
|
||||
// are retrieved via CefMediaRouter::GetSource. The methods of this class may be
|
||||
// called on any browser process thread unless otherwise indicated.
|
||||
///
|
||||
/*--cef(source=library)--*/
|
||||
class CefMediaSource : public virtual CefBaseRefCounted {
|
||||
public:
|
||||
///
|
||||
// Returns the ID (media source URN or URL) for this source.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefString GetId() = 0;
|
||||
|
||||
///
|
||||
// Returns true if this source outputs its content via Cast.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual bool IsCastSource() = 0;
|
||||
|
||||
///
|
||||
// Returns true if this source outputs its content via DIAL.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual bool IsDialSource() = 0;
|
||||
};
|
||||
|
||||
#endif // CEF_INCLUDE_CEF_MEDIA_ROUTER_H_
|
@@ -133,17 +133,25 @@ CefString CefURIDecode(const CefString& text,
|
||||
CefRefPtr<CefValue> CefParseJSON(const CefString& json_string,
|
||||
cef_json_parser_options_t options);
|
||||
|
||||
///
|
||||
// Parses the specified UTF8-encoded |json| buffer of size |json_size| and
|
||||
// returns a dictionary or list representation. If JSON parsing fails this
|
||||
// method returns NULL.
|
||||
///
|
||||
/*--cef(capi_name=cef_parse_json_buffer)--*/
|
||||
CefRefPtr<CefValue> CefParseJSON(const void* json,
|
||||
size_t json_size,
|
||||
cef_json_parser_options_t options);
|
||||
|
||||
///
|
||||
// Parses the specified |json_string| and returns a dictionary or list
|
||||
// representation. If JSON parsing fails this method returns NULL and populates
|
||||
// |error_code_out| and |error_msg_out| with an error code and a formatted error
|
||||
// message respectively.
|
||||
// |error_msg_out| with a formatted error message.
|
||||
///
|
||||
/*--cef()--*/
|
||||
CefRefPtr<CefValue> CefParseJSONAndReturnError(
|
||||
const CefString& json_string,
|
||||
cef_json_parser_options_t options,
|
||||
cef_json_parser_error_t& error_code_out,
|
||||
CefString& error_msg_out);
|
||||
|
||||
///
|
||||
|
49
include/cef_registration.h
Normal file
49
include/cef_registration.h
Normal file
@@ -0,0 +1,49 @@
|
||||
// Copyright (c) 2020 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.
|
||||
//
|
||||
// ---------------------------------------------------------------------------
|
||||
//
|
||||
// The contents of this file must follow a specific format in order to
|
||||
// support the CEF translator tool. See the translator.README.txt file in the
|
||||
// tools directory for more information.
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CEF_REGISTRATION_H_
|
||||
#define CEF_INCLUDE_CEF_REGISTRATION_H_
|
||||
#pragma once
|
||||
|
||||
#include "include/cef_base.h"
|
||||
|
||||
///
|
||||
// Generic callback interface used for managing the lifespan of a registration.
|
||||
///
|
||||
/*--cef(source=library)--*/
|
||||
class CefRegistration : public virtual CefBaseRefCounted {};
|
||||
|
||||
#endif // CEF_INCLUDE_CEF_REGISTRATION_H_
|
@@ -52,7 +52,6 @@
|
||||
/*--cef(source=client)--*/
|
||||
class CefRenderHandler : public virtual CefBaseRefCounted {
|
||||
public:
|
||||
typedef cef_cursor_type_t CursorType;
|
||||
typedef cef_drag_operations_mask_t DragOperation;
|
||||
typedef cef_drag_operations_mask_t DragOperationsMask;
|
||||
typedef cef_paint_element_type_t PaintElementType;
|
||||
@@ -65,7 +64,7 @@ class CefRenderHandler : public virtual CefBaseRefCounted {
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefAccessibilityHandler> GetAccessibilityHandler() {
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
///
|
||||
@@ -162,16 +161,6 @@ class CefRenderHandler : public virtual CefBaseRefCounted {
|
||||
const RectList& dirtyRects,
|
||||
void* shared_handle) {}
|
||||
|
||||
///
|
||||
// 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.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnCursorChange(CefRefPtr<CefBrowser> browser,
|
||||
CefCursorHandle cursor,
|
||||
CursorType type,
|
||||
const CefCursorInfo& custom_cursor_info) {}
|
||||
|
||||
///
|
||||
// Called when the user starts dragging content in the web view. Contextual
|
||||
// information about the dragged content is supplied by |drag_data|.
|
||||
|
@@ -57,15 +57,6 @@ class CefRenderProcessHandler : public virtual CefBaseRefCounted {
|
||||
public:
|
||||
typedef cef_navigation_type_t NavigationType;
|
||||
|
||||
///
|
||||
// Called after the render process main thread has been created. |extra_info|
|
||||
// is a read-only value originating from
|
||||
// CefBrowserProcessHandler::OnRenderProcessThreadCreated(). Do not keep a
|
||||
// reference to |extra_info| outside of this method.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnRenderThreadCreated(CefRefPtr<CefListValue> extra_info) {}
|
||||
|
||||
///
|
||||
// Called after WebKit has been initialized.
|
||||
///
|
||||
@@ -93,7 +84,7 @@ class CefRenderProcessHandler : public virtual CefBaseRefCounted {
|
||||
// Return the handler for browser load status events.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefLoadHandler> GetLoadHandler() { return NULL; }
|
||||
virtual CefRefPtr<CefLoadHandler> GetLoadHandler() { return nullptr; }
|
||||
|
||||
///
|
||||
// Called immediately after the V8 context for a frame has been created. To
|
||||
|
@@ -44,6 +44,7 @@
|
||||
#include "include/cef_cookie.h"
|
||||
#include "include/cef_extension.h"
|
||||
#include "include/cef_extension_handler.h"
|
||||
#include "include/cef_media_router.h"
|
||||
#include "include/cef_values.h"
|
||||
|
||||
class CefRequestContextHandler;
|
||||
@@ -361,6 +362,12 @@ class CefRequestContext : public virtual CefBaseRefCounted {
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefExtension> GetExtension(
|
||||
const CefString& extension_id) = 0;
|
||||
|
||||
///
|
||||
// Returns the MediaRouter object associated with this context.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRefPtr<CefMediaRouter> GetMediaRouter() = 0;
|
||||
};
|
||||
|
||||
#endif // CEF_INCLUDE_CEF_REQUEST_CONTEXT_H_
|
||||
|
@@ -119,7 +119,7 @@ class CefRequestContextHandler : public virtual CefBaseRefCounted {
|
||||
bool is_download,
|
||||
const CefString& request_initiator,
|
||||
bool& disable_default_handling) {
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
};
|
||||
|
||||
|
@@ -145,7 +145,7 @@ class CefRequestHandler : public virtual CefBaseRefCounted {
|
||||
bool is_download,
|
||||
const CefString& request_initiator,
|
||||
bool& disable_default_handling) {
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
///
|
||||
@@ -252,6 +252,13 @@ class CefRequestHandler : public virtual CefBaseRefCounted {
|
||||
/*--cef()--*/
|
||||
virtual void OnRenderProcessTerminated(CefRefPtr<CefBrowser> browser,
|
||||
TerminationStatus status) {}
|
||||
|
||||
///
|
||||
// Called on the browser process UI thread when the window.document object of
|
||||
// the main frame has been created.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void OnDocumentAvailableInMainFrame(CefRefPtr<CefBrowser> browser) {}
|
||||
};
|
||||
|
||||
#endif // CEF_INCLUDE_CEF_REQUEST_HANDLER_H_
|
||||
|
@@ -39,6 +39,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "include/cef_base.h"
|
||||
#include "include/cef_values.h"
|
||||
|
||||
///
|
||||
// Class used for retrieving resources from the resource bundle (*.pak) files
|
||||
@@ -67,33 +68,24 @@ class CefResourceBundle : public virtual CefBaseRefCounted {
|
||||
virtual CefString GetLocalizedString(int string_id) = 0;
|
||||
|
||||
///
|
||||
// Retrieves the contents of the specified scale independent |resource_id|.
|
||||
// If the value is found then |data| and |data_size| will be populated and
|
||||
// this method will return true. If the value is not found then this method
|
||||
// will return false. The returned |data| pointer will remain resident in
|
||||
// memory and should not be freed. Include cef_pack_resources.h for a listing
|
||||
// of valid resource ID values.
|
||||
// Returns a CefBinaryValue containing the decompressed contents of the
|
||||
// specified scale independent |resource_id| or NULL if not found. Include
|
||||
// cef_pack_resources.h for a listing of valid resource ID values.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual bool GetDataResource(int resource_id,
|
||||
void*& data,
|
||||
size_t& data_size) = 0;
|
||||
virtual CefRefPtr<CefBinaryValue> GetDataResource(int resource_id) = 0;
|
||||
|
||||
///
|
||||
// Retrieves the contents of the specified |resource_id| nearest the scale
|
||||
// factor |scale_factor|. Use a |scale_factor| value of SCALE_FACTOR_NONE for
|
||||
// scale independent resources or call GetDataResource instead. If the value
|
||||
// is found then |data| and |data_size| will be populated and this method will
|
||||
// return true. If the value is not found then this method will return false.
|
||||
// The returned |data| pointer will remain resident in memory and should not
|
||||
// be freed. Include cef_pack_resources.h for a listing of valid resource ID
|
||||
// values.
|
||||
// Returns a CefBinaryValue containing the decompressed contents of the
|
||||
// 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
|
||||
// independent resources or call GetDataResource instead.Include
|
||||
// cef_pack_resources.h for a listing of valid resource ID values.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual bool GetDataResourceForScale(int resource_id,
|
||||
ScaleFactor scale_factor,
|
||||
void*& data,
|
||||
size_t& data_size) = 0;
|
||||
virtual CefRefPtr<CefBinaryValue> GetDataResourceForScale(
|
||||
int resource_id,
|
||||
ScaleFactor scale_factor) = 0;
|
||||
};
|
||||
|
||||
#endif // CEF_INCLUDE_CEF_RESOURCE_BUNDLE_H_
|
||||
|
@@ -72,7 +72,7 @@ class CefResourceRequestHandler : public virtual CefBaseRefCounted {
|
||||
CefRefPtr<CefBrowser> browser,
|
||||
CefRefPtr<CefFrame> frame,
|
||||
CefRefPtr<CefRequest> request) {
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
///
|
||||
@@ -109,7 +109,7 @@ class CefResourceRequestHandler : public virtual CefBaseRefCounted {
|
||||
CefRefPtr<CefBrowser> browser,
|
||||
CefRefPtr<CefFrame> frame,
|
||||
CefRefPtr<CefRequest> request) {
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
///
|
||||
@@ -163,7 +163,7 @@ class CefResourceRequestHandler : public virtual CefBaseRefCounted {
|
||||
CefRefPtr<CefFrame> frame,
|
||||
CefRefPtr<CefRequest> request,
|
||||
CefRefPtr<CefResponse> response) {
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
///
|
||||
|
@@ -34,7 +34,7 @@
|
||||
#include "include/base/cef_build.h"
|
||||
#include "include/internal/cef_export.h"
|
||||
|
||||
#if defined(OS_MACOSX)
|
||||
#if defined(OS_MAC)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -83,6 +83,6 @@ class CEF_EXPORT CefScopedSandboxContext {
|
||||
};
|
||||
#endif // __cplusplus
|
||||
|
||||
#endif // defined(OS_MACOSX)
|
||||
#endif // defined(OS_MAC)
|
||||
|
||||
#endif // CEF_INCLUDE_CEF_SANDBOX_MAC_H_
|
||||
|
@@ -61,7 +61,7 @@ class CefThread : public CefBaseRefCounted {
|
||||
// to identify the thread. |priority| is the thread execution priority.
|
||||
// |message_loop_type| indicates the set of asynchronous events that the
|
||||
// thread can process. If |stoppable| is true the thread will stopped and
|
||||
// joined on destruction or when Stop() is called; otherwise, the the thread
|
||||
// joined on destruction or when Stop() is called; otherwise, the thread
|
||||
// cannot be stopped and will be leaked on shutdown. On Windows the
|
||||
// |com_init_mode| value specifies how COM will be initialized for the thread.
|
||||
// If |com_init_mode| is set to COM_INIT_MODE_STA then |message_loop_type|
|
||||
|
@@ -63,20 +63,13 @@ class CefURLRequest : public virtual CefBaseRefCounted {
|
||||
// Create a new URL request that is not associated with a specific browser or
|
||||
// frame. Use CefFrame::CreateURLRequest instead if you want the request to
|
||||
// have this association, in which case it may be handled differently (see
|
||||
// documentation on that method). Requests may originate from the both browser
|
||||
// process and the render process.
|
||||
//
|
||||
// For requests originating from the browser process:
|
||||
// documentation on that method). A request created with this method may only
|
||||
// originate from the browser process, and will behave as follows:
|
||||
// - It may be intercepted by the client via CefResourceRequestHandler or
|
||||
// CefSchemeHandlerFactory.
|
||||
// - POST data may only contain only a single element of type PDE_TYPE_FILE
|
||||
// or PDE_TYPE_BYTES.
|
||||
// - If |request_context| is empty the global request context will be used.
|
||||
// For requests originating from the render process:
|
||||
// - It cannot be intercepted by the client so only http(s) and blob schemes
|
||||
// are supported.
|
||||
// - POST data may only contain a single element of type PDE_TYPE_BYTES.
|
||||
// - The |request_context| parameter must be NULL.
|
||||
//
|
||||
// The |request| object will be marked as read-only after calling this method.
|
||||
///
|
||||
|
@@ -39,7 +39,7 @@
|
||||
// Bring in platform-specific definitions.
|
||||
#if defined(OS_WIN)
|
||||
#include "include/internal/cef_types_win.h"
|
||||
#elif defined(OS_MACOSX)
|
||||
#elif defined(OS_MAC)
|
||||
#include "include/internal/cef_types_mac.h"
|
||||
#elif defined(OS_LINUX)
|
||||
#include "include/internal/cef_types_linux.h"
|
||||
@@ -170,26 +170,35 @@ typedef struct _cef_settings_t {
|
||||
// will be used. If this value is empty on macOS then a helper executable must
|
||||
// exist at "Contents/Frameworks/<app> Helper.app/Contents/MacOS/<app> Helper"
|
||||
// in the top-level app bundle. See the comments on CefExecuteProcess() for
|
||||
// details. Also configurable using the "browser-subprocess-path" command-line
|
||||
// switch.
|
||||
// details. If this value is non-empty then it must be an absolute path. Also
|
||||
// configurable using the "browser-subprocess-path" command-line switch.
|
||||
///
|
||||
cef_string_t browser_subprocess_path;
|
||||
|
||||
///
|
||||
// The path to the CEF framework directory on macOS. If this value is empty
|
||||
// then the framework must exist at "Contents/Frameworks/Chromium Embedded
|
||||
// Framework.framework" in the top-level app bundle. Also configurable using
|
||||
// the "framework-dir-path" command-line switch.
|
||||
// Framework.framework" in the top-level app bundle. If this value is
|
||||
// non-empty then it must be an absolute path. Also configurable using the
|
||||
// "framework-dir-path" command-line switch.
|
||||
///
|
||||
cef_string_t framework_dir_path;
|
||||
|
||||
///
|
||||
// The path to the main bundle on macOS. If this value is empty then it
|
||||
// defaults to the top-level app bundle. Also configurable using
|
||||
// the "main-bundle-path" command-line switch.
|
||||
// defaults to the top-level app bundle. If this value is non-empty then it
|
||||
// must be an absolute path. Also configurable using the "main-bundle-path"
|
||||
// command-line switch.
|
||||
///
|
||||
cef_string_t main_bundle_path;
|
||||
|
||||
///
|
||||
// Set to true (1) to enable use of the Chrome runtime in CEF. This feature is
|
||||
// considered experimental and is not recommended for most users at this time.
|
||||
// See issue #2969 for details.
|
||||
///
|
||||
int chrome_runtime;
|
||||
|
||||
///
|
||||
// Set to true (1) to have the browser process message loop run in a separate
|
||||
// thread. If false (0) than the CefDoMessageLoopWork() function must be
|
||||
@@ -227,33 +236,35 @@ typedef struct _cef_settings_t {
|
||||
|
||||
///
|
||||
// The location where data for the global browser cache will be stored on
|
||||
// disk. If non-empty this must be either equal to or a child directory of
|
||||
// CefSettings.root_cache_path. If empty then browsers will be created in
|
||||
// "incognito mode" where in-memory caches are used for storage and no data is
|
||||
// persisted to disk. HTML5 databases such as localStorage will only persist
|
||||
// across sessions if a cache path is specified. Can be overridden for
|
||||
// individual CefRequestContext instances via the
|
||||
// CefRequestContextSettings.cache_path value.
|
||||
// disk. If this value is non-empty then it must be an absolute path that is
|
||||
// either equal to or a child directory of CefSettings.root_cache_path. If
|
||||
// this value is empty then browsers will be created in "incognito mode" where
|
||||
// in-memory caches are used for storage and no data is persisted to disk.
|
||||
// HTML5 databases such as localStorage will only persist across sessions if a
|
||||
// cache path is specified. Can be overridden for individual CefRequestContext
|
||||
// instances via the CefRequestContextSettings.cache_path value.
|
||||
///
|
||||
cef_string_t cache_path;
|
||||
|
||||
///
|
||||
// The root directory that all CefSettings.cache_path and
|
||||
// CefRequestContextSettings.cache_path values must have in common. If this
|
||||
// value is empty and CefSettings.cache_path is non-empty then this value will
|
||||
// default to the CefSettings.cache_path value. Failure to set this value
|
||||
// correctly may result in the sandbox blocking read/write access to the
|
||||
// cache_path directory.
|
||||
// value is empty and CefSettings.cache_path is non-empty then it will
|
||||
// default to the CefSettings.cache_path value. If this value is non-empty
|
||||
// then it must be an absolute path. Failure to set this value correctly may
|
||||
// result in the sandbox blocking read/write access to the cache_path
|
||||
// directory.
|
||||
///
|
||||
cef_string_t root_cache_path;
|
||||
|
||||
///
|
||||
// The location where user data such as spell checking dictionary files will
|
||||
// be stored on disk. If empty then the default platform-specific user data
|
||||
// directory will be used ("~/.cef_user_data" directory on Linux,
|
||||
// "~/Library/Application Support/CEF/User Data" directory on Mac OS X,
|
||||
// "Local Settings\Application Data\CEF\User Data" directory under the user
|
||||
// profile directory on Windows).
|
||||
// be stored on disk. If this value is empty then the default
|
||||
// platform-specific user data directory will be used ("~/.cef_user_data"
|
||||
// directory on Linux, "~/Library/Application Support/CEF/User Data" directory
|
||||
// on Mac OS X, "Local Settings\Application Data\CEF\User Data" directory
|
||||
// under the user profile directory on Windows). If this value is non-empty
|
||||
// then it must be an absolute path.
|
||||
///
|
||||
cef_string_t user_data_path;
|
||||
|
||||
@@ -333,16 +344,17 @@ typedef struct _cef_settings_t {
|
||||
// The fully qualified path for the resources directory. If this value is
|
||||
// empty the cef.pak and/or devtools_resources.pak files must be located in
|
||||
// the module directory on Windows/Linux or the app bundle Resources directory
|
||||
// on Mac OS X. Also configurable using the "resources-dir-path" command-line
|
||||
// switch.
|
||||
// on Mac OS X. If this value is non-empty then it must be an absolute path.
|
||||
// Also configurable using the "resources-dir-path" command-line switch.
|
||||
///
|
||||
cef_string_t resources_dir_path;
|
||||
|
||||
///
|
||||
// The fully qualified path for the locales directory. If this value is empty
|
||||
// the locales directory must be located in the module directory. This value
|
||||
// is ignored on Mac OS X where pack files are always loaded from the app
|
||||
// bundle Resources directory. Also configurable using the "locales-dir-path"
|
||||
// the locales directory must be located in the module directory. If this
|
||||
// value is non-empty then it must be an absolute path. This value is ignored
|
||||
// on Mac OS X where pack files are always loaded from the app bundle
|
||||
// Resources directory. Also configurable using the "locales-dir-path"
|
||||
// command-line switch.
|
||||
///
|
||||
cef_string_t locales_dir_path;
|
||||
@@ -428,13 +440,13 @@ typedef struct _cef_request_context_settings_t {
|
||||
|
||||
///
|
||||
// The location where cache data for this request context will be stored on
|
||||
// disk. If non-empty this must be either equal to or a child directory of
|
||||
// CefSettings.root_cache_path. If empty then browsers will be created in
|
||||
// "incognito mode" where in-memory caches are used for storage and no data is
|
||||
// persisted to disk. HTML5 databases such as localStorage will only persist
|
||||
// across sessions if a cache path is specified. To share the global browser
|
||||
// cache and related configuration set this value to match the
|
||||
// CefSettings.cache_path value.
|
||||
// disk. If this value is non-empty then it must be an absolute path that is
|
||||
// either equal to or a child directory of CefSettings.root_cache_path. If
|
||||
// this value is empty then browsers will be created in "incognito mode" where
|
||||
// in-memory caches are used for storage and no data is persisted to disk.
|
||||
// HTML5 databases such as localStorage will only persist across sessions if a
|
||||
// cache path is specified. To share the global browser cache and related
|
||||
// configuration set this value to match the CefSettings.cache_path value.
|
||||
///
|
||||
cef_string_t cache_path;
|
||||
|
||||
@@ -725,8 +737,32 @@ typedef struct _cef_urlparts_t {
|
||||
// Query string component (i.e., everything following the '?').
|
||||
///
|
||||
cef_string_t query;
|
||||
|
||||
///
|
||||
// Fragment (hash) identifier component (i.e., the string following the '#').
|
||||
///
|
||||
cef_string_t fragment;
|
||||
} cef_urlparts_t;
|
||||
|
||||
///
|
||||
// Cookie priority values.
|
||||
///
|
||||
typedef enum {
|
||||
CEF_COOKIE_PRIORITY_LOW = -1,
|
||||
CEF_COOKIE_PRIORITY_MEDIUM = 0,
|
||||
CEF_COOKIE_PRIORITY_HIGH = 1,
|
||||
} cef_cookie_priority_t;
|
||||
|
||||
///
|
||||
// Cookie same site values.
|
||||
///
|
||||
typedef enum {
|
||||
CEF_COOKIE_SAME_SITE_UNSPECIFIED,
|
||||
CEF_COOKIE_SAME_SITE_NO_RESTRICTION,
|
||||
CEF_COOKIE_SAME_SITE_LAX_MODE,
|
||||
CEF_COOKIE_SAME_SITE_STRICT_MODE,
|
||||
} cef_cookie_same_site_t;
|
||||
|
||||
///
|
||||
// Cookie information.
|
||||
///
|
||||
@@ -781,6 +817,16 @@ typedef struct _cef_cookie_t {
|
||||
///
|
||||
int has_expires;
|
||||
cef_time_t expires;
|
||||
|
||||
///
|
||||
// Same site.
|
||||
///
|
||||
cef_cookie_same_site_t same_site;
|
||||
|
||||
///
|
||||
// Priority.
|
||||
///
|
||||
cef_cookie_priority_t priority;
|
||||
} cef_cookie_t;
|
||||
|
||||
///
|
||||
@@ -1107,9 +1153,8 @@ typedef enum {
|
||||
TT_LINK = 0,
|
||||
|
||||
///
|
||||
// Source is some other "explicit" navigation action such as creating a new
|
||||
// browser or using the LoadURL function. This is also the default value
|
||||
// for navigations where the actual type is unknown.
|
||||
// Source is some other "explicit" navigation. This is the default value for
|
||||
// navigations where the actual type is unknown. See also TT_DIRECT_LOAD_FLAG.
|
||||
///
|
||||
TT_EXPLICIT = 1,
|
||||
|
||||
@@ -1161,9 +1206,15 @@ typedef enum {
|
||||
|
||||
///
|
||||
// Used the Forward or Back function to navigate among browsing history.
|
||||
// Will be ORed to the transition type for the original load.
|
||||
///
|
||||
TT_FORWARD_BACK_FLAG = 0x01000000,
|
||||
|
||||
///
|
||||
// Loaded a URL directly via CreateBrowser, LoadURL or LoadRequest.
|
||||
///
|
||||
TT_DIRECT_LOAD_FLAG = 0x02000000,
|
||||
|
||||
///
|
||||
// The beginning of a navigation chain.
|
||||
///
|
||||
@@ -1428,7 +1479,7 @@ typedef enum {
|
||||
///
|
||||
// The main thread in the renderer. Used for all WebKit and V8 interaction.
|
||||
// Tasks may be posted to this thread after
|
||||
// CefRenderProcessHandler::OnRenderThreadCreated but are not guaranteed to
|
||||
// CefRenderProcessHandler::OnWebKitInitialized but are not guaranteed to
|
||||
// run before sub-process termination (sub-processes may be killed at any time
|
||||
// without warning).
|
||||
///
|
||||
@@ -1770,6 +1821,7 @@ typedef enum {
|
||||
EVENTFLAG_IS_KEY_PAD = 1 << 9,
|
||||
EVENTFLAG_IS_LEFT = 1 << 10,
|
||||
EVENTFLAG_IS_RIGHT = 1 << 11,
|
||||
EVENTFLAG_ALTGR_DOWN = 1 << 12,
|
||||
} cef_event_flags_t;
|
||||
|
||||
///
|
||||
@@ -2227,7 +2279,13 @@ typedef enum {
|
||||
CT_ZOOMOUT,
|
||||
CT_GRAB,
|
||||
CT_GRABBING,
|
||||
CT_MIDDLE_PANNING_VERTICAL,
|
||||
CT_MIDDLE_PANNING_HORIZONTAL,
|
||||
CT_CUSTOM,
|
||||
CT_DND_NONE,
|
||||
CT_DND_MOVE,
|
||||
CT_DND_COPY,
|
||||
CT_DND_LINK,
|
||||
} cef_cursor_type_t;
|
||||
|
||||
///
|
||||
@@ -2287,21 +2345,10 @@ typedef enum {
|
||||
///
|
||||
UU_URL_SPECIAL_CHARS_EXCEPT_PATH_SEPARATORS = 1 << 3,
|
||||
|
||||
///
|
||||
// Unescapes characters that can be used in spoofing attempts (such as LOCK)
|
||||
// and control characters (such as BiDi control characters and %01). This
|
||||
// INCLUDES NULLs. This is used for rare cases such as data: URL decoding
|
||||
// where the result is binary data.
|
||||
//
|
||||
// DO NOT use UU_SPOOFING_AND_CONTROL_CHARS if the URL is going to be
|
||||
// displayed in the UI for security reasons.
|
||||
///
|
||||
UU_SPOOFING_AND_CONTROL_CHARS = 1 << 4,
|
||||
|
||||
///
|
||||
// URL queries use "+" for space. This flag controls that replacement.
|
||||
///
|
||||
UU_REPLACE_PLUS_WITH_SPACE = 1 << 5,
|
||||
UU_REPLACE_PLUS_WITH_SPACE = 1 << 4,
|
||||
} cef_uri_unescape_rule_t;
|
||||
|
||||
///
|
||||
@@ -2320,22 +2367,6 @@ typedef enum {
|
||||
JSON_PARSER_ALLOW_TRAILING_COMMAS = 1 << 0,
|
||||
} cef_json_parser_options_t;
|
||||
|
||||
///
|
||||
// Error codes that can be returned from CefParseJSONAndReturnError.
|
||||
///
|
||||
typedef enum {
|
||||
JSON_NO_ERROR = 0,
|
||||
JSON_INVALID_ESCAPE,
|
||||
JSON_SYNTAX_ERROR,
|
||||
JSON_UNEXPECTED_TOKEN,
|
||||
JSON_TRAILING_COMMA,
|
||||
JSON_TOO_MUCH_NESTING,
|
||||
JSON_UNEXPECTED_DATA_AFTER_ROOT,
|
||||
JSON_UNSUPPORTED_ENCODING,
|
||||
JSON_UNQUOTED_DICTIONARY_KEY,
|
||||
JSON_PARSE_ERROR_COUNT
|
||||
} cef_json_parser_error_t;
|
||||
|
||||
///
|
||||
// Options that can be passed to CefWriteJSON.
|
||||
///
|
||||
@@ -2424,13 +2455,13 @@ typedef struct _cef_pdf_print_settings_t {
|
||||
int scale_factor;
|
||||
|
||||
///
|
||||
// Margins in millimeters. Only used if |margin_type| is set to
|
||||
// Margins in points. Only used if |margin_type| is set to
|
||||
// PDF_PRINT_MARGIN_CUSTOM.
|
||||
///
|
||||
double margin_top;
|
||||
double margin_right;
|
||||
double margin_bottom;
|
||||
double margin_left;
|
||||
int margin_top;
|
||||
int margin_right;
|
||||
int margin_bottom;
|
||||
int margin_left;
|
||||
|
||||
///
|
||||
// Margin type.
|
||||
@@ -2921,6 +2952,16 @@ typedef enum {
|
||||
CEF_CDM_REGISTRATION_ERROR_NOT_SUPPORTED,
|
||||
} cef_cdm_registration_error_t;
|
||||
|
||||
///
|
||||
// Composition underline style.
|
||||
///
|
||||
typedef enum {
|
||||
CEF_CUS_SOLID,
|
||||
CEF_CUS_DOT,
|
||||
CEF_CUS_DASH,
|
||||
CEF_CUS_NONE,
|
||||
} cef_composition_underline_style_t;
|
||||
|
||||
///
|
||||
// Structure representing IME composition underline information. This is a thin
|
||||
// wrapper around Blink's WebCompositionUnderline class and should be kept in
|
||||
@@ -2946,8 +2987,211 @@ typedef struct _cef_composition_underline_t {
|
||||
// Set to true (1) for thick underline.
|
||||
///
|
||||
int thick;
|
||||
|
||||
///
|
||||
// Style.
|
||||
///
|
||||
cef_composition_underline_style_t style;
|
||||
} cef_composition_underline_t;
|
||||
|
||||
///
|
||||
// Enumerates the various representations of the ordering of audio channels.
|
||||
// Must be kept synchronized with media::ChannelLayout from Chromium.
|
||||
// See media\base\channel_layout.h
|
||||
///
|
||||
typedef enum {
|
||||
CEF_CHANNEL_LAYOUT_NONE = 0,
|
||||
CEF_CHANNEL_LAYOUT_UNSUPPORTED = 1,
|
||||
|
||||
// Front C
|
||||
CEF_CHANNEL_LAYOUT_MONO = 2,
|
||||
|
||||
// Front L, Front R
|
||||
CEF_CHANNEL_LAYOUT_STEREO = 3,
|
||||
|
||||
// Front L, Front R, Back C
|
||||
CEF_CHANNEL_LAYOUT_2_1 = 4,
|
||||
|
||||
// Front L, Front R, Front C
|
||||
CEF_CHANNEL_LAYOUT_SURROUND = 5,
|
||||
|
||||
// Front L, Front R, Front C, Back C
|
||||
CEF_CHANNEL_LAYOUT_4_0 = 6,
|
||||
|
||||
// Front L, Front R, Side L, Side R
|
||||
CEF_CHANNEL_LAYOUT_2_2 = 7,
|
||||
|
||||
// Front L, Front R, Back L, Back R
|
||||
CEF_CHANNEL_LAYOUT_QUAD = 8,
|
||||
|
||||
// Front L, Front R, Front C, Side L, Side R
|
||||
CEF_CHANNEL_LAYOUT_5_0 = 9,
|
||||
|
||||
// Front L, Front R, Front C, LFE, Side L, Side R
|
||||
CEF_CHANNEL_LAYOUT_5_1 = 10,
|
||||
|
||||
// Front L, Front R, Front C, Back L, Back R
|
||||
CEF_CHANNEL_LAYOUT_5_0_BACK = 11,
|
||||
|
||||
// Front L, Front R, Front C, LFE, Back L, Back R
|
||||
CEF_CHANNEL_LAYOUT_5_1_BACK = 12,
|
||||
|
||||
// Front L, Front R, Front C, Side L, Side R, Back L, Back R
|
||||
CEF_CHANNEL_LAYOUT_7_0 = 13,
|
||||
|
||||
// Front L, Front R, Front C, LFE, Side L, Side R, Back L, Back R
|
||||
CEF_CHANNEL_LAYOUT_7_1 = 14,
|
||||
|
||||
// Front L, Front R, Front C, LFE, Side L, Side R, Front LofC, Front RofC
|
||||
CEF_CHANNEL_LAYOUT_7_1_WIDE = 15,
|
||||
|
||||
// Stereo L, Stereo R
|
||||
CEF_CHANNEL_LAYOUT_STEREO_DOWNMIX = 16,
|
||||
|
||||
// Stereo L, Stereo R, LFE
|
||||
CEF_CHANNEL_LAYOUT_2POINT1 = 17,
|
||||
|
||||
// Stereo L, Stereo R, Front C, LFE
|
||||
CEF_CHANNEL_LAYOUT_3_1 = 18,
|
||||
|
||||
// Stereo L, Stereo R, Front C, Rear C, LFE
|
||||
CEF_CHANNEL_LAYOUT_4_1 = 19,
|
||||
|
||||
// Stereo L, Stereo R, Front C, Side L, Side R, Back C
|
||||
CEF_CHANNEL_LAYOUT_6_0 = 20,
|
||||
|
||||
// Stereo L, Stereo R, Side L, Side R, Front LofC, Front RofC
|
||||
CEF_CHANNEL_LAYOUT_6_0_FRONT = 21,
|
||||
|
||||
// Stereo L, Stereo R, Front C, Rear L, Rear R, Rear C
|
||||
CEF_CHANNEL_LAYOUT_HEXAGONAL = 22,
|
||||
|
||||
// Stereo L, Stereo R, Front C, LFE, Side L, Side R, Rear Center
|
||||
CEF_CHANNEL_LAYOUT_6_1 = 23,
|
||||
|
||||
// Stereo L, Stereo R, Front C, LFE, Back L, Back R, Rear Center
|
||||
CEF_CHANNEL_LAYOUT_6_1_BACK = 24,
|
||||
|
||||
// Stereo L, Stereo R, Side L, Side R, Front LofC, Front RofC, LFE
|
||||
CEF_CHANNEL_LAYOUT_6_1_FRONT = 25,
|
||||
|
||||
// Front L, Front R, Front C, Side L, Side R, Front LofC, Front RofC
|
||||
CEF_CHANNEL_LAYOUT_7_0_FRONT = 26,
|
||||
|
||||
// Front L, Front R, Front C, LFE, Back L, Back R, Front LofC, Front RofC
|
||||
CEF_CHANNEL_LAYOUT_7_1_WIDE_BACK = 27,
|
||||
|
||||
// Front L, Front R, Front C, Side L, Side R, Rear L, Back R, Back C.
|
||||
CEF_CHANNEL_LAYOUT_OCTAGONAL = 28,
|
||||
|
||||
// Channels are not explicitly mapped to speakers.
|
||||
CEF_CHANNEL_LAYOUT_DISCRETE = 29,
|
||||
|
||||
// Front L, Front R, Front C. Front C contains the keyboard mic audio. This
|
||||
// layout is only intended for input for WebRTC. The Front C channel
|
||||
// is stripped away in the WebRTC audio input pipeline and never seen outside
|
||||
// of that.
|
||||
CEF_CHANNEL_LAYOUT_STEREO_AND_KEYBOARD_MIC = 30,
|
||||
|
||||
// Front L, Front R, Side L, Side R, LFE
|
||||
CEF_CHANNEL_LAYOUT_4_1_QUAD_SIDE = 31,
|
||||
|
||||
// Actual channel layout is specified in the bitstream and the actual channel
|
||||
// count is unknown at Chromium media pipeline level (useful for audio
|
||||
// pass-through mode).
|
||||
CEF_CHANNEL_LAYOUT_BITSTREAM = 32,
|
||||
|
||||
// Max value, must always equal the largest entry ever logged.
|
||||
CEF_CHANNEL_LAYOUT_MAX = CEF_CHANNEL_LAYOUT_BITSTREAM
|
||||
} cef_channel_layout_t;
|
||||
|
||||
///
|
||||
// Structure representing the audio parameters for setting up the audio handler.
|
||||
///
|
||||
typedef struct _cef_audio_parameters_t {
|
||||
///
|
||||
// Layout of the audio channels
|
||||
///
|
||||
cef_channel_layout_t channel_layout;
|
||||
|
||||
///
|
||||
// Sample rate
|
||||
//
|
||||
int sample_rate;
|
||||
|
||||
///
|
||||
// Number of frames per buffer
|
||||
///
|
||||
int frames_per_buffer;
|
||||
} cef_audio_parameters_t;
|
||||
|
||||
///
|
||||
// Result codes for CefMediaRouter::CreateRoute. Should be kept in sync with
|
||||
// Chromium's media_router::RouteRequestResult::ResultCode type.
|
||||
///
|
||||
typedef enum {
|
||||
CEF_MRCR_UNKNOWN_ERROR = 0,
|
||||
CEF_MRCR_OK = 1,
|
||||
CEF_MRCR_TIMED_OUT = 2,
|
||||
CEF_MRCR_ROUTE_NOT_FOUND = 3,
|
||||
CEF_MRCR_SINK_NOT_FOUND = 4,
|
||||
CEF_MRCR_INVALID_ORIGIN = 5,
|
||||
CEF_MRCR_NO_SUPPORTED_PROVIDER = 7,
|
||||
CEF_MRCR_CANCELLED = 8,
|
||||
CEF_MRCR_ROUTE_ALREADY_EXISTS = 9,
|
||||
|
||||
CEF_MRCR_TOTAL_COUNT = 11 // The total number of values.
|
||||
} cef_media_route_create_result_t;
|
||||
|
||||
///
|
||||
// Connection state for a MediaRoute object.
|
||||
///
|
||||
typedef enum {
|
||||
CEF_MRCS_UNKNOWN,
|
||||
CEF_MRCS_CONNECTING,
|
||||
CEF_MRCS_CONNECTED,
|
||||
CEF_MRCS_CLOSED,
|
||||
CEF_MRCS_TERMINATED,
|
||||
} cef_media_route_connection_state_t;
|
||||
|
||||
///
|
||||
// Icon types for a MediaSink object. Should be kept in sync with Chromium's
|
||||
// media_router::SinkIconType type.
|
||||
///
|
||||
typedef enum {
|
||||
CEF_MSIT_CAST,
|
||||
CEF_MSIT_CAST_AUDIO_GROUP,
|
||||
CEF_MSIT_CAST_AUDIO,
|
||||
CEF_MSIT_MEETING,
|
||||
CEF_MSIT_HANGOUT,
|
||||
CEF_MSIT_EDUCATION,
|
||||
CEF_MSIT_WIRED_DISPLAY,
|
||||
CEF_MSIT_GENERIC,
|
||||
|
||||
CEF_MSIT_TOTAL_COUNT, // The total number of values.
|
||||
} cef_media_sink_icon_type_t;
|
||||
|
||||
///
|
||||
// Device information for a MediaSink object.
|
||||
///
|
||||
typedef struct _cef_media_sink_device_info_t {
|
||||
cef_string_t ip_address;
|
||||
int port;
|
||||
cef_string_t model_name;
|
||||
} cef_media_sink_device_info_t;
|
||||
|
||||
///
|
||||
// Represents commands available to TextField.
|
||||
///
|
||||
typedef enum {
|
||||
CEF_TFC_CUT = 1,
|
||||
CEF_TFC_COPY,
|
||||
CEF_TFC_PASTE,
|
||||
CEF_TFC_UNDO,
|
||||
CEF_TFC_DELETE,
|
||||
CEF_TFC_SELECT_ALL,
|
||||
} cef_text_field_commands_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@@ -33,7 +33,7 @@
|
||||
|
||||
#include "include/base/cef_build.h"
|
||||
|
||||
#if defined(OS_MACOSX)
|
||||
#if defined(OS_MAC)
|
||||
#include "include/internal/cef_string.h"
|
||||
|
||||
// Handle types.
|
||||
@@ -137,6 +137,6 @@ typedef struct _cef_window_info_t {
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // OS_MACOSX
|
||||
#endif // OS_MAC
|
||||
|
||||
#endif // CEF_INCLUDE_INTERNAL_CEF_TYPES_MAC_H_
|
||||
|
@@ -569,6 +569,7 @@ struct CefSettingsTraits {
|
||||
&target->framework_dir_path, copy);
|
||||
cef_string_set(src->main_bundle_path.str, src->main_bundle_path.length,
|
||||
&target->main_bundle_path, copy);
|
||||
target->chrome_runtime = src->chrome_runtime;
|
||||
target->multi_threaded_message_loop = src->multi_threaded_message_loop;
|
||||
target->external_message_pump = src->external_message_pump;
|
||||
target->windowless_rendering_enabled = src->windowless_rendering_enabled;
|
||||
@@ -743,6 +744,7 @@ struct CefURLPartsTraits {
|
||||
cef_string_clear(&s->origin);
|
||||
cef_string_clear(&s->path);
|
||||
cef_string_clear(&s->query);
|
||||
cef_string_clear(&s->fragment);
|
||||
}
|
||||
|
||||
static inline void set(const struct_type* src,
|
||||
@@ -759,6 +761,8 @@ struct CefURLPartsTraits {
|
||||
cef_string_set(src->origin.str, src->origin.length, &target->origin, copy);
|
||||
cef_string_set(src->path.str, src->path.length, &target->path, copy);
|
||||
cef_string_set(src->query.str, src->query.length, &target->query, copy);
|
||||
cef_string_set(src->fragment.str, src->fragment.length, &target->fragment,
|
||||
copy);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -848,6 +852,8 @@ struct CefCookieTraits {
|
||||
target->last_access = src->last_access;
|
||||
target->has_expires = src->has_expires;
|
||||
target->expires = src->expires;
|
||||
target->same_site = src->same_site;
|
||||
target->priority = src->priority;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -866,10 +872,7 @@ struct CefCursorInfoTraits {
|
||||
static inline void set(const struct_type* src,
|
||||
struct_type* target,
|
||||
bool copy) {
|
||||
target->hotspot = src->hotspot;
|
||||
target->image_scale_factor = src->image_scale_factor;
|
||||
target->buffer = src->buffer;
|
||||
target->size = src->size;
|
||||
*target = *src;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -942,23 +945,14 @@ typedef CefStructBase<CefBoxLayoutSettingsTraits> CefBoxLayoutSettings;
|
||||
struct CefCompositionUnderlineTraits {
|
||||
typedef cef_composition_underline_t struct_type;
|
||||
|
||||
static inline void init(struct_type* s) {
|
||||
s->range.from = 0;
|
||||
s->range.to = 0;
|
||||
s->color = 0;
|
||||
s->background_color = 0;
|
||||
s->thick = 0;
|
||||
}
|
||||
static inline void init(struct_type* s) {}
|
||||
|
||||
static inline void clear(struct_type* s) {}
|
||||
|
||||
static inline void set(const struct_type* src,
|
||||
struct_type* target,
|
||||
bool copy) {
|
||||
target->range = src->range;
|
||||
target->color = src->color;
|
||||
target->background_color = src->background_color;
|
||||
target->thick = src->thick;
|
||||
*target = *src;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -967,4 +961,49 @@ struct CefCompositionUnderlineTraits {
|
||||
///
|
||||
typedef CefStructBase<CefCompositionUnderlineTraits> CefCompositionUnderline;
|
||||
|
||||
struct CefAudioParametersTraits {
|
||||
typedef cef_audio_parameters_t struct_type;
|
||||
|
||||
static inline void init(struct_type* s) {}
|
||||
|
||||
static inline void clear(struct_type* s) {}
|
||||
|
||||
static inline void set(const struct_type* src,
|
||||
struct_type* target,
|
||||
bool copy) {
|
||||
*target = *src;
|
||||
}
|
||||
};
|
||||
|
||||
///
|
||||
// Class representing CefAudioParameters settings
|
||||
///
|
||||
typedef CefStructBase<CefAudioParametersTraits> CefAudioParameters;
|
||||
|
||||
struct CefMediaSinkDeviceInfoTraits {
|
||||
typedef cef_media_sink_device_info_t struct_type;
|
||||
|
||||
static inline void init(struct_type* s) {}
|
||||
|
||||
static inline void clear(struct_type* s) {
|
||||
cef_string_clear(&s->ip_address);
|
||||
cef_string_clear(&s->model_name);
|
||||
}
|
||||
|
||||
static inline void set(const struct_type* src,
|
||||
struct_type* target,
|
||||
bool copy) {
|
||||
cef_string_set(src->ip_address.str, src->ip_address.length,
|
||||
&target->ip_address, copy);
|
||||
target->port = src->port;
|
||||
cef_string_set(src->model_name.str, src->model_name.length,
|
||||
&target->model_name, copy);
|
||||
}
|
||||
};
|
||||
|
||||
///
|
||||
// Class representing MediaSink device info.
|
||||
///
|
||||
typedef CefStructBase<CefMediaSinkDeviceInfoTraits> CefMediaSinkDeviceInfo;
|
||||
|
||||
#endif // CEF_INCLUDE_INTERNAL_CEF_TYPES_WRAPPERS_H_
|
||||
|
@@ -46,9 +46,9 @@
|
||||
// This class typically, but not always, corresponds to a physical display
|
||||
// connected to the system. A fake Display may exist on a headless system, or a
|
||||
// Display may correspond to a remote, virtual display. All size and position
|
||||
// values are in density independent pixels (DIP) unless otherwise indicated.
|
||||
// Methods must be called on the browser process UI thread unless otherwise
|
||||
// indicated.
|
||||
// values are in density independent pixel (DIP) coordinates unless otherwise
|
||||
// indicated. Methods must be called on the browser process UI thread unless
|
||||
// otherwise indicated.
|
||||
///
|
||||
/*--cef(source=library)--*/
|
||||
class CefDisplay : public CefBaseRefCounted {
|
||||
@@ -61,8 +61,7 @@ class CefDisplay : public CefBaseRefCounted {
|
||||
|
||||
///
|
||||
// Returns the Display nearest |point|. Set |input_pixel_coords| to true if
|
||||
// |point| is in pixel coordinates instead of density independent pixels
|
||||
// (DIP).
|
||||
// |point| is in pixel screen coordinates instead of DIP screen coordinates.
|
||||
///
|
||||
/*--cef()--*/
|
||||
static CefRefPtr<CefDisplay> GetDisplayNearestPoint(const CefPoint& point,
|
||||
@@ -70,8 +69,8 @@ class CefDisplay : public CefBaseRefCounted {
|
||||
|
||||
///
|
||||
// Returns the Display that most closely intersects |bounds|. Set
|
||||
// |input_pixel_coords| to true if |bounds| is in pixel coordinates instead of
|
||||
// density independent pixels (DIP).
|
||||
// |input_pixel_coords| to true if |bounds| is in pixel screen coordinates
|
||||
// instead of DIP screen coordinates.
|
||||
///
|
||||
/*--cef()--*/
|
||||
static CefRefPtr<CefDisplay> GetDisplayMatchingBounds(
|
||||
@@ -108,28 +107,29 @@ class CefDisplay : public CefBaseRefCounted {
|
||||
virtual float GetDeviceScaleFactor() = 0;
|
||||
|
||||
///
|
||||
// Convert |point| from density independent pixels (DIP) to pixel coordinates
|
||||
// using this Display's device scale factor.
|
||||
// Convert |point| from DIP coordinates to pixel coordinates using this
|
||||
// Display's device scale factor.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void ConvertPointToPixels(CefPoint& point) = 0;
|
||||
|
||||
///
|
||||
// Convert |point| from pixel coordinates to density independent pixels (DIP)
|
||||
// using this Display's device scale factor.
|
||||
// Convert |point| from pixel coordinates to DIP coordinates using this
|
||||
// Display's device scale factor.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void ConvertPointFromPixels(CefPoint& point) = 0;
|
||||
|
||||
///
|
||||
// Returns this Display's bounds. This is the full size of the display.
|
||||
// Returns this Display's bounds in DIP screen coordinates. This is the full
|
||||
// size of the display.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRect GetBounds() = 0;
|
||||
|
||||
///
|
||||
// Returns this Display's work area. This excludes areas of the display that
|
||||
// are occupied for window manager toolbars, etc.
|
||||
// Returns this Display's work area in DIP screen coordinates. This excludes
|
||||
// areas of the display that are occupied with window manager toolbars, etc.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRect GetWorkArea() = 0;
|
||||
|
@@ -224,16 +224,13 @@ class CefTextfield : public CefView {
|
||||
// enabled. See additional comments on ExecuteCommand().
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual bool IsCommandEnabled(int command_id) = 0;
|
||||
virtual bool IsCommandEnabled(cef_text_field_commands_t command_id) = 0;
|
||||
|
||||
///
|
||||
// Performs the action associated with the specified command id. Valid values
|
||||
// include IDS_APP_UNDO, IDS_APP_REDO, IDS_APP_CUT, IDS_APP_COPY,
|
||||
// IDS_APP_PASTE, IDS_APP_DELETE, IDS_APP_SELECT_ALL, IDS_DELETE_* and
|
||||
// IDS_MOVE_*. See include/cef_pack_strings.h for definitions.
|
||||
// Performs the action associated with the specified command id.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void ExecuteCommand(int command_id) = 0;
|
||||
virtual void ExecuteCommand(cef_text_field_commands_t command_id) = 0;
|
||||
|
||||
///
|
||||
// Clears Edit history.
|
||||
|
@@ -174,71 +174,79 @@ class CefView : public CefBaseRefCounted {
|
||||
virtual CefRefPtr<CefView> GetViewForID(int id) = 0;
|
||||
|
||||
///
|
||||
// Sets the bounds (size and position) of this View. Position is in parent
|
||||
// coordinates.
|
||||
// Sets the bounds (size and position) of this View. |bounds| is in parent
|
||||
// coordinates, or DIP screen coordinates if there is no parent.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void SetBounds(const CefRect& bounds) = 0;
|
||||
|
||||
///
|
||||
// Returns the bounds (size and position) of this View. Position is in parent
|
||||
// coordinates.
|
||||
// Returns the bounds (size and position) of this View in parent coordinates,
|
||||
// or DIP screen coordinates if there is no parent.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRect GetBounds() = 0;
|
||||
|
||||
///
|
||||
// Returns the bounds (size and position) of this View. Position is in screen
|
||||
// Returns the bounds (size and position) of this View in DIP screen
|
||||
// coordinates.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRect GetBoundsInScreen() = 0;
|
||||
|
||||
///
|
||||
// Sets the size of this View without changing the position.
|
||||
// Sets the size of this View without changing the position. |size| in
|
||||
// parent coordinates, or DIP screen coordinates if there is no parent.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void SetSize(const CefSize& size) = 0;
|
||||
|
||||
///
|
||||
// Returns the size of this View.
|
||||
// Returns the size of this View in parent coordinates, or DIP screen
|
||||
// coordinates if there is no parent.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefSize GetSize() = 0;
|
||||
|
||||
///
|
||||
// Sets the position of this View without changing the size. |position| is in
|
||||
// parent coordinates.
|
||||
// parent coordinates, or DIP screen coordinates if there is no parent.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void SetPosition(const CefPoint& position) = 0;
|
||||
|
||||
///
|
||||
// Returns the position of this View. Position is in parent coordinates.
|
||||
// Returns the position of this View. Position is in parent coordinates, or
|
||||
// DIP screen coordinates if there is no parent.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefPoint GetPosition() = 0;
|
||||
|
||||
///
|
||||
// Returns the size this View would like to be if enough space is available.
|
||||
// Size is in parent coordinates, or DIP screen coordinates if there is no
|
||||
// parent.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefSize GetPreferredSize() = 0;
|
||||
|
||||
///
|
||||
// Size this View to its preferred size.
|
||||
// Size this View to its preferred size. Size is in parent coordinates, or
|
||||
// DIP screen coordinates if there is no parent.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual void SizeToPreferredSize() = 0;
|
||||
|
||||
///
|
||||
// Returns the minimum size for this View.
|
||||
// Returns the minimum size for this View. Size is in parent coordinates, or
|
||||
// DIP screen coordinates if there is no parent.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefSize GetMinimumSize() = 0;
|
||||
|
||||
///
|
||||
// Returns the maximum size for this View.
|
||||
// Returns the maximum size for this View. Size is in parent coordinates, or
|
||||
// DIP screen coordinates if there is no parent.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefSize GetMaximumSize() = 0;
|
||||
@@ -345,9 +353,9 @@ class CefView : public CefBaseRefCounted {
|
||||
virtual cef_color_t GetBackgroundColor() = 0;
|
||||
|
||||
///
|
||||
// Convert |point| from this View's coordinate system to that of the screen.
|
||||
// This View must belong to a Window when calling this method. Returns true
|
||||
// if the conversion is successful or false otherwise. Use
|
||||
// Convert |point| from this View's coordinate system to DIP screen
|
||||
// coordinates. This View must belong to a Window when calling this method.
|
||||
// Returns true if the conversion is successful or false otherwise. Use
|
||||
// CefDisplay::ConvertPointToPixels() after calling this method if further
|
||||
// conversion to display-specific pixel coordinates is desired.
|
||||
///
|
||||
@@ -355,9 +363,9 @@ class CefView : public CefBaseRefCounted {
|
||||
virtual bool ConvertPointToScreen(CefPoint& point) = 0;
|
||||
|
||||
///
|
||||
// Convert |point| to this View's coordinate system from that of the screen.
|
||||
// This View must belong to a Window when calling this method. Returns true if
|
||||
// the conversion is successful or false otherwise. Use
|
||||
// Convert |point| to this View's coordinate system from DIP screen
|
||||
// coordinates. This View must belong to a Window when calling this method.
|
||||
// Returns true if the conversion is successful or false otherwise. Use
|
||||
// CefDisplay::ConvertPointFromPixels() before calling this method if
|
||||
// conversion from display-specific pixel coordinates is necessary.
|
||||
///
|
||||
|
@@ -75,7 +75,20 @@ class CefWindowDelegate : public CefPanelDelegate {
|
||||
virtual CefRefPtr<CefWindow> GetParentWindow(CefRefPtr<CefWindow> window,
|
||||
bool* is_menu,
|
||||
bool* can_activate_menu) {
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
///
|
||||
// Return the initial bounds for |window| in density independent pixel (DIP)
|
||||
// coordinates. If this method returns an empty CefRect then
|
||||
// GetPreferredSize() will be called to retrieve the size, and the window will
|
||||
// be placed on the screen with origin (0,0). This method can be used in
|
||||
// combination with CefView::GetBoundsInScreen() to restore the previous
|
||||
// window bounds.
|
||||
///
|
||||
/*--cef()--*/
|
||||
virtual CefRect GetInitialBounds(CefRefPtr<CefWindow> window) {
|
||||
return CefRect();
|
||||
}
|
||||
|
||||
///
|
||||
|
@@ -89,6 +89,32 @@ struct CefDeleteOnIOThread : public CefDeleteOnThread<TID_IO> {};
|
||||
struct CefDeleteOnFileThread : public CefDeleteOnThread<TID_FILE> {};
|
||||
struct CefDeleteOnRendererThread : public CefDeleteOnThread<TID_RENDERER> {};
|
||||
|
||||
// Same as IMPLEMENT_REFCOUNTING() but using the specified Destructor.
|
||||
#define IMPLEMENT_REFCOUNTING_EX(ClassName, Destructor) \
|
||||
public: \
|
||||
void AddRef() const OVERRIDE { ref_count_.AddRef(); } \
|
||||
bool Release() const OVERRIDE { \
|
||||
if (ref_count_.Release()) { \
|
||||
Destructor::Destruct(this); \
|
||||
return true; \
|
||||
} \
|
||||
return false; \
|
||||
} \
|
||||
bool HasOneRef() const OVERRIDE { return ref_count_.HasOneRef(); } \
|
||||
bool HasAtLeastOneRef() const OVERRIDE { \
|
||||
return ref_count_.HasAtLeastOneRef(); \
|
||||
} \
|
||||
\
|
||||
private: \
|
||||
CefRefCount ref_count_
|
||||
|
||||
#define IMPLEMENT_REFCOUNTING_DELETE_ON_UIT(ClassName) \
|
||||
IMPLEMENT_REFCOUNTING_EX(ClassName, CefDeleteOnUIThread)
|
||||
|
||||
#define IMPLEMENT_REFCOUNTING_DELETE_ON_IOT(ClassName) \
|
||||
IMPLEMENT_REFCOUNTING_EX(ClassName, CefDeleteOnIOThread)
|
||||
|
||||
|
||||
///
|
||||
// Helper class to manage a scoped copy of |argv|.
|
||||
///
|
||||
|
@@ -56,7 +56,7 @@ int cef_unload_library();
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
#if defined(OS_MACOSX)
|
||||
#if defined(OS_MAC)
|
||||
|
||||
///
|
||||
// Scoped helper for loading and unloading the CEF framework library at
|
||||
@@ -122,7 +122,7 @@ class CefScopedLibraryLoader {
|
||||
DISALLOW_COPY_AND_ASSIGN(CefScopedLibraryLoader);
|
||||
};
|
||||
|
||||
#endif // defined(OS_MACOSX)
|
||||
#endif // defined(OS_MAC)
|
||||
#endif // __cplusplus
|
||||
|
||||
#endif // CEF_INCLUDE_WRAPPER_CEF_LIBRARY_LOADER_H_
|
||||
|
@@ -37,14 +37,10 @@
|
||||
#define CEF_INCLUDE_WRAPPER_CEF_STREAM_RESOURCE_HANDLER_H_
|
||||
#pragma once
|
||||
|
||||
#include "include/base/cef_logging.h"
|
||||
#include "include/base/cef_macros.h"
|
||||
#include "include/base/cef_scoped_ptr.h"
|
||||
#include "include/cef_base.h"
|
||||
#include "include/cef_resource_handler.h"
|
||||
#include "include/cef_response.h"
|
||||
|
||||
class CefStreamReader;
|
||||
#include "include/cef_stream.h"
|
||||
|
||||
///
|
||||
// Implementation of the CefResourceHandler class for reading from a CefStream.
|
||||
@@ -65,37 +61,25 @@ class CefStreamResourceHandler : public CefResourceHandler {
|
||||
CefResponse::HeaderMap header_map,
|
||||
CefRefPtr<CefStreamReader> stream);
|
||||
|
||||
virtual ~CefStreamResourceHandler();
|
||||
|
||||
// CefResourceHandler methods.
|
||||
virtual bool ProcessRequest(CefRefPtr<CefRequest> request,
|
||||
CefRefPtr<CefCallback> callback) OVERRIDE;
|
||||
virtual void GetResponseHeaders(CefRefPtr<CefResponse> response,
|
||||
int64& response_length,
|
||||
CefString& redirectUrl) OVERRIDE;
|
||||
virtual bool ReadResponse(void* data_out,
|
||||
int bytes_to_read,
|
||||
int& bytes_read,
|
||||
CefRefPtr<CefCallback> callback) OVERRIDE;
|
||||
virtual void Cancel() OVERRIDE;
|
||||
bool Open(CefRefPtr<CefRequest> request,
|
||||
bool& handle_request,
|
||||
CefRefPtr<CefCallback> callback) OVERRIDE;
|
||||
void GetResponseHeaders(CefRefPtr<CefResponse> response,
|
||||
int64& response_length,
|
||||
CefString& redirectUrl) OVERRIDE;
|
||||
bool Read(void* data_out,
|
||||
int bytes_to_read,
|
||||
int& bytes_read,
|
||||
CefRefPtr<CefResourceReadCallback> callback) OVERRIDE;
|
||||
void Cancel() OVERRIDE;
|
||||
|
||||
private:
|
||||
void ReadOnFileThread(int bytes_to_read, CefRefPtr<CefCallback> callback);
|
||||
|
||||
const int status_code_;
|
||||
const CefString status_text_;
|
||||
const CefString mime_type_;
|
||||
const CefResponse::HeaderMap header_map_;
|
||||
const CefRefPtr<CefStreamReader> stream_;
|
||||
bool read_on_file_thread_;
|
||||
|
||||
class Buffer;
|
||||
scoped_ptr<Buffer> buffer_;
|
||||
#if DCHECK_IS_ON()
|
||||
// Used in debug builds to verify that |buffer_| isn't being accessed on
|
||||
// multiple threads at the same time.
|
||||
bool buffer_owned_by_file_thread_;
|
||||
#endif
|
||||
|
||||
IMPLEMENT_REFCOUNTING(CefStreamResourceHandler);
|
||||
DISALLOW_COPY_AND_ASSIGN(CefStreamResourceHandler);
|
||||
|
456
libcef/browser/alloy/alloy_browser_context.cc
Normal file
456
libcef/browser/alloy/alloy_browser_context.cc
Normal file
@@ -0,0 +1,456 @@
|
||||
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "libcef/browser/alloy/alloy_browser_context.h"
|
||||
|
||||
#include <map>
|
||||
#include <utility>
|
||||
|
||||
#include "libcef/browser/download_manager_delegate.h"
|
||||
#include "libcef/browser/extensions/extension_system.h"
|
||||
#include "libcef/browser/prefs/browser_prefs.h"
|
||||
#include "libcef/browser/ssl_host_state_delegate.h"
|
||||
#include "libcef/browser/thread_util.h"
|
||||
#include "libcef/common/cef_switches.h"
|
||||
#include "libcef/common/extensions/extensions_util.h"
|
||||
|
||||
#include "base/command_line.h"
|
||||
#include "base/files/file_util.h"
|
||||
#include "base/lazy_instance.h"
|
||||
#include "base/logging.h"
|
||||
#include "base/strings/string_util.h"
|
||||
#include "chrome/browser/font_family_cache.h"
|
||||
#include "chrome/browser/media/media_device_id_salt.h"
|
||||
#include "chrome/browser/plugins/chrome_plugin_service_filter.h"
|
||||
#include "chrome/browser/profiles/profile_key.h"
|
||||
#include "chrome/browser/ui/zoom/chrome_zoom_level_prefs.h"
|
||||
#include "chrome/common/pref_names.h"
|
||||
#include "components/guest_view/browser/guest_view_manager.h"
|
||||
#include "components/keyed_service/content/browser_context_dependency_manager.h"
|
||||
#include "components/keyed_service/core/simple_dependency_manager.h"
|
||||
#include "components/keyed_service/core/simple_key_map.h"
|
||||
#include "components/prefs/pref_service.h"
|
||||
#include "components/proxy_config/pref_proxy_config_tracker_impl.h"
|
||||
#include "components/user_prefs/user_prefs.h"
|
||||
#include "components/visitedlink/browser/visitedlink_event_listener.h"
|
||||
#include "components/visitedlink/browser/visitedlink_writer.h"
|
||||
#include "components/zoom/zoom_event_manager.h"
|
||||
#include "content/public/browser/browser_task_traits.h"
|
||||
#include "content/public/browser/browser_thread.h"
|
||||
#include "content/public/browser/download_manager.h"
|
||||
#include "content/public/browser/resource_context.h"
|
||||
#include "content/public/browser/storage_partition.h"
|
||||
#include "extensions/browser/extension_protocols.h"
|
||||
#include "extensions/browser/process_manager.h"
|
||||
#include "extensions/common/constants.h"
|
||||
#include "net/proxy_resolution/proxy_config_service.h"
|
||||
#include "services/network/public/mojom/cors_origin_pattern.mojom.h"
|
||||
|
||||
using content::BrowserThread;
|
||||
|
||||
// Creates and manages VisitedLinkEventListener objects for each
|
||||
// AlloyBrowserContext sharing the same VisitedLinkWriter.
|
||||
class CefVisitedLinkListener : public visitedlink::VisitedLinkWriter::Listener {
|
||||
public:
|
||||
CefVisitedLinkListener() { DCHECK(listener_map_.empty()); }
|
||||
|
||||
void CreateListenerForContext(content::BrowserContext* context) {
|
||||
CEF_REQUIRE_UIT();
|
||||
auto listener =
|
||||
std::make_unique<visitedlink::VisitedLinkEventListener>(context);
|
||||
listener_map_.insert(std::make_pair(context, std::move(listener)));
|
||||
}
|
||||
|
||||
void RemoveListenerForContext(content::BrowserContext* context) {
|
||||
CEF_REQUIRE_UIT();
|
||||
ListenerMap::iterator it = listener_map_.find(context);
|
||||
DCHECK(it != listener_map_.end());
|
||||
listener_map_.erase(it);
|
||||
}
|
||||
|
||||
// visitedlink::VisitedLinkWriter::Listener methods.
|
||||
|
||||
void NewTable(base::ReadOnlySharedMemoryRegion* table_region) override {
|
||||
CEF_REQUIRE_UIT();
|
||||
ListenerMap::iterator it = listener_map_.begin();
|
||||
for (; it != listener_map_.end(); ++it)
|
||||
it->second->NewTable(table_region);
|
||||
}
|
||||
|
||||
void Add(visitedlink::VisitedLinkCommon::Fingerprint fingerprint) override {
|
||||
CEF_REQUIRE_UIT();
|
||||
ListenerMap::iterator it = listener_map_.begin();
|
||||
for (; it != listener_map_.end(); ++it)
|
||||
it->second->Add(fingerprint);
|
||||
}
|
||||
|
||||
void Reset(bool invalidate_hashes) override {
|
||||
CEF_REQUIRE_UIT();
|
||||
ListenerMap::iterator it = listener_map_.begin();
|
||||
for (; it != listener_map_.end(); ++it)
|
||||
it->second->Reset(invalidate_hashes);
|
||||
}
|
||||
|
||||
private:
|
||||
// Map of AlloyBrowserContext to the associated VisitedLinkEventListener.
|
||||
typedef std::map<const content::BrowserContext*,
|
||||
std::unique_ptr<visitedlink::VisitedLinkEventListener>>
|
||||
ListenerMap;
|
||||
ListenerMap listener_map_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(CefVisitedLinkListener);
|
||||
};
|
||||
|
||||
AlloyBrowserContext::AlloyBrowserContext(
|
||||
const CefRequestContextSettings& settings)
|
||||
: CefBrowserContext(settings) {}
|
||||
|
||||
AlloyBrowserContext::~AlloyBrowserContext() {
|
||||
if (resource_context_) {
|
||||
content::BrowserThread::DeleteSoon(content::BrowserThread::IO, FROM_HERE,
|
||||
resource_context_.release());
|
||||
}
|
||||
}
|
||||
|
||||
void AlloyBrowserContext::Initialize() {
|
||||
CefBrowserContext::Initialize();
|
||||
|
||||
key_ = std::make_unique<ProfileKey>(cache_path_);
|
||||
SimpleKeyMap::GetInstance()->Associate(this, key_.get());
|
||||
|
||||
// Initialize the PrefService object.
|
||||
pref_service_ = browser_prefs::CreatePrefService(
|
||||
this, cache_path_, !!settings_.persist_user_preferences);
|
||||
|
||||
// This must be called before creating any services to avoid hitting
|
||||
// DependencyManager::AssertContextWasntDestroyed when creating/destroying
|
||||
// multiple browser contexts (due to pointer address reuse).
|
||||
BrowserContextDependencyManager::GetInstance()->CreateBrowserContextServices(
|
||||
this);
|
||||
|
||||
const bool extensions_enabled = extensions::ExtensionsEnabled();
|
||||
if (extensions_enabled) {
|
||||
// Create the custom ExtensionSystem first because other KeyedServices
|
||||
// depend on it.
|
||||
extension_system_ = static_cast<extensions::CefExtensionSystem*>(
|
||||
extensions::ExtensionSystem::Get(this));
|
||||
extension_system_->InitForRegularProfile(true);
|
||||
|
||||
// Make sure the ProcessManager is created so that it receives extension
|
||||
// load notifications. This is necessary for the proper initialization of
|
||||
// background/event pages.
|
||||
extensions::ProcessManager::Get(this);
|
||||
}
|
||||
|
||||
// Initialize visited links management.
|
||||
base::FilePath visited_link_path;
|
||||
if (!cache_path_.empty())
|
||||
visited_link_path = cache_path_.Append(FILE_PATH_LITERAL("Visited Links"));
|
||||
visitedlink_listener_ = new CefVisitedLinkListener;
|
||||
visitedlink_master_.reset(new visitedlink::VisitedLinkWriter(
|
||||
visitedlink_listener_, this, !visited_link_path.empty(), false,
|
||||
visited_link_path, 0));
|
||||
visitedlink_listener_->CreateListenerForContext(this);
|
||||
visitedlink_master_->Init();
|
||||
|
||||
// Initialize proxy configuration tracker.
|
||||
pref_proxy_config_tracker_.reset(new PrefProxyConfigTrackerImpl(
|
||||
GetPrefs(), content::GetIOThreadTaskRunner({})));
|
||||
|
||||
// Spell checking support and possibly other subsystems retrieve the
|
||||
// PrefService associated with a BrowserContext via UserPrefs::Get().
|
||||
PrefService* pref_service = GetPrefs();
|
||||
DCHECK(pref_service);
|
||||
user_prefs::UserPrefs::Set(this, pref_service);
|
||||
key_->SetPrefs(pref_service);
|
||||
|
||||
if (extensions_enabled)
|
||||
extension_system_->Init();
|
||||
|
||||
ChromePluginServiceFilter::GetInstance()->RegisterProfile(this);
|
||||
|
||||
media_device_id_salt_ = new MediaDeviceIDSalt(pref_service);
|
||||
}
|
||||
|
||||
void AlloyBrowserContext::Shutdown() {
|
||||
CefBrowserContext::Shutdown();
|
||||
|
||||
// Send notifications to clean up objects associated with this Profile.
|
||||
MaybeSendDestroyedNotification();
|
||||
|
||||
ChromePluginServiceFilter::GetInstance()->UnregisterProfile(this);
|
||||
|
||||
// Remove any BrowserContextKeyedServiceFactory associations. This must be
|
||||
// called before the ProxyService owned by AlloyBrowserContext is destroyed.
|
||||
// The SimpleDependencyManager should always be passed after the
|
||||
// BrowserContextDependencyManager. This is because the KeyedService instances
|
||||
// in the BrowserContextDependencyManager's dependency graph can depend on the
|
||||
// ones in the SimpleDependencyManager's graph.
|
||||
DependencyManager::PerformInterlockedTwoPhaseShutdown(
|
||||
BrowserContextDependencyManager::GetInstance(), this,
|
||||
SimpleDependencyManager::GetInstance(), key_.get());
|
||||
|
||||
key_.reset();
|
||||
SimpleKeyMap::GetInstance()->Dissociate(this);
|
||||
|
||||
// Shuts down the storage partitions associated with this browser context.
|
||||
// This must be called before the browser context is actually destroyed
|
||||
// and before a clean-up task for its corresponding IO thread residents
|
||||
// (e.g. ResourceContext) is posted, so that the classes that hung on
|
||||
// StoragePartition can have time to do necessary cleanups on IO thread.
|
||||
ShutdownStoragePartitions();
|
||||
|
||||
visitedlink_listener_->RemoveListenerForContext(this);
|
||||
|
||||
// The FontFamilyCache references the ProxyService so delete it before the
|
||||
// ProxyService is deleted.
|
||||
SetUserData(&kFontFamilyCacheKey, nullptr);
|
||||
|
||||
pref_proxy_config_tracker_->DetachFromPrefService();
|
||||
|
||||
// Delete the download manager delegate here because otherwise we'll crash
|
||||
// when it's accessed from the content::BrowserContext destructor.
|
||||
if (download_manager_delegate_)
|
||||
download_manager_delegate_.reset(nullptr);
|
||||
}
|
||||
|
||||
void AlloyBrowserContext::RemoveCefRequestContext(
|
||||
CefRequestContextImpl* context) {
|
||||
CEF_REQUIRE_UIT();
|
||||
|
||||
if (extensions::ExtensionsEnabled()) {
|
||||
extension_system()->OnRequestContextDeleted(context);
|
||||
}
|
||||
|
||||
// May result in |this| being deleted.
|
||||
CefBrowserContext::RemoveCefRequestContext(context);
|
||||
}
|
||||
|
||||
void AlloyBrowserContext::LoadExtension(
|
||||
const CefString& root_directory,
|
||||
CefRefPtr<CefDictionaryValue> manifest,
|
||||
CefRefPtr<CefExtensionHandler> handler,
|
||||
CefRefPtr<CefRequestContext> loader_context) {
|
||||
if (!extensions::ExtensionsEnabled()) {
|
||||
if (handler)
|
||||
handler->OnExtensionLoadFailed(ERR_ABORTED);
|
||||
return;
|
||||
}
|
||||
|
||||
if (manifest && manifest->GetSize() > 0) {
|
||||
CefDictionaryValueImpl* value_impl =
|
||||
static_cast<CefDictionaryValueImpl*>(manifest.get());
|
||||
extension_system()->LoadExtension(base::WrapUnique(value_impl->CopyValue()),
|
||||
root_directory, false /* builtin */,
|
||||
loader_context, handler);
|
||||
} else {
|
||||
extension_system()->LoadExtension(root_directory, false /* builtin */,
|
||||
loader_context, handler);
|
||||
}
|
||||
}
|
||||
|
||||
bool AlloyBrowserContext::GetExtensions(std::vector<CefString>& extension_ids) {
|
||||
if (!extensions::ExtensionsEnabled())
|
||||
return false;
|
||||
|
||||
extensions::CefExtensionSystem::ExtensionMap extension_map =
|
||||
extension_system()->GetExtensions();
|
||||
extensions::CefExtensionSystem::ExtensionMap::const_iterator it =
|
||||
extension_map.begin();
|
||||
for (; it != extension_map.end(); ++it)
|
||||
extension_ids.push_back(it->second->GetIdentifier());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
CefRefPtr<CefExtension> AlloyBrowserContext::GetExtension(
|
||||
const CefString& extension_id) {
|
||||
if (!extensions::ExtensionsEnabled())
|
||||
return nullptr;
|
||||
|
||||
return extension_system()->GetExtension(extension_id);
|
||||
}
|
||||
|
||||
bool AlloyBrowserContext::UnloadExtension(const CefString& extension_id) {
|
||||
DCHECK(extensions::ExtensionsEnabled());
|
||||
return extension_system()->UnloadExtension(extension_id);
|
||||
}
|
||||
|
||||
bool AlloyBrowserContext::IsPrintPreviewSupported() const {
|
||||
CEF_REQUIRE_UIT();
|
||||
if (!extensions::PrintPreviewEnabled())
|
||||
return false;
|
||||
|
||||
return !GetPrefs()->GetBoolean(prefs::kPrintPreviewDisabled);
|
||||
}
|
||||
|
||||
content::ResourceContext* AlloyBrowserContext::GetResourceContext() {
|
||||
if (!resource_context_) {
|
||||
resource_context_ = std::make_unique<content::ResourceContext>();
|
||||
}
|
||||
return resource_context_.get();
|
||||
}
|
||||
|
||||
content::ClientHintsControllerDelegate*
|
||||
AlloyBrowserContext::GetClientHintsControllerDelegate() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void AlloyBrowserContext::SetCorsOriginAccessListForOrigin(
|
||||
const url::Origin& source_origin,
|
||||
std::vector<network::mojom::CorsOriginPatternPtr> allow_patterns,
|
||||
std::vector<network::mojom::CorsOriginPatternPtr> block_patterns,
|
||||
base::OnceClosure closure) {
|
||||
// This method is called for Extension support.
|
||||
base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, std::move(closure));
|
||||
}
|
||||
|
||||
ChromeZoomLevelPrefs* AlloyBrowserContext::GetZoomLevelPrefs() {
|
||||
return static_cast<ChromeZoomLevelPrefs*>(
|
||||
GetStoragePartition(this, nullptr)->GetZoomLevelDelegate());
|
||||
}
|
||||
|
||||
scoped_refptr<network::SharedURLLoaderFactory>
|
||||
AlloyBrowserContext::GetURLLoaderFactory() {
|
||||
return GetDefaultStoragePartition(this)
|
||||
->GetURLLoaderFactoryForBrowserProcess();
|
||||
}
|
||||
|
||||
base::FilePath AlloyBrowserContext::GetPath() {
|
||||
return cache_path_;
|
||||
}
|
||||
|
||||
base::FilePath AlloyBrowserContext::GetPath() const {
|
||||
return cache_path_;
|
||||
}
|
||||
|
||||
std::unique_ptr<content::ZoomLevelDelegate>
|
||||
AlloyBrowserContext::CreateZoomLevelDelegate(
|
||||
const base::FilePath& partition_path) {
|
||||
if (cache_path_.empty())
|
||||
return std::unique_ptr<content::ZoomLevelDelegate>();
|
||||
|
||||
return base::WrapUnique(new ChromeZoomLevelPrefs(
|
||||
GetPrefs(), cache_path_, partition_path,
|
||||
zoom::ZoomEventManager::GetForBrowserContext(this)->GetWeakPtr()));
|
||||
}
|
||||
|
||||
bool AlloyBrowserContext::IsOffTheRecord() const {
|
||||
// Alloy contexts are never flagged as off-the-record. It causes problems
|
||||
// for the extension system.
|
||||
return false;
|
||||
}
|
||||
|
||||
content::DownloadManagerDelegate*
|
||||
AlloyBrowserContext::GetDownloadManagerDelegate() {
|
||||
if (!download_manager_delegate_) {
|
||||
content::DownloadManager* manager =
|
||||
BrowserContext::GetDownloadManager(this);
|
||||
download_manager_delegate_.reset(new CefDownloadManagerDelegate(manager));
|
||||
}
|
||||
return download_manager_delegate_.get();
|
||||
}
|
||||
|
||||
content::BrowserPluginGuestManager* AlloyBrowserContext::GetGuestManager() {
|
||||
DCHECK(extensions::ExtensionsEnabled());
|
||||
return guest_view::GuestViewManager::FromBrowserContext(this);
|
||||
}
|
||||
|
||||
storage::SpecialStoragePolicy* AlloyBrowserContext::GetSpecialStoragePolicy() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
content::PushMessagingService* AlloyBrowserContext::GetPushMessagingService() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
content::StorageNotificationService*
|
||||
AlloyBrowserContext::GetStorageNotificationService() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
content::SSLHostStateDelegate* AlloyBrowserContext::GetSSLHostStateDelegate() {
|
||||
if (!ssl_host_state_delegate_)
|
||||
ssl_host_state_delegate_.reset(new CefSSLHostStateDelegate());
|
||||
return ssl_host_state_delegate_.get();
|
||||
}
|
||||
|
||||
content::PermissionControllerDelegate*
|
||||
AlloyBrowserContext::GetPermissionControllerDelegate() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
content::BackgroundFetchDelegate*
|
||||
AlloyBrowserContext::GetBackgroundFetchDelegate() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
content::BackgroundSyncController*
|
||||
AlloyBrowserContext::GetBackgroundSyncController() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
content::BrowsingDataRemoverDelegate*
|
||||
AlloyBrowserContext::GetBrowsingDataRemoverDelegate() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::string AlloyBrowserContext::GetMediaDeviceIDSalt() {
|
||||
return media_device_id_salt_->GetSalt();
|
||||
}
|
||||
|
||||
PrefService* AlloyBrowserContext::GetPrefs() {
|
||||
return pref_service_.get();
|
||||
}
|
||||
|
||||
const PrefService* AlloyBrowserContext::GetPrefs() const {
|
||||
return pref_service_.get();
|
||||
}
|
||||
|
||||
ProfileKey* AlloyBrowserContext::GetProfileKey() const {
|
||||
DCHECK(key_);
|
||||
return key_.get();
|
||||
}
|
||||
|
||||
policy::SchemaRegistryService*
|
||||
AlloyBrowserContext::GetPolicySchemaRegistryService() {
|
||||
NOTREACHED();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
policy::UserCloudPolicyManager*
|
||||
AlloyBrowserContext::GetUserCloudPolicyManager() {
|
||||
NOTREACHED();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
policy::ProfilePolicyConnector*
|
||||
AlloyBrowserContext::GetProfilePolicyConnector() {
|
||||
NOTREACHED();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const policy::ProfilePolicyConnector*
|
||||
AlloyBrowserContext::GetProfilePolicyConnector() const {
|
||||
NOTREACHED();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void AlloyBrowserContext::RebuildTable(
|
||||
const scoped_refptr<URLEnumerator>& enumerator) {
|
||||
// Called when visited links will not or cannot be loaded from disk.
|
||||
enumerator->OnComplete(true);
|
||||
}
|
||||
|
||||
DownloadPrefs* AlloyBrowserContext::GetDownloadPrefs() {
|
||||
CEF_REQUIRE_UIT();
|
||||
if (!download_prefs_) {
|
||||
download_prefs_.reset(new DownloadPrefs(this));
|
||||
}
|
||||
return download_prefs_.get();
|
||||
}
|
||||
|
||||
void AlloyBrowserContext::AddVisitedURLs(const std::vector<GURL>& urls) {
|
||||
visitedlink_master_->AddURLs(urls);
|
||||
}
|
150
libcef/browser/alloy/alloy_browser_context.h
Normal file
150
libcef/browser/alloy/alloy_browser_context.h
Normal file
@@ -0,0 +1,150 @@
|
||||
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_CONTEXT_H_
|
||||
#define CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_CONTEXT_H_
|
||||
#pragma once
|
||||
|
||||
#include "include/cef_request_context_handler.h"
|
||||
#include "libcef/browser/alloy/chrome_profile_alloy.h"
|
||||
#include "libcef/browser/browser_context.h"
|
||||
#include "libcef/browser/request_context_handler_map.h"
|
||||
|
||||
#include "chrome/browser/download/download_prefs.h"
|
||||
#include "components/proxy_config/pref_proxy_config_tracker.h"
|
||||
#include "components/visitedlink/browser/visitedlink_delegate.h"
|
||||
|
||||
class CefDownloadManagerDelegate;
|
||||
class CefSSLHostStateDelegate;
|
||||
class CefVisitedLinkListener;
|
||||
class MediaDeviceIDSalt;
|
||||
class PrefService;
|
||||
|
||||
namespace extensions {
|
||||
class CefExtensionSystem;
|
||||
}
|
||||
|
||||
namespace visitedlink {
|
||||
class VisitedLinkWriter;
|
||||
}
|
||||
|
||||
// See CefBrowserContext documentation for usage. Only accessed on the UI thread
|
||||
// unless otherwise indicated. ChromeProfileAlloy must be the first listed base
|
||||
// class to avoid issues when casting between void* and content::BrowserContext*
|
||||
// in Chromium code.
|
||||
class AlloyBrowserContext : public ChromeProfileAlloy,
|
||||
public CefBrowserContext,
|
||||
public visitedlink::VisitedLinkDelegate {
|
||||
public:
|
||||
explicit AlloyBrowserContext(const CefRequestContextSettings& settings);
|
||||
|
||||
// CefBrowserContext overrides.
|
||||
content::BrowserContext* AsBrowserContext() override { return this; }
|
||||
Profile* AsProfile() override { return this; }
|
||||
void Initialize() override;
|
||||
void Shutdown() override;
|
||||
void RemoveCefRequestContext(CefRequestContextImpl* context) override;
|
||||
void LoadExtension(const CefString& root_directory,
|
||||
CefRefPtr<CefDictionaryValue> manifest,
|
||||
CefRefPtr<CefExtensionHandler> handler,
|
||||
CefRefPtr<CefRequestContext> loader_context) override;
|
||||
bool GetExtensions(std::vector<CefString>& extension_ids) override;
|
||||
CefRefPtr<CefExtension> GetExtension(const CefString& extension_id) override;
|
||||
bool UnloadExtension(const CefString& extension_id) override;
|
||||
bool IsPrintPreviewSupported() const override;
|
||||
|
||||
// content::BrowserContext overrides.
|
||||
content::ResourceContext* GetResourceContext() override;
|
||||
content::ClientHintsControllerDelegate* GetClientHintsControllerDelegate()
|
||||
override;
|
||||
void SetCorsOriginAccessListForOrigin(
|
||||
const url::Origin& source_origin,
|
||||
std::vector<network::mojom::CorsOriginPatternPtr> allow_patterns,
|
||||
std::vector<network::mojom::CorsOriginPatternPtr> block_patterns,
|
||||
base::OnceClosure closure) override;
|
||||
base::FilePath GetPath() override;
|
||||
base::FilePath GetPath() const override;
|
||||
std::unique_ptr<content::ZoomLevelDelegate> CreateZoomLevelDelegate(
|
||||
const base::FilePath& partition_path) override;
|
||||
bool IsOffTheRecord() const override;
|
||||
content::DownloadManagerDelegate* GetDownloadManagerDelegate() override;
|
||||
content::BrowserPluginGuestManager* GetGuestManager() override;
|
||||
storage::SpecialStoragePolicy* GetSpecialStoragePolicy() override;
|
||||
content::PushMessagingService* GetPushMessagingService() override;
|
||||
content::StorageNotificationService* GetStorageNotificationService() override;
|
||||
content::SSLHostStateDelegate* GetSSLHostStateDelegate() override;
|
||||
content::PermissionControllerDelegate* GetPermissionControllerDelegate()
|
||||
override;
|
||||
content::BackgroundFetchDelegate* GetBackgroundFetchDelegate() override;
|
||||
content::BackgroundSyncController* GetBackgroundSyncController() override;
|
||||
content::BrowsingDataRemoverDelegate* GetBrowsingDataRemoverDelegate()
|
||||
override;
|
||||
std::string GetMediaDeviceIDSalt() override;
|
||||
|
||||
// Profile overrides.
|
||||
ChromeZoomLevelPrefs* GetZoomLevelPrefs() override;
|
||||
scoped_refptr<network::SharedURLLoaderFactory> GetURLLoaderFactory() override;
|
||||
PrefService* GetPrefs() override;
|
||||
bool AllowsBrowserWindows() const override { return false; }
|
||||
const PrefService* GetPrefs() const override;
|
||||
ProfileKey* GetProfileKey() const override;
|
||||
policy::SchemaRegistryService* GetPolicySchemaRegistryService() override;
|
||||
policy::UserCloudPolicyManager* GetUserCloudPolicyManager() override;
|
||||
policy::ProfilePolicyConnector* GetProfilePolicyConnector() override;
|
||||
const policy::ProfilePolicyConnector* GetProfilePolicyConnector()
|
||||
const override;
|
||||
|
||||
// Values checked in ProfileNetworkContextService::CreateNetworkContextParams
|
||||
// when creating the NetworkContext.
|
||||
bool ShouldRestoreOldSessionCookies() const override {
|
||||
return ShouldPersistSessionCookies();
|
||||
}
|
||||
bool ShouldPersistSessionCookies() const override {
|
||||
return !!settings_.persist_session_cookies;
|
||||
}
|
||||
|
||||
// visitedlink::VisitedLinkDelegate methods.
|
||||
void RebuildTable(const scoped_refptr<URLEnumerator>& enumerator) override;
|
||||
|
||||
// Manages extensions.
|
||||
extensions::CefExtensionSystem* extension_system() const {
|
||||
return extension_system_;
|
||||
}
|
||||
|
||||
// Called from AlloyBrowserHostImpl::DidFinishNavigation to update the table
|
||||
// of visited links.
|
||||
void AddVisitedURLs(const std::vector<GURL>& urls);
|
||||
|
||||
// Called from DownloadPrefs::FromBrowserContext.
|
||||
DownloadPrefs* GetDownloadPrefs();
|
||||
|
||||
private:
|
||||
~AlloyBrowserContext() override;
|
||||
|
||||
std::unique_ptr<PrefService> pref_service_;
|
||||
std::unique_ptr<PrefProxyConfigTracker> pref_proxy_config_tracker_;
|
||||
|
||||
std::unique_ptr<CefDownloadManagerDelegate> download_manager_delegate_;
|
||||
std::unique_ptr<CefSSLHostStateDelegate> ssl_host_state_delegate_;
|
||||
std::unique_ptr<visitedlink::VisitedLinkWriter> visitedlink_master_;
|
||||
// |visitedlink_listener_| is owned by visitedlink_master_.
|
||||
CefVisitedLinkListener* visitedlink_listener_ = nullptr;
|
||||
|
||||
// Owned by the KeyedService system.
|
||||
extensions::CefExtensionSystem* extension_system_ = nullptr;
|
||||
|
||||
// The key to index KeyedService instances created by
|
||||
// SimpleKeyedServiceFactory.
|
||||
std::unique_ptr<ProfileKey> key_;
|
||||
|
||||
std::unique_ptr<DownloadPrefs> download_prefs_;
|
||||
|
||||
std::unique_ptr<content::ResourceContext> resource_context_;
|
||||
|
||||
scoped_refptr<MediaDeviceIDSalt> media_device_id_salt_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(AlloyBrowserContext);
|
||||
};
|
||||
|
||||
#endif // CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_CONTEXT_H_
|
1754
libcef/browser/alloy/alloy_browser_host_impl.cc
Normal file
1754
libcef/browser/alloy/alloy_browser_host_impl.cc
Normal file
File diff suppressed because it is too large
Load Diff
412
libcef/browser/alloy/alloy_browser_host_impl.h
Normal file
412
libcef/browser/alloy/alloy_browser_host_impl.h
Normal file
@@ -0,0 +1,412 @@
|
||||
// Copyright (c) 2012 The Chromium Embedded Framework Authors.
|
||||
// Portions copyright (c) 2011 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_HOST_IMPL_H_
|
||||
#define CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_HOST_IMPL_H_
|
||||
#pragma once
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "include/cef_browser.h"
|
||||
#include "include/cef_client.h"
|
||||
#include "include/cef_frame.h"
|
||||
#include "libcef/browser/browser_host_base.h"
|
||||
#include "libcef/browser/browser_info.h"
|
||||
#include "libcef/browser/file_dialog_manager.h"
|
||||
#include "libcef/browser/frame_host_impl.h"
|
||||
#include "libcef/browser/javascript_dialog_manager.h"
|
||||
#include "libcef/browser/menu_manager.h"
|
||||
#include "libcef/browser/request_context_impl.h"
|
||||
|
||||
#include "base/strings/string16.h"
|
||||
#include "base/synchronization/lock.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
#include "content/public/browser/web_contents_delegate.h"
|
||||
#include "content/public/browser/web_contents_observer.h"
|
||||
#include "extensions/common/view_type.h"
|
||||
|
||||
class CefAudioCapturer;
|
||||
class CefBrowserInfo;
|
||||
class CefDevToolsManager;
|
||||
class SiteInstance;
|
||||
|
||||
// CefBrowser implementation for the alloy runtime. Method calls are delegated
|
||||
// to the CefPlatformDelegate or the WebContents as appropriate. All methods are
|
||||
// thread-safe unless otherwise indicated.
|
||||
//
|
||||
// WebContentsDelegate: Interface for handling WebContents delegations. There is
|
||||
// a one-to-one relationship between AlloyBrowserHostImpl and WebContents
|
||||
// instances.
|
||||
//
|
||||
// WebContentsObserver: Interface for observing WebContents notifications and
|
||||
// IPC messages. There is a one-to-one relationship between WebContents and
|
||||
// RenderViewHost instances. IPC messages received by the RenderViewHost will be
|
||||
// forwarded to this WebContentsObserver implementation via WebContents. IPC
|
||||
// messages sent using AlloyBrowserHostImpl::Send() will be forwarded to the
|
||||
// RenderViewHost (after posting to the UI thread if necessary). Use
|
||||
// WebContentsObserver::routing_id() when sending IPC messages.
|
||||
class AlloyBrowserHostImpl : public CefBrowserHostBase,
|
||||
public content::WebContentsDelegate,
|
||||
public content::WebContentsObserver {
|
||||
public:
|
||||
// Used for handling the response to command messages.
|
||||
class CommandResponseHandler : public virtual CefBaseRefCounted {
|
||||
public:
|
||||
virtual void OnResponse(const std::string& response) = 0;
|
||||
};
|
||||
|
||||
~AlloyBrowserHostImpl() override;
|
||||
|
||||
// Create a new AlloyBrowserHostImpl instance with owned WebContents.
|
||||
static CefRefPtr<AlloyBrowserHostImpl> Create(
|
||||
CefBrowserCreateParams& create_params);
|
||||
|
||||
// Returns the browser associated with the specified RenderViewHost.
|
||||
static CefRefPtr<AlloyBrowserHostImpl> GetBrowserForHost(
|
||||
const content::RenderViewHost* host);
|
||||
// Returns the browser associated with the specified RenderFrameHost.
|
||||
static CefRefPtr<AlloyBrowserHostImpl> GetBrowserForHost(
|
||||
const content::RenderFrameHost* host);
|
||||
// Returns the browser associated with the specified WebContents.
|
||||
static CefRefPtr<AlloyBrowserHostImpl> GetBrowserForContents(
|
||||
const content::WebContents* contents);
|
||||
// Returns the browser associated with the specified FrameTreeNode ID.
|
||||
static CefRefPtr<AlloyBrowserHostImpl> GetBrowserForFrameTreeNode(
|
||||
int frame_tree_node_id);
|
||||
// Returns the browser associated with the specified frame routing IDs.
|
||||
static CefRefPtr<AlloyBrowserHostImpl> GetBrowserForFrameRoute(
|
||||
int render_process_id,
|
||||
int render_routing_id);
|
||||
|
||||
// CefBrowserHost methods.
|
||||
void CloseBrowser(bool force_close) override;
|
||||
bool TryCloseBrowser() override;
|
||||
void SetFocus(bool focus) override;
|
||||
CefWindowHandle GetWindowHandle() override;
|
||||
CefWindowHandle GetOpenerWindowHandle() override;
|
||||
bool HasView() override;
|
||||
double GetZoomLevel() override;
|
||||
void SetZoomLevel(double zoomLevel) override;
|
||||
void RunFileDialog(FileDialogMode mode,
|
||||
const CefString& title,
|
||||
const CefString& default_file_path,
|
||||
const std::vector<CefString>& accept_filters,
|
||||
int selected_accept_filter,
|
||||
CefRefPtr<CefRunFileDialogCallback> callback) override;
|
||||
void Print() override;
|
||||
void PrintToPDF(const CefString& path,
|
||||
const CefPdfPrintSettings& settings,
|
||||
CefRefPtr<CefPdfPrintCallback> callback) override;
|
||||
void Find(int identifier,
|
||||
const CefString& searchText,
|
||||
bool forward,
|
||||
bool matchCase,
|
||||
bool findNext) override;
|
||||
void StopFinding(bool clearSelection) override;
|
||||
void ShowDevTools(const CefWindowInfo& windowInfo,
|
||||
CefRefPtr<CefClient> client,
|
||||
const CefBrowserSettings& settings,
|
||||
const CefPoint& inspect_element_at) override;
|
||||
void CloseDevTools() override;
|
||||
bool HasDevTools() override;
|
||||
bool SendDevToolsMessage(const void* message, size_t message_size) override;
|
||||
int ExecuteDevToolsMethod(int message_id,
|
||||
const CefString& method,
|
||||
CefRefPtr<CefDictionaryValue> params) override;
|
||||
CefRefPtr<CefRegistration> AddDevToolsMessageObserver(
|
||||
CefRefPtr<CefDevToolsMessageObserver> observer) override;
|
||||
bool IsWindowRenderingDisabled() override;
|
||||
void WasResized() override;
|
||||
void WasHidden(bool hidden) override;
|
||||
void NotifyScreenInfoChanged() override;
|
||||
void Invalidate(PaintElementType type) override;
|
||||
void SendExternalBeginFrame() override;
|
||||
void SendTouchEvent(const CefTouchEvent& event) override;
|
||||
void SendFocusEvent(bool setFocus) override;
|
||||
void SendCaptureLostEvent() override;
|
||||
void NotifyMoveOrResizeStarted() override;
|
||||
int GetWindowlessFrameRate() override;
|
||||
void SetWindowlessFrameRate(int frame_rate) override;
|
||||
void ImeSetComposition(const CefString& text,
|
||||
const std::vector<CefCompositionUnderline>& underlines,
|
||||
const CefRange& replacement_range,
|
||||
const CefRange& selection_range) override;
|
||||
void ImeCommitText(const CefString& text,
|
||||
const CefRange& replacement_range,
|
||||
int relative_cursor_pos) override;
|
||||
void ImeFinishComposingText(bool keep_selection) override;
|
||||
void ImeCancelComposition() override;
|
||||
void DragTargetDragEnter(CefRefPtr<CefDragData> drag_data,
|
||||
const CefMouseEvent& event,
|
||||
DragOperationsMask allowed_ops) override;
|
||||
void DragTargetDragOver(const CefMouseEvent& event,
|
||||
DragOperationsMask allowed_ops) override;
|
||||
void DragTargetDragLeave() override;
|
||||
void DragTargetDrop(const CefMouseEvent& event) override;
|
||||
void DragSourceSystemDragEnded() override;
|
||||
void DragSourceEndedAt(int x, int y, DragOperationsMask op) override;
|
||||
void SetAudioMuted(bool mute) override;
|
||||
bool IsAudioMuted() override;
|
||||
void SetAccessibilityState(cef_state_t accessibility_state) override;
|
||||
void SetAutoResizeEnabled(bool enabled,
|
||||
const CefSize& min_size,
|
||||
const CefSize& max_size) override;
|
||||
CefRefPtr<CefExtension> GetExtension() override;
|
||||
bool IsBackgroundHost() override;
|
||||
|
||||
// Returns true if windowless rendering is enabled.
|
||||
bool IsWindowless() const;
|
||||
|
||||
// Returns true if this browser is views-hosted.
|
||||
bool IsViewsHosted() const;
|
||||
|
||||
// Returns true if this browser supports picture-in-picture.
|
||||
bool IsPictureInPictureSupported() const;
|
||||
|
||||
// Called when the OS window hosting the browser is destroyed.
|
||||
void WindowDestroyed();
|
||||
|
||||
// Destroy the browser members. This method should only be called after the
|
||||
// native browser window is not longer processing messages.
|
||||
void DestroyBrowser() override;
|
||||
|
||||
// Cancel display of the context menu, if any.
|
||||
void CancelContextMenu();
|
||||
|
||||
#if defined(USE_AURA)
|
||||
// Returns the Widget owner for the browser window. Only used with windowed
|
||||
// rendering.
|
||||
views::Widget* GetWindowWidget() const;
|
||||
|
||||
// Returns the BrowserView associated with this browser. Only used with views-
|
||||
// based browsers.
|
||||
CefRefPtr<CefBrowserView> GetBrowserView() const;
|
||||
#endif
|
||||
|
||||
bool MaybeAllowNavigation(content::RenderFrameHost* opener,
|
||||
bool is_guest_view,
|
||||
const content::OpenURLParams& params) override;
|
||||
|
||||
// Convert from view coordinates to screen coordinates. Potential display
|
||||
// scaling will be applied to the result.
|
||||
gfx::Point GetScreenPoint(const gfx::Point& view) const;
|
||||
|
||||
void StartDragging(const content::DropData& drop_data,
|
||||
blink::DragOperationsMask allowed_ops,
|
||||
const gfx::ImageSkia& image,
|
||||
const gfx::Vector2d& image_offset,
|
||||
const blink::mojom::DragEventSourceInfo& event_info,
|
||||
content::RenderWidgetHostImpl* source_rwh);
|
||||
void UpdateDragCursor(blink::DragOperation operation);
|
||||
|
||||
// Thread safe accessors.
|
||||
SkColor GetBackgroundColor() const;
|
||||
|
||||
// Accessors that must be called on the UI thread.
|
||||
extensions::ExtensionHost* GetExtensionHost() const;
|
||||
|
||||
void OnSetFocus(cef_focus_source_t source) override;
|
||||
|
||||
// Run the file chooser dialog specified by |params|. Only a single dialog may
|
||||
// be pending at any given time. |callback| will be executed asynchronously
|
||||
// after the dialog is dismissed or if another dialog is already pending.
|
||||
void RunFileChooser(const CefFileDialogRunner::FileChooserParams& params,
|
||||
CefFileDialogRunner::RunFileChooserCallback callback);
|
||||
|
||||
bool HandleContextMenu(content::WebContents* web_contents,
|
||||
const content::ContextMenuParams& params);
|
||||
|
||||
enum DestructionState {
|
||||
DESTRUCTION_STATE_NONE = 0,
|
||||
DESTRUCTION_STATE_PENDING,
|
||||
DESTRUCTION_STATE_ACCEPTED,
|
||||
DESTRUCTION_STATE_COMPLETED
|
||||
};
|
||||
DestructionState destruction_state() const { return destruction_state_; }
|
||||
|
||||
// content::WebContentsDelegate methods.
|
||||
content::WebContents* OpenURLFromTab(
|
||||
content::WebContents* source,
|
||||
const content::OpenURLParams& params) override;
|
||||
bool ShouldTransferNavigation(bool is_main_frame_navigation) override;
|
||||
void AddNewContents(content::WebContents* source,
|
||||
std::unique_ptr<content::WebContents> new_contents,
|
||||
const GURL& target_url,
|
||||
WindowOpenDisposition disposition,
|
||||
const gfx::Rect& initial_rect,
|
||||
bool user_gesture,
|
||||
bool* was_blocked) override;
|
||||
void LoadingStateChanged(content::WebContents* source,
|
||||
bool to_different_document) override;
|
||||
void CloseContents(content::WebContents* source) override;
|
||||
void UpdateTargetURL(content::WebContents* source, const GURL& url) override;
|
||||
bool DidAddMessageToConsole(content::WebContents* source,
|
||||
blink::mojom::ConsoleMessageLevel log_level,
|
||||
const base::string16& message,
|
||||
int32_t line_no,
|
||||
const base::string16& source_id) override;
|
||||
void BeforeUnloadFired(content::WebContents* source,
|
||||
bool proceed,
|
||||
bool* proceed_to_fire_unload) override;
|
||||
bool TakeFocus(content::WebContents* source, bool reverse) override;
|
||||
bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
|
||||
const content::ContextMenuParams& params) override;
|
||||
content::KeyboardEventProcessingResult PreHandleKeyboardEvent(
|
||||
content::WebContents* source,
|
||||
const content::NativeWebKeyboardEvent& event) override;
|
||||
bool HandleKeyboardEvent(
|
||||
content::WebContents* source,
|
||||
const content::NativeWebKeyboardEvent& event) override;
|
||||
bool PreHandleGestureEvent(content::WebContents* source,
|
||||
const blink::WebGestureEvent& event) override;
|
||||
bool CanDragEnter(content::WebContents* source,
|
||||
const content::DropData& data,
|
||||
blink::DragOperationsMask operations_allowed) override;
|
||||
void GetCustomWebContentsView(
|
||||
content::WebContents* web_contents,
|
||||
const GURL& target_url,
|
||||
int opener_render_process_id,
|
||||
int opener_render_frame_id,
|
||||
content::WebContentsView** view,
|
||||
content::RenderViewHostDelegateView** delegate_view) override;
|
||||
void WebContentsCreated(content::WebContents* source_contents,
|
||||
int opener_render_process_id,
|
||||
int opener_render_frame_id,
|
||||
const std::string& frame_name,
|
||||
const GURL& target_url,
|
||||
content::WebContents* new_contents) override;
|
||||
void DidNavigateMainFramePostCommit(
|
||||
content::WebContents* web_contents) override;
|
||||
content::JavaScriptDialogManager* GetJavaScriptDialogManager(
|
||||
content::WebContents* source) override;
|
||||
void RunFileChooser(content::RenderFrameHost* render_frame_host,
|
||||
scoped_refptr<content::FileSelectListener> listener,
|
||||
const blink::mojom::FileChooserParams& params) override;
|
||||
bool EmbedsFullscreenWidget() override;
|
||||
void EnterFullscreenModeForTab(
|
||||
content::RenderFrameHost* requesting_frame,
|
||||
const blink::mojom::FullscreenOptions& options) override;
|
||||
void ExitFullscreenModeForTab(content::WebContents* web_contents) override;
|
||||
bool IsFullscreenForTabOrPending(
|
||||
const content::WebContents* web_contents) override;
|
||||
blink::mojom::DisplayMode GetDisplayMode(
|
||||
const content::WebContents* web_contents) override;
|
||||
void FindReply(content::WebContents* web_contents,
|
||||
int request_id,
|
||||
int number_of_matches,
|
||||
const gfx::Rect& selection_rect,
|
||||
int active_match_ordinal,
|
||||
bool final_update) override;
|
||||
void UpdatePreferredSize(content::WebContents* source,
|
||||
const gfx::Size& pref_size) override;
|
||||
void ResizeDueToAutoResize(content::WebContents* source,
|
||||
const gfx::Size& new_size) override;
|
||||
void RequestMediaAccessPermission(
|
||||
content::WebContents* web_contents,
|
||||
const content::MediaStreamRequest& request,
|
||||
content::MediaResponseCallback callback) override;
|
||||
bool CheckMediaAccessPermission(content::RenderFrameHost* render_frame_host,
|
||||
const GURL& security_origin,
|
||||
blink::mojom::MediaStreamType type) override;
|
||||
bool IsNeverComposited(content::WebContents* web_contents) override;
|
||||
content::PictureInPictureResult EnterPictureInPicture(
|
||||
content::WebContents* web_contents,
|
||||
const viz::SurfaceId& surface_id,
|
||||
const gfx::Size& natural_size) override;
|
||||
void ExitPictureInPicture() override;
|
||||
|
||||
// content::WebContentsObserver methods.
|
||||
using content::WebContentsObserver::BeforeUnloadFired;
|
||||
void RenderViewCreated(content::RenderViewHost* render_view_host) override;
|
||||
void RenderViewReady() override;
|
||||
void DidFinishNavigation(
|
||||
content::NavigationHandle* navigation_handle) override;
|
||||
void OnAudioStateChanged(bool audible) override;
|
||||
void AccessibilityEventReceived(
|
||||
const content::AXEventNotificationDetails& content_event_bundle) override;
|
||||
void AccessibilityLocationChangesReceived(
|
||||
const std::vector<content::AXLocationChangeNotificationDetails>& locData)
|
||||
override;
|
||||
void WebContentsDestroyed() override;
|
||||
|
||||
private:
|
||||
friend class CefBrowserPlatformDelegateAlloy;
|
||||
|
||||
static CefRefPtr<AlloyBrowserHostImpl> CreateInternal(
|
||||
const CefBrowserSettings& settings,
|
||||
CefRefPtr<CefClient> client,
|
||||
content::WebContents* web_contents,
|
||||
bool own_web_contents,
|
||||
scoped_refptr<CefBrowserInfo> browser_info,
|
||||
CefRefPtr<AlloyBrowserHostImpl> opener,
|
||||
bool is_devtools_popup,
|
||||
CefRefPtr<CefRequestContextImpl> request_context,
|
||||
std::unique_ptr<CefBrowserPlatformDelegate> platform_delegate,
|
||||
CefRefPtr<CefExtension> extension);
|
||||
|
||||
AlloyBrowserHostImpl(
|
||||
const CefBrowserSettings& settings,
|
||||
CefRefPtr<CefClient> client,
|
||||
content::WebContents* web_contents,
|
||||
scoped_refptr<CefBrowserInfo> browser_info,
|
||||
CefRefPtr<AlloyBrowserHostImpl> opener,
|
||||
CefRefPtr<CefRequestContextImpl> request_context,
|
||||
std::unique_ptr<CefBrowserPlatformDelegate> platform_delegate,
|
||||
CefRefPtr<CefExtension> extension);
|
||||
|
||||
// Give the platform delegate an opportunity to create the host window.
|
||||
bool CreateHostWindow();
|
||||
|
||||
// Create the CefFileDialogManager if it doesn't already exist.
|
||||
void EnsureFileDialogManager();
|
||||
|
||||
void StartAudioCapturer();
|
||||
void OnRecentlyAudibleTimerFired();
|
||||
|
||||
bool EnsureDevToolsManager();
|
||||
void InitializeDevToolsRegistrationOnUIThread(
|
||||
CefRefPtr<CefRegistration> registration);
|
||||
|
||||
void SetFocusInternal(bool focus);
|
||||
|
||||
CefWindowHandle opener_;
|
||||
const bool is_windowless_;
|
||||
const bool is_views_hosted_;
|
||||
CefWindowHandle host_window_handle_ = kNullWindowHandle;
|
||||
CefRefPtr<CefExtension> extension_;
|
||||
bool is_background_host_ = false;
|
||||
|
||||
// Represents the current browser destruction state. Only accessed on the UI
|
||||
// thread.
|
||||
DestructionState destruction_state_ = DESTRUCTION_STATE_NONE;
|
||||
|
||||
// True if the OS window hosting the browser has been destroyed. Only accessed
|
||||
// on the UI thread.
|
||||
bool window_destroyed_ = false;
|
||||
|
||||
// Used for creating and managing file dialogs.
|
||||
std::unique_ptr<CefFileDialogManager> file_dialog_manager_;
|
||||
|
||||
// Used for creating and managing JavaScript dialogs.
|
||||
std::unique_ptr<CefJavaScriptDialogManager> javascript_dialog_manager_;
|
||||
|
||||
// Used for creating and managing context menus.
|
||||
std::unique_ptr<CefMenuManager> menu_manager_;
|
||||
|
||||
// Used for creating and managing DevTools instances.
|
||||
std::unique_ptr<CefDevToolsManager> devtools_manager_;
|
||||
|
||||
// Used for capturing audio for CefAudioHandler.
|
||||
std::unique_ptr<CefAudioCapturer> audio_capturer_;
|
||||
|
||||
// Timer for determining when "recently audible" transitions to false. This
|
||||
// starts running when a tab stops being audible, and is canceled if it starts
|
||||
// being audible again before it fires.
|
||||
base::OneShotTimer recently_audible_timer_;
|
||||
};
|
||||
|
||||
#endif // CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_HOST_IMPL_H_
|
@@ -2,7 +2,7 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "libcef/browser/browser_main.h"
|
||||
#include "libcef/browser/alloy/alloy_browser_main.h"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
|
||||
#include "libcef/browser/browser_context.h"
|
||||
#include "libcef/browser/browser_context_keyed_service_factories.h"
|
||||
#include "libcef/browser/content_browser_client.h"
|
||||
#include "libcef/browser/context.h"
|
||||
#include "libcef/browser/devtools/devtools_manager_delegate.h"
|
||||
#include "libcef/browser/extensions/extension_system_factory.h"
|
||||
@@ -19,24 +18,25 @@
|
||||
#include "libcef/browser/printing/constrained_window_views_client.h"
|
||||
#include "libcef/browser/printing/printing_message_filter.h"
|
||||
#include "libcef/browser/thread_util.h"
|
||||
#include "libcef/common/app_manager.h"
|
||||
#include "libcef/common/extensions/extensions_client.h"
|
||||
#include "libcef/common/extensions/extensions_util.h"
|
||||
#include "libcef/common/net/net_resource_provider.h"
|
||||
|
||||
#include "base/bind.h"
|
||||
#include "base/message_loop/message_loop.h"
|
||||
#include "base/strings/string_number_conversions.h"
|
||||
#include "base/task/post_task.h"
|
||||
#include "chrome/browser/browser_process.h"
|
||||
#include "chrome/browser/media/router/chrome_media_router_factory.h"
|
||||
#include "chrome/browser/net/system_network_context_manager.h"
|
||||
#include "chrome/browser/plugins/plugin_finder.h"
|
||||
#include "components/constrained_window/constrained_window_views.h"
|
||||
#include "content/public/browser/gpu_data_manager.h"
|
||||
#include "content/public/browser/network_service_instance.h"
|
||||
#include "content/public/common/result_codes.h"
|
||||
#include "extensions/browser/extension_system.h"
|
||||
#include "extensions/common/constants.h"
|
||||
#include "net/base/net_module.h"
|
||||
#include "services/service_manager/embedder/result_codes.h"
|
||||
#include "ui/base/material_design/material_design_controller.h"
|
||||
#include "ui/base/resource/resource_bundle.h"
|
||||
|
||||
#if defined(USE_AURA) && defined(USE_X11)
|
||||
@@ -50,12 +50,15 @@
|
||||
#include "ui/wm/core/wm_state.h"
|
||||
|
||||
#if defined(OS_WIN)
|
||||
#include "chrome/browser/chrome_browser_main_win.h"
|
||||
#include "chrome/browser/win/parental_controls.h"
|
||||
#include "components/os_crypt/os_crypt.h"
|
||||
#include "ui/base/cursor/cursor_loader_win.h"
|
||||
#endif
|
||||
#endif // defined(USE_AURA)
|
||||
|
||||
#if defined(TOOLKIT_VIEWS)
|
||||
#if defined(OS_MACOSX)
|
||||
#if defined(OS_MAC)
|
||||
#include "chrome/browser/ui/views/chrome_layout_provider.h"
|
||||
#include "chrome/browser/ui/views/chrome_views_delegate.h"
|
||||
#else
|
||||
@@ -71,30 +74,25 @@
|
||||
#include "libcef/browser/printing/print_dialog_linux.h"
|
||||
#endif
|
||||
|
||||
#if defined(OS_MACOSX)
|
||||
#include "chrome/browser/browser_process.h"
|
||||
#include "components/os_crypt/os_crypt.h"
|
||||
#endif
|
||||
|
||||
CefBrowserMainParts::CefBrowserMainParts(
|
||||
AlloyBrowserMainParts::AlloyBrowserMainParts(
|
||||
const content::MainFunctionParams& parameters)
|
||||
: BrowserMainParts(), devtools_delegate_(NULL) {}
|
||||
: BrowserMainParts(), devtools_delegate_(nullptr) {}
|
||||
|
||||
CefBrowserMainParts::~CefBrowserMainParts() {
|
||||
AlloyBrowserMainParts::~AlloyBrowserMainParts() {
|
||||
constrained_window::SetConstrainedWindowViewsClient(nullptr);
|
||||
}
|
||||
|
||||
int CefBrowserMainParts::PreEarlyInitialization() {
|
||||
int AlloyBrowserMainParts::PreEarlyInitialization() {
|
||||
#if defined(USE_AURA) && defined(OS_LINUX)
|
||||
// TODO(linux): Consider using a real input method or
|
||||
// views::LinuxUI::SetInstance.
|
||||
ui::InitializeInputMethodForTesting();
|
||||
#endif
|
||||
|
||||
return service_manager::RESULT_CODE_NORMAL_EXIT;
|
||||
return content::RESULT_CODE_NORMAL_EXIT;
|
||||
}
|
||||
|
||||
void CefBrowserMainParts::ToolkitInitialized() {
|
||||
void AlloyBrowserMainParts::ToolkitInitialized() {
|
||||
SetConstrainedWindowViewsClient(CreateCefConstrainedWindowViewsClient());
|
||||
#if defined(USE_AURA)
|
||||
CHECK(aura::Env::GetInstance());
|
||||
@@ -103,12 +101,12 @@ void CefBrowserMainParts::ToolkitInitialized() {
|
||||
|
||||
#if defined(OS_WIN)
|
||||
ui::CursorLoaderWin::SetCursorResourceModule(
|
||||
CefContentBrowserClient::Get()->GetResourceDllName());
|
||||
CefAppManager::Get()->GetResourceDllName());
|
||||
#endif
|
||||
#endif // defined(USE_AURA)
|
||||
|
||||
#if defined(TOOLKIT_VIEWS)
|
||||
#if defined(OS_MACOSX)
|
||||
#if defined(OS_MAC)
|
||||
views_delegate_ = std::make_unique<ChromeViewsDelegate>();
|
||||
layout_provider_ = ChromeLayoutProvider::CreateLayoutProvider();
|
||||
#else
|
||||
@@ -117,20 +115,27 @@ void CefBrowserMainParts::ToolkitInitialized() {
|
||||
#endif // defined(TOOLKIT_VIEWS)
|
||||
}
|
||||
|
||||
void CefBrowserMainParts::PreMainMessageLoopStart() {
|
||||
void AlloyBrowserMainParts::PreMainMessageLoopStart() {
|
||||
#if defined(USE_AURA) && defined(USE_X11)
|
||||
ui::TouchFactory::SetTouchDeviceListFromCommandLine();
|
||||
#endif
|
||||
|
||||
#if defined(OS_MACOSX)
|
||||
#if defined(OS_WIN)
|
||||
// Initialize the OSCrypt.
|
||||
PrefService* local_state = g_browser_process->local_state();
|
||||
DCHECK(local_state);
|
||||
OSCrypt::Init(local_state);
|
||||
#endif
|
||||
bool os_crypt_init = OSCrypt::Init(local_state);
|
||||
DCHECK(os_crypt_init);
|
||||
|
||||
// installer_util references strings that are normally compiled into
|
||||
// setup.exe. In Chrome, these strings are in the locale files.
|
||||
ChromeBrowserMainPartsWin::SetupInstallerUtilStrings();
|
||||
#endif // defined(OS_WIN)
|
||||
|
||||
media_router::ChromeMediaRouterFactory::DoPlatformInit();
|
||||
}
|
||||
|
||||
void CefBrowserMainParts::PostMainMessageLoopStart() {
|
||||
void AlloyBrowserMainParts::PostMainMessageLoopStart() {
|
||||
#if defined(OS_LINUX)
|
||||
printing::PrintingContextLinux::SetCreatePrintDialogFunction(
|
||||
&CefPrintDialogLinux::CreatePrintDialog);
|
||||
@@ -139,7 +144,7 @@ void CefBrowserMainParts::PostMainMessageLoopStart() {
|
||||
#endif
|
||||
}
|
||||
|
||||
int CefBrowserMainParts::PreCreateThreads() {
|
||||
int AlloyBrowserMainParts::PreCreateThreads() {
|
||||
#if defined(OS_WIN)
|
||||
PlatformInitialize();
|
||||
#endif
|
||||
@@ -154,13 +159,11 @@ int CefBrowserMainParts::PreCreateThreads() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CefBrowserMainParts::PreMainMessageLoopRun() {
|
||||
void AlloyBrowserMainParts::PreMainMessageLoopRun() {
|
||||
#if defined(USE_AURA)
|
||||
display::Screen::SetScreenInstance(views::CreateDesktopScreen());
|
||||
#endif
|
||||
|
||||
ui::MaterialDesignController::Initialize();
|
||||
|
||||
if (extensions::ExtensionsEnabled()) {
|
||||
// Initialize extension global objects before creating the global
|
||||
// BrowserContext.
|
||||
@@ -190,41 +193,47 @@ void CefBrowserMainParts::PreMainMessageLoopRun() {
|
||||
base::TaskShutdownBehavior::BLOCK_SHUTDOWN, base::MayBlock()});
|
||||
|
||||
CefRequestContextSettings settings;
|
||||
CefContext::Get()->PopulateRequestContextSettings(&settings);
|
||||
CefContext::Get()->PopulateGlobalRequestContextSettings(&settings);
|
||||
|
||||
// Create the global RequestContext.
|
||||
global_request_context_ =
|
||||
CefRequestContextImpl::CreateGlobalRequestContext(settings);
|
||||
CefBrowserContext* browser_context = static_cast<CefBrowserContext*>(
|
||||
global_request_context_->GetBrowserContext());
|
||||
auto browser_context =
|
||||
global_request_context_->GetBrowserContext()->AsBrowserContext();
|
||||
|
||||
CefDevToolsManagerDelegate::StartHttpHandler(browser_context);
|
||||
|
||||
#if defined(OS_WIN)
|
||||
// Windows parental controls calls can be slow, so we do an early init here
|
||||
// that calculates this value off of the UI thread.
|
||||
InitializeWinParentalControls();
|
||||
#endif
|
||||
|
||||
// Triggers initialization of the singleton instance on UI thread.
|
||||
PluginFinder::GetInstance()->Init();
|
||||
|
||||
scheme::RegisterWebUIControllerFactory();
|
||||
}
|
||||
|
||||
void CefBrowserMainParts::PostMainMessageLoopRun() {
|
||||
void AlloyBrowserMainParts::PostMainMessageLoopRun() {
|
||||
// NOTE: Destroy objects in reverse order of creation.
|
||||
CefDevToolsManagerDelegate::StopHttpHandler();
|
||||
|
||||
// There should be no additional references to the global CefRequestContext
|
||||
// during shutdown. Did you forget to release a CefBrowser reference?
|
||||
DCHECK(global_request_context_->HasOneRef());
|
||||
global_request_context_ = NULL;
|
||||
global_request_context_ = nullptr;
|
||||
}
|
||||
|
||||
void CefBrowserMainParts::PostDestroyThreads() {
|
||||
void AlloyBrowserMainParts::PostDestroyThreads() {
|
||||
if (extensions::ExtensionsEnabled()) {
|
||||
extensions::ExtensionsBrowserClient::Set(NULL);
|
||||
extensions::ExtensionsBrowserClient::Set(nullptr);
|
||||
extensions_browser_client_.reset();
|
||||
}
|
||||
|
||||
#if defined(TOOLKIT_VIEWS)
|
||||
views_delegate_.reset();
|
||||
#if defined(OS_MACOSX)
|
||||
#if defined(OS_MAC)
|
||||
layout_provider_.reset();
|
||||
#endif
|
||||
#endif // defined(TOOLKIT_VIEWS)
|
@@ -2,8 +2,8 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef CEF_LIBCEF_BROWSER_BROWSER_MAIN_H_
|
||||
#define CEF_LIBCEF_BROWSER_BROWSER_MAIN_H_
|
||||
#ifndef CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_MAIN_H_
|
||||
#define CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_MAIN_H_
|
||||
#pragma once
|
||||
|
||||
#include "libcef/browser/request_context_impl.h"
|
||||
@@ -32,18 +32,18 @@ class WMState;
|
||||
#if defined(TOOLKIT_VIEWS)
|
||||
namespace views {
|
||||
class ViewsDelegate;
|
||||
#if defined(OS_MACOSX)
|
||||
#if defined(OS_MAC)
|
||||
class LayoutProvider;
|
||||
#endif
|
||||
}
|
||||
} // namespace views
|
||||
#endif // defined(TOOLKIT_VIEWS)
|
||||
|
||||
class CefDevToolsDelegate;
|
||||
|
||||
class CefBrowserMainParts : public content::BrowserMainParts {
|
||||
class AlloyBrowserMainParts : public content::BrowserMainParts {
|
||||
public:
|
||||
explicit CefBrowserMainParts(const content::MainFunctionParams& parameters);
|
||||
~CefBrowserMainParts() override;
|
||||
explicit AlloyBrowserMainParts(const content::MainFunctionParams& parameters);
|
||||
~AlloyBrowserMainParts() override;
|
||||
|
||||
int PreEarlyInitialization() override;
|
||||
void ToolkitInitialized() override;
|
||||
@@ -96,12 +96,12 @@ class CefBrowserMainParts : public content::BrowserMainParts {
|
||||
|
||||
#if defined(TOOLKIT_VIEWS)
|
||||
std::unique_ptr<views::ViewsDelegate> views_delegate_;
|
||||
#if defined(OS_MACOSX)
|
||||
#if defined(OS_MAC)
|
||||
std::unique_ptr<views::LayoutProvider> layout_provider_;
|
||||
#endif
|
||||
#endif // defined(TOOLKIT_VIEWS)
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(CefBrowserMainParts);
|
||||
DISALLOW_COPY_AND_ASSIGN(AlloyBrowserMainParts);
|
||||
};
|
||||
|
||||
#endif // CEF_LIBCEF_BROWSER_BROWSER_MAIN_H_
|
||||
#endif // CEF_LIBCEF_BROWSER_ALLOY_ALLOY_BROWSER_MAIN_H_
|
@@ -6,15 +6,15 @@
|
||||
#include <commctrl.h>
|
||||
#include <windows.h>
|
||||
|
||||
#include "libcef/browser/browser_main.h"
|
||||
#include "libcef/browser/alloy/alloy_browser_main.h"
|
||||
|
||||
#include "base/logging.h"
|
||||
|
||||
void CefBrowserMainParts::PlatformInitialize() {
|
||||
void AlloyBrowserMainParts::PlatformInitialize() {
|
||||
HRESULT res;
|
||||
|
||||
// Initialize common controls.
|
||||
res = CoInitialize(NULL);
|
||||
res = CoInitialize(nullptr);
|
||||
DCHECK(SUCCEEDED(res));
|
||||
INITCOMMONCONTROLSEX InitCtrlEx;
|
||||
InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
|
||||
@@ -22,6 +22,6 @@ void CefBrowserMainParts::PlatformInitialize() {
|
||||
InitCommonControlsEx(&InitCtrlEx);
|
||||
|
||||
// Start COM stuff.
|
||||
res = OleInitialize(NULL);
|
||||
res = OleInitialize(nullptr);
|
||||
DCHECK(SUCCEEDED(res));
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@@ -2,8 +2,8 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef CEF_LIBCEF_BROWSER_CONTENT_BROWSER_CLIENT_H_
|
||||
#define CEF_LIBCEF_BROWSER_CONTENT_BROWSER_CLIENT_H_
|
||||
#ifndef CEF_LIBCEF_BROWSER_ALLOY_ALLOY_CONTENT_BROWSER_CLIENT_H_
|
||||
#define CEF_LIBCEF_BROWSER_ALLOY_ALLOY_CONTENT_BROWSER_CLIENT_H_
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
@@ -18,7 +18,7 @@
|
||||
#include "content/public/browser/content_browser_client.h"
|
||||
#include "third_party/skia/include/core/SkColor.h"
|
||||
|
||||
class CefBrowserMainParts;
|
||||
class AlloyBrowserMainParts;
|
||||
class CefDevToolsDelegate;
|
||||
|
||||
namespace content {
|
||||
@@ -30,13 +30,10 @@ namespace extensions {
|
||||
class Extension;
|
||||
}
|
||||
|
||||
class CefContentBrowserClient : public content::ContentBrowserClient {
|
||||
class AlloyContentBrowserClient : public content::ContentBrowserClient {
|
||||
public:
|
||||
CefContentBrowserClient();
|
||||
~CefContentBrowserClient() override;
|
||||
|
||||
// Returns the singleton CefContentBrowserClient instance.
|
||||
static CefContentBrowserClient* Get();
|
||||
AlloyContentBrowserClient();
|
||||
~AlloyContentBrowserClient() override;
|
||||
|
||||
// ContentBrowserClient implementation.
|
||||
std::unique_ptr<content::BrowserMainParts> CreateBrowserMainParts(
|
||||
@@ -46,6 +43,11 @@ class CefContentBrowserClient : public content::ContentBrowserClient {
|
||||
const GURL& effective_url) override;
|
||||
bool DoesSiteRequireDedicatedProcess(content::BrowserContext* browser_context,
|
||||
const GURL& effective_site_url) override;
|
||||
void OverrideURLLoaderFactoryParams(
|
||||
content::BrowserContext* browser_context,
|
||||
const url::Origin& origin,
|
||||
bool is_for_isolated_world,
|
||||
network::mojom::URLLoaderFactoryParams* factory_params) override;
|
||||
void GetAdditionalWebUISchemes(
|
||||
std::vector<std::string>* additional_schemes) override;
|
||||
void GetAdditionalViewSourceSchemes(
|
||||
@@ -59,23 +61,14 @@ class CefContentBrowserClient : public content::ContentBrowserClient {
|
||||
void BindHostReceiverForRenderer(
|
||||
content::RenderProcessHost* render_process_host,
|
||||
mojo::GenericPendingReceiver receiver) override;
|
||||
base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
|
||||
base::StringPiece name) override;
|
||||
void AppendExtraCommandLineSwitches(base::CommandLine* command_line,
|
||||
int child_process_id) override;
|
||||
void AdjustUtilityServiceProcessCommandLine(
|
||||
const service_manager::Identity& identity,
|
||||
base::CommandLine* command_line) override;
|
||||
std::string GetApplicationLocale() override;
|
||||
scoped_refptr<network::SharedURLLoaderFactory>
|
||||
GetSystemSharedURLLoaderFactory() override;
|
||||
network::mojom::NetworkContext* GetSystemNetworkContext() override;
|
||||
scoped_refptr<content::QuotaPermissionContext> CreateQuotaPermissionContext()
|
||||
override;
|
||||
void GetQuotaSettings(
|
||||
content::BrowserContext* context,
|
||||
content::StoragePartition* partition,
|
||||
storage::OptionalQuotaSettingsCallback callback) override;
|
||||
content::MediaObserver* GetMediaObserver() override;
|
||||
content::SpeechRecognitionManagerDelegate*
|
||||
CreateSpeechRecognitionManagerDelegate() override;
|
||||
@@ -88,8 +81,8 @@ class CefContentBrowserClient : public content::ContentBrowserClient {
|
||||
const GURL& request_url,
|
||||
bool is_main_frame_request,
|
||||
bool strict_enforcement,
|
||||
const base::Callback<void(content::CertificateRequestResultType)>&
|
||||
callback) override;
|
||||
base::OnceCallback<void(content::CertificateRequestResultType)> callback)
|
||||
override;
|
||||
base::OnceClosure SelectClientCertificate(
|
||||
content::WebContents* web_contents,
|
||||
net::SSLCertRequestInfo* cert_request_info,
|
||||
@@ -109,7 +102,10 @@ class CefContentBrowserClient : public content::ContentBrowserClient {
|
||||
bool opener_suppressed,
|
||||
bool* no_javascript_access) override;
|
||||
void OverrideWebkitPrefs(content::RenderViewHost* rvh,
|
||||
content::WebPreferences* prefs) override;
|
||||
blink::web_pref::WebPreferences* prefs) override;
|
||||
bool OverrideWebPreferencesAfterNavigation(
|
||||
content::WebContents* web_contents,
|
||||
blink::web_pref::WebPreferences* prefs) override;
|
||||
void BrowserURLHandlerCreated(content::BrowserURLHandler* handler) override;
|
||||
std::string GetDefaultDownloadName() override;
|
||||
void DidCreatePpapiPlugin(content::BrowserPpapiHost* browser_host) override;
|
||||
@@ -133,7 +129,6 @@ class CefContentBrowserClient : public content::ContentBrowserClient {
|
||||
#endif
|
||||
|
||||
#if defined(OS_WIN)
|
||||
const wchar_t* GetResourceDllName();
|
||||
bool PreSpawnRenderer(sandbox::TargetPolicy* policy,
|
||||
RendererSpawnFlags flags) override;
|
||||
#endif
|
||||
@@ -143,7 +138,7 @@ class CefContentBrowserClient : public content::ContentBrowserClient {
|
||||
blink::AssociatedInterfaceRegistry* associated_registry,
|
||||
content::RenderProcessHost* render_process_host) override;
|
||||
std::unique_ptr<net::ClientCertStore> CreateClientCertStore(
|
||||
content::ResourceContext* resource_context) override;
|
||||
content::BrowserContext* browser_context) override;
|
||||
std::unique_ptr<content::LoginDelegate> CreateLoginDelegate(
|
||||
const net::AuthChallengeInfo& auth_info,
|
||||
content::WebContents* web_contents,
|
||||
@@ -155,10 +150,13 @@ class CefContentBrowserClient : public content::ContentBrowserClient {
|
||||
LoginAuthRequiredCallback auth_required_callback) override;
|
||||
void RegisterNonNetworkNavigationURLLoaderFactories(
|
||||
int frame_tree_node_id,
|
||||
base::UkmSourceId ukm_source_id,
|
||||
NonNetworkURLLoaderFactoryDeprecatedMap* uniquely_owned_factories,
|
||||
NonNetworkURLLoaderFactoryMap* factories) override;
|
||||
void RegisterNonNetworkSubresourceURLLoaderFactories(
|
||||
int render_process_id,
|
||||
int render_frame_id,
|
||||
NonNetworkURLLoaderFactoryDeprecatedMap* uniquely_owned_factories,
|
||||
NonNetworkURLLoaderFactoryMap* factories) override;
|
||||
bool WillCreateURLLoaderFactory(
|
||||
content::BrowserContext* browser_context,
|
||||
@@ -166,45 +164,62 @@ class CefContentBrowserClient : public content::ContentBrowserClient {
|
||||
int render_process_id,
|
||||
URLLoaderFactoryType type,
|
||||
const url::Origin& request_initiator,
|
||||
base::Optional<int64_t> navigation_id,
|
||||
base::UkmSourceId ukm_source_id,
|
||||
mojo::PendingReceiver<network::mojom::URLLoaderFactory>* factory_receiver,
|
||||
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient>*
|
||||
header_client,
|
||||
bool* bypass_redirect_checks) override;
|
||||
bool* bypass_redirect_checks,
|
||||
bool* disable_secure_dns,
|
||||
network::mojom::URLLoaderFactoryOverridePtr* factory_override) override;
|
||||
void OnNetworkServiceCreated(
|
||||
network::mojom::NetworkService* network_service) override;
|
||||
network::mojom::NetworkContextPtr CreateNetworkContext(
|
||||
void ConfigureNetworkContextParams(
|
||||
content::BrowserContext* context,
|
||||
bool in_memory,
|
||||
const base::FilePath& relative_partition_path) override;
|
||||
const base::FilePath& relative_partition_path,
|
||||
network::mojom::NetworkContextParams* network_context_params,
|
||||
network::mojom::CertVerifierCreationParams* cert_verifier_creation_params)
|
||||
override;
|
||||
std::vector<base::FilePath> GetNetworkContextsParentDirectory() override;
|
||||
bool HandleExternalProtocol(
|
||||
const GURL& url,
|
||||
content::WebContents::Getter web_contents_getter,
|
||||
content::WebContents::OnceGetter web_contents_getter,
|
||||
int child_id,
|
||||
content::NavigationUIData* navigation_data,
|
||||
bool is_main_frame,
|
||||
ui::PageTransition page_transition,
|
||||
bool has_user_gesture,
|
||||
network::mojom::URLLoaderFactoryPtr* out_factory) override;
|
||||
const base::Optional<url::Origin>& initiating_origin,
|
||||
mojo::PendingRemote<network::mojom::URLLoaderFactory>* out_factory)
|
||||
override;
|
||||
bool HandleExternalProtocol(
|
||||
content::WebContents::Getter web_contents_getter,
|
||||
int frame_tree_node_id,
|
||||
content::NavigationUIData* navigation_data,
|
||||
const network::ResourceRequest& request,
|
||||
network::mojom::URLLoaderFactoryRequest* factory_request,
|
||||
network::mojom::URLLoaderFactoryPtr* out_factory) override;
|
||||
mojo::PendingRemote<network::mojom::URLLoaderFactory>* out_factory)
|
||||
override;
|
||||
std::unique_ptr<content::OverlayWindow> CreateWindowForPictureInPicture(
|
||||
content::PictureInPictureWindowController* controller) override;
|
||||
|
||||
void RegisterBrowserInterfaceBindersForFrame(
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
mojo::BinderMapWithContext<content::RenderFrameHost*>* map) override;
|
||||
base::FilePath GetSandboxedStorageServiceDataDirectory() override;
|
||||
std::string GetProduct() override;
|
||||
std::string GetChromeProduct() override;
|
||||
std::string GetUserAgent() override;
|
||||
blink::UserAgentMetadata GetUserAgentMetadata() override;
|
||||
base::flat_set<std::string> GetPluginMimeTypesWithExternalHandlers(
|
||||
content::BrowserContext* browser_context) override;
|
||||
|
||||
// Perform browser process registration for the custom scheme.
|
||||
void RegisterCustomScheme(const std::string& scheme);
|
||||
bool ArePersistentMediaDeviceIDsAllowed(
|
||||
content::BrowserContext* browser_context,
|
||||
const GURL& scope,
|
||||
const GURL& site_for_cookies,
|
||||
const base::Optional<url::Origin>& top_frame_origin) override;
|
||||
bool ShouldAllowPluginCreation(
|
||||
const url::Origin& embedder_origin,
|
||||
const content::PepperPluginInfo& plugin_info) override;
|
||||
|
||||
CefRefPtr<CefRequestContextImpl> request_context() const;
|
||||
CefDevToolsDelegate* devtools_delegate() const;
|
||||
@@ -218,9 +233,9 @@ class CefContentBrowserClient : public content::ContentBrowserClient {
|
||||
const extensions::Extension* GetExtension(
|
||||
content::SiteInstance* site_instance);
|
||||
|
||||
CefBrowserMainParts* browser_main_parts_;
|
||||
AlloyBrowserMainParts* browser_main_parts_ = nullptr;
|
||||
|
||||
std::unique_ptr<content::PluginServiceFilter> plugin_service_filter_;
|
||||
};
|
||||
|
||||
#endif // CEF_LIBCEF_BROWSER_CONTENT_BROWSER_CLIENT_H_
|
||||
#endif // CEF_LIBCEF_BROWSER_ALLOY_ALLOY_CONTENT_BROWSER_CLIENT_H_
|
470
libcef/browser/alloy/browser_platform_delegate_alloy.cc
Normal file
470
libcef/browser/alloy/browser_platform_delegate_alloy.cc
Normal file
@@ -0,0 +1,470 @@
|
||||
// Copyright 2015 The Chromium Embedded Framework Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "libcef/browser/alloy/browser_platform_delegate_alloy.h"
|
||||
|
||||
#include "libcef/browser/alloy/alloy_browser_host_impl.h"
|
||||
#include "libcef/browser/extensions/browser_extensions_util.h"
|
||||
#include "libcef/browser/extensions/extension_background_host.h"
|
||||
#include "libcef/browser/extensions/extension_system.h"
|
||||
#include "libcef/browser/extensions/extension_view_host.h"
|
||||
#include "libcef/browser/extensions/extension_web_contents_observer.h"
|
||||
#include "libcef/browser/printing/print_view_manager.h"
|
||||
#include "libcef/common/extensions/extensions_util.h"
|
||||
#include "libcef/features/runtime_checks.h"
|
||||
|
||||
#include "base/logging.h"
|
||||
#include "chrome/browser/printing/print_view_manager.h"
|
||||
#include "chrome/browser/ui/prefs/prefs_tab_helper.h"
|
||||
#include "components/zoom/zoom_controller.h"
|
||||
#include "content/browser/renderer_host/render_widget_host_impl.h"
|
||||
#include "content/browser/web_contents/web_contents_impl.h"
|
||||
#include "content/public/browser/render_view_host.h"
|
||||
#include "content/public/browser/render_widget_host.h"
|
||||
#include "extensions/browser/process_manager.h"
|
||||
#include "third_party/blink/public/mojom/frame/find_in_page.mojom.h"
|
||||
|
||||
namespace {
|
||||
|
||||
printing::CefPrintViewManager* GetPrintViewManager(
|
||||
content::WebContents* web_contents) {
|
||||
return printing::CefPrintViewManager::FromWebContents(web_contents);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
CefBrowserPlatformDelegateAlloy::CefBrowserPlatformDelegateAlloy()
|
||||
: weak_ptr_factory_(this) {}
|
||||
|
||||
content::WebContents* CefBrowserPlatformDelegateAlloy::CreateWebContents(
|
||||
CefBrowserCreateParams& create_params,
|
||||
bool& own_web_contents) {
|
||||
REQUIRE_ALLOY_RUNTIME();
|
||||
DCHECK(primary_);
|
||||
|
||||
// Get or create the request context and browser context.
|
||||
CefRefPtr<CefRequestContextImpl> request_context_impl =
|
||||
CefRequestContextImpl::GetOrCreateForRequestContext(
|
||||
create_params.request_context);
|
||||
CHECK(request_context_impl);
|
||||
auto cef_browser_context = request_context_impl->GetBrowserContext();
|
||||
CHECK(cef_browser_context);
|
||||
auto browser_context = cef_browser_context->AsBrowserContext();
|
||||
|
||||
if (!create_params.request_context) {
|
||||
// Using the global request context.
|
||||
create_params.request_context = request_context_impl.get();
|
||||
}
|
||||
|
||||
scoped_refptr<content::SiteInstance> site_instance;
|
||||
if (extensions::ExtensionsEnabled() && !create_params.url.is_empty()) {
|
||||
if (!create_params.extension) {
|
||||
// We might be loading an extension app view where the extension URL is
|
||||
// provided by the client.
|
||||
create_params.extension =
|
||||
extensions::GetExtensionForUrl(browser_context, create_params.url);
|
||||
}
|
||||
if (create_params.extension) {
|
||||
if (create_params.extension_host_type == extensions::VIEW_TYPE_INVALID) {
|
||||
// Default to dialog behavior.
|
||||
create_params.extension_host_type =
|
||||
extensions::VIEW_TYPE_EXTENSION_DIALOG;
|
||||
}
|
||||
|
||||
// Extension resources will fail to load if we don't use a SiteInstance
|
||||
// associated with the extension.
|
||||
// (AlloyContentBrowserClient::SiteInstanceGotProcess won't find the
|
||||
// extension to register with InfoMap, and AllowExtensionResourceLoad in
|
||||
// ExtensionProtocolHandler::MaybeCreateJob will return false resulting in
|
||||
// ERR_BLOCKED_BY_CLIENT).
|
||||
site_instance = extensions::ProcessManager::Get(browser_context)
|
||||
->GetSiteInstanceForURL(create_params.url);
|
||||
DCHECK(site_instance);
|
||||
}
|
||||
}
|
||||
|
||||
content::WebContents::CreateParams wc_create_params(browser_context,
|
||||
site_instance);
|
||||
|
||||
if (IsWindowless()) {
|
||||
// Create the OSR view for the WebContents.
|
||||
CreateViewForWebContents(&wc_create_params.view,
|
||||
&wc_create_params.delegate_view);
|
||||
}
|
||||
|
||||
auto web_contents = content::WebContents::Create(wc_create_params);
|
||||
CHECK(web_contents);
|
||||
|
||||
own_web_contents = true;
|
||||
return web_contents.release();
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::WebContentsCreated(
|
||||
content::WebContents* web_contents,
|
||||
bool owned) {
|
||||
CefBrowserPlatformDelegate::WebContentsCreated(web_contents, owned);
|
||||
|
||||
if (owned) {
|
||||
SetOwnedWebContents(web_contents);
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::AddNewContents(
|
||||
content::WebContents* source,
|
||||
std::unique_ptr<content::WebContents> new_contents,
|
||||
const GURL& target_url,
|
||||
WindowOpenDisposition disposition,
|
||||
const gfx::Rect& initial_rect,
|
||||
bool user_gesture,
|
||||
bool* was_blocked) {
|
||||
REQUIRE_ALLOY_RUNTIME();
|
||||
DCHECK(primary_);
|
||||
|
||||
CefRefPtr<AlloyBrowserHostImpl> owner =
|
||||
AlloyBrowserHostImpl::GetBrowserForContents(new_contents.get());
|
||||
if (owner) {
|
||||
// Taking ownership of |new_contents|.
|
||||
static_cast<CefBrowserPlatformDelegateAlloy*>(
|
||||
owner->platform_delegate_.get())
|
||||
->SetOwnedWebContents(new_contents.release());
|
||||
return;
|
||||
}
|
||||
|
||||
if (extension_host_) {
|
||||
extension_host_->AddNewContents(source, std::move(new_contents), target_url,
|
||||
disposition, initial_rect, user_gesture,
|
||||
was_blocked);
|
||||
}
|
||||
}
|
||||
|
||||
bool CefBrowserPlatformDelegateAlloy::ShouldTransferNavigation(
|
||||
bool is_main_frame_navigation) {
|
||||
if (extension_host_) {
|
||||
return extension_host_->ShouldTransferNavigation(is_main_frame_navigation);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::RenderViewCreated(
|
||||
content::RenderViewHost* render_view_host) {
|
||||
// Indicate that the view has an external parent (namely us). This changes the
|
||||
// default view behavior in some cases (e.g. focus handling on Linux).
|
||||
if (!IsViewsHosted() && render_view_host->GetWidget()->GetView())
|
||||
render_view_host->GetWidget()->GetView()->SetHasExternalParent(true);
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::RenderViewReady() {
|
||||
ConfigureAutoResize();
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::BrowserCreated(
|
||||
CefBrowserHostBase* browser) {
|
||||
CefBrowserPlatformDelegate::BrowserCreated(browser);
|
||||
|
||||
// Only register WebContents delegate/observers if we're the primary delegate.
|
||||
if (!primary_)
|
||||
return;
|
||||
|
||||
DCHECK(!web_contents_->GetDelegate());
|
||||
web_contents_->SetDelegate(static_cast<AlloyBrowserHostImpl*>(browser));
|
||||
|
||||
PrefsTabHelper::CreateForWebContents(web_contents_);
|
||||
printing::CefPrintViewManager::CreateForWebContents(web_contents_);
|
||||
|
||||
if (extensions::ExtensionsEnabled()) {
|
||||
extensions::CefExtensionWebContentsObserver::CreateForWebContents(
|
||||
web_contents_);
|
||||
|
||||
// Used by the tabs extension API.
|
||||
zoom::ZoomController::CreateForWebContents(web_contents_);
|
||||
}
|
||||
|
||||
if (IsPrintPreviewSupported()) {
|
||||
web_contents_dialog_helper_.reset(
|
||||
new CefWebContentsDialogHelper(web_contents_, this));
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::CreateExtensionHost(
|
||||
const extensions::Extension* extension,
|
||||
const GURL& url,
|
||||
extensions::ViewType host_type) {
|
||||
REQUIRE_ALLOY_RUNTIME();
|
||||
DCHECK(primary_);
|
||||
|
||||
// Should get WebContentsCreated and BrowserCreated calls first.
|
||||
DCHECK(web_contents_);
|
||||
DCHECK(browser_);
|
||||
DCHECK(!extension_host_);
|
||||
|
||||
auto alloy_browser = static_cast<AlloyBrowserHostImpl*>(browser_);
|
||||
|
||||
if (host_type == extensions::VIEW_TYPE_EXTENSION_DIALOG ||
|
||||
host_type == extensions::VIEW_TYPE_EXTENSION_POPUP) {
|
||||
// Create an extension host that we own.
|
||||
extension_host_ = new extensions::CefExtensionViewHost(
|
||||
alloy_browser, extension, web_contents_, url, host_type);
|
||||
// Trigger load of the extension URL.
|
||||
extension_host_->CreateRenderViewSoon();
|
||||
} else if (host_type == extensions::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE) {
|
||||
is_background_host_ = true;
|
||||
alloy_browser->is_background_host_ = true;
|
||||
// Create an extension host that will be owned by ProcessManager.
|
||||
extension_host_ = new extensions::CefExtensionBackgroundHost(
|
||||
alloy_browser,
|
||||
base::BindOnce(&CefBrowserPlatformDelegateAlloy::OnExtensionHostDeleted,
|
||||
weak_ptr_factory_.GetWeakPtr()),
|
||||
extension, web_contents_, url, host_type);
|
||||
// Load will be triggered by ProcessManager::CreateBackgroundHost.
|
||||
} else {
|
||||
NOTREACHED() << " Unsupported extension host type: " << host_type;
|
||||
}
|
||||
}
|
||||
|
||||
extensions::ExtensionHost* CefBrowserPlatformDelegateAlloy::GetExtensionHost()
|
||||
const {
|
||||
return extension_host_;
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::BrowserDestroyed(
|
||||
CefBrowserHostBase* browser) {
|
||||
if (primary_) {
|
||||
DestroyExtensionHost();
|
||||
owned_web_contents_.reset();
|
||||
}
|
||||
|
||||
CefBrowserPlatformDelegate::BrowserDestroyed(browser);
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::SendCaptureLostEvent() {
|
||||
if (!web_contents_)
|
||||
return;
|
||||
content::RenderViewHost* host = web_contents_->GetRenderViewHost();
|
||||
if (!host)
|
||||
return;
|
||||
|
||||
content::RenderWidgetHostImpl* widget =
|
||||
content::RenderWidgetHostImpl::From(host->GetWidget());
|
||||
if (widget)
|
||||
widget->LostCapture();
|
||||
}
|
||||
|
||||
#if defined(OS_WIN) || (defined(OS_POSIX) && !defined(OS_MAC))
|
||||
void CefBrowserPlatformDelegateAlloy::NotifyMoveOrResizeStarted() {
|
||||
if (!web_contents_)
|
||||
return;
|
||||
|
||||
// Dismiss any existing popups.
|
||||
content::RenderViewHost* host = web_contents_->GetRenderViewHost();
|
||||
if (host)
|
||||
host->NotifyMoveOrResizeStarted();
|
||||
}
|
||||
#endif
|
||||
|
||||
bool CefBrowserPlatformDelegateAlloy::PreHandleGestureEvent(
|
||||
content::WebContents* source,
|
||||
const blink::WebGestureEvent& event) {
|
||||
if (extension_host_)
|
||||
return extension_host_->PreHandleGestureEvent(source, event);
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CefBrowserPlatformDelegateAlloy::IsNeverComposited(
|
||||
content::WebContents* web_contents) {
|
||||
if (extension_host_)
|
||||
return extension_host_->IsNeverComposited(web_contents);
|
||||
return false;
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::SetAutoResizeEnabled(
|
||||
bool enabled,
|
||||
const CefSize& min_size,
|
||||
const CefSize& max_size) {
|
||||
if (enabled == auto_resize_enabled_)
|
||||
return;
|
||||
|
||||
auto_resize_enabled_ = enabled;
|
||||
if (enabled) {
|
||||
auto_resize_min_ = gfx::Size(min_size.width, min_size.height);
|
||||
auto_resize_max_ = gfx::Size(max_size.width, max_size.height);
|
||||
} else {
|
||||
auto_resize_min_ = auto_resize_max_ = gfx::Size();
|
||||
}
|
||||
ConfigureAutoResize();
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::ConfigureAutoResize() {
|
||||
if (!web_contents_ || !web_contents_->GetRenderWidgetHostView()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (auto_resize_enabled_) {
|
||||
web_contents_->GetRenderWidgetHostView()->EnableAutoResize(
|
||||
auto_resize_min_, auto_resize_max_);
|
||||
} else {
|
||||
web_contents_->GetRenderWidgetHostView()->DisableAutoResize(gfx::Size());
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::SetAccessibilityState(
|
||||
cef_state_t accessibility_state) {
|
||||
// Do nothing if state is set to default. It'll be disabled by default and
|
||||
// controlled by the commmand-line flags "force-renderer-accessibility" and
|
||||
// "disable-renderer-accessibility".
|
||||
if (accessibility_state == STATE_DEFAULT)
|
||||
return;
|
||||
|
||||
content::WebContentsImpl* web_contents_impl =
|
||||
static_cast<content::WebContentsImpl*>(web_contents_);
|
||||
|
||||
if (!web_contents_impl)
|
||||
return;
|
||||
|
||||
ui::AXMode accMode;
|
||||
// In windowless mode set accessibility to TreeOnly mode. Else native
|
||||
// accessibility APIs, specific to each platform, are also created.
|
||||
if (accessibility_state == STATE_ENABLED) {
|
||||
accMode = IsWindowless() ? ui::kAXModeWebContentsOnly : ui::kAXModeComplete;
|
||||
}
|
||||
web_contents_impl->SetAccessibilityMode(accMode);
|
||||
}
|
||||
|
||||
bool CefBrowserPlatformDelegateAlloy::IsPrintPreviewSupported() const {
|
||||
REQUIRE_ALLOY_RUNTIME();
|
||||
|
||||
auto actionable_contents = GetActionableWebContents();
|
||||
if (!actionable_contents)
|
||||
return false;
|
||||
|
||||
auto cef_browser_context = CefBrowserContext::FromBrowserContext(
|
||||
actionable_contents->GetBrowserContext());
|
||||
if (!cef_browser_context->IsPrintPreviewSupported()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Print preview is not currently supported with OSR.
|
||||
return !IsWindowless();
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::Print() {
|
||||
REQUIRE_ALLOY_RUNTIME();
|
||||
|
||||
auto actionable_contents = GetActionableWebContents();
|
||||
if (!actionable_contents)
|
||||
return;
|
||||
|
||||
auto rfh = actionable_contents->GetMainFrame();
|
||||
|
||||
if (IsPrintPreviewSupported()) {
|
||||
GetPrintViewManager(actionable_contents)->PrintPreviewNow(rfh, false);
|
||||
} else {
|
||||
GetPrintViewManager(actionable_contents)->PrintNow(rfh);
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::PrintToPDF(
|
||||
const CefString& path,
|
||||
const CefPdfPrintSettings& settings,
|
||||
CefRefPtr<CefPdfPrintCallback> callback) {
|
||||
REQUIRE_ALLOY_RUNTIME();
|
||||
|
||||
content::WebContents* actionable_contents = GetActionableWebContents();
|
||||
if (!actionable_contents)
|
||||
return;
|
||||
printing::CefPrintViewManager::PdfPrintCallback pdf_callback;
|
||||
if (callback.get()) {
|
||||
pdf_callback = base::Bind(&CefPdfPrintCallback::OnPdfPrintFinished,
|
||||
callback.get(), path);
|
||||
}
|
||||
GetPrintViewManager(actionable_contents)
|
||||
->PrintToPDF(actionable_contents->GetMainFrame(), base::FilePath(path),
|
||||
settings, pdf_callback);
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::Find(int identifier,
|
||||
const CefString& searchText,
|
||||
bool forward,
|
||||
bool matchCase,
|
||||
bool findNext) {
|
||||
if (!web_contents_)
|
||||
return;
|
||||
|
||||
// Every find request must have a unique ID and these IDs must strictly
|
||||
// increase so that newer requests always have greater IDs than older
|
||||
// requests.
|
||||
if (identifier <= find_request_id_counter_)
|
||||
identifier = ++find_request_id_counter_;
|
||||
else
|
||||
find_request_id_counter_ = identifier;
|
||||
|
||||
auto options = blink::mojom::FindOptions::New();
|
||||
options->forward = forward;
|
||||
options->match_case = matchCase;
|
||||
options->find_match = findNext;
|
||||
web_contents_->Find(identifier, searchText, std::move(options));
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::StopFinding(bool clearSelection) {
|
||||
if (!web_contents_)
|
||||
return;
|
||||
|
||||
content::StopFindAction action =
|
||||
clearSelection ? content::STOP_FIND_ACTION_CLEAR_SELECTION
|
||||
: content::STOP_FIND_ACTION_KEEP_SELECTION;
|
||||
web_contents_->StopFinding(action);
|
||||
}
|
||||
|
||||
base::RepeatingClosure
|
||||
CefBrowserPlatformDelegateAlloy::GetBoundsChangedCallback() {
|
||||
if (web_contents_dialog_helper_) {
|
||||
return web_contents_dialog_helper_->GetBoundsChangedCallback();
|
||||
}
|
||||
|
||||
return base::RepeatingClosure();
|
||||
}
|
||||
|
||||
content::WebContents*
|
||||
CefBrowserPlatformDelegateAlloy::GetActionableWebContents() const {
|
||||
if (web_contents_ && extensions::ExtensionsEnabled()) {
|
||||
content::WebContents* guest_contents =
|
||||
extensions::GetFullPageGuestForOwnerContents(web_contents_);
|
||||
if (guest_contents)
|
||||
return guest_contents;
|
||||
}
|
||||
return web_contents_;
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::SetOwnedWebContents(
|
||||
content::WebContents* owned_contents) {
|
||||
DCHECK(primary_);
|
||||
|
||||
// Should not currently own a WebContents.
|
||||
CHECK(!owned_web_contents_);
|
||||
owned_web_contents_.reset(owned_contents);
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::DestroyExtensionHost() {
|
||||
if (!extension_host_)
|
||||
return;
|
||||
if (extension_host_->extension_host_type() ==
|
||||
extensions::VIEW_TYPE_EXTENSION_BACKGROUND_PAGE) {
|
||||
DCHECK(is_background_host_);
|
||||
// Close notification for background pages arrives via CloseContents.
|
||||
// The extension host will be deleted by
|
||||
// ProcessManager::CloseBackgroundHost and OnExtensionHostDeleted will be
|
||||
// called to notify us.
|
||||
extension_host_->Close();
|
||||
} else {
|
||||
DCHECK(!is_background_host_);
|
||||
// We own the extension host and must delete it.
|
||||
delete extension_host_;
|
||||
extension_host_ = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserPlatformDelegateAlloy::OnExtensionHostDeleted() {
|
||||
DCHECK(is_background_host_);
|
||||
DCHECK(extension_host_);
|
||||
extension_host_ = nullptr;
|
||||
}
|
114
libcef/browser/alloy/browser_platform_delegate_alloy.h
Normal file
114
libcef/browser/alloy/browser_platform_delegate_alloy.h
Normal file
@@ -0,0 +1,114 @@
|
||||
// Copyright (c) 2015 The Chromium Embedded Framework Authors.
|
||||
// Portions copyright (c) 2011 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef CEF_LIBCEF_BROWSER_ALLOY_BROWSER_PLATFORM_DELEGATE_ALLOY_H_
|
||||
#define CEF_LIBCEF_BROWSER_ALLOY_BROWSER_PLATFORM_DELEGATE_ALLOY_H_
|
||||
|
||||
#include "libcef/browser/browser_platform_delegate.h"
|
||||
#include "libcef/browser/web_contents_dialog_helper.h"
|
||||
|
||||
#include "base/memory/weak_ptr.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
#include "ui/gfx/geometry/size.h"
|
||||
|
||||
// Implementation of Alloy-based browser functionality.
|
||||
class CefBrowserPlatformDelegateAlloy : public CefBrowserPlatformDelegate {
|
||||
public:
|
||||
content::WebContents* CreateWebContents(CefBrowserCreateParams& create_params,
|
||||
bool& own_web_contents) override;
|
||||
void WebContentsCreated(content::WebContents* web_contents,
|
||||
bool owned) override;
|
||||
void AddNewContents(content::WebContents* source,
|
||||
std::unique_ptr<content::WebContents> new_contents,
|
||||
const GURL& target_url,
|
||||
WindowOpenDisposition disposition,
|
||||
const gfx::Rect& initial_rect,
|
||||
bool user_gesture,
|
||||
bool* was_blocked) override;
|
||||
bool ShouldTransferNavigation(bool is_main_frame_navigation) override;
|
||||
void RenderViewCreated(content::RenderViewHost* render_view_host) override;
|
||||
void RenderViewReady() override;
|
||||
void BrowserCreated(CefBrowserHostBase* browser) override;
|
||||
void CreateExtensionHost(const extensions::Extension* extension,
|
||||
const GURL& url,
|
||||
extensions::ViewType host_type) override;
|
||||
extensions::ExtensionHost* GetExtensionHost() const override;
|
||||
void BrowserDestroyed(CefBrowserHostBase* browser) override;
|
||||
void SendCaptureLostEvent() override;
|
||||
#if defined(OS_WIN) || (defined(OS_POSIX) && !defined(OS_MAC))
|
||||
void NotifyMoveOrResizeStarted() override;
|
||||
#endif
|
||||
bool PreHandleGestureEvent(content::WebContents* source,
|
||||
const blink::WebGestureEvent& event) override;
|
||||
bool IsNeverComposited(content::WebContents* web_contents) override;
|
||||
void SetAutoResizeEnabled(bool enabled,
|
||||
const CefSize& min_size,
|
||||
const CefSize& max_size) override;
|
||||
void SetAccessibilityState(cef_state_t accessibility_state) override;
|
||||
bool IsPrintPreviewSupported() const override;
|
||||
void Print() override;
|
||||
void PrintToPDF(const CefString& path,
|
||||
const CefPdfPrintSettings& settings,
|
||||
CefRefPtr<CefPdfPrintCallback> callback) override;
|
||||
void Find(int identifier,
|
||||
const CefString& searchText,
|
||||
bool forward,
|
||||
bool matchCase,
|
||||
bool findNext) override;
|
||||
void StopFinding(bool clearSelection) override;
|
||||
|
||||
protected:
|
||||
CefBrowserPlatformDelegateAlloy();
|
||||
|
||||
base::RepeatingClosure GetBoundsChangedCallback();
|
||||
|
||||
// Returns the WebContents most likely to handle an action. If extensions are
|
||||
// enabled and this browser has a full-page guest (for example, a full-page
|
||||
// PDF viewer extension) then the guest's WebContents will be returned.
|
||||
// Otherwise, the browser's WebContents will be returned.
|
||||
content::WebContents* GetActionableWebContents() const;
|
||||
|
||||
// Called from BrowserPlatformDelegateNative::set_windowless_handler().
|
||||
void set_as_secondary() { primary_ = false; }
|
||||
|
||||
private:
|
||||
void SetOwnedWebContents(content::WebContents* owned_contents);
|
||||
|
||||
void DestroyExtensionHost();
|
||||
void OnExtensionHostDeleted();
|
||||
|
||||
void ConfigureAutoResize();
|
||||
|
||||
// Non-nullptr if this object owns the WebContents. Will be nullptr for popup
|
||||
// browsers between the calls to WebContentsCreated() and AddNewContents(),
|
||||
// and may never be set if the parent browser is destroyed during popup
|
||||
// creation.
|
||||
std::unique_ptr<content::WebContents> owned_web_contents_;
|
||||
|
||||
// Used for the print preview dialog.
|
||||
std::unique_ptr<CefWebContentsDialogHelper> web_contents_dialog_helper_;
|
||||
|
||||
// Used to provide unique incremental IDs for each find request.
|
||||
int find_request_id_counter_ = 0;
|
||||
|
||||
// Used when the browser is hosting an extension.
|
||||
extensions::ExtensionHost* extension_host_ = nullptr;
|
||||
bool is_background_host_ = false;
|
||||
|
||||
// Used with auto-resize.
|
||||
bool auto_resize_enabled_ = false;
|
||||
gfx::Size auto_resize_min_;
|
||||
gfx::Size auto_resize_max_;
|
||||
|
||||
// True if this is the primary platform delegate, in which case it will
|
||||
// register WebContents delegate/observers.
|
||||
bool primary_ = true;
|
||||
|
||||
base::WeakPtrFactory<CefBrowserPlatformDelegateAlloy> weak_ptr_factory_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(CefBrowserPlatformDelegateAlloy);
|
||||
};
|
||||
|
||||
#endif // CEF_LIBCEF_BROWSER_ALLOY_BROWSER_PLATFORM_DELEGATE_ALLOY_H_
|
@@ -3,10 +3,10 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "libcef/browser/chrome_browser_process_stub.h"
|
||||
#include "libcef/browser/alloy/chrome_browser_process_alloy.h"
|
||||
|
||||
#include "libcef/browser/alloy/chrome_profile_manager_alloy.h"
|
||||
#include "libcef/browser/browser_context.h"
|
||||
#include "libcef/browser/chrome_profile_manager_stub.h"
|
||||
#include "libcef/browser/context.h"
|
||||
#include "libcef/browser/prefs/browser_prefs.h"
|
||||
#include "libcef/browser/thread_util.h"
|
||||
@@ -27,17 +27,17 @@
|
||||
#include "services/network/public/cpp/network_switches.h"
|
||||
#include "services/network/public/cpp/shared_url_loader_factory.h"
|
||||
|
||||
ChromeBrowserProcessStub::ChromeBrowserProcessStub()
|
||||
ChromeBrowserProcessAlloy::ChromeBrowserProcessAlloy()
|
||||
: initialized_(false),
|
||||
context_initialized_(false),
|
||||
shutdown_(false),
|
||||
locale_("en-US") {}
|
||||
|
||||
ChromeBrowserProcessStub::~ChromeBrowserProcessStub() {
|
||||
ChromeBrowserProcessAlloy::~ChromeBrowserProcessAlloy() {
|
||||
DCHECK((!initialized_ && !context_initialized_) || shutdown_);
|
||||
}
|
||||
|
||||
void ChromeBrowserProcessStub::Initialize() {
|
||||
void ChromeBrowserProcessAlloy::Initialize() {
|
||||
DCHECK(!initialized_);
|
||||
DCHECK(!context_initialized_);
|
||||
DCHECK(!shutdown_);
|
||||
@@ -49,7 +49,7 @@ void ChromeBrowserProcessStub::Initialize() {
|
||||
initialized_ = true;
|
||||
}
|
||||
|
||||
void ChromeBrowserProcessStub::OnContextInitialized() {
|
||||
void ChromeBrowserProcessAlloy::OnContextInitialized() {
|
||||
CEF_REQUIRE_UIT();
|
||||
DCHECK(initialized_);
|
||||
DCHECK(!context_initialized_);
|
||||
@@ -57,12 +57,12 @@ void ChromeBrowserProcessStub::OnContextInitialized() {
|
||||
|
||||
// Must be created after the NotificationService.
|
||||
print_job_manager_.reset(new printing::PrintJobManager());
|
||||
profile_manager_.reset(new ChromeProfileManagerStub());
|
||||
profile_manager_.reset(new ChromeProfileManagerAlloy());
|
||||
event_router_forwarder_ = new extensions::EventRouterForwarder();
|
||||
context_initialized_ = true;
|
||||
}
|
||||
|
||||
void ChromeBrowserProcessStub::Shutdown() {
|
||||
void ChromeBrowserProcessAlloy::CleanupOnUIThread() {
|
||||
CEF_REQUIRE_UIT();
|
||||
DCHECK(initialized_);
|
||||
DCHECK(context_initialized_);
|
||||
@@ -72,8 +72,8 @@ void ChromeBrowserProcessStub::Shutdown() {
|
||||
// this might cause a nested message loop to run, and we don't want pending
|
||||
// tasks to run once teardown has started.
|
||||
print_job_manager_->Shutdown();
|
||||
print_job_manager_.reset(NULL);
|
||||
print_preview_dialog_controller_ = NULL;
|
||||
print_job_manager_.reset(nullptr);
|
||||
print_preview_dialog_controller_ = nullptr;
|
||||
|
||||
profile_manager_.reset();
|
||||
event_router_forwarder_ = nullptr;
|
||||
@@ -84,8 +84,9 @@ void ChromeBrowserProcessStub::Shutdown() {
|
||||
|
||||
// Release any references held by objects associated with a Profile. The
|
||||
// Profile will be deleted later.
|
||||
for (const auto& profile : CefBrowserContext::GetAll()) {
|
||||
for (const auto& browser_context : CefBrowserContext::GetAll()) {
|
||||
// Release any references to |local_state_|.
|
||||
auto profile = browser_context->AsProfile();
|
||||
PrefWatcher* pref_watcher = PrefWatcher::Get(profile);
|
||||
if (pref_watcher)
|
||||
pref_watcher->Shutdown();
|
||||
@@ -107,102 +108,106 @@ void ChromeBrowserProcessStub::Shutdown() {
|
||||
shutdown_ = true;
|
||||
}
|
||||
|
||||
void ChromeBrowserProcessStub::EndSession() {
|
||||
void ChromeBrowserProcessAlloy::EndSession() {
|
||||
NOTREACHED();
|
||||
}
|
||||
|
||||
void ChromeBrowserProcessStub::FlushLocalStateAndReply(
|
||||
void ChromeBrowserProcessAlloy::FlushLocalStateAndReply(
|
||||
base::OnceClosure reply) {
|
||||
NOTREACHED();
|
||||
}
|
||||
|
||||
metrics_services_manager::MetricsServicesManager*
|
||||
ChromeBrowserProcessStub::GetMetricsServicesManager() {
|
||||
ChromeBrowserProcessAlloy::GetMetricsServicesManager() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
metrics::MetricsService* ChromeBrowserProcessStub::metrics_service() {
|
||||
metrics::MetricsService* ChromeBrowserProcessAlloy::metrics_service() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
rappor::RapporServiceImpl* ChromeBrowserProcessStub::rappor_service() {
|
||||
rappor::RapporServiceImpl* ChromeBrowserProcessAlloy::rappor_service() {
|
||||
// Called from PluginInfoHostImpl::ReportMetrics.
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
SystemNetworkContextManager*
|
||||
ChromeBrowserProcessStub::system_network_context_manager() {
|
||||
ChromeBrowserProcessAlloy::system_network_context_manager() {
|
||||
DCHECK(SystemNetworkContextManager::GetInstance());
|
||||
return SystemNetworkContextManager::GetInstance();
|
||||
}
|
||||
|
||||
network::NetworkQualityTracker*
|
||||
ChromeBrowserProcessStub::network_quality_tracker() {
|
||||
ChromeBrowserProcessAlloy::network_quality_tracker() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
WatchDogThread* ChromeBrowserProcessStub::watchdog_thread() {
|
||||
WatchDogThread* ChromeBrowserProcessAlloy::watchdog_thread() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
ProfileManager* ChromeBrowserProcessStub::profile_manager() {
|
||||
ProfileManager* ChromeBrowserProcessAlloy::profile_manager() {
|
||||
DCHECK(context_initialized_);
|
||||
return profile_manager_.get();
|
||||
}
|
||||
|
||||
PrefService* ChromeBrowserProcessStub::local_state() {
|
||||
PrefService* ChromeBrowserProcessAlloy::local_state() {
|
||||
DCHECK(initialized_);
|
||||
if (!local_state_) {
|
||||
// Use a location that is shared by all request contexts.
|
||||
const CefSettings& settings = CefContext::Get()->settings();
|
||||
const base::FilePath& cache_path =
|
||||
base::FilePath(CefString(&settings.cache_path));
|
||||
const base::FilePath& root_cache_path =
|
||||
base::FilePath(CefString(&settings.root_cache_path));
|
||||
|
||||
// Used for very early NetworkService initialization.
|
||||
local_state_ = browser_prefs::CreatePrefService(
|
||||
nullptr, cache_path, !!settings.persist_user_preferences);
|
||||
// Always persist preferences for this PrefService if possible because it
|
||||
// contains the cookie encryption key on Windows.
|
||||
local_state_ =
|
||||
browser_prefs::CreatePrefService(nullptr /* profile */, root_cache_path,
|
||||
true /* persist_user_preferences */);
|
||||
}
|
||||
return local_state_.get();
|
||||
}
|
||||
|
||||
scoped_refptr<network::SharedURLLoaderFactory>
|
||||
ChromeBrowserProcessStub::shared_url_loader_factory() {
|
||||
ChromeBrowserProcessAlloy::shared_url_loader_factory() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
variations::VariationsService* ChromeBrowserProcessStub::variations_service() {
|
||||
variations::VariationsService* ChromeBrowserProcessAlloy::variations_service() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
BrowserProcessPlatformPart* ChromeBrowserProcessStub::platform_part() {
|
||||
BrowserProcessPlatformPart* ChromeBrowserProcessAlloy::platform_part() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
extensions::EventRouterForwarder*
|
||||
ChromeBrowserProcessStub::extension_event_router_forwarder() {
|
||||
ChromeBrowserProcessAlloy::extension_event_router_forwarder() {
|
||||
DCHECK(context_initialized_);
|
||||
return event_router_forwarder_.get();
|
||||
}
|
||||
|
||||
NotificationUIManager* ChromeBrowserProcessStub::notification_ui_manager() {
|
||||
NotificationUIManager* ChromeBrowserProcessAlloy::notification_ui_manager() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
NotificationPlatformBridge*
|
||||
ChromeBrowserProcessStub::notification_platform_bridge() {
|
||||
ChromeBrowserProcessAlloy::notification_platform_bridge() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
policy::ChromeBrowserPolicyConnector*
|
||||
ChromeBrowserProcessStub::browser_policy_connector() {
|
||||
ChromeBrowserProcessAlloy::browser_policy_connector() {
|
||||
if (!browser_policy_connector_) {
|
||||
browser_policy_connector_ =
|
||||
std::make_unique<policy::ChromeBrowserPolicyConnector>();
|
||||
@@ -210,40 +215,40 @@ ChromeBrowserProcessStub::browser_policy_connector() {
|
||||
return browser_policy_connector_.get();
|
||||
}
|
||||
|
||||
policy::PolicyService* ChromeBrowserProcessStub::policy_service() {
|
||||
policy::PolicyService* ChromeBrowserProcessAlloy::policy_service() {
|
||||
return browser_policy_connector()->GetPolicyService();
|
||||
}
|
||||
|
||||
IconManager* ChromeBrowserProcessStub::icon_manager() {
|
||||
IconManager* ChromeBrowserProcessAlloy::icon_manager() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
GpuModeManager* ChromeBrowserProcessStub::gpu_mode_manager() {
|
||||
GpuModeManager* ChromeBrowserProcessAlloy::gpu_mode_manager() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void ChromeBrowserProcessStub::CreateDevToolsProtocolHandler() {
|
||||
void ChromeBrowserProcessAlloy::CreateDevToolsProtocolHandler() {
|
||||
NOTREACHED();
|
||||
}
|
||||
|
||||
void ChromeBrowserProcessStub::CreateDevToolsAutoOpener() {
|
||||
void ChromeBrowserProcessAlloy::CreateDevToolsAutoOpener() {
|
||||
NOTREACHED();
|
||||
}
|
||||
|
||||
bool ChromeBrowserProcessStub::IsShuttingDown() {
|
||||
bool ChromeBrowserProcessAlloy::IsShuttingDown() {
|
||||
NOTREACHED();
|
||||
return false;
|
||||
}
|
||||
|
||||
printing::PrintJobManager* ChromeBrowserProcessStub::print_job_manager() {
|
||||
printing::PrintJobManager* ChromeBrowserProcessAlloy::print_job_manager() {
|
||||
DCHECK(context_initialized_);
|
||||
return print_job_manager_.get();
|
||||
}
|
||||
|
||||
printing::PrintPreviewDialogController*
|
||||
ChromeBrowserProcessStub::print_preview_dialog_controller() {
|
||||
ChromeBrowserProcessAlloy::print_preview_dialog_controller() {
|
||||
if (!print_preview_dialog_controller_.get()) {
|
||||
print_preview_dialog_controller_ =
|
||||
new printing::PrintPreviewDialogController();
|
||||
@@ -252,7 +257,7 @@ ChromeBrowserProcessStub::print_preview_dialog_controller() {
|
||||
}
|
||||
|
||||
printing::BackgroundPrintingManager*
|
||||
ChromeBrowserProcessStub::background_printing_manager() {
|
||||
ChromeBrowserProcessAlloy::background_printing_manager() {
|
||||
if (!background_printing_manager_.get()) {
|
||||
background_printing_manager_.reset(
|
||||
new printing::BackgroundPrintingManager());
|
||||
@@ -261,118 +266,126 @@ ChromeBrowserProcessStub::background_printing_manager() {
|
||||
}
|
||||
|
||||
IntranetRedirectDetector*
|
||||
ChromeBrowserProcessStub::intranet_redirect_detector() {
|
||||
ChromeBrowserProcessAlloy::intranet_redirect_detector() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const std::string& ChromeBrowserProcessStub::GetApplicationLocale() {
|
||||
const std::string& ChromeBrowserProcessAlloy::GetApplicationLocale() {
|
||||
DCHECK(!locale_.empty());
|
||||
return locale_;
|
||||
}
|
||||
|
||||
void ChromeBrowserProcessStub::SetApplicationLocale(const std::string& locale) {
|
||||
void ChromeBrowserProcessAlloy::SetApplicationLocale(
|
||||
const std::string& locale) {
|
||||
locale_ = locale;
|
||||
}
|
||||
|
||||
DownloadStatusUpdater* ChromeBrowserProcessStub::download_status_updater() {
|
||||
DownloadStatusUpdater* ChromeBrowserProcessAlloy::download_status_updater() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
DownloadRequestLimiter* ChromeBrowserProcessStub::download_request_limiter() {
|
||||
DownloadRequestLimiter* ChromeBrowserProcessAlloy::download_request_limiter() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
BackgroundModeManager* ChromeBrowserProcessStub::background_mode_manager() {
|
||||
#if BUILDFLAG(ENABLE_BACKGROUND_MODE)
|
||||
BackgroundModeManager* ChromeBrowserProcessAlloy::background_mode_manager() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void ChromeBrowserProcessStub::set_background_mode_manager_for_test(
|
||||
void ChromeBrowserProcessAlloy::set_background_mode_manager_for_test(
|
||||
std::unique_ptr<BackgroundModeManager> manager) {
|
||||
NOTREACHED();
|
||||
}
|
||||
#endif
|
||||
|
||||
StatusTray* ChromeBrowserProcessStub::status_tray() {
|
||||
StatusTray* ChromeBrowserProcessAlloy::status_tray() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
safe_browsing::SafeBrowsingService*
|
||||
ChromeBrowserProcessStub::safe_browsing_service() {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
safe_browsing::ClientSideDetectionService*
|
||||
ChromeBrowserProcessStub::safe_browsing_detection_service() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
ChromeBrowserProcessAlloy::safe_browsing_service() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
subresource_filter::RulesetService*
|
||||
ChromeBrowserProcessStub::subresource_filter_ruleset_service() {
|
||||
ChromeBrowserProcessAlloy::subresource_filter_ruleset_service() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
federated_learning::FlocBlocklistService*
|
||||
ChromeBrowserProcessAlloy::floc_blocklist_service() {
|
||||
NOTREACHED();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
federated_learning::FlocSortingLshClustersService*
|
||||
ChromeBrowserProcessAlloy::floc_sorting_lsh_clusters_service() {
|
||||
NOTREACHED();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
optimization_guide::OptimizationGuideService*
|
||||
ChromeBrowserProcessStub::optimization_guide_service() {
|
||||
ChromeBrowserProcessAlloy::optimization_guide_service() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
StartupData* ChromeBrowserProcessStub::startup_data() {
|
||||
StartupData* ChromeBrowserProcessAlloy::startup_data() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
#if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
|
||||
void ChromeBrowserProcessStub::StartAutoupdateTimer() {}
|
||||
void ChromeBrowserProcessAlloy::StartAutoupdateTimer() {}
|
||||
#endif
|
||||
|
||||
component_updater::ComponentUpdateService*
|
||||
ChromeBrowserProcessStub::component_updater() {
|
||||
ChromeBrowserProcessAlloy::component_updater() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
MediaFileSystemRegistry*
|
||||
ChromeBrowserProcessStub::media_file_system_registry() {
|
||||
ChromeBrowserProcessAlloy::media_file_system_registry() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
WebRtcLogUploader* ChromeBrowserProcessStub::webrtc_log_uploader() {
|
||||
WebRtcLogUploader* ChromeBrowserProcessAlloy::webrtc_log_uploader() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
network_time::NetworkTimeTracker*
|
||||
ChromeBrowserProcessStub::network_time_tracker() {
|
||||
ChromeBrowserProcessAlloy::network_time_tracker() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
gcm::GCMDriver* ChromeBrowserProcessStub::gcm_driver() {
|
||||
gcm::GCMDriver* ChromeBrowserProcessAlloy::gcm_driver() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
shell_integration::DefaultWebClientState
|
||||
ChromeBrowserProcessStub::CachedDefaultWebClientState() {
|
||||
resource_coordinator::TabManager* ChromeBrowserProcessAlloy::GetTabManager() {
|
||||
NOTREACHED();
|
||||
return shell_integration::UNKNOWN_DEFAULT;
|
||||
}
|
||||
|
||||
resource_coordinator::TabManager* ChromeBrowserProcessStub::GetTabManager() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
resource_coordinator::ResourceCoordinatorParts*
|
||||
ChromeBrowserProcessStub::resource_coordinator_parts() {
|
||||
ChromeBrowserProcessAlloy::resource_coordinator_parts() {
|
||||
NOTREACHED();
|
||||
return NULL;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
BuildState* ChromeBrowserProcessAlloy::GetBuildState() {
|
||||
NOTREACHED();
|
||||
return nullptr;
|
||||
}
|
@@ -6,8 +6,8 @@
|
||||
// This file provides a stub implementation of Chrome's BrowserProcess object
|
||||
// for use as an interop layer between CEF and files that live in chrome/.
|
||||
|
||||
#ifndef CEF_LIBCEF_BROWSER_CHROME_BROWSER_PROCESS_STUB_H_
|
||||
#define CEF_LIBCEF_BROWSER_CHROME_BROWSER_PROCESS_STUB_H_
|
||||
#ifndef CEF_LIBCEF_BROWSER_ALLOY_CHROME_BROWSER_PROCESS_ALLOY_H_
|
||||
#define CEF_LIBCEF_BROWSER_ALLOY_CHROME_BROWSER_PROCESS_ALLOY_H_
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
@@ -18,7 +18,7 @@
|
||||
#include "chrome/browser/extensions/event_router_forwarder.h"
|
||||
#include "media/media_buildflags.h"
|
||||
|
||||
class ChromeProfileManagerStub;
|
||||
class ChromeProfileManagerAlloy;
|
||||
|
||||
class BackgroundModeManager {
|
||||
public:
|
||||
@@ -29,14 +29,14 @@ class BackgroundModeManager {
|
||||
DISALLOW_COPY_AND_ASSIGN(BackgroundModeManager);
|
||||
};
|
||||
|
||||
class ChromeBrowserProcessStub : public BrowserProcess {
|
||||
class ChromeBrowserProcessAlloy : public BrowserProcess {
|
||||
public:
|
||||
ChromeBrowserProcessStub();
|
||||
~ChromeBrowserProcessStub() override;
|
||||
ChromeBrowserProcessAlloy();
|
||||
~ChromeBrowserProcessAlloy() override;
|
||||
|
||||
void Initialize();
|
||||
void OnContextInitialized();
|
||||
void Shutdown();
|
||||
void CleanupOnUIThread();
|
||||
|
||||
// BrowserProcess implementation.
|
||||
void EndSession() override;
|
||||
@@ -73,15 +73,18 @@ class ChromeBrowserProcessStub : public BrowserProcess {
|
||||
void SetApplicationLocale(const std::string& locale) override;
|
||||
DownloadStatusUpdater* download_status_updater() override;
|
||||
DownloadRequestLimiter* download_request_limiter() override;
|
||||
#if BUILDFLAG(ENABLE_BACKGROUND_MODE)
|
||||
BackgroundModeManager* background_mode_manager() override;
|
||||
void set_background_mode_manager_for_test(
|
||||
std::unique_ptr<BackgroundModeManager> manager) override;
|
||||
#endif
|
||||
StatusTray* status_tray() override;
|
||||
safe_browsing::SafeBrowsingService* safe_browsing_service() override;
|
||||
safe_browsing::ClientSideDetectionService* safe_browsing_detection_service()
|
||||
override;
|
||||
subresource_filter::RulesetService* subresource_filter_ruleset_service()
|
||||
override;
|
||||
federated_learning::FlocBlocklistService* floc_blocklist_service() override;
|
||||
federated_learning::FlocSortingLshClustersService*
|
||||
floc_sorting_lsh_clusters_service() override;
|
||||
optimization_guide::OptimizationGuideService* optimization_guide_service()
|
||||
override;
|
||||
StartupData* startup_data() override;
|
||||
@@ -95,11 +98,10 @@ class ChromeBrowserProcessStub : public BrowserProcess {
|
||||
WebRtcLogUploader* webrtc_log_uploader() override;
|
||||
network_time::NetworkTimeTracker* network_time_tracker() override;
|
||||
gcm::GCMDriver* gcm_driver() override;
|
||||
shell_integration::DefaultWebClientState CachedDefaultWebClientState()
|
||||
override;
|
||||
resource_coordinator::TabManager* GetTabManager() override;
|
||||
resource_coordinator::ResourceCoordinatorParts* resource_coordinator_parts()
|
||||
override;
|
||||
BuildState* GetBuildState() override;
|
||||
|
||||
private:
|
||||
bool initialized_;
|
||||
@@ -108,7 +110,7 @@ class ChromeBrowserProcessStub : public BrowserProcess {
|
||||
|
||||
std::string locale_;
|
||||
std::unique_ptr<printing::PrintJobManager> print_job_manager_;
|
||||
std::unique_ptr<ChromeProfileManagerStub> profile_manager_;
|
||||
std::unique_ptr<ChromeProfileManagerAlloy> profile_manager_;
|
||||
scoped_refptr<extensions::EventRouterForwarder> event_router_forwarder_;
|
||||
scoped_refptr<printing::PrintPreviewDialogController>
|
||||
print_preview_dialog_controller_;
|
||||
@@ -120,7 +122,7 @@ class ChromeBrowserProcessStub : public BrowserProcess {
|
||||
browser_policy_connector_;
|
||||
std::unique_ptr<base::FieldTrialList> field_trial_list_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(ChromeBrowserProcessStub);
|
||||
DISALLOW_COPY_AND_ASSIGN(ChromeBrowserProcessAlloy);
|
||||
};
|
||||
|
||||
#endif // CEF_LIBCEF_BROWSER_CHROME_BROWSER_PROCESS_STUB_H_
|
||||
#endif // CEF_LIBCEF_BROWSER_ALLOY_CHROME_BROWSER_PROCESS_ALLOY_H_
|
178
libcef/browser/alloy/chrome_profile_alloy.cc
Normal file
178
libcef/browser/alloy/chrome_profile_alloy.cc
Normal file
@@ -0,0 +1,178 @@
|
||||
// Copyright (c) 2015 The Chromium Embedded Framework Authors.
|
||||
// Portions copyright (c) 2012 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "libcef/browser/alloy/chrome_profile_alloy.h"
|
||||
|
||||
#include "base/no_destructor.h"
|
||||
#include "components/variations/variations_client.h"
|
||||
#include "components/variations/variations_ids_provider.h"
|
||||
#include "net/url_request/url_request_context.h"
|
||||
|
||||
namespace {
|
||||
|
||||
class CefVariationsClient : public variations::VariationsClient {
|
||||
public:
|
||||
explicit CefVariationsClient(content::BrowserContext* browser_context)
|
||||
: browser_context_(browser_context) {}
|
||||
|
||||
~CefVariationsClient() override = default;
|
||||
|
||||
bool IsOffTheRecord() const override {
|
||||
return browser_context_->IsOffTheRecord();
|
||||
}
|
||||
|
||||
variations::mojom::VariationsHeadersPtr GetVariationsHeaders()
|
||||
const override {
|
||||
return variations::VariationsIdsProvider::GetInstance()
|
||||
->GetClientDataHeaders(false /* is_signed_in */);
|
||||
}
|
||||
|
||||
private:
|
||||
content::BrowserContext* browser_context_;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
ChromeProfileAlloy::ChromeProfileAlloy() {}
|
||||
|
||||
ChromeProfileAlloy::~ChromeProfileAlloy() {}
|
||||
|
||||
bool ChromeProfileAlloy::IsOffTheRecord() {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ChromeProfileAlloy::IsOffTheRecord() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
const Profile::OTRProfileID& ChromeProfileAlloy::GetOTRProfileID() const {
|
||||
NOTREACHED();
|
||||
static base::NoDestructor<Profile::OTRProfileID> otr_profile_id(
|
||||
"ProfileImp::NoOTRProfileID");
|
||||
return *otr_profile_id;
|
||||
}
|
||||
|
||||
variations::VariationsClient* ChromeProfileAlloy::GetVariationsClient() {
|
||||
if (!variations_client_)
|
||||
variations_client_ = std::make_unique<CefVariationsClient>(this);
|
||||
return variations_client_.get();
|
||||
}
|
||||
|
||||
scoped_refptr<base::SequencedTaskRunner> ChromeProfileAlloy::GetIOTaskRunner() {
|
||||
NOTREACHED();
|
||||
return scoped_refptr<base::SequencedTaskRunner>();
|
||||
}
|
||||
|
||||
std::string ChromeProfileAlloy::GetProfileUserName() const {
|
||||
NOTREACHED();
|
||||
return std::string();
|
||||
}
|
||||
|
||||
Profile* ChromeProfileAlloy::GetOffTheRecordProfile(
|
||||
const Profile::OTRProfileID& otr_profile_id) {
|
||||
NOTREACHED();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::vector<Profile*> ChromeProfileAlloy::GetAllOffTheRecordProfiles() {
|
||||
return {};
|
||||
}
|
||||
|
||||
void ChromeProfileAlloy::DestroyOffTheRecordProfile(Profile* otr_profile) {
|
||||
NOTREACHED();
|
||||
}
|
||||
|
||||
bool ChromeProfileAlloy::HasOffTheRecordProfile(
|
||||
const Profile::OTRProfileID& otr_profile_id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ChromeProfileAlloy::HasAnyOffTheRecordProfile() {
|
||||
return false;
|
||||
}
|
||||
|
||||
Profile* ChromeProfileAlloy::GetOriginalProfile() {
|
||||
return this;
|
||||
}
|
||||
|
||||
const Profile* ChromeProfileAlloy::GetOriginalProfile() const {
|
||||
return this;
|
||||
}
|
||||
|
||||
bool ChromeProfileAlloy::IsSupervised() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ChromeProfileAlloy::IsChild() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ChromeProfileAlloy::IsLegacySupervised() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
ExtensionSpecialStoragePolicy*
|
||||
ChromeProfileAlloy::GetExtensionSpecialStoragePolicy() {
|
||||
NOTREACHED();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
PrefService* ChromeProfileAlloy::GetOffTheRecordPrefs() {
|
||||
NOTREACHED();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool ChromeProfileAlloy::IsSameOrParent(Profile* profile) {
|
||||
NOTREACHED();
|
||||
return false;
|
||||
}
|
||||
|
||||
base::Time ChromeProfileAlloy::GetStartTime() const {
|
||||
NOTREACHED();
|
||||
return base::Time();
|
||||
}
|
||||
|
||||
base::FilePath ChromeProfileAlloy::last_selected_directory() {
|
||||
NOTREACHED();
|
||||
return base::FilePath();
|
||||
}
|
||||
|
||||
void ChromeProfileAlloy::set_last_selected_directory(
|
||||
const base::FilePath& path) {
|
||||
NOTREACHED();
|
||||
}
|
||||
|
||||
GURL ChromeProfileAlloy::GetHomePage() {
|
||||
NOTREACHED();
|
||||
return GURL();
|
||||
}
|
||||
|
||||
bool ChromeProfileAlloy::WasCreatedByVersionOrLater(
|
||||
const std::string& version) {
|
||||
NOTREACHED();
|
||||
return false;
|
||||
}
|
||||
|
||||
void ChromeProfileAlloy::SetExitType(ExitType exit_type) {
|
||||
NOTREACHED();
|
||||
}
|
||||
|
||||
Profile::ExitType ChromeProfileAlloy::GetLastSessionExitType() const {
|
||||
NOTREACHED();
|
||||
return EXIT_NORMAL;
|
||||
}
|
||||
|
||||
base::Time ChromeProfileAlloy::GetCreationTime() const {
|
||||
NOTREACHED();
|
||||
return base::Time();
|
||||
}
|
||||
|
||||
void ChromeProfileAlloy::SetCreationTimeForTesting(base::Time creation_time) {
|
||||
NOTREACHED();
|
||||
}
|
||||
|
||||
void ChromeProfileAlloy::RecordMainFrameNavigation() {
|
||||
NOTREACHED();
|
||||
}
|
@@ -5,29 +5,34 @@
|
||||
|
||||
// This class gathers state related to a single user profile.
|
||||
|
||||
#ifndef CEF_LIBCEF_BROWSER_CHROME_PROFILE_STUB_H_
|
||||
#define CEF_LIBCEF_BROWSER_CHROME_PROFILE_STUB_H_
|
||||
#ifndef CEF_LIBCEF_BROWSER_ALLOY_CHROME_PROFILE_ALLOY_H_
|
||||
#define CEF_LIBCEF_BROWSER_ALLOY_CHROME_PROFILE_ALLOY_H_
|
||||
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
|
||||
// This file provides a stub implementation of Chrome's Profile object for use
|
||||
// as an interop layer between CEF and files that live in chrome/.
|
||||
|
||||
class ChromeProfileStub : public Profile {
|
||||
class ChromeProfileAlloy : public Profile {
|
||||
public:
|
||||
ChromeProfileStub();
|
||||
~ChromeProfileStub() override;
|
||||
ChromeProfileAlloy();
|
||||
~ChromeProfileAlloy() override;
|
||||
|
||||
protected:
|
||||
// Profile methods.
|
||||
bool IsOffTheRecord() override;
|
||||
bool IsOffTheRecord() const override;
|
||||
const OTRProfileID& GetOTRProfileID() const override;
|
||||
variations::VariationsClient* GetVariationsClient() override;
|
||||
scoped_refptr<base::SequencedTaskRunner> GetIOTaskRunner() override;
|
||||
std::string GetProfileUserName() const override;
|
||||
ProfileType GetProfileType() const override;
|
||||
Profile* GetOffTheRecordProfile() override;
|
||||
void DestroyOffTheRecordProfile() override;
|
||||
bool HasOffTheRecordProfile() override;
|
||||
Profile* GetOffTheRecordProfile(
|
||||
const Profile::OTRProfileID& otr_profile_id) override;
|
||||
std::vector<Profile*> GetAllOffTheRecordProfiles() override;
|
||||
void DestroyOffTheRecordProfile(Profile* otr_profile) override;
|
||||
bool HasOffTheRecordProfile(
|
||||
const Profile::OTRProfileID& otr_profile_id) override;
|
||||
bool HasAnyOffTheRecordProfile() override;
|
||||
Profile* GetOriginalProfile() override;
|
||||
const Profile* GetOriginalProfile() const override;
|
||||
bool IsSupervised() const override;
|
||||
@@ -35,20 +40,22 @@ class ChromeProfileStub : public Profile {
|
||||
bool IsLegacySupervised() const override;
|
||||
ExtensionSpecialStoragePolicy* GetExtensionSpecialStoragePolicy() override;
|
||||
PrefService* GetOffTheRecordPrefs() override;
|
||||
bool IsSameProfile(Profile* profile) override;
|
||||
bool IsSameOrParent(Profile* profile) override;
|
||||
base::Time GetStartTime() const override;
|
||||
base::FilePath last_selected_directory() override;
|
||||
void set_last_selected_directory(const base::FilePath& path) override;
|
||||
GURL GetHomePage() override;
|
||||
bool WasCreatedByVersionOrLater(const std::string& version) override;
|
||||
bool IsIndependentOffTheRecordProfile() override;
|
||||
void SetExitType(ExitType exit_type) override;
|
||||
ExitType GetLastSessionExitType() override;
|
||||
ExitType GetLastSessionExitType() const override;
|
||||
base::Time GetCreationTime() const override;
|
||||
void SetCreationTimeForTesting(base::Time creation_time) override;
|
||||
void RecordMainFrameNavigation() override;
|
||||
|
||||
private:
|
||||
DISALLOW_COPY_AND_ASSIGN(ChromeProfileStub);
|
||||
std::unique_ptr<variations::VariationsClient> variations_client_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(ChromeProfileAlloy);
|
||||
};
|
||||
|
||||
#endif // CEF_LIBCEF_BROWSER_CHROME_PROFILE_STUB_H_
|
||||
#endif // CEF_LIBCEF_BROWSER_ALLOY_CHROME_PROFILE_ALLOY_H_
|
@@ -3,10 +3,11 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "libcef/browser/chrome_profile_manager_stub.h"
|
||||
#include "libcef/browser/alloy/chrome_profile_manager_alloy.h"
|
||||
|
||||
#include "libcef/browser/browser_context.h"
|
||||
#include "libcef/browser/content_browser_client.h"
|
||||
#include "libcef/browser/request_context_impl.h"
|
||||
#include "libcef/common/app_manager.h"
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -21,21 +22,22 @@ namespace {
|
||||
// Return the main context for now since we don't currently have a good way to
|
||||
// determine that.
|
||||
CefBrowserContext* GetActiveBrowserContext() {
|
||||
return static_cast<CefBrowserContext*>(
|
||||
CefContentBrowserClient::Get()->request_context()->GetBrowserContext());
|
||||
auto request_context = static_cast<CefRequestContextImpl*>(
|
||||
CefAppManager::Get()->GetGlobalRequestContext().get());
|
||||
return request_context->GetBrowserContext();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
ChromeProfileManagerStub::ChromeProfileManagerStub()
|
||||
ChromeProfileManagerAlloy::ChromeProfileManagerAlloy()
|
||||
: ProfileManager(base::FilePath()) {}
|
||||
|
||||
ChromeProfileManagerStub::~ChromeProfileManagerStub() {}
|
||||
ChromeProfileManagerAlloy::~ChromeProfileManagerAlloy() {}
|
||||
|
||||
Profile* ChromeProfileManagerStub::GetProfile(
|
||||
Profile* ChromeProfileManagerAlloy::GetProfile(
|
||||
const base::FilePath& profile_dir) {
|
||||
CefBrowserContext* browser_context =
|
||||
CefBrowserContext::GetForCachePath(profile_dir);
|
||||
CefBrowserContext::FromCachePath(profile_dir);
|
||||
if (!browser_context) {
|
||||
// ProfileManager makes assumptions about profile directory paths that do
|
||||
// not match CEF usage. For example, the default Chrome profile name is
|
||||
@@ -45,19 +47,19 @@ Profile* ChromeProfileManagerStub::GetProfile(
|
||||
// asking for.
|
||||
browser_context = GetActiveBrowserContext();
|
||||
}
|
||||
return browser_context;
|
||||
return browser_context->AsProfile();
|
||||
}
|
||||
|
||||
bool ChromeProfileManagerStub::IsValidProfile(const void* profile) {
|
||||
bool ChromeProfileManagerAlloy::IsValidProfile(const void* profile) {
|
||||
if (!profile)
|
||||
return false;
|
||||
return !!CefBrowserContext::GetForContext(
|
||||
reinterpret_cast<content::BrowserContext*>(const_cast<void*>(profile)));
|
||||
return !!CefBrowserContext::FromBrowserContext(
|
||||
static_cast<const content::BrowserContext*>(profile));
|
||||
}
|
||||
|
||||
Profile* ChromeProfileManagerStub::GetLastUsedProfile(
|
||||
Profile* ChromeProfileManagerAlloy::GetLastUsedProfile(
|
||||
const base::FilePath& user_data_dir) {
|
||||
// Override this method to avoid having to register prefs::kProfileLastUsed,
|
||||
// usage of which doesn't make sense for CEF.
|
||||
return GetActiveBrowserContext();
|
||||
return GetActiveBrowserContext()->AsProfile();
|
||||
}
|
@@ -6,22 +6,22 @@
|
||||
// This file provides a stub implementation of Chrome's ProfileManager object
|
||||
// for use as an interop layer between CEF and files that live in chrome/.
|
||||
|
||||
#ifndef CEF_LIBCEF_BROWSER_CHROME_PROFILE_MANAGER_STUB_H_
|
||||
#define CEF_LIBCEF_BROWSER_CHROME_PROFILE_MANAGER_STUB_H_
|
||||
#ifndef CEF_LIBCEF_BROWSER_ALLOY_CHROME_PROFILE_MANAGER_ALLOY_H_
|
||||
#define CEF_LIBCEF_BROWSER_ALLOY_CHROME_PROFILE_MANAGER_ALLOY_H_
|
||||
|
||||
#include "chrome/browser/profiles/profile_manager.h"
|
||||
|
||||
class ChromeProfileManagerStub : public ProfileManager {
|
||||
class ChromeProfileManagerAlloy : public ProfileManager {
|
||||
public:
|
||||
ChromeProfileManagerStub();
|
||||
~ChromeProfileManagerStub() override;
|
||||
ChromeProfileManagerAlloy();
|
||||
~ChromeProfileManagerAlloy() override;
|
||||
|
||||
Profile* GetProfile(const base::FilePath& profile_dir) override;
|
||||
bool IsValidProfile(const void* profile) override;
|
||||
Profile* GetLastUsedProfile(const base::FilePath& user_data_dir) override;
|
||||
|
||||
private:
|
||||
DISALLOW_COPY_AND_ASSIGN(ChromeProfileManagerStub);
|
||||
DISALLOW_COPY_AND_ASSIGN(ChromeProfileManagerAlloy);
|
||||
};
|
||||
|
||||
#endif // CEF_LIBCEF_BROWSER_CHROME_PROFILE_MANAGER_STUB_H_
|
||||
#endif // CEF_LIBCEF_BROWSER_ALLOY_CHROME_PROFILE_MANAGER_ALLOY_H_
|
126
libcef/browser/audio_capturer.cc
Normal file
126
libcef/browser/audio_capturer.cc
Normal file
@@ -0,0 +1,126 @@
|
||||
// Copyright (c) 2019 The Chromium Embedded Framework Authors.
|
||||
// Portions copyright (c) 2011 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "libcef/browser/audio_capturer.h"
|
||||
#include "libcef/browser/alloy/alloy_browser_host_impl.h"
|
||||
|
||||
#include "components/mirroring/service/captured_audio_input.h"
|
||||
#include "content/public/browser/audio_loopback_stream_creator.h"
|
||||
#include "media/audio/audio_input_device.h"
|
||||
|
||||
namespace {
|
||||
|
||||
media::ChannelLayout TranslateChannelLayout(
|
||||
cef_channel_layout_t channel_layout) {
|
||||
// Verify that our enum matches Chromium's values. The enum values match
|
||||
// between those enums and existing values don't ever change, so it's enough
|
||||
// to check that there are no new ones added.
|
||||
static_assert(
|
||||
static_cast<int>(CEF_CHANNEL_LAYOUT_MAX) ==
|
||||
static_cast<int>(media::CHANNEL_LAYOUT_MAX),
|
||||
"cef_channel_layout_t must match the ChannelLayout enum in Chromium");
|
||||
return static_cast<media::ChannelLayout>(channel_layout);
|
||||
}
|
||||
|
||||
void StreamCreatorHelper(
|
||||
content::WebContents* source_web_contents,
|
||||
content::AudioLoopbackStreamCreator* audio_stream_creator,
|
||||
mojo::PendingRemote<mirroring::mojom::AudioStreamCreatorClient> client,
|
||||
const media::AudioParameters& params,
|
||||
uint32_t total_segments) {
|
||||
audio_stream_creator->CreateLoopbackStream(
|
||||
source_web_contents, params, total_segments,
|
||||
base::BindRepeating(
|
||||
[](mojo::PendingRemote<mirroring::mojom::AudioStreamCreatorClient>
|
||||
client,
|
||||
mojo::PendingRemote<media::mojom::AudioInputStream> stream,
|
||||
mojo::PendingReceiver<media::mojom::AudioInputStreamClient>
|
||||
client_receiver,
|
||||
media::mojom::ReadOnlyAudioDataPipePtr data_pipe) {
|
||||
mojo::Remote<mirroring::mojom::AudioStreamCreatorClient>
|
||||
audio_client(std::move(client));
|
||||
audio_client->StreamCreated(std::move(stream),
|
||||
std::move(client_receiver),
|
||||
std::move(data_pipe));
|
||||
},
|
||||
base::Passed(&client)));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
CefAudioCapturer::CefAudioCapturer(const CefAudioParameters& params,
|
||||
CefRefPtr<AlloyBrowserHostImpl> browser,
|
||||
CefRefPtr<CefAudioHandler> audio_handler)
|
||||
: params_(params),
|
||||
browser_(browser),
|
||||
audio_handler_(audio_handler),
|
||||
audio_stream_creator_(content::AudioLoopbackStreamCreator::
|
||||
CreateInProcessAudioLoopbackStreamCreator()) {
|
||||
media::AudioParameters audio_params(
|
||||
media::AudioParameters::AUDIO_PCM_LINEAR,
|
||||
TranslateChannelLayout(params.channel_layout), params.sample_rate,
|
||||
params.frames_per_buffer);
|
||||
|
||||
if (!audio_params.IsValid()) {
|
||||
LOG(ERROR) << "Invalid audio parameters";
|
||||
return;
|
||||
}
|
||||
|
||||
DCHECK(browser_);
|
||||
DCHECK(audio_handler_);
|
||||
DCHECK(browser_->web_contents());
|
||||
|
||||
channels_ = audio_params.channels();
|
||||
audio_input_device_ = new media::AudioInputDevice(
|
||||
std::make_unique<mirroring::CapturedAudioInput>(base::BindRepeating(
|
||||
&StreamCreatorHelper, base::Unretained(browser_->web_contents()),
|
||||
base::Unretained(audio_stream_creator_.get()))),
|
||||
media::AudioInputDevice::kLoopback,
|
||||
media::AudioInputDevice::DeadStreamDetection::kEnabled);
|
||||
|
||||
audio_input_device_->Initialize(audio_params, this);
|
||||
audio_input_device_->Start();
|
||||
}
|
||||
|
||||
CefAudioCapturer::~CefAudioCapturer() {
|
||||
StopStream();
|
||||
}
|
||||
|
||||
void CefAudioCapturer::OnCaptureStarted() {
|
||||
audio_handler_->OnAudioStreamStarted(browser_, params_, channels_);
|
||||
DCHECK(!capturing_);
|
||||
capturing_ = true;
|
||||
}
|
||||
|
||||
void CefAudioCapturer::Capture(const media::AudioBus* source,
|
||||
base::TimeTicks audio_capture_time,
|
||||
double /*volume*/,
|
||||
bool /*key_pressed*/) {
|
||||
const int channels = source->channels();
|
||||
std::array<const float*, media::CHANNELS_MAX> data;
|
||||
DCHECK(channels == channels_);
|
||||
DCHECK(channels <= static_cast<int>(data.size()));
|
||||
for (int c = 0; c < channels; ++c) {
|
||||
data[c] = source->channel(c);
|
||||
}
|
||||
base::TimeDelta pts = audio_capture_time - base::TimeTicks::UnixEpoch();
|
||||
audio_handler_->OnAudioStreamPacket(browser_, data.data(), source->frames(),
|
||||
pts.InMilliseconds());
|
||||
}
|
||||
|
||||
void CefAudioCapturer::OnCaptureError(const std::string& message) {
|
||||
audio_handler_->OnAudioStreamError(browser_, message);
|
||||
StopStream();
|
||||
}
|
||||
|
||||
void CefAudioCapturer::StopStream() {
|
||||
if (audio_input_device_)
|
||||
audio_input_device_->Stop();
|
||||
if (capturing_)
|
||||
audio_handler_->OnAudioStreamStopped(browser_);
|
||||
|
||||
audio_input_device_ = nullptr;
|
||||
capturing_ = false;
|
||||
}
|
53
libcef/browser/audio_capturer.h
Normal file
53
libcef/browser/audio_capturer.h
Normal file
@@ -0,0 +1,53 @@
|
||||
// Copyright (c) 2019 The Chromium Embedded Framework Authors.
|
||||
// Portions copyright (c) 2011 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef CEF_LIBCEF_BROWSER_AUDIO_CAPTURER_H_
|
||||
#define CEF_LIBCEF_BROWSER_AUDIO_CAPTURER_H_
|
||||
#pragma once
|
||||
|
||||
#include "include/internal/cef_ptr.h"
|
||||
#include "include/internal/cef_types_wrappers.h"
|
||||
|
||||
#include "media/base/audio_capturer_source.h"
|
||||
|
||||
namespace content {
|
||||
class AudioLoopbackStreamCreator;
|
||||
} // namespace content
|
||||
|
||||
namespace media {
|
||||
class AudioInputDevice;
|
||||
} // namespace media
|
||||
|
||||
class CefAudioHandler;
|
||||
class AlloyBrowserHostImpl;
|
||||
|
||||
class CefAudioCapturer : public media::AudioCapturerSource::CaptureCallback {
|
||||
public:
|
||||
CefAudioCapturer(const CefAudioParameters& params,
|
||||
CefRefPtr<AlloyBrowserHostImpl> browser,
|
||||
CefRefPtr<CefAudioHandler> audio_handler);
|
||||
~CefAudioCapturer() override;
|
||||
|
||||
private:
|
||||
void OnCaptureStarted() override;
|
||||
void Capture(const media::AudioBus* audio_source,
|
||||
base::TimeTicks audio_capture_time,
|
||||
double volume,
|
||||
bool key_pressed) override;
|
||||
void OnCaptureError(const std::string& message) override;
|
||||
void OnCaptureMuted(bool is_muted) override {}
|
||||
|
||||
void StopStream();
|
||||
|
||||
CefAudioParameters params_;
|
||||
CefRefPtr<AlloyBrowserHostImpl> browser_;
|
||||
CefRefPtr<CefAudioHandler> audio_handler_;
|
||||
std::unique_ptr<content::AudioLoopbackStreamCreator> audio_stream_creator_;
|
||||
scoped_refptr<media::AudioInputDevice> audio_input_device_;
|
||||
bool capturing_ = false;
|
||||
int channels_ = 0;
|
||||
};
|
||||
|
||||
#endif // CEF_LIBCEF_BROWSER_AUDIO_CAPTURER_H_
|
616
libcef/browser/browser_contents_delegate.cc
Normal file
616
libcef/browser/browser_contents_delegate.cc
Normal file
@@ -0,0 +1,616 @@
|
||||
// Copyright 2020 The Chromium Embedded Framework Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "libcef/browser/browser_contents_delegate.h"
|
||||
|
||||
#include "libcef/browser/browser_host_base.h"
|
||||
#include "libcef/browser/browser_platform_delegate.h"
|
||||
#include "libcef/browser/browser_util.h"
|
||||
|
||||
#include "content/public/browser/keyboard_event_processing_result.h"
|
||||
#include "content/public/browser/native_web_keyboard_event.h"
|
||||
#include "content/public/browser/navigation_entry.h"
|
||||
#include "content/public/browser/navigation_handle.h"
|
||||
#include "content/public/browser/notification_details.h"
|
||||
#include "content/public/browser/notification_source.h"
|
||||
#include "content/public/browser/notification_types.h"
|
||||
#include "content/public/browser/render_view_host.h"
|
||||
|
||||
using content::KeyboardEventProcessingResult;
|
||||
|
||||
CefBrowserContentsDelegate::CefBrowserContentsDelegate(
|
||||
scoped_refptr<CefBrowserInfo> browser_info)
|
||||
: browser_info_(browser_info) {
|
||||
DCHECK(browser_info_->browser());
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::ObserveWebContents(
|
||||
content::WebContents* new_contents) {
|
||||
WebContentsObserver::Observe(new_contents);
|
||||
|
||||
if (new_contents) {
|
||||
registrar_.reset(new content::NotificationRegistrar);
|
||||
|
||||
// When navigating through the history, the restored NavigationEntry's title
|
||||
// will be used. If the entry ends up having the same title after we return
|
||||
// to it, as will usually be the case, the
|
||||
// NOTIFICATION_WEB_CONTENTS_TITLE_UPDATED will then be suppressed, since
|
||||
// the NavigationEntry's title hasn't changed.
|
||||
registrar_->Add(this, content::NOTIFICATION_LOAD_STOP,
|
||||
content::Source<content::NavigationController>(
|
||||
&new_contents->GetController()));
|
||||
|
||||
// Make sure RenderViewCreated is called at least one time.
|
||||
RenderViewCreated(new_contents->GetRenderViewHost());
|
||||
|
||||
// Create the frame representation before OnAfterCreated is called for a new
|
||||
// browser. Additionally, RenderFrameCreated is otherwise not called at all
|
||||
// for new popup browsers.
|
||||
RenderFrameCreated(new_contents->GetMainFrame());
|
||||
} else {
|
||||
registrar_.reset();
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::AddObserver(Observer* observer) {
|
||||
observers_.AddObserver(observer);
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::RemoveObserver(Observer* observer) {
|
||||
observers_.RemoveObserver(observer);
|
||||
}
|
||||
|
||||
// |source| may be NULL for navigations in the current tab, or if the
|
||||
// navigation originates from a guest view via MaybeAllowNavigation.
|
||||
content::WebContents* CefBrowserContentsDelegate::OpenURLFromTab(
|
||||
content::WebContents* source,
|
||||
const content::OpenURLParams& params) {
|
||||
bool cancel = false;
|
||||
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetRequestHandler()) {
|
||||
cancel = handler->OnOpenURLFromTab(
|
||||
browser(), browser()->GetFrame(params.frame_tree_node_id),
|
||||
params.url.spec(),
|
||||
static_cast<cef_window_open_disposition_t>(params.disposition),
|
||||
params.user_gesture);
|
||||
}
|
||||
}
|
||||
|
||||
// Returning nullptr will cancel the navigation.
|
||||
return cancel ? nullptr : web_contents();
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::LoadingStateChanged(
|
||||
content::WebContents* source,
|
||||
bool to_different_document) {
|
||||
const int current_index =
|
||||
source->GetController().GetLastCommittedEntryIndex();
|
||||
const int max_index = source->GetController().GetEntryCount() - 1;
|
||||
|
||||
const bool is_loading = source->IsLoading();
|
||||
const bool can_go_back = (current_index > 0);
|
||||
const bool can_go_forward = (current_index < max_index);
|
||||
|
||||
// This method may be called multiple times in a row with |is_loading|
|
||||
// true as a result of https://crrev.com/5e750ad0. Ignore the 2nd+ times.
|
||||
if (is_loading_ == is_loading && can_go_back_ == can_go_back &&
|
||||
can_go_forward_ == can_go_forward) {
|
||||
return;
|
||||
}
|
||||
|
||||
is_loading_ = is_loading;
|
||||
can_go_back_ = can_go_back;
|
||||
can_go_forward_ = can_go_forward;
|
||||
OnStateChanged(State::kNavigation);
|
||||
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetLoadHandler()) {
|
||||
handler->OnLoadingStateChange(browser(), is_loading, can_go_back,
|
||||
can_go_forward);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::UpdateTargetURL(content::WebContents* source,
|
||||
const GURL& url) {
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetDisplayHandler()) {
|
||||
handler->OnStatusMessage(browser(), url.spec());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool CefBrowserContentsDelegate::DidAddMessageToConsole(
|
||||
content::WebContents* source,
|
||||
blink::mojom::ConsoleMessageLevel log_level,
|
||||
const base::string16& message,
|
||||
int32_t line_no,
|
||||
const base::string16& source_id) {
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetDisplayHandler()) {
|
||||
// Use LOGSEVERITY_DEBUG for unrecognized |level| values.
|
||||
cef_log_severity_t cef_level = LOGSEVERITY_DEBUG;
|
||||
switch (log_level) {
|
||||
case blink::mojom::ConsoleMessageLevel::kVerbose:
|
||||
cef_level = LOGSEVERITY_DEBUG;
|
||||
break;
|
||||
case blink::mojom::ConsoleMessageLevel::kInfo:
|
||||
cef_level = LOGSEVERITY_INFO;
|
||||
break;
|
||||
case blink::mojom::ConsoleMessageLevel::kWarning:
|
||||
cef_level = LOGSEVERITY_WARNING;
|
||||
break;
|
||||
case blink::mojom::ConsoleMessageLevel::kError:
|
||||
cef_level = LOGSEVERITY_ERROR;
|
||||
break;
|
||||
}
|
||||
|
||||
return handler->OnConsoleMessage(browser(), cef_level, message, source_id,
|
||||
line_no);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::DidNavigateMainFramePostCommit(
|
||||
content::WebContents* web_contents) {
|
||||
has_document_ = false;
|
||||
OnStateChanged(State::kDocument);
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::EnterFullscreenModeForTab(
|
||||
content::RenderFrameHost* requesting_frame,
|
||||
const blink::mojom::FullscreenOptions& options) {
|
||||
OnFullscreenModeChange(/*fullscreen=*/true);
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::ExitFullscreenModeForTab(
|
||||
content::WebContents* web_contents) {
|
||||
OnFullscreenModeChange(/*fullscreen=*/false);
|
||||
}
|
||||
|
||||
KeyboardEventProcessingResult
|
||||
CefBrowserContentsDelegate::PreHandleKeyboardEvent(
|
||||
content::WebContents* source,
|
||||
const content::NativeWebKeyboardEvent& event) {
|
||||
if (auto delegate = platform_delegate()) {
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetKeyboardHandler()) {
|
||||
CefKeyEvent cef_event;
|
||||
if (browser_util::GetCefKeyEvent(event, cef_event)) {
|
||||
cef_event.focus_on_editable_field = focus_on_editable_field_;
|
||||
|
||||
auto event_handle = delegate->GetEventHandle(event);
|
||||
bool is_keyboard_shortcut = false;
|
||||
bool result = handler->OnPreKeyEvent(
|
||||
browser(), cef_event, event_handle, &is_keyboard_shortcut);
|
||||
if (result) {
|
||||
return KeyboardEventProcessingResult::HANDLED;
|
||||
} else if (is_keyboard_shortcut) {
|
||||
return KeyboardEventProcessingResult::NOT_HANDLED_IS_SHORTCUT;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return KeyboardEventProcessingResult::NOT_HANDLED;
|
||||
}
|
||||
|
||||
bool CefBrowserContentsDelegate::HandleKeyboardEvent(
|
||||
content::WebContents* source,
|
||||
const content::NativeWebKeyboardEvent& event) {
|
||||
// Check to see if event should be ignored.
|
||||
if (event.skip_in_browser)
|
||||
return false;
|
||||
|
||||
if (auto delegate = platform_delegate()) {
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetKeyboardHandler()) {
|
||||
CefKeyEvent cef_event;
|
||||
if (browser_util::GetCefKeyEvent(event, cef_event)) {
|
||||
cef_event.focus_on_editable_field = focus_on_editable_field_;
|
||||
|
||||
auto event_handle = delegate->GetEventHandle(event);
|
||||
if (handler->OnKeyEvent(browser(), cef_event, event_handle)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::RenderFrameCreated(
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
browser_info_->MaybeCreateFrame(render_frame_host, false /* is_guest_view */);
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::RenderFrameHostChanged(
|
||||
content::RenderFrameHost* old_host,
|
||||
content::RenderFrameHost* new_host) {
|
||||
// Just in case RenderFrameCreated wasn't called for some reason.
|
||||
RenderFrameCreated(new_host);
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::RenderFrameDeleted(
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
const auto frame_id = CefFrameHostImpl::MakeFrameId(render_frame_host);
|
||||
browser_info_->RemoveFrame(render_frame_host);
|
||||
|
||||
if (focused_frame_ && focused_frame_->GetIdentifier() == frame_id) {
|
||||
focused_frame_ = nullptr;
|
||||
OnStateChanged(State::kFocusedFrame);
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::RenderViewCreated(
|
||||
content::RenderViewHost* render_view_host) {
|
||||
// May be already registered if the renderer crashed previously.
|
||||
if (!registrar_->IsRegistered(
|
||||
this, content::NOTIFICATION_FOCUS_CHANGED_IN_PAGE,
|
||||
content::Source<content::RenderViewHost>(render_view_host))) {
|
||||
registrar_->Add(this, content::NOTIFICATION_FOCUS_CHANGED_IN_PAGE,
|
||||
content::Source<content::RenderViewHost>(render_view_host));
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::RenderViewDeleted(
|
||||
content::RenderViewHost* render_view_host) {
|
||||
if (registrar_->IsRegistered(
|
||||
this, content::NOTIFICATION_FOCUS_CHANGED_IN_PAGE,
|
||||
content::Source<content::RenderViewHost>(render_view_host))) {
|
||||
registrar_->Remove(
|
||||
this, content::NOTIFICATION_FOCUS_CHANGED_IN_PAGE,
|
||||
content::Source<content::RenderViewHost>(render_view_host));
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::RenderViewReady() {
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetRequestHandler()) {
|
||||
handler->OnRenderViewReady(browser());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::RenderProcessGone(
|
||||
base::TerminationStatus status) {
|
||||
cef_termination_status_t ts = TS_ABNORMAL_TERMINATION;
|
||||
if (status == base::TERMINATION_STATUS_PROCESS_WAS_KILLED)
|
||||
ts = TS_PROCESS_WAS_KILLED;
|
||||
else if (status == base::TERMINATION_STATUS_PROCESS_CRASHED)
|
||||
ts = TS_PROCESS_CRASHED;
|
||||
else if (status == base::TERMINATION_STATUS_OOM)
|
||||
ts = TS_PROCESS_OOM;
|
||||
else if (status != base::TERMINATION_STATUS_ABNORMAL_TERMINATION)
|
||||
return;
|
||||
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetRequestHandler()) {
|
||||
auto navigation_lock = browser_info_->CreateNavigationLock();
|
||||
handler->OnRenderProcessTerminated(browser(), ts);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::OnFrameFocused(
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
CefRefPtr<CefFrameHostImpl> frame = static_cast<CefFrameHostImpl*>(
|
||||
browser_info_->GetFrameForHost(render_frame_host).get());
|
||||
if (!frame || frame->IsFocused())
|
||||
return;
|
||||
|
||||
CefRefPtr<CefFrameHostImpl> previous_frame = focused_frame_;
|
||||
if (frame->IsMain())
|
||||
focused_frame_ = nullptr;
|
||||
else
|
||||
focused_frame_ = frame;
|
||||
|
||||
if (!previous_frame) {
|
||||
// The main frame is focused by default.
|
||||
previous_frame = browser_info_->GetMainFrame();
|
||||
}
|
||||
|
||||
if (previous_frame->GetIdentifier() != frame->GetIdentifier()) {
|
||||
previous_frame->SetFocused(false);
|
||||
frame->SetFocused(true);
|
||||
}
|
||||
|
||||
OnStateChanged(State::kFocusedFrame);
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::DocumentAvailableInMainFrame() {
|
||||
has_document_ = true;
|
||||
OnStateChanged(State::kDocument);
|
||||
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetRequestHandler()) {
|
||||
handler->OnDocumentAvailableInMainFrame(browser());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::LoadProgressChanged(double progress) {
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetDisplayHandler()) {
|
||||
handler->OnLoadingProgressChange(browser(), progress);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::DidStopLoading() {
|
||||
// Notify all renderers that loading has stopped. We used to use
|
||||
// RenderFrameObserver::DidStopLoading in the renderer process but that was
|
||||
// removed in https://crrev.com/3e37dd0ead. However, that callback wasn't
|
||||
// necessarily accurate because it wasn't called in all of the cases where
|
||||
// RenderFrameImpl sends the FrameHostMsg_DidStopLoading message. This adds
|
||||
// an additional round trip but should provide the same or improved
|
||||
// functionality.
|
||||
for (const auto& frame : browser_info_->GetAllFrames()) {
|
||||
frame->MaybeSendDidStopLoading();
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::DidFinishNavigation(
|
||||
content::NavigationHandle* navigation_handle) {
|
||||
const net::Error error_code = navigation_handle->GetNetErrorCode();
|
||||
|
||||
// Skip calls where the navigation has not yet committed and there is no
|
||||
// error code. For example, when creating a browser without loading a URL.
|
||||
if (!navigation_handle->HasCommitted() && error_code == net::OK)
|
||||
return;
|
||||
|
||||
const bool is_main_frame = navigation_handle->IsInMainFrame();
|
||||
const GURL& url =
|
||||
(error_code == net::OK ? navigation_handle->GetURL() : GURL());
|
||||
|
||||
auto browser_info = browser_info_;
|
||||
|
||||
// May return NULL when starting a new navigation if the previous navigation
|
||||
// caused the renderer process to crash during load.
|
||||
CefRefPtr<CefFrameHostImpl> frame = browser_info->GetFrameForFrameTreeNode(
|
||||
navigation_handle->GetFrameTreeNodeId());
|
||||
if (!frame) {
|
||||
if (is_main_frame) {
|
||||
frame = browser_info->GetMainFrame();
|
||||
} else {
|
||||
frame =
|
||||
browser_info->CreateTempSubFrame(CefFrameHostImpl::kInvalidFrameId);
|
||||
}
|
||||
}
|
||||
frame->RefreshAttributes();
|
||||
|
||||
if (error_code == net::OK) {
|
||||
// The navigation has been committed and there is no error.
|
||||
DCHECK(navigation_handle->HasCommitted());
|
||||
|
||||
// Don't call OnLoadStart for same page navigations (fragments,
|
||||
// history state).
|
||||
if (!navigation_handle->IsSameDocument()) {
|
||||
OnLoadStart(frame.get(), navigation_handle->GetPageTransition());
|
||||
}
|
||||
|
||||
if (is_main_frame) {
|
||||
OnAddressChange(url);
|
||||
}
|
||||
} else {
|
||||
// The navigation failed with an error. This may happen before commit
|
||||
// (e.g. network error) or after commit (e.g. response filter error).
|
||||
// If the error happened before commit then this call will originate from
|
||||
// RenderFrameHostImpl::OnDidFailProvisionalLoadWithError.
|
||||
// OnLoadStart/OnLoadEnd will not be called.
|
||||
OnLoadError(frame.get(), navigation_handle->GetURL(), error_code);
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::DidFailLoad(
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
const GURL& validated_url,
|
||||
int error_code) {
|
||||
// The navigation failed after commit. OnLoadStart was called so we also
|
||||
// call OnLoadEnd.
|
||||
auto frame = browser_info_->GetFrameForHost(render_frame_host);
|
||||
frame->RefreshAttributes();
|
||||
OnLoadError(frame, validated_url, error_code);
|
||||
OnLoadEnd(frame, validated_url, error_code);
|
||||
}
|
||||
|
||||
bool CefBrowserContentsDelegate::OnMessageReceived(
|
||||
const IPC::Message& message,
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
// Messages may arrive after a frame is detached. Ignore those messages.
|
||||
auto frame = browser_info_->GetFrameForHost(render_frame_host);
|
||||
if (frame) {
|
||||
return static_cast<CefFrameHostImpl*>(frame.get())
|
||||
->OnMessageReceived(message);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::TitleWasSet(content::NavigationEntry* entry) {
|
||||
// |entry| may be NULL if a popup is created via window.open and never
|
||||
// navigated.
|
||||
if (entry)
|
||||
OnTitleChange(entry->GetTitle());
|
||||
else if (web_contents())
|
||||
OnTitleChange(web_contents()->GetTitle());
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::PluginCrashed(
|
||||
const base::FilePath& plugin_path,
|
||||
base::ProcessId plugin_pid) {
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetRequestHandler()) {
|
||||
handler->OnPluginCrashed(browser(), plugin_path.value());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::DidUpdateFaviconURL(
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
const std::vector<blink::mojom::FaviconURLPtr>& candidates) {
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetDisplayHandler()) {
|
||||
std::vector<CefString> icon_urls;
|
||||
for (const auto& icon : candidates) {
|
||||
if (icon->icon_type == blink::mojom::FaviconIconType::kFavicon) {
|
||||
icon_urls.push_back(icon->icon_url.spec());
|
||||
}
|
||||
}
|
||||
if (!icon_urls.empty()) {
|
||||
handler->OnFaviconURLChange(browser(), icon_urls);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::OnWebContentsFocused(
|
||||
content::RenderWidgetHost* render_widget_host) {
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetFocusHandler()) {
|
||||
handler->OnGotFocus(browser());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::WebContentsDestroyed() {
|
||||
auto wc = web_contents();
|
||||
ObserveWebContents(nullptr);
|
||||
for (auto& observer : observers_) {
|
||||
observer.OnWebContentsDestroyed(wc);
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::Observe(
|
||||
int type,
|
||||
const content::NotificationSource& source,
|
||||
const content::NotificationDetails& details) {
|
||||
DCHECK(type == content::NOTIFICATION_LOAD_STOP ||
|
||||
type == content::NOTIFICATION_FOCUS_CHANGED_IN_PAGE);
|
||||
|
||||
if (type == content::NOTIFICATION_LOAD_STOP) {
|
||||
content::NavigationController* controller =
|
||||
content::Source<content::NavigationController>(source).ptr();
|
||||
OnTitleChange(controller->GetWebContents()->GetTitle());
|
||||
} else if (type == content::NOTIFICATION_FOCUS_CHANGED_IN_PAGE) {
|
||||
focus_on_editable_field_ = *content::Details<bool>(details).ptr();
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::OnLoadEnd(CefRefPtr<CefFrame> frame,
|
||||
const GURL& url,
|
||||
int http_status_code) {
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetLoadHandler()) {
|
||||
handler->OnLoadEnd(browser(), frame, http_status_code);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool CefBrowserContentsDelegate::OnSetFocus(cef_focus_source_t source) {
|
||||
// SetFocus() might be called while inside the OnSetFocus() callback. If
|
||||
// so, don't re-enter the callback.
|
||||
if (is_in_onsetfocus_)
|
||||
return true;
|
||||
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetFocusHandler()) {
|
||||
is_in_onsetfocus_ = true;
|
||||
bool handled = handler->OnSetFocus(browser(), source);
|
||||
is_in_onsetfocus_ = false;
|
||||
|
||||
return handled;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
CefRefPtr<CefClient> CefBrowserContentsDelegate::client() const {
|
||||
if (auto b = browser()) {
|
||||
return b->GetHost()->GetClient();
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CefRefPtr<CefBrowser> CefBrowserContentsDelegate::browser() const {
|
||||
return browser_info_->browser();
|
||||
}
|
||||
|
||||
CefBrowserPlatformDelegate* CefBrowserContentsDelegate::platform_delegate()
|
||||
const {
|
||||
auto browser = browser_info_->browser();
|
||||
if (browser)
|
||||
return browser->platform_delegate();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::OnAddressChange(const GURL& url) {
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetDisplayHandler()) {
|
||||
// On the handler of an address change.
|
||||
handler->OnAddressChange(browser(), browser_info_->GetMainFrame(),
|
||||
url.spec());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::OnLoadStart(
|
||||
CefRefPtr<CefFrame> frame,
|
||||
ui::PageTransition transition_type) {
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetLoadHandler()) {
|
||||
// On the handler that loading has started.
|
||||
handler->OnLoadStart(browser(), frame,
|
||||
static_cast<cef_transition_type_t>(transition_type));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::OnLoadError(CefRefPtr<CefFrame> frame,
|
||||
const GURL& url,
|
||||
int error_code) {
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetLoadHandler()) {
|
||||
auto navigation_lock = browser_info_->CreateNavigationLock();
|
||||
// On the handler that loading has failed.
|
||||
handler->OnLoadError(browser(), frame,
|
||||
static_cast<cef_errorcode_t>(error_code),
|
||||
net::ErrorToShortString(error_code), url.spec());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::OnTitleChange(const base::string16& title) {
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetDisplayHandler()) {
|
||||
handler->OnTitleChange(browser(), title);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::OnFullscreenModeChange(bool fullscreen) {
|
||||
if (fullscreen == is_fullscreen_)
|
||||
return;
|
||||
|
||||
is_fullscreen_ = fullscreen;
|
||||
OnStateChanged(State::kFullscreen);
|
||||
|
||||
if (auto c = client()) {
|
||||
if (auto handler = c->GetDisplayHandler()) {
|
||||
handler->OnFullscreenModeChange(browser(), fullscreen);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContentsDelegate::OnStateChanged(State state_changed) {
|
||||
for (auto& observer : observers_) {
|
||||
observer.OnStateChanged(state_changed);
|
||||
}
|
||||
}
|
198
libcef/browser/browser_contents_delegate.h
Normal file
198
libcef/browser/browser_contents_delegate.h
Normal file
@@ -0,0 +1,198 @@
|
||||
// Copyright 2020 The Chromium Embedded Framework Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef CEF_LIBCEF_BROWSER_BROWSER_CONTENTS_DELEGATE_H_
|
||||
#define CEF_LIBCEF_BROWSER_BROWSER_CONTENTS_DELEGATE_H_
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "libcef/browser/frame_host_impl.h"
|
||||
|
||||
#include "base/observer_list.h"
|
||||
#include "content/public/browser/notification_observer.h"
|
||||
#include "content/public/browser/notification_registrar.h"
|
||||
#include "content/public/browser/web_contents_delegate.h"
|
||||
#include "content/public/browser/web_contents_observer.h"
|
||||
|
||||
class CefBrowser;
|
||||
class CefBrowserInfo;
|
||||
class CefBrowserPlatformDelegate;
|
||||
class CefClient;
|
||||
|
||||
// Flags that represent which states have changed.
|
||||
enum class CefBrowserContentsState : uint8_t {
|
||||
kNone = 0,
|
||||
kNavigation = (1 << 0),
|
||||
kDocument = (1 << 1),
|
||||
kFullscreen = (1 << 2),
|
||||
kFocusedFrame = (1 << 3),
|
||||
};
|
||||
|
||||
constexpr inline CefBrowserContentsState operator&(
|
||||
CefBrowserContentsState lhs,
|
||||
CefBrowserContentsState rhs) {
|
||||
return static_cast<CefBrowserContentsState>(static_cast<int>(lhs) &
|
||||
static_cast<int>(rhs));
|
||||
}
|
||||
|
||||
constexpr inline CefBrowserContentsState operator|(
|
||||
CefBrowserContentsState lhs,
|
||||
CefBrowserContentsState rhs) {
|
||||
return static_cast<CefBrowserContentsState>(static_cast<int>(lhs) |
|
||||
static_cast<int>(rhs));
|
||||
}
|
||||
|
||||
// Tracks state and executes client callbacks based on WebContents callbacks.
|
||||
// Includes functionality that is shared by the alloy and chrome runtimes.
|
||||
// Only accessed on the UI thread.
|
||||
class CefBrowserContentsDelegate : public content::WebContentsDelegate,
|
||||
public content::WebContentsObserver,
|
||||
public content::NotificationObserver {
|
||||
public:
|
||||
using State = CefBrowserContentsState;
|
||||
|
||||
// Interface to implement for observers that wish to be informed of changes
|
||||
// to the delegate. All methods will be called on the UI thread.
|
||||
class Observer : public base::CheckedObserver {
|
||||
public:
|
||||
// Called after state has changed and before the associated CefClient
|
||||
// callback is executed.
|
||||
virtual void OnStateChanged(State state_changed) = 0;
|
||||
|
||||
// Called when the associated WebContents is destroyed.
|
||||
virtual void OnWebContentsDestroyed(content::WebContents* web_contents) = 0;
|
||||
|
||||
protected:
|
||||
~Observer() override {}
|
||||
};
|
||||
|
||||
explicit CefBrowserContentsDelegate(
|
||||
scoped_refptr<CefBrowserInfo> browser_info);
|
||||
|
||||
void ObserveWebContents(content::WebContents* new_contents);
|
||||
|
||||
// Manage observer objects. The observer must either outlive this object or
|
||||
// be removed before destruction.
|
||||
void AddObserver(Observer* observer);
|
||||
void RemoveObserver(Observer* observer);
|
||||
|
||||
// WebContentsDelegate methods:
|
||||
content::WebContents* OpenURLFromTab(
|
||||
content::WebContents* source,
|
||||
const content::OpenURLParams& params) override;
|
||||
void LoadingStateChanged(content::WebContents* source,
|
||||
bool to_different_document) override;
|
||||
void UpdateTargetURL(content::WebContents* source, const GURL& url) override;
|
||||
bool DidAddMessageToConsole(content::WebContents* source,
|
||||
blink::mojom::ConsoleMessageLevel log_level,
|
||||
const base::string16& message,
|
||||
int32_t line_no,
|
||||
const base::string16& source_id) override;
|
||||
void DidNavigateMainFramePostCommit(
|
||||
content::WebContents* web_contents) override;
|
||||
void EnterFullscreenModeForTab(
|
||||
content::RenderFrameHost* requesting_frame,
|
||||
const blink::mojom::FullscreenOptions& options) override;
|
||||
void ExitFullscreenModeForTab(content::WebContents* web_contents) override;
|
||||
content::KeyboardEventProcessingResult PreHandleKeyboardEvent(
|
||||
content::WebContents* source,
|
||||
const content::NativeWebKeyboardEvent& event) override;
|
||||
bool HandleKeyboardEvent(
|
||||
content::WebContents* source,
|
||||
const content::NativeWebKeyboardEvent& event) override;
|
||||
|
||||
// WebContentsObserver methods:
|
||||
void RenderFrameCreated(content::RenderFrameHost* render_frame_host) override;
|
||||
void RenderFrameHostChanged(content::RenderFrameHost* old_host,
|
||||
content::RenderFrameHost* new_host) override;
|
||||
void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) override;
|
||||
void RenderViewCreated(content::RenderViewHost* render_view_host) override;
|
||||
void RenderViewDeleted(content::RenderViewHost* render_view_host) override;
|
||||
void RenderViewReady() override;
|
||||
void RenderProcessGone(base::TerminationStatus status) override;
|
||||
void OnFrameFocused(content::RenderFrameHost* render_frame_host) override;
|
||||
void DocumentAvailableInMainFrame() override;
|
||||
void LoadProgressChanged(double progress) override;
|
||||
void DidStopLoading() override;
|
||||
void DidFinishNavigation(
|
||||
content::NavigationHandle* navigation_handle) override;
|
||||
void DidFailLoad(content::RenderFrameHost* render_frame_host,
|
||||
const GURL& validated_url,
|
||||
int error_code) override;
|
||||
bool OnMessageReceived(const IPC::Message& message,
|
||||
content::RenderFrameHost* render_frame_host) override;
|
||||
void TitleWasSet(content::NavigationEntry* entry) override;
|
||||
void PluginCrashed(const base::FilePath& plugin_path,
|
||||
base::ProcessId plugin_pid) override;
|
||||
void DidUpdateFaviconURL(
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
const std::vector<blink::mojom::FaviconURLPtr>& candidates) override;
|
||||
void OnWebContentsFocused(
|
||||
content::RenderWidgetHost* render_widget_host) override;
|
||||
void WebContentsDestroyed() override;
|
||||
|
||||
// NotificationObserver methods.
|
||||
void Observe(int type,
|
||||
const content::NotificationSource& source,
|
||||
const content::NotificationDetails& details) override;
|
||||
|
||||
// Accessors for state information. Changes will be signaled to
|
||||
// Observer::OnStateChanged.
|
||||
bool is_loading() const { return is_loading_; }
|
||||
bool can_go_back() const { return can_go_back_; }
|
||||
bool can_go_forward() const { return can_go_forward_; }
|
||||
bool has_document() const { return has_document_; }
|
||||
bool is_fullscreen() const { return is_fullscreen_; }
|
||||
CefRefPtr<CefFrameHostImpl> focused_frame() const { return focused_frame_; }
|
||||
|
||||
// Helpers for executing client callbacks.
|
||||
// TODO(cef): Make this private if/when possible.
|
||||
void OnLoadEnd(CefRefPtr<CefFrame> frame,
|
||||
const GURL& url,
|
||||
int http_status_code);
|
||||
bool OnSetFocus(cef_focus_source_t source);
|
||||
|
||||
private:
|
||||
CefRefPtr<CefClient> client() const;
|
||||
CefRefPtr<CefBrowser> browser() const;
|
||||
CefBrowserPlatformDelegate* platform_delegate() const;
|
||||
|
||||
// Helpers for executing client callbacks.
|
||||
void OnAddressChange(const GURL& url);
|
||||
void OnLoadStart(CefRefPtr<CefFrame> frame,
|
||||
ui::PageTransition transition_type);
|
||||
void OnLoadError(CefRefPtr<CefFrame> frame, const GURL& url, int error_code);
|
||||
void OnTitleChange(const base::string16& title);
|
||||
void OnFullscreenModeChange(bool fullscreen);
|
||||
|
||||
void OnStateChanged(State state_changed);
|
||||
|
||||
scoped_refptr<CefBrowserInfo> browser_info_;
|
||||
|
||||
bool is_loading_ = false;
|
||||
bool can_go_back_ = false;
|
||||
bool can_go_forward_ = false;
|
||||
bool has_document_ = false;
|
||||
bool is_fullscreen_ = false;
|
||||
|
||||
// The currently focused frame, or nullptr if the main frame is focused.
|
||||
CefRefPtr<CefFrameHostImpl> focused_frame_;
|
||||
|
||||
// True if currently in the OnSetFocus callback.
|
||||
bool is_in_onsetfocus_ = false;
|
||||
|
||||
// Observers that want to be notified of changes to this object.
|
||||
base::ObserverList<Observer> observers_;
|
||||
|
||||
// Used for managing notification subscriptions.
|
||||
std::unique_ptr<content::NotificationRegistrar> registrar_;
|
||||
|
||||
// True if the focus is currently on an editable field on the page.
|
||||
bool focus_on_editable_field_ = false;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(CefBrowserContentsDelegate);
|
||||
};
|
||||
|
||||
#endif // CEF_LIBCEF_BROWSER_BROWSER_CONTENTS_DELEGATE_H_
|
@@ -7,46 +7,20 @@
|
||||
#include <map>
|
||||
#include <utility>
|
||||
|
||||
#include "libcef/browser/content_browser_client.h"
|
||||
#include "libcef/browser/context.h"
|
||||
#include "libcef/browser/download_manager_delegate.h"
|
||||
#include "libcef/browser/extensions/extension_system.h"
|
||||
#include "libcef/browser/prefs/browser_prefs.h"
|
||||
#include "libcef/browser/iothread_state.h"
|
||||
#include "libcef/browser/media_router/media_router_manager.h"
|
||||
#include "libcef/browser/request_context_impl.h"
|
||||
#include "libcef/browser/ssl_host_state_delegate.h"
|
||||
#include "libcef/browser/thread_util.h"
|
||||
#include "libcef/common/cef_switches.h"
|
||||
#include "libcef/common/extensions/extensions_util.h"
|
||||
|
||||
#include "base/command_line.h"
|
||||
#include "base/files/file_util.h"
|
||||
#include "base/lazy_instance.h"
|
||||
#include "base/logging.h"
|
||||
#include "base/strings/string_util.h"
|
||||
#include "chrome/browser/font_family_cache.h"
|
||||
#include "chrome/browser/plugins/chrome_plugin_service_filter.h"
|
||||
#include "chrome/browser/ui/zoom/chrome_zoom_level_prefs.h"
|
||||
#include "chrome/common/pref_names.h"
|
||||
#include "components/content_settings/core/browser/host_content_settings_map.h"
|
||||
#include "components/guest_view/browser/guest_view_manager.h"
|
||||
#include "components/keyed_service/content/browser_context_dependency_manager.h"
|
||||
#include "components/keyed_service/core/simple_dependency_manager.h"
|
||||
#include "components/keyed_service/core/simple_key_map.h"
|
||||
#include "components/prefs/pref_service.h"
|
||||
#include "components/proxy_config/pref_proxy_config_tracker_impl.h"
|
||||
#include "components/user_prefs/user_prefs.h"
|
||||
#include "components/visitedlink/browser/visitedlink_event_listener.h"
|
||||
#include "components/visitedlink/browser/visitedlink_master.h"
|
||||
#include "components/zoom/zoom_event_manager.h"
|
||||
#include "content/public/browser/browser_context.h"
|
||||
#include "content/public/browser/browser_task_traits.h"
|
||||
#include "content/public/browser/browser_thread.h"
|
||||
#include "content/public/browser/download_manager.h"
|
||||
#include "content/public/browser/storage_partition.h"
|
||||
#include "extensions/browser/extension_protocols.h"
|
||||
#include "extensions/browser/process_manager.h"
|
||||
#include "extensions/common/constants.h"
|
||||
#include "net/proxy_resolution/proxy_config_service.h"
|
||||
#include "net/proxy_resolution/proxy_resolution_service.h"
|
||||
|
||||
using content::BrowserThread;
|
||||
|
||||
@@ -89,10 +63,10 @@ class ImplManager {
|
||||
return GetImplPos(impl) != all_.end();
|
||||
}
|
||||
|
||||
CefBrowserContext* GetImplForIDs(int render_process_id,
|
||||
int render_frame_id,
|
||||
int frame_tree_node_id,
|
||||
bool require_frame_match) {
|
||||
CefBrowserContext* GetImplFromIDs(int render_process_id,
|
||||
int render_frame_id,
|
||||
int frame_tree_node_id,
|
||||
bool require_frame_match) {
|
||||
CEF_REQUIRE_UIT();
|
||||
for (const auto& context : all_) {
|
||||
if (context->IsAssociatedContext(render_process_id, render_frame_id,
|
||||
@@ -104,15 +78,15 @@ class ImplManager {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CefBrowserContext* GetImplForContext(const content::BrowserContext* context) {
|
||||
CefBrowserContext* GetImplFromBrowserContext(
|
||||
const content::BrowserContext* context) {
|
||||
CEF_REQUIRE_UIT();
|
||||
if (!context)
|
||||
return nullptr;
|
||||
|
||||
Vector::iterator it = all_.begin();
|
||||
for (; it != all_.end(); ++it) {
|
||||
if (*it == context)
|
||||
return *it;
|
||||
for (const auto& bc : all_) {
|
||||
if (bc->AsBrowserContext() == context)
|
||||
return bc;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
@@ -121,11 +95,11 @@ class ImplManager {
|
||||
CEF_REQUIRE_UIT();
|
||||
DCHECK(!path.empty());
|
||||
DCHECK(IsValidImpl(impl));
|
||||
DCHECK(GetImplForPath(path) == nullptr);
|
||||
DCHECK(GetImplFromPath(path) == nullptr);
|
||||
map_.insert(std::make_pair(path, impl));
|
||||
}
|
||||
|
||||
CefBrowserContext* GetImplForPath(const base::FilePath& path) {
|
||||
CefBrowserContext* GetImplFromPath(const base::FilePath& path) {
|
||||
CEF_REQUIRE_UIT();
|
||||
DCHECK(!path.empty());
|
||||
PathMap::const_iterator it = map_.find(path);
|
||||
@@ -162,68 +136,48 @@ base::LazyInstance<ImplManager>::DestructorAtExit g_manager =
|
||||
base::LazyInstance<ImplManager>::Leaky g_manager = LAZY_INSTANCE_INITIALIZER;
|
||||
#endif
|
||||
|
||||
CefBrowserContext* GetSelf(base::WeakPtr<CefBrowserContext> self) {
|
||||
CEF_REQUIRE_UIT();
|
||||
return self.get();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
// Creates and manages VisitedLinkEventListener objects for each
|
||||
// CefBrowserContext sharing the same VisitedLinkMaster.
|
||||
class CefVisitedLinkListener : public visitedlink::VisitedLinkMaster::Listener {
|
||||
public:
|
||||
CefVisitedLinkListener() { DCHECK(listener_map_.empty()); }
|
||||
|
||||
void CreateListenerForContext(const CefBrowserContext* context) {
|
||||
CEF_REQUIRE_UIT();
|
||||
auto listener = std::make_unique<visitedlink::VisitedLinkEventListener>(
|
||||
const_cast<CefBrowserContext*>(context));
|
||||
listener_map_.insert(std::make_pair(context, std::move(listener)));
|
||||
}
|
||||
|
||||
void RemoveListenerForContext(const CefBrowserContext* context) {
|
||||
CEF_REQUIRE_UIT();
|
||||
ListenerMap::iterator it = listener_map_.find(context);
|
||||
DCHECK(it != listener_map_.end());
|
||||
listener_map_.erase(it);
|
||||
}
|
||||
|
||||
// visitedlink::VisitedLinkMaster::Listener methods.
|
||||
|
||||
void NewTable(base::ReadOnlySharedMemoryRegion* table_region) override {
|
||||
CEF_REQUIRE_UIT();
|
||||
ListenerMap::iterator it = listener_map_.begin();
|
||||
for (; it != listener_map_.end(); ++it)
|
||||
it->second->NewTable(table_region);
|
||||
}
|
||||
|
||||
void Add(visitedlink::VisitedLinkCommon::Fingerprint fingerprint) override {
|
||||
CEF_REQUIRE_UIT();
|
||||
ListenerMap::iterator it = listener_map_.begin();
|
||||
for (; it != listener_map_.end(); ++it)
|
||||
it->second->Add(fingerprint);
|
||||
}
|
||||
|
||||
void Reset(bool invalidate_hashes) override {
|
||||
CEF_REQUIRE_UIT();
|
||||
ListenerMap::iterator it = listener_map_.begin();
|
||||
for (; it != listener_map_.end(); ++it)
|
||||
it->second->Reset(invalidate_hashes);
|
||||
}
|
||||
|
||||
private:
|
||||
// Map of CefBrowserContext to the associated VisitedLinkEventListener.
|
||||
typedef std::map<const CefBrowserContext*,
|
||||
std::unique_ptr<visitedlink::VisitedLinkEventListener>>
|
||||
ListenerMap;
|
||||
ListenerMap listener_map_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(CefVisitedLinkListener);
|
||||
};
|
||||
|
||||
CefBrowserContext::CefBrowserContext(const CefRequestContextSettings& settings)
|
||||
: settings_(settings) {
|
||||
: settings_(settings), weak_ptr_factory_(this) {
|
||||
g_manager.Get().AddImpl(this);
|
||||
getter_ = base::BindRepeating(GetSelf, weak_ptr_factory_.GetWeakPtr());
|
||||
}
|
||||
|
||||
CefBrowserContext::~CefBrowserContext() {
|
||||
CEF_REQUIRE_UIT();
|
||||
#if DCHECK_IS_ON()
|
||||
DCHECK(is_shutdown_);
|
||||
#endif
|
||||
|
||||
if (iothread_state_) {
|
||||
// Destruction of the CefIOThreadState will trigger destruction of all
|
||||
// associated network requests.
|
||||
content::BrowserThread::DeleteSoon(content::BrowserThread::IO, FROM_HERE,
|
||||
iothread_state_.release());
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContext::Initialize() {
|
||||
cache_path_ = base::FilePath(CefString(&settings_.cache_path));
|
||||
|
||||
if (!cache_path_.empty())
|
||||
g_manager.Get().SetImplPath(this, cache_path_);
|
||||
|
||||
iothread_state_ = std::make_unique<CefIOThreadState>();
|
||||
}
|
||||
|
||||
void CefBrowserContext::Shutdown() {
|
||||
CEF_REQUIRE_UIT();
|
||||
|
||||
#if DCHECK_IS_ON()
|
||||
is_shutdown_ = true;
|
||||
#endif
|
||||
|
||||
// No CefRequestContext should be referencing this object any longer.
|
||||
DCHECK(request_context_set_.empty());
|
||||
@@ -231,135 +185,8 @@ CefBrowserContext::~CefBrowserContext() {
|
||||
// Unregister the context first to avoid re-entrancy during shutdown.
|
||||
g_manager.Get().RemoveImpl(this, cache_path_);
|
||||
|
||||
// Send notifications to clean up objects associated with this Profile.
|
||||
MaybeSendDestroyedNotification();
|
||||
|
||||
ChromePluginServiceFilter::GetInstance()->UnregisterProfile(this);
|
||||
|
||||
// Remove any BrowserContextKeyedServiceFactory associations. This must be
|
||||
// called before the ProxyService owned by CefBrowserContext is destroyed.
|
||||
// The SimpleDependencyManager should always be passed after the
|
||||
// BrowserContextDependencyManager. This is because the KeyedService instances
|
||||
// in the BrowserContextDependencyManager's dependency graph can depend on the
|
||||
// ones in the SimpleDependencyManager's graph.
|
||||
DependencyManager::PerformInterlockedTwoPhaseShutdown(
|
||||
BrowserContextDependencyManager::GetInstance(), this,
|
||||
SimpleDependencyManager::GetInstance(), key_.get());
|
||||
|
||||
key_.reset();
|
||||
SimpleKeyMap::GetInstance()->Dissociate(this);
|
||||
|
||||
// Shuts down the storage partitions associated with this browser context.
|
||||
// This must be called before the browser context is actually destroyed
|
||||
// and before a clean-up task for its corresponding IO thread residents
|
||||
// (e.g. ResourceContext) is posted, so that the classes that hung on
|
||||
// StoragePartition can have time to do necessary cleanups on IO thread.
|
||||
ShutdownStoragePartitions();
|
||||
|
||||
if (resource_context_.get()) {
|
||||
// Destruction of the ResourceContext will trigger destruction of all
|
||||
// associated network requests.
|
||||
content::BrowserThread::DeleteSoon(content::BrowserThread::IO, FROM_HERE,
|
||||
resource_context_.release());
|
||||
}
|
||||
|
||||
visitedlink_listener_->RemoveListenerForContext(this);
|
||||
|
||||
// The FontFamilyCache references the ProxyService so delete it before the
|
||||
// ProxyService is deleted.
|
||||
SetUserData(&kFontFamilyCacheKey, nullptr);
|
||||
|
||||
pref_proxy_config_tracker_->DetachFromPrefService();
|
||||
|
||||
if (host_content_settings_map_)
|
||||
host_content_settings_map_->ShutdownOnUIThread();
|
||||
|
||||
// Delete the download manager delegate here because otherwise we'll crash
|
||||
// when it's accessed from the content::BrowserContext destructor.
|
||||
if (download_manager_delegate_)
|
||||
download_manager_delegate_.reset(nullptr);
|
||||
}
|
||||
|
||||
void CefBrowserContext::Initialize() {
|
||||
CefContext* context = CefContext::Get();
|
||||
|
||||
cache_path_ = base::FilePath(CefString(&settings_.cache_path));
|
||||
if (!context->ValidateCachePath(cache_path_)) {
|
||||
// Reset to in-memory storage.
|
||||
CefString(&settings_.cache_path).clear();
|
||||
cache_path_ = base::FilePath();
|
||||
}
|
||||
|
||||
if (!cache_path_.empty())
|
||||
g_manager.Get().SetImplPath(this, cache_path_);
|
||||
|
||||
if (settings_.accept_language_list.length == 0) {
|
||||
// Use the global language list setting.
|
||||
CefString(&settings_.accept_language_list) =
|
||||
CefString(&context->settings().accept_language_list);
|
||||
}
|
||||
|
||||
if (!!settings_.persist_session_cookies) {
|
||||
set_should_persist_session_cookies(true);
|
||||
}
|
||||
|
||||
key_ = std::make_unique<ProfileKey>(GetPath());
|
||||
SimpleKeyMap::GetInstance()->Associate(this, key_.get());
|
||||
|
||||
// Initialize the PrefService object.
|
||||
pref_service_ = browser_prefs::CreatePrefService(
|
||||
this, cache_path_, !!settings_.persist_user_preferences);
|
||||
|
||||
content::BrowserContext::Initialize(this, GetPath());
|
||||
|
||||
resource_context_.reset(new CefResourceContext(IsOffTheRecord()));
|
||||
|
||||
// This must be called before creating any services to avoid hitting
|
||||
// DependencyManager::AssertContextWasntDestroyed when creating/destroying
|
||||
// multiple browser contexts (due to pointer address reuse).
|
||||
BrowserContextDependencyManager::GetInstance()->CreateBrowserContextServices(
|
||||
this);
|
||||
|
||||
const bool extensions_enabled = extensions::ExtensionsEnabled();
|
||||
if (extensions_enabled) {
|
||||
// Create the custom ExtensionSystem first because other KeyedServices
|
||||
// depend on it.
|
||||
extension_system_ = static_cast<extensions::CefExtensionSystem*>(
|
||||
extensions::ExtensionSystem::Get(this));
|
||||
extension_system_->InitForRegularProfile(true);
|
||||
|
||||
// Make sure the ProcessManager is created so that it receives extension
|
||||
// load notifications. This is necessary for the proper initialization of
|
||||
// background/event pages.
|
||||
extensions::ProcessManager::Get(this);
|
||||
}
|
||||
|
||||
// Initialize visited links management.
|
||||
base::FilePath visited_link_path;
|
||||
if (!cache_path_.empty())
|
||||
visited_link_path = cache_path_.Append(FILE_PATH_LITERAL("Visited Links"));
|
||||
visitedlink_listener_ = new CefVisitedLinkListener;
|
||||
visitedlink_master_.reset(new visitedlink::VisitedLinkMaster(
|
||||
visitedlink_listener_, this, !visited_link_path.empty(), false,
|
||||
visited_link_path, 0));
|
||||
visitedlink_listener_->CreateListenerForContext(this);
|
||||
visitedlink_master_->Init();
|
||||
|
||||
// Initialize proxy configuration tracker.
|
||||
pref_proxy_config_tracker_.reset(new PrefProxyConfigTrackerImpl(
|
||||
GetPrefs(), base::CreateSingleThreadTaskRunner({BrowserThread::IO})));
|
||||
|
||||
// Spell checking support and possibly other subsystems retrieve the
|
||||
// PrefService associated with a BrowserContext via UserPrefs::Get().
|
||||
PrefService* pref_service = GetPrefs();
|
||||
DCHECK(pref_service);
|
||||
user_prefs::UserPrefs::Set(this, pref_service);
|
||||
key_->SetPrefs(pref_service);
|
||||
|
||||
if (extensions_enabled)
|
||||
extension_system_->Init();
|
||||
|
||||
ChromePluginServiceFilter::GetInstance()->RegisterProfile(this);
|
||||
// Destroy objects that may hold references to the MediaRouter.
|
||||
media_router_manager_.reset();
|
||||
}
|
||||
|
||||
void CefBrowserContext::AddCefRequestContext(CefRequestContextImpl* context) {
|
||||
@@ -371,36 +198,35 @@ void CefBrowserContext::RemoveCefRequestContext(
|
||||
CefRequestContextImpl* context) {
|
||||
CEF_REQUIRE_UIT();
|
||||
|
||||
if (extensions::ExtensionsEnabled()) {
|
||||
extension_system()->OnRequestContextDeleted(context);
|
||||
}
|
||||
|
||||
request_context_set_.erase(context);
|
||||
|
||||
// Delete ourselves when the reference count reaches zero.
|
||||
if (request_context_set_.empty())
|
||||
if (request_context_set_.empty()) {
|
||||
Shutdown();
|
||||
delete this;
|
||||
}
|
||||
}
|
||||
|
||||
// static
|
||||
CefBrowserContext* CefBrowserContext::GetForCachePath(
|
||||
CefBrowserContext* CefBrowserContext::FromCachePath(
|
||||
const base::FilePath& cache_path) {
|
||||
return g_manager.Get().GetImplForPath(cache_path);
|
||||
return g_manager.Get().GetImplFromPath(cache_path);
|
||||
}
|
||||
|
||||
// static
|
||||
CefBrowserContext* CefBrowserContext::GetForIDs(int render_process_id,
|
||||
int render_frame_id,
|
||||
int frame_tree_node_id,
|
||||
bool require_frame_match) {
|
||||
return g_manager.Get().GetImplForIDs(render_process_id, render_frame_id,
|
||||
frame_tree_node_id, require_frame_match);
|
||||
CefBrowserContext* CefBrowserContext::FromIDs(int render_process_id,
|
||||
int render_frame_id,
|
||||
int frame_tree_node_id,
|
||||
bool require_frame_match) {
|
||||
return g_manager.Get().GetImplFromIDs(render_process_id, render_frame_id,
|
||||
frame_tree_node_id,
|
||||
require_frame_match);
|
||||
}
|
||||
|
||||
// static
|
||||
CefBrowserContext* CefBrowserContext::GetForContext(
|
||||
content::BrowserContext* context) {
|
||||
return g_manager.Get().GetImplForContext(context);
|
||||
CefBrowserContext* CefBrowserContext::FromBrowserContext(
|
||||
const content::BrowserContext* context) {
|
||||
return g_manager.Get().GetImplFromBrowserContext(context);
|
||||
}
|
||||
|
||||
// static
|
||||
@@ -408,189 +234,6 @@ std::vector<CefBrowserContext*> CefBrowserContext::GetAll() {
|
||||
return g_manager.Get().GetAllImpl();
|
||||
}
|
||||
|
||||
content::ResourceContext* CefBrowserContext::GetResourceContext() {
|
||||
return resource_context_.get();
|
||||
}
|
||||
|
||||
content::ClientHintsControllerDelegate*
|
||||
CefBrowserContext::GetClientHintsControllerDelegate() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void CefBrowserContext::SetCorsOriginAccessListForOrigin(
|
||||
const url::Origin& source_origin,
|
||||
std::vector<network::mojom::CorsOriginPatternPtr> allow_patterns,
|
||||
std::vector<network::mojom::CorsOriginPatternPtr> block_patterns,
|
||||
base::OnceClosure closure) {
|
||||
// This method is called for Extension support.
|
||||
base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, std::move(closure));
|
||||
}
|
||||
|
||||
ChromeZoomLevelPrefs* CefBrowserContext::GetZoomLevelPrefs() {
|
||||
return static_cast<ChromeZoomLevelPrefs*>(
|
||||
GetStoragePartition(this, nullptr)->GetZoomLevelDelegate());
|
||||
}
|
||||
|
||||
scoped_refptr<network::SharedURLLoaderFactory>
|
||||
CefBrowserContext::GetURLLoaderFactory() {
|
||||
return GetDefaultStoragePartition(this)
|
||||
->GetURLLoaderFactoryForBrowserProcess();
|
||||
}
|
||||
|
||||
base::FilePath CefBrowserContext::GetPath() {
|
||||
return cache_path_;
|
||||
}
|
||||
|
||||
base::FilePath CefBrowserContext::GetPath() const {
|
||||
return cache_path_;
|
||||
}
|
||||
|
||||
std::unique_ptr<content::ZoomLevelDelegate>
|
||||
CefBrowserContext::CreateZoomLevelDelegate(
|
||||
const base::FilePath& partition_path) {
|
||||
if (cache_path_.empty())
|
||||
return std::unique_ptr<content::ZoomLevelDelegate>();
|
||||
|
||||
return base::WrapUnique(new ChromeZoomLevelPrefs(
|
||||
GetPrefs(), cache_path_, partition_path,
|
||||
zoom::ZoomEventManager::GetForBrowserContext(this)->GetWeakPtr()));
|
||||
}
|
||||
|
||||
bool CefBrowserContext::IsOffTheRecord() const {
|
||||
// CEF contexts are never flagged as off-the-record. It causes problems
|
||||
// for the extension system.
|
||||
return false;
|
||||
}
|
||||
|
||||
content::DownloadManagerDelegate*
|
||||
CefBrowserContext::GetDownloadManagerDelegate() {
|
||||
if (!download_manager_delegate_) {
|
||||
content::DownloadManager* manager =
|
||||
BrowserContext::GetDownloadManager(this);
|
||||
download_manager_delegate_.reset(new CefDownloadManagerDelegate(manager));
|
||||
}
|
||||
return download_manager_delegate_.get();
|
||||
}
|
||||
|
||||
content::BrowserPluginGuestManager* CefBrowserContext::GetGuestManager() {
|
||||
DCHECK(extensions::ExtensionsEnabled());
|
||||
return guest_view::GuestViewManager::FromBrowserContext(this);
|
||||
}
|
||||
|
||||
storage::SpecialStoragePolicy* CefBrowserContext::GetSpecialStoragePolicy() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
content::PushMessagingService* CefBrowserContext::GetPushMessagingService() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
content::SSLHostStateDelegate* CefBrowserContext::GetSSLHostStateDelegate() {
|
||||
if (!ssl_host_state_delegate_.get())
|
||||
ssl_host_state_delegate_.reset(new CefSSLHostStateDelegate());
|
||||
return ssl_host_state_delegate_.get();
|
||||
}
|
||||
|
||||
content::PermissionControllerDelegate*
|
||||
CefBrowserContext::GetPermissionControllerDelegate() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
content::BackgroundFetchDelegate*
|
||||
CefBrowserContext::GetBackgroundFetchDelegate() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
content::BackgroundSyncController*
|
||||
CefBrowserContext::GetBackgroundSyncController() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
content::BrowsingDataRemoverDelegate*
|
||||
CefBrowserContext::GetBrowsingDataRemoverDelegate() {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
PrefService* CefBrowserContext::GetPrefs() {
|
||||
return pref_service_.get();
|
||||
}
|
||||
|
||||
const PrefService* CefBrowserContext::GetPrefs() const {
|
||||
return pref_service_.get();
|
||||
}
|
||||
|
||||
ProfileKey* CefBrowserContext::GetProfileKey() const {
|
||||
DCHECK(key_);
|
||||
return key_.get();
|
||||
}
|
||||
|
||||
policy::SchemaRegistryService*
|
||||
CefBrowserContext::GetPolicySchemaRegistryService() {
|
||||
NOTREACHED();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
policy::UserCloudPolicyManager* CefBrowserContext::GetUserCloudPolicyManager() {
|
||||
NOTREACHED();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
policy::ProfilePolicyConnector* CefBrowserContext::GetProfilePolicyConnector() {
|
||||
NOTREACHED();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const policy::ProfilePolicyConnector*
|
||||
CefBrowserContext::GetProfilePolicyConnector() const {
|
||||
NOTREACHED();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const CefRequestContextSettings& CefBrowserContext::GetSettings() const {
|
||||
return settings_;
|
||||
}
|
||||
|
||||
HostContentSettingsMap* CefBrowserContext::GetHostContentSettingsMap() {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
if (!host_content_settings_map_.get()) {
|
||||
// The |is_incognito_profile| and |is_guest_profile| arguments are
|
||||
// intentionally set to false as they otherwise limit the types of values
|
||||
// that can be stored in the settings map (for example, default values set
|
||||
// via DefaultProvider::SetWebsiteSetting).
|
||||
host_content_settings_map_ =
|
||||
new HostContentSettingsMap(GetPrefs(), false, false, false);
|
||||
|
||||
// Change the default plugin policy.
|
||||
const base::CommandLine* command_line =
|
||||
base::CommandLine::ForCurrentProcess();
|
||||
const std::string& plugin_policy_str =
|
||||
command_line->GetSwitchValueASCII(switches::kPluginPolicy);
|
||||
if (!plugin_policy_str.empty()) {
|
||||
ContentSetting plugin_policy = CONTENT_SETTING_ALLOW;
|
||||
if (base::LowerCaseEqualsASCII(plugin_policy_str,
|
||||
switches::kPluginPolicy_Detect)) {
|
||||
plugin_policy = CONTENT_SETTING_DETECT_IMPORTANT_CONTENT;
|
||||
} else if (base::LowerCaseEqualsASCII(plugin_policy_str,
|
||||
switches::kPluginPolicy_Block)) {
|
||||
plugin_policy = CONTENT_SETTING_BLOCK;
|
||||
}
|
||||
host_content_settings_map_->SetDefaultContentSetting(
|
||||
CONTENT_SETTINGS_TYPE_PLUGINS, plugin_policy);
|
||||
}
|
||||
}
|
||||
return host_content_settings_map_.get();
|
||||
}
|
||||
|
||||
void CefBrowserContext::AddVisitedURLs(const std::vector<GURL>& urls) {
|
||||
visitedlink_master_->AddURLs(urls);
|
||||
}
|
||||
|
||||
void CefBrowserContext::RebuildTable(
|
||||
const scoped_refptr<URLEnumerator>& enumerator) {
|
||||
// Called when visited links will not or cannot be loaded from disk.
|
||||
enumerator->OnComplete(true);
|
||||
}
|
||||
|
||||
void CefBrowserContext::OnRenderFrameCreated(
|
||||
CefRequestContextImpl* request_context,
|
||||
int render_process_id,
|
||||
@@ -611,15 +254,14 @@ void CefBrowserContext::OnRenderFrameCreated(
|
||||
handler_map_.AddHandler(render_process_id, render_frame_id,
|
||||
frame_tree_node_id, handler);
|
||||
|
||||
if (resource_context_) {
|
||||
if (iothread_state_) {
|
||||
// Using base::Unretained() is safe because both this callback and
|
||||
// possible deletion of |resource_context_| will execute on the IO thread,
|
||||
// possible deletion of |iothread_state_| will execute on the IO thread,
|
||||
// and this callback will be executed first.
|
||||
CEF_POST_TASK(CEF_IOT,
|
||||
base::Bind(&CefResourceContext::AddHandler,
|
||||
base::Unretained(resource_context_.get()),
|
||||
render_process_id, render_frame_id,
|
||||
frame_tree_node_id, handler));
|
||||
CEF_POST_TASK(CEF_IOT, base::Bind(&CefIOThreadState::AddHandler,
|
||||
base::Unretained(iothread_state_.get()),
|
||||
render_process_id, render_frame_id,
|
||||
frame_tree_node_id, handler));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -650,15 +292,14 @@ void CefBrowserContext::OnRenderFrameDeleted(
|
||||
handler_map_.RemoveHandler(render_process_id, render_frame_id,
|
||||
frame_tree_node_id);
|
||||
|
||||
if (resource_context_) {
|
||||
if (iothread_state_) {
|
||||
// Using base::Unretained() is safe because both this callback and
|
||||
// possible deletion of |resource_context_| will execute on the IO thread,
|
||||
// possible deletion of |iothread_state_| will execute on the IO thread,
|
||||
// and this callback will be executed first.
|
||||
CEF_POST_TASK(
|
||||
CEF_IOT,
|
||||
base::Bind(&CefResourceContext::RemoveHandler,
|
||||
base::Unretained(resource_context_.get()),
|
||||
render_process_id, render_frame_id, frame_tree_node_id));
|
||||
CEF_POST_TASK(CEF_IOT, base::Bind(&CefIOThreadState::RemoveHandler,
|
||||
base::Unretained(iothread_state_.get()),
|
||||
render_process_id, render_frame_id,
|
||||
frame_tree_node_id));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -760,48 +401,81 @@ void CefBrowserContext::ClearPluginLoadDecision(int render_process_id) {
|
||||
}
|
||||
|
||||
void CefBrowserContext::RegisterSchemeHandlerFactory(
|
||||
const std::string& scheme_name,
|
||||
const std::string& domain_name,
|
||||
const CefString& scheme_name,
|
||||
const CefString& domain_name,
|
||||
CefRefPtr<CefSchemeHandlerFactory> factory) {
|
||||
if (resource_context_) {
|
||||
if (iothread_state_) {
|
||||
// Using base::Unretained() is safe because both this callback and possible
|
||||
// deletion of |resource_context_| will execute on the IO thread, and this
|
||||
// deletion of |iothread_state_| will execute on the IO thread, and this
|
||||
// callback will be executed first.
|
||||
CEF_POST_TASK(CEF_IOT,
|
||||
base::Bind(&CefResourceContext::RegisterSchemeHandlerFactory,
|
||||
base::Unretained(resource_context_.get()),
|
||||
base::Bind(&CefIOThreadState::RegisterSchemeHandlerFactory,
|
||||
base::Unretained(iothread_state_.get()),
|
||||
scheme_name, domain_name, factory));
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContext::ClearSchemeHandlerFactories() {
|
||||
if (resource_context_) {
|
||||
if (iothread_state_) {
|
||||
// Using base::Unretained() is safe because both this callback and possible
|
||||
// deletion of |resource_context_| will execute on the IO thread, and this
|
||||
// deletion of |iothread_state_| will execute on the IO thread, and this
|
||||
// callback will be executed first.
|
||||
CEF_POST_TASK(CEF_IOT,
|
||||
base::Bind(&CefResourceContext::ClearSchemeHandlerFactories,
|
||||
base::Unretained(resource_context_.get())));
|
||||
base::Bind(&CefIOThreadState::ClearSchemeHandlerFactories,
|
||||
base::Unretained(iothread_state_.get())));
|
||||
}
|
||||
}
|
||||
|
||||
void CefBrowserContext::LoadExtension(
|
||||
const CefString& root_directory,
|
||||
CefRefPtr<CefDictionaryValue> manifest,
|
||||
CefRefPtr<CefExtensionHandler> handler,
|
||||
CefRefPtr<CefRequestContext> loader_context) {
|
||||
NOTIMPLEMENTED();
|
||||
if (handler)
|
||||
handler->OnExtensionLoadFailed(ERR_ABORTED);
|
||||
}
|
||||
|
||||
bool CefBrowserContext::GetExtensions(std::vector<CefString>& extension_ids) {
|
||||
NOTIMPLEMENTED();
|
||||
return false;
|
||||
}
|
||||
|
||||
CefRefPtr<CefExtension> CefBrowserContext::GetExtension(
|
||||
const CefString& extension_id) {
|
||||
NOTIMPLEMENTED();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool CefBrowserContext::UnloadExtension(const CefString& extension_id) {
|
||||
NOTIMPLEMENTED();
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CefBrowserContext::IsPrintPreviewSupported() const {
|
||||
return true;
|
||||
}
|
||||
|
||||
network::mojom::NetworkContext* CefBrowserContext::GetNetworkContext() {
|
||||
CEF_REQUIRE_UIT();
|
||||
return GetDefaultStoragePartition(this)->GetNetworkContext();
|
||||
auto browser_context = AsBrowserContext();
|
||||
return browser_context->GetDefaultStoragePartition(browser_context)
|
||||
->GetNetworkContext();
|
||||
}
|
||||
|
||||
DownloadPrefs* CefBrowserContext::GetDownloadPrefs() {
|
||||
CefMediaRouterManager* CefBrowserContext::GetMediaRouterManager() {
|
||||
CEF_REQUIRE_UIT();
|
||||
if (!download_prefs_) {
|
||||
download_prefs_.reset(new DownloadPrefs(this));
|
||||
if (!media_router_manager_) {
|
||||
media_router_manager_.reset(new CefMediaRouterManager(AsBrowserContext()));
|
||||
}
|
||||
return download_prefs_.get();
|
||||
return media_router_manager_.get();
|
||||
}
|
||||
|
||||
bool CefBrowserContext::IsPrintPreviewSupported() const {
|
||||
CefBrowserContext::CookieableSchemes CefBrowserContext::GetCookieableSchemes()
|
||||
const {
|
||||
CEF_REQUIRE_UIT();
|
||||
if (!extensions::PrintPreviewEnabled())
|
||||
return false;
|
||||
if (cookieable_schemes_)
|
||||
return cookieable_schemes_;
|
||||
|
||||
return !GetPrefs()->GetBoolean(prefs::kPrintPreviewDisabled);
|
||||
return CefCookieManagerImpl::GetGlobalCookieableSchemes();
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user