mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Compare commits
21 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
a98cd4cdc0 | ||
|
2e23cedb41 | ||
|
9e367620cb | ||
|
8d6f4e38bc | ||
|
6f1563868d | ||
|
b950336a00 | ||
|
ca0a1134ea | ||
|
e874c768d7 | ||
|
496c871d1e | ||
|
414dbb1674 | ||
|
9ea9e58074 | ||
|
518ad36ac8 | ||
|
a614475a0e | ||
|
117413e2a3 | ||
|
8bc83a973d | ||
|
fba80ef0f9 | ||
|
7bc9b87d5e | ||
|
85c53029bf | ||
|
5050c3f0af | ||
|
7add4a33d4 | ||
|
e8fe3cfeaf |
35
.github/ISSUE_TEMPLATE/bug_report.md
vendored
35
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -1,35 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug report
|
|
||||||
about: Create a report to help us improve
|
|
||||||
title: ''
|
|
||||||
labels: bug
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Describe the bug**
|
|
||||||
A clear and concise description of what the bug is.
|
|
||||||
|
|
||||||
**To Reproduce**
|
|
||||||
Steps to reproduce the behavior:
|
|
||||||
1. Go to '...'
|
|
||||||
2. Click on '....'
|
|
||||||
3. Scroll down to '....'
|
|
||||||
4. See error
|
|
||||||
|
|
||||||
**Expected behavior**
|
|
||||||
A clear and concise description of what you expected to happen and what happened instead.
|
|
||||||
|
|
||||||
**Screenshots**
|
|
||||||
If applicable, add screenshots to help explain your problem.
|
|
||||||
|
|
||||||
**Versions (please complete the following information):**
|
|
||||||
- OS: [e.g. Windows 10, MacOS 13.2, Ubuntu 22.10]
|
|
||||||
- CEF Version: [e.g. 111.2.2]
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
Does the problem reproduce with the cefclient or cefsimple sample application at the same version?
|
|
||||||
|
|
||||||
Does the problem reproduce with Google Chrome at the same version?
|
|
||||||
|
|
||||||
Add any other context about the problem here.
|
|
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
name: Feature request
|
|
||||||
about: Suggest an idea for this project
|
|
||||||
title: ''
|
|
||||||
labels: enhancement
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Is your feature request related to a problem? Please describe.**
|
|
||||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
||||||
|
|
||||||
**Describe the solution you'd like**
|
|
||||||
A clear and concise description of what you want to happen.
|
|
||||||
|
|
||||||
**Describe alternatives you've considered**
|
|
||||||
A clear and concise description of any alternative solutions or features you've considered.
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
Add any other context or screenshots about the feature request here.
|
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -51,5 +51,6 @@ Thumbs.db
|
|||||||
/binary_distrib
|
/binary_distrib
|
||||||
/docs
|
/docs
|
||||||
# CEF generated files
|
# CEF generated files
|
||||||
|
/include/cef_config.h
|
||||||
/include/cef_version.h
|
/include/cef_version.h
|
||||||
.ccls-cache/
|
.ccls-cache/
|
||||||
|
@@ -7,6 +7,6 @@
|
|||||||
# https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding
|
# https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding
|
||||||
|
|
||||||
{
|
{
|
||||||
'chromium_checkout': 'refs/tags/132.0.6834.161',
|
'chromium_checkout': 'refs/tags/108.0.5359.125',
|
||||||
'depot_tools_checkout': 'c9552ffad5'
|
'depot_tools_checkout': '64b6175557'
|
||||||
}
|
}
|
||||||
|
@@ -27,8 +27,17 @@
|
|||||||
# Files in the chromium/src directory that should be evaluated for changes.
|
# Files in the chromium/src directory that should be evaluated for changes.
|
||||||
# Similar changes may need to be applied to the CEF source code.
|
# Similar changes may need to be applied to the CEF source code.
|
||||||
'files': [
|
'files': [
|
||||||
'components/content_settings/core/common/content_settings_types.mojom',
|
'chrome/browser/browser_process.h',
|
||||||
'components/permissions/request_type.h',
|
'chrome/browser/extensions/api/tabs/tabs_api.*',
|
||||||
|
'chrome/browser/extensions/chrome_component_extension_resource_manager.*',
|
||||||
|
'chrome/browser/extensions/chrome_extension_web_contents_observer.*',
|
||||||
|
'chrome/browser/extensions/component_loader.*',
|
||||||
|
'chrome/browser/extensions/extension_service.*',
|
||||||
|
'chrome/browser/profiles/profile.h',
|
||||||
|
'chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.*',
|
||||||
|
'chrome/common/extensions/api/*_features.json',
|
||||||
|
'chrome/renderer/chrome_content_renderer_client.*',
|
||||||
|
'chrome/renderer/extensions/chrome_extensions_renderer_client.*',
|
||||||
'content/browser/renderer_host/render_widget_host_view_base.*',
|
'content/browser/renderer_host/render_widget_host_view_base.*',
|
||||||
'content/public/browser/content_browser_client.*',
|
'content/public/browser/content_browser_client.*',
|
||||||
'content/public/browser/render_widget_host_view.h',
|
'content/public/browser/render_widget_host_view.h',
|
||||||
|
@@ -12,8 +12,8 @@
|
|||||||
# distribution include:
|
# distribution include:
|
||||||
#
|
#
|
||||||
# Linux: Ninja, GCC 7.5.0+, Unix Makefiles
|
# Linux: Ninja, GCC 7.5.0+, Unix Makefiles
|
||||||
# MacOS: Ninja, Xcode 12.2 to 15.0
|
# MacOS: Ninja, Xcode 12.2 to 13.0
|
||||||
# Windows: Ninja, Visual Studio 2022
|
# Windows: Ninja, Visual Studio 2019+
|
||||||
#
|
#
|
||||||
# Ninja is a cross-platform open-source tool for running fast builds using
|
# 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
|
# pre-installed platform toolchains (GNU, clang, Xcode or MSVC). It can be
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
#
|
#
|
||||||
# The below requirements must be met to build this CEF binary distribution.
|
# The below requirements must be met to build this CEF binary distribution.
|
||||||
#
|
#
|
||||||
# - CMake version 3.21 or newer.
|
# - CMake version 3.19 or newer.
|
||||||
#
|
#
|
||||||
# - Linux requirements:
|
# - Linux requirements:
|
||||||
# Currently supported distributions include Debian 10 (Buster), Ubuntu 18
|
# Currently supported distributions include Debian 10 (Buster), Ubuntu 18
|
||||||
@@ -48,14 +48,15 @@
|
|||||||
# libgtk3.0-dev (required by the cefclient target only)
|
# libgtk3.0-dev (required by the cefclient target only)
|
||||||
#
|
#
|
||||||
# - MacOS requirements:
|
# - MacOS requirements:
|
||||||
# Xcode 12.2 to 15.4 building on MacOS 11.0 (Big Sur) or newer. The Xcode
|
# Xcode 12.2 to 13.4 building on MacOS 10.15.4 (Catalina) or newer. Only
|
||||||
# command-line tools must also be installed. Newer Xcode versions may not have
|
# 64-bit builds are supported. The Xcode command-line tools must also be
|
||||||
# been been tested and are not recommended.
|
# installed. Newer Xcode versions may not have been been tested and are not
|
||||||
|
# recommended.
|
||||||
#
|
#
|
||||||
# - Windows requirements:
|
# - Windows requirements:
|
||||||
# Visual Studio 2022 building on Windows 10 or newer. Windows 10/11 64-bit is
|
# Visual Studio 2019 or newer building on Windows 7 or newer. Windows 10
|
||||||
# recommended. Newer versions will likely also work but may not have been
|
# 64-bit is recommended. Newer versions will likely also work but may not have
|
||||||
# tested.
|
# been tested.
|
||||||
#
|
#
|
||||||
# BUILD EXAMPLES
|
# BUILD EXAMPLES
|
||||||
#
|
#
|
||||||
@@ -95,35 +96,35 @@
|
|||||||
# > ninja cefclient cefsimple
|
# > ninja cefclient cefsimple
|
||||||
#
|
#
|
||||||
# To perform a Windows build using a 32-bit CEF binary distribution:
|
# To perform a Windows build using a 32-bit CEF binary distribution:
|
||||||
# Using the Visual Studio 2022 IDE:
|
# Using the Visual Studio 2019 IDE:
|
||||||
# > cmake -G "Visual Studio 17" -A Win32 ..
|
# > cmake -G "Visual Studio 16" -A Win32 ..
|
||||||
# Open build\cef.sln in Visual Studio and select Build > Build Solution.
|
# Open build\cef.sln in Visual Studio and select Build > Build Solution.
|
||||||
#
|
#
|
||||||
# Using Ninja with Visual Studio 2022 command-line tools:
|
# Using Ninja with Visual Studio 2019 command-line tools:
|
||||||
# (this path may be different depending on your Visual Studio installation)
|
# (this path may be different depending on your Visual Studio installation)
|
||||||
# > "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvars32.bat"
|
# > "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars32.bat"
|
||||||
# > cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug ..
|
# > cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug ..
|
||||||
# > ninja cefclient cefsimple
|
# > ninja cefclient cefsimple
|
||||||
#
|
#
|
||||||
# To perform a Windows build using a 64-bit CEF binary distribution:
|
# To perform a Windows build using a 64-bit CEF binary distribution:
|
||||||
# Using the Visual Studio 2022 IDE:
|
# Using the Visual Studio 2019 IDE:
|
||||||
# > cmake -G "Visual Studio 17" -A x64 ..
|
# > cmake -G "Visual Studio 16" -A x64 ..
|
||||||
# Open build\cef.sln in Visual Studio and select Build > Build Solution.
|
# Open build\cef.sln in Visual Studio and select Build > Build Solution.
|
||||||
#
|
#
|
||||||
# Using Ninja with Visual Studio 2022 command-line tools:
|
# Using Ninja with Visual Studio 2019 command-line tools:
|
||||||
# (this path may be different depending on your Visual Studio installation)
|
# (this path may be different depending on your Visual Studio installation)
|
||||||
# > "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvars64.bat"
|
# > "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars64.bat"
|
||||||
# > cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug ..
|
# > cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug ..
|
||||||
# > ninja cefclient cefsimple
|
# > ninja cefclient cefsimple
|
||||||
#
|
#
|
||||||
# To perform a Windows build using an ARM64 CEF binary distribution:
|
# To perform a Windows build using an ARM64 CEF binary distribution:
|
||||||
# Using the Visual Studio 2022 IDE:
|
# Using the Visual Studio 2019 IDE:
|
||||||
# > cmake -G "Visual Studio 17" -A arm64 ..
|
# > cmake -G "Visual Studio 16" -A arm64 ..
|
||||||
# Open build\cef.sln in Visual Studio and select Build > Build Solution.
|
# Open build\cef.sln in Visual Studio and select Build > Build Solution.
|
||||||
#
|
#
|
||||||
# Using Ninja with Visual Studio 2022 command-line tools:
|
# Using Ninja with Visual Studio 2019 command-line tools:
|
||||||
# (this path may be different depending on your Visual Studio installation)
|
# (this path may be different depending on your Visual Studio installation)
|
||||||
# > "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvarsamd64_arm64.bat"
|
# > "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvarsamd64_arm64.bat"
|
||||||
# > cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug ..
|
# > cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug ..
|
||||||
# > ninja cefsimple
|
# > ninja cefsimple
|
||||||
|
|
||||||
@@ -131,8 +132,8 @@
|
|||||||
# Global setup.
|
# Global setup.
|
||||||
#
|
#
|
||||||
|
|
||||||
# For VS2022 and Xcode 12+ support.
|
# For VS2019 and Xcode 12+ support.
|
||||||
cmake_minimum_required(VERSION 3.21)
|
cmake_minimum_required(VERSION 3.19)
|
||||||
|
|
||||||
# Only generate Debug and Release configuration types.
|
# Only generate Debug and Release configuration types.
|
||||||
set(CMAKE_CONFIGURATION_TYPES Debug Release)
|
set(CMAKE_CONFIGURATION_TYPES Debug Release)
|
||||||
@@ -142,7 +143,7 @@ set(CMAKE_CONFIGURATION_TYPES Debug Release)
|
|||||||
project(cef)
|
project(cef)
|
||||||
|
|
||||||
# Use folders in the resulting project files.
|
# Use folders in the resulting project files.
|
||||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
set_property(GLOBAL PROPERTY OS_FOLDERS ON)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -239,18 +240,16 @@ PRINT_CEF_CONFIG()
|
|||||||
# Define the API documentation target.
|
# Define the API documentation target.
|
||||||
#
|
#
|
||||||
|
|
||||||
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile")
|
find_package(Doxygen)
|
||||||
find_package(Doxygen)
|
if(DOXYGEN_FOUND)
|
||||||
if(DOXYGEN_FOUND)
|
add_custom_target(apidocs ALL
|
||||||
add_custom_target(apidocs ALL
|
# Generate documentation in the docs/html directory.
|
||||||
# Generate documentation in the docs/html directory.
|
COMMAND "${DOXYGEN_EXECUTABLE}" Doxyfile
|
||||||
COMMAND "${DOXYGEN_EXECUTABLE}" Doxyfile
|
# Write a docs/index.html file.
|
||||||
# Write a docs/index.html file.
|
COMMAND ${CMAKE_COMMAND} -E echo "<html><head><meta http-equiv=\"refresh\" content=\"0;URL='html/index.html'\"/></head></html>" > docs/index.html
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo "<html><head><meta http-equiv=\"refresh\" content=\"0;URL='html/index.html'\"/></head></html>" > docs/index.html
|
WORKING_DIRECTORY "${CEF_ROOT}"
|
||||||
WORKING_DIRECTORY "${CEF_ROOT}"
|
COMMENT "Generating API documentation with Doxygen..."
|
||||||
COMMENT "Generating API documentation with Doxygen..."
|
VERBATIM )
|
||||||
VERBATIM )
|
else()
|
||||||
else()
|
message(WARNING "Doxygen must be installed to generate API documentation.")
|
||||||
message(WARNING "Doxygen must be installed to generate API documentation.")
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
@@ -9,7 +9,6 @@ The Chromium Embedded Framework (CEF) is a simple framework for embedding Chromi
|
|||||||
* Branches and Building - https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding
|
* Branches and Building - https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding
|
||||||
* Announcements - https://groups.google.com/forum/#!forum/cef-announce
|
* Announcements - https://groups.google.com/forum/#!forum/cef-announce
|
||||||
* Support Forum - http://www.magpcss.org/ceforum/
|
* Support Forum - http://www.magpcss.org/ceforum/
|
||||||
* Issue Tracker - https://github.com/chromiumembedded/cef/issues
|
|
||||||
* C++ API Docs - [Stable release docs](https://cef-builds.spotifycdn.com/docs/stable.html) / [Beta release docs](https://cef-builds.spotifycdn.com/docs/beta.html)
|
* C++ API Docs - [Stable release docs](https://cef-builds.spotifycdn.com/docs/stable.html) / [Beta release docs](https://cef-builds.spotifycdn.com/docs/beta.html)
|
||||||
* Downloads - https://cef-builds.spotifycdn.com/index.html
|
* Downloads - https://cef-builds.spotifycdn.com/index.html
|
||||||
* Donations - http://www.magpcss.org/ceforum/donate.php
|
* Donations - http://www.magpcss.org/ceforum/donate.php
|
||||||
@@ -49,7 +48,6 @@ The base CEF framework includes support for the C and C++ programming languages.
|
|||||||
* Delphi - https://github.com/hgourvest/dcef3
|
* Delphi - https://github.com/hgourvest/dcef3
|
||||||
* Delphi - https://github.com/salvadordf/CEF4Delphi
|
* Delphi - https://github.com/salvadordf/CEF4Delphi
|
||||||
* Go - https://github.com/CzarekTomczak/cef2go
|
* Go - https://github.com/CzarekTomczak/cef2go
|
||||||
* Go - https://github.com/energye/energy
|
|
||||||
* Java - https://bitbucket.org/chromiumembedded/java-cef
|
* Java - https://bitbucket.org/chromiumembedded/java-cef
|
||||||
* Python - http://code.google.com/p/cefpython/
|
* Python - http://code.google.com/p/cefpython/
|
||||||
|
|
||||||
@@ -59,7 +57,7 @@ If you're the maintainer of a project not listed above and would like your proje
|
|||||||
|
|
||||||
CEF is still very much a work in progress. Some ways that you can help out:
|
CEF is still very much a work in progress. Some ways that you can help out:
|
||||||
|
|
||||||
\- Vote for issues in the [CEF issue tracker](https://github.com/chromiumembedded/cef/issues) that are important to you. This helps with development prioritization.
|
\- Vote for issues in the [CEF issue tracker](https://bitbucket.org/chromiumembedded/cef/issues?status=new&status=open) that are important to you. This helps with development prioritization.
|
||||||
|
|
||||||
\- Report any bugs that you find or feature requests that are important to you. Make sure to first search for existing issues before creating new ones. Please use the [CEF Forum](http://magpcss.org/ceforum) and not the issue tracker for usage questions. Each CEF issue should:
|
\- Report any bugs that you find or feature requests that are important to you. Make sure to first search for existing issues before creating new ones. Please use the [CEF Forum](http://magpcss.org/ceforum) and not the issue tracker for usage questions. Each CEF issue should:
|
||||||
|
|
||||||
@@ -70,7 +68,7 @@ CEF is still very much a work in progress. Some ways that you can help out:
|
|||||||
|
|
||||||
\- Write unit tests for new or existing functionality.
|
\- Write unit tests for new or existing functionality.
|
||||||
|
|
||||||
\- Pull requests and patches are welcome. View open issues in the [CEF issue tracker](https://github.com/chromiumembedded/cef/issues) or search for TODO(cef) in the source code for ideas.
|
\- Pull requests and patches are welcome. View open issues in the [CEF issue tracker](https://bitbucket.org/chromiumembedded/cef/issues?status=new&status=open) or search for TODO(cef) in the source code for ideas.
|
||||||
|
|
||||||
If you would like to contribute source code changes to CEF please follow the below guidelines:
|
If you would like to contribute source code changes to CEF please follow the below guidelines:
|
||||||
|
|
||||||
|
@@ -1,8 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
# Allow access from targets in other packages.
|
|
||||||
package(default_visibility = [
|
|
||||||
"//visibility:public",
|
|
||||||
])
|
|
@@ -1,65 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
def _copy_filegroups_impl(ctx):
|
|
||||||
inputs = ctx.files.filegroups
|
|
||||||
remove_prefixes = ctx.attr.remove_prefixes
|
|
||||||
add_prefix = ctx.attr.add_prefix
|
|
||||||
|
|
||||||
outputs = []
|
|
||||||
for f in inputs:
|
|
||||||
relative_path = f.path
|
|
||||||
if relative_path.startswith("external/"):
|
|
||||||
# Remove the "external/<repo>" component, if any.
|
|
||||||
relative_path = "/".join(relative_path.split("/")[2:])
|
|
||||||
|
|
||||||
for prefix in remove_prefixes:
|
|
||||||
# Add trailing forward slash if necessary.
|
|
||||||
if prefix[-1] != "/":
|
|
||||||
prefix += "/"
|
|
||||||
if len(prefix) > 0 and relative_path.startswith(prefix):
|
|
||||||
relative_path = relative_path[len(prefix):]
|
|
||||||
break
|
|
||||||
|
|
||||||
if len(add_prefix) > 0:
|
|
||||||
# Add trailing forward slash if necessary.
|
|
||||||
if add_prefix[-1] != "/":
|
|
||||||
add_prefix += "/"
|
|
||||||
relative_path = add_prefix + relative_path
|
|
||||||
|
|
||||||
out = ctx.actions.declare_file(relative_path)
|
|
||||||
outputs.append(out)
|
|
||||||
|
|
||||||
if relative_path.find("/") > 0:
|
|
||||||
command="mkdir -p $(dirname {}) && cp {} {}".format(out.path, f.path, out.path)
|
|
||||||
else:
|
|
||||||
command="cp {} {}".format(f.path, out.path)
|
|
||||||
|
|
||||||
ctx.actions.run_shell(
|
|
||||||
outputs=[out],
|
|
||||||
inputs=depset([f]),
|
|
||||||
command=command
|
|
||||||
)
|
|
||||||
|
|
||||||
# Small sanity check
|
|
||||||
if len(inputs) != len(outputs):
|
|
||||||
fail("Output count should be 1-to-1 with input count.")
|
|
||||||
|
|
||||||
return DefaultInfo(
|
|
||||||
files=depset(outputs),
|
|
||||||
runfiles=ctx.runfiles(files=outputs)
|
|
||||||
)
|
|
||||||
|
|
||||||
# Allows the file contents of |filegroups| to be copied next to a cc_binary
|
|
||||||
# target via the |data| attribute.
|
|
||||||
# Implementation based on https://stackoverflow.com/a/57983629
|
|
||||||
copy_filegroups = rule(
|
|
||||||
implementation=_copy_filegroups_impl,
|
|
||||||
attrs={
|
|
||||||
"filegroups": attr.label_list(),
|
|
||||||
"remove_prefixes": attr.string_list(default = []),
|
|
||||||
"add_prefix": attr.string(default = ""),
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
@@ -1,90 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
load("//bazel/win:variables.bzl",
|
|
||||||
WIN_COMMON_COPTS="COMMON_COPTS",
|
|
||||||
WIN_COMMON_COPTS_RELEASE="COMMON_COPTS_RELEASE",
|
|
||||||
WIN_COMMON_COPTS_DEBUG="COMMON_COPTS_DEBUG",
|
|
||||||
WIN_COMMON_DEFINES="COMMON_DEFINES",
|
|
||||||
WIN_COMMON_DEFINES_RELEASE="COMMON_DEFINES_RELEASE",
|
|
||||||
WIN_COMMON_DEFINES_DEBUG="COMMON_DEFINES_DEBUG")
|
|
||||||
load("//bazel/linux:variables.bzl",
|
|
||||||
LINUX_COMMON_COPTS="COMMON_COPTS",
|
|
||||||
LINUX_COMMON_COPTS_RELEASE="COMMON_COPTS_RELEASE",
|
|
||||||
LINUX_COMMON_COPTS_DEBUG="COMMON_COPTS_DEBUG",
|
|
||||||
LINUX_COMMON_DEFINES="COMMON_DEFINES",
|
|
||||||
LINUX_COMMON_DEFINES_RELEASE="COMMON_DEFINES_RELEASE",
|
|
||||||
LINUX_COMMON_DEFINES_DEBUG="COMMON_DEFINES_DEBUG")
|
|
||||||
load("//bazel/mac:variables.bzl",
|
|
||||||
MAC_COMMON_COPTS="COMMON_COPTS",
|
|
||||||
MAC_COMMON_COPTS_RELEASE="COMMON_COPTS_RELEASE",
|
|
||||||
MAC_COMMON_COPTS_DEBUG="COMMON_COPTS_DEBUG")
|
|
||||||
load("@rules_cc//cc:defs.bzl", "cc_library", "objc_library")
|
|
||||||
|
|
||||||
def declare_cc_library(copts=[], local_defines=[], **kwargs):
|
|
||||||
"""
|
|
||||||
cc_library wrapper that applies common copts and local_defines.
|
|
||||||
"""
|
|
||||||
# NOTE: objc_library does not support local_defines on MacOS, so on
|
|
||||||
# that platform we put the defines in copts instead.
|
|
||||||
cc_library(
|
|
||||||
copts = select({
|
|
||||||
"@platforms//os:windows": WIN_COMMON_COPTS,
|
|
||||||
"@platforms//os:linux": LINUX_COMMON_COPTS,
|
|
||||||
"@platforms//os:macos": MAC_COMMON_COPTS,
|
|
||||||
"//conditions:default": None,
|
|
||||||
}) + select({
|
|
||||||
"@cef//:windows_opt": WIN_COMMON_COPTS_RELEASE,
|
|
||||||
"@cef//:windows_dbg": WIN_COMMON_COPTS_DEBUG,
|
|
||||||
"@cef//:windows_fastbuild": WIN_COMMON_COPTS_RELEASE,
|
|
||||||
"@cef//:linux_opt": LINUX_COMMON_COPTS_RELEASE,
|
|
||||||
"@cef//:linux_dbg": LINUX_COMMON_COPTS_DEBUG,
|
|
||||||
"@cef//:linux_fastbuild": LINUX_COMMON_COPTS_RELEASE,
|
|
||||||
"@cef//:macos_opt": MAC_COMMON_COPTS_RELEASE,
|
|
||||||
"@cef//:macos_dbg": MAC_COMMON_COPTS_DEBUG,
|
|
||||||
"@cef//:macos_fastbuild": MAC_COMMON_COPTS_RELEASE,
|
|
||||||
"//conditions:default": None,
|
|
||||||
}) + copts,
|
|
||||||
local_defines = select({
|
|
||||||
"@platforms//os:windows": WIN_COMMON_DEFINES,
|
|
||||||
"@platforms//os:linux": LINUX_COMMON_DEFINES,
|
|
||||||
"//conditions:default": None,
|
|
||||||
}) + select({
|
|
||||||
"@cef//:windows_opt": WIN_COMMON_DEFINES_RELEASE,
|
|
||||||
"@cef//:windows_dbg": WIN_COMMON_DEFINES_DEBUG,
|
|
||||||
"@cef//:windows_fastbuild": WIN_COMMON_DEFINES_RELEASE,
|
|
||||||
"@cef//:linux_opt": LINUX_COMMON_DEFINES_RELEASE,
|
|
||||||
"@cef//:linux_dbg": LINUX_COMMON_DEFINES_DEBUG,
|
|
||||||
"@cef//:linux_fastbuild": LINUX_COMMON_DEFINES_RELEASE,
|
|
||||||
"//conditions:default": None,
|
|
||||||
}) + local_defines,
|
|
||||||
**kwargs
|
|
||||||
)
|
|
||||||
|
|
||||||
def declare_objc_library(copts=[], **kwargs):
|
|
||||||
"""
|
|
||||||
objc_library wrapper that applies common copts.
|
|
||||||
"""
|
|
||||||
# NOTE: objc_library does not support local_defines on MacOS, so on
|
|
||||||
# that platform we put the defines in copts instead.
|
|
||||||
objc_library(
|
|
||||||
copts = select({
|
|
||||||
"@platforms//os:windows": WIN_COMMON_COPTS,
|
|
||||||
"@platforms//os:linux": LINUX_COMMON_COPTS,
|
|
||||||
"@platforms//os:macos": MAC_COMMON_COPTS,
|
|
||||||
"//conditions:default": None,
|
|
||||||
}) + select({
|
|
||||||
"@cef//:windows_opt": WIN_COMMON_COPTS_RELEASE,
|
|
||||||
"@cef//:windows_dbg": WIN_COMMON_COPTS_DEBUG,
|
|
||||||
"@cef//:windows_fastbuild": WIN_COMMON_COPTS_RELEASE,
|
|
||||||
"@cef//:linux_opt": LINUX_COMMON_COPTS_RELEASE,
|
|
||||||
"@cef//:linux_dbg": LINUX_COMMON_COPTS_DEBUG,
|
|
||||||
"@cef//:linux_fastbuild": LINUX_COMMON_COPTS_RELEASE,
|
|
||||||
"@cef//:macos_opt": MAC_COMMON_COPTS_RELEASE,
|
|
||||||
"@cef//:macos_dbg": MAC_COMMON_COPTS_DEBUG,
|
|
||||||
"@cef//:macos_fastbuild": MAC_COMMON_COPTS_RELEASE,
|
|
||||||
"//conditions:default": None,
|
|
||||||
}) + copts,
|
|
||||||
**kwargs
|
|
||||||
)
|
|
@@ -1,8 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
# Allow access from targets in other packages.
|
|
||||||
package(default_visibility = [
|
|
||||||
"//visibility:public",
|
|
||||||
])
|
|
@@ -1,63 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
load("//bazel:copy_filegroups.bzl", "copy_filegroups")
|
|
||||||
load("//bazel/linux:fix_rpath.bzl", "fix_rpath")
|
|
||||||
load("//bazel/linux:variables.bzl",
|
|
||||||
"COMMON_LINKOPTS",
|
|
||||||
"COMMON_COPTS", "COMMON_COPTS_RELEASE", "COMMON_COPTS_DEBUG",
|
|
||||||
"COMMON_DEFINES", "COMMON_DEFINES_RELEASE", "COMMON_DEFINES_DEBUG")
|
|
||||||
load("@rules_cc//cc:defs.bzl", "cc_binary")
|
|
||||||
|
|
||||||
def declare_exe(name, srcs=[], deps=[], linkopts=[], copts=[], local_defines=[], data=[], **kwargs):
|
|
||||||
# Copy SOs and resources into the current project.
|
|
||||||
copy_target = "{}_sos_and_resources".format(name)
|
|
||||||
copy_filegroups(
|
|
||||||
name = copy_target,
|
|
||||||
filegroups = [
|
|
||||||
"@cef//:sos",
|
|
||||||
"@cef//:resources",
|
|
||||||
],
|
|
||||||
remove_prefixes = [
|
|
||||||
"Debug",
|
|
||||||
"Release",
|
|
||||||
"Resources",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
# Executable target.
|
|
||||||
binary_target = "{}_incorrect_rpath".format(name)
|
|
||||||
cc_binary(
|
|
||||||
name = binary_target,
|
|
||||||
srcs = srcs,
|
|
||||||
deps = [
|
|
||||||
"@cef//:cef_wrapper",
|
|
||||||
"@cef//:cef",
|
|
||||||
"@cef//:cef_sandbox",
|
|
||||||
] + deps,
|
|
||||||
linkopts = COMMON_LINKOPTS + linkopts,
|
|
||||||
copts = COMMON_COPTS + select({
|
|
||||||
"@cef//:linux_dbg": COMMON_COPTS_DEBUG,
|
|
||||||
"//conditions:default": COMMON_COPTS_RELEASE,
|
|
||||||
}) + copts,
|
|
||||||
local_defines = COMMON_DEFINES + select({
|
|
||||||
"@cef//:linux_dbg": COMMON_DEFINES_DEBUG,
|
|
||||||
"//conditions:default": COMMON_DEFINES_RELEASE,
|
|
||||||
}) + local_defines,
|
|
||||||
data = [
|
|
||||||
":{}".format(copy_target),
|
|
||||||
] + data,
|
|
||||||
target_compatible_with = ["@platforms//os:linux"],
|
|
||||||
**kwargs
|
|
||||||
)
|
|
||||||
|
|
||||||
# Set rpath to $ORIGIN so that libraries can be loaded from next to the
|
|
||||||
# executable.
|
|
||||||
fix_rpath(
|
|
||||||
name = "{}_fixed_rpath".format(name),
|
|
||||||
src = ":{}".format(binary_target),
|
|
||||||
out = name,
|
|
||||||
target_compatible_with = ["@platforms//os:linux"],
|
|
||||||
)
|
|
||||||
|
|
@@ -1,41 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
def _fix_rpath_impl(ctx):
|
|
||||||
inputs = ctx.runfiles(files = [ctx.file.src])
|
|
||||||
# Bring over 'data' dependencies from the input.
|
|
||||||
inputs = inputs.merge_all([ctx.attr.src[DefaultInfo].default_runfiles])
|
|
||||||
|
|
||||||
src = ctx.file.src.path
|
|
||||||
out = ctx.outputs.out.path
|
|
||||||
|
|
||||||
ctx.actions.run_shell(
|
|
||||||
outputs = [ctx.outputs.out],
|
|
||||||
inputs = inputs.files,
|
|
||||||
arguments = [src, out],
|
|
||||||
command = "cp $1 $2 && " +
|
|
||||||
"chmod +w $2 && " +
|
|
||||||
"patchelf --remove-rpath $2 && " +
|
|
||||||
"patchelf --set-rpath '$ORIGIN' $2"
|
|
||||||
)
|
|
||||||
|
|
||||||
return [DefaultInfo(files = depset([ctx.outputs.out]))]
|
|
||||||
|
|
||||||
# Set rpath to $ORIGIN so that libraries can be loaded from next to the
|
|
||||||
# executable. The result can be confirmed with:
|
|
||||||
# $ objdump -x ./bazel-bin/path/to/binary | grep 'R.*PATH'
|
|
||||||
#
|
|
||||||
# Alternatively, define a custom CC toolchain that overrides
|
|
||||||
# 'runtime_library_search_directories'.
|
|
||||||
#
|
|
||||||
# This rule requires preinstallation of the patchelf package:
|
|
||||||
# $ sudo apt install patchelf
|
|
||||||
fix_rpath = rule(
|
|
||||||
implementation = _fix_rpath_impl,
|
|
||||||
attrs = {
|
|
||||||
"src": attr.label(allow_single_file = True),
|
|
||||||
"out": attr.output(mandatory = True),
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
@@ -1,7 +0,0 @@
|
|||||||
package(default_visibility = ["//visibility:public"])
|
|
||||||
|
|
||||||
exports_files([
|
|
||||||
"pkg_config.bzl",
|
|
||||||
"BUILD.tmpl",
|
|
||||||
])
|
|
||||||
|
|
@@ -1,32 +0,0 @@
|
|||||||
# vi: ft=bzl
|
|
||||||
package(default_visibility = ["//visibility:private"])
|
|
||||||
|
|
||||||
_imports = [p[:len(p)-2] for p in glob(["{}/**/*.a".format(d) for d in [%{deps}]])]
|
|
||||||
[cc_import(
|
|
||||||
name = i.replace("/", "_"),
|
|
||||||
hdrs = glob([%{hdrs}]),
|
|
||||||
# TODO: library extension for platform.
|
|
||||||
static_library = "{}.a".format(i),
|
|
||||||
shared_library = "{}.dylib".format(i),
|
|
||||||
) for i in _imports]
|
|
||||||
|
|
||||||
cc_library(
|
|
||||||
name = "internal_lib",
|
|
||||||
hdrs = glob([%{hdrs}]),
|
|
||||||
copts = [%{copts}],
|
|
||||||
includes = [%{includes}],
|
|
||||||
linkopts = [%{linkopts}],
|
|
||||||
deps = [(":" + i.replace("/", "_")) for i in _imports],
|
|
||||||
)
|
|
||||||
|
|
||||||
cc_library(
|
|
||||||
name = "lib",
|
|
||||||
hdrs = glob(["%{strip_include}/**/*.h"]),
|
|
||||||
copts = [%{extra_copts}],
|
|
||||||
linkopts = [%{extra_linkopts}],
|
|
||||||
deps = [":internal_lib"] + [%{extra_deps}],
|
|
||||||
visibility = ["//visibility:public"],
|
|
||||||
strip_include_prefix = "%{strip_include}",
|
|
||||||
include_prefix = "%{include_prefix}",
|
|
||||||
)
|
|
||||||
|
|
@@ -1,11 +0,0 @@
|
|||||||
Name: pkg_config
|
|
||||||
URL: https://github.com/cherrry/bazel_pkg_config
|
|
||||||
Version: 284219a
|
|
||||||
|
|
||||||
Description:
|
|
||||||
Bazel rules for pkg-config tools.
|
|
||||||
|
|
||||||
CEF-specific changes:
|
|
||||||
- Fix failure with duplicate symlinks.
|
|
||||||
- Remove `--static` flag from pkg-config invocation.
|
|
||||||
|
|
@@ -1,2 +0,0 @@
|
|||||||
workspace(name = "pkg_config")
|
|
||||||
|
|
@@ -1,194 +0,0 @@
|
|||||||
def _success(value):
|
|
||||||
return struct(error = None, value = value)
|
|
||||||
|
|
||||||
def _error(message):
|
|
||||||
return struct(error = message, value = None)
|
|
||||||
|
|
||||||
def _split(result, delimeter = " "):
|
|
||||||
if result.error != None:
|
|
||||||
return result
|
|
||||||
return _success([arg for arg in result.value.strip().split(delimeter) if arg])
|
|
||||||
|
|
||||||
def _find_binary(ctx, binary_name):
|
|
||||||
binary = ctx.which(binary_name)
|
|
||||||
if binary == None:
|
|
||||||
return _error("Unable to find binary: {}".format(binary_name))
|
|
||||||
return _success(binary)
|
|
||||||
|
|
||||||
def _execute(ctx, binary, args):
|
|
||||||
result = ctx.execute([binary] + args)
|
|
||||||
if result.return_code != 0:
|
|
||||||
return _error("Failed execute {} {}".format(binary, args))
|
|
||||||
return _success(result.stdout)
|
|
||||||
|
|
||||||
def _pkg_config(ctx, pkg_config, pkg_name, args):
|
|
||||||
return _execute(ctx, pkg_config, [pkg_name] + args)
|
|
||||||
|
|
||||||
def _check(ctx, pkg_config, pkg_name):
|
|
||||||
exist = _pkg_config(ctx, pkg_config, pkg_name, ["--exists"])
|
|
||||||
if exist.error != None:
|
|
||||||
return _error("Package {} does not exist".format(pkg_name))
|
|
||||||
|
|
||||||
if ctx.attr.version != "":
|
|
||||||
version = _pkg_config(ctx, pkg_config, pkg_name, ["--exact-version", ctx.attr.version])
|
|
||||||
if version.error != None:
|
|
||||||
return _error("Require {} version = {}".format(pkg_name, ctx.attr.version))
|
|
||||||
|
|
||||||
if ctx.attr.min_version != "":
|
|
||||||
version = _pkg_config(ctx, pkg_config, pkg_name, ["--atleast-version", ctx.attr.min_version])
|
|
||||||
if version.error != None:
|
|
||||||
return _error("Require {} version >= {}".format(pkg_name, ctx.attr.min_version))
|
|
||||||
|
|
||||||
if ctx.attr.max_version != "":
|
|
||||||
version = _pkg_config(ctx, pkg_config, pkg_name, ["--max-version", ctx.attr.max_version])
|
|
||||||
if version.error != None:
|
|
||||||
return _error("Require {} version <= {}".format(pkg_name, ctx.attr.max_version))
|
|
||||||
|
|
||||||
return _success(None)
|
|
||||||
|
|
||||||
def _extract_prefix(flags, prefix, strip = True):
|
|
||||||
stripped, remain = [], []
|
|
||||||
for arg in flags:
|
|
||||||
if arg.startswith(prefix):
|
|
||||||
if strip:
|
|
||||||
stripped += [arg[len(prefix):]]
|
|
||||||
else:
|
|
||||||
stripped += [arg]
|
|
||||||
else:
|
|
||||||
remain += [arg]
|
|
||||||
return stripped, remain
|
|
||||||
|
|
||||||
def _includes(ctx, pkg_config, pkg_name):
|
|
||||||
includes = _split(_pkg_config(ctx, pkg_config, pkg_name, ["--cflags-only-I"]))
|
|
||||||
if includes.error != None:
|
|
||||||
return includes
|
|
||||||
includes, unused = _extract_prefix(includes.value, "-I", strip = True)
|
|
||||||
return _success(includes)
|
|
||||||
|
|
||||||
def _copts(ctx, pkg_config, pkg_name):
|
|
||||||
return _split(_pkg_config(ctx, pkg_config, pkg_name, [
|
|
||||||
"--cflags-only-other",
|
|
||||||
"--libs-only-L",
|
|
||||||
]))
|
|
||||||
|
|
||||||
def _linkopts(ctx, pkg_config, pkg_name):
|
|
||||||
return _split(_pkg_config(ctx, pkg_config, pkg_name, [
|
|
||||||
"--libs-only-other",
|
|
||||||
"--libs-only-l",
|
|
||||||
]))
|
|
||||||
|
|
||||||
def _ignore_opts(opts, ignore_opts):
|
|
||||||
remain = []
|
|
||||||
for opt in opts:
|
|
||||||
if opt not in ignore_opts:
|
|
||||||
remain += [opt]
|
|
||||||
return remain
|
|
||||||
|
|
||||||
def _symlinks(ctx, basename, srcpaths):
|
|
||||||
result = []
|
|
||||||
root = ctx.path("")
|
|
||||||
base = root.get_child(basename)
|
|
||||||
rootlen = len(str(base)) - len(basename)
|
|
||||||
for src in [ctx.path(p) for p in srcpaths]:
|
|
||||||
dest = base.get_child(src.basename)
|
|
||||||
if not dest.exists:
|
|
||||||
ctx.symlink(src, dest)
|
|
||||||
result += [str(dest)[rootlen:]]
|
|
||||||
return result
|
|
||||||
|
|
||||||
def _deps(ctx, pkg_config, pkg_name):
|
|
||||||
deps = _split(_pkg_config(ctx, pkg_config, pkg_name, [
|
|
||||||
"--libs-only-L",
|
|
||||||
"--static",
|
|
||||||
]))
|
|
||||||
if deps.error != None:
|
|
||||||
return deps
|
|
||||||
deps, unused = _extract_prefix(deps.value, "-L", strip = True)
|
|
||||||
result = []
|
|
||||||
for dep in {dep: True for dep in deps}.keys():
|
|
||||||
base = "deps_" + dep.replace("/", "_").replace(".", "_")
|
|
||||||
result += _symlinks(ctx, base, [dep])
|
|
||||||
return _success(result)
|
|
||||||
|
|
||||||
def _fmt_array(array):
|
|
||||||
return ",".join(['"{}"'.format(a) for a in array])
|
|
||||||
|
|
||||||
def _fmt_glob(array):
|
|
||||||
return _fmt_array(["{}/**/*.h".format(a) for a in array])
|
|
||||||
|
|
||||||
def _pkg_config_impl(ctx):
|
|
||||||
pkg_name = ctx.attr.pkg_name
|
|
||||||
if pkg_name == "":
|
|
||||||
pkg_name = ctx.attr.name
|
|
||||||
|
|
||||||
pkg_config = _find_binary(ctx, "pkg-config")
|
|
||||||
if pkg_config.error != None:
|
|
||||||
return pkg_config
|
|
||||||
pkg_config = pkg_config.value
|
|
||||||
|
|
||||||
check = _check(ctx, pkg_config, pkg_name)
|
|
||||||
if check.error != None:
|
|
||||||
return check
|
|
||||||
|
|
||||||
includes = _includes(ctx, pkg_config, pkg_name)
|
|
||||||
if includes.error != None:
|
|
||||||
return includes
|
|
||||||
includes = includes.value
|
|
||||||
includes = _symlinks(ctx, "includes", includes)
|
|
||||||
strip_include = "includes"
|
|
||||||
if len(includes) == 1:
|
|
||||||
strip_include = includes[0]
|
|
||||||
if ctx.attr.strip_include != "":
|
|
||||||
strip_include += "/" + ctx.attr.strip_include
|
|
||||||
|
|
||||||
ignore_opts = ctx.attr.ignore_opts
|
|
||||||
copts = _copts(ctx, pkg_config, pkg_name)
|
|
||||||
if copts.error != None:
|
|
||||||
return copts
|
|
||||||
copts = _ignore_opts(copts.value, ignore_opts)
|
|
||||||
|
|
||||||
linkopts = _linkopts(ctx, pkg_config, pkg_name)
|
|
||||||
if linkopts.error != None:
|
|
||||||
return linkopts
|
|
||||||
linkopts = _ignore_opts(linkopts.value, ignore_opts)
|
|
||||||
|
|
||||||
deps = _deps(ctx, pkg_config, pkg_name)
|
|
||||||
if deps.error != None:
|
|
||||||
return deps
|
|
||||||
deps = deps.value
|
|
||||||
|
|
||||||
include_prefix = ctx.attr.name
|
|
||||||
if ctx.attr.include_prefix != "":
|
|
||||||
include_prefix = ctx.attr.include_prefix + "/" + ctx.attr.name
|
|
||||||
|
|
||||||
build = ctx.template("BUILD", Label("//:BUILD.tmpl"), substitutions = {
|
|
||||||
"%{name}": ctx.attr.name,
|
|
||||||
"%{hdrs}": _fmt_glob(includes),
|
|
||||||
"%{includes}": _fmt_array(includes),
|
|
||||||
"%{copts}": _fmt_array(copts),
|
|
||||||
"%{extra_copts}": _fmt_array(ctx.attr.copts),
|
|
||||||
"%{deps}": _fmt_array(deps),
|
|
||||||
"%{extra_deps}": _fmt_array(ctx.attr.deps),
|
|
||||||
"%{linkopts}": _fmt_array(linkopts),
|
|
||||||
"%{extra_linkopts}": _fmt_array(ctx.attr.linkopts),
|
|
||||||
"%{strip_include}": strip_include,
|
|
||||||
"%{include_prefix}": include_prefix,
|
|
||||||
}, executable = False)
|
|
||||||
|
|
||||||
pkg_config = repository_rule(
|
|
||||||
attrs = {
|
|
||||||
"pkg_name": attr.string(doc = "Package name for pkg-config query, default to name."),
|
|
||||||
"include_prefix": attr.string(doc = "Additional prefix when including file, e.g. third_party. Compatible with strip_include option to produce desired include paths."),
|
|
||||||
"strip_include": attr.string(doc = "Strip prefix when including file, e.g. libs, files not included will be invisible. Compatible with include_prefix option to produce desired include paths."),
|
|
||||||
"version": attr.string(doc = "Exact package version."),
|
|
||||||
"min_version": attr.string(doc = "Minimum package version."),
|
|
||||||
"max_version": attr.string(doc = "Maximum package version."),
|
|
||||||
"deps": attr.string_list(doc = "Dependency targets."),
|
|
||||||
"linkopts": attr.string_list(doc = "Extra linkopts value."),
|
|
||||||
"copts": attr.string_list(doc = "Extra copts value."),
|
|
||||||
"ignore_opts": attr.string_list(doc = "Ignore listed opts in copts or linkopts."),
|
|
||||||
},
|
|
||||||
local = True,
|
|
||||||
implementation = _pkg_config_impl,
|
|
||||||
)
|
|
||||||
|
|
@@ -1,68 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
#
|
|
||||||
# Distribution SOs.
|
|
||||||
#
|
|
||||||
|
|
||||||
SOS = [
|
|
||||||
"libcef.so",
|
|
||||||
"libEGL.so",
|
|
||||||
"libGLESv2.so",
|
|
||||||
"libvk_swiftshader.so",
|
|
||||||
"libvulkan.so.1",
|
|
||||||
]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Common 'linkopts' for cc_binary targets.
|
|
||||||
#
|
|
||||||
|
|
||||||
# Standard link libraries.
|
|
||||||
STANDARD_LIBS = [
|
|
||||||
"X11",
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_LINKOPTS_DEBUG = [
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_LINKOPTS_RELEASE = [
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_LINKOPTS = [
|
|
||||||
"-l{}".format(lib) for lib in STANDARD_LIBS
|
|
||||||
] + select({
|
|
||||||
"@cef//:linux_dbg": COMMON_LINKOPTS_DEBUG,
|
|
||||||
"//conditions:default": COMMON_LINKOPTS_RELEASE,
|
|
||||||
})
|
|
||||||
|
|
||||||
#
|
|
||||||
# Common 'copts' for cc_libary and cc_binary targets.
|
|
||||||
#
|
|
||||||
|
|
||||||
COMMON_COPTS = [
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_COPTS_DEBUG = [
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_COPTS_RELEASE = [
|
|
||||||
]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Common 'defines' for cc_libary targets.
|
|
||||||
#
|
|
||||||
|
|
||||||
COMMON_DEFINES = [
|
|
||||||
# Used by apps to test if the sandbox is enabled
|
|
||||||
"CEF_USE_SANDBOX",
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_DEFINES_DEBUG = [
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_DEFINES_RELEASE = [
|
|
||||||
# Not a debug build
|
|
||||||
"NDEBUG",
|
|
||||||
]
|
|
||||||
|
|
@@ -1,8 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
# Allow access from targets in other packages.
|
|
||||||
package(default_visibility = [
|
|
||||||
"//visibility:public",
|
|
||||||
])
|
|
@@ -1,113 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
load("@bazel_skylib//rules:expand_template.bzl", "expand_template")
|
|
||||||
load("@build_bazel_rules_apple//apple:macos.bzl", "macos_application")
|
|
||||||
load("//bazel:variables.bzl", "VERSION_PLIST")
|
|
||||||
load("//bazel/mac:variables.bzl",
|
|
||||||
"MACOS_DEPLOYMENT_TARGET",
|
|
||||||
"MACOS_BUNDLE_ID_BASE",
|
|
||||||
"CEF_FRAMEWORK_NAME",
|
|
||||||
"COMMON_LINKOPTS")
|
|
||||||
|
|
||||||
def _declare_helper_app(name, info_plist, deps, helper_base_name, helper_suffix, **kwargs):
|
|
||||||
"""
|
|
||||||
Creates a Helper .app target.
|
|
||||||
"""
|
|
||||||
helper_name = "{} Helper".format(name)
|
|
||||||
bundle_id_suffix = ""
|
|
||||||
|
|
||||||
if helper_suffix:
|
|
||||||
helper_name += " ({})".format(helper_suffix)
|
|
||||||
bundle_id_suffix += ".{}".format(helper_suffix.lower())
|
|
||||||
|
|
||||||
# Helper app bundle Info.plist.
|
|
||||||
expand_template(
|
|
||||||
name = "{}_InfoPList".format(helper_base_name),
|
|
||||||
template = info_plist,
|
|
||||||
out = "{}Info.plist".format(helper_base_name),
|
|
||||||
substitutions = {
|
|
||||||
"${EXECUTABLE_NAME}": helper_name,
|
|
||||||
"${PRODUCT_NAME}": name,
|
|
||||||
"${BUNDLE_ID_SUFFIX}": bundle_id_suffix,
|
|
||||||
"${VERSION_SHORT}": VERSION_PLIST,
|
|
||||||
"${VERSION_LONG}": VERSION_PLIST,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
# Helper app bundle.
|
|
||||||
macos_application(
|
|
||||||
name = helper_base_name,
|
|
||||||
bundle_name = helper_name,
|
|
||||||
bundle_id = "{}.{}.helper{}".format(MACOS_BUNDLE_ID_BASE, name.lower(), bundle_id_suffix),
|
|
||||||
infoplists = [":{}_InfoPList".format(helper_base_name)],
|
|
||||||
minimum_os_version = MACOS_DEPLOYMENT_TARGET,
|
|
||||||
deps = [
|
|
||||||
"@cef//:cef_sandbox",
|
|
||||||
] + deps,
|
|
||||||
**kwargs,
|
|
||||||
)
|
|
||||||
|
|
||||||
HELPERS = {
|
|
||||||
"HelperBase": "",
|
|
||||||
"HelperAlerts": "Alerts",
|
|
||||||
"HelperGPU": "GPU",
|
|
||||||
"HelperPlugin": "Plugin",
|
|
||||||
"HelperRenderer": "Renderer",
|
|
||||||
}
|
|
||||||
|
|
||||||
def declare_all_helper_apps(name, info_plist, deps, **kwargs):
|
|
||||||
"""
|
|
||||||
Creates all Helper .app targets.
|
|
||||||
"""
|
|
||||||
[_declare_helper_app(
|
|
||||||
name = name,
|
|
||||||
info_plist = info_plist,
|
|
||||||
deps = deps,
|
|
||||||
helper_base_name = h,
|
|
||||||
helper_suffix = v,
|
|
||||||
**kwargs,
|
|
||||||
) for h, v in HELPERS.items()]
|
|
||||||
|
|
||||||
def declare_main_app(name, info_plist, deps, resources, linkopts=[], **kwargs):
|
|
||||||
"""
|
|
||||||
Creates the main .app target.
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Main app bundle Info.plist.
|
|
||||||
expand_template(
|
|
||||||
name = "InfoPList",
|
|
||||||
template = info_plist,
|
|
||||||
out = "Info.plist",
|
|
||||||
substitutions = {
|
|
||||||
"${EXECUTABLE_NAME}": name,
|
|
||||||
"${PRODUCT_NAME}": name,
|
|
||||||
"${VERSION_SHORT}": VERSION_PLIST,
|
|
||||||
"${VERSION_LONG}": VERSION_PLIST,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
# Main app bindle.
|
|
||||||
macos_application(
|
|
||||||
name = name,
|
|
||||||
additional_contents = {
|
|
||||||
":HelperBase": "Frameworks",
|
|
||||||
":HelperAlerts": "Frameworks",
|
|
||||||
":HelperGPU": "Frameworks",
|
|
||||||
":HelperPlugin": "Frameworks",
|
|
||||||
":HelperRenderer": "Frameworks",
|
|
||||||
"@cef//:cef_framework": "Frameworks/{}.framework".format(CEF_FRAMEWORK_NAME),
|
|
||||||
},
|
|
||||||
bundle_name = name,
|
|
||||||
bundle_id = "{}.{}".format(MACOS_BUNDLE_ID_BASE, name.lower()),
|
|
||||||
infoplists = [":InfoPList"],
|
|
||||||
linkopts = COMMON_LINKOPTS + linkopts,
|
|
||||||
minimum_os_version = MACOS_DEPLOYMENT_TARGET,
|
|
||||||
resources = resources,
|
|
||||||
target_compatible_with = [
|
|
||||||
"@platforms//os:macos",
|
|
||||||
],
|
|
||||||
deps = deps,
|
|
||||||
**kwargs,
|
|
||||||
)
|
|
@@ -1,52 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
MACOS_DEPLOYMENT_TARGET="11.0"
|
|
||||||
MACOS_BUNDLE_ID_BASE="org.cef"
|
|
||||||
CEF_FRAMEWORK_NAME="Chromium Embedded Framework"
|
|
||||||
|
|
||||||
#
|
|
||||||
# Common 'linkopts' for macos_application targets.
|
|
||||||
#
|
|
||||||
|
|
||||||
# Standard link frameworks.
|
|
||||||
STANDARD_FRAMEWORKS = [
|
|
||||||
"AppKit",
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_LINKOPTS_DEBUG = [
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_LINKOPTS_RELEASE = [
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_LINKOPTS = [
|
|
||||||
"-framework {}".format(lib) for lib in STANDARD_FRAMEWORKS
|
|
||||||
] + select({
|
|
||||||
"@cef//:macos_dbg": COMMON_LINKOPTS_DEBUG,
|
|
||||||
"//conditions:default": COMMON_LINKOPTS_RELEASE,
|
|
||||||
})
|
|
||||||
|
|
||||||
#
|
|
||||||
# Common 'copts' for cc_libary, objc_library and macos_application targets.
|
|
||||||
# We include defines in 'copts' because objc_library does not support
|
|
||||||
# 'local_defines'. See https://github.com/bazelbuild/bazel/issues/17482.
|
|
||||||
#
|
|
||||||
|
|
||||||
COMMON_COPTS = [
|
|
||||||
"-Wno-undefined-var-template",
|
|
||||||
"-Wno-missing-field-initializers",
|
|
||||||
"-Wno-deprecated-copy",
|
|
||||||
|
|
||||||
# Used by apps to test if the sandbox is enabled
|
|
||||||
"-DCEF_USE_SANDBOX",
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_COPTS_DEBUG = [
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_COPTS_RELEASE = [
|
|
||||||
# Not a debug build
|
|
||||||
"-DNDEBUG",
|
|
||||||
]
|
|
@@ -1,8 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
# Allow access from targets in other packages.
|
|
||||||
package(default_visibility = [
|
|
||||||
"//visibility:public",
|
|
||||||
])
|
|
@@ -1,33 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain", _use_cpp_toolchain="use_cpp_toolchain")
|
|
||||||
load("@rules_cc//cc:action_names.bzl", "CPP_COMPILE_ACTION_NAME")
|
|
||||||
|
|
||||||
# Since we need windows.h and other headers, we should ensure we have the same
|
|
||||||
# development environment as a regular cl.exe call. So use the current toolchain
|
|
||||||
# to grab environment variables to feed into the actual rc.exe call
|
|
||||||
# Much of this is taken from:
|
|
||||||
# https://github.com/bazelbuild/rules_cc/blob/main/examples/my_c_archive/my_c_archive.bzl
|
|
||||||
def collect_compilation_env(ctx):
|
|
||||||
cc_toolchain = find_cpp_toolchain(ctx)
|
|
||||||
feature_configuration = cc_common.configure_features(
|
|
||||||
ctx = ctx,
|
|
||||||
cc_toolchain = cc_toolchain,
|
|
||||||
requested_features = ctx.features,
|
|
||||||
unsupported_features = ctx.disabled_features,
|
|
||||||
)
|
|
||||||
|
|
||||||
compiler_variables = cc_common.create_compile_variables(
|
|
||||||
feature_configuration = feature_configuration,
|
|
||||||
cc_toolchain = cc_toolchain,
|
|
||||||
)
|
|
||||||
|
|
||||||
return cc_common.get_environment_variables(
|
|
||||||
feature_configuration = feature_configuration,
|
|
||||||
action_name = CPP_COMPILE_ACTION_NAME,
|
|
||||||
variables = compiler_variables,
|
|
||||||
)
|
|
||||||
|
|
||||||
use_cpp_toolchain=_use_cpp_toolchain
|
|
@@ -1,83 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
load("//bazel:copy_filegroups.bzl", "copy_filegroups")
|
|
||||||
load("//bazel/win:mt.bzl", "add_manifest")
|
|
||||||
load("//bazel/win:rc.bzl", "compile_rc")
|
|
||||||
load("//bazel/win:variables.bzl",
|
|
||||||
"COMMON_LINKOPTS",
|
|
||||||
"COMMON_COPTS", "COMMON_COPTS_RELEASE", "COMMON_COPTS_DEBUG",
|
|
||||||
"COMMON_DEFINES", "COMMON_DEFINES_RELEASE", "COMMON_DEFINES_DEBUG")
|
|
||||||
load("@rules_cc//cc:defs.bzl", "cc_binary")
|
|
||||||
|
|
||||||
def declare_exe(name, srcs, manifest_srcs, rc_file, resources_srcs, resources_deps=[],
|
|
||||||
deps=[], linkopts=[], copts=[], local_defines=[], data=[],
|
|
||||||
additional_linker_inputs=[], features=[], **kwargs):
|
|
||||||
# Resource file.
|
|
||||||
res_target = "{}_res".format(name)
|
|
||||||
compile_rc(
|
|
||||||
name = res_target,
|
|
||||||
rc_file = rc_file,
|
|
||||||
srcs = resources_srcs,
|
|
||||||
deps = resources_deps,
|
|
||||||
out = "{}.res".format(name),
|
|
||||||
target_compatible_with = ["@platforms//os:windows"],
|
|
||||||
)
|
|
||||||
|
|
||||||
# Copy DLLs and resources into the current project.
|
|
||||||
copy_target = "{}_dlls_and_resources".format(name)
|
|
||||||
copy_filegroups(
|
|
||||||
name = copy_target,
|
|
||||||
filegroups = [
|
|
||||||
"@cef//:dlls",
|
|
||||||
"@cef//:resources",
|
|
||||||
],
|
|
||||||
remove_prefixes = [
|
|
||||||
"Debug",
|
|
||||||
"Release",
|
|
||||||
"Resources",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
# Executable target.
|
|
||||||
binary_target = "{}_no_manifest".format(name)
|
|
||||||
cc_binary(
|
|
||||||
name = binary_target,
|
|
||||||
srcs = srcs,
|
|
||||||
deps = [
|
|
||||||
"@cef//:cef_wrapper",
|
|
||||||
"@cef//:cef_sandbox",
|
|
||||||
] + deps,
|
|
||||||
linkopts = [
|
|
||||||
"$(location @cef//:cef_lib)",
|
|
||||||
"$(location :{})".format(res_target),
|
|
||||||
] + COMMON_LINKOPTS + linkopts,
|
|
||||||
copts = COMMON_COPTS + select({
|
|
||||||
"@cef//:windows_dbg": COMMON_COPTS_DEBUG,
|
|
||||||
"//conditions:default": COMMON_COPTS_RELEASE,
|
|
||||||
}) + copts,
|
|
||||||
local_defines = COMMON_DEFINES + select({
|
|
||||||
"@cef//:windows_dbg": COMMON_DEFINES_DEBUG,
|
|
||||||
"//conditions:default": COMMON_DEFINES_RELEASE,
|
|
||||||
}) + local_defines,
|
|
||||||
additional_linker_inputs = [
|
|
||||||
"@cef//:cef_lib",
|
|
||||||
":{}".format(res_target),
|
|
||||||
] + additional_linker_inputs,
|
|
||||||
data = [
|
|
||||||
":{}".format(copy_target),
|
|
||||||
] + data,
|
|
||||||
features = ["generate_pdb_file"] + features,
|
|
||||||
target_compatible_with = ["@platforms//os:windows"],
|
|
||||||
**kwargs
|
|
||||||
)
|
|
||||||
|
|
||||||
# Add manifest and rename to final executable.
|
|
||||||
add_manifest(
|
|
||||||
name = name,
|
|
||||||
mt_files = manifest_srcs,
|
|
||||||
in_binary = ":{}".format(binary_target),
|
|
||||||
out_binary = "{}.exe".format(name),
|
|
||||||
target_compatible_with = ["@platforms//os:windows"],
|
|
||||||
)
|
|
@@ -1,72 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
load("//bazel/win:cc_env.bzl", "collect_compilation_env", "use_cpp_toolchain")
|
|
||||||
|
|
||||||
# Copy exe and pdb file without tracking the destination as an output.
|
|
||||||
# Based on https://github.com/bazelbuild/bazel-skylib/blob/main/rules/private/copy_file_private.bzl
|
|
||||||
def _write_copy_cmd(ctx, src, dst):
|
|
||||||
# Most Windows binaries built with MSVC use a certain argument quoting
|
|
||||||
# scheme. Bazel uses that scheme too to quote arguments. However,
|
|
||||||
# cmd.exe uses different semantics, so Bazel's quoting is wrong here.
|
|
||||||
# To fix that we write the command to a .bat file so no command line
|
|
||||||
# quoting or escaping is required.
|
|
||||||
bat = ctx.actions.declare_file(ctx.label.name + "-cmd.bat")
|
|
||||||
src_path = src.path.replace("/", "\\")
|
|
||||||
dst_path = dst.path.replace("/", "\\")
|
|
||||||
ctx.actions.write(
|
|
||||||
output = bat,
|
|
||||||
# Do not use lib/shell.bzl's shell.quote() method, because that uses
|
|
||||||
# Bash quoting syntax, which is different from cmd.exe's syntax.
|
|
||||||
content = "@copy /Y \"%s\" \"%s\" >NUL\n@copy /Y \"%s\" \"%s\" >NUL" % (
|
|
||||||
src_path,
|
|
||||||
dst_path,
|
|
||||||
src_path.replace(".exe", ".pdb"),
|
|
||||||
dst_path.replace(".exe", ".pdb"),
|
|
||||||
),
|
|
||||||
is_executable = True,
|
|
||||||
)
|
|
||||||
return bat
|
|
||||||
|
|
||||||
def _add_mt_impl(ctx):
|
|
||||||
mt_files = ctx.files.mt_files
|
|
||||||
input = ctx.attr.in_binary[DebugPackageInfo].unstripped_file
|
|
||||||
output = ctx.outputs.out_binary
|
|
||||||
bat = _write_copy_cmd(ctx, input, output)
|
|
||||||
|
|
||||||
inputs = mt_files + [input, bat]
|
|
||||||
|
|
||||||
# Bring over 'data' dependencies from the input.
|
|
||||||
deps_inputs = ctx.runfiles(files = inputs)
|
|
||||||
deps_inputs = deps_inputs.merge_all([ctx.attr.in_binary[DefaultInfo].default_runfiles])
|
|
||||||
|
|
||||||
ctx.actions.run(
|
|
||||||
executable = ctx.executable._tool,
|
|
||||||
inputs = deps_inputs.files,
|
|
||||||
outputs = [output],
|
|
||||||
env = collect_compilation_env(ctx),
|
|
||||||
# The bat file will be executed before the tool command.
|
|
||||||
arguments = [bat.path, "-nologo", "-manifest"] + [f.path for f in mt_files] +
|
|
||||||
["-outputresource:{}".format(output.path)],
|
|
||||||
mnemonic = "AddMT"
|
|
||||||
)
|
|
||||||
|
|
||||||
return DefaultInfo(files = depset([output]))
|
|
||||||
|
|
||||||
add_manifest = rule(
|
|
||||||
implementation = _add_mt_impl,
|
|
||||||
attrs = {
|
|
||||||
"mt_files": attr.label_list(allow_files = [".manifest"]),
|
|
||||||
"in_binary": attr.label(providers = [CcInfo], allow_single_file = True),
|
|
||||||
"out_binary": attr.output(),
|
|
||||||
"_cc_toolchain": attr.label(default = Label("@bazel_tools//tools/cpp:current_cc_toolchain")),
|
|
||||||
"_tool": attr.label(
|
|
||||||
default = "@winsdk//:mt_pybin",
|
|
||||||
executable = True,
|
|
||||||
cfg = "exec"
|
|
||||||
)
|
|
||||||
},
|
|
||||||
fragments = ["cpp"],
|
|
||||||
toolchains = use_cpp_toolchain(),
|
|
||||||
)
|
|
@@ -1,50 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
load("//bazel/win:cc_env.bzl", "collect_compilation_env", "use_cpp_toolchain")
|
|
||||||
|
|
||||||
def _compile_rc_impl(ctx):
|
|
||||||
rc_file = ctx.file.rc_file
|
|
||||||
output = ctx.outputs.out
|
|
||||||
|
|
||||||
inputs = [rc_file] + ctx.files.srcs
|
|
||||||
includes = ["/i{}/{}".format(ctx.label.package, i) for i in ctx.attr.includes]
|
|
||||||
|
|
||||||
# Grab all include paths/files required for the run
|
|
||||||
for dep in ctx.attr.deps:
|
|
||||||
comp_ctx = dep[CcInfo].compilation_context
|
|
||||||
|
|
||||||
includes += ["/i{}".format(i) for i in comp_ctx.quote_includes.to_list()]
|
|
||||||
includes += ["/i{}".format(i) for i in comp_ctx.system_includes.to_list()]
|
|
||||||
inputs += comp_ctx.headers.to_list()
|
|
||||||
|
|
||||||
ctx.actions.run(
|
|
||||||
executable = ctx.executable._tool,
|
|
||||||
inputs = inputs,
|
|
||||||
outputs = [output],
|
|
||||||
env = collect_compilation_env(ctx),
|
|
||||||
arguments = includes + ["/fo", output.path, rc_file.path],
|
|
||||||
mnemonic = "CompileRC"
|
|
||||||
)
|
|
||||||
|
|
||||||
return DefaultInfo(files = depset([output]))
|
|
||||||
|
|
||||||
compile_rc = rule(
|
|
||||||
implementation = _compile_rc_impl,
|
|
||||||
attrs = {
|
|
||||||
"rc_file": attr.label(allow_single_file = [".rc"]),
|
|
||||||
"srcs": attr.label_list(allow_files = True),
|
|
||||||
"deps": attr.label_list(providers = [CcInfo]),
|
|
||||||
"includes": attr.string_list(),
|
|
||||||
"out": attr.output(),
|
|
||||||
"_cc_toolchain": attr.label(default = Label("@bazel_tools//tools/cpp:current_cc_toolchain")),
|
|
||||||
"_tool": attr.label(
|
|
||||||
default = "@winsdk//:rc_pybin",
|
|
||||||
executable = True,
|
|
||||||
cfg = "exec"
|
|
||||||
)
|
|
||||||
},
|
|
||||||
fragments = ["cpp"],
|
|
||||||
toolchains = use_cpp_toolchain(),
|
|
||||||
)
|
|
@@ -1,124 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
load("@bazel_tools//tools/cpp:windows_cc_configure.bzl", "find_vc_path", "setup_vc_env_vars")
|
|
||||||
|
|
||||||
def _get_arch(rctx):
|
|
||||||
if rctx.os.arch == "amd64":
|
|
||||||
return "x64"
|
|
||||||
|
|
||||||
def _is_windows(rctx):
|
|
||||||
return rctx.os.name.find("windows") != -1
|
|
||||||
|
|
||||||
# Tools in the form <Target>: [<Tool>, <Other files needed for that target>]
|
|
||||||
TOOLS = {
|
|
||||||
"mt": {
|
|
||||||
"tool": "mt.exe",
|
|
||||||
"deps": [],
|
|
||||||
},
|
|
||||||
"rc": {
|
|
||||||
"tool": "rc.exe",
|
|
||||||
"deps": ["rcdll.dll"],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
def _setup_tools(rctx, sdk_bin_path, sdk_metadata_path):
|
|
||||||
contents = ""
|
|
||||||
|
|
||||||
rctx.symlink(sdk_metadata_path, "VerUnionMetadata")
|
|
||||||
contents += """
|
|
||||||
exports_files(["VerUnionMetadata"])
|
|
||||||
"""
|
|
||||||
|
|
||||||
for toolname, toolcfg in TOOLS.items():
|
|
||||||
toolexec = toolcfg["tool"]
|
|
||||||
deps = toolcfg["deps"]
|
|
||||||
direct_deps = [toolexec] + deps
|
|
||||||
shared_deps = toolcfg.get("shared_deps", [])
|
|
||||||
|
|
||||||
# Symlink any tools into the right places
|
|
||||||
for dep in direct_deps:
|
|
||||||
rctx.symlink(
|
|
||||||
"{}/{}".format(sdk_bin_path, dep),
|
|
||||||
dep,
|
|
||||||
)
|
|
||||||
|
|
||||||
# Setting up a filegroup for those dependents
|
|
||||||
contents += """
|
|
||||||
filegroup(
|
|
||||||
name = "{}_deps",
|
|
||||||
srcs = {},
|
|
||||||
)
|
|
||||||
""".format(toolname, direct_deps + shared_deps)
|
|
||||||
|
|
||||||
# Now create a wrapper for this tool that simply calls it
|
|
||||||
rctx.template(
|
|
||||||
"{}_wrapper.py".format(toolname),
|
|
||||||
Label("//bazel/win:wrapper.py.tpl"),
|
|
||||||
substitutions = {
|
|
||||||
"${binary}": toolexec,
|
|
||||||
},
|
|
||||||
executable = True,
|
|
||||||
)
|
|
||||||
|
|
||||||
# And add that newly created wrapper to the BUILD.bazel file
|
|
||||||
contents += """
|
|
||||||
py_binary(
|
|
||||||
name = "{0}_pybin",
|
|
||||||
srcs = ["{0}_wrapper.py"],
|
|
||||||
main = "{0}_wrapper.py",
|
|
||||||
data = [
|
|
||||||
"@rules_python//python/runfiles",
|
|
||||||
":{0}_deps"
|
|
||||||
],
|
|
||||||
python_version = "PY3",
|
|
||||||
)
|
|
||||||
""".format(toolname)
|
|
||||||
|
|
||||||
return contents
|
|
||||||
|
|
||||||
def _setup_vc_debug_runtime(rctx, sdk_bin_path):
|
|
||||||
ucrtbased_dll = "ucrtbased.dll"
|
|
||||||
rctx.symlink("{}/ucrt/{}".format(sdk_bin_path, ucrtbased_dll), ucrtbased_dll)
|
|
||||||
|
|
||||||
contents = """
|
|
||||||
filegroup(
|
|
||||||
name = "vc_debug_runtime",
|
|
||||||
srcs = ["{}"],
|
|
||||||
)
|
|
||||||
""".format(ucrtbased_dll)
|
|
||||||
|
|
||||||
return contents
|
|
||||||
|
|
||||||
def _windows_sdk_impl(rctx):
|
|
||||||
# We only support Windows
|
|
||||||
if not _is_windows(rctx):
|
|
||||||
fail("This rule only supports Windows")
|
|
||||||
|
|
||||||
# Figure out where the SDK is, which is based on a registry key.
|
|
||||||
vc_path = find_vc_path(rctx)
|
|
||||||
env = setup_vc_env_vars(rctx, vc_path, envvars = ["WINDOWSSDKVERBINPATH", "WindowsSdkDir", "WindowsSDKVersion"])
|
|
||||||
sdk_bin_path = "{}{}".format(env["WINDOWSSDKVERBINPATH"], _get_arch(rctx))
|
|
||||||
sdk_metadata_path = "{}UnionMetadata/{}".format(env["WindowsSdkDir"], env["WindowsSDKVersion"])
|
|
||||||
|
|
||||||
# Start with some pre-amble
|
|
||||||
contents = """# Autogenerated by //bazel/win:sdk.bzl
|
|
||||||
load("@rules_python//python:defs.bzl", "py_binary")
|
|
||||||
|
|
||||||
package(default_visibility = ["//visibility:public"])
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Handle setting up tools from our list
|
|
||||||
contents += _setup_tools(rctx, sdk_bin_path, sdk_metadata_path)
|
|
||||||
|
|
||||||
contents += _setup_vc_debug_runtime(rctx, sdk_bin_path)
|
|
||||||
|
|
||||||
rctx.file("BUILD.bazel", contents)
|
|
||||||
|
|
||||||
setup_sdk = repository_rule(
|
|
||||||
attrs = {},
|
|
||||||
local = True,
|
|
||||||
configure = True,
|
|
||||||
implementation = _windows_sdk_impl,
|
|
||||||
)
|
|
@@ -1,199 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
#
|
|
||||||
# Distribution DLLs.
|
|
||||||
#
|
|
||||||
|
|
||||||
DLLS = [
|
|
||||||
"chrome_elf.dll",
|
|
||||||
"d3dcompiler_47.dll",
|
|
||||||
"libcef.dll",
|
|
||||||
"libEGL.dll",
|
|
||||||
"libGLESv2.dll",
|
|
||||||
"vk_swiftshader.dll",
|
|
||||||
"vulkan-1.dll",
|
|
||||||
]
|
|
||||||
|
|
||||||
DLLS_X64 = [
|
|
||||||
"dxil.dll",
|
|
||||||
"dxcompiler.dll",
|
|
||||||
]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Common 'linkopts' for cc_binary targets.
|
|
||||||
#
|
|
||||||
|
|
||||||
# Windows delayload DLLs.
|
|
||||||
# Delayload most libraries as the DLLs are simply not required at startup (or
|
|
||||||
# at all, depending on the process type). Some dlls open handles when they are
|
|
||||||
# loaded, and we may not want them to be loaded in renderers or other sandboxed
|
|
||||||
# processes. Conversely, some DLLs must be loaded before sandbox lockdown. In
|
|
||||||
# unsandboxed processes they will load when first needed. The linker will
|
|
||||||
# automatically ignore anything which is not linked to the binary at all (it is
|
|
||||||
# harmless to have an unmatched /delayload). This list should be kept in sync
|
|
||||||
# with Chromium's "delayloads" target from the //build/config/win/BUILD.gn file.
|
|
||||||
DELAYLOAD_DLLS = [
|
|
||||||
"api-ms-win-core-winrt-error-l1-1-0.dll",
|
|
||||||
"api-ms-win-core-winrt-l1-1-0.dll",
|
|
||||||
"api-ms-win-core-winrt-string-l1-1-0.dll",
|
|
||||||
"advapi32.dll",
|
|
||||||
"comctl32.dll",
|
|
||||||
"comdlg32.dll",
|
|
||||||
"credui.dll",
|
|
||||||
"cryptui.dll",
|
|
||||||
"d3d11.dll",
|
|
||||||
"d3d9.dll",
|
|
||||||
"dwmapi.dll",
|
|
||||||
"dxgi.dll",
|
|
||||||
"dxva2.dll",
|
|
||||||
"esent.dll",
|
|
||||||
"gdi32.dll",
|
|
||||||
"hid.dll",
|
|
||||||
"imagehlp.dll",
|
|
||||||
"imm32.dll",
|
|
||||||
"msi.dll",
|
|
||||||
"netapi32.dll",
|
|
||||||
"ncrypt.dll",
|
|
||||||
"ole32.dll",
|
|
||||||
"oleacc.dll",
|
|
||||||
"propsys.dll",
|
|
||||||
"psapi.dll",
|
|
||||||
"rpcrt4.dll",
|
|
||||||
"rstrtmgr.dll",
|
|
||||||
"setupapi.dll",
|
|
||||||
"shell32.dll",
|
|
||||||
"shlwapi.dll",
|
|
||||||
"uiautomationcore.dll",
|
|
||||||
"urlmon.dll",
|
|
||||||
"user32.dll",
|
|
||||||
"usp10.dll",
|
|
||||||
"uxtheme.dll",
|
|
||||||
"wer.dll",
|
|
||||||
"wevtapi.dll",
|
|
||||||
"wininet.dll",
|
|
||||||
"winusb.dll",
|
|
||||||
"wsock32.dll",
|
|
||||||
"wtsapi32.dll",
|
|
||||||
]
|
|
||||||
|
|
||||||
# Standard link libraries.
|
|
||||||
STANDARD_LIBS = [
|
|
||||||
"comctl32.lib",
|
|
||||||
"gdi32.lib",
|
|
||||||
"rpcrt4.lib",
|
|
||||||
"shlwapi.lib",
|
|
||||||
"user32.lib",
|
|
||||||
"ws2_32.lib",
|
|
||||||
]
|
|
||||||
|
|
||||||
# Sandbox link libraries.
|
|
||||||
SANDBOX_LIBS = [
|
|
||||||
"Advapi32.lib",
|
|
||||||
"dbghelp.lib",
|
|
||||||
"Delayimp.lib",
|
|
||||||
"ntdll.lib",
|
|
||||||
"OleAut32.lib",
|
|
||||||
"PowrProf.lib",
|
|
||||||
"Propsys.lib",
|
|
||||||
"psapi.lib",
|
|
||||||
"SetupAPI.lib",
|
|
||||||
"Shcore.lib",
|
|
||||||
"Shell32.lib",
|
|
||||||
"Userenv.lib",
|
|
||||||
"version.lib",
|
|
||||||
"wbemuuid.lib",
|
|
||||||
"WindowsApp.lib",
|
|
||||||
"winmm.lib",
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_LINKOPTS_DEBUG = [
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_LINKOPTS_RELEASE = [
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_LINKOPTS = [
|
|
||||||
# No default manifest (see compile_rc target).
|
|
||||||
"/MANIFEST:NO",
|
|
||||||
# Allow 32-bit processes to access 3GB of RAM.
|
|
||||||
"/LARGEADDRESSAWARE",
|
|
||||||
# Generate Debug information.
|
|
||||||
# TODO: Remove after fixing opt builds to work without it.
|
|
||||||
"/DEBUG",
|
|
||||||
] + [
|
|
||||||
"/DELAYLOAD:{}".format(dll) for dll in DELAYLOAD_DLLS
|
|
||||||
] + [
|
|
||||||
"/DEFAULTLIB:{}".format(lib) for lib in STANDARD_LIBS
|
|
||||||
] + select({
|
|
||||||
# Set the initial stack size to 0.5MiB, instead of the 1.5MiB minimum
|
|
||||||
# needed by CEF's main thread. This saves significant memory on threads
|
|
||||||
# (like those in the Windows thread pool, and others) whose stack size we
|
|
||||||
# can only control through this setting. The main thread (in 32-bit builds
|
|
||||||
# only) uses fibers to switch to a 4MiB stack at runtime via
|
|
||||||
# CefRunWinMainWithPreferredStackSize().
|
|
||||||
"@cef//:windows_32": ["/STACK:0x80000"],
|
|
||||||
# Increase the initial stack size to 8MiB from the default 1MiB.
|
|
||||||
"//conditions:default": ["/STACK:0x800000"],
|
|
||||||
}) + select({
|
|
||||||
"@cef//:windows_dbg": COMMON_LINKOPTS_DEBUG,
|
|
||||||
"//conditions:default": COMMON_LINKOPTS_RELEASE,
|
|
||||||
})
|
|
||||||
|
|
||||||
#
|
|
||||||
# Common 'copts' for cc_libary and cc_binary targets.
|
|
||||||
#
|
|
||||||
|
|
||||||
COMMON_COPTS = [
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_COPTS_DEBUG = [
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_COPTS_RELEASE = [
|
|
||||||
]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Common 'defines' for cc_libary targets.
|
|
||||||
#
|
|
||||||
|
|
||||||
COMMON_DEFINES = [
|
|
||||||
# Windows platform
|
|
||||||
"WIN32",
|
|
||||||
"_WIN32",
|
|
||||||
"_WINDOWS",
|
|
||||||
# Unicode build
|
|
||||||
"UNICODE",
|
|
||||||
"_UNICODE",
|
|
||||||
# Targeting Windows 10. We can't say `=_WIN32_WINNT_WIN10` here because
|
|
||||||
# some files do `#if WINVER < 0x0600` without including windows.h before,
|
|
||||||
# and then _WIN32_WINNT_WIN10 isn't yet known to be 0x0A00.
|
|
||||||
"WINVER=0x0A00",
|
|
||||||
"_WIN32_WINNT=0x0A00",
|
|
||||||
"NTDDI_VERSION=NTDDI_WIN10_FE",
|
|
||||||
# Use the standard's templated min/max
|
|
||||||
"NOMINMAX",
|
|
||||||
# Exclude less common API declarations
|
|
||||||
"WIN32_LEAN_AND_MEAN",
|
|
||||||
# Disable exceptions
|
|
||||||
"_HAS_EXCEPTIONS=0",
|
|
||||||
|
|
||||||
# Required by cef_sandbox.lib
|
|
||||||
"PSAPI_VERSION=1",
|
|
||||||
# Used by apps to test if the sandbox is enabled
|
|
||||||
"CEF_USE_SANDBOX",
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_DEFINES_DEBUG = [
|
|
||||||
# Required by cef_sandbox.lib
|
|
||||||
# Disable iterator debugging
|
|
||||||
"HAS_ITERATOR_DEBUGGING=0",
|
|
||||||
"_ITERATOR_DEBUG_LEVEL=0",
|
|
||||||
]
|
|
||||||
|
|
||||||
COMMON_DEFINES_RELEASE = [
|
|
||||||
# Not a debug build
|
|
||||||
"NDEBUG",
|
|
||||||
"_NDEBUG",
|
|
||||||
]
|
|
@@ -1,69 +0,0 @@
|
|||||||
# Copyright (c) 2024 The Chromium Embedded Framework Authors. All rights
|
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
|
||||||
# can be found in the LICENSE file.
|
|
||||||
|
|
||||||
import os
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
from rules_python.python.runfiles import runfiles
|
|
||||||
|
|
||||||
REPLACEMENTS = {
|
|
||||||
"XXX_GETCWD_XXX": os.getcwd(),
|
|
||||||
}
|
|
||||||
|
|
||||||
def replace_in_str(input):
|
|
||||||
output = input
|
|
||||||
for placeholder, replacement in REPLACEMENTS.items():
|
|
||||||
if placeholder in output:
|
|
||||||
output = output.replace(placeholder, replacement)
|
|
||||||
return output
|
|
||||||
|
|
||||||
def print_error(str):
|
|
||||||
print(str, file=sys.stderr)
|
|
||||||
|
|
||||||
r = runfiles.Create()
|
|
||||||
wrapped_binary = r.Rlocation("winsdk/${binary}")
|
|
||||||
args = list(map(replace_in_str, sys.argv[1:]))
|
|
||||||
|
|
||||||
# Optionally execute a script before tool execution.
|
|
||||||
if args[0].endswith('.bat') or args[0].endswith('.cmd'):
|
|
||||||
if sys.platform != 'win32':
|
|
||||||
raise RuntimeError("Error running bat file; unsupported platform")
|
|
||||||
|
|
||||||
# Execute the .bat file first.
|
|
||||||
bat_file = args[0].replace('/', '\\')
|
|
||||||
p = subprocess.run(
|
|
||||||
bat_file, shell=True,
|
|
||||||
stdout = subprocess.PIPE,
|
|
||||||
stderr = subprocess.STDOUT,
|
|
||||||
text=True)
|
|
||||||
if p.returncode != 0:
|
|
||||||
print_error("[Generated python wrapper] Error running bat file:")
|
|
||||||
print_error(f"CWD: {os.getcwd()}")
|
|
||||||
print_error(f"EXEC: {bat_file}")
|
|
||||||
print_error(f"Exec output:")
|
|
||||||
print_error(p.stdout)
|
|
||||||
raise RuntimeError(f"Error running bat file; {bat_file}")
|
|
||||||
|
|
||||||
args = args[1:]
|
|
||||||
|
|
||||||
try:
|
|
||||||
p = subprocess.run(
|
|
||||||
[wrapped_binary] + args,
|
|
||||||
stdout = subprocess.PIPE,
|
|
||||||
stderr = subprocess.STDOUT,
|
|
||||||
text=True)
|
|
||||||
if p.returncode != 0:
|
|
||||||
print_error("[Generated python wrapper] Error running command:")
|
|
||||||
print_error(f"CWD: {os.getcwd()}")
|
|
||||||
print_error(f"EXEC: {wrapped_binary}")
|
|
||||||
print_error(f"ARGS: {args}")
|
|
||||||
print_error(f"Exec output:")
|
|
||||||
print_error(p.stdout)
|
|
||||||
raise RuntimeError(f"Error running wrapped command; {wrapped_binary}")
|
|
||||||
except OSError as e:
|
|
||||||
print_error("[Generated python wrapper] Error running command:")
|
|
||||||
print_error(f"CWD: {os.getcwd()}")
|
|
||||||
print_error(f"EXEC: {wrapped_binary}")
|
|
||||||
print_error(f"ARGS: {args}")
|
|
||||||
raise
|
|
@@ -1,2 +1,2 @@
|
|||||||
@echo off
|
@echo off
|
||||||
python3.bat tools\gclient_hook.py
|
python.bat tools\gclient_hook.py
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2025 The Chromium Embedded Framework Authors. All rights
|
# Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights
|
||||||
# reserved. Use of this source code is governed by a BSD-style license that
|
# reserved. Use of this source code is governed by a BSD-style license that
|
||||||
# can be found in the LICENSE file.
|
# can be found in the LICENSE file.
|
||||||
#
|
#
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
# by hand. See the translator.README.txt file in the tools directory for
|
# by hand. See the translator.README.txt file in the tools directory for
|
||||||
# more information.
|
# more information.
|
||||||
#
|
#
|
||||||
# $hash=f20d67335316b2bf388d5c02788c4024ad94f1e7$
|
# $hash=0373d7e3fc02d16a128a5891aac70af56fb9ddc1$
|
||||||
#
|
#
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -35,6 +35,8 @@
|
|||||||
'include/cef_download_item.h',
|
'include/cef_download_item.h',
|
||||||
'include/cef_drag_data.h',
|
'include/cef_drag_data.h',
|
||||||
'include/cef_drag_handler.h',
|
'include/cef_drag_handler.h',
|
||||||
|
'include/cef_extension.h',
|
||||||
|
'include/cef_extension_handler.h',
|
||||||
'include/cef_file_util.h',
|
'include/cef_file_util.h',
|
||||||
'include/cef_find_handler.h',
|
'include/cef_find_handler.h',
|
||||||
'include/cef_focus_handler.h',
|
'include/cef_focus_handler.h',
|
||||||
@@ -81,10 +83,8 @@
|
|||||||
'include/cef_stream.h',
|
'include/cef_stream.h',
|
||||||
'include/cef_string_visitor.h',
|
'include/cef_string_visitor.h',
|
||||||
'include/cef_task.h',
|
'include/cef_task.h',
|
||||||
'include/cef_task_manager.h',
|
|
||||||
'include/cef_thread.h',
|
'include/cef_thread.h',
|
||||||
'include/cef_trace.h',
|
'include/cef_trace.h',
|
||||||
'include/cef_unresponsive_process_callback.h',
|
|
||||||
'include/cef_urlrequest.h',
|
'include/cef_urlrequest.h',
|
||||||
'include/cef_v8.h',
|
'include/cef_v8.h',
|
||||||
'include/cef_values.h',
|
'include/cef_values.h',
|
||||||
@@ -139,6 +139,8 @@
|
|||||||
'include/capi/cef_download_item_capi.h',
|
'include/capi/cef_download_item_capi.h',
|
||||||
'include/capi/cef_drag_data_capi.h',
|
'include/capi/cef_drag_data_capi.h',
|
||||||
'include/capi/cef_drag_handler_capi.h',
|
'include/capi/cef_drag_handler_capi.h',
|
||||||
|
'include/capi/cef_extension_capi.h',
|
||||||
|
'include/capi/cef_extension_handler_capi.h',
|
||||||
'include/capi/cef_file_util_capi.h',
|
'include/capi/cef_file_util_capi.h',
|
||||||
'include/capi/cef_find_handler_capi.h',
|
'include/capi/cef_find_handler_capi.h',
|
||||||
'include/capi/cef_focus_handler_capi.h',
|
'include/capi/cef_focus_handler_capi.h',
|
||||||
@@ -185,10 +187,8 @@
|
|||||||
'include/capi/cef_stream_capi.h',
|
'include/capi/cef_stream_capi.h',
|
||||||
'include/capi/cef_string_visitor_capi.h',
|
'include/capi/cef_string_visitor_capi.h',
|
||||||
'include/capi/cef_task_capi.h',
|
'include/capi/cef_task_capi.h',
|
||||||
'include/capi/cef_task_manager_capi.h',
|
|
||||||
'include/capi/cef_thread_capi.h',
|
'include/capi/cef_thread_capi.h',
|
||||||
'include/capi/cef_trace_capi.h',
|
'include/capi/cef_trace_capi.h',
|
||||||
'include/capi/cef_unresponsive_process_callback_capi.h',
|
|
||||||
'include/capi/cef_urlrequest_capi.h',
|
'include/capi/cef_urlrequest_capi.h',
|
||||||
'include/capi/cef_v8_capi.h',
|
'include/capi/cef_v8_capi.h',
|
||||||
'include/capi/cef_values_capi.h',
|
'include/capi/cef_values_capi.h',
|
||||||
@@ -302,6 +302,10 @@
|
|||||||
'libcef_dll/ctocpp/drag_handler_ctocpp.h',
|
'libcef_dll/ctocpp/drag_handler_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/end_tracing_callback_ctocpp.cc',
|
'libcef_dll/ctocpp/end_tracing_callback_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/end_tracing_callback_ctocpp.h',
|
'libcef_dll/ctocpp/end_tracing_callback_ctocpp.h',
|
||||||
|
'libcef_dll/cpptoc/extension_cpptoc.cc',
|
||||||
|
'libcef_dll/cpptoc/extension_cpptoc.h',
|
||||||
|
'libcef_dll/ctocpp/extension_handler_ctocpp.cc',
|
||||||
|
'libcef_dll/ctocpp/extension_handler_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/file_dialog_callback_cpptoc.cc',
|
'libcef_dll/cpptoc/file_dialog_callback_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/file_dialog_callback_cpptoc.h',
|
'libcef_dll/cpptoc/file_dialog_callback_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/views/fill_layout_cpptoc.cc',
|
'libcef_dll/cpptoc/views/fill_layout_cpptoc.cc',
|
||||||
@@ -314,6 +318,8 @@
|
|||||||
'libcef_dll/cpptoc/frame_cpptoc.h',
|
'libcef_dll/cpptoc/frame_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/frame_handler_ctocpp.cc',
|
'libcef_dll/ctocpp/frame_handler_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/frame_handler_ctocpp.h',
|
'libcef_dll/ctocpp/frame_handler_ctocpp.h',
|
||||||
|
'libcef_dll/cpptoc/get_extension_resource_callback_cpptoc.cc',
|
||||||
|
'libcef_dll/cpptoc/get_extension_resource_callback_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/image_cpptoc.cc',
|
'libcef_dll/cpptoc/image_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/image_cpptoc.h',
|
'libcef_dll/cpptoc/image_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/jsdialog_callback_cpptoc.cc',
|
'libcef_dll/cpptoc/jsdialog_callback_cpptoc.cc',
|
||||||
@@ -462,8 +468,6 @@
|
|||||||
'libcef_dll/ctocpp/string_visitor_ctocpp.h',
|
'libcef_dll/ctocpp/string_visitor_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/task_ctocpp.cc',
|
'libcef_dll/ctocpp/task_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/task_ctocpp.h',
|
'libcef_dll/ctocpp/task_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/task_manager_cpptoc.cc',
|
|
||||||
'libcef_dll/cpptoc/task_manager_cpptoc.h',
|
|
||||||
'libcef_dll/cpptoc/task_runner_cpptoc.cc',
|
'libcef_dll/cpptoc/task_runner_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/task_runner_cpptoc.h',
|
'libcef_dll/cpptoc/task_runner_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/test/test_server_cpptoc.cc',
|
'libcef_dll/cpptoc/test/test_server_cpptoc.cc',
|
||||||
@@ -504,8 +508,6 @@
|
|||||||
'libcef_dll/cpptoc/urlrequest_cpptoc.h',
|
'libcef_dll/cpptoc/urlrequest_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/urlrequest_client_ctocpp.cc',
|
'libcef_dll/ctocpp/urlrequest_client_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/urlrequest_client_ctocpp.h',
|
'libcef_dll/ctocpp/urlrequest_client_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/unresponsive_process_callback_cpptoc.cc',
|
|
||||||
'libcef_dll/cpptoc/unresponsive_process_callback_cpptoc.h',
|
|
||||||
'libcef_dll/ctocpp/v8accessor_ctocpp.cc',
|
'libcef_dll/ctocpp/v8accessor_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/v8accessor_ctocpp.h',
|
'libcef_dll/ctocpp/v8accessor_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.cc',
|
'libcef_dll/ctocpp/v8array_buffer_release_callback_ctocpp.cc',
|
||||||
@@ -628,6 +630,10 @@
|
|||||||
'libcef_dll/cpptoc/drag_handler_cpptoc.h',
|
'libcef_dll/cpptoc/drag_handler_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/end_tracing_callback_cpptoc.cc',
|
'libcef_dll/cpptoc/end_tracing_callback_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/end_tracing_callback_cpptoc.h',
|
'libcef_dll/cpptoc/end_tracing_callback_cpptoc.h',
|
||||||
|
'libcef_dll/ctocpp/extension_ctocpp.cc',
|
||||||
|
'libcef_dll/ctocpp/extension_ctocpp.h',
|
||||||
|
'libcef_dll/cpptoc/extension_handler_cpptoc.cc',
|
||||||
|
'libcef_dll/cpptoc/extension_handler_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/file_dialog_callback_ctocpp.cc',
|
'libcef_dll/ctocpp/file_dialog_callback_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/file_dialog_callback_ctocpp.h',
|
'libcef_dll/ctocpp/file_dialog_callback_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/views/fill_layout_ctocpp.cc',
|
'libcef_dll/ctocpp/views/fill_layout_ctocpp.cc',
|
||||||
@@ -640,6 +646,8 @@
|
|||||||
'libcef_dll/ctocpp/frame_ctocpp.h',
|
'libcef_dll/ctocpp/frame_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/frame_handler_cpptoc.cc',
|
'libcef_dll/cpptoc/frame_handler_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/frame_handler_cpptoc.h',
|
'libcef_dll/cpptoc/frame_handler_cpptoc.h',
|
||||||
|
'libcef_dll/ctocpp/get_extension_resource_callback_ctocpp.cc',
|
||||||
|
'libcef_dll/ctocpp/get_extension_resource_callback_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/image_ctocpp.cc',
|
'libcef_dll/ctocpp/image_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/image_ctocpp.h',
|
'libcef_dll/ctocpp/image_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/jsdialog_callback_ctocpp.cc',
|
'libcef_dll/ctocpp/jsdialog_callback_ctocpp.cc',
|
||||||
@@ -788,8 +796,6 @@
|
|||||||
'libcef_dll/cpptoc/string_visitor_cpptoc.h',
|
'libcef_dll/cpptoc/string_visitor_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/task_cpptoc.cc',
|
'libcef_dll/cpptoc/task_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/task_cpptoc.h',
|
'libcef_dll/cpptoc/task_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/task_manager_ctocpp.cc',
|
|
||||||
'libcef_dll/ctocpp/task_manager_ctocpp.h',
|
|
||||||
'libcef_dll/ctocpp/task_runner_ctocpp.cc',
|
'libcef_dll/ctocpp/task_runner_ctocpp.cc',
|
||||||
'libcef_dll/ctocpp/task_runner_ctocpp.h',
|
'libcef_dll/ctocpp/task_runner_ctocpp.h',
|
||||||
'libcef_dll/ctocpp/test/test_server_ctocpp.cc',
|
'libcef_dll/ctocpp/test/test_server_ctocpp.cc',
|
||||||
@@ -830,8 +836,6 @@
|
|||||||
'libcef_dll/ctocpp/urlrequest_ctocpp.h',
|
'libcef_dll/ctocpp/urlrequest_ctocpp.h',
|
||||||
'libcef_dll/cpptoc/urlrequest_client_cpptoc.cc',
|
'libcef_dll/cpptoc/urlrequest_client_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/urlrequest_client_cpptoc.h',
|
'libcef_dll/cpptoc/urlrequest_client_cpptoc.h',
|
||||||
'libcef_dll/ctocpp/unresponsive_process_callback_ctocpp.cc',
|
|
||||||
'libcef_dll/ctocpp/unresponsive_process_callback_ctocpp.h',
|
|
||||||
'libcef_dll/cpptoc/v8accessor_cpptoc.cc',
|
'libcef_dll/cpptoc/v8accessor_cpptoc.cc',
|
||||||
'libcef_dll/cpptoc/v8accessor_cpptoc.h',
|
'libcef_dll/cpptoc/v8accessor_cpptoc.h',
|
||||||
'libcef_dll/cpptoc/v8array_buffer_release_callback_cpptoc.cc',
|
'libcef_dll/cpptoc/v8array_buffer_release_callback_cpptoc.cc',
|
||||||
|
107
cef_paths2.gypi
107
cef_paths2.gypi
@@ -8,6 +8,7 @@
|
|||||||
'include/base/cef_atomic_flag.h',
|
'include/base/cef_atomic_flag.h',
|
||||||
'include/base/cef_atomic_ref_count.h',
|
'include/base/cef_atomic_ref_count.h',
|
||||||
'include/base/cef_auto_reset.h',
|
'include/base/cef_auto_reset.h',
|
||||||
|
'include/base/cef_basictypes.h',
|
||||||
'include/base/cef_bind.h',
|
'include/base/cef_bind.h',
|
||||||
'include/base/cef_build.h',
|
'include/base/cef_build.h',
|
||||||
'include/base/cef_callback.h',
|
'include/base/cef_callback.h',
|
||||||
@@ -16,20 +17,20 @@
|
|||||||
'include/base/cef_callback_list.h',
|
'include/base/cef_callback_list.h',
|
||||||
'include/base/cef_cancelable_callback.h',
|
'include/base/cef_cancelable_callback.h',
|
||||||
'include/base/cef_compiler_specific.h',
|
'include/base/cef_compiler_specific.h',
|
||||||
'include/base/cef_dump_without_crashing.h',
|
|
||||||
'include/base/cef_lock.h',
|
'include/base/cef_lock.h',
|
||||||
'include/base/cef_logging.h',
|
'include/base/cef_logging.h',
|
||||||
'include/base/cef_macros.h',
|
'include/base/cef_macros.h',
|
||||||
'include/base/cef_platform_thread.h',
|
'include/base/cef_platform_thread.h',
|
||||||
|
'include/base/cef_ptr_util.h',
|
||||||
'include/base/cef_ref_counted.h',
|
'include/base/cef_ref_counted.h',
|
||||||
'include/base/cef_scoped_refptr.h',
|
'include/base/cef_scoped_refptr.h',
|
||||||
|
'include/base/cef_template_util.h',
|
||||||
'include/base/cef_thread_checker.h',
|
'include/base/cef_thread_checker.h',
|
||||||
'include/base/cef_trace_event.h',
|
'include/base/cef_trace_event.h',
|
||||||
'include/base/cef_tuple.h',
|
'include/base/cef_tuple.h',
|
||||||
'include/base/cef_weak_ptr.h',
|
'include/base/cef_weak_ptr.h',
|
||||||
'include/base/internal/cef_bind_internal.h',
|
'include/base/internal/cef_bind_internal.h',
|
||||||
'include/base/internal/cef_callback_internal.h',
|
'include/base/internal/cef_callback_internal.h',
|
||||||
'include/base/internal/cef_color_id_macros.inc',
|
|
||||||
'include/base/internal/cef_lock_impl.h',
|
'include/base/internal/cef_lock_impl.h',
|
||||||
'include/base/internal/cef_raw_scoped_refptr_mismatch_checker.h',
|
'include/base/internal/cef_raw_scoped_refptr_mismatch_checker.h',
|
||||||
'include/base/internal/cef_scoped_policy.h',
|
'include/base/internal/cef_scoped_policy.h',
|
||||||
@@ -44,7 +45,6 @@
|
|||||||
'include/internal/cef_types_wrappers.h',
|
'include/internal/cef_types_wrappers.h',
|
||||||
],
|
],
|
||||||
'includes_common_capi': [
|
'includes_common_capi': [
|
||||||
'include/internal/cef_dump_without_crashing_internal.h',
|
|
||||||
'include/internal/cef_logging_internal.h',
|
'include/internal/cef_logging_internal.h',
|
||||||
'include/internal/cef_string.h',
|
'include/internal/cef_string.h',
|
||||||
'include/internal/cef_string_list.h',
|
'include/internal/cef_string_list.h',
|
||||||
@@ -55,11 +55,7 @@
|
|||||||
'include/internal/cef_time.h',
|
'include/internal/cef_time.h',
|
||||||
'include/internal/cef_trace_event_internal.h',
|
'include/internal/cef_trace_event_internal.h',
|
||||||
'include/internal/cef_types.h',
|
'include/internal/cef_types.h',
|
||||||
'include/internal/cef_types_color.h',
|
|
||||||
'include/internal/cef_types_content_settings.h',
|
|
||||||
'include/internal/cef_types_geometry.h',
|
'include/internal/cef_types_geometry.h',
|
||||||
'include/internal/cef_types_osr.h',
|
|
||||||
'include/internal/cef_types_runtime.h',
|
|
||||||
],
|
],
|
||||||
'includes_capi': [
|
'includes_capi': [
|
||||||
'include/capi/cef_base_capi.h',
|
'include/capi/cef_base_capi.h',
|
||||||
@@ -126,7 +122,6 @@
|
|||||||
'libcef_dll/base/cef_atomic_flag.cc',
|
'libcef_dll/base/cef_atomic_flag.cc',
|
||||||
'libcef_dll/base/cef_callback_helpers.cc',
|
'libcef_dll/base/cef_callback_helpers.cc',
|
||||||
'libcef_dll/base/cef_callback_internal.cc',
|
'libcef_dll/base/cef_callback_internal.cc',
|
||||||
'libcef_dll/base/cef_dump_without_crashing.cc',
|
|
||||||
'libcef_dll/base/cef_lock.cc',
|
'libcef_dll/base/cef_lock.cc',
|
||||||
'libcef_dll/base/cef_lock_impl.cc',
|
'libcef_dll/base/cef_lock_impl.cc',
|
||||||
'libcef_dll/base/cef_logging.cc',
|
'libcef_dll/base/cef_logging.cc',
|
||||||
@@ -153,8 +148,6 @@
|
|||||||
'libcef_dll/wrapper/cef_byte_read_handler.cc',
|
'libcef_dll/wrapper/cef_byte_read_handler.cc',
|
||||||
'libcef_dll/wrapper/cef_closure_task.cc',
|
'libcef_dll/wrapper/cef_closure_task.cc',
|
||||||
'libcef_dll/wrapper/cef_message_router.cc',
|
'libcef_dll/wrapper/cef_message_router.cc',
|
||||||
'libcef_dll/wrapper/cef_message_router_utils.cc',
|
|
||||||
'libcef_dll/wrapper/cef_message_router_utils.h',
|
|
||||||
'libcef_dll/wrapper/cef_resource_manager.cc',
|
'libcef_dll/wrapper/cef_resource_manager.cc',
|
||||||
'libcef_dll/wrapper/cef_scoped_temp_dir.cc',
|
'libcef_dll/wrapper/cef_scoped_temp_dir.cc',
|
||||||
'libcef_dll/wrapper/cef_stream_resource_handler.cc',
|
'libcef_dll/wrapper/cef_stream_resource_handler.cc',
|
||||||
@@ -170,6 +163,8 @@
|
|||||||
'shared_sources_browser': [
|
'shared_sources_browser': [
|
||||||
'tests/shared/browser/client_app_browser.cc',
|
'tests/shared/browser/client_app_browser.cc',
|
||||||
'tests/shared/browser/client_app_browser.h',
|
'tests/shared/browser/client_app_browser.h',
|
||||||
|
'tests/shared/browser/extension_util.cc',
|
||||||
|
'tests/shared/browser/extension_util.h',
|
||||||
'tests/shared/browser/file_util.cc',
|
'tests/shared/browser/file_util.cc',
|
||||||
'tests/shared/browser/file_util.h',
|
'tests/shared/browser/file_util.h',
|
||||||
'tests/shared/browser/geometry_util.cc',
|
'tests/shared/browser/geometry_util.cc',
|
||||||
@@ -224,10 +219,6 @@
|
|||||||
'tests/shared/browser/util_win.h',
|
'tests/shared/browser/util_win.h',
|
||||||
],
|
],
|
||||||
'cefclient_sources_browser': [
|
'cefclient_sources_browser': [
|
||||||
'tests/cefclient/browser/base_client_handler.cc',
|
|
||||||
'tests/cefclient/browser/base_client_handler.h',
|
|
||||||
'tests/cefclient/browser/binary_transfer_test.cc',
|
|
||||||
'tests/cefclient/browser/binary_transfer_test.h',
|
|
||||||
'tests/cefclient/browser/binding_test.cc',
|
'tests/cefclient/browser/binding_test.cc',
|
||||||
'tests/cefclient/browser/binding_test.h',
|
'tests/cefclient/browser/binding_test.h',
|
||||||
'tests/cefclient/browser/browser_window.cc',
|
'tests/cefclient/browser/browser_window.cc',
|
||||||
@@ -246,12 +237,8 @@
|
|||||||
'tests/cefclient/browser/client_prefs.cc',
|
'tests/cefclient/browser/client_prefs.cc',
|
||||||
'tests/cefclient/browser/client_prefs.h',
|
'tests/cefclient/browser/client_prefs.h',
|
||||||
'tests/cefclient/browser/client_types.h',
|
'tests/cefclient/browser/client_types.h',
|
||||||
'tests/cefclient/browser/default_client_handler.cc',
|
|
||||||
'tests/cefclient/browser/default_client_handler.h',
|
|
||||||
'tests/cefclient/browser/dialog_test.cc',
|
'tests/cefclient/browser/dialog_test.cc',
|
||||||
'tests/cefclient/browser/dialog_test.h',
|
'tests/cefclient/browser/dialog_test.h',
|
||||||
'tests/cefclient/browser/hang_test.cc',
|
|
||||||
'tests/cefclient/browser/hang_test.h',
|
|
||||||
'tests/cefclient/browser/image_cache.cc',
|
'tests/cefclient/browser/image_cache.cc',
|
||||||
'tests/cefclient/browser/image_cache.h',
|
'tests/cefclient/browser/image_cache.h',
|
||||||
'tests/cefclient/browser/main_context.cc',
|
'tests/cefclient/browser/main_context.cc',
|
||||||
@@ -280,8 +267,6 @@
|
|||||||
'tests/cefclient/browser/scheme_test.h',
|
'tests/cefclient/browser/scheme_test.h',
|
||||||
'tests/cefclient/browser/server_test.cc',
|
'tests/cefclient/browser/server_test.cc',
|
||||||
'tests/cefclient/browser/server_test.h',
|
'tests/cefclient/browser/server_test.h',
|
||||||
'tests/cefclient/browser/task_manager_test.cc',
|
|
||||||
'tests/cefclient/browser/task_manager_test.h',
|
|
||||||
'tests/cefclient/browser/temp_window.h',
|
'tests/cefclient/browser/temp_window.h',
|
||||||
'tests/cefclient/browser/test_runner.cc',
|
'tests/cefclient/browser/test_runner.cc',
|
||||||
'tests/cefclient/browser/test_runner.h',
|
'tests/cefclient/browser/test_runner.h',
|
||||||
@@ -289,8 +274,6 @@
|
|||||||
'tests/cefclient/browser/urlrequest_test.h',
|
'tests/cefclient/browser/urlrequest_test.h',
|
||||||
'tests/cefclient/browser/views_menu_bar.cc',
|
'tests/cefclient/browser/views_menu_bar.cc',
|
||||||
'tests/cefclient/browser/views_menu_bar.h',
|
'tests/cefclient/browser/views_menu_bar.h',
|
||||||
'tests/cefclient/browser/views_overlay_browser.cc',
|
|
||||||
'tests/cefclient/browser/views_overlay_browser.h',
|
|
||||||
'tests/cefclient/browser/views_overlay_controls.cc',
|
'tests/cefclient/browser/views_overlay_controls.cc',
|
||||||
'tests/cefclient/browser/views_overlay_controls.h',
|
'tests/cefclient/browser/views_overlay_controls.h',
|
||||||
'tests/cefclient/browser/views_style.cc',
|
'tests/cefclient/browser/views_style.cc',
|
||||||
@@ -321,11 +304,9 @@
|
|||||||
'tests/cefclient/renderer/performance_test_tests.cc',
|
'tests/cefclient/renderer/performance_test_tests.cc',
|
||||||
],
|
],
|
||||||
'cefclient_sources_resources': [
|
'cefclient_sources_resources': [
|
||||||
'tests/cefclient/resources/binary_transfer.html',
|
|
||||||
'tests/cefclient/resources/binding.html',
|
'tests/cefclient/resources/binding.html',
|
||||||
'tests/cefclient/resources/dialogs.html',
|
'tests/cefclient/resources/dialogs.html',
|
||||||
'tests/cefclient/resources/draggable.html',
|
'tests/cefclient/resources/draggable.html',
|
||||||
'tests/cefclient/resources/hang.html',
|
|
||||||
'tests/cefclient/resources/ipc_performance.html',
|
'tests/cefclient/resources/ipc_performance.html',
|
||||||
'tests/cefclient/resources/localstorage.html',
|
'tests/cefclient/resources/localstorage.html',
|
||||||
'tests/cefclient/resources/logo.png',
|
'tests/cefclient/resources/logo.png',
|
||||||
@@ -338,13 +319,19 @@
|
|||||||
'tests/cefclient/resources/preferences.html',
|
'tests/cefclient/resources/preferences.html',
|
||||||
'tests/cefclient/resources/response_filter.html',
|
'tests/cefclient/resources/response_filter.html',
|
||||||
'tests/cefclient/resources/server.html',
|
'tests/cefclient/resources/server.html',
|
||||||
'tests/cefclient/resources/task_manager.html',
|
|
||||||
'tests/cefclient/resources/transparency.html',
|
'tests/cefclient/resources/transparency.html',
|
||||||
'tests/cefclient/resources/urlrequest.html',
|
'tests/cefclient/resources/urlrequest.html',
|
||||||
'tests/cefclient/resources/websocket.html',
|
'tests/cefclient/resources/websocket.html',
|
||||||
'tests/cefclient/resources/window.html',
|
'tests/cefclient/resources/window.html',
|
||||||
'tests/cefclient/resources/xmlhttprequest.html',
|
'tests/cefclient/resources/xmlhttprequest.html',
|
||||||
],
|
],
|
||||||
|
'cefclient_sources_resources_extensions_set_page_color': [
|
||||||
|
'tests/cefclient/resources/extensions/set_page_color/icon.png',
|
||||||
|
'tests/cefclient/resources/extensions/set_page_color/manifest.json',
|
||||||
|
'tests/cefclient/resources/extensions/set_page_color/popup.html',
|
||||||
|
'tests/cefclient/resources/extensions/set_page_color/popup.js',
|
||||||
|
'tests/cefclient/resources/extensions/set_page_color/README.md',
|
||||||
|
],
|
||||||
'cefclient_sources_win': [
|
'cefclient_sources_win': [
|
||||||
'tests/cefclient/browser/browser_window_osr_win.cc',
|
'tests/cefclient/browser/browser_window_osr_win.cc',
|
||||||
'tests/cefclient/browser/browser_window_osr_win.h',
|
'tests/cefclient/browser/browser_window_osr_win.h',
|
||||||
@@ -380,14 +367,12 @@
|
|||||||
'tests/cefclient/browser/window_test_runner_win.cc',
|
'tests/cefclient/browser/window_test_runner_win.cc',
|
||||||
'tests/cefclient/browser/window_test_runner_win.h',
|
'tests/cefclient/browser/window_test_runner_win.h',
|
||||||
'tests/cefclient/cefclient_win.cc',
|
'tests/cefclient/cefclient_win.cc',
|
||||||
|
'tests/cefclient/resources/win/cefclient.rc',
|
||||||
],
|
],
|
||||||
'cefclient_sources_resources_win': [
|
'cefclient_sources_resources_win': [
|
||||||
'tests/cefclient/win/cefclient.exe.manifest',
|
'tests/cefclient/resources/win/cefclient.exe.manifest',
|
||||||
'tests/cefclient/win/cefclient.ico',
|
'tests/cefclient/resources/win/cefclient.ico',
|
||||||
'tests/cefclient/win/small.ico',
|
'tests/cefclient/resources/win/small.ico',
|
||||||
],
|
|
||||||
'cefclient_sources_resources_win_rc': [
|
|
||||||
'tests/cefclient/win/cefclient.rc',
|
|
||||||
],
|
],
|
||||||
'cefclient_sources_mac': [
|
'cefclient_sources_mac': [
|
||||||
'tests/cefclient/browser/browser_window_osr_mac.h',
|
'tests/cefclient/browser/browser_window_osr_mac.h',
|
||||||
@@ -406,16 +391,15 @@
|
|||||||
'tests/cefclient/browser/temp_window_mac.mm',
|
'tests/cefclient/browser/temp_window_mac.mm',
|
||||||
'tests/cefclient/browser/text_input_client_osr_mac.h',
|
'tests/cefclient/browser/text_input_client_osr_mac.h',
|
||||||
'tests/cefclient/browser/text_input_client_osr_mac.mm',
|
'tests/cefclient/browser/text_input_client_osr_mac.mm',
|
||||||
'tests/cefclient/browser/views_window_mac.mm',
|
|
||||||
'tests/cefclient/browser/window_test_runner_mac.h',
|
'tests/cefclient/browser/window_test_runner_mac.h',
|
||||||
'tests/cefclient/browser/window_test_runner_mac.mm',
|
'tests/cefclient/browser/window_test_runner_mac.mm',
|
||||||
'tests/cefclient/cefclient_mac.mm',
|
'tests/cefclient/cefclient_mac.mm',
|
||||||
],
|
],
|
||||||
'cefclient_bundle_resources_mac': [
|
'cefclient_bundle_resources_mac': [
|
||||||
'tests/cefclient/mac/cefclient.icns',
|
'tests/cefclient/resources/mac/cefclient.icns',
|
||||||
'tests/cefclient/mac/English.lproj/InfoPlist.strings',
|
'tests/cefclient/resources/mac/English.lproj/InfoPlist.strings',
|
||||||
'tests/cefclient/mac/English.lproj/MainMenu.xib',
|
'tests/cefclient/resources/mac/English.lproj/MainMenu.xib',
|
||||||
'tests/cefclient/mac/Info.plist.in',
|
'tests/cefclient/resources/mac/Info.plist',
|
||||||
],
|
],
|
||||||
'cefclient_sources_linux': [
|
'cefclient_sources_linux': [
|
||||||
'tests/cefclient/browser/browser_window_osr_gtk.cc',
|
'tests/cefclient/browser/browser_window_osr_gtk.cc',
|
||||||
@@ -447,17 +431,15 @@
|
|||||||
'tests/cefsimple/simple_handler.h',
|
'tests/cefsimple/simple_handler.h',
|
||||||
],
|
],
|
||||||
'cefsimple_sources_win': [
|
'cefsimple_sources_win': [
|
||||||
|
'tests/cefsimple/cefsimple.rc',
|
||||||
'tests/cefsimple/cefsimple_win.cc',
|
'tests/cefsimple/cefsimple_win.cc',
|
||||||
'tests/cefsimple/resource.h',
|
|
||||||
'tests/cefsimple/simple_handler_win.cc',
|
'tests/cefsimple/simple_handler_win.cc',
|
||||||
|
'tests/cefsimple/resource.h',
|
||||||
],
|
],
|
||||||
'cefsimple_sources_resources_win': [
|
'cefsimple_sources_resources_win': [
|
||||||
'tests/cefsimple/win/cefsimple.exe.manifest',
|
'tests/cefsimple/cefsimple.exe.manifest',
|
||||||
'tests/cefsimple/win/cefsimple.ico',
|
'tests/cefsimple/res/cefsimple.ico',
|
||||||
'tests/cefsimple/win/small.ico',
|
'tests/cefsimple/res/small.ico',
|
||||||
],
|
|
||||||
'cefsimple_sources_resources_win_rc': [
|
|
||||||
'tests/cefsimple/win/cefsimple.rc',
|
|
||||||
],
|
],
|
||||||
'cefsimple_sources_mac': [
|
'cefsimple_sources_mac': [
|
||||||
'tests/cefsimple/cefsimple_mac.mm',
|
'tests/cefsimple/cefsimple_mac.mm',
|
||||||
@@ -470,7 +452,7 @@
|
|||||||
'tests/cefsimple/mac/cefsimple.icns',
|
'tests/cefsimple/mac/cefsimple.icns',
|
||||||
'tests/cefsimple/mac/English.lproj/InfoPlist.strings',
|
'tests/cefsimple/mac/English.lproj/InfoPlist.strings',
|
||||||
'tests/cefsimple/mac/English.lproj/MainMenu.xib',
|
'tests/cefsimple/mac/English.lproj/MainMenu.xib',
|
||||||
'tests/cefsimple/mac/Info.plist.in',
|
'tests/cefsimple/mac/Info.plist',
|
||||||
],
|
],
|
||||||
'cefsimple_sources_linux': [
|
'cefsimple_sources_linux': [
|
||||||
'tests/cefsimple/cefsimple_linux.cc',
|
'tests/cefsimple/cefsimple_linux.cc',
|
||||||
@@ -495,6 +477,13 @@
|
|||||||
'tests/ceftests/dom_unittest.cc',
|
'tests/ceftests/dom_unittest.cc',
|
||||||
'tests/ceftests/download_unittest.cc',
|
'tests/ceftests/download_unittest.cc',
|
||||||
'tests/ceftests/draggable_regions_unittest.cc',
|
'tests/ceftests/draggable_regions_unittest.cc',
|
||||||
|
'tests/ceftests/extensions/background_unittest.cc',
|
||||||
|
'tests/ceftests/extensions/chrome_alarms_unittest.cc',
|
||||||
|
'tests/ceftests/extensions/chrome_storage_unittest.cc',
|
||||||
|
'tests/ceftests/extensions/chrome_tabs_unittest.cc',
|
||||||
|
'tests/ceftests/extensions/extension_test_handler.cc',
|
||||||
|
'tests/ceftests/extensions/extension_test_handler.h',
|
||||||
|
'tests/ceftests/extensions/view_unittest.cc',
|
||||||
'tests/ceftests/file_util_unittest.cc',
|
'tests/ceftests/file_util_unittest.cc',
|
||||||
'tests/ceftests/frame_handler_unittest.cc',
|
'tests/ceftests/frame_handler_unittest.cc',
|
||||||
'tests/ceftests/frame_unittest.cc',
|
'tests/ceftests/frame_unittest.cc',
|
||||||
@@ -505,7 +494,6 @@
|
|||||||
'tests/ceftests/jsdialog_unittest.cc',
|
'tests/ceftests/jsdialog_unittest.cc',
|
||||||
'tests/ceftests/life_span_unittest.cc',
|
'tests/ceftests/life_span_unittest.cc',
|
||||||
'tests/ceftests/media_access_unittest.cc',
|
'tests/ceftests/media_access_unittest.cc',
|
||||||
'tests/ceftests/message_router_binary_unittest.cc',
|
|
||||||
'tests/ceftests/message_router_harness_unittest.cc',
|
'tests/ceftests/message_router_harness_unittest.cc',
|
||||||
'tests/ceftests/message_router_multi_query_unittest.cc',
|
'tests/ceftests/message_router_multi_query_unittest.cc',
|
||||||
'tests/ceftests/message_router_single_query_unittest.cc',
|
'tests/ceftests/message_router_single_query_unittest.cc',
|
||||||
@@ -588,32 +576,24 @@
|
|||||||
'ceftests_sources_win': [
|
'ceftests_sources_win': [
|
||||||
'tests/ceftests/resource_util_win_dir.cc',
|
'tests/ceftests/resource_util_win_dir.cc',
|
||||||
'tests/ceftests/resource_util_win_idmap.cc',
|
'tests/ceftests/resource_util_win_idmap.cc',
|
||||||
|
'tests/ceftests/resources/win/ceftests.rc',
|
||||||
],
|
],
|
||||||
'ceftests_sources_resources_win': [
|
'ceftests_sources_resources_win': [
|
||||||
'tests/ceftests/win/ceftests.exe.manifest',
|
'tests/ceftests/resources/win/ceftests.exe.manifest',
|
||||||
'tests/ceftests/win/ceftests.ico',
|
'tests/ceftests/resources/win/ceftests.ico',
|
||||||
'tests/ceftests/win/small.ico',
|
'tests/ceftests/resources/win/small.ico',
|
||||||
],
|
|
||||||
'ceftests_sources_resources_win_rc': [
|
|
||||||
'tests/ceftests/win/ceftests.rc',
|
|
||||||
],
|
],
|
||||||
'ceftests_sources_mac': [
|
'ceftests_sources_mac': [
|
||||||
'tests/ceftests/os_rendering_unittest_mac.h',
|
'tests/ceftests/os_rendering_unittest_mac.h',
|
||||||
'tests/ceftests/os_rendering_unittest_mac.mm',
|
'tests/ceftests/os_rendering_unittest_mac.mm',
|
||||||
'tests/ceftests/run_all_unittests_mac.mm',
|
'tests/ceftests/run_all_unittests_mac.mm',
|
||||||
],
|
],
|
||||||
'ceftests_sources_mac_browser_shared': [
|
'ceftests_sources_mac_helper': [
|
||||||
'tests/shared/renderer/client_app_renderer.h',
|
|
||||||
],
|
|
||||||
'ceftests_sources_mac_helper_shared': [
|
|
||||||
'tests/shared/browser/client_app_browser.h',
|
|
||||||
'tests/shared/browser/file_util.cc',
|
'tests/shared/browser/file_util.cc',
|
||||||
'tests/shared/browser/file_util.h',
|
'tests/shared/browser/file_util.h',
|
||||||
'tests/shared/browser/resource_util.h',
|
'tests/shared/browser/resource_util.h',
|
||||||
'tests/shared/browser/resource_util_mac.mm',
|
'tests/shared/browser/resource_util_mac.mm',
|
||||||
'tests/shared/browser/resource_util_posix.cc',
|
'tests/shared/browser/resource_util_posix.cc',
|
||||||
],
|
|
||||||
'ceftests_sources_mac_helper': [
|
|
||||||
'tests/ceftests/audio_output_unittest.cc',
|
'tests/ceftests/audio_output_unittest.cc',
|
||||||
'tests/ceftests/client_app_delegates.cc',
|
'tests/ceftests/client_app_delegates.cc',
|
||||||
'tests/ceftests/cookie_unittest.cc',
|
'tests/ceftests/cookie_unittest.cc',
|
||||||
@@ -621,7 +601,6 @@
|
|||||||
'tests/ceftests/dom_unittest.cc',
|
'tests/ceftests/dom_unittest.cc',
|
||||||
'tests/ceftests/frame_unittest.cc',
|
'tests/ceftests/frame_unittest.cc',
|
||||||
'tests/ceftests/media_access_unittest.cc',
|
'tests/ceftests/media_access_unittest.cc',
|
||||||
'tests/ceftests/message_router_binary_unittest.cc',
|
|
||||||
'tests/ceftests/message_router_harness_unittest.cc',
|
'tests/ceftests/message_router_harness_unittest.cc',
|
||||||
'tests/ceftests/message_router_multi_query_unittest.cc',
|
'tests/ceftests/message_router_multi_query_unittest.cc',
|
||||||
'tests/ceftests/message_router_single_query_unittest.cc',
|
'tests/ceftests/message_router_single_query_unittest.cc',
|
||||||
@@ -669,10 +648,10 @@
|
|||||||
'tests/ceftests/v8_unittest.cc',
|
'tests/ceftests/v8_unittest.cc',
|
||||||
],
|
],
|
||||||
'ceftests_bundle_resources_mac': [
|
'ceftests_bundle_resources_mac': [
|
||||||
'tests/ceftests/mac/ceftests.icns',
|
'tests/ceftests/resources/mac/ceftests.icns',
|
||||||
'tests/ceftests/mac/English.lproj/InfoPlist.strings',
|
'tests/ceftests/resources/mac/English.lproj/InfoPlist.strings',
|
||||||
'tests/ceftests/mac/English.lproj/MainMenu.xib',
|
'tests/ceftests/resources/mac/English.lproj/MainMenu.xib',
|
||||||
'tests/ceftests/mac/Info.plist.in',
|
'tests/ceftests/resources/mac/Info.plist',
|
||||||
],
|
],
|
||||||
'ceftests_sources_linux': [
|
'ceftests_sources_linux': [
|
||||||
'tests/ceftests/resource_util_linux.cc',
|
'tests/ceftests/resource_util_linux.cc',
|
||||||
|
@@ -26,14 +26,18 @@ endif()
|
|||||||
|
|
||||||
# Determine the project architecture.
|
# Determine the project architecture.
|
||||||
if(NOT DEFINED PROJECT_ARCH)
|
if(NOT DEFINED PROJECT_ARCH)
|
||||||
if(("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "arm64") OR
|
if(OS_WINDOWS AND "${CMAKE_GENERATOR_PLATFORM}" STREQUAL "arm64")
|
||||||
("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM64"))
|
|
||||||
set(PROJECT_ARCH "arm64")
|
set(PROJECT_ARCH "arm64")
|
||||||
elseif(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
elseif(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||||
set(PROJECT_ARCH "x86_64")
|
set(PROJECT_ARCH "x86_64")
|
||||||
else()
|
else()
|
||||||
set(PROJECT_ARCH "x86")
|
set(PROJECT_ARCH "x86")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(OS_MAC)
|
||||||
|
# PROJECT_ARCH should be specified on Mac OS X.
|
||||||
|
message(WARNING "No PROJECT_ARCH value specified, using ${PROJECT_ARCH}")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(${CMAKE_GENERATOR} STREQUAL "Ninja")
|
if(${CMAKE_GENERATOR} STREQUAL "Ninja")
|
||||||
@@ -59,7 +63,7 @@ set(CEF_LIBCEF_DLL_WRAPPER_PATH "${_CEF_ROOT}/libcef_dll")
|
|||||||
|
|
||||||
# Shared compiler/linker flags.
|
# Shared compiler/linker flags.
|
||||||
list(APPEND CEF_COMPILER_DEFINES
|
list(APPEND CEF_COMPILER_DEFINES
|
||||||
# Allow C++ programs to use stdint.h macros specified in the C99 standard that aren't
|
# Allow C++ programs to use stdint.h macros specified in the C99 standard that aren't
|
||||||
# in the C++ standard (e.g. UINT8_MAX, INT64_MIN, etc)
|
# in the C++ standard (e.g. UINT8_MAX, INT64_MIN, etc)
|
||||||
__STDC_CONSTANT_MACROS __STDC_FORMAT_MACROS
|
__STDC_CONSTANT_MACROS __STDC_FORMAT_MACROS
|
||||||
)
|
)
|
||||||
@@ -304,14 +308,13 @@ if(OS_MAC)
|
|||||||
# Standard libraries.
|
# Standard libraries.
|
||||||
set(CEF_STANDARD_LIBS
|
set(CEF_STANDARD_LIBS
|
||||||
-lpthread
|
-lpthread
|
||||||
"-framework AppKit"
|
|
||||||
"-framework Cocoa"
|
"-framework Cocoa"
|
||||||
"-framework IOSurface"
|
"-framework AppKit"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Find the newest available base SDK.
|
# Find the newest available base SDK.
|
||||||
execute_process(COMMAND xcode-select --print-path OUTPUT_VARIABLE XCODE_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
|
execute_process(COMMAND xcode-select --print-path OUTPUT_VARIABLE XCODE_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
foreach(OS_VERSION 14.2 14.0 11.0)
|
foreach(OS_VERSION 10.15 10.14 10.13)
|
||||||
set(SDK "${XCODE_PATH}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${OS_VERSION}.sdk")
|
set(SDK "${XCODE_PATH}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${OS_VERSION}.sdk")
|
||||||
if(NOT "${CMAKE_OSX_SYSROOT}" AND EXISTS "${SDK}" AND IS_DIRECTORY "${SDK}")
|
if(NOT "${CMAKE_OSX_SYSROOT}" AND EXISTS "${SDK}" AND IS_DIRECTORY "${SDK}")
|
||||||
set(CMAKE_OSX_SYSROOT ${SDK})
|
set(CMAKE_OSX_SYSROOT ${SDK})
|
||||||
@@ -319,7 +322,7 @@ if(OS_MAC)
|
|||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
# Target SDK.
|
# Target SDK.
|
||||||
set(CEF_TARGET_SDK "11.0")
|
set(CEF_TARGET_SDK "10.13")
|
||||||
list(APPEND CEF_COMPILER_FLAGS
|
list(APPEND CEF_COMPILER_FLAGS
|
||||||
-mmacosx-version-min=${CEF_TARGET_SDK}
|
-mmacosx-version-min=${CEF_TARGET_SDK}
|
||||||
)
|
)
|
||||||
@@ -347,10 +350,6 @@ if(OS_MAC)
|
|||||||
CEF_USE_SANDBOX # Used by apps to test if the sandbox is enabled
|
CEF_USE_SANDBOX # Used by apps to test if the sandbox is enabled
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND CEF_STANDARD_LIBS
|
|
||||||
-lsandbox
|
|
||||||
)
|
|
||||||
|
|
||||||
# CEF sandbox library paths.
|
# CEF sandbox library paths.
|
||||||
set(CEF_SANDBOX_LIB_DEBUG "${CEF_BINARY_DIR_DEBUG}/cef_sandbox.a")
|
set(CEF_SANDBOX_LIB_DEBUG "${CEF_BINARY_DIR_DEBUG}/cef_sandbox.a")
|
||||||
set(CEF_SANDBOX_LIB_RELEASE "${CEF_BINARY_DIR_RELEASE}/cef_sandbox.a")
|
set(CEF_SANDBOX_LIB_RELEASE "${CEF_BINARY_DIR_RELEASE}/cef_sandbox.a")
|
||||||
@@ -360,7 +359,6 @@ if(OS_MAC)
|
|||||||
# Format is "<name suffix>:<target suffix>:<plist suffix>".
|
# Format is "<name suffix>:<target suffix>:<plist suffix>".
|
||||||
set(CEF_HELPER_APP_SUFFIXES
|
set(CEF_HELPER_APP_SUFFIXES
|
||||||
"::"
|
"::"
|
||||||
" (Alerts):_alerts:.alerts"
|
|
||||||
" (GPU):_gpu:.gpu"
|
" (GPU):_gpu:.gpu"
|
||||||
" (Plugin):_plugin:.plugin"
|
" (Plugin):_plugin:.plugin"
|
||||||
" (Renderer):_renderer:.renderer"
|
" (Renderer):_renderer:.renderer"
|
||||||
@@ -437,66 +435,11 @@ if(OS_WINDOWS)
|
|||||||
list(APPEND CEF_EXE_LINKER_FLAGS
|
list(APPEND CEF_EXE_LINKER_FLAGS
|
||||||
/MANIFEST:NO # No default manifest (see ADD_WINDOWS_MANIFEST macro usage)
|
/MANIFEST:NO # No default manifest (see ADD_WINDOWS_MANIFEST macro usage)
|
||||||
/LARGEADDRESSAWARE # Allow 32-bit processes to access 3GB of RAM
|
/LARGEADDRESSAWARE # Allow 32-bit processes to access 3GB of RAM
|
||||||
|
|
||||||
# Delayload most libraries as the dlls are simply not required at startup (or
|
|
||||||
# at all, depending on the process type). Some dlls open handles when they are
|
|
||||||
# loaded, and we may not want them to be loaded in renderers or other sandboxed
|
|
||||||
# processes. Conversely, some dlls must be loaded before sandbox lockdown. In
|
|
||||||
# unsandboxed processes they will load when first needed. The linker will
|
|
||||||
# automatically ignore anything which is not linked to the binary at all (it is
|
|
||||||
# harmless to have an unmatched /delayload). This list should be kept in sync
|
|
||||||
# with Chromium's "delayloads" target from the //build/config/win/BUILD.gn file.
|
|
||||||
/DELAYLOAD:api-ms-win-core-winrt-error-l1-1-0.dll
|
|
||||||
/DELAYLOAD:api-ms-win-core-winrt-l1-1-0.dll
|
|
||||||
/DELAYLOAD:api-ms-win-core-winrt-string-l1-1-0.dll
|
|
||||||
/DELAYLOAD:advapi32.dll
|
|
||||||
/DELAYLOAD:comctl32.dll
|
|
||||||
/DELAYLOAD:comdlg32.dll
|
|
||||||
/DELAYLOAD:credui.dll
|
|
||||||
/DELAYLOAD:cryptui.dll
|
|
||||||
/DELAYLOAD:d3d11.dll
|
|
||||||
/DELAYLOAD:d3d9.dll
|
|
||||||
/DELAYLOAD:dwmapi.dll
|
|
||||||
/DELAYLOAD:dxgi.dll
|
|
||||||
/DELAYLOAD:dxva2.dll
|
|
||||||
/DELAYLOAD:esent.dll
|
|
||||||
/DELAYLOAD:gdi32.dll
|
|
||||||
/DELAYLOAD:hid.dll
|
|
||||||
/DELAYLOAD:imagehlp.dll
|
|
||||||
/DELAYLOAD:imm32.dll
|
|
||||||
/DELAYLOAD:msi.dll
|
|
||||||
/DELAYLOAD:netapi32.dll
|
|
||||||
/DELAYLOAD:ncrypt.dll
|
|
||||||
/DELAYLOAD:ole32.dll
|
|
||||||
/DELAYLOAD:oleacc.dll
|
|
||||||
/DELAYLOAD:propsys.dll
|
|
||||||
/DELAYLOAD:psapi.dll
|
|
||||||
/DELAYLOAD:rpcrt4.dll
|
|
||||||
/DELAYLOAD:rstrtmgr.dll
|
|
||||||
/DELAYLOAD:setupapi.dll
|
|
||||||
/DELAYLOAD:shell32.dll
|
|
||||||
/DELAYLOAD:shlwapi.dll
|
|
||||||
/DELAYLOAD:uiautomationcore.dll
|
|
||||||
/DELAYLOAD:urlmon.dll
|
|
||||||
/DELAYLOAD:user32.dll
|
|
||||||
/DELAYLOAD:usp10.dll
|
|
||||||
/DELAYLOAD:uxtheme.dll
|
|
||||||
/DELAYLOAD:wer.dll
|
|
||||||
/DELAYLOAD:wevtapi.dll
|
|
||||||
/DELAYLOAD:wininet.dll
|
|
||||||
/DELAYLOAD:winusb.dll
|
|
||||||
/DELAYLOAD:wsock32.dll
|
|
||||||
/DELAYLOAD:wtsapi32.dll
|
|
||||||
)
|
)
|
||||||
list(APPEND CEF_COMPILER_DEFINES
|
list(APPEND CEF_COMPILER_DEFINES
|
||||||
WIN32 _WIN32 _WINDOWS # Windows platform
|
WIN32 _WIN32 _WINDOWS # Windows platform
|
||||||
UNICODE _UNICODE # Unicode build
|
UNICODE _UNICODE # Unicode build
|
||||||
# Targeting Windows 10. We can't say `=_WIN32_WINNT_WIN10` here because
|
WINVER=0x0601 _WIN32_WINNT=0x601 # Targeting Windows 7
|
||||||
# some files do `#if WINVER < 0x0600` without including windows.h before,
|
|
||||||
# and then _WIN32_WINNT_WIN10 isn't yet known to be 0x0A00.
|
|
||||||
WINVER=0x0A00
|
|
||||||
_WIN32_WINNT=0x0A00
|
|
||||||
NTDDI_VERSION=NTDDI_WIN10_FE
|
|
||||||
NOMINMAX # Use the standard's templated min/max
|
NOMINMAX # Use the standard's templated min/max
|
||||||
WIN32_LEAN_AND_MEAN # Exclude less common API declarations
|
WIN32_LEAN_AND_MEAN # Exclude less common API declarations
|
||||||
_HAS_EXCEPTIONS=0 # Disable exceptions
|
_HAS_EXCEPTIONS=0 # Disable exceptions
|
||||||
@@ -513,7 +456,7 @@ if(OS_WINDOWS)
|
|||||||
# only) uses fibers to switch to a 4MiB stack at runtime via
|
# only) uses fibers to switch to a 4MiB stack at runtime via
|
||||||
# CefRunWinMainWithPreferredStackSize().
|
# CefRunWinMainWithPreferredStackSize().
|
||||||
list(APPEND CEF_EXE_LINKER_FLAGS
|
list(APPEND CEF_EXE_LINKER_FLAGS
|
||||||
/STACK:0x80000
|
/STACK:0x8000
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
# Increase the initial stack size to 8MiB from the default 1MiB.
|
# Increase the initial stack size to 8MiB from the default 1MiB.
|
||||||
@@ -544,7 +487,6 @@ if(OS_WINDOWS)
|
|||||||
# List of CEF binary files.
|
# List of CEF binary files.
|
||||||
set(CEF_BINARY_FILES
|
set(CEF_BINARY_FILES
|
||||||
chrome_elf.dll
|
chrome_elf.dll
|
||||||
d3dcompiler_47.dll
|
|
||||||
libcef.dll
|
libcef.dll
|
||||||
libEGL.dll
|
libEGL.dll
|
||||||
libGLESv2.dll
|
libGLESv2.dll
|
||||||
@@ -555,10 +497,9 @@ if(OS_WINDOWS)
|
|||||||
vulkan-1.dll
|
vulkan-1.dll
|
||||||
)
|
)
|
||||||
|
|
||||||
if(PROJECT_ARCH STREQUAL "x86_64")
|
if(NOT PROJECT_ARCH STREQUAL "arm64")
|
||||||
list(APPEND CEF_BINARY_FILES
|
list(APPEND CEF_BINARY_FILES
|
||||||
dxil.dll
|
d3dcompiler_47.dll
|
||||||
dxcompiler.dll
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -585,18 +526,14 @@ if(OS_WINDOWS)
|
|||||||
Advapi32.lib
|
Advapi32.lib
|
||||||
dbghelp.lib
|
dbghelp.lib
|
||||||
Delayimp.lib
|
Delayimp.lib
|
||||||
ntdll.lib
|
|
||||||
OleAut32.lib
|
OleAut32.lib
|
||||||
PowrProf.lib
|
PowrProf.lib
|
||||||
Propsys.lib
|
Propsys.lib
|
||||||
psapi.lib
|
psapi.lib
|
||||||
SetupAPI.lib
|
SetupAPI.lib
|
||||||
Shell32.lib
|
Shell32.lib
|
||||||
Shcore.lib
|
|
||||||
Userenv.lib
|
|
||||||
version.lib
|
version.lib
|
||||||
wbemuuid.lib
|
wbemuuid.lib
|
||||||
WindowsApp.lib
|
|
||||||
winmm.lib
|
winmm.lib
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@@ -73,9 +73,8 @@ class AutoReset {
|
|||||||
}
|
}
|
||||||
|
|
||||||
~AutoReset() {
|
~AutoReset() {
|
||||||
if (scoped_variable_) {
|
if (scoped_variable_)
|
||||||
*scoped_variable_ = std::move(original_value_);
|
*scoped_variable_ = std::move(original_value_);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2014 Marshall A. Greenblatt. Portions copyright (c) 2012
|
||||||
|
// Google Inc. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -26,49 +27,60 @@
|
|||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
|
||||||
// ---------------------------------------------------------------------------
|
|
||||||
//
|
|
||||||
// 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=dafd734ff7dcf7073946e7731823abe2d6e2ffe8$
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_UNRESPONSIVE_PROCESS_CALLBACK_CAPI_H_
|
#ifndef CEF_INCLUDE_BASE_CEF_BASICTYPES_H_
|
||||||
#define CEF_INCLUDE_CAPI_CEF_UNRESPONSIVE_PROCESS_CALLBACK_CAPI_H_
|
#define CEF_INCLUDE_BASE_CEF_BASICTYPES_H_
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "include/capi/cef_base_capi.h"
|
#include <limits.h> // For UINT_MAX
|
||||||
|
#include <stddef.h> // For size_t
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#include "include/base/cef_build.h"
|
||||||
extern "C" {
|
|
||||||
|
// The NSPR system headers define 64-bit as |long| when possible, except on
|
||||||
|
// Mac OS X. In order to not have typedef mismatches, we do the same on LP64.
|
||||||
|
//
|
||||||
|
// 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_MAC) && !defined(OS_OPENBSD)
|
||||||
|
typedef long int64;
|
||||||
|
typedef unsigned long uint64;
|
||||||
|
#else
|
||||||
|
typedef long long int64;
|
||||||
|
typedef unsigned long long uint64;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
///
|
// TODO: Remove these type guards. These are to avoid conflicts with
|
||||||
/// Callback structure for asynchronous handling of an unresponsive process.
|
// obsolete/protypes.h in the Gecko SDK.
|
||||||
///
|
#ifndef _INT32
|
||||||
typedef struct _cef_unresponsive_process_callback_t {
|
#define _INT32
|
||||||
///
|
typedef int int32;
|
||||||
/// Base structure.
|
|
||||||
///
|
|
||||||
cef_base_ref_counted_t base;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Reset the timeout for the unresponsive process.
|
|
||||||
///
|
|
||||||
void(CEF_CALLBACK* wait)(struct _cef_unresponsive_process_callback_t* self);
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Terminate the unresponsive process.
|
|
||||||
///
|
|
||||||
void(CEF_CALLBACK* terminate)(
|
|
||||||
struct _cef_unresponsive_process_callback_t* self);
|
|
||||||
} cef_unresponsive_process_callback_t;
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // CEF_INCLUDE_CAPI_CEF_UNRESPONSIVE_PROCESS_CALLBACK_CAPI_H_
|
// TODO: Remove these type guards. These are to avoid conflicts with
|
||||||
|
// obsolete/protypes.h in the Gecko SDK.
|
||||||
|
#ifndef _UINT32
|
||||||
|
#define _UINT32
|
||||||
|
typedef unsigned int uint32;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _INT16
|
||||||
|
#define _INT16
|
||||||
|
typedef short int16;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _UINT16
|
||||||
|
#define _UINT16
|
||||||
|
typedef unsigned short uint16;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// UTF-16 character type.
|
||||||
|
#ifndef char16
|
||||||
|
#if defined(WCHAR_T_IS_UTF16)
|
||||||
|
typedef wchar_t char16;
|
||||||
|
#elif defined(WCHAR_T_IS_UTF32)
|
||||||
|
typedef unsigned short char16;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // CEF_INCLUDE_BASE_CEF_BASICTYPES_H_
|
@@ -71,7 +71,7 @@
|
|||||||
|
|
||||||
#if defined(USING_CHROMIUM_INCLUDES)
|
#if defined(USING_CHROMIUM_INCLUDES)
|
||||||
// When building CEF include the Chromium header directly.
|
// When building CEF include the Chromium header directly.
|
||||||
#include "base/functional/bind.h"
|
#include "base/bind.h"
|
||||||
#else // !USING_CHROMIUM_INCLUDES
|
#else // !USING_CHROMIUM_INCLUDES
|
||||||
// The following is substantially similar to the Chromium implementation.
|
// The following is substantially similar to the Chromium implementation.
|
||||||
// If the Chromium implementation diverges the below implementation should be
|
// If the Chromium implementation diverges the below implementation should be
|
||||||
@@ -84,6 +84,7 @@
|
|||||||
|
|
||||||
#include "include/base/cef_build.h"
|
#include "include/base/cef_build.h"
|
||||||
#include "include/base/cef_compiler_specific.h"
|
#include "include/base/cef_compiler_specific.h"
|
||||||
|
#include "include/base/cef_template_util.h"
|
||||||
#include "include/base/internal/cef_bind_internal.h"
|
#include "include/base/internal/cef_bind_internal.h"
|
||||||
|
|
||||||
#if defined(OS_APPLE) && !HAS_FEATURE(objc_arc)
|
#if defined(OS_APPLE) && !HAS_FEATURE(objc_arc)
|
||||||
@@ -96,34 +97,35 @@ namespace base {
|
|||||||
/// Bind as OnceCallback.
|
/// Bind as OnceCallback.
|
||||||
///
|
///
|
||||||
template <typename Functor, typename... Args>
|
template <typename Functor, typename... Args>
|
||||||
inline OnceCallback<cef_internal::MakeUnboundRunType<Functor, Args...>>
|
inline OnceCallback<internal::MakeUnboundRunType<Functor, Args...>> BindOnce(
|
||||||
BindOnce(Functor&& functor, Args&&... args) {
|
Functor&& functor,
|
||||||
static_assert(!cef_internal::IsOnceCallback<std::decay_t<Functor>>() ||
|
Args&&... args) {
|
||||||
|
static_assert(!internal::IsOnceCallback<std::decay_t<Functor>>() ||
|
||||||
(std::is_rvalue_reference<Functor&&>() &&
|
(std::is_rvalue_reference<Functor&&>() &&
|
||||||
!std::is_const<std::remove_reference_t<Functor>>()),
|
!std::is_const<std::remove_reference_t<Functor>>()),
|
||||||
"BindOnce requires non-const rvalue for OnceCallback binding."
|
"BindOnce requires non-const rvalue for OnceCallback binding."
|
||||||
" I.e.: base::BindOnce(std::move(callback)).");
|
" I.e.: base::BindOnce(std::move(callback)).");
|
||||||
static_assert(
|
static_assert(
|
||||||
std::conjunction<cef_internal::AssertBindArgIsNotBasePassed<
|
conjunction<
|
||||||
std::decay_t<Args>>...>::value,
|
internal::AssertBindArgIsNotBasePassed<std::decay_t<Args>>...>::value,
|
||||||
"Use std::move() instead of base::Passed() with base::BindOnce()");
|
"Use std::move() instead of base::Passed() with base::BindOnce()");
|
||||||
|
|
||||||
return cef_internal::BindImpl<OnceCallback>(std::forward<Functor>(functor),
|
return internal::BindImpl<OnceCallback>(std::forward<Functor>(functor),
|
||||||
std::forward<Args>(args)...);
|
std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Bind as RepeatingCallback.
|
/// Bind as RepeatingCallback.
|
||||||
///
|
///
|
||||||
template <typename Functor, typename... Args>
|
template <typename Functor, typename... Args>
|
||||||
inline RepeatingCallback<cef_internal::MakeUnboundRunType<Functor, Args...>>
|
inline RepeatingCallback<internal::MakeUnboundRunType<Functor, Args...>>
|
||||||
BindRepeating(Functor&& functor, Args&&... args) {
|
BindRepeating(Functor&& functor, Args&&... args) {
|
||||||
static_assert(
|
static_assert(
|
||||||
!cef_internal::IsOnceCallback<std::decay_t<Functor>>(),
|
!internal::IsOnceCallback<std::decay_t<Functor>>(),
|
||||||
"BindRepeating cannot bind OnceCallback. Use BindOnce with std::move().");
|
"BindRepeating cannot bind OnceCallback. Use BindOnce with std::move().");
|
||||||
|
|
||||||
return cef_internal::BindImpl<RepeatingCallback>(
|
return internal::BindImpl<RepeatingCallback>(std::forward<Functor>(functor),
|
||||||
std::forward<Functor>(functor), std::forward<Args>(args)...);
|
std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
@@ -173,8 +175,8 @@ RepeatingCallback<Signature> BindRepeating(
|
|||||||
/// to compile because Foo does not support the AddRef() and Release() methods.
|
/// to compile because Foo does not support the AddRef() and Release() methods.
|
||||||
///
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline cef_internal::UnretainedWrapper<T> Unretained(T* o) {
|
inline internal::UnretainedWrapper<T> Unretained(T* o) {
|
||||||
return cef_internal::UnretainedWrapper<T>(o);
|
return internal::UnretainedWrapper<T>(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
@@ -199,12 +201,12 @@ inline cef_internal::UnretainedWrapper<T> Unretained(T* o) {
|
|||||||
/// </pre>
|
/// </pre>
|
||||||
///
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline cef_internal::RetainedRefWrapper<T> RetainedRef(T* o) {
|
inline internal::RetainedRefWrapper<T> RetainedRef(T* o) {
|
||||||
return cef_internal::RetainedRefWrapper<T>(o);
|
return internal::RetainedRefWrapper<T>(o);
|
||||||
}
|
}
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline cef_internal::RetainedRefWrapper<T> RetainedRef(scoped_refptr<T> o) {
|
inline internal::RetainedRefWrapper<T> RetainedRef(scoped_refptr<T> o) {
|
||||||
return cef_internal::RetainedRefWrapper<T>(std::move(o));
|
return internal::RetainedRefWrapper<T>(std::move(o));
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
@@ -232,14 +234,14 @@ inline cef_internal::RetainedRefWrapper<T> RetainedRef(scoped_refptr<T> o) {
|
|||||||
/// reference to the callback is deleted.
|
/// reference to the callback is deleted.
|
||||||
///
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline cef_internal::OwnedWrapper<T> Owned(T* o) {
|
inline internal::OwnedWrapper<T> Owned(T* o) {
|
||||||
return cef_internal::OwnedWrapper<T>(o);
|
return internal::OwnedWrapper<T>(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T, typename Deleter>
|
template <typename T, typename Deleter>
|
||||||
inline cef_internal::OwnedWrapper<T, Deleter> Owned(
|
inline internal::OwnedWrapper<T, Deleter> Owned(
|
||||||
std::unique_ptr<T, Deleter>&& ptr) {
|
std::unique_ptr<T, Deleter>&& ptr) {
|
||||||
return cef_internal::OwnedWrapper<T, Deleter>(std::move(ptr));
|
return internal::OwnedWrapper<T, Deleter>(std::move(ptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
@@ -275,8 +277,8 @@ inline cef_internal::OwnedWrapper<T, Deleter> Owned(
|
|||||||
/// an object owned by the callback.
|
/// an object owned by the callback.
|
||||||
///
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
cef_internal::OwnedRefWrapper<std::decay_t<T>> OwnedRef(T&& t) {
|
internal::OwnedRefWrapper<std::decay_t<T>> OwnedRef(T&& t) {
|
||||||
return cef_internal::OwnedRefWrapper<std::decay_t<T>>(std::forward<T>(t));
|
return internal::OwnedRefWrapper<std::decay_t<T>>(std::forward<T>(t));
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
@@ -327,12 +329,12 @@ cef_internal::OwnedRefWrapper<std::decay_t<T>> OwnedRef(T&& t) {
|
|||||||
///
|
///
|
||||||
template <typename T,
|
template <typename T,
|
||||||
std::enable_if_t<!std::is_lvalue_reference<T>::value>* = nullptr>
|
std::enable_if_t<!std::is_lvalue_reference<T>::value>* = nullptr>
|
||||||
inline cef_internal::PassedWrapper<T> Passed(T&& scoper) {
|
inline internal::PassedWrapper<T> Passed(T&& scoper) {
|
||||||
return cef_internal::PassedWrapper<T>(std::move(scoper));
|
return internal::PassedWrapper<T>(std::move(scoper));
|
||||||
}
|
}
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline cef_internal::PassedWrapper<T> Passed(T* scoper) {
|
inline internal::PassedWrapper<T> Passed(T* scoper) {
|
||||||
return cef_internal::PassedWrapper<T>(std::move(*scoper));
|
return internal::PassedWrapper<T>(std::move(*scoper));
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
@@ -355,8 +357,8 @@ inline cef_internal::PassedWrapper<T> Passed(T* scoper) {
|
|||||||
/// </pre>
|
/// </pre>
|
||||||
///
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline cef_internal::IgnoreResultHelper<T> IgnoreResult(T data) {
|
inline internal::IgnoreResultHelper<T> IgnoreResult(T data) {
|
||||||
return cef_internal::IgnoreResultHelper<T>(std::move(data));
|
return internal::IgnoreResultHelper<T>(std::move(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(OS_APPLE) && !HAS_FEATURE(objc_arc)
|
#if defined(OS_APPLE) && !HAS_FEATURE(objc_arc)
|
||||||
|
@@ -69,24 +69,7 @@
|
|||||||
#if defined(USING_CHROMIUM_INCLUDES)
|
#if defined(USING_CHROMIUM_INCLUDES)
|
||||||
// When building CEF include the Chromium header directly.
|
// When building CEF include the Chromium header directly.
|
||||||
#include "build/build_config.h"
|
#include "build/build_config.h"
|
||||||
#include "cef/libcef/features/features.h"
|
|
||||||
|
|
||||||
// The following #defines are used in cef/include/ headers and CEF client-side
|
|
||||||
// code. CEF library-side code should use BUILDFLAG checks directly instead of
|
|
||||||
// these #defines. CEF client-side code will get these #defines from
|
|
||||||
// cef_config.h so any changes must also be reflected in
|
|
||||||
// tools/make_config_header.py.
|
|
||||||
|
|
||||||
#if BUILDFLAG(IS_LINUX)
|
|
||||||
#include "ui/base/ozone_buildflags.h"
|
|
||||||
#if BUILDFLAG(IS_OZONE_X11)
|
|
||||||
#define CEF_X11 1
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#else // !USING_CHROMIUM_INCLUDES
|
#else // !USING_CHROMIUM_INCLUDES
|
||||||
#include "include/cef_config.h"
|
|
||||||
|
|
||||||
// The following is substantially similar to the Chromium implementation.
|
// The following is substantially similar to the Chromium implementation.
|
||||||
// If the Chromium implementation diverges the below implementation should be
|
// If the Chromium implementation diverges the below implementation should be
|
||||||
// updated to match.
|
// updated to match.
|
||||||
@@ -249,19 +232,19 @@
|
|||||||
|
|
||||||
// Type detection for wchar_t.
|
// Type detection for wchar_t.
|
||||||
#if defined(OS_WIN)
|
#if defined(OS_WIN)
|
||||||
#define WCHAR_T_IS_16_BIT
|
#define WCHAR_T_IS_UTF16
|
||||||
#elif defined(OS_FUCHSIA)
|
#elif defined(OS_FUCHSIA)
|
||||||
#define WCHAR_T_IS_32_BIT
|
#define WCHAR_T_IS_UTF32
|
||||||
#elif defined(OS_POSIX) && defined(COMPILER_GCC) && defined(__WCHAR_MAX__) && \
|
#elif defined(OS_POSIX) && defined(COMPILER_GCC) && defined(__WCHAR_MAX__) && \
|
||||||
(__WCHAR_MAX__ == 0x7fffffff || __WCHAR_MAX__ == 0xffffffff)
|
(__WCHAR_MAX__ == 0x7fffffff || __WCHAR_MAX__ == 0xffffffff)
|
||||||
#define WCHAR_T_IS_32_BIT
|
#define WCHAR_T_IS_UTF32
|
||||||
#elif defined(OS_POSIX) && defined(COMPILER_GCC) && defined(__WCHAR_MAX__) && \
|
#elif defined(OS_POSIX) && defined(COMPILER_GCC) && defined(__WCHAR_MAX__) && \
|
||||||
(__WCHAR_MAX__ == 0x7fff || __WCHAR_MAX__ == 0xffff)
|
(__WCHAR_MAX__ == 0x7fff || __WCHAR_MAX__ == 0xffff)
|
||||||
// On Posix, we'll detect short wchar_t, but projects aren't guaranteed to
|
// On Posix, we'll detect short wchar_t, but projects aren't guaranteed to
|
||||||
// compile in this mode (in particular, Chrome doesn't). This is intended for
|
// compile in this mode (in particular, Chrome doesn't). This is intended for
|
||||||
// other projects using base who manage their own dependencies and make sure
|
// other projects using base who manage their own dependencies and make sure
|
||||||
// short wchar works for them.
|
// short wchar works for them.
|
||||||
#define WCHAR_T_IS_16_BIT
|
#define WCHAR_T_IS_UTF16
|
||||||
#else
|
#else
|
||||||
#error Please add support for your compiler in include/base/cef_build.h
|
#error Please add support for your compiler in include/base/cef_build.h
|
||||||
#endif
|
#endif
|
||||||
@@ -270,7 +253,7 @@
|
|||||||
// The compiler thinks std::string::const_iterator and "const char*" are
|
// The compiler thinks std::string::const_iterator and "const char*" are
|
||||||
// equivalent types.
|
// equivalent types.
|
||||||
#define STD_STRING_ITERATOR_IS_CHAR_POINTER
|
#define STD_STRING_ITERATOR_IS_CHAR_POINTER
|
||||||
// The compiler thinks std::u16string::const_iterator and "char16_t*" are
|
// The compiler thinks std::u16string::const_iterator and "char16*" are
|
||||||
// equivalent types.
|
// equivalent types.
|
||||||
#define BASE_STRING16_ITERATOR_IS_CHAR16_POINTER
|
#define BASE_STRING16_ITERATOR_IS_CHAR16_POINTER
|
||||||
#endif
|
#endif
|
||||||
|
@@ -67,7 +67,7 @@
|
|||||||
|
|
||||||
#if defined(USING_CHROMIUM_INCLUDES)
|
#if defined(USING_CHROMIUM_INCLUDES)
|
||||||
// When building CEF include the Chromium header directly.
|
// When building CEF include the Chromium header directly.
|
||||||
#include "base/functional/callback.h"
|
#include "base/callback.h"
|
||||||
#else // !USING_CHROMIUM_INCLUDES
|
#else // !USING_CHROMIUM_INCLUDES
|
||||||
// The following is substantially similar to the Chromium implementation.
|
// The following is substantially similar to the Chromium implementation.
|
||||||
// If the Chromium implementation diverges the below implementation should be
|
// If the Chromium implementation diverges the below implementation should be
|
||||||
@@ -83,18 +83,18 @@
|
|||||||
namespace base {
|
namespace base {
|
||||||
|
|
||||||
template <typename R, typename... Args>
|
template <typename R, typename... Args>
|
||||||
class OnceCallback<R(Args...)> : public cef_internal::CallbackBase {
|
class OnceCallback<R(Args...)> : public internal::CallbackBase {
|
||||||
public:
|
public:
|
||||||
using ResultType = R;
|
using ResultType = R;
|
||||||
using RunType = R(Args...);
|
using RunType = R(Args...);
|
||||||
using PolymorphicInvoke = R (*)(cef_internal::BindStateBase*,
|
using PolymorphicInvoke = R (*)(internal::BindStateBase*,
|
||||||
cef_internal::PassingType<Args>...);
|
internal::PassingType<Args>...);
|
||||||
|
|
||||||
constexpr OnceCallback() = default;
|
constexpr OnceCallback() = default;
|
||||||
OnceCallback(std::nullptr_t) = delete;
|
OnceCallback(std::nullptr_t) = delete;
|
||||||
|
|
||||||
explicit OnceCallback(cef_internal::BindStateBase* bind_state)
|
explicit OnceCallback(internal::BindStateBase* bind_state)
|
||||||
: cef_internal::CallbackBase(bind_state) {}
|
: internal::CallbackBase(bind_state) {}
|
||||||
|
|
||||||
OnceCallback(const OnceCallback&) = delete;
|
OnceCallback(const OnceCallback&) = delete;
|
||||||
OnceCallback& operator=(const OnceCallback&) = delete;
|
OnceCallback& operator=(const OnceCallback&) = delete;
|
||||||
@@ -103,10 +103,10 @@ class OnceCallback<R(Args...)> : public cef_internal::CallbackBase {
|
|||||||
OnceCallback& operator=(OnceCallback&&) noexcept = default;
|
OnceCallback& operator=(OnceCallback&&) noexcept = default;
|
||||||
|
|
||||||
OnceCallback(RepeatingCallback<RunType> other)
|
OnceCallback(RepeatingCallback<RunType> other)
|
||||||
: cef_internal::CallbackBase(std::move(other)) {}
|
: internal::CallbackBase(std::move(other)) {}
|
||||||
|
|
||||||
OnceCallback& operator=(RepeatingCallback<RunType> other) {
|
OnceCallback& operator=(RepeatingCallback<RunType> other) {
|
||||||
static_cast<cef_internal::CallbackBase&>(*this) = std::move(other);
|
static_cast<internal::CallbackBase&>(*this) = std::move(other);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ class OnceCallback<R(Args...)> : public cef_internal::CallbackBase {
|
|||||||
OnceCallback<ThenR(Args...)> Then(OnceCallback<ThenR(ThenArgs...)> then) && {
|
OnceCallback<ThenR(Args...)> Then(OnceCallback<ThenR(ThenArgs...)> then) && {
|
||||||
CHECK(then);
|
CHECK(then);
|
||||||
return BindOnce(
|
return BindOnce(
|
||||||
cef_internal::ThenHelper<
|
internal::ThenHelper<
|
||||||
OnceCallback, OnceCallback<ThenR(ThenArgs...)>>::CreateTrampoline(),
|
OnceCallback, OnceCallback<ThenR(ThenArgs...)>>::CreateTrampoline(),
|
||||||
std::move(*this), std::move(then));
|
std::move(*this), std::move(then));
|
||||||
}
|
}
|
||||||
@@ -155,7 +155,7 @@ class OnceCallback<R(Args...)> : public cef_internal::CallbackBase {
|
|||||||
RepeatingCallback<ThenR(ThenArgs...)> then) && {
|
RepeatingCallback<ThenR(ThenArgs...)> then) && {
|
||||||
CHECK(then);
|
CHECK(then);
|
||||||
return BindOnce(
|
return BindOnce(
|
||||||
cef_internal::ThenHelper<
|
internal::ThenHelper<
|
||||||
OnceCallback,
|
OnceCallback,
|
||||||
RepeatingCallback<ThenR(ThenArgs...)>>::CreateTrampoline(),
|
RepeatingCallback<ThenR(ThenArgs...)>>::CreateTrampoline(),
|
||||||
std::move(*this), std::move(then));
|
std::move(*this), std::move(then));
|
||||||
@@ -163,19 +163,18 @@ class OnceCallback<R(Args...)> : public cef_internal::CallbackBase {
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <typename R, typename... Args>
|
template <typename R, typename... Args>
|
||||||
class RepeatingCallback<R(Args...)>
|
class RepeatingCallback<R(Args...)> : public internal::CallbackBaseCopyable {
|
||||||
: public cef_internal::CallbackBaseCopyable {
|
|
||||||
public:
|
public:
|
||||||
using ResultType = R;
|
using ResultType = R;
|
||||||
using RunType = R(Args...);
|
using RunType = R(Args...);
|
||||||
using PolymorphicInvoke = R (*)(cef_internal::BindStateBase*,
|
using PolymorphicInvoke = R (*)(internal::BindStateBase*,
|
||||||
cef_internal::PassingType<Args>...);
|
internal::PassingType<Args>...);
|
||||||
|
|
||||||
constexpr RepeatingCallback() = default;
|
constexpr RepeatingCallback() = default;
|
||||||
RepeatingCallback(std::nullptr_t) = delete;
|
RepeatingCallback(std::nullptr_t) = delete;
|
||||||
|
|
||||||
explicit RepeatingCallback(cef_internal::BindStateBase* bind_state)
|
explicit RepeatingCallback(internal::BindStateBase* bind_state)
|
||||||
: cef_internal::CallbackBaseCopyable(bind_state) {}
|
: internal::CallbackBaseCopyable(bind_state) {}
|
||||||
|
|
||||||
// Copyable and movable.
|
// Copyable and movable.
|
||||||
RepeatingCallback(const RepeatingCallback&) = default;
|
RepeatingCallback(const RepeatingCallback&) = default;
|
||||||
@@ -225,7 +224,7 @@ class RepeatingCallback<R(Args...)>
|
|||||||
RepeatingCallback<ThenR(ThenArgs...)> then) const& {
|
RepeatingCallback<ThenR(ThenArgs...)> then) const& {
|
||||||
CHECK(then);
|
CHECK(then);
|
||||||
return BindRepeating(
|
return BindRepeating(
|
||||||
cef_internal::ThenHelper<
|
internal::ThenHelper<
|
||||||
RepeatingCallback,
|
RepeatingCallback,
|
||||||
RepeatingCallback<ThenR(ThenArgs...)>>::CreateTrampoline(),
|
RepeatingCallback<ThenR(ThenArgs...)>>::CreateTrampoline(),
|
||||||
*this, std::move(then));
|
*this, std::move(then));
|
||||||
@@ -236,7 +235,7 @@ class RepeatingCallback<R(Args...)>
|
|||||||
RepeatingCallback<ThenR(ThenArgs...)> then) && {
|
RepeatingCallback<ThenR(ThenArgs...)> then) && {
|
||||||
CHECK(then);
|
CHECK(then);
|
||||||
return BindRepeating(
|
return BindRepeating(
|
||||||
cef_internal::ThenHelper<
|
internal::ThenHelper<
|
||||||
RepeatingCallback,
|
RepeatingCallback,
|
||||||
RepeatingCallback<ThenR(ThenArgs...)>>::CreateTrampoline(),
|
RepeatingCallback<ThenR(ThenArgs...)>>::CreateTrampoline(),
|
||||||
std::move(*this), std::move(then));
|
std::move(*this), std::move(then));
|
||||||
|
@@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
#if defined(USING_CHROMIUM_INCLUDES)
|
#if defined(USING_CHROMIUM_INCLUDES)
|
||||||
// When building CEF include the Chromium header directly.
|
// When building CEF include the Chromium header directly.
|
||||||
#include "base/functional/callback_forward.h"
|
#include "base/callback_forward.h"
|
||||||
#else // !USING_CHROMIUM_INCLUDES
|
#else // !USING_CHROMIUM_INCLUDES
|
||||||
// The following is substantially similar to the Chromium implementation.
|
// The following is substantially similar to the Chromium implementation.
|
||||||
// If the Chromium implementation diverges the below implementation should be
|
// If the Chromium implementation diverges the below implementation should be
|
||||||
|
@@ -39,7 +39,7 @@
|
|||||||
|
|
||||||
#if defined(USING_CHROMIUM_INCLUDES)
|
#if defined(USING_CHROMIUM_INCLUDES)
|
||||||
// When building CEF include the Chromium header directly.
|
// When building CEF include the Chromium header directly.
|
||||||
#include "base/functional/callback_helpers.h"
|
#include "base/callback_helpers.h"
|
||||||
#else // !USING_CHROMIUM_INCLUDES
|
#else // !USING_CHROMIUM_INCLUDES
|
||||||
// The following is substantially similar to the Chromium implementation.
|
// The following is substantially similar to the Chromium implementation.
|
||||||
// If the Chromium implementation diverges the below implementation should be
|
// If the Chromium implementation diverges the below implementation should be
|
||||||
|
@@ -86,7 +86,7 @@
|
|||||||
|
|
||||||
#if defined(USING_CHROMIUM_INCLUDES)
|
#if defined(USING_CHROMIUM_INCLUDES)
|
||||||
// When building CEF include the Chromium header directly.
|
// When building CEF include the Chromium header directly.
|
||||||
#include "base/functional/callback_list.h"
|
#include "base/callback_list.h"
|
||||||
#else // !USING_CHROMIUM_INCLUDES
|
#else // !USING_CHROMIUM_INCLUDES
|
||||||
// The following is substantially similar to the Chromium implementation.
|
// The following is substantially similar to the Chromium implementation.
|
||||||
// If the Chromium implementation diverges the below implementation should be
|
// If the Chromium implementation diverges the below implementation should be
|
||||||
@@ -242,9 +242,8 @@ class CallbackListBase {
|
|||||||
// the reentrant Notify() call.
|
// the reentrant Notify() call.
|
||||||
template <typename... RunArgs>
|
template <typename... RunArgs>
|
||||||
void Notify(RunArgs&&... args) {
|
void Notify(RunArgs&&... args) {
|
||||||
if (empty()) {
|
if (empty())
|
||||||
return; // Nothing to do.
|
return; // Nothing to do.
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
AutoReset<bool> iterating(&iterating_, true);
|
AutoReset<bool> iterating(&iterating_, true);
|
||||||
@@ -258,20 +257,18 @@ class CallbackListBase {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
for (auto it = next_valid(callbacks_.begin()); it != callbacks_.end();
|
for (auto it = next_valid(callbacks_.begin()); it != callbacks_.end();
|
||||||
it = next_valid(it)) {
|
it = next_valid(it))
|
||||||
// NOTE: Intentionally does not call std::forward<RunArgs>(args)...,
|
// NOTE: Intentionally does not call std::forward<RunArgs>(args)...,
|
||||||
// since that would allow move-only arguments.
|
// since that would allow move-only arguments.
|
||||||
static_cast<CallbackListImpl*>(this)->RunCallback(it++, args...);
|
static_cast<CallbackListImpl*>(this)->RunCallback(it++, args...);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Re-entrant invocations shouldn't prune anything from the list. This can
|
// Re-entrant invocations shouldn't prune anything from the list. This can
|
||||||
// invalidate iterators from underneath higher call frames. It's safe to
|
// invalidate iterators from underneath higher call frames. It's safe to
|
||||||
// simply do nothing, since the outermost frame will continue through here
|
// simply do nothing, since the outermost frame will continue through here
|
||||||
// and prune all null callbacks below.
|
// and prune all null callbacks below.
|
||||||
if (iterating_) {
|
if (iterating_)
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
// Any null callbacks remaining in the list were canceled due to
|
// Any null callbacks remaining in the list were canceled due to
|
||||||
// Subscription destruction during iteration, and can safely be erased now.
|
// Subscription destruction during iteration, and can safely be erased now.
|
||||||
@@ -285,9 +282,8 @@ class CallbackListBase {
|
|||||||
// that were executed above have all been removed regardless of whether
|
// that were executed above have all been removed regardless of whether
|
||||||
// they're counted in |erased_callbacks_|.
|
// they're counted in |erased_callbacks_|.
|
||||||
if (removal_callback_ &&
|
if (removal_callback_ &&
|
||||||
(erased_callbacks || IsOnceCallback<CallbackType>::value)) {
|
(erased_callbacks || IsOnceCallback<CallbackType>::value))
|
||||||
removal_callback_.Run(); // May delete |this|!
|
removal_callback_.Run(); // May delete |this|!
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -299,9 +295,8 @@ class CallbackListBase {
|
|||||||
private:
|
private:
|
||||||
// Cancels the callback pointed to by |it|, which is guaranteed to be valid.
|
// Cancels the callback pointed to by |it|, which is guaranteed to be valid.
|
||||||
void CancelCallback(const typename Callbacks::iterator& it) {
|
void CancelCallback(const typename Callbacks::iterator& it) {
|
||||||
if (static_cast<CallbackListImpl*>(this)->CancelNullCallback(it)) {
|
if (static_cast<CallbackListImpl*>(this)->CancelNullCallback(it))
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
if (iterating_) {
|
if (iterating_) {
|
||||||
// Calling erase() here is unsafe, since the loop in Notify() may be
|
// Calling erase() here is unsafe, since the loop in Notify() may be
|
||||||
@@ -311,9 +306,8 @@ class CallbackListBase {
|
|||||||
it->Reset();
|
it->Reset();
|
||||||
} else {
|
} else {
|
||||||
callbacks_.erase(it);
|
callbacks_.erase(it);
|
||||||
if (removal_callback_) {
|
if (removal_callback_)
|
||||||
removal_callback_.Run(); // May delete |this|!
|
removal_callback_.Run(); // May delete |this|!
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -133,9 +133,8 @@ class CancelableCallbackImpl {
|
|||||||
|
|
||||||
// Returns a callback that can be disabled by calling Cancel().
|
// Returns a callback that can be disabled by calling Cancel().
|
||||||
CallbackType callback() const {
|
CallbackType callback() const {
|
||||||
if (!callback_) {
|
if (!callback_)
|
||||||
return CallbackType();
|
return CallbackType();
|
||||||
}
|
|
||||||
CallbackType forwarder;
|
CallbackType forwarder;
|
||||||
MakeForwarder(&forwarder);
|
MakeForwarder(&forwarder);
|
||||||
return forwarder;
|
return forwarder;
|
||||||
|
@@ -251,6 +251,13 @@
|
|||||||
#define HAS_FEATURE(FEATURE) 0
|
#define HAS_FEATURE(FEATURE) 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Macro for telling -Wimplicit-fallthrough that a fallthrough is intentional.
|
||||||
|
#if defined(__clang__)
|
||||||
|
#define FALLTHROUGH [[clang::fallthrough]]
|
||||||
|
#else
|
||||||
|
#define FALLTHROUGH
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(COMPILER_GCC)
|
#if defined(COMPILER_GCC)
|
||||||
#define PRETTY_FUNCTION __PRETTY_FUNCTION__
|
#define PRETTY_FUNCTION __PRETTY_FUNCTION__
|
||||||
#elif defined(COMPILER_MSVC)
|
#elif defined(COMPILER_MSVC)
|
||||||
|
@@ -1,76 +0,0 @@
|
|||||||
// Copyright (c) 2024 Marshall A. Greenblatt. Portions copyright (c) 2012
|
|
||||||
// Google Inc. All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are
|
|
||||||
// met:
|
|
||||||
//
|
|
||||||
// * Redistributions of source code must retain the above copyright
|
|
||||||
// notice, this list of conditions and the following disclaimer.
|
|
||||||
// * Redistributions in binary form must reproduce the above
|
|
||||||
// copyright notice, this list of conditions and the following disclaimer
|
|
||||||
// in the documentation and/or other materials provided with the
|
|
||||||
// distribution.
|
|
||||||
// * Neither the name of Google Inc. nor the name Chromium Embedded
|
|
||||||
// Framework nor the names of its contributors may be used to endorse
|
|
||||||
// or promote products derived from this software without specific prior
|
|
||||||
// written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
///
|
|
||||||
/// \file
|
|
||||||
/// Provides functions for generating crash dumps.
|
|
||||||
///
|
|
||||||
/// NOTE: The contents of this file are only available to applications that link
|
|
||||||
/// against the libcef_dll_wrapper target.
|
|
||||||
///
|
|
||||||
/// NOTE: Ensure crash reporting is configured before use. See
|
|
||||||
/// https://bitbucket.org/chromiumembedded/cef/wiki/CrashReporting.md for more
|
|
||||||
/// information
|
|
||||||
///
|
|
||||||
/// WARNING: Crash reporting should not be used in the main/browser process
|
|
||||||
/// before calling CefInitialize or in sub-processes before CefExecuteProcess.
|
|
||||||
///
|
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_BASE_CEF_DUMP_WITHOUT_CRASHING_H_
|
|
||||||
#define CEF_INCLUDE_BASE_CEF_DUMP_WITHOUT_CRASHING_H_
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
constexpr long long kOneDayInMilliseconds = 86400000;
|
|
||||||
|
|
||||||
///
|
|
||||||
/// CefDumpWithoutCrashing allows for generating crash dumps with a throttling
|
|
||||||
/// mechanism, preventing frequent dumps from being generated in a short period
|
|
||||||
/// of time from the same location. The |function_name|, |file_name|, and
|
|
||||||
/// |line_number| determine the location of the dump. The
|
|
||||||
/// |mseconds_between_dumps| is an interval between consecutive dumps in
|
|
||||||
/// milliseconds from the same location.
|
|
||||||
///
|
|
||||||
/// Returns true if the dump was successfully generated, false otherwise.
|
|
||||||
///
|
|
||||||
bool CefDumpWithoutCrashing(
|
|
||||||
long long mseconds_between_dumps = kOneDayInMilliseconds,
|
|
||||||
const char* function_name = __builtin_FUNCTION(),
|
|
||||||
const char* file_name = __builtin_FILE(),
|
|
||||||
int line_number = __builtin_LINE());
|
|
||||||
|
|
||||||
///
|
|
||||||
/// CefDumpWithoutCrashingUnthrottled allows for immediate crash dumping without
|
|
||||||
/// any throttling constraints.
|
|
||||||
///
|
|
||||||
/// Returns true if the dump was successfully generated, false otherwise.
|
|
||||||
///
|
|
||||||
bool CefDumpWithoutCrashingUnthrottled();
|
|
||||||
|
|
||||||
#endif // CEF_INCLUDE_BASE_CEF_DUMP_WITHOUT_CRASHING_H_
|
|
@@ -723,13 +723,6 @@ std::ostream& operator<<(std::ostream& out, const wchar_t* wstr);
|
|||||||
inline std::ostream& operator<<(std::ostream& out, const std::wstring& wstr) {
|
inline std::ostream& operator<<(std::ostream& out, const std::wstring& wstr) {
|
||||||
return out << wstr.c_str();
|
return out << wstr.c_str();
|
||||||
}
|
}
|
||||||
#if defined(WCHAR_T_IS_32_BIT)
|
|
||||||
std::ostream& operator<<(std::ostream& out, const char16_t* wstr);
|
|
||||||
#elif defined(WCHAR_T_IS_16_BIT)
|
|
||||||
inline std::ostream& operator<<(std::ostream& out, const char16_t* wstr) {
|
|
||||||
return operator<<(out, reinterpret_cast<const wchar_t*>(wstr));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// The NOTIMPLEMENTED() macro annotates codepaths which have
|
// The NOTIMPLEMENTED() macro annotates codepaths which have
|
||||||
// not been implemented yet.
|
// not been implemented yet.
|
||||||
|
@@ -43,6 +43,7 @@
|
|||||||
// If the Chromium implementation diverges the below implementation should be
|
// If the Chromium implementation diverges the below implementation should be
|
||||||
// updated to match.
|
// updated to match.
|
||||||
|
|
||||||
|
#include "include/base/cef_basictypes.h"
|
||||||
#include "include/base/cef_build.h"
|
#include "include/base/cef_build.h"
|
||||||
#include "include/internal/cef_thread_internal.h"
|
#include "include/internal/cef_thread_internal.h"
|
||||||
|
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
// Copyright (c) 2024 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2021 Marshall A. Greenblatt. Portions copyright (c) 2015
|
||||||
|
// Google Inc. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -27,31 +28,33 @@
|
|||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_INTERNAL_CEF_TYPES_COLOR_H_
|
#ifndef INCLUDE_BASE_CEF_PTR_UTIL_H_
|
||||||
#define CEF_INCLUDE_INTERNAL_CEF_TYPES_COLOR_H_
|
#define INCLUDE_BASE_CEF_PTR_UTIL_H_
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#if defined(USING_CHROMIUM_INCLUDES)
|
||||||
extern "C" {
|
// When building CEF include the Chromium header directly.
|
||||||
#endif
|
#include "base/memory/ptr_util.h"
|
||||||
|
#else // !USING_CHROMIUM_INCLUDES
|
||||||
|
// The following is substantially similar to the Chromium implementation.
|
||||||
|
// If the Chromium implementation diverges the below implementation should be
|
||||||
|
// updated to match.
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
namespace base {
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Describes how to interpret the components of a pixel.
|
/// Helper to transfer ownership of a raw pointer to a std::unique_ptr<T>.
|
||||||
|
/// Note that std::unique_ptr<T> has very different semantics from
|
||||||
|
/// std::unique_ptr<T[]>: do not use this helper for array allocations.
|
||||||
///
|
///
|
||||||
typedef enum {
|
template <typename T>
|
||||||
///
|
std::unique_ptr<T> WrapUnique(T* ptr) {
|
||||||
/// RGBA with 8 bits per pixel (32bits total).
|
return std::unique_ptr<T>(ptr);
|
||||||
///
|
|
||||||
CEF_COLOR_TYPE_RGBA_8888,
|
|
||||||
|
|
||||||
///
|
|
||||||
/// BGRA with 8 bits per pixel (32bits total).
|
|
||||||
///
|
|
||||||
CEF_COLOR_TYPE_BGRA_8888,
|
|
||||||
} cef_color_type_t;
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // CEF_INCLUDE_INTERNAL_CEF_TYPES_COLOR_H_
|
} // namespace base
|
||||||
|
|
||||||
|
#endif // INCLUDE_BASE_CEF_PTR_UTIL_H_
|
@@ -50,6 +50,7 @@
|
|||||||
#include "include/base/cef_compiler_specific.h"
|
#include "include/base/cef_compiler_specific.h"
|
||||||
#include "include/base/cef_logging.h"
|
#include "include/base/cef_logging.h"
|
||||||
#include "include/base/cef_scoped_refptr.h"
|
#include "include/base/cef_scoped_refptr.h"
|
||||||
|
#include "include/base/cef_template_util.h"
|
||||||
#include "include/base/cef_thread_checker.h"
|
#include "include/base/cef_thread_checker.h"
|
||||||
|
|
||||||
namespace base {
|
namespace base {
|
||||||
@@ -104,16 +105,13 @@ class RefCountedBase {
|
|||||||
|
|
||||||
#if DCHECK_IS_ON()
|
#if DCHECK_IS_ON()
|
||||||
DCHECK(!in_dtor_);
|
DCHECK(!in_dtor_);
|
||||||
if (ref_count_ == 0) {
|
if (ref_count_ == 0)
|
||||||
in_dtor_ = true;
|
in_dtor_ = true;
|
||||||
}
|
|
||||||
|
|
||||||
if (ref_count_ >= 1) {
|
if (ref_count_ >= 1)
|
||||||
DCHECK(CalledOnValidThread());
|
DCHECK(CalledOnValidThread());
|
||||||
}
|
if (ref_count_ == 1)
|
||||||
if (ref_count_ == 1) {
|
|
||||||
thread_checker_.DetachFromThread();
|
thread_checker_.DetachFromThread();
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return ref_count_ == 0;
|
return ref_count_ == 0;
|
||||||
@@ -484,7 +482,7 @@ class RefCountedData
|
|||||||
RefCountedData(const T& in_value) : data(in_value) {}
|
RefCountedData(const T& in_value) : data(in_value) {}
|
||||||
RefCountedData(T&& in_value) : data(std::move(in_value)) {}
|
RefCountedData(T&& in_value) : data(std::move(in_value)) {}
|
||||||
template <typename... Args>
|
template <typename... Args>
|
||||||
explicit RefCountedData(std::in_place_t, Args&&... args)
|
explicit RefCountedData(in_place_t, Args&&... args)
|
||||||
: data(std::forward<Args>(args)...) {}
|
: data(std::forward<Args>(args)...) {}
|
||||||
|
|
||||||
T data;
|
T data;
|
||||||
|
@@ -229,9 +229,8 @@ class TRIVIAL_ABI scoped_refptr {
|
|||||||
// should move or copy construct from an existing scoped_refptr<T> to the
|
// should move or copy construct from an existing scoped_refptr<T> to the
|
||||||
// ref-counted object.
|
// ref-counted object.
|
||||||
scoped_refptr(T* p) : ptr_(p) {
|
scoped_refptr(T* p) : ptr_(p) {
|
||||||
if (ptr_) {
|
if (ptr_)
|
||||||
AddRef(ptr_);
|
AddRef(ptr_);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy constructor. This is required in addition to the copy conversion
|
// Copy constructor. This is required in addition to the copy conversion
|
||||||
@@ -262,9 +261,8 @@ class TRIVIAL_ABI scoped_refptr {
|
|||||||
"It's unsafe to override the ref count preference."
|
"It's unsafe to override the ref count preference."
|
||||||
" Please remove REQUIRE_ADOPTION_FOR_REFCOUNTED_TYPE"
|
" Please remove REQUIRE_ADOPTION_FOR_REFCOUNTED_TYPE"
|
||||||
" from subclasses.");
|
" from subclasses.");
|
||||||
if (ptr_) {
|
if (ptr_)
|
||||||
Release(ptr_);
|
Release(ptr_);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
T* get() const { return ptr_; }
|
T* get() const { return ptr_; }
|
||||||
|
@@ -97,24 +97,21 @@ class ScopedTypeRef {
|
|||||||
element_type object = Traits::InvalidValue(),
|
element_type object = Traits::InvalidValue(),
|
||||||
base::scoped_policy::OwnershipPolicy policy = base::scoped_policy::ASSUME)
|
base::scoped_policy::OwnershipPolicy policy = base::scoped_policy::ASSUME)
|
||||||
: object_(object) {
|
: object_(object) {
|
||||||
if (object_ && policy == base::scoped_policy::RETAIN) {
|
if (object_ && policy == base::scoped_policy::RETAIN)
|
||||||
object_ = Traits::Retain(object_);
|
object_ = Traits::Retain(object_);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ScopedTypeRef(const ScopedTypeRef<T, Traits>& that) : object_(that.object_) {
|
ScopedTypeRef(const ScopedTypeRef<T, Traits>& that) : object_(that.object_) {
|
||||||
if (object_) {
|
if (object_)
|
||||||
object_ = Traits::Retain(object_);
|
object_ = Traits::Retain(object_);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// This allows passing an object to a function that takes its superclass.
|
// This allows passing an object to a function that takes its superclass.
|
||||||
template <typename R, typename RTraits>
|
template <typename R, typename RTraits>
|
||||||
explicit ScopedTypeRef(const ScopedTypeRef<R, RTraits>& that_as_subclass)
|
explicit ScopedTypeRef(const ScopedTypeRef<R, RTraits>& that_as_subclass)
|
||||||
: object_(that_as_subclass.get()) {
|
: object_(that_as_subclass.get()) {
|
||||||
if (object_) {
|
if (object_)
|
||||||
object_ = Traits::Retain(object_);
|
object_ = Traits::Retain(object_);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ScopedTypeRef(ScopedTypeRef<T, Traits>&& that) : object_(that.object_) {
|
ScopedTypeRef(ScopedTypeRef<T, Traits>&& that) : object_(that.object_) {
|
||||||
@@ -122,9 +119,8 @@ class ScopedTypeRef {
|
|||||||
}
|
}
|
||||||
|
|
||||||
~ScopedTypeRef() {
|
~ScopedTypeRef() {
|
||||||
if (object_) {
|
if (object_)
|
||||||
Traits::Release(object_);
|
Traits::Release(object_);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ScopedTypeRef& operator=(const ScopedTypeRef<T, Traits>& that) {
|
ScopedTypeRef& operator=(const ScopedTypeRef<T, Traits>& that) {
|
||||||
@@ -147,12 +143,10 @@ class ScopedTypeRef {
|
|||||||
void reset(element_type object = Traits::InvalidValue(),
|
void reset(element_type object = Traits::InvalidValue(),
|
||||||
base::scoped_policy::OwnershipPolicy policy =
|
base::scoped_policy::OwnershipPolicy policy =
|
||||||
base::scoped_policy::ASSUME) {
|
base::scoped_policy::ASSUME) {
|
||||||
if (object && policy == base::scoped_policy::RETAIN) {
|
if (object && policy == base::scoped_policy::RETAIN)
|
||||||
object = Traits::Retain(object);
|
object = Traits::Retain(object);
|
||||||
}
|
if (object_)
|
||||||
if (object_) {
|
|
||||||
Traits::Release(object_);
|
Traits::Release(object_);
|
||||||
}
|
|
||||||
object_ = object;
|
object_ = object;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
414
include/base/cef_template_util.h
Normal file
414
include/base/cef_template_util.h
Normal file
@@ -0,0 +1,414 @@
|
|||||||
|
// Copyright (c) 2014 Marshall A. Greenblatt. Portions copyright (c) 2011
|
||||||
|
// Google Inc. All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without
|
||||||
|
// modification, are permitted provided that the following conditions are
|
||||||
|
// met:
|
||||||
|
//
|
||||||
|
// * Redistributions of source code must retain the above copyright
|
||||||
|
// notice, this list of conditions and the following disclaimer.
|
||||||
|
// * Redistributions in binary form must reproduce the above
|
||||||
|
// copyright notice, this list of conditions and the following disclaimer
|
||||||
|
// in the documentation and/or other materials provided with the
|
||||||
|
// distribution.
|
||||||
|
// * Neither the name of Google Inc. nor the name Chromium Embedded
|
||||||
|
// Framework nor the names of its contributors may be used to endorse
|
||||||
|
// or promote products derived from this software without specific prior
|
||||||
|
// written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
#ifndef CEF_INCLUDE_BASE_CEF_TEMPLATE_UTIL_H_
|
||||||
|
#define CEF_INCLUDE_BASE_CEF_TEMPLATE_UTIL_H_
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#if defined(USING_CHROMIUM_INCLUDES)
|
||||||
|
// When building CEF include the Chromium header directly.
|
||||||
|
#include "base/template_util.h"
|
||||||
|
#else // !USING_CHROMIUM_INCLUDES
|
||||||
|
// The following is substantially similar to the Chromium implementation.
|
||||||
|
// If the Chromium implementation diverges the below implementation should be
|
||||||
|
// updated to match.
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <iosfwd>
|
||||||
|
#include <iterator>
|
||||||
|
#include <type_traits>
|
||||||
|
#include <utility>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include "include/base/cef_build.h"
|
||||||
|
|
||||||
|
// Some versions of libstdc++ have partial support for type_traits, but misses
|
||||||
|
// a smaller subset while removing some of the older non-standard stuff. Assume
|
||||||
|
// that all versions below 5.0 fall in this category, along with one 5.0
|
||||||
|
// experimental release. Test for this by consulting compiler major version,
|
||||||
|
// the only reliable option available, so theoretically this could fail should
|
||||||
|
// you attempt to mix an earlier version of libstdc++ with >= GCC5. But
|
||||||
|
// that's unlikely to work out, especially as GCC5 changed ABI.
|
||||||
|
#define CR_GLIBCXX_5_0_0 20150123
|
||||||
|
#if (defined(__GNUC__) && __GNUC__ < 5) || \
|
||||||
|
(defined(__GLIBCXX__) && __GLIBCXX__ == CR_GLIBCXX_5_0_0)
|
||||||
|
#define CR_USE_FALLBACKS_FOR_OLD_EXPERIMENTAL_GLIBCXX
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// This hacks around using gcc with libc++ which has some incompatibilies.
|
||||||
|
// - is_trivially_* doesn't work: https://llvm.org/bugs/show_bug.cgi?id=27538
|
||||||
|
// TODO(danakj): Remove this when android builders are all using a newer version
|
||||||
|
// of gcc, or the android ndk is updated to a newer libc++ that works with older
|
||||||
|
// gcc versions.
|
||||||
|
#if !defined(__clang__) && defined(_LIBCPP_VERSION)
|
||||||
|
#define CR_USE_FALLBACKS_FOR_GCC_WITH_LIBCXX
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace base {
|
||||||
|
|
||||||
|
template <class T> struct is_non_const_reference : std::false_type {};
|
||||||
|
template <class T> struct is_non_const_reference<T&> : std::true_type {};
|
||||||
|
template <class T> struct is_non_const_reference<const T&> : std::false_type {};
|
||||||
|
|
||||||
|
namespace internal {
|
||||||
|
|
||||||
|
// Implementation detail of base::void_t below.
|
||||||
|
template <typename...>
|
||||||
|
struct make_void {
|
||||||
|
using type = void;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace internal
|
||||||
|
|
||||||
|
// base::void_t is an implementation of std::void_t from C++17.
|
||||||
|
//
|
||||||
|
// We use |base::internal::make_void| as a helper struct to avoid a C++14
|
||||||
|
// defect:
|
||||||
|
// http://en.cppreference.com/w/cpp/types/void_t
|
||||||
|
// http://open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#1558
|
||||||
|
template <typename... Ts>
|
||||||
|
using void_t = typename ::base::internal::make_void<Ts...>::type;
|
||||||
|
|
||||||
|
namespace internal {
|
||||||
|
|
||||||
|
// Uses expression SFINAE to detect whether using operator<< would work.
|
||||||
|
template <typename T, typename = void>
|
||||||
|
struct SupportsOstreamOperator : std::false_type {};
|
||||||
|
template <typename T>
|
||||||
|
struct SupportsOstreamOperator<T,
|
||||||
|
decltype(void(std::declval<std::ostream&>()
|
||||||
|
<< std::declval<T>()))>
|
||||||
|
: std::true_type {};
|
||||||
|
|
||||||
|
template <typename T, typename = void>
|
||||||
|
struct SupportsToString : std::false_type {};
|
||||||
|
template <typename T>
|
||||||
|
struct SupportsToString<T, decltype(void(std::declval<T>().ToString()))>
|
||||||
|
: std::true_type {};
|
||||||
|
|
||||||
|
// Used to detect whether the given type is an iterator. This is normally used
|
||||||
|
// with std::enable_if to provide disambiguation for functions that take
|
||||||
|
// templatzed iterators as input.
|
||||||
|
template <typename T, typename = void>
|
||||||
|
struct is_iterator : std::false_type {};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct is_iterator<T,
|
||||||
|
void_t<typename std::iterator_traits<T>::iterator_category>>
|
||||||
|
: std::true_type {};
|
||||||
|
|
||||||
|
// Helper to express preferences in an overload set. If more than one overload
|
||||||
|
// are available for a given set of parameters the overload with the higher
|
||||||
|
// priority will be chosen.
|
||||||
|
template <size_t I>
|
||||||
|
struct priority_tag : priority_tag<I - 1> {};
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct priority_tag<0> {};
|
||||||
|
|
||||||
|
} // namespace internal
|
||||||
|
|
||||||
|
// is_trivially_copyable is especially hard to get right.
|
||||||
|
// - Older versions of libstdc++ will fail to have it like they do for other
|
||||||
|
// type traits. This has become a subset of the second point, but used to be
|
||||||
|
// handled independently.
|
||||||
|
// - An experimental release of gcc includes most of type_traits but misses
|
||||||
|
// is_trivially_copyable, so we still have to avoid using libstdc++ in this
|
||||||
|
// case, which is covered by CR_USE_FALLBACKS_FOR_OLD_EXPERIMENTAL_GLIBCXX.
|
||||||
|
// - When compiling libc++ from before r239653, with a gcc compiler, the
|
||||||
|
// std::is_trivially_copyable can fail. So we need to work around that by not
|
||||||
|
// using the one in libc++ in this case. This is covered by the
|
||||||
|
// CR_USE_FALLBACKS_FOR_GCC_WITH_LIBCXX define, and is discussed in
|
||||||
|
// https://llvm.org/bugs/show_bug.cgi?id=27538#c1 where they point out that
|
||||||
|
// in libc++'s commit r239653 this is fixed by libc++ checking for gcc 5.1.
|
||||||
|
// - In both of the above cases we are using the gcc compiler. When defining
|
||||||
|
// this ourselves on compiler intrinsics, the __is_trivially_copyable()
|
||||||
|
// intrinsic is not available on gcc before version 5.1 (see the discussion in
|
||||||
|
// https://llvm.org/bugs/show_bug.cgi?id=27538#c1 again), so we must check for
|
||||||
|
// that version.
|
||||||
|
// - When __is_trivially_copyable() is not available because we are on gcc older
|
||||||
|
// than 5.1, we need to fall back to something, so we use __has_trivial_copy()
|
||||||
|
// instead based on what was done one-off in bit_cast() previously.
|
||||||
|
|
||||||
|
// TODO(crbug.com/554293): Remove this when all platforms have this in the std
|
||||||
|
// namespace and it works with gcc as needed.
|
||||||
|
#if defined(CR_USE_FALLBACKS_FOR_OLD_EXPERIMENTAL_GLIBCXX) || \
|
||||||
|
defined(CR_USE_FALLBACKS_FOR_GCC_WITH_LIBCXX)
|
||||||
|
template <typename T>
|
||||||
|
struct is_trivially_copyable {
|
||||||
|
// TODO(danakj): Remove this when android builders are all using a newer version
|
||||||
|
// of gcc, or the android ndk is updated to a newer libc++ that does this for
|
||||||
|
// us.
|
||||||
|
#if _GNUC_VER >= 501
|
||||||
|
static constexpr bool value = __is_trivially_copyable(T);
|
||||||
|
#else
|
||||||
|
static constexpr bool value =
|
||||||
|
__has_trivial_copy(T) && __has_trivial_destructor(T);
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
template <class T>
|
||||||
|
using is_trivially_copyable = std::is_trivially_copyable<T>;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ <= 7
|
||||||
|
// Workaround for g++7 and earlier family.
|
||||||
|
// Due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80654, without this
|
||||||
|
// Optional<std::vector<T>> where T is non-copyable causes a compile error.
|
||||||
|
// As we know it is not trivially copy constructible, explicitly declare so.
|
||||||
|
template <typename T>
|
||||||
|
struct is_trivially_copy_constructible
|
||||||
|
: std::is_trivially_copy_constructible<T> {};
|
||||||
|
|
||||||
|
template <typename... T>
|
||||||
|
struct is_trivially_copy_constructible<std::vector<T...>> : std::false_type {};
|
||||||
|
#else
|
||||||
|
// Otherwise use std::is_trivially_copy_constructible as is.
|
||||||
|
template <typename T>
|
||||||
|
using is_trivially_copy_constructible = std::is_trivially_copy_constructible<T>;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// base::in_place_t is an implementation of std::in_place_t from
|
||||||
|
// C++17. A tag type used to request in-place construction in template vararg
|
||||||
|
// constructors.
|
||||||
|
|
||||||
|
// Specification:
|
||||||
|
// https://en.cppreference.com/w/cpp/utility/in_place
|
||||||
|
struct in_place_t {};
|
||||||
|
constexpr in_place_t in_place = {};
|
||||||
|
|
||||||
|
// base::in_place_type_t is an implementation of std::in_place_type_t from
|
||||||
|
// C++17. A tag type used for in-place construction when the type to construct
|
||||||
|
// needs to be specified, such as with base::unique_any, designed to be a
|
||||||
|
// drop-in replacement.
|
||||||
|
|
||||||
|
// Specification:
|
||||||
|
// http://en.cppreference.com/w/cpp/utility/in_place
|
||||||
|
template <typename T>
|
||||||
|
struct in_place_type_t {};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct is_in_place_type_t {
|
||||||
|
static constexpr bool value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename... Ts>
|
||||||
|
struct is_in_place_type_t<in_place_type_t<Ts...>> {
|
||||||
|
static constexpr bool value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
// C++14 implementation of C++17's std::bool_constant.
|
||||||
|
//
|
||||||
|
// Reference: https://en.cppreference.com/w/cpp/types/integral_constant
|
||||||
|
// Specification: https://wg21.link/meta.type.synop
|
||||||
|
template <bool B>
|
||||||
|
using bool_constant = std::integral_constant<bool, B>;
|
||||||
|
|
||||||
|
// C++14 implementation of C++17's std::conjunction.
|
||||||
|
//
|
||||||
|
// Reference: https://en.cppreference.com/w/cpp/types/conjunction
|
||||||
|
// Specification: https://wg21.link/meta.logical#1.itemdecl:1
|
||||||
|
template <typename...>
|
||||||
|
struct conjunction : std::true_type {};
|
||||||
|
|
||||||
|
template <typename B1>
|
||||||
|
struct conjunction<B1> : B1 {};
|
||||||
|
|
||||||
|
template <typename B1, typename... Bn>
|
||||||
|
struct conjunction<B1, Bn...>
|
||||||
|
: std::conditional_t<static_cast<bool>(B1::value), conjunction<Bn...>, B1> {
|
||||||
|
};
|
||||||
|
|
||||||
|
// C++14 implementation of C++17's std::disjunction.
|
||||||
|
//
|
||||||
|
// Reference: https://en.cppreference.com/w/cpp/types/disjunction
|
||||||
|
// Specification: https://wg21.link/meta.logical#itemdecl:2
|
||||||
|
template <typename...>
|
||||||
|
struct disjunction : std::false_type {};
|
||||||
|
|
||||||
|
template <typename B1>
|
||||||
|
struct disjunction<B1> : B1 {};
|
||||||
|
|
||||||
|
template <typename B1, typename... Bn>
|
||||||
|
struct disjunction<B1, Bn...>
|
||||||
|
: std::conditional_t<static_cast<bool>(B1::value), B1, disjunction<Bn...>> {
|
||||||
|
};
|
||||||
|
|
||||||
|
// C++14 implementation of C++17's std::negation.
|
||||||
|
//
|
||||||
|
// Reference: https://en.cppreference.com/w/cpp/types/negation
|
||||||
|
// Specification: https://wg21.link/meta.logical#itemdecl:3
|
||||||
|
template <typename B>
|
||||||
|
struct negation : bool_constant<!static_cast<bool>(B::value)> {};
|
||||||
|
|
||||||
|
// Implementation of C++17's invoke_result.
|
||||||
|
//
|
||||||
|
// This implementation adds references to `Functor` and `Args` to work around
|
||||||
|
// some quirks of std::result_of. See the #Notes section of [1] for details.
|
||||||
|
//
|
||||||
|
// References:
|
||||||
|
// [1] https://en.cppreference.com/w/cpp/types/result_of
|
||||||
|
// [2] https://wg21.link/meta.trans.other#lib:invoke_result
|
||||||
|
#if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
|
||||||
|
template <typename Functor, typename... Args>
|
||||||
|
using invoke_result = std::invoke_result<Functor, Args...>;
|
||||||
|
#else
|
||||||
|
template <typename Functor, typename... Args>
|
||||||
|
using invoke_result = std::result_of<Functor && (Args && ...)>;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Implementation of C++17's std::invoke_result_t.
|
||||||
|
//
|
||||||
|
// Reference: https://wg21.link/meta.type.synop#lib:invoke_result_t
|
||||||
|
template <typename Functor, typename... Args>
|
||||||
|
using invoke_result_t = typename invoke_result<Functor, Args...>::type;
|
||||||
|
|
||||||
|
namespace internal {
|
||||||
|
|
||||||
|
// Base case, `InvokeResult` does not have a nested type member. This means `F`
|
||||||
|
// could not be invoked with `Args...` and thus is not invocable.
|
||||||
|
template <typename InvokeResult, typename R, typename = void>
|
||||||
|
struct IsInvocableImpl : std::false_type {};
|
||||||
|
|
||||||
|
// Happy case, `InvokeResult` does have a nested type member. Now check whether
|
||||||
|
// `InvokeResult::type` is convertible to `R`. Short circuit in case
|
||||||
|
// `std::is_void<R>`.
|
||||||
|
template <typename InvokeResult, typename R>
|
||||||
|
struct IsInvocableImpl<InvokeResult, R, void_t<typename InvokeResult::type>>
|
||||||
|
: disjunction<std::is_void<R>,
|
||||||
|
std::is_convertible<typename InvokeResult::type, R>> {};
|
||||||
|
|
||||||
|
} // namespace internal
|
||||||
|
|
||||||
|
// Implementation of C++17's std::is_invocable_r.
|
||||||
|
//
|
||||||
|
// Returns whether `F` can be invoked with `Args...` and the result is
|
||||||
|
// convertible to `R`.
|
||||||
|
//
|
||||||
|
// Reference: https://wg21.link/meta.rel#lib:is_invocable_r
|
||||||
|
template <typename R, typename F, typename... Args>
|
||||||
|
struct is_invocable_r
|
||||||
|
: internal::IsInvocableImpl<invoke_result<F, Args...>, R> {};
|
||||||
|
|
||||||
|
// Implementation of C++17's std::is_invocable.
|
||||||
|
//
|
||||||
|
// Returns whether `F` can be invoked with `Args...`.
|
||||||
|
//
|
||||||
|
// Reference: https://wg21.link/meta.rel#lib:is_invocable
|
||||||
|
template <typename F, typename... Args>
|
||||||
|
struct is_invocable : is_invocable_r<void, F, Args...> {};
|
||||||
|
|
||||||
|
namespace internal {
|
||||||
|
|
||||||
|
// The indirection with std::is_enum<T> is required, because instantiating
|
||||||
|
// std::underlying_type_t<T> when T is not an enum is UB prior to C++20.
|
||||||
|
template <typename T, bool = std::is_enum<T>::value>
|
||||||
|
struct IsScopedEnumImpl : std::false_type {};
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
struct IsScopedEnumImpl<T, /*std::is_enum<T>::value=*/true>
|
||||||
|
: negation<std::is_convertible<T, std::underlying_type_t<T>>> {};
|
||||||
|
|
||||||
|
} // namespace internal
|
||||||
|
|
||||||
|
// Implementation of C++23's std::is_scoped_enum
|
||||||
|
//
|
||||||
|
// Reference: https://en.cppreference.com/w/cpp/types/is_scoped_enum
|
||||||
|
template <typename T>
|
||||||
|
struct is_scoped_enum : internal::IsScopedEnumImpl<T> {};
|
||||||
|
|
||||||
|
// Implementation of C++20's std::remove_cvref.
|
||||||
|
//
|
||||||
|
// References:
|
||||||
|
// - https://en.cppreference.com/w/cpp/types/remove_cvref
|
||||||
|
// - https://wg21.link/meta.trans.other#lib:remove_cvref
|
||||||
|
template <typename T>
|
||||||
|
struct remove_cvref {
|
||||||
|
using type = std::remove_cv_t<std::remove_reference_t<T>>;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Implementation of C++20's std::remove_cvref_t.
|
||||||
|
//
|
||||||
|
// References:
|
||||||
|
// - https://en.cppreference.com/w/cpp/types/remove_cvref
|
||||||
|
// - https://wg21.link/meta.type.synop#lib:remove_cvref_t
|
||||||
|
template <typename T>
|
||||||
|
using remove_cvref_t = typename remove_cvref<T>::type;
|
||||||
|
|
||||||
|
// Simplified implementation of C++20's std::iter_value_t.
|
||||||
|
// As opposed to std::iter_value_t, this implementation does not restrict
|
||||||
|
// the type of `Iter` and does not consider specializations of
|
||||||
|
// `indirectly_readable_traits`.
|
||||||
|
//
|
||||||
|
// Reference: https://wg21.link/readable.traits#2
|
||||||
|
template <typename Iter>
|
||||||
|
using iter_value_t =
|
||||||
|
typename std::iterator_traits<remove_cvref_t<Iter>>::value_type;
|
||||||
|
|
||||||
|
// Simplified implementation of C++20's std::iter_reference_t.
|
||||||
|
// As opposed to std::iter_reference_t, this implementation does not restrict
|
||||||
|
// the type of `Iter`.
|
||||||
|
//
|
||||||
|
// Reference: https://wg21.link/iterator.synopsis#:~:text=iter_reference_t
|
||||||
|
template <typename Iter>
|
||||||
|
using iter_reference_t = decltype(*std::declval<Iter&>());
|
||||||
|
|
||||||
|
// Simplified implementation of C++20's std::indirect_result_t. As opposed to
|
||||||
|
// std::indirect_result_t, this implementation does not restrict the type of
|
||||||
|
// `Func` and `Iters`.
|
||||||
|
//
|
||||||
|
// Reference: https://wg21.link/iterator.synopsis#:~:text=indirect_result_t
|
||||||
|
template <typename Func, typename... Iters>
|
||||||
|
using indirect_result_t = invoke_result_t<Func, iter_reference_t<Iters>...>;
|
||||||
|
|
||||||
|
// Simplified implementation of C++20's std::projected. As opposed to
|
||||||
|
// std::projected, this implementation does not explicitly restrict the type of
|
||||||
|
// `Iter` and `Proj`, but rather does so implicitly by requiring
|
||||||
|
// `indirect_result_t<Proj, Iter>` is a valid type. This is required for SFINAE
|
||||||
|
// friendliness.
|
||||||
|
//
|
||||||
|
// Reference: https://wg21.link/projected
|
||||||
|
template <typename Iter,
|
||||||
|
typename Proj,
|
||||||
|
typename IndirectResultT = indirect_result_t<Proj, Iter>>
|
||||||
|
struct projected {
|
||||||
|
using value_type = remove_cvref_t<IndirectResultT>;
|
||||||
|
|
||||||
|
IndirectResultT operator*() const; // not defined
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace base
|
||||||
|
|
||||||
|
#undef CR_USE_FALLBACKS_FOR_GCC_WITH_LIBCXX
|
||||||
|
#undef CR_USE_FALLBACKS_FOR_OLD_EXPERIMENTAL_GLIBCXX
|
||||||
|
|
||||||
|
#endif // !USING_CHROMIUM_INCLUDES
|
||||||
|
|
||||||
|
#endif // CEF_INCLUDE_BASE_CEF_TEMPLATE_UTIL_H_
|
@@ -145,6 +145,14 @@
|
|||||||
/// free(str); // Trace system now has dangling pointer
|
/// free(str); // Trace system now has dangling pointer
|
||||||
/// </pre>
|
/// </pre>
|
||||||
///
|
///
|
||||||
|
/// To avoid this issue with the |name| and |arg_name| parameters, use the
|
||||||
|
/// TRACE_EVENT_COPY_XXX overloads of the macros at additional runtime
|
||||||
|
/// overhead.
|
||||||
|
///
|
||||||
|
/// Notes: The category must always be in a long-lived char* (i.e. static
|
||||||
|
/// const). The |arg_values|, when used, are always deep copied with
|
||||||
|
/// the _COPY macros.
|
||||||
|
///
|
||||||
///
|
///
|
||||||
/// Thread Safety:
|
/// Thread Safety:
|
||||||
/// All macros are thread safe and can be used from any process.
|
/// All macros are thread safe and can be used from any process.
|
||||||
@@ -171,15 +179,15 @@
|
|||||||
/// - category and name strings must have application lifetime (statics or
|
/// - category and name strings must have application lifetime (statics or
|
||||||
/// literals). They may not include " chars.
|
/// literals). They may not include " chars.
|
||||||
///
|
///
|
||||||
#define TRACE_EVENT0(category, name) \
|
#define TRACE_EVENT0(category, name) \
|
||||||
cef_trace_event_begin(category, name, NULL, 0, NULL, 0); \
|
cef_trace_event_begin(category, name, NULL, 0, NULL, 0, false); \
|
||||||
CEF_INTERNAL_TRACE_END_ON_SCOPE_CLOSE(category, name)
|
CEF_INTERNAL_TRACE_END_ON_SCOPE_CLOSE(category, name)
|
||||||
#define TRACE_EVENT1(category, name, arg1_name, arg1_val) \
|
#define TRACE_EVENT1(category, name, arg1_name, arg1_val) \
|
||||||
cef_trace_event_begin(category, name, arg1_name, arg1_val, NULL, 0); \
|
cef_trace_event_begin(category, name, arg1_name, arg1_val, NULL, 0, false); \
|
||||||
CEF_INTERNAL_TRACE_END_ON_SCOPE_CLOSE(category, name)
|
CEF_INTERNAL_TRACE_END_ON_SCOPE_CLOSE(category, name)
|
||||||
#define TRACE_EVENT2(category, name, arg1_name, arg1_val, arg2_name, arg2_val) \
|
#define TRACE_EVENT2(category, name, arg1_name, arg1_val, arg2_name, arg2_val) \
|
||||||
cef_trace_event_begin(category, name, arg1_name, arg1_val, arg2_name, \
|
cef_trace_event_begin(category, name, arg1_name, arg1_val, arg2_name, \
|
||||||
arg2_val); \
|
arg2_val, false); \
|
||||||
CEF_INTERNAL_TRACE_END_ON_SCOPE_CLOSE(category, name)
|
CEF_INTERNAL_TRACE_END_ON_SCOPE_CLOSE(category, name)
|
||||||
|
|
||||||
// Implementation detail: trace event macros create temporary variable names.
|
// Implementation detail: trace event macros create temporary variable names.
|
||||||
@@ -203,13 +211,21 @@
|
|||||||
/// literals). They may not include " chars.
|
/// literals). They may not include " chars.
|
||||||
///
|
///
|
||||||
#define TRACE_EVENT_INSTANT0(category, name) \
|
#define TRACE_EVENT_INSTANT0(category, name) \
|
||||||
cef_trace_event_instant(category, name, NULL, 0, NULL, 0)
|
cef_trace_event_instant(category, name, NULL, 0, NULL, 0, false)
|
||||||
#define TRACE_EVENT_INSTANT1(category, name, arg1_name, arg1_val) \
|
#define TRACE_EVENT_INSTANT1(category, name, arg1_name, arg1_val) \
|
||||||
cef_trace_event_instant(category, name, arg1_name, arg1_val, NULL, 0)
|
cef_trace_event_instant(category, name, arg1_name, arg1_val, NULL, 0, false)
|
||||||
#define TRACE_EVENT_INSTANT2(category, name, arg1_name, arg1_val, arg2_name, \
|
#define TRACE_EVENT_INSTANT2(category, name, arg1_name, arg1_val, arg2_name, \
|
||||||
arg2_val) \
|
arg2_val) \
|
||||||
cef_trace_event_instant(category, name, arg1_name, arg1_val, arg2_name, \
|
cef_trace_event_instant(category, name, arg1_name, arg1_val, arg2_name, \
|
||||||
arg2_val)
|
arg2_val, false)
|
||||||
|
#define TRACE_EVENT_COPY_INSTANT0(category, name) \
|
||||||
|
cef_trace_event_instant(category, name, NULL, 0, NULL, 0, true)
|
||||||
|
#define TRACE_EVENT_COPY_INSTANT1(category, name, arg1_name, arg1_val) \
|
||||||
|
cef_trace_event_instant(category, name, arg1_name, arg1_val, NULL, 0, true)
|
||||||
|
#define TRACE_EVENT_COPY_INSTANT2(category, name, arg1_name, arg1_val, \
|
||||||
|
arg2_name, arg2_val) \
|
||||||
|
cef_trace_event_instant(category, name, arg1_name, arg1_val, arg2_name, \
|
||||||
|
arg2_val, true)
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Records a single BEGIN event called "name" immediately, with 0, 1 or 2
|
/// Records a single BEGIN event called "name" immediately, with 0, 1 or 2
|
||||||
@@ -219,13 +235,21 @@
|
|||||||
/// literals). They may not include " chars.
|
/// literals). They may not include " chars.
|
||||||
///
|
///
|
||||||
#define TRACE_EVENT_BEGIN0(category, name) \
|
#define TRACE_EVENT_BEGIN0(category, name) \
|
||||||
cef_trace_event_begin(category, name, NULL, 0, NULL, 0)
|
cef_trace_event_begin(category, name, NULL, 0, NULL, 0, false)
|
||||||
#define TRACE_EVENT_BEGIN1(category, name, arg1_name, arg1_val) \
|
#define TRACE_EVENT_BEGIN1(category, name, arg1_name, arg1_val) \
|
||||||
cef_trace_event_begin(category, name, arg1_name, arg1_val, NULL, 0)
|
cef_trace_event_begin(category, name, arg1_name, arg1_val, NULL, 0, false)
|
||||||
#define TRACE_EVENT_BEGIN2(category, name, arg1_name, arg1_val, arg2_name, \
|
#define TRACE_EVENT_BEGIN2(category, name, arg1_name, arg1_val, arg2_name, \
|
||||||
arg2_val) \
|
arg2_val) \
|
||||||
cef_trace_event_begin(category, name, arg1_name, arg1_val, arg2_name, \
|
cef_trace_event_begin(category, name, arg1_name, arg1_val, arg2_name, \
|
||||||
arg2_val)
|
arg2_val, false)
|
||||||
|
#define TRACE_EVENT_COPY_BEGIN0(category, name) \
|
||||||
|
cef_trace_event_begin(category, name, NULL, 0, NULL, 0, true)
|
||||||
|
#define TRACE_EVENT_COPY_BEGIN1(category, name, arg1_name, arg1_val) \
|
||||||
|
cef_trace_event_begin(category, name, arg1_name, arg1_val, NULL, 0, true)
|
||||||
|
#define TRACE_EVENT_COPY_BEGIN2(category, name, arg1_name, arg1_val, \
|
||||||
|
arg2_name, arg2_val) \
|
||||||
|
cef_trace_event_begin(category, name, arg1_name, arg1_val, arg2_name, \
|
||||||
|
arg2_val, true)
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Records a single END event for "name" immediately. If the category
|
/// Records a single END event for "name" immediately. If the category
|
||||||
@@ -234,12 +258,21 @@
|
|||||||
/// literals). They may not include " chars.
|
/// literals). They may not include " chars.
|
||||||
///
|
///
|
||||||
#define TRACE_EVENT_END0(category, name) \
|
#define TRACE_EVENT_END0(category, name) \
|
||||||
cef_trace_event_end(category, name, NULL, 0, NULL, 0)
|
cef_trace_event_end(category, name, NULL, 0, NULL, 0, false)
|
||||||
#define TRACE_EVENT_END1(category, name, arg1_name, arg1_val) \
|
#define TRACE_EVENT_END1(category, name, arg1_name, arg1_val) \
|
||||||
cef_trace_event_end(category, name, arg1_name, arg1_val, NULL, 0)
|
cef_trace_event_end(category, name, arg1_name, arg1_val, NULL, 0, false)
|
||||||
#define TRACE_EVENT_END2(category, name, arg1_name, arg1_val, arg2_name, \
|
#define TRACE_EVENT_END2(category, name, arg1_name, arg1_val, arg2_name, \
|
||||||
arg2_val) \
|
arg2_val) \
|
||||||
cef_trace_event_end(category, name, arg1_name, arg1_val, arg2_name, arg2_val)
|
cef_trace_event_end(category, name, arg1_name, arg1_val, arg2_name, \
|
||||||
|
arg2_val, false)
|
||||||
|
#define TRACE_EVENT_COPY_END0(category, name) \
|
||||||
|
cef_trace_event_end(category, name, NULL, 0, NULL, 0, true)
|
||||||
|
#define TRACE_EVENT_COPY_END1(category, name, arg1_name, arg1_val) \
|
||||||
|
cef_trace_event_end(category, name, arg1_name, arg1_val, NULL, 0, true)
|
||||||
|
#define TRACE_EVENT_COPY_END2(category, name, arg1_name, arg1_val, arg2_name, \
|
||||||
|
arg2_val) \
|
||||||
|
cef_trace_event_end(category, name, arg1_name, arg1_val, arg2_name, \
|
||||||
|
arg2_val, true)
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Records the value of a counter called "name" immediately. Value
|
/// Records the value of a counter called "name" immediately. Value
|
||||||
@@ -248,7 +281,9 @@
|
|||||||
/// literals). They may not include " chars.
|
/// literals). They may not include " chars.
|
||||||
///
|
///
|
||||||
#define TRACE_COUNTER1(category, name, value) \
|
#define TRACE_COUNTER1(category, name, value) \
|
||||||
cef_trace_counter(category, name, NULL, value, NULL, 0)
|
cef_trace_counter(category, name, NULL, value, NULL, 0, false)
|
||||||
|
#define TRACE_COPY_COUNTER1(category, name, value) \
|
||||||
|
cef_trace_counter(category, name, NULL, value, NULL, 0, true)
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Records the values of a multi-parted counter called "name" immediately.
|
/// Records the values of a multi-parted counter called "name" immediately.
|
||||||
@@ -260,7 +295,11 @@
|
|||||||
#define TRACE_COUNTER2(category, name, value1_name, value1_val, value2_name, \
|
#define TRACE_COUNTER2(category, name, value1_name, value1_val, value2_name, \
|
||||||
value2_val) \
|
value2_val) \
|
||||||
cef_trace_counter(category, name, value1_name, value1_val, value2_name, \
|
cef_trace_counter(category, name, value1_name, value1_val, value2_name, \
|
||||||
value2_val)
|
value2_val, false)
|
||||||
|
#define TRACE_COPY_COUNTER2(category, name, value1_name, value1_val, \
|
||||||
|
value2_name, value2_val) \
|
||||||
|
cef_trace_counter(category, name, value1_name, value1_val, value2_name, \
|
||||||
|
value2_val, true)
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Records the value of a counter called "name" immediately. Value
|
/// Records the value of a counter called "name" immediately. Value
|
||||||
@@ -273,7 +312,9 @@
|
|||||||
/// on two different processes will not collide.
|
/// on two different processes will not collide.
|
||||||
///
|
///
|
||||||
#define TRACE_COUNTER_ID1(category, name, id, value) \
|
#define TRACE_COUNTER_ID1(category, name, id, value) \
|
||||||
cef_trace_counter_id(category, name, id, NULL, value, NULL, 0)
|
cef_trace_counter_id(category, name, id, NULL, value, NULL, 0, false)
|
||||||
|
#define TRACE_COPY_COUNTER_ID1(category, name, id, value) \
|
||||||
|
cef_trace_counter_id(category, name, id, NULL, value, NULL, 0, true)
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Records the values of a multi-parted counter called "name" immediately.
|
/// Records the values of a multi-parted counter called "name" immediately.
|
||||||
@@ -289,7 +330,11 @@
|
|||||||
#define TRACE_COUNTER_ID2(category, name, id, value1_name, value1_val, \
|
#define TRACE_COUNTER_ID2(category, name, id, value1_name, value1_val, \
|
||||||
value2_name, value2_val) \
|
value2_name, value2_val) \
|
||||||
cef_trace_counter_id(category, name, id, value1_name, value1_val, \
|
cef_trace_counter_id(category, name, id, value1_name, value1_val, \
|
||||||
value2_name, value2_val)
|
value2_name, value2_val, false)
|
||||||
|
#define TRACE_COPY_COUNTER_ID2(category, name, id, value1_name, value1_val, \
|
||||||
|
value2_name, value2_val) \
|
||||||
|
cef_trace_counter_id(category, name, id, value1_name, value1_val, \
|
||||||
|
value2_name, value2_val, true)
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Records a single ASYNC_BEGIN event called "name" immediately, with 0, 1 or 2
|
/// Records a single ASYNC_BEGIN event called "name" immediately, with 0, 1 or 2
|
||||||
@@ -310,13 +355,23 @@
|
|||||||
/// args.
|
/// args.
|
||||||
///
|
///
|
||||||
#define TRACE_EVENT_ASYNC_BEGIN0(category, name, id) \
|
#define TRACE_EVENT_ASYNC_BEGIN0(category, name, id) \
|
||||||
cef_trace_event_async_begin(category, name, id, NULL, 0, NULL, 0)
|
cef_trace_event_async_begin(category, name, id, NULL, 0, NULL, 0, false)
|
||||||
#define TRACE_EVENT_ASYNC_BEGIN1(category, name, id, arg1_name, arg1_val) \
|
#define TRACE_EVENT_ASYNC_BEGIN1(category, name, id, arg1_name, arg1_val) \
|
||||||
cef_trace_event_async_begin(category, name, id, arg1_name, arg1_val, NULL, 0)
|
cef_trace_event_async_begin(category, name, id, arg1_name, arg1_val, NULL, \
|
||||||
|
0, false)
|
||||||
#define TRACE_EVENT_ASYNC_BEGIN2(category, name, id, arg1_name, arg1_val, \
|
#define TRACE_EVENT_ASYNC_BEGIN2(category, name, id, arg1_name, arg1_val, \
|
||||||
arg2_name, arg2_val) \
|
arg2_name, arg2_val) \
|
||||||
cef_trace_event_async_begin(category, name, id, arg1_name, arg1_val, \
|
cef_trace_event_async_begin(category, name, id, arg1_name, arg1_val, \
|
||||||
arg2_name, arg2_val)
|
arg2_name, arg2_val, false)
|
||||||
|
#define TRACE_EVENT_COPY_ASYNC_BEGIN0(category, name, id) \
|
||||||
|
cef_trace_event_async_begin(category, name, id, NULL, 0, NULL, 0, true)
|
||||||
|
#define TRACE_EVENT_COPY_ASYNC_BEGIN1(category, name, id, arg1_name, arg1_val) \
|
||||||
|
cef_trace_event_async_begin(category, name, id, arg1_name, arg1_val, NULL, \
|
||||||
|
0, true)
|
||||||
|
#define TRACE_EVENT_COPY_ASYNC_BEGIN2(category, name, id, arg1_name, arg1_val, \
|
||||||
|
arg2_name, arg2_val) \
|
||||||
|
cef_trace_event_async_begin(category, name, id, arg1_name, arg1_val, \
|
||||||
|
arg2_name, arg2_val, true)
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Records a single ASYNC_STEP_INTO event for |step| immediately. If the
|
/// Records a single ASYNC_STEP_INTO event for |step| immediately. If the
|
||||||
@@ -327,10 +382,17 @@
|
|||||||
/// ASYNC_STEP_PAST events.
|
/// ASYNC_STEP_PAST events.
|
||||||
///
|
///
|
||||||
#define TRACE_EVENT_ASYNC_STEP_INTO0(category, name, id, step) \
|
#define TRACE_EVENT_ASYNC_STEP_INTO0(category, name, id, step) \
|
||||||
cef_trace_event_async_step_into(category, name, id, step, NULL, 0)
|
cef_trace_event_async_step_into(category, name, id, step, NULL, 0, false)
|
||||||
#define TRACE_EVENT_ASYNC_STEP_INTO1(category, name, id, step, arg1_name, \
|
#define TRACE_EVENT_ASYNC_STEP_INTO1(category, name, id, step, arg1_name, \
|
||||||
arg1_val) \
|
arg1_val) \
|
||||||
cef_trace_event_async_step_into(category, name, id, step, arg1_name, arg1_val)
|
cef_trace_event_async_step_into(category, name, id, step, arg1_name, \
|
||||||
|
arg1_val, false)
|
||||||
|
#define TRACE_EVENT_COPY_ASYNC_STEP_INTO0(category, name, id, step) \
|
||||||
|
cef_trace_event_async_step_into(category, name, id, step, NULL, 0, true)
|
||||||
|
#define TRACE_EVENT_COPY_ASYNC_STEP_INTO1(category, name, id, step, arg1_name, \
|
||||||
|
arg1_val) \
|
||||||
|
cef_trace_event_async_step_into(category, name, id, step, arg1_name, \
|
||||||
|
arg1_val, true)
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Records a single ASYNC_STEP_PAST event for |step| immediately. If the
|
/// Records a single ASYNC_STEP_PAST event for |step| immediately. If the
|
||||||
@@ -341,23 +403,40 @@
|
|||||||
/// ASYNC_STEP_INTO events.
|
/// ASYNC_STEP_INTO events.
|
||||||
///
|
///
|
||||||
#define TRACE_EVENT_ASYNC_STEP_PAST0(category, name, id, step) \
|
#define TRACE_EVENT_ASYNC_STEP_PAST0(category, name, id, step) \
|
||||||
cef_trace_event_async_step_past(category, name, id, step, NULL, 0)
|
cef_trace_event_async_step_past(category, name, id, step, NULL, 0, false)
|
||||||
#define TRACE_EVENT_ASYNC_STEP_PAST1(category, name, id, step, arg1_name, \
|
#define TRACE_EVENT_ASYNC_STEP_PAST1(category, name, id, step, arg1_name, \
|
||||||
arg1_val) \
|
arg1_val) \
|
||||||
cef_trace_event_async_step_past(category, name, id, step, arg1_name, arg1_val)
|
cef_trace_event_async_step_past(category, name, id, step, arg1_name, \
|
||||||
|
arg1_val, false)
|
||||||
|
#define TRACE_EVENT_COPY_ASYNC_STEP_PAST0(category, name, id, step) \
|
||||||
|
cef_trace_event_async_step_past(category, name, id, step, NULL, 0, true)
|
||||||
|
#define TRACE_EVENT_COPY_ASYNC_STEP_PAST1(category, name, id, step, arg1_name, \
|
||||||
|
arg1_val) \
|
||||||
|
cef_trace_event_async_step_past(category, name, id, step, arg1_name, \
|
||||||
|
arg1_val, true)
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Records a single ASYNC_END event for "name" immediately. If the category
|
/// Records a single ASYNC_END event for "name" immediately. If the category
|
||||||
/// is not enabled, then this does nothing.
|
/// is not enabled, then this does nothing.
|
||||||
///
|
///
|
||||||
#define TRACE_EVENT_ASYNC_END0(category, name, id) \
|
#define TRACE_EVENT_ASYNC_END0(category, name, id) \
|
||||||
cef_trace_event_async_end(category, name, id, NULL, 0, NULL, 0)
|
cef_trace_event_async_end(category, name, id, NULL, 0, NULL, 0, false)
|
||||||
#define TRACE_EVENT_ASYNC_END1(category, name, id, arg1_name, arg1_val) \
|
#define TRACE_EVENT_ASYNC_END1(category, name, id, arg1_name, arg1_val) \
|
||||||
cef_trace_event_async_end(category, name, id, arg1_name, arg1_val, NULL, 0)
|
cef_trace_event_async_end(category, name, id, arg1_name, arg1_val, NULL, 0, \
|
||||||
|
false)
|
||||||
#define TRACE_EVENT_ASYNC_END2(category, name, id, arg1_name, arg1_val, \
|
#define TRACE_EVENT_ASYNC_END2(category, name, id, arg1_name, arg1_val, \
|
||||||
arg2_name, arg2_val) \
|
arg2_name, arg2_val) \
|
||||||
cef_trace_event_async_end(category, name, id, arg1_name, arg1_val, \
|
cef_trace_event_async_end(category, name, id, arg1_name, arg1_val, \
|
||||||
arg2_name, arg2_val)
|
arg2_name, arg2_val, false)
|
||||||
|
#define TRACE_EVENT_COPY_ASYNC_END0(category, name, id) \
|
||||||
|
cef_trace_event_async_end(category, name, id, NULL, 0, NULL, 0, true)
|
||||||
|
#define TRACE_EVENT_COPY_ASYNC_END1(category, name, id, arg1_name, arg1_val) \
|
||||||
|
cef_trace_event_async_end(category, name, id, arg1_name, arg1_val, NULL, 0, \
|
||||||
|
true)
|
||||||
|
#define TRACE_EVENT_COPY_ASYNC_END2(category, name, id, arg1_name, arg1_val, \
|
||||||
|
arg2_name, arg2_val) \
|
||||||
|
cef_trace_event_async_end(category, name, id, arg1_name, arg1_val, \
|
||||||
|
arg2_name, arg2_val, true)
|
||||||
|
|
||||||
namespace cef_trace_event {
|
namespace cef_trace_event {
|
||||||
|
|
||||||
@@ -369,7 +448,7 @@ class CefTraceEndOnScopeClose {
|
|||||||
CefTraceEndOnScopeClose(const char* category, const char* name)
|
CefTraceEndOnScopeClose(const char* category, const char* name)
|
||||||
: category_(category), name_(name) {}
|
: category_(category), name_(name) {}
|
||||||
~CefTraceEndOnScopeClose() {
|
~CefTraceEndOnScopeClose() {
|
||||||
cef_trace_event_end(category_, name_, NULL, 0, NULL, 0);
|
cef_trace_event_end(category_, name_, NULL, 0, NULL, 0, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -66,7 +66,6 @@
|
|||||||
// updated to match.
|
// updated to match.
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
@@ -123,7 +123,7 @@ class SupportsWeakPtr;
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
class WeakPtr;
|
class WeakPtr;
|
||||||
|
|
||||||
namespace cef_internal {
|
namespace internal {
|
||||||
// These classes are part of the WeakPtr implementation.
|
// These classes are part of the WeakPtr implementation.
|
||||||
// DO NOT USE THESE CLASSES DIRECTLY YOURSELF.
|
// DO NOT USE THESE CLASSES DIRECTLY YOURSELF.
|
||||||
|
|
||||||
@@ -197,7 +197,7 @@ class WeakPtrBase {
|
|||||||
WeakPtrBase& operator=(WeakPtrBase&& other) noexcept = default;
|
WeakPtrBase& operator=(WeakPtrBase&& other) noexcept = default;
|
||||||
|
|
||||||
void reset() {
|
void reset() {
|
||||||
ref_ = cef_internal::WeakReference();
|
ref_ = internal::WeakReference();
|
||||||
ptr_ = 0;
|
ptr_ = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -225,7 +225,7 @@ class SupportsWeakPtrBase {
|
|||||||
template <typename Derived>
|
template <typename Derived>
|
||||||
static WeakPtr<Derived> StaticAsWeakPtr(Derived* t) {
|
static WeakPtr<Derived> StaticAsWeakPtr(Derived* t) {
|
||||||
static_assert(
|
static_assert(
|
||||||
std::is_base_of<cef_internal::SupportsWeakPtrBase, Derived>::value,
|
std::is_base_of<internal::SupportsWeakPtrBase, Derived>::value,
|
||||||
"AsWeakPtr argument must inherit from SupportsWeakPtr");
|
"AsWeakPtr argument must inherit from SupportsWeakPtr");
|
||||||
return AsWeakPtrImpl<Derived>(t);
|
return AsWeakPtrImpl<Derived>(t);
|
||||||
}
|
}
|
||||||
@@ -242,7 +242,7 @@ class SupportsWeakPtrBase {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace cef_internal
|
} // namespace internal
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class WeakPtrFactory;
|
class WeakPtrFactory;
|
||||||
@@ -264,7 +264,7 @@ class WeakPtrFactory;
|
|||||||
/// </pre>
|
/// </pre>
|
||||||
///
|
///
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class WeakPtr : public cef_internal::WeakPtrBase {
|
class WeakPtr : public internal::WeakPtrBase {
|
||||||
public:
|
public:
|
||||||
WeakPtr() = default;
|
WeakPtr() = default;
|
||||||
WeakPtr(std::nullptr_t) {}
|
WeakPtr(std::nullptr_t) {}
|
||||||
@@ -325,13 +325,13 @@ class WeakPtr : public cef_internal::WeakPtrBase {
|
|||||||
bool WasInvalidated() const { return ptr_ && !ref_.IsValid(); }
|
bool WasInvalidated() const { return ptr_ && !ref_.IsValid(); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class cef_internal::SupportsWeakPtrBase;
|
friend class internal::SupportsWeakPtrBase;
|
||||||
template <typename U>
|
template <typename U>
|
||||||
friend class WeakPtr;
|
friend class WeakPtr;
|
||||||
friend class SupportsWeakPtr<T>;
|
friend class SupportsWeakPtr<T>;
|
||||||
friend class WeakPtrFactory<T>;
|
friend class WeakPtrFactory<T>;
|
||||||
|
|
||||||
WeakPtr(const cef_internal::WeakReference& ref, T* ptr)
|
WeakPtr(const internal::WeakReference& ref, T* ptr)
|
||||||
: WeakPtrBase(ref, reinterpret_cast<uintptr_t>(ptr)) {}
|
: WeakPtrBase(ref, reinterpret_cast<uintptr_t>(ptr)) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -355,15 +355,15 @@ bool operator==(std::nullptr_t, const WeakPtr<T>& weak_ptr) {
|
|||||||
return weak_ptr == nullptr;
|
return weak_ptr == nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace cef_internal {
|
namespace internal {
|
||||||
class WeakPtrFactoryBase {
|
class WeakPtrFactoryBase {
|
||||||
protected:
|
protected:
|
||||||
WeakPtrFactoryBase(uintptr_t ptr);
|
WeakPtrFactoryBase(uintptr_t ptr);
|
||||||
~WeakPtrFactoryBase();
|
~WeakPtrFactoryBase();
|
||||||
cef_internal::WeakReferenceOwner weak_reference_owner_;
|
internal::WeakReferenceOwner weak_reference_owner_;
|
||||||
uintptr_t ptr_;
|
uintptr_t ptr_;
|
||||||
};
|
};
|
||||||
} // namespace cef_internal
|
} // namespace internal
|
||||||
|
|
||||||
///
|
///
|
||||||
/// A class may be composed of a WeakPtrFactory and thereby control how it
|
/// A class may be composed of a WeakPtrFactory and thereby control how it
|
||||||
@@ -374,7 +374,7 @@ class WeakPtrFactoryBase {
|
|||||||
/// bool.
|
/// bool.
|
||||||
///
|
///
|
||||||
template <class T>
|
template <class T>
|
||||||
class WeakPtrFactory : public cef_internal::WeakPtrFactoryBase {
|
class WeakPtrFactory : public internal::WeakPtrFactoryBase {
|
||||||
public:
|
public:
|
||||||
WeakPtrFactory() = delete;
|
WeakPtrFactory() = delete;
|
||||||
|
|
||||||
@@ -416,7 +416,7 @@ class WeakPtrFactory : public cef_internal::WeakPtrFactoryBase {
|
|||||||
/// destroyed, its use can lead to subtle use-after-destroy issues.
|
/// destroyed, its use can lead to subtle use-after-destroy issues.
|
||||||
///
|
///
|
||||||
template <class T>
|
template <class T>
|
||||||
class SupportsWeakPtr : public cef_internal::SupportsWeakPtrBase {
|
class SupportsWeakPtr : public internal::SupportsWeakPtrBase {
|
||||||
public:
|
public:
|
||||||
SupportsWeakPtr() = default;
|
SupportsWeakPtr() = default;
|
||||||
|
|
||||||
@@ -431,7 +431,7 @@ class SupportsWeakPtr : public cef_internal::SupportsWeakPtrBase {
|
|||||||
~SupportsWeakPtr() = default;
|
~SupportsWeakPtr() = default;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
cef_internal::WeakReferenceOwner weak_reference_owner_;
|
internal::WeakReferenceOwner weak_reference_owner_;
|
||||||
};
|
};
|
||||||
|
|
||||||
///
|
///
|
||||||
@@ -459,7 +459,7 @@ class SupportsWeakPtr : public cef_internal::SupportsWeakPtrBase {
|
|||||||
///
|
///
|
||||||
template <typename Derived>
|
template <typename Derived>
|
||||||
WeakPtr<Derived> AsWeakPtr(Derived* t) {
|
WeakPtr<Derived> AsWeakPtr(Derived* t) {
|
||||||
return cef_internal::SupportsWeakPtrBase::StaticAsWeakPtr<Derived>(t);
|
return internal::SupportsWeakPtrBase::StaticAsWeakPtr<Derived>(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace base
|
} // namespace base
|
||||||
|
@@ -68,6 +68,7 @@
|
|||||||
#include "include/base/cef_build.h"
|
#include "include/base/cef_build.h"
|
||||||
#include "include/base/cef_compiler_specific.h"
|
#include "include/base/cef_compiler_specific.h"
|
||||||
#include "include/base/cef_logging.h"
|
#include "include/base/cef_logging.h"
|
||||||
|
#include "include/base/cef_template_util.h"
|
||||||
#include "include/base/cef_weak_ptr.h"
|
#include "include/base/cef_weak_ptr.h"
|
||||||
#include "include/base/internal/cef_callback_internal.h"
|
#include "include/base/internal/cef_callback_internal.h"
|
||||||
#include "include/base/internal/cef_raw_scoped_refptr_mismatch_checker.h"
|
#include "include/base/internal/cef_raw_scoped_refptr_mismatch_checker.h"
|
||||||
@@ -96,7 +97,7 @@ struct BindUnwrapTraits;
|
|||||||
template <typename Functor, typename BoundArgsTuple, typename SFINAE = void>
|
template <typename Functor, typename BoundArgsTuple, typename SFINAE = void>
|
||||||
struct CallbackCancellationTraits;
|
struct CallbackCancellationTraits;
|
||||||
|
|
||||||
namespace cef_internal {
|
namespace internal {
|
||||||
|
|
||||||
template <typename Functor, typename SFINAE = void>
|
template <typename Functor, typename SFINAE = void>
|
||||||
struct FunctorTraits;
|
struct FunctorTraits;
|
||||||
@@ -355,14 +356,14 @@ template <typename Functor, typename SFINAE = void>
|
|||||||
struct IsCallableObject : std::false_type {};
|
struct IsCallableObject : std::false_type {};
|
||||||
|
|
||||||
template <typename Callable>
|
template <typename Callable>
|
||||||
struct IsCallableObject<Callable, std::void_t<decltype(&Callable::operator())>>
|
struct IsCallableObject<Callable, void_t<decltype(&Callable::operator())>>
|
||||||
: std::true_type {};
|
: std::true_type {};
|
||||||
|
|
||||||
// HasRefCountedTypeAsRawPtr inherits from true_type when any of the |Args| is a
|
// HasRefCountedTypeAsRawPtr inherits from true_type when any of the |Args| is a
|
||||||
// raw pointer to a RefCounted type.
|
// raw pointer to a RefCounted type.
|
||||||
template <typename... Ts>
|
template <typename... Ts>
|
||||||
struct HasRefCountedTypeAsRawPtr
|
struct HasRefCountedTypeAsRawPtr
|
||||||
: std::disjunction<NeedsScopedRefptrButGetsRawPtr<Ts>...> {};
|
: disjunction<NeedsScopedRefptrButGetsRawPtr<Ts>...> {};
|
||||||
|
|
||||||
// ForceVoidReturn<>
|
// ForceVoidReturn<>
|
||||||
//
|
//
|
||||||
@@ -686,9 +687,8 @@ struct InvokeHelper<true, ReturnType> {
|
|||||||
static inline void MakeItSo(Functor&& functor,
|
static inline void MakeItSo(Functor&& functor,
|
||||||
BoundWeakPtr&& weak_ptr,
|
BoundWeakPtr&& weak_ptr,
|
||||||
RunArgs&&... args) {
|
RunArgs&&... args) {
|
||||||
if (!weak_ptr) {
|
if (!weak_ptr)
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
using Traits = MakeFunctorTraits<Functor>;
|
using Traits = MakeFunctorTraits<Functor>;
|
||||||
Traits::Invoke(std::forward<Functor>(functor),
|
Traits::Invoke(std::forward<Functor>(functor),
|
||||||
std::forward<BoundWeakPtr>(weak_ptr),
|
std::forward<BoundWeakPtr>(weak_ptr),
|
||||||
@@ -877,7 +877,7 @@ BanUnconstructedRefCountedReceiver(const Receiver& receiver, Unused&&...) {
|
|||||||
// This stores all the state passed into Bind().
|
// This stores all the state passed into Bind().
|
||||||
template <typename Functor, typename... BoundArgs>
|
template <typename Functor, typename... BoundArgs>
|
||||||
struct BindState final : BindStateBase {
|
struct BindState final : BindStateBase {
|
||||||
using IsCancellable = std::bool_constant<
|
using IsCancellable = bool_constant<
|
||||||
CallbackCancellationTraits<Functor,
|
CallbackCancellationTraits<Functor,
|
||||||
std::tuple<BoundArgs...>>::is_cancellable>;
|
std::tuple<BoundArgs...>>::is_cancellable>;
|
||||||
template <typename ForwardFunctor, typename... ForwardBoundArgs>
|
template <typename ForwardFunctor, typename... ForwardBoundArgs>
|
||||||
@@ -1251,7 +1251,7 @@ decltype(auto) BindImpl(Functor&& functor, Args&&... args) {
|
|||||||
// PolymorphicInvoke, to which CallbackType will cast back.
|
// PolymorphicInvoke, to which CallbackType will cast back.
|
||||||
using PolymorphicInvoke = typename CallbackType::PolymorphicInvoke;
|
using PolymorphicInvoke = typename CallbackType::PolymorphicInvoke;
|
||||||
PolymorphicInvoke invoke_func =
|
PolymorphicInvoke invoke_func =
|
||||||
GetInvokeFunc<Invoker>(std::bool_constant<kIsOnce>());
|
GetInvokeFunc<Invoker>(bool_constant<kIsOnce>());
|
||||||
|
|
||||||
using InvokeFuncStorage = BindStateBase::InvokeFuncStorage;
|
using InvokeFuncStorage = BindStateBase::InvokeFuncStorage;
|
||||||
return CallbackType(BindState::Create(
|
return CallbackType(BindState::Create(
|
||||||
@@ -1259,7 +1259,7 @@ decltype(auto) BindImpl(Functor&& functor, Args&&... args) {
|
|||||||
std::forward<Functor>(functor), std::forward<Args>(args)...));
|
std::forward<Functor>(functor), std::forward<Args>(args)...));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace cef_internal
|
} // namespace internal
|
||||||
|
|
||||||
// An injection point to control |this| pointer behavior on a method invocation.
|
// An injection point to control |this| pointer behavior on a method invocation.
|
||||||
// If IsWeakReceiver<> is true_type for |T| and |T| is used for a receiver of a
|
// If IsWeakReceiver<> is true_type for |T| and |T| is used for a receiver of a
|
||||||
@@ -1303,36 +1303,30 @@ struct BindUnwrapTraits {
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct BindUnwrapTraits<cef_internal::UnretainedWrapper<T>> {
|
struct BindUnwrapTraits<internal::UnretainedWrapper<T>> {
|
||||||
static T* Unwrap(const cef_internal::UnretainedWrapper<T>& o) {
|
static T* Unwrap(const internal::UnretainedWrapper<T>& o) { return o.get(); }
|
||||||
return o.get();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct BindUnwrapTraits<cef_internal::RetainedRefWrapper<T>> {
|
struct BindUnwrapTraits<internal::RetainedRefWrapper<T>> {
|
||||||
static T* Unwrap(const cef_internal::RetainedRefWrapper<T>& o) {
|
static T* Unwrap(const internal::RetainedRefWrapper<T>& o) { return o.get(); }
|
||||||
return o.get();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T, typename Deleter>
|
template <typename T, typename Deleter>
|
||||||
struct BindUnwrapTraits<cef_internal::OwnedWrapper<T, Deleter>> {
|
struct BindUnwrapTraits<internal::OwnedWrapper<T, Deleter>> {
|
||||||
static T* Unwrap(const cef_internal::OwnedWrapper<T, Deleter>& o) {
|
static T* Unwrap(const internal::OwnedWrapper<T, Deleter>& o) {
|
||||||
return o.get();
|
return o.get();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct BindUnwrapTraits<cef_internal::OwnedRefWrapper<T>> {
|
struct BindUnwrapTraits<internal::OwnedRefWrapper<T>> {
|
||||||
static T& Unwrap(const cef_internal::OwnedRefWrapper<T>& o) {
|
static T& Unwrap(const internal::OwnedRefWrapper<T>& o) { return o.get(); }
|
||||||
return o.get();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct BindUnwrapTraits<cef_internal::PassedWrapper<T>> {
|
struct BindUnwrapTraits<internal::PassedWrapper<T>> {
|
||||||
static T Unwrap(const cef_internal::PassedWrapper<T>& o) { return o.Take(); }
|
static T Unwrap(const internal::PassedWrapper<T>& o) { return o.Take(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
#if defined(OS_WIN)
|
#if defined(OS_WIN)
|
||||||
@@ -1356,9 +1350,9 @@ template <typename Functor, typename... BoundArgs>
|
|||||||
struct CallbackCancellationTraits<
|
struct CallbackCancellationTraits<
|
||||||
Functor,
|
Functor,
|
||||||
std::tuple<BoundArgs...>,
|
std::tuple<BoundArgs...>,
|
||||||
std::enable_if_t<cef_internal::IsWeakMethod<
|
std::enable_if_t<
|
||||||
cef_internal::FunctorTraits<Functor>::is_method,
|
internal::IsWeakMethod<internal::FunctorTraits<Functor>::is_method,
|
||||||
BoundArgs...>::value>> {
|
BoundArgs...>::value>> {
|
||||||
static constexpr bool is_cancellable = true;
|
static constexpr bool is_cancellable = true;
|
||||||
|
|
||||||
template <typename Receiver, typename... Args>
|
template <typename Receiver, typename... Args>
|
||||||
|
@@ -43,7 +43,7 @@ namespace base {
|
|||||||
|
|
||||||
struct FakeBindState;
|
struct FakeBindState;
|
||||||
|
|
||||||
namespace cef_internal {
|
namespace internal {
|
||||||
|
|
||||||
class BindStateBase;
|
class BindStateBase;
|
||||||
class FinallyExecutorCommon;
|
class FinallyExecutorCommon;
|
||||||
@@ -269,7 +269,7 @@ struct ThenHelper<OriginalCallback<OriginalR(OriginalArgs...)>,
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace cef_internal
|
} // namespace internal
|
||||||
} // namespace base
|
} // namespace base
|
||||||
|
|
||||||
#endif // CEF_INCLUDE_BASE_INTERNAL_CEF_CALLBACK_INTERNAL_H_
|
#endif // CEF_INCLUDE_BASE_INTERNAL_CEF_CALLBACK_INTERNAL_H_
|
||||||
|
@@ -1,50 +0,0 @@
|
|||||||
// Copyright 2019 The Chromium Authors
|
|
||||||
// Use of this source code is governed by a BSD-style license that can be
|
|
||||||
// found in the LICENSE file.
|
|
||||||
|
|
||||||
// The following macros are used to declare both the color id enumerations and
|
|
||||||
// the stringized names of the enumeration elements for use in dump_colors. To
|
|
||||||
// stringize the element names, define STRINGIZE_COLOR_IDS prior to including
|
|
||||||
// this file. This file is intended to be included just before and just after
|
|
||||||
// the enumeration or string array declarations.
|
|
||||||
|
|
||||||
#if !defined(COLOR_ID_MACROS_DEFINED)
|
|
||||||
#define COLOR_ID_MACROS_DEFINED
|
|
||||||
#if defined(STRINGIZE_COLOR_IDS)
|
|
||||||
// Convert first token to string, throw away the rest.
|
|
||||||
#define D1(enum_name) #enum_name
|
|
||||||
#define D2(enum_name, enum_value) #enum_name
|
|
||||||
#else // defined(STRINGIZE_COLOR_IDS)
|
|
||||||
// Declare enum with optional assigned value.
|
|
||||||
#define D1(enum_name) enum_name
|
|
||||||
#define D2(enum_name, enum_value) enum_name = enum_value
|
|
||||||
#endif // defined(STRINGIZE_COLOR_IDS)
|
|
||||||
// Select which token in the declaration is the assigned value.
|
|
||||||
// Use first and optional third token, ignore optional second.
|
|
||||||
#define E1(enum_name) D1(enum_name)
|
|
||||||
#define E2(enum_name, old_enum_name) D1(enum_name)
|
|
||||||
#define E3(enum_name, old_enum_name, enum_value) D2(enum_name, enum_value)
|
|
||||||
#define GET_E(_1, _2, _3, macro_name, ...) macro_name
|
|
||||||
#if defined(COMPILER_MSVC)
|
|
||||||
// Workaround for MSVC not properly expanding __VA_ARGS__.
|
|
||||||
#define EXPAND(x) x
|
|
||||||
#define E_CPONLY(...) EXPAND(E(__VA_ARGS__))
|
|
||||||
#define E(...) EXPAND(GET_E(__VA_ARGS__, E3, E2, E1)(__VA_ARGS__)),
|
|
||||||
#else // !defined(COMPILER_MSVC)
|
|
||||||
#define E_CPONLY(...) E(__VA_ARGS__)
|
|
||||||
#define E(...) GET_E(__VA_ARGS__, E3, E2, E1)(__VA_ARGS__),
|
|
||||||
#endif // !defined(COMPILER_MSVC)
|
|
||||||
#else // !defined(COLOR_ID_MACROS_DEFINED)
|
|
||||||
#undef D1
|
|
||||||
#undef D2
|
|
||||||
#undef E1
|
|
||||||
#undef E2
|
|
||||||
#undef E3
|
|
||||||
#if defined(COMPILER_MSVC)
|
|
||||||
#undef EXPAND
|
|
||||||
#endif
|
|
||||||
#undef E_CPONLY
|
|
||||||
#undef GET_E
|
|
||||||
#undef E
|
|
||||||
#undef COLOR_ID_MACROS_DEFINED
|
|
||||||
#endif // !defined(COLOR_ID_MACROS_DEFINED)
|
|
@@ -34,6 +34,8 @@
|
|||||||
|
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
|
#include "include/base/cef_template_util.h"
|
||||||
|
|
||||||
// It is dangerous to post a task with a T* argument where T is a subtype of
|
// It is dangerous to post a task with a T* argument where T is a subtype of
|
||||||
// RefCounted(Base|ThreadSafeBase), since by the time the parameter is used, the
|
// RefCounted(Base|ThreadSafeBase), since by the time the parameter is used, the
|
||||||
// object may already have been deleted since it was not held with a
|
// object may already have been deleted since it was not held with a
|
||||||
@@ -45,28 +47,28 @@ namespace base {
|
|||||||
|
|
||||||
// This is a base internal implementation file used by task.h and callback.h.
|
// This is a base internal implementation file used by task.h and callback.h.
|
||||||
// Not for public consumption, so we wrap it in namespace internal.
|
// Not for public consumption, so we wrap it in namespace internal.
|
||||||
namespace cef_internal {
|
namespace internal {
|
||||||
|
|
||||||
template <typename T, typename = void>
|
template <typename T, typename = void>
|
||||||
struct IsRefCountedType : std::false_type {};
|
struct IsRefCountedType : std::false_type {};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct IsRefCountedType<T,
|
struct IsRefCountedType<T,
|
||||||
std::void_t<decltype(std::declval<T*>()->AddRef()),
|
void_t<decltype(std::declval<T*>()->AddRef()),
|
||||||
decltype(std::declval<T*>()->Release())>>
|
decltype(std::declval<T*>()->Release())>>
|
||||||
: std::true_type {};
|
: std::true_type {};
|
||||||
|
|
||||||
// Human readable translation: you needed to be a scoped_refptr if you are a raw
|
// Human readable translation: you needed to be a scoped_refptr if you are a raw
|
||||||
// pointer type and are convertible to a RefCounted(Base|ThreadSafeBase) type.
|
// pointer type and are convertible to a RefCounted(Base|ThreadSafeBase) type.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct NeedsScopedRefptrButGetsRawPtr
|
struct NeedsScopedRefptrButGetsRawPtr
|
||||||
: std::conjunction<std::is_pointer<T>,
|
: conjunction<std::is_pointer<T>,
|
||||||
IsRefCountedType<std::remove_pointer_t<T>>> {
|
IsRefCountedType<std::remove_pointer_t<T>>> {
|
||||||
static_assert(!std::is_reference<T>::value,
|
static_assert(!std::is_reference<T>::value,
|
||||||
"NeedsScopedRefptrButGetsRawPtr requires non-reference type.");
|
"NeedsScopedRefptrButGetsRawPtr requires non-reference type.");
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace cef_internal
|
} // namespace internal
|
||||||
|
|
||||||
} // namespace base
|
} // namespace base
|
||||||
|
|
||||||
|
@@ -38,14 +38,13 @@
|
|||||||
#include "include/base/cef_scoped_typeref_mac.h"
|
#include "include/base/cef_scoped_typeref_mac.h"
|
||||||
|
|
||||||
#if defined(__has_feature) && __has_feature(objc_arc)
|
#if defined(__has_feature) && __has_feature(objc_arc)
|
||||||
#error \
|
#error "Cannot include include/base/internal/cef_scoped_block_mac.h in file built with ARC."
|
||||||
"Cannot include include/base/internal/cef_scoped_block_mac.h in file built with ARC."
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace base {
|
namespace base {
|
||||||
namespace mac {
|
namespace mac {
|
||||||
|
|
||||||
namespace cef_internal {
|
namespace internal {
|
||||||
|
|
||||||
template <typename B>
|
template <typename B>
|
||||||
struct ScopedBlockTraits {
|
struct ScopedBlockTraits {
|
||||||
@@ -54,12 +53,12 @@ struct ScopedBlockTraits {
|
|||||||
static void Release(B block) { Block_release(block); }
|
static void Release(B block) { Block_release(block); }
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace cef_internal
|
} // namespace internal
|
||||||
|
|
||||||
// ScopedBlock<> is patterned after ScopedCFTypeRef<>, but uses Block_copy() and
|
// ScopedBlock<> is patterned after ScopedCFTypeRef<>, but uses Block_copy() and
|
||||||
// Block_release() instead of CFRetain() and CFRelease().
|
// Block_release() instead of CFRetain() and CFRelease().
|
||||||
template <typename B>
|
template <typename B>
|
||||||
using ScopedBlock = ScopedTypeRef<B, cef_internal::ScopedBlockTraits<B>>;
|
using ScopedBlock = ScopedTypeRef<B, internal::ScopedBlockTraits<B>>;
|
||||||
|
|
||||||
} // namespace mac
|
} // namespace mac
|
||||||
} // namespace base
|
} // namespace base
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=32279f653514bd05dea3d5d8e6b852530a90ee2e$
|
// $hash=6bdc0ce413420b45510fcc7f415c6a6fb05f0112$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_ACCESSIBILITY_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_ACCESSIBILITY_HANDLER_CAPI_H_
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=a2deeda24cb730b4e212514fde833414b450559d$
|
// $hash=2f4bdc6adde5defdc86dbb5c998266d6372dd164$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_APP_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_APP_CAPI_H_
|
||||||
@@ -91,9 +91,11 @@ typedef struct _cef_app_t {
|
|||||||
struct _cef_scheme_registrar_t* registrar);
|
struct _cef_scheme_registrar_t* registrar);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Return the handler for resource bundle events. If no handler is returned
|
/// Return the handler for resource bundle events. If
|
||||||
/// resources will be loaded from pack files. This function is called by the
|
/// cef_settings_t.pack_loading_disabled is true (1) a handler must be
|
||||||
/// browser and render processes on multiple threads.
|
/// returned. If no handler is returned resources will be loaded from pack
|
||||||
|
/// files. This function is called by the browser and render processes on
|
||||||
|
/// multiple threads.
|
||||||
///
|
///
|
||||||
struct _cef_resource_bundle_handler_t*(
|
struct _cef_resource_bundle_handler_t*(
|
||||||
CEF_CALLBACK* get_resource_bundle_handler)(struct _cef_app_t* self);
|
CEF_CALLBACK* get_resource_bundle_handler)(struct _cef_app_t* self);
|
||||||
@@ -131,34 +133,19 @@ CEF_EXPORT int cef_execute_process(const cef_main_args_t* args,
|
|||||||
|
|
||||||
///
|
///
|
||||||
/// This function should be called on the main application thread to initialize
|
/// This function should be called on the main application thread to initialize
|
||||||
/// the CEF browser process. The |application| parameter may be NULL. Returns
|
/// the CEF browser process. The |application| parameter may be NULL. A return
|
||||||
/// true (1) if initialization succeeds. Returns false (0) if initialization
|
/// value of true (1) indicates that it succeeded and false (0) indicates that
|
||||||
/// fails or if early exit is desired (for example, due to process singleton
|
/// it failed. The |windows_sandbox_info| parameter is only used on Windows and
|
||||||
/// relaunch behavior). If this function returns false (0) then the application
|
/// may be NULL (see cef_sandbox_win.h for details).
|
||||||
/// should exit immediately without calling any other CEF functions except,
|
|
||||||
/// optionally, CefGetErrorCode. The |windows_sandbox_info| parameter is only
|
|
||||||
/// used on Windows and may be NULL (see cef_sandbox_win.h for details).
|
|
||||||
///
|
///
|
||||||
CEF_EXPORT int cef_initialize(const cef_main_args_t* args,
|
CEF_EXPORT int cef_initialize(const cef_main_args_t* args,
|
||||||
const struct _cef_settings_t* settings,
|
const struct _cef_settings_t* settings,
|
||||||
cef_app_t* application,
|
cef_app_t* application,
|
||||||
void* windows_sandbox_info);
|
void* windows_sandbox_info);
|
||||||
|
|
||||||
///
|
|
||||||
/// This function can optionally be called on the main application thread after
|
|
||||||
/// CefInitialize to retrieve the initialization exit code. When CefInitialize
|
|
||||||
/// returns true (1) the exit code will be 0 (CEF_RESULT_CODE_NORMAL_EXIT).
|
|
||||||
/// Otherwise, see cef_resultcode_t for possible exit code values including
|
|
||||||
/// browser process initialization errors and normal early exit conditions (such
|
|
||||||
/// as CEF_RESULT_CODE_NORMAL_EXIT_PROCESS_NOTIFIED for process singleton
|
|
||||||
/// relaunch behavior).
|
|
||||||
///
|
|
||||||
CEF_EXPORT int cef_get_exit_code(void);
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// This function should be called on the main application thread to shut down
|
/// This function should be called on the main application thread to shut down
|
||||||
/// the CEF browser process before the application exits. Do not call any other
|
/// the CEF browser process before the application exits.
|
||||||
/// CEF functions after calling this function.
|
|
||||||
///
|
///
|
||||||
CEF_EXPORT void cef_shutdown(void);
|
CEF_EXPORT void cef_shutdown(void);
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=def41651170c930805bd36e9640c98cb87c79529$
|
// $hash=4e243df31e29bc6e473d56e371ed6328d948959c$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_AUDIO_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_AUDIO_HANDLER_CAPI_H_
|
||||||
@@ -93,7 +93,7 @@ typedef struct _cef_audio_handler_t {
|
|||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
const float** data,
|
const float** data,
|
||||||
int frames,
|
int frames,
|
||||||
int64_t pts);
|
int64 pts);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Called on the UI thread when the stream has stopped. OnAudioSteamStopped
|
/// Called on the UI thread when the stream has stopped. OnAudioSteamStopped
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=c20b65725d97c5a9e09ae76c082c361935941a37$
|
// $hash=c0704c0a87e8b57b20887be75700a30e887fee4f$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_AUTH_CALLBACK_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_AUTH_CALLBACK_CAPI_H_
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=06b21e46e31de5e4bbd8c016a004d49cebf09e64$
|
// $hash=f8a604f73a04bec535d72ec7d05906da8c953b6b$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_CAPI_H_
|
||||||
@@ -165,16 +165,15 @@ typedef struct _cef_browser_t {
|
|||||||
///
|
///
|
||||||
/// Returns the frame with the specified identifier, or NULL if not found.
|
/// Returns the frame with the specified identifier, or NULL if not found.
|
||||||
///
|
///
|
||||||
struct _cef_frame_t*(CEF_CALLBACK* get_frame_by_identifier)(
|
struct _cef_frame_t*(CEF_CALLBACK* get_frame_byident)(
|
||||||
struct _cef_browser_t* self,
|
struct _cef_browser_t* self,
|
||||||
const cef_string_t* identifier);
|
int64 identifier);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Returns the frame with the specified name, or NULL if not found.
|
/// Returns the frame with the specified name, or NULL if not found.
|
||||||
///
|
///
|
||||||
struct _cef_frame_t*(CEF_CALLBACK* get_frame_by_name)(
|
struct _cef_frame_t*(CEF_CALLBACK* get_frame)(struct _cef_browser_t* self,
|
||||||
struct _cef_browser_t* self,
|
const cef_string_t* name);
|
||||||
const cef_string_t* name);
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Returns the number of frames that currently exist.
|
/// Returns the number of frames that currently exist.
|
||||||
@@ -185,7 +184,8 @@ typedef struct _cef_browser_t {
|
|||||||
/// Returns the identifiers of all existing frames.
|
/// Returns the identifiers of all existing frames.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* get_frame_identifiers)(struct _cef_browser_t* self,
|
void(CEF_CALLBACK* get_frame_identifiers)(struct _cef_browser_t* self,
|
||||||
cef_string_list_t identifiers);
|
size_t* identifiersCount,
|
||||||
|
int64* identifiers);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Returns the names of all existing frames.
|
/// Returns the names of all existing frames.
|
||||||
@@ -301,62 +301,29 @@ typedef struct _cef_browser_host_t {
|
|||||||
struct _cef_browser_host_t* self);
|
struct _cef_browser_host_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Request that the browser close. Closing a browser is a multi-stage process
|
/// Request that the browser close. The JavaScript 'onbeforeunload' event will
|
||||||
/// that may complete either synchronously or asynchronously, and involves
|
/// be fired. If |force_close| is false (0) the event handler, if any, will be
|
||||||
/// callbacks such as cef_life_span_handler_t::DoClose (Alloy style only),
|
/// allowed to prompt the user and the user can optionally cancel the close.
|
||||||
/// cef_life_span_handler_t::OnBeforeClose, and a top-level window close
|
/// If |force_close| is true (1) the prompt will not be displayed and the
|
||||||
/// handler such as cef_window_delegate_t::CanClose (or platform-specific
|
/// close will proceed. Results in a call to
|
||||||
/// equivalent). In some cases a close request may be delayed or canceled by
|
/// cef_life_span_handler_t::do_close() if the event handler allows the close
|
||||||
/// the user. Using try_close_browser() instead of close_browser() is
|
/// or if |force_close| is true (1). See cef_life_span_handler_t::do_close()
|
||||||
/// recommended for most use cases. See cef_life_span_handler_t::do_close()
|
/// documentation for additional usage information.
|
||||||
/// documentation for detailed usage and examples.
|
|
||||||
///
|
|
||||||
/// If |force_close| is false (0) then JavaScript unload handlers, if any, may
|
|
||||||
/// be fired and the close may be delayed or canceled by the user. If
|
|
||||||
/// |force_close| is true (1) then the user will not be prompted and the close
|
|
||||||
/// will proceed immediately (possibly asynchronously). If browser close is
|
|
||||||
/// delayed and not canceled the default behavior is to call the top-level
|
|
||||||
/// window close handler once the browser is ready to be closed. This default
|
|
||||||
/// behavior can be changed for Alloy style browsers by implementing
|
|
||||||
/// cef_life_span_handler_t::do_close(). is_ready_to_be_closed() can be used
|
|
||||||
/// to detect mandatory browser close events when customizing close behavior
|
|
||||||
/// on the browser process UI thread.
|
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* close_browser)(struct _cef_browser_host_t* self,
|
void(CEF_CALLBACK* close_browser)(struct _cef_browser_host_t* self,
|
||||||
int force_close);
|
int force_close);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Helper for closing a browser. This is similar in behavior to
|
/// Helper for closing a browser. Call this function from the top-level window
|
||||||
/// CLoseBrowser(false (0)) but returns a boolean to reflect the immediate
|
/// close handler (if any). Internally this calls CloseBrowser(false (0)) if
|
||||||
/// close status. Call this function from a top-level window close handler
|
/// the close has not yet been initiated. This function returns false (0)
|
||||||
/// such as cef_window_delegate_t::CanClose (or platform-specific equivalent)
|
/// while the close is pending and true (1) after the close has completed. See
|
||||||
/// to request that the browser close, and return the result to indicate if
|
/// close_browser() and cef_life_span_handler_t::do_close() documentation for
|
||||||
/// the window close should proceed. Returns false (0) if the close will be
|
/// additional usage information. This function must be called on the browser
|
||||||
/// delayed (JavaScript unload handlers triggered but still pending) or true
|
/// process UI thread.
|
||||||
/// (1) if the close will proceed immediately (possibly asynchronously). See
|
|
||||||
/// close_browser() documentation for additional usage information. This
|
|
||||||
/// function must be called on the browser process UI thread.
|
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* try_close_browser)(struct _cef_browser_host_t* self);
|
int(CEF_CALLBACK* try_close_browser)(struct _cef_browser_host_t* self);
|
||||||
|
|
||||||
///
|
|
||||||
/// Returns true (1) if the browser is ready to be closed, meaning that the
|
|
||||||
/// close has already been initiated and that JavaScript unload handlers have
|
|
||||||
/// already executed or should be ignored. This can be used from a top-level
|
|
||||||
/// window close handler such as cef_window_delegate_t::CanClose (or platform-
|
|
||||||
/// specific equivalent) to distringuish between potentially cancelable
|
|
||||||
/// browser close events (like the user clicking the top-level window close
|
|
||||||
/// button before browser close has started) and mandatory browser close
|
|
||||||
/// events (like JavaScript `window.close()` or after browser close has
|
|
||||||
/// started in response to [Try]close_browser()). Not completing the browser
|
|
||||||
/// close for mandatory close events (when this function returns true (1))
|
|
||||||
/// will leave the browser in a partially closed state that interferes with
|
|
||||||
/// proper functioning. See close_browser() documentation for additional usage
|
|
||||||
/// information. This function must be called on the browser process UI
|
|
||||||
/// thread.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* is_ready_to_be_closed)(struct _cef_browser_host_t* self);
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Set whether the browser is focused.
|
/// Set whether the browser is focused.
|
||||||
///
|
///
|
||||||
@@ -380,12 +347,6 @@ typedef struct _cef_browser_host_t {
|
|||||||
cef_window_handle_t(CEF_CALLBACK* get_opener_window_handle)(
|
cef_window_handle_t(CEF_CALLBACK* get_opener_window_handle)(
|
||||||
struct _cef_browser_host_t* self);
|
struct _cef_browser_host_t* self);
|
||||||
|
|
||||||
///
|
|
||||||
/// Retrieve the unique identifier of the browser that opened this browser.
|
|
||||||
/// Will return 0 for non-popup browsers.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* get_opener_identifier)(struct _cef_browser_host_t* self);
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Returns true (1) if this browser is wrapped in a cef_browser_view_t.
|
/// Returns true (1) if this browser is wrapped in a cef_browser_view_t.
|
||||||
///
|
///
|
||||||
@@ -404,38 +365,16 @@ typedef struct _cef_browser_host_t {
|
|||||||
struct _cef_browser_host_t* self);
|
struct _cef_browser_host_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Returns true (1) if this browser can execute the specified zoom command.
|
/// Get the current zoom level. The default zoom level is 0.0. This function
|
||||||
/// This function can only be called on the UI thread.
|
/// can only be called on the UI thread.
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* can_zoom)(struct _cef_browser_host_t* self,
|
|
||||||
cef_zoom_command_t command);
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Execute a zoom command in this browser. If called on the UI thread the
|
|
||||||
/// change will be applied immediately. Otherwise, the change will be applied
|
|
||||||
/// asynchronously on the UI thread.
|
|
||||||
///
|
|
||||||
void(CEF_CALLBACK* zoom)(struct _cef_browser_host_t* self,
|
|
||||||
cef_zoom_command_t command);
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Get the default zoom level. This value will be 0.0 by default but can be
|
|
||||||
/// configured. This function can only be called on the UI thread.
|
|
||||||
///
|
|
||||||
double(CEF_CALLBACK* get_default_zoom_level)(
|
|
||||||
struct _cef_browser_host_t* self);
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Get the current zoom level. This function can only be called on the UI
|
|
||||||
/// thread.
|
|
||||||
///
|
///
|
||||||
double(CEF_CALLBACK* get_zoom_level)(struct _cef_browser_host_t* self);
|
double(CEF_CALLBACK* get_zoom_level)(struct _cef_browser_host_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Change the zoom level to the specified value. Specify 0.0 to reset the
|
/// Change the zoom level to the specified value. Specify 0.0 to reset the
|
||||||
/// zoom level to the default. If called on the UI thread the change will be
|
/// zoom level. If called on the UI thread the change will be applied
|
||||||
/// applied immediately. Otherwise, the change will be applied asynchronously
|
/// immediately. Otherwise, the change will be applied asynchronously on the
|
||||||
/// on the UI thread.
|
/// UI thread.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* set_zoom_level)(struct _cef_browser_host_t* self,
|
void(CEF_CALLBACK* set_zoom_level)(struct _cef_browser_host_t* self,
|
||||||
double zoomLevel);
|
double zoomLevel);
|
||||||
@@ -485,7 +424,7 @@ typedef struct _cef_browser_host_t {
|
|||||||
struct _cef_browser_host_t* self,
|
struct _cef_browser_host_t* self,
|
||||||
const cef_string_t* image_url,
|
const cef_string_t* image_url,
|
||||||
int is_favicon,
|
int is_favicon,
|
||||||
uint32_t max_image_size,
|
uint32 max_image_size,
|
||||||
int bypass_cache,
|
int bypass_cache,
|
||||||
struct _cef_download_image_callback_t* callback);
|
struct _cef_download_image_callback_t* callback);
|
||||||
|
|
||||||
@@ -945,6 +884,20 @@ typedef struct _cef_browser_host_t {
|
|||||||
const cef_size_t* min_size,
|
const cef_size_t* min_size,
|
||||||
const cef_size_t* max_size);
|
const cef_size_t* max_size);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns the extension hosted in this browser or NULL if no extension is
|
||||||
|
/// hosted. See cef_request_context_t::LoadExtension for details.
|
||||||
|
///
|
||||||
|
struct _cef_extension_t*(CEF_CALLBACK* get_extension)(
|
||||||
|
struct _cef_browser_host_t* self);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns true (1) if this browser is hosting an extension background
|
||||||
|
/// script. Background hosts do not have a window and are not displayable. See
|
||||||
|
/// cef_request_context_t::LoadExtension for details.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* is_background_host)(struct _cef_browser_host_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Set whether the browser's audio is muted.
|
/// Set whether the browser's audio is muted.
|
||||||
///
|
///
|
||||||
@@ -956,66 +909,6 @@ typedef struct _cef_browser_host_t {
|
|||||||
/// be called on the UI thread.
|
/// be called on the UI thread.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_audio_muted)(struct _cef_browser_host_t* self);
|
int(CEF_CALLBACK* is_audio_muted)(struct _cef_browser_host_t* self);
|
||||||
|
|
||||||
///
|
|
||||||
/// Returns true (1) if the renderer is currently in browser fullscreen. This
|
|
||||||
/// differs from window fullscreen in that browser fullscreen is entered using
|
|
||||||
/// the JavaScript Fullscreen API and modifies CSS attributes such as the
|
|
||||||
/// ::backdrop pseudo-element and :fullscreen pseudo-structure. This function
|
|
||||||
/// can only be called on the UI thread.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* is_fullscreen)(struct _cef_browser_host_t* self);
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Requests the renderer to exit browser fullscreen. In most cases exiting
|
|
||||||
/// window fullscreen should also exit browser fullscreen. With Alloy style
|
|
||||||
/// this function should be called in response to a user action such as
|
|
||||||
/// clicking the green traffic light button on MacOS
|
|
||||||
/// (cef_window_delegate_t::OnWindowFullscreenTransition callback) or pressing
|
|
||||||
/// the "ESC" key (cef_keyboard_handler_t::OnPreKeyEvent callback). With
|
|
||||||
/// Chrome style these standard exit actions are handled internally but
|
|
||||||
/// new/additional user actions can use this function. Set |will_cause_resize|
|
|
||||||
/// to true (1) if exiting browser fullscreen will cause a view resize.
|
|
||||||
///
|
|
||||||
void(CEF_CALLBACK* exit_fullscreen)(struct _cef_browser_host_t* self,
|
|
||||||
int will_cause_resize);
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Returns true (1) if a Chrome command is supported and enabled. Values for
|
|
||||||
/// |command_id| can be found in the cef_command_ids.h file. This function can
|
|
||||||
/// only be called on the UI thread. Only used with Chrome style.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* can_execute_chrome_command)(
|
|
||||||
struct _cef_browser_host_t* self,
|
|
||||||
int command_id);
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Execute a Chrome command. Values for |command_id| can be found in the
|
|
||||||
/// cef_command_ids.h file. |disposition| provides information about the
|
|
||||||
/// intended command target. Only used with Chrome style.
|
|
||||||
///
|
|
||||||
void(CEF_CALLBACK* execute_chrome_command)(
|
|
||||||
struct _cef_browser_host_t* self,
|
|
||||||
int command_id,
|
|
||||||
cef_window_open_disposition_t disposition);
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Returns true (1) if the render process associated with this browser is
|
|
||||||
/// currently unresponsive as indicated by a lack of input event processing
|
|
||||||
/// for at least 15 seconds. To receive associated state change notifications
|
|
||||||
/// and optionally handle an unresponsive render process implement
|
|
||||||
/// cef_request_handler_t::OnRenderProcessUnresponsive. This function can only
|
|
||||||
/// be called on the UI thread.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* is_render_process_unresponsive)(
|
|
||||||
struct _cef_browser_host_t* self);
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Returns the runtime style for this browser (ALLOY or CHROME). See
|
|
||||||
/// cef_runtime_style_t documentation for details.
|
|
||||||
///
|
|
||||||
cef_runtime_style_t(CEF_CALLBACK* get_runtime_style)(
|
|
||||||
struct _cef_browser_host_t* self);
|
|
||||||
} cef_browser_host_t;
|
} cef_browser_host_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
@@ -1052,12 +945,6 @@ CEF_EXPORT cef_browser_t* cef_browser_host_create_browser_sync(
|
|||||||
struct _cef_dictionary_value_t* extra_info,
|
struct _cef_dictionary_value_t* extra_info,
|
||||||
struct _cef_request_context_t* request_context);
|
struct _cef_request_context_t* request_context);
|
||||||
|
|
||||||
///
|
|
||||||
/// Returns the browser (if any) with the specified identifier.
|
|
||||||
///
|
|
||||||
CEF_EXPORT cef_browser_t* cef_browser_host_get_browser_by_identifier(
|
|
||||||
int browser_id);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=2130ee468c9742d5be99d622703829adff83145f$
|
// $hash=a4d3026623111f1ba226d1579c6b03de3b924457$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_PROCESS_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_PROCESS_HANDLER_CAPI_H_
|
||||||
@@ -44,7 +44,6 @@
|
|||||||
#include "include/capi/cef_client_capi.h"
|
#include "include/capi/cef_client_capi.h"
|
||||||
#include "include/capi/cef_command_line_capi.h"
|
#include "include/capi/cef_command_line_capi.h"
|
||||||
#include "include/capi/cef_preference_capi.h"
|
#include "include/capi/cef_preference_capi.h"
|
||||||
#include "include/capi/cef_request_context_handler_capi.h"
|
|
||||||
#include "include/capi/cef_values_capi.h"
|
#include "include/capi/cef_values_capi.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -69,8 +68,8 @@ typedef struct _cef_browser_process_handler_t {
|
|||||||
/// If |type| is CEF_PREFERENCES_TYPE_GLOBAL the registered preferences can be
|
/// If |type| is CEF_PREFERENCES_TYPE_GLOBAL the registered preferences can be
|
||||||
/// accessed via cef_preference_manager_t::GetGlobalPreferences after
|
/// accessed via cef_preference_manager_t::GetGlobalPreferences after
|
||||||
/// OnContextInitialized is called. Global preferences are registered a single
|
/// OnContextInitialized is called. Global preferences are registered a single
|
||||||
/// time at application startup. See related cef_settings_t.cache_path
|
/// time at application startup. See related cef_settings_t.cache_path and
|
||||||
/// configuration.
|
/// cef_settings_t.persist_user_preferences configuration.
|
||||||
///
|
///
|
||||||
/// If |type| is CEF_PREFERENCES_TYPE_REQUEST_CONTEXT the preferences can be
|
/// If |type| is CEF_PREFERENCES_TYPE_REQUEST_CONTEXT the preferences can be
|
||||||
/// accessed via the cef_request_context_t after
|
/// accessed via the cef_request_context_t after
|
||||||
@@ -78,7 +77,8 @@ typedef struct _cef_browser_process_handler_t {
|
|||||||
/// Request context preferences are registered each time a new
|
/// Request context preferences are registered each time a new
|
||||||
/// cef_request_context_t is created. It is intended but not required that all
|
/// cef_request_context_t is created. It is intended but not required that all
|
||||||
/// request contexts have the same registered preferences. See related
|
/// request contexts have the same registered preferences. See related
|
||||||
/// cef_request_context_settings_t.cache_path configuration.
|
/// cef_request_context_settings_t.cache_path and
|
||||||
|
/// cef_request_context_settings_t.persist_user_preferences configuration.
|
||||||
///
|
///
|
||||||
/// Do not keep a reference to the |registrar| object. This function is called
|
/// Do not keep a reference to the |registrar| object. This function is called
|
||||||
/// on the browser process UI thread.
|
/// on the browser process UI thread.
|
||||||
@@ -106,29 +106,6 @@ typedef struct _cef_browser_process_handler_t {
|
|||||||
struct _cef_browser_process_handler_t* self,
|
struct _cef_browser_process_handler_t* self,
|
||||||
struct _cef_command_line_t* command_line);
|
struct _cef_command_line_t* command_line);
|
||||||
|
|
||||||
///
|
|
||||||
/// Implement this function to provide app-specific behavior when an already
|
|
||||||
/// running app is relaunched with the same CefSettings.root_cache_path value.
|
|
||||||
/// For example, activate an existing app window or create a new app window.
|
|
||||||
/// |command_line| will be read-only. Do not keep a reference to
|
|
||||||
/// |command_line| outside of this function. Return true (1) if the relaunch
|
|
||||||
/// is handled or false (0) for default relaunch behavior. Default behavior
|
|
||||||
/// will create a new default styled Chrome window.
|
|
||||||
///
|
|
||||||
/// To avoid cache corruption only a single app instance is allowed to run for
|
|
||||||
/// a given CefSettings.root_cache_path value. On relaunch the app checks a
|
|
||||||
/// process singleton lock and then forwards the new launch arguments to the
|
|
||||||
/// already running app process before exiting early. Client apps should
|
|
||||||
/// therefore check the cef_initialize() return value for early exit before
|
|
||||||
/// proceeding.
|
|
||||||
///
|
|
||||||
/// This function will be called on the browser process UI thread.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* on_already_running_app_relaunch)(
|
|
||||||
struct _cef_browser_process_handler_t* self,
|
|
||||||
struct _cef_command_line_t* command_line,
|
|
||||||
const cef_string_t* current_directory);
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Called from any thread when work has been scheduled for the browser
|
/// Called from any thread when work has been scheduled for the browser
|
||||||
/// process main (UI) thread. This callback is used in combination with
|
/// process main (UI) thread. This callback is used in combination with
|
||||||
@@ -144,29 +121,17 @@ typedef struct _cef_browser_process_handler_t {
|
|||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_schedule_message_pump_work)(
|
void(CEF_CALLBACK* on_schedule_message_pump_work)(
|
||||||
struct _cef_browser_process_handler_t* self,
|
struct _cef_browser_process_handler_t* self,
|
||||||
int64_t delay_ms);
|
int64 delay_ms);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Return the default client for use with a newly created browser window
|
/// Return the default client for use with a newly created browser window. If
|
||||||
/// (cef_browser_t object). If null is returned the cef_browser_t will be
|
/// null is returned the browser will be unmanaged (no callbacks will be
|
||||||
/// unmanaged (no callbacks will be executed for that cef_browser_t) and
|
/// executed for that browser) and application shutdown will be blocked until
|
||||||
/// application shutdown will be blocked until the browser window is closed
|
/// the browser window is closed manually. This function is currently only
|
||||||
/// manually. This function is currently only used with Chrome style when
|
/// used with the chrome runtime.
|
||||||
/// creating new browser windows via Chrome UI.
|
|
||||||
///
|
///
|
||||||
struct _cef_client_t*(CEF_CALLBACK* get_default_client)(
|
struct _cef_client_t*(CEF_CALLBACK* get_default_client)(
|
||||||
struct _cef_browser_process_handler_t* self);
|
struct _cef_browser_process_handler_t* self);
|
||||||
|
|
||||||
///
|
|
||||||
/// Return the default handler for use with a new user or incognito profile
|
|
||||||
/// (cef_request_context_t object). If null is returned the
|
|
||||||
/// cef_request_context_t will be unmanaged (no callbacks will be executed for
|
|
||||||
/// that cef_request_context_t). This function is currently only used with
|
|
||||||
/// Chrome style when creating new browser windows via Chrome UI.
|
|
||||||
///
|
|
||||||
struct _cef_request_context_handler_t*(
|
|
||||||
CEF_CALLBACK* get_default_request_context_handler)(
|
|
||||||
struct _cef_browser_process_handler_t* self);
|
|
||||||
} cef_browser_process_handler_t;
|
} cef_browser_process_handler_t;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=7aed80e6f53e47cadf5ab5ef5eace1a208378bd6$
|
// $hash=1bb026d01d1d4bb38ceb4c54f6bcf70300bf5201$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_CALLBACK_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_CALLBACK_CAPI_H_
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=6ae90159e832b94846a72b59cf1d40a55676cd55$
|
// $hash=93f1c39c102dc97d6ad8d236a90a2e0e88f10fb7$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_CLIENT_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_CLIENT_CAPI_H_
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=43f3df7da1d27b568b19c2cf0b1d3a62282e132b$
|
// $hash=ec05ae57537091e3543c4b31d72d2d84d44df876$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_COMMAND_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_COMMAND_HANDLER_CAPI_H_
|
||||||
@@ -64,51 +64,13 @@ typedef struct _cef_command_handler_t {
|
|||||||
/// intended command target. Return true (1) if the command was handled or
|
/// intended command target. Return true (1) if the command was handled or
|
||||||
/// false (0) for the default implementation. For context menu commands this
|
/// false (0) for the default implementation. For context menu commands this
|
||||||
/// will be called after cef_context_menu_handler_t::OnContextMenuCommand.
|
/// will be called after cef_context_menu_handler_t::OnContextMenuCommand.
|
||||||
/// Only used with Chrome style.
|
/// Only used with the Chrome runtime.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_chrome_command)(
|
int(CEF_CALLBACK* on_chrome_command)(
|
||||||
struct _cef_command_handler_t* self,
|
struct _cef_command_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
int command_id,
|
int command_id,
|
||||||
cef_window_open_disposition_t disposition);
|
cef_window_open_disposition_t disposition);
|
||||||
|
|
||||||
///
|
|
||||||
/// Called to check if a Chrome app menu item should be visible. Values for
|
|
||||||
/// |command_id| can be found in the cef_command_ids.h file. Only called for
|
|
||||||
/// menu items that would be visible by default. Only used with Chrome style.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* is_chrome_app_menu_item_visible)(
|
|
||||||
struct _cef_command_handler_t* self,
|
|
||||||
struct _cef_browser_t* browser,
|
|
||||||
int command_id);
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Called to check if a Chrome app menu item should be enabled. Values for
|
|
||||||
/// |command_id| can be found in the cef_command_ids.h file. Only called for
|
|
||||||
/// menu items that would be enabled by default. Only used with Chrome style.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* is_chrome_app_menu_item_enabled)(
|
|
||||||
struct _cef_command_handler_t* self,
|
|
||||||
struct _cef_browser_t* browser,
|
|
||||||
int command_id);
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Called during browser creation to check if a Chrome page action icon
|
|
||||||
/// should be visible. Only called for icons that would be visible by default.
|
|
||||||
/// Only used with Chrome style.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* is_chrome_page_action_icon_visible)(
|
|
||||||
struct _cef_command_handler_t* self,
|
|
||||||
cef_chrome_page_action_icon_type_t icon_type);
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Called during browser creation to check if a Chrome toolbar button should
|
|
||||||
/// be visible. Only called for buttons that would be visible by default. Only
|
|
||||||
/// used with Chrome style.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* is_chrome_toolbar_button_visible)(
|
|
||||||
struct _cef_command_handler_t* self,
|
|
||||||
cef_chrome_toolbar_button_type_t button_type);
|
|
||||||
} cef_command_handler_t;
|
} cef_command_handler_t;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=eec6c6c5bb382d519e8784dc9a5738351bd7e134$
|
// $hash=f535e9560b9fde9b53fc4d8383905105ed029ea4$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_COMMAND_LINE_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_COMMAND_LINE_CAPI_H_
|
||||||
@@ -159,14 +159,14 @@ typedef struct _cef_command_line_t {
|
|||||||
cef_string_map_t switches);
|
cef_string_map_t switches);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Add a switch to the end of the command line.
|
/// Add a switch to the end of the command line. If the switch has no value
|
||||||
|
/// pass an NULL value string.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* append_switch)(struct _cef_command_line_t* self,
|
void(CEF_CALLBACK* append_switch)(struct _cef_command_line_t* self,
|
||||||
const cef_string_t* name);
|
const cef_string_t* name);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Add a switch with the specified value to the end of the command line. If
|
/// Add a switch with the specified value to the end of the command line.
|
||||||
/// the switch has no value pass an NULL value string.
|
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* append_switch_with_value)(struct _cef_command_line_t* self,
|
void(CEF_CALLBACK* append_switch_with_value)(struct _cef_command_line_t* self,
|
||||||
const cef_string_t* name,
|
const cef_string_t* name,
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=a6442e6bc6e7d335717bf9fbcf7a6e061216d449$
|
// $hash=0ae549ed35e30afcbb01961fe55455beaadcd7f9$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_CONTEXT_MENU_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_CONTEXT_MENU_HANDLER_CAPI_H_
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=f0ac9ba987d32a55b57d09acbdd2ff58f15c61b8$
|
// $hash=37b5e115ff7abd1df1b9913404b69505fb9fef29$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_COOKIE_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_COOKIE_CAPI_H_
|
||||||
@@ -126,8 +126,8 @@ typedef struct _cef_cookie_manager_t {
|
|||||||
/// cef_settings_t.cache_path if specified or in memory otherwise. If |callback|
|
/// cef_settings_t.cache_path if specified or in memory otherwise. If |callback|
|
||||||
/// is non-NULL it will be executed asnychronously on the UI thread after the
|
/// is non-NULL it will be executed asnychronously on the UI thread after the
|
||||||
/// manager's storage has been initialized. Using this function is equivalent to
|
/// manager's storage has been initialized. Using this function is equivalent to
|
||||||
/// calling cef_request_context_t::cef_request_context_get_global_context()-
|
/// calling cef_request_context_t::cef_request_context_get_global_context()->Get
|
||||||
/// >GetDefaultCookieManager().
|
/// DefaultCookieManager().
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_cookie_manager_t* cef_cookie_manager_get_global_manager(
|
CEF_EXPORT cef_cookie_manager_t* cef_cookie_manager_get_global_manager(
|
||||||
struct _cef_completion_callback_t* callback);
|
struct _cef_completion_callback_t* callback);
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=4e76f0bd07a6814bf05cdb7b39ba24a88c7c2e55$
|
// $hash=1ce19c3213f033ca9059da738102b9b4292d4a06$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_CRASH_UTIL_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_CRASH_UTIL_CAPI_H_
|
||||||
@@ -90,7 +90,7 @@ extern "C" {
|
|||||||
/// If "AppName" is set on Windows then crash report information (metrics,
|
/// If "AppName" is set on Windows then crash report information (metrics,
|
||||||
/// database and dumps) will be stored locally on disk under the
|
/// database and dumps) will be stored locally on disk under the
|
||||||
/// "C:\Users\[CurrentUser]\AppData\Local\[AppName]\User Data" folder. On other
|
/// "C:\Users\[CurrentUser]\AppData\Local\[AppName]\User Data" folder. On other
|
||||||
/// platforms the cef_settings_t.root_cache_path value will be used.
|
/// platforms the cef_settings_t.user_data_path value will be used.
|
||||||
///
|
///
|
||||||
/// If "ExternalHandler" is set on Windows then the specified exe will be
|
/// If "ExternalHandler" is set on Windows then the specified exe will be
|
||||||
/// launched as the crashpad-handler instead of re-launching the main process
|
/// launched as the crashpad-handler instead of re-launching the main process
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=c46c975e4826d9f58a208b2efe7c417e1ffdba51$
|
// $hash=076a01db2fc4241efeb46c5f247a9737fd828f9b$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_DEVTOOLS_MESSAGE_OBSERVER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_DEVTOOLS_MESSAGE_OBSERVER_CAPI_H_
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=9028da9ae0b0f9a2f98b163fdb98c2d999368cf8$
|
// $hash=3a1a3ac84690c6090d356ddec3ddb49b934fe28c$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_DIALOG_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_DIALOG_HANDLER_CAPI_H_
|
||||||
@@ -86,20 +86,13 @@ typedef struct _cef_dialog_handler_t {
|
|||||||
/// to show the default title ("Open" or "Save" depending on the mode).
|
/// to show the default title ("Open" or "Save" depending on the mode).
|
||||||
/// |default_file_path| is the path with optional directory and/or file name
|
/// |default_file_path| is the path with optional directory and/or file name
|
||||||
/// component that should be initially selected in the dialog.
|
/// component that should be initially selected in the dialog.
|
||||||
/// |accept_filters| are used to restrict the selectable file types and may be
|
/// |accept_filters| are used to restrict the selectable file types and may
|
||||||
/// any combination of valid lower-cased MIME types (e.g. "text/*" or
|
/// any combination of (a) valid lower-cased MIME types (e.g. "text/*" or
|
||||||
/// "image/*") and individual file extensions (e.g. ".txt" or ".png").
|
/// "image/*"), (b) individual file extensions (e.g. ".txt" or ".png"), or (c)
|
||||||
/// |accept_extensions| provides the semicolon-delimited expansion of MIME
|
/// combined description and file extension delimited using "|" and ";" (e.g.
|
||||||
/// types to file extensions (if known, or NULL string otherwise).
|
/// "Image Types|.png;.gif;.jpg"). To display a custom dialog return true (1)
|
||||||
/// |accept_descriptions| provides the descriptions for MIME types (if known,
|
/// and execute |callback| either inline or at a later time. To display the
|
||||||
/// or NULL string otherwise). For example, the "image/*" mime type might have
|
/// default dialog return false (0).
|
||||||
/// extensions ".png;.jpg;.bmp;..." and description "Image Files".
|
|
||||||
/// |accept_filters|, |accept_extensions| and |accept_descriptions| will all
|
|
||||||
/// be the same size. To display a custom dialog return true (1) and execute
|
|
||||||
/// |callback| either inline or at a later time. To display the default dialog
|
|
||||||
/// return false (0). If this function returns false (0) it may be called an
|
|
||||||
/// additional time for the same dialog (both before and after MIME type
|
|
||||||
/// expansion).
|
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_file_dialog)(
|
int(CEF_CALLBACK* on_file_dialog)(
|
||||||
struct _cef_dialog_handler_t* self,
|
struct _cef_dialog_handler_t* self,
|
||||||
@@ -108,8 +101,6 @@ typedef struct _cef_dialog_handler_t {
|
|||||||
const cef_string_t* title,
|
const cef_string_t* title,
|
||||||
const cef_string_t* default_file_path,
|
const cef_string_t* default_file_path,
|
||||||
cef_string_list_t accept_filters,
|
cef_string_list_t accept_filters,
|
||||||
cef_string_list_t accept_extensions,
|
|
||||||
cef_string_list_t accept_descriptions,
|
|
||||||
struct _cef_file_dialog_callback_t* callback);
|
struct _cef_file_dialog_callback_t* callback);
|
||||||
} cef_dialog_handler_t;
|
} cef_dialog_handler_t;
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=c2c7970554008e70a24403198a08155354773bd3$
|
// $hash=976a61df924efbcb0c53afeb75265e5e9e80c2de$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_DISPLAY_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_DISPLAY_HANDLER_CAPI_H_
|
||||||
@@ -84,12 +84,8 @@ typedef struct _cef_display_handler_t {
|
|||||||
/// Called when web content in the page has toggled fullscreen mode. If
|
/// Called when web content in the page has toggled fullscreen mode. If
|
||||||
/// |fullscreen| is true (1) the content will automatically be sized to fill
|
/// |fullscreen| is true (1) the content will automatically be sized to fill
|
||||||
/// the browser content area. If |fullscreen| is false (0) the content will
|
/// the browser content area. If |fullscreen| is false (0) the content will
|
||||||
/// automatically return to its original size and position. With Alloy style
|
/// automatically return to its original size and position. The client is
|
||||||
/// the client is responsible for triggering the fullscreen transition (for
|
/// responsible for resizing the browser if desired.
|
||||||
/// example, by calling cef_window_t::SetFullscreen when using Views). With
|
|
||||||
/// Chrome style the fullscreen transition will be triggered automatically.
|
|
||||||
/// The cef_window_delegate_t::OnWindowFullscreenTransition function will be
|
|
||||||
/// called during the fullscreen transition for notification purposes.
|
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_fullscreen_mode_change)(
|
void(CEF_CALLBACK* on_fullscreen_mode_change)(
|
||||||
struct _cef_display_handler_t* self,
|
struct _cef_display_handler_t* self,
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=54747fced11ace169fcd28f2a75b198d16aac389$
|
// $hash=47d8c186f687b65c8e7f394b97d72530e67593cd$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_DOM_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_DOM_CAPI_H_
|
||||||
@@ -209,7 +209,8 @@ typedef struct _cef_domnode_t {
|
|||||||
///
|
///
|
||||||
/// Returns the type of this form control element node.
|
/// Returns the type of this form control element node.
|
||||||
///
|
///
|
||||||
cef_dom_form_control_type_t(CEF_CALLBACK* get_form_control_element_type)(
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
|
cef_string_userfree_t(CEF_CALLBACK* get_form_control_element_type)(
|
||||||
struct _cef_domnode_t* self);
|
struct _cef_domnode_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=12eb9c7531907aef107de6f1ec27e778652fa423$
|
// $hash=aff139899b4b8b769fd0e506d8a46e434f924eee$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_HANDLER_CAPI_H_
|
||||||
@@ -117,13 +117,12 @@ typedef struct _cef_download_handler_t {
|
|||||||
|
|
||||||
///
|
///
|
||||||
/// Called before a download begins. |suggested_name| is the suggested name
|
/// Called before a download begins. |suggested_name| is the suggested name
|
||||||
/// for the download file. Return true (1) and execute |callback| either
|
/// for the download file. By default the download will be canceled. Execute
|
||||||
/// asynchronously or in this function to continue or cancel the download.
|
/// |callback| either asynchronously or in this function to continue the
|
||||||
/// Return false (0) to proceed with default handling (cancel with Alloy
|
/// download if desired. Do not keep a reference to |download_item| outside of
|
||||||
/// style, download shelf with Chrome style). Do not keep a reference to
|
/// this function.
|
||||||
/// |download_item| outside of this function.
|
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* on_before_download)(
|
void(CEF_CALLBACK* on_before_download)(
|
||||||
struct _cef_download_handler_t* self,
|
struct _cef_download_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
struct _cef_download_item_t* download_item,
|
struct _cef_download_item_t* download_item,
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=bfc88fe29eac33ffe243e2d62bc59231e5f3d83a$
|
// $hash=a218058d7ceb842c9ea0cf0c252f9787de6562e7$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_ITEM_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_ITEM_CAPI_H_
|
||||||
@@ -72,25 +72,14 @@ typedef struct _cef_download_item_t {
|
|||||||
int(CEF_CALLBACK* is_complete)(struct _cef_download_item_t* self);
|
int(CEF_CALLBACK* is_complete)(struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Returns true (1) if the download has been canceled.
|
/// Returns true (1) if the download has been canceled or interrupted.
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* is_canceled)(struct _cef_download_item_t* self);
|
int(CEF_CALLBACK* is_canceled)(struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
|
||||||
/// Returns true (1) if the download has been interrupted.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* is_interrupted)(struct _cef_download_item_t* self);
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Returns the most recent interrupt reason.
|
|
||||||
///
|
|
||||||
cef_download_interrupt_reason_t(CEF_CALLBACK* get_interrupt_reason)(
|
|
||||||
struct _cef_download_item_t* self);
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Returns a simple speed estimate in bytes/s.
|
/// Returns a simple speed estimate in bytes/s.
|
||||||
///
|
///
|
||||||
int64_t(CEF_CALLBACK* get_current_speed)(struct _cef_download_item_t* self);
|
int64(CEF_CALLBACK* get_current_speed)(struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Returns the rough percent complete or -1 if the receive total size is
|
/// Returns the rough percent complete or -1 if the receive total size is
|
||||||
@@ -101,12 +90,12 @@ typedef struct _cef_download_item_t {
|
|||||||
///
|
///
|
||||||
/// Returns the total number of bytes.
|
/// Returns the total number of bytes.
|
||||||
///
|
///
|
||||||
int64_t(CEF_CALLBACK* get_total_bytes)(struct _cef_download_item_t* self);
|
int64(CEF_CALLBACK* get_total_bytes)(struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Returns the number of received bytes.
|
/// Returns the number of received bytes.
|
||||||
///
|
///
|
||||||
int64_t(CEF_CALLBACK* get_received_bytes)(struct _cef_download_item_t* self);
|
int64(CEF_CALLBACK* get_received_bytes)(struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Returns the time that the download started.
|
/// Returns the time that the download started.
|
||||||
@@ -129,7 +118,7 @@ typedef struct _cef_download_item_t {
|
|||||||
///
|
///
|
||||||
/// Returns the unique identifier for this download.
|
/// Returns the unique identifier for this download.
|
||||||
///
|
///
|
||||||
uint32_t(CEF_CALLBACK* get_id)(struct _cef_download_item_t* self);
|
uint32(CEF_CALLBACK* get_id)(struct _cef_download_item_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Returns the URL.
|
/// Returns the URL.
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=1878b6de429690870890e1d369ee567c25491266$
|
// $hash=9e8375de3d30eb7e4f67488da3568d19848eb038$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_DRAG_DATA_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_DRAG_DATA_CAPI_H_
|
||||||
@@ -149,13 +149,6 @@ typedef struct _cef_drag_data_t {
|
|||||||
int(CEF_CALLBACK* get_file_names)(struct _cef_drag_data_t* self,
|
int(CEF_CALLBACK* get_file_names)(struct _cef_drag_data_t* self,
|
||||||
cef_string_list_t names);
|
cef_string_list_t names);
|
||||||
|
|
||||||
///
|
|
||||||
/// Retrieve the list of file paths that are being dragged into the browser
|
|
||||||
/// window.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* get_file_paths)(struct _cef_drag_data_t* self,
|
|
||||||
cef_string_list_t paths);
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Set the link URL that is being dragged.
|
/// Set the link URL that is being dragged.
|
||||||
///
|
///
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=cc1b26a3c1ccd3597e354c8a39fcf509f2582424$
|
// $hash=ec450acb2c3cc4d0e69b7da725387d5c1049773b$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_DRAG_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_DRAG_HANDLER_CAPI_H_
|
||||||
|
130
include/capi/cef_extension_capi.h
Normal file
130
include/capi/cef_extension_capi.h
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without
|
||||||
|
// modification, are permitted provided that the following conditions are
|
||||||
|
// met:
|
||||||
|
//
|
||||||
|
// * Redistributions of source code must retain the above copyright
|
||||||
|
// notice, this list of conditions and the following disclaimer.
|
||||||
|
// * Redistributions in binary form must reproduce the above
|
||||||
|
// copyright notice, this list of conditions and the following disclaimer
|
||||||
|
// in the documentation and/or other materials provided with the
|
||||||
|
// distribution.
|
||||||
|
// * Neither the name of Google Inc. nor the name Chromium Embedded
|
||||||
|
// Framework nor the names of its contributors may be used to endorse
|
||||||
|
// or promote products derived from this software without specific prior
|
||||||
|
// written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
//
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// This file was generated by the CEF translator tool and should not edited
|
||||||
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
|
// more information.
|
||||||
|
//
|
||||||
|
// $hash=b16b1c47d26e911d360159e5535743622a411c31$
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_CAPI_H_
|
||||||
|
#define CEF_INCLUDE_CAPI_CEF_EXTENSION_CAPI_H_
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "include/capi/cef_base_capi.h"
|
||||||
|
#include "include/capi/cef_values_capi.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct _cef_extension_handler_t;
|
||||||
|
struct _cef_request_context_t;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Object representing an extension. Methods may be called on any thread unless
|
||||||
|
/// otherwise indicated.
|
||||||
|
///
|
||||||
|
typedef struct _cef_extension_t {
|
||||||
|
///
|
||||||
|
/// Base structure.
|
||||||
|
///
|
||||||
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns the unique extension identifier. This is calculated based on the
|
||||||
|
/// extension public key, if available, or on the extension path. See
|
||||||
|
/// https://developer.chrome.com/extensions/manifest/key for details.
|
||||||
|
///
|
||||||
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
|
cef_string_userfree_t(CEF_CALLBACK* get_identifier)(
|
||||||
|
struct _cef_extension_t* self);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns the absolute path to the extension directory on disk. This value
|
||||||
|
/// will be prefixed with PK_DIR_RESOURCES if a relative path was passed to
|
||||||
|
/// cef_request_context_t::LoadExtension.
|
||||||
|
///
|
||||||
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
|
cef_string_userfree_t(CEF_CALLBACK* get_path)(struct _cef_extension_t* self);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns the extension manifest contents as a cef_dictionary_value_t
|
||||||
|
/// object. See https://developer.chrome.com/extensions/manifest for details.
|
||||||
|
///
|
||||||
|
struct _cef_dictionary_value_t*(CEF_CALLBACK* get_manifest)(
|
||||||
|
struct _cef_extension_t* self);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns true (1) if this object is the same extension as |that| object.
|
||||||
|
/// Extensions are considered the same if identifier, path and loader context
|
||||||
|
/// match.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* is_same)(struct _cef_extension_t* self,
|
||||||
|
struct _cef_extension_t* that);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns the handler for this extension. Will return NULL for internal
|
||||||
|
/// extensions or if no handler was passed to
|
||||||
|
/// cef_request_context_t::LoadExtension.
|
||||||
|
///
|
||||||
|
struct _cef_extension_handler_t*(CEF_CALLBACK* get_handler)(
|
||||||
|
struct _cef_extension_t* self);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns the request context that loaded this extension. Will return NULL
|
||||||
|
/// for internal extensions or if the extension has been unloaded. See the
|
||||||
|
/// cef_request_context_t::LoadExtension documentation for more information
|
||||||
|
/// about loader contexts. Must be called on the browser process UI thread.
|
||||||
|
///
|
||||||
|
struct _cef_request_context_t*(CEF_CALLBACK* get_loader_context)(
|
||||||
|
struct _cef_extension_t* self);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns true (1) if this extension is currently loaded. Must be called on
|
||||||
|
/// the browser process UI thread.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* is_loaded)(struct _cef_extension_t* self);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Unload this extension if it is not an internal extension and is currently
|
||||||
|
/// loaded. Will result in a call to
|
||||||
|
/// cef_extension_handler_t::OnExtensionUnloaded on success.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* unload)(struct _cef_extension_t* self);
|
||||||
|
} cef_extension_t;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // CEF_INCLUDE_CAPI_CEF_EXTENSION_CAPI_H_
|
212
include/capi/cef_extension_handler_capi.h
Normal file
212
include/capi/cef_extension_handler_capi.h
Normal file
@@ -0,0 +1,212 @@
|
|||||||
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without
|
||||||
|
// modification, are permitted provided that the following conditions are
|
||||||
|
// met:
|
||||||
|
//
|
||||||
|
// * Redistributions of source code must retain the above copyright
|
||||||
|
// notice, this list of conditions and the following disclaimer.
|
||||||
|
// * Redistributions in binary form must reproduce the above
|
||||||
|
// copyright notice, this list of conditions and the following disclaimer
|
||||||
|
// in the documentation and/or other materials provided with the
|
||||||
|
// distribution.
|
||||||
|
// * Neither the name of Google Inc. nor the name Chromium Embedded
|
||||||
|
// Framework nor the names of its contributors may be used to endorse
|
||||||
|
// or promote products derived from this software without specific prior
|
||||||
|
// written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
//
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// This file was generated by the CEF translator tool and should not edited
|
||||||
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
|
// more information.
|
||||||
|
//
|
||||||
|
// $hash=ba961ade334c82e53213e7e8ac848adc2a7b533a$
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_HANDLER_CAPI_H_
|
||||||
|
#define CEF_INCLUDE_CAPI_CEF_EXTENSION_HANDLER_CAPI_H_
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "include/capi/cef_base_capi.h"
|
||||||
|
#include "include/capi/cef_browser_capi.h"
|
||||||
|
#include "include/capi/cef_extension_capi.h"
|
||||||
|
#include "include/capi/cef_stream_capi.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct _cef_client_t;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Callback structure used for asynchronous continuation of
|
||||||
|
/// cef_extension_handler_t::GetExtensionResource.
|
||||||
|
///
|
||||||
|
typedef struct _cef_get_extension_resource_callback_t {
|
||||||
|
///
|
||||||
|
/// Base structure.
|
||||||
|
///
|
||||||
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Continue the request. Read the resource contents from |stream|.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* cont)(struct _cef_get_extension_resource_callback_t* self,
|
||||||
|
struct _cef_stream_reader_t* stream);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Cancel the request.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* cancel)(
|
||||||
|
struct _cef_get_extension_resource_callback_t* self);
|
||||||
|
} cef_get_extension_resource_callback_t;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Implement this structure to handle events related to browser extensions. The
|
||||||
|
/// functions of this structure will be called on the UI thread. See
|
||||||
|
/// cef_request_context_t::LoadExtension for information about extension
|
||||||
|
/// loading.
|
||||||
|
///
|
||||||
|
typedef struct _cef_extension_handler_t {
|
||||||
|
///
|
||||||
|
/// Base structure.
|
||||||
|
///
|
||||||
|
cef_base_ref_counted_t base;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called if the cef_request_context_t::LoadExtension request fails. |result|
|
||||||
|
/// will be the error code.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* on_extension_load_failed)(
|
||||||
|
struct _cef_extension_handler_t* self,
|
||||||
|
cef_errorcode_t result);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called if the cef_request_context_t::LoadExtension request succeeds.
|
||||||
|
/// |extension| is the loaded extension.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* on_extension_loaded)(struct _cef_extension_handler_t* self,
|
||||||
|
struct _cef_extension_t* extension);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called after the cef_extension_t::Unload request has completed.
|
||||||
|
///
|
||||||
|
void(CEF_CALLBACK* on_extension_unloaded)(
|
||||||
|
struct _cef_extension_handler_t* self,
|
||||||
|
struct _cef_extension_t* extension);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called when an extension needs a browser to host a background script
|
||||||
|
/// specified via the "background" manifest key. The browser will have no
|
||||||
|
/// visible window and cannot be displayed. |extension| is the extension that
|
||||||
|
/// is loading the background script. |url| is an internally generated
|
||||||
|
/// reference to an HTML page that will be used to load the background script
|
||||||
|
/// via a "<script>" src attribute. To allow creation of the browser
|
||||||
|
/// optionally modify |client| and |settings| and return false (0). To cancel
|
||||||
|
/// creation of the browser (and consequently cancel load of the background
|
||||||
|
/// script) return true (1). Successful creation will be indicated by a call
|
||||||
|
/// to cef_life_span_handler_t::OnAfterCreated, and
|
||||||
|
/// cef_browser_host_t::IsBackgroundHost will return true (1) for the
|
||||||
|
/// resulting browser. See https://developer.chrome.com/extensions/event_pages
|
||||||
|
/// for more information about extension background script usage.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* on_before_background_browser)(
|
||||||
|
struct _cef_extension_handler_t* self,
|
||||||
|
struct _cef_extension_t* extension,
|
||||||
|
const cef_string_t* url,
|
||||||
|
struct _cef_client_t** client,
|
||||||
|
struct _cef_browser_settings_t* settings);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called when an extension API (e.g. chrome.tabs.create) requests creation
|
||||||
|
/// of a new browser. |extension| and |browser| are the source of the API
|
||||||
|
/// call. |active_browser| may optionally be specified via the windowId
|
||||||
|
/// property or returned via the get_active_browser() callback and provides
|
||||||
|
/// the default |client| and |settings| values for the new browser. |index| is
|
||||||
|
/// the position value optionally specified via the index property. |url| is
|
||||||
|
/// the URL that will be loaded in the browser. |active| is true (1) if the
|
||||||
|
/// new browser should be active when opened. To allow creation of the
|
||||||
|
/// browser optionally modify |windowInfo|, |client| and |settings| and return
|
||||||
|
/// false (0). To cancel creation of the browser return true (1). Successful
|
||||||
|
/// creation will be indicated by a call to
|
||||||
|
/// cef_life_span_handler_t::OnAfterCreated. Any modifications to |windowInfo|
|
||||||
|
/// will be ignored if |active_browser| is wrapped in a cef_browser_view_t.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* on_before_browser)(
|
||||||
|
struct _cef_extension_handler_t* self,
|
||||||
|
struct _cef_extension_t* extension,
|
||||||
|
struct _cef_browser_t* browser,
|
||||||
|
struct _cef_browser_t* active_browser,
|
||||||
|
int index,
|
||||||
|
const cef_string_t* url,
|
||||||
|
int active,
|
||||||
|
struct _cef_window_info_t* windowInfo,
|
||||||
|
struct _cef_client_t** client,
|
||||||
|
struct _cef_browser_settings_t* settings);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called when no tabId is specified to an extension API call that accepts a
|
||||||
|
/// tabId parameter (e.g. chrome.tabs.*). |extension| and |browser| are the
|
||||||
|
/// source of the API call. Return the browser that will be acted on by the
|
||||||
|
/// API call or return NULL to act on |browser|. The returned browser must
|
||||||
|
/// share the same cef_request_context_t as |browser|. Incognito browsers
|
||||||
|
/// should not be considered unless the source extension has incognito access
|
||||||
|
/// enabled, in which case |include_incognito| will be true (1).
|
||||||
|
///
|
||||||
|
struct _cef_browser_t*(CEF_CALLBACK* get_active_browser)(
|
||||||
|
struct _cef_extension_handler_t* self,
|
||||||
|
struct _cef_extension_t* extension,
|
||||||
|
struct _cef_browser_t* browser,
|
||||||
|
int include_incognito);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called when the tabId associated with |target_browser| is specified to an
|
||||||
|
/// extension API call that accepts a tabId parameter (e.g. chrome.tabs.*).
|
||||||
|
/// |extension| and |browser| are the source of the API call. Return true (1)
|
||||||
|
/// to allow access of false (0) to deny access. Access to incognito browsers
|
||||||
|
/// should not be allowed unless the source extension has incognito access
|
||||||
|
/// enabled, in which case |include_incognito| will be true (1).
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* can_access_browser)(struct _cef_extension_handler_t* self,
|
||||||
|
struct _cef_extension_t* extension,
|
||||||
|
struct _cef_browser_t* browser,
|
||||||
|
int include_incognito,
|
||||||
|
struct _cef_browser_t* target_browser);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Called to retrieve an extension resource that would normally be loaded
|
||||||
|
/// from disk (e.g. if a file parameter is specified to
|
||||||
|
/// chrome.tabs.executeScript). |extension| and |browser| are the source of
|
||||||
|
/// the resource request. |file| is the requested relative file path. To
|
||||||
|
/// handle the resource request return true (1) and execute |callback| either
|
||||||
|
/// synchronously or asynchronously. For the default behavior which reads the
|
||||||
|
/// resource from the extension directory on disk return false (0).
|
||||||
|
/// Localization substitutions will not be applied to resources handled via
|
||||||
|
/// this function.
|
||||||
|
///
|
||||||
|
int(CEF_CALLBACK* get_extension_resource)(
|
||||||
|
struct _cef_extension_handler_t* self,
|
||||||
|
struct _cef_extension_t* extension,
|
||||||
|
struct _cef_browser_t* browser,
|
||||||
|
const cef_string_t* file,
|
||||||
|
struct _cef_get_extension_resource_callback_t* callback);
|
||||||
|
} cef_extension_handler_t;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // CEF_INCLUDE_CAPI_CEF_EXTENSION_HANDLER_CAPI_H_
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=dfce79f1b15c8dbd1671e4975edded6b5f4af3f4$
|
// $hash=3e2e068a2be0a3b12653eea65a4bbe1c9cdb8c7f$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_FILE_UTIL_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_FILE_UTIL_CAPI_H_
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=064ad20d41aaad70c7e010ee344e949206fb9c2c$
|
// $hash=30e86c9dd440616305f94747b313eb526c4323c7$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_FIND_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_FIND_HANDLER_CAPI_H_
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=de1dddb86d27d5d32a562723bbc6fdfac625f7c7$
|
// $hash=907b9628ac4b7ab4603dc6e20b7e8675a51987ba$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_FOCUS_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_FOCUS_HANDLER_CAPI_H_
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=f9659ff9b227bf7416ba893c4627c49e40f8561e$
|
// $hash=48bc345bb0971e3fcaaf839e9e4419b2aec0e33b$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_FRAME_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_FRAME_CAPI_H_
|
||||||
@@ -98,11 +98,6 @@ typedef struct _cef_frame_t {
|
|||||||
///
|
///
|
||||||
void(CEF_CALLBACK* paste)(struct _cef_frame_t* self);
|
void(CEF_CALLBACK* paste)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
|
||||||
/// Execute paste and match style in this frame.
|
|
||||||
///
|
|
||||||
void(CEF_CALLBACK* paste_and_match_style)(struct _cef_frame_t* self);
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Execute delete in this frame.
|
/// Execute delete in this frame.
|
||||||
///
|
///
|
||||||
@@ -183,12 +178,10 @@ typedef struct _cef_frame_t {
|
|||||||
cef_string_userfree_t(CEF_CALLBACK* get_name)(struct _cef_frame_t* self);
|
cef_string_userfree_t(CEF_CALLBACK* get_name)(struct _cef_frame_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Returns the globally unique identifier for this frame or NULL if the
|
/// Returns the globally unique identifier for this frame or < 0 if the
|
||||||
/// underlying frame does not yet exist.
|
/// underlying frame does not yet exist.
|
||||||
///
|
///
|
||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
int64(CEF_CALLBACK* get_identifier)(struct _cef_frame_t* self);
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_identifier)(
|
|
||||||
struct _cef_frame_t* self);
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Returns the parent of this frame or NULL if this is the main (top-level)
|
/// Returns the parent of this frame or NULL if this is the main (top-level)
|
||||||
@@ -223,16 +216,24 @@ typedef struct _cef_frame_t {
|
|||||||
|
|
||||||
///
|
///
|
||||||
/// Create a new URL request that will be treated as originating from this
|
/// Create a new URL request that will be treated as originating from this
|
||||||
/// frame and the associated browser. Use cef_urlrequest_t::Create instead if
|
/// frame and the associated browser. This request may be intercepted by the
|
||||||
/// you do not want the request to have this association, in which case it may
|
/// client via cef_resource_request_handler_t or cef_scheme_handler_factory_t.
|
||||||
/// be handled differently (see documentation on that function). A request
|
/// Use cef_urlrequest_t::Create instead if you do not want the request to
|
||||||
/// created with this function may only originate from the browser process,
|
/// have this association, in which case it may be handled differently (see
|
||||||
/// and will behave as follows:
|
/// documentation on that function). Requests may originate from both the
|
||||||
/// - It may be intercepted by the client via CefResourceRequestHandler or
|
/// browser process and the render process.
|
||||||
/// CefSchemeHandlerFactory.
|
///
|
||||||
|
/// For requests originating from the browser process:
|
||||||
/// - POST data may only contain a single element of type PDE_TYPE_FILE or
|
/// - POST data may only contain a single element of type PDE_TYPE_FILE or
|
||||||
/// PDE_TYPE_BYTES.
|
/// PDE_TYPE_BYTES.
|
||||||
///
|
///
|
||||||
|
/// For requests originating from the render process:
|
||||||
|
/// - POST data may only contain a single element of type PDE_TYPE_BYTES.
|
||||||
|
/// - If the response contains Content-Disposition or Mime-Type header
|
||||||
|
/// values that would not normally be rendered then the response may
|
||||||
|
/// receive special handling inside the browser (for example, via the
|
||||||
|
/// file download code path instead of the URL request code path).
|
||||||
|
///
|
||||||
/// The |request| object will be marked as read-only after calling this
|
/// The |request| object will be marked as read-only after calling this
|
||||||
/// function.
|
/// function.
|
||||||
///
|
///
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=5b34d6cb46ae29d2934b0f3eeecac8e03a9654dd$
|
// $hash=3d97135fef535cc94aca6cf1afa4a9461c388b4f$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_FRAME_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_FRAME_HANDLER_CAPI_H_
|
||||||
@@ -53,66 +53,81 @@ extern "C" {
|
|||||||
/// The order of callbacks is:
|
/// The order of callbacks is:
|
||||||
///
|
///
|
||||||
/// (1) During initial cef_browser_host_t creation and navigation of the main
|
/// (1) During initial cef_browser_host_t creation and navigation of the main
|
||||||
/// frame:
|
/// frame: - cef_frame_handler_t::OnFrameCreated => The initial main frame
|
||||||
/// - cef_frame_handler_t::OnFrameCreated => The initial main frame object has
|
/// object has been
|
||||||
/// been created. Any commands will be queued until the frame is attached.
|
/// created. Any commands will be queued until the frame is attached.
|
||||||
/// - cef_frame_handler_t::OnMainFrameChanged => The initial main frame object
|
/// - cef_frame_handler_t::OnMainFrameChanged => The initial main frame object
|
||||||
/// has been assigned to the browser.
|
/// has
|
||||||
|
/// been assigned to the browser.
|
||||||
/// - cef_life_span_handler_t::OnAfterCreated => The browser is now valid and
|
/// - cef_life_span_handler_t::OnAfterCreated => The browser is now valid and
|
||||||
/// can be used.
|
/// can be
|
||||||
|
/// used.
|
||||||
/// - cef_frame_handler_t::OnFrameAttached => The initial main frame object is
|
/// - cef_frame_handler_t::OnFrameAttached => The initial main frame object is
|
||||||
/// now connected to its peer in the renderer process. Commands can be routed.
|
/// now
|
||||||
|
/// connected to its peer in the renderer process. Commands can be routed.
|
||||||
///
|
///
|
||||||
/// (2) During further cef_browser_host_t navigation/loading of the main frame
|
/// (2) During further cef_browser_host_t navigation/loading of the main frame
|
||||||
/// and/or sub-frames:
|
/// and/or sub-frames:
|
||||||
/// - cef_frame_handler_t::OnFrameCreated => A new main frame or sub-frame
|
/// - cef_frame_handler_t::OnFrameCreated => A new main frame or sub-frame
|
||||||
/// object has been created. Any commands will be queued until the frame is
|
/// object
|
||||||
/// attached.
|
/// has been created. Any commands will be queued until the frame is attached.
|
||||||
/// - cef_frame_handler_t::OnFrameAttached => A new main frame or sub-frame
|
/// - cef_frame_handler_t::OnFrameAttached => A new main frame or sub-frame
|
||||||
/// object is now connected to its peer in the renderer process. Commands can
|
/// object
|
||||||
/// be routed.
|
/// is now connected to its peer in the renderer process. Commands can be
|
||||||
|
/// routed.
|
||||||
/// - cef_frame_handler_t::OnFrameDetached => An existing main frame or sub-
|
/// - cef_frame_handler_t::OnFrameDetached => An existing main frame or sub-
|
||||||
/// frame object has lost its connection to the renderer process. If multiple
|
/// frame
|
||||||
|
/// object has lost its connection to the renderer process. If multiple
|
||||||
/// objects are detached at the same time then notifications will be sent for
|
/// objects are detached at the same time then notifications will be sent for
|
||||||
/// any sub-frame objects before the main frame object. Commands can no longer
|
/// any sub-frame objects before the main frame object. Commands can no longer
|
||||||
/// be routed and will be discarded.
|
/// be routed and will be discarded.
|
||||||
/// - CefFremeHadler::OnFrameDestroyed => An existing main frame or sub-frame
|
|
||||||
/// object has been destroyed.
|
|
||||||
/// - cef_frame_handler_t::OnMainFrameChanged => A new main frame object has
|
/// - cef_frame_handler_t::OnMainFrameChanged => A new main frame object has
|
||||||
/// been assigned to the browser. This will only occur with cross-origin
|
/// been
|
||||||
/// navigation or re-navigation after renderer process termination (due to
|
/// assigned to the browser. This will only occur with cross-origin navigation
|
||||||
/// crashes, etc).
|
/// or re-navigation after renderer process termination (due to crashes, etc).
|
||||||
///
|
///
|
||||||
/// (3) During final cef_browser_host_t destruction of the main frame:
|
/// (3) During final cef_browser_host_t destruction of the main frame: -
|
||||||
/// - cef_frame_handler_t::OnFrameDetached => Any sub-frame objects have lost
|
/// cef_frame_handler_t::OnFrameDetached => Any sub-frame objects have lost
|
||||||
/// their connection to the renderer process. Commands can no longer be routed
|
/// their
|
||||||
/// and will be discarded.
|
/// connection to the renderer process. Commands can no longer be routed and
|
||||||
/// - CefFreameHandler::OnFrameDestroyed => Any sub-frame objects have been
|
/// will be discarded.
|
||||||
/// destroyed.
|
|
||||||
/// - cef_life_span_handler_t::OnBeforeClose => The browser has been destroyed.
|
/// - cef_life_span_handler_t::OnBeforeClose => The browser has been destroyed.
|
||||||
/// - cef_frame_handler_t::OnFrameDetached => The main frame object have lost
|
/// - cef_frame_handler_t::OnFrameDetached => The main frame object have lost
|
||||||
/// its connection to the renderer process. Notifications will be sent for any
|
/// its
|
||||||
|
/// connection to the renderer process. Notifications will be sent for any
|
||||||
/// sub-frame objects before the main frame object. Commands can no longer be
|
/// sub-frame objects before the main frame object. Commands can no longer be
|
||||||
/// routed and will be discarded.
|
/// routed and will be discarded.
|
||||||
/// - CefFreameHandler::OnFrameDestroyed => The main frame object has been
|
|
||||||
/// destroyed.
|
|
||||||
/// - cef_frame_handler_t::OnMainFrameChanged => The final main frame object has
|
/// - cef_frame_handler_t::OnMainFrameChanged => The final main frame object has
|
||||||
/// been removed from the browser.
|
/// been removed from the browser.
|
||||||
///
|
///
|
||||||
/// Special handling applies for cross-origin loading on creation/navigation of
|
/// Cross-origin navigation and/or loading receives special handling.
|
||||||
/// sub-frames, and cross-origin loading on creation of new popup browsers. A
|
|
||||||
/// temporary frame will first be created in the parent frame's renderer
|
|
||||||
/// process. This temporary frame will never attach and will be discarded after
|
|
||||||
/// the real cross-origin frame is created in the new/target renderer process.
|
|
||||||
/// The client will receive creation callbacks for the temporary frame, followed
|
|
||||||
/// by cross-origin navigation callbacks (2) for the transition from the
|
|
||||||
/// temporary frame to the real frame. The temporary frame will not receive or
|
|
||||||
/// execute commands during this transitional period (any sent commands will be
|
|
||||||
/// discarded).
|
|
||||||
///
|
///
|
||||||
/// When the main frame navigates to a different origin the OnMainFrameChanged
|
/// When the main frame navigates to a different origin the OnMainFrameChanged
|
||||||
/// callback (2) will be executed with the old and new main frame objects.
|
/// callback (2) will be executed with the old and new main frame objects.
|
||||||
///
|
///
|
||||||
|
/// When a new sub-frame is loaded in, or an existing sub-frame is navigated to,
|
||||||
|
/// a different origin from the parent frame, a temporary sub-frame object will
|
||||||
|
/// first be created in the parent's renderer process. That temporary sub-frame
|
||||||
|
/// will then be discarded after the real cross-origin sub-frame is created in
|
||||||
|
/// the new/target renderer process. The client will receive cross-origin
|
||||||
|
/// navigation callbacks (2) for the transition from the temporary sub-frame to
|
||||||
|
/// the real sub-frame. The temporary sub-frame will not recieve or execute
|
||||||
|
/// commands during this transitional period (any sent commands will be
|
||||||
|
/// discarded).
|
||||||
|
///
|
||||||
|
/// When a new popup browser is created in a different origin from the parent
|
||||||
|
/// browser, a temporary main frame object for the popup will first be created
|
||||||
|
/// in the parent's renderer process. That temporary main frame will then be
|
||||||
|
/// discarded after the real cross-origin main frame is created in the
|
||||||
|
/// new/target renderer process. The client will recieve creation and initial
|
||||||
|
/// navigation callbacks (1) for the temporary main frame, followed by cross-
|
||||||
|
/// origin navigation callbacks (2) for the transition from the temporary main
|
||||||
|
/// frame to the real main frame. The temporary main frame may receive and
|
||||||
|
/// execute commands during this transitional period (any sent commands may be
|
||||||
|
/// executed, but the behavior is potentially undesirable since they execute in
|
||||||
|
/// the parent browser's renderer process and not the new/target renderer
|
||||||
|
/// process).
|
||||||
|
///
|
||||||
/// Callbacks will not be executed for placeholders that may be created during
|
/// Callbacks will not be executed for placeholders that may be created during
|
||||||
/// pre-commit navigation for sub-frames that do not yet exist in the renderer
|
/// pre-commit navigation for sub-frames that do not yet exist in the renderer
|
||||||
/// process. Placeholders will have cef_frame_t::get_identifier() == -4.
|
/// process. Placeholders will have cef_frame_t::get_identifier() == -4.
|
||||||
@@ -130,33 +145,17 @@ typedef struct _cef_frame_handler_t {
|
|||||||
/// Called when a new frame is created. This will be the first notification
|
/// Called when a new frame is created. This will be the first notification
|
||||||
/// that references |frame|. Any commands that require transport to the
|
/// that references |frame|. Any commands that require transport to the
|
||||||
/// associated renderer process (LoadRequest, SendProcessMessage, GetSource,
|
/// associated renderer process (LoadRequest, SendProcessMessage, GetSource,
|
||||||
/// etc.) will be queued. The queued commands will be sent before
|
/// etc.) will be queued until OnFrameAttached is called for |frame|.
|
||||||
/// OnFrameAttached or discarded before OnFrameDestroyed if the frame never
|
|
||||||
/// attaches.
|
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_frame_created)(struct _cef_frame_handler_t* self,
|
void(CEF_CALLBACK* on_frame_created)(struct _cef_frame_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
struct _cef_frame_t* frame);
|
struct _cef_frame_t* frame);
|
||||||
|
|
||||||
///
|
|
||||||
/// Called when an existing frame is destroyed. This will be the last
|
|
||||||
/// notification that references |frame| and cef_frame_t::is_valid() will
|
|
||||||
/// return false (0) for |frame|. If called during browser destruction and
|
|
||||||
/// after cef_life_span_handler_t::on_before_close() then
|
|
||||||
/// cef_browser_t::is_valid() will return false (0) for |browser|. Any queued
|
|
||||||
/// commands that have not been sent will be discarded before this callback.
|
|
||||||
///
|
|
||||||
void(CEF_CALLBACK* on_frame_destroyed)(struct _cef_frame_handler_t* self,
|
|
||||||
struct _cef_browser_t* browser,
|
|
||||||
struct _cef_frame_t* frame);
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Called when a frame can begin routing commands to/from the associated
|
/// Called when a frame can begin routing commands to/from the associated
|
||||||
/// renderer process. |reattached| will be true (1) if the frame was re-
|
/// renderer process. |reattached| will be true (1) if the frame was re-
|
||||||
/// attached after exiting the BackForwardCache or after encountering a
|
/// attached after exiting the BackForwardCache. Any commands that were queued
|
||||||
/// recoverable connection error. Any queued commands will now have been
|
/// have now been dispatched.
|
||||||
/// dispatched. This function will not be called for temporary frames created
|
|
||||||
/// during cross-origin navigation.
|
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_frame_attached)(struct _cef_frame_handler_t* self,
|
void(CEF_CALLBACK* on_frame_attached)(struct _cef_frame_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -164,19 +163,12 @@ typedef struct _cef_frame_handler_t {
|
|||||||
int reattached);
|
int reattached);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Called when a frame loses its connection to the renderer process. This may
|
/// Called when a frame loses its connection to the renderer process and will
|
||||||
/// occur when a frame is destroyed, enters the BackForwardCache, or
|
/// be destroyed. Any pending or future commands will be discarded and
|
||||||
/// encounters a rare connection error. In the case of frame destruction this
|
/// cef_frame_t::is_valid() will now return false (0) for |frame|. If called
|
||||||
/// call will be followed by a (potentially async) call to OnFrameDestroyed.
|
/// after cef_life_span_handler_t::on_before_close() during browser
|
||||||
/// If frame destruction is occuring synchronously then
|
/// destruction then cef_browser_t::is_valid() will return false (0) for
|
||||||
/// cef_frame_t::is_valid() will return false (0) for |frame|. If called
|
/// |browser|.
|
||||||
/// during browser destruction and after
|
|
||||||
/// cef_life_span_handler_t::on_before_close() then cef_browser_t::is_valid()
|
|
||||||
/// will return false (0) for |browser|. If, in the non-destruction case, the
|
|
||||||
/// same frame later exits the BackForwardCache or recovers from a connection
|
|
||||||
/// error then there will be a follow-up call to OnFrameAttached. This
|
|
||||||
/// function will not be called for temporary frames created during cross-
|
|
||||||
/// origin navigation.
|
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_frame_detached)(struct _cef_frame_handler_t* self,
|
void(CEF_CALLBACK* on_frame_detached)(struct _cef_frame_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
@@ -188,14 +180,14 @@ typedef struct _cef_frame_handler_t {
|
|||||||
/// navigation after renderer process termination (due to crashes, etc).
|
/// navigation after renderer process termination (due to crashes, etc).
|
||||||
/// |old_frame| will be NULL and |new_frame| will be non-NULL when a main
|
/// |old_frame| will be NULL and |new_frame| will be non-NULL when a main
|
||||||
/// frame is assigned to |browser| for the first time. |old_frame| will be
|
/// frame is assigned to |browser| for the first time. |old_frame| will be
|
||||||
/// non-NULL and |new_frame| will be NULL when a main frame is removed from
|
/// non-NULL and |new_frame| will be NULL and when a main frame is removed
|
||||||
/// |browser| for the last time. Both |old_frame| and |new_frame| will be non-
|
/// from |browser| for the last time. Both |old_frame| and |new_frame| will be
|
||||||
/// NULL for cross-origin navigations or re-navigation after renderer process
|
/// non-NULL for cross-origin navigations or re-navigation after renderer
|
||||||
/// termination. This function will be called after on_frame_created() for
|
/// process termination. This function will be called after on_frame_created()
|
||||||
/// |new_frame| and/or after on_frame_destroyed() for |old_frame|. If called
|
/// for |new_frame| and/or after on_frame_detached() for |old_frame|. If
|
||||||
/// during browser destruction and after
|
/// called after cef_life_span_handler_t::on_before_close() during browser
|
||||||
/// cef_life_span_handler_t::on_before_close() then cef_browser_t::is_valid()
|
/// destruction then cef_browser_t::is_valid() will return false (0) for
|
||||||
/// will return false (0) for |browser|.
|
/// |browser|.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_main_frame_changed)(struct _cef_frame_handler_t* self,
|
void(CEF_CALLBACK* on_main_frame_changed)(struct _cef_frame_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=df875cb63efa86d99aeea4528b34c0fa4d610365$
|
// $hash=14f7f979f668fdae0f080daa39f3c1b2e92162f9$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_I18N_UTIL_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_I18N_UTIL_CAPI_H_
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=9b939a05b46a94c7ce04a2e81607d82efd83c31d$
|
// $hash=f679dc1ec87e99bed6843d4f4dbbe04585a827bd$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_IMAGE_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_IMAGE_CAPI_H_
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=f883715592aad460fbe1b29d9faff1b16d36697e$
|
// $hash=523a692475e912e4ecad89842596c3d6eac6f4aa$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_JSDIALOG_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_JSDIALOG_HANDLER_CAPI_H_
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=457e803ce440ec32985d51e95a7efbce0ddf59d1$
|
// $hash=01d7f86c1304efe8dc8758624b74bafccf159e96$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_KEYBOARD_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_KEYBOARD_HANDLER_CAPI_H_
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=b262d702e9aca386a917905843892ab84c08c785$
|
// $hash=44555ceece9989dabfa57a520168fa874dcfe2df$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_LIFE_SPAN_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_LIFE_SPAN_HANDLER_CAPI_H_
|
||||||
@@ -62,40 +62,33 @@ typedef struct _cef_life_span_handler_t {
|
|||||||
|
|
||||||
///
|
///
|
||||||
/// Called on the UI thread before a new popup browser is created. The
|
/// Called on the UI thread before a new popup browser is created. The
|
||||||
/// |browser| and |frame| values represent the source of the popup request
|
/// |browser| and |frame| values represent the source of the popup request.
|
||||||
/// (opener browser and frame). The |popup_id| value uniquely identifies the
|
/// The |target_url| and |target_frame_name| values indicate where the popup
|
||||||
/// popup in the context of the opener browser. The |target_url| and
|
/// browser should navigate and may be NULL if not specified with the request.
|
||||||
/// |target_frame_name| values indicate where the popup browser should
|
/// The |target_disposition| value indicates where the user intended to open
|
||||||
/// navigate and may be NULL if not specified with the request. The
|
/// the popup (e.g. current tab, new tab, etc). The |user_gesture| value will
|
||||||
/// |target_disposition| value indicates where the user intended to open the
|
/// be true (1) if the popup was opened via explicit user gesture (e.g.
|
||||||
/// popup (e.g. current tab, new tab, etc). The |user_gesture| value will be
|
/// clicking a link) or false (0) if the popup opened automatically (e.g. via
|
||||||
/// true (1) if the popup was opened via explicit user gesture (e.g. clicking
|
/// the DomContentLoaded event). The |popupFeatures| structure contains
|
||||||
/// a link) or false (0) if the popup opened automatically (e.g. via the
|
/// additional information about the requested popup window. To allow creation
|
||||||
/// DomContentLoaded event). The |popupFeatures| structure contains additional
|
/// of the popup browser optionally modify |windowInfo|, |client|, |settings|
|
||||||
/// information about the requested popup window. To allow creation of the
|
/// and |no_javascript_access| and return false (0). To cancel creation of the
|
||||||
/// popup browser optionally modify |windowInfo|, |client|, |settings| and
|
|
||||||
/// |no_javascript_access| and return false (0). To cancel creation of the
|
|
||||||
/// popup browser return true (1). The |client| and |settings| values will
|
/// popup browser return true (1). The |client| and |settings| values will
|
||||||
/// default to the source browser's values. If the |no_javascript_access|
|
/// default to the source browser's values. If the |no_javascript_access|
|
||||||
/// value is set to false (0) the new browser will not be scriptable and may
|
/// value is set to false (0) the new browser will not be scriptable and may
|
||||||
/// not be hosted in the same renderer process as the source browser. Any
|
/// not be hosted in the same renderer process as the source browser. Any
|
||||||
/// modifications to |windowInfo| will be ignored if the parent browser is
|
/// modifications to |windowInfo| will be ignored if the parent browser is
|
||||||
/// wrapped in a cef_browser_view_t. The |extra_info| parameter provides an
|
/// wrapped in a cef_browser_view_t. Popup browser creation will be canceled
|
||||||
/// opportunity to specify extra information specific to the created popup
|
/// if the parent browser is destroyed before the popup browser creation
|
||||||
/// browser that will be passed to
|
/// completes (indicated by a call to OnAfterCreated for the popup browser).
|
||||||
|
/// The |extra_info| parameter provides an opportunity to specify extra
|
||||||
|
/// information specific to the created popup browser that will be passed to
|
||||||
/// cef_render_process_handler_t::on_browser_created() in the render process.
|
/// cef_render_process_handler_t::on_browser_created() in the render process.
|
||||||
///
|
///
|
||||||
/// If popup browser creation succeeds then OnAfterCreated will be called for
|
|
||||||
/// the new popup browser. If popup browser creation fails, and if the opener
|
|
||||||
/// browser has not yet been destroyed, then OnBeforePopupAborted will be
|
|
||||||
/// called for the opener browser. See OnBeforePopupAborted documentation for
|
|
||||||
/// additional details.
|
|
||||||
///
|
|
||||||
int(CEF_CALLBACK* on_before_popup)(
|
int(CEF_CALLBACK* on_before_popup)(
|
||||||
struct _cef_life_span_handler_t* self,
|
struct _cef_life_span_handler_t* self,
|
||||||
struct _cef_browser_t* browser,
|
struct _cef_browser_t* browser,
|
||||||
struct _cef_frame_t* frame,
|
struct _cef_frame_t* frame,
|
||||||
int popup_id,
|
|
||||||
const cef_string_t* target_url,
|
const cef_string_t* target_url,
|
||||||
const cef_string_t* target_frame_name,
|
const cef_string_t* target_frame_name,
|
||||||
cef_window_open_disposition_t target_disposition,
|
cef_window_open_disposition_t target_disposition,
|
||||||
@@ -107,54 +100,6 @@ typedef struct _cef_life_span_handler_t {
|
|||||||
struct _cef_dictionary_value_t** extra_info,
|
struct _cef_dictionary_value_t** extra_info,
|
||||||
int* no_javascript_access);
|
int* no_javascript_access);
|
||||||
|
|
||||||
///
|
|
||||||
/// Called on the UI thread if a new popup browser is aborted. This only
|
|
||||||
/// occurs if the popup is allowed in OnBeforePopup and creation fails before
|
|
||||||
/// OnAfterCreated is called for the new popup browser. The |browser| value is
|
|
||||||
/// the source of the popup request (opener browser). The |popup_id| value
|
|
||||||
/// uniquely identifies the popup in the context of the opener browser, and is
|
|
||||||
/// the same value that was passed to OnBeforePopup.
|
|
||||||
///
|
|
||||||
/// Any client state associated with pending popups should be cleared in
|
|
||||||
/// OnBeforePopupAborted, OnAfterCreated of the popup browser, or
|
|
||||||
/// OnBeforeClose of the opener browser. OnBeforeClose of the opener browser
|
|
||||||
/// may be called before this function in cases where the opener is closing
|
|
||||||
/// during popup creation, in which case cef_browser_host_t::IsValid will
|
|
||||||
/// return false (0) in this function.
|
|
||||||
///
|
|
||||||
void(CEF_CALLBACK* on_before_popup_aborted)(
|
|
||||||
struct _cef_life_span_handler_t* self,
|
|
||||||
struct _cef_browser_t* browser,
|
|
||||||
int popup_id);
|
|
||||||
|
|
||||||
///
|
|
||||||
/// Called on the UI thread before a new DevTools popup browser is created.
|
|
||||||
/// The |browser| value represents the source of the popup request. Optionally
|
|
||||||
/// modify |windowInfo|, |client|, |settings| and |extra_info| values. The
|
|
||||||
/// |client|, |settings| and |extra_info| values will default to the source
|
|
||||||
/// browser's values. Any modifications to |windowInfo| will be ignored if the
|
|
||||||
/// parent browser is Views-hosted (wrapped in a cef_browser_view_t).
|
|
||||||
///
|
|
||||||
/// The |extra_info| parameter provides an opportunity to specify extra
|
|
||||||
/// information specific to the created popup browser that will be passed to
|
|
||||||
/// cef_render_process_handler_t::on_browser_created() in the render process.
|
|
||||||
/// The existing |extra_info| object, if any, will be read-only but may be
|
|
||||||
/// replaced with a new object.
|
|
||||||
///
|
|
||||||
/// Views-hosted source browsers will create Views-hosted DevTools popups
|
|
||||||
/// unless |use_default_window| is set to to true (1). DevTools popups can be
|
|
||||||
/// blocked by returning true (1) from cef_command_handler_t::OnChromeCommand
|
|
||||||
/// for IDC_DEV_TOOLS. Only used with Chrome style.
|
|
||||||
///
|
|
||||||
void(CEF_CALLBACK* on_before_dev_tools_popup)(
|
|
||||||
struct _cef_life_span_handler_t* self,
|
|
||||||
struct _cef_browser_t* browser,
|
|
||||||
struct _cef_window_info_t* windowInfo,
|
|
||||||
struct _cef_client_t** client,
|
|
||||||
struct _cef_browser_settings_t* settings,
|
|
||||||
struct _cef_dictionary_value_t** extra_info,
|
|
||||||
int* use_default_window);
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Called after a new browser is created. It is now safe to begin performing
|
/// Called after a new browser is created. It is now safe to begin performing
|
||||||
/// actions with |browser|. cef_frame_handler_t callbacks related to initial
|
/// actions with |browser|. cef_frame_handler_t callbacks related to initial
|
||||||
@@ -165,44 +110,35 @@ typedef struct _cef_life_span_handler_t {
|
|||||||
struct _cef_browser_t* browser);
|
struct _cef_browser_t* browser);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Called when an Alloy style browser is ready to be closed, meaning that the
|
/// Called when a browser has recieved a request to close. This may result
|
||||||
/// close has already been initiated and that JavaScript unload handlers have
|
/// directly from a call to cef_browser_host_t::*close_browser() or indirectly
|
||||||
/// already executed or should be ignored. This may result directly from a
|
/// if the browser is parented to a top-level window created by CEF and the
|
||||||
/// call to cef_browser_host_t::[Try]close_browser() or indirectly if the
|
/// user attempts to close that window (by clicking the 'X', for example). The
|
||||||
/// browser's top-level parent window was created by CEF and the user attempts
|
/// do_close() function will be called after the JavaScript 'onunload' event
|
||||||
/// to close that window (by clicking the 'X', for example). do_close() will
|
/// has been fired.
|
||||||
/// not be called if the browser's host window/view has already been destroyed
|
|
||||||
/// (via parent window/view hierarchy tear-down, for example), as it is no
|
|
||||||
/// longer possible to customize the close behavior at that point.
|
|
||||||
///
|
///
|
||||||
/// An application should handle top-level parent window close notifications
|
/// An application should handle top-level owner window close notifications by
|
||||||
/// by calling cef_browser_host_t::try_close_browser() or
|
/// calling cef_browser_host_t::try_close_browser() or
|
||||||
/// cef_browser_host_t::CloseBrowser(false (0)) instead of allowing the window
|
/// cef_browser_host_t::CloseBrowser(false (0)) instead of allowing the window
|
||||||
/// to close immediately (see the examples below). This gives CEF an
|
/// to close immediately (see the examples below). This gives CEF an
|
||||||
/// opportunity to process JavaScript unload handlers and optionally cancel
|
/// opportunity to process the 'onbeforeunload' event and optionally cancel
|
||||||
/// the close before do_close() is called.
|
/// the close before do_close() is called.
|
||||||
///
|
///
|
||||||
/// When windowed rendering is enabled CEF will create an internal child
|
/// When windowed rendering is enabled CEF will internally create a window or
|
||||||
/// window/view to host the browser. In that case returning false (0) from
|
/// view to host the browser. In that case returning false (0) from do_close()
|
||||||
/// do_close() will send the standard close notification to the browser's top-
|
/// will send the standard close notification to the browser's top-level owner
|
||||||
/// level parent window (e.g. WM_CLOSE on Windows, performClose: on OS X,
|
/// window (e.g. WM_CLOSE on Windows, performClose: on OS X, "delete_event" on
|
||||||
/// "delete_event" on Linux or cef_window_delegate_t::can_close() callback
|
/// Linux or cef_window_delegate_t::can_close() callback from Views). If the
|
||||||
/// from Views).
|
/// browser's host window/view has already been destroyed (via view hierarchy
|
||||||
|
/// tear-down, for example) then do_close() will not be called for that
|
||||||
|
/// browser since is no longer possible to cancel the close.
|
||||||
///
|
///
|
||||||
/// When windowed rendering is disabled there is no internal window/view and
|
/// When windowed rendering is disabled returning false (0) from do_close()
|
||||||
/// returning false (0) from do_close() will cause the browser object to be
|
/// will cause the browser object to be destroyed immediately.
|
||||||
/// destroyed immediately.
|
|
||||||
///
|
///
|
||||||
/// If the browser's top-level parent window requires a non-standard close
|
/// If the browser's top-level owner window requires a non-standard close
|
||||||
/// notification then send that notification from do_close() and return true
|
/// notification then send that notification from do_close() and return true
|
||||||
/// (1). You are still required to complete the browser close as soon as
|
/// (1).
|
||||||
/// possible (either by calling [Try]close_browser() or by proceeding with
|
|
||||||
/// window/view hierarchy tear-down), otherwise the browser will be left in a
|
|
||||||
/// partially closed state that interferes with proper functioning. Top-level
|
|
||||||
/// windows created on the browser process UI thread can alternately call
|
|
||||||
/// cef_browser_host_t::is_ready_to_be_closed() in the close handler to check
|
|
||||||
/// close status instead of relying on custom do_close() handling. See
|
|
||||||
/// documentation on that function for additional details.
|
|
||||||
///
|
///
|
||||||
/// The cef_life_span_handler_t::on_before_close() function will be called
|
/// The cef_life_span_handler_t::on_before_close() function will be called
|
||||||
/// after do_close() (if do_close() is called) and immediately before the
|
/// after do_close() (if do_close() is called) and immediately before the
|
||||||
@@ -218,26 +154,22 @@ typedef struct _cef_life_span_handler_t {
|
|||||||
/// which sends a close notification
|
/// which sends a close notification
|
||||||
/// to the application's top-level window.
|
/// to the application's top-level window.
|
||||||
/// 2. Application's top-level window receives the close notification and
|
/// 2. Application's top-level window receives the close notification and
|
||||||
/// calls TryCloseBrowser() (similar to calling CloseBrowser(false)).
|
/// calls TryCloseBrowser() (which internally calls CloseBrowser(false)).
|
||||||
/// TryCloseBrowser() returns false so the client cancels the window
|
/// TryCloseBrowser() returns false so the client cancels the window
|
||||||
/// close.
|
/// close.
|
||||||
/// 3. JavaScript 'onbeforeunload' handler executes and shows the close
|
/// 3. JavaScript 'onbeforeunload' handler executes and shows the close
|
||||||
/// confirmation dialog (which can be overridden via
|
/// confirmation dialog (which can be overridden via
|
||||||
/// CefJSDialogHandler::OnBeforeUnloadDialog()).
|
/// CefJSDialogHandler::OnBeforeUnloadDialog()).
|
||||||
/// 4. User approves the close. 5. JavaScript 'onunload' handler executes.
|
/// 4. User approves the close. 5. JavaScript 'onunload' handler executes.
|
||||||
/// 6. Application's do_close() handler is called and returns false (0) by
|
/// 6. CEF sends a close notification to the application's top-level window
|
||||||
/// default.
|
/// (because DoClose() returned false by default).
|
||||||
/// 7. CEF sends a close notification to the application's top-level window
|
/// 7. Application's top-level window receives the close notification and
|
||||||
/// (because DoClose() returned false).
|
|
||||||
/// 8. Application's top-level window receives the close notification and
|
|
||||||
/// calls TryCloseBrowser(). TryCloseBrowser() returns true so the client
|
/// calls TryCloseBrowser(). TryCloseBrowser() returns true so the client
|
||||||
/// allows the window close.
|
/// allows the window close.
|
||||||
/// 9. Application's top-level window is destroyed, triggering destruction
|
/// 8. Application's top-level window is destroyed. 9. Application's
|
||||||
/// of the child browser window.
|
/// on_before_close() handler is called and the browser object
|
||||||
/// 10. Application's on_before_close() handler is called and the browser
|
|
||||||
/// object
|
|
||||||
/// is destroyed.
|
/// is destroyed.
|
||||||
/// 11. Application exits by calling cef_quit_message_loop() if no other
|
/// 10. Application exits by calling cef_quit_message_loop() if no other
|
||||||
/// browsers
|
/// browsers
|
||||||
/// exist.
|
/// exist.
|
||||||
///
|
///
|
||||||
@@ -255,17 +187,13 @@ typedef struct _cef_life_span_handler_t {
|
|||||||
/// CefJSDialogHandler::OnBeforeUnloadDialog()).
|
/// CefJSDialogHandler::OnBeforeUnloadDialog()).
|
||||||
/// 4. User approves the close. 5. JavaScript 'onunload' handler executes.
|
/// 4. User approves the close. 5. JavaScript 'onunload' handler executes.
|
||||||
/// 6. Application's do_close() handler is called. Application will:
|
/// 6. Application's do_close() handler is called. Application will:
|
||||||
/// A. Set a flag to indicate that the next top-level window close attempt
|
/// A. Set a flag to indicate that the next close attempt will be allowed.
|
||||||
/// will be allowed.
|
|
||||||
/// B. Return false.
|
/// B. Return false.
|
||||||
/// 7. CEF sends a close notification to the application's top-level window
|
/// 7. CEF sends an close notification to the application's top-level window.
|
||||||
/// (because DoClose() returned false).
|
|
||||||
/// 8. Application's top-level window receives the close notification and
|
/// 8. Application's top-level window receives the close notification and
|
||||||
/// allows the window to close based on the flag from #6A.
|
/// allows the window to close based on the flag from #6B.
|
||||||
/// 9. Application's top-level window is destroyed, triggering destruction
|
/// 9. Application's top-level window is destroyed. 10. Application's
|
||||||
/// of the child browser window.
|
/// on_before_close() handler is called and the browser object
|
||||||
/// 10. Application's on_before_close() handler is called and the browser
|
|
||||||
/// object
|
|
||||||
/// is destroyed.
|
/// is destroyed.
|
||||||
/// 11. Application exits by calling cef_quit_message_loop() if no other
|
/// 11. Application exits by calling cef_quit_message_loop() if no other
|
||||||
/// browsers
|
/// browsers
|
||||||
@@ -279,11 +207,10 @@ typedef struct _cef_life_span_handler_t {
|
|||||||
/// browser object and do not attempt to execute any functions on the browser
|
/// browser object and do not attempt to execute any functions on the browser
|
||||||
/// object (other than IsValid, GetIdentifier or IsSame) after this callback
|
/// object (other than IsValid, GetIdentifier or IsSame) after this callback
|
||||||
/// returns. cef_frame_handler_t callbacks related to final main frame
|
/// returns. cef_frame_handler_t callbacks related to final main frame
|
||||||
/// destruction, and OnBeforePopupAborted callbacks for any pending popups,
|
/// destruction will arrive after this callback and cef_browser_t::IsValid
|
||||||
/// will arrive after this callback and cef_browser_t::IsValid will return
|
/// will return false (0) at that time. Any in-progress network requests
|
||||||
/// false (0) at that time. Any in-progress network requests associated with
|
/// associated with |browser| will be aborted when the browser is destroyed,
|
||||||
/// |browser| will be aborted when the browser is destroyed, and
|
/// and cef_resource_request_handler_t callbacks related to those requests may
|
||||||
/// cef_resource_request_handler_t callbacks related to those requests may
|
|
||||||
/// still arrive on the IO thread after this callback. See cef_frame_handler_t
|
/// still arrive on the IO thread after this callback. See cef_frame_handler_t
|
||||||
/// and do_close() documentation for additional usage information.
|
/// and do_close() documentation for additional usage information.
|
||||||
///
|
///
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=4b69be2184fff5ac127cbfaa2d59a3f217fc99a8$
|
// $hash=2713381c9969d7039e6c1a1ed2527e5aeb5425ce$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_LOAD_HANDLER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_LOAD_HANDLER_CAPI_H_
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=9c7efc4b6eb4b876763822a337780fd10ed4ccc5$
|
// $hash=77920892e7d9e8b98106e0bc8dfcf4b4c52a24e6$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_MEDIA_ROUTER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_MEDIA_ROUTER_CAPI_H_
|
||||||
@@ -114,8 +114,8 @@ typedef struct _cef_media_router_t {
|
|||||||
/// Returns the MediaRouter object associated with the global request context.
|
/// Returns the MediaRouter object associated with the global request context.
|
||||||
/// If |callback| is non-NULL it will be executed asnychronously on the UI
|
/// If |callback| is non-NULL it will be executed asnychronously on the UI
|
||||||
/// thread after the manager's storage has been initialized. Equivalent to
|
/// thread after the manager's storage has been initialized. Equivalent to
|
||||||
/// calling cef_request_context_t::cef_request_context_get_global_context()-
|
/// calling cef_request_context_t::cef_request_context_get_global_context()->get
|
||||||
/// >get_media_router().
|
/// _media_router().
|
||||||
///
|
///
|
||||||
CEF_EXPORT cef_media_router_t* cef_media_router_get_global(
|
CEF_EXPORT cef_media_router_t* cef_media_router_get_global(
|
||||||
struct _cef_completion_callback_t* callback);
|
struct _cef_completion_callback_t* callback);
|
||||||
@@ -156,7 +156,7 @@ typedef struct _cef_media_observer_t {
|
|||||||
cef_media_route_connection_state_t state);
|
cef_media_route_connection_state_t state);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// A message was received over |route|. |message| is only valid for the scope
|
/// A message was recieved over |route|. |message| is only valid for the scope
|
||||||
/// of this callback and should be copied if necessary.
|
/// of this callback and should be copied if necessary.
|
||||||
///
|
///
|
||||||
void(CEF_CALLBACK* on_route_message_received)(
|
void(CEF_CALLBACK* on_route_message_received)(
|
||||||
@@ -257,6 +257,13 @@ typedef struct _cef_media_sink_t {
|
|||||||
// The resulting string must be freed by calling cef_string_userfree_free().
|
// The resulting string must be freed by calling cef_string_userfree_free().
|
||||||
cef_string_userfree_t(CEF_CALLBACK* get_name)(struct _cef_media_sink_t* self);
|
cef_string_userfree_t(CEF_CALLBACK* get_name)(struct _cef_media_sink_t* self);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns the description of this sink.
|
||||||
|
///
|
||||||
|
// 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.
|
/// Returns the icon type for this sink.
|
||||||
///
|
///
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=df171056173cd3468327155836d09db6169df58c$
|
// $hash=4bf9250599e3ba26e7f74ec22338548492202625$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_CAPI_H_
|
||||||
@@ -473,15 +473,14 @@ typedef struct _cef_menu_model_t {
|
|||||||
///
|
///
|
||||||
/// Sets the font list for the specified |command_id|. If |font_list| is NULL
|
/// Sets the font list for the specified |command_id|. If |font_list| is NULL
|
||||||
/// the system font will be used. Returns true (1) on success. The format is
|
/// the system font will be used. Returns true (1) on success. The format is
|
||||||
/// "<FONT_FAMILY_LIST>,[STYLES] <SIZE>", where:
|
/// "<FONT_FAMILY_LIST>,[STYLES] <SIZE>", where: - FONT_FAMILY_LIST is a
|
||||||
/// - FONT_FAMILY_LIST is a comma-separated list of font family names,
|
/// comma-separated list of font family names, - STYLES is an optional space-
|
||||||
/// - STYLES is an optional space-separated list of style names (case-
|
/// separated list of style names
|
||||||
/// sensitive "Bold" and "Italic" are supported), and
|
/// (case-sensitive "Bold" and "Italic" are supported), and
|
||||||
/// - SIZE is an integer font size in pixels with the suffix "px".
|
/// - SIZE is an integer font size in pixels with the suffix "px".
|
||||||
///
|
///
|
||||||
/// Here are examples of valid font description strings:
|
/// Here are examples of valid font description strings: - "Arial, Helvetica,
|
||||||
/// - "Arial, Helvetica, Bold Italic 14px"
|
/// Bold Italic 14px" - "Arial, 14px"
|
||||||
/// - "Arial, 14px"
|
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_font_list)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_font_list)(struct _cef_menu_model_t* self,
|
||||||
int command_id,
|
int command_id,
|
||||||
@@ -489,15 +488,16 @@ typedef struct _cef_menu_model_t {
|
|||||||
|
|
||||||
///
|
///
|
||||||
/// Sets the font list for the specified |index|. Specify an |index| value of
|
/// Sets the font list for the specified |index|. Specify an |index| value of
|
||||||
/// - 1 to set the default font. If |font_list| is NULL the system font will
|
/// -1 to set the default font. If |font_list| is NULL the system font will be
|
||||||
/// - FONT_FAMILY_LIST is a comma-separated list of font family names,
|
/// used. Returns true (1) on success. The format is
|
||||||
/// - STYLES is an optional space-separated list of style names (case-
|
/// "<FONT_FAMILY_LIST>,[STYLES] <SIZE>", where: - FONT_FAMILY_LIST is a
|
||||||
/// sensitive "Bold" and "Italic" are supported), and
|
/// comma-separated list of font family names, - STYLES is an optional space-
|
||||||
|
/// separated list of style names
|
||||||
|
/// (case-sensitive "Bold" and "Italic" are supported), and
|
||||||
/// - SIZE is an integer font size in pixels with the suffix "px".
|
/// - SIZE is an integer font size in pixels with the suffix "px".
|
||||||
///
|
///
|
||||||
/// Here are examples of valid font description strings:
|
/// Here are examples of valid font description strings: - "Arial, Helvetica,
|
||||||
/// - "Arial, Helvetica, Bold Italic 14px"
|
/// Bold Italic 14px" - "Arial, 14px"
|
||||||
/// - "Arial, 14px"
|
|
||||||
///
|
///
|
||||||
int(CEF_CALLBACK* set_font_list_at)(struct _cef_menu_model_t* self,
|
int(CEF_CALLBACK* set_font_list_at)(struct _cef_menu_model_t* self,
|
||||||
int index,
|
int index,
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=caedce6bfadf82e9c0f4469ec85ae1cb0cecf272$
|
// $hash=8254165498a527d40517c1bc8ec413ad7a0ed259$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_DELEGATE_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_DELEGATE_CAPI_H_
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=37bc08d68db42172bf4e93f54497ab7a032142ab$
|
// $hash=2822d96d72b7df816c0fefb4ce1cbba18add50ac$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_NAVIGATION_ENTRY_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_NAVIGATION_ENTRY_CAPI_H_
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2025 Marshall A. Greenblatt. All rights reserved.
|
// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// modification, are permitted provided that the following conditions are
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=5272c7801673a332b2af12ef92325d0222156d5a$
|
// $hash=a40860835e6e693ed2f85eab5fa7990b7f2c7bbe$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_ORIGIN_WHITELIST_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_ORIGIN_WHITELIST_CAPI_H_
|
||||||
@@ -70,7 +70,7 @@ extern "C" {
|
|||||||
/// qualified |source_origin| URL (like http://www.example.com) will be allowed
|
/// qualified |source_origin| URL (like http://www.example.com) will be allowed
|
||||||
/// access to all resources hosted on the specified |target_protocol| and
|
/// access to all resources hosted on the specified |target_protocol| and
|
||||||
/// |target_domain|. If |target_domain| is non-NULL and
|
/// |target_domain|. If |target_domain| is non-NULL and
|
||||||
/// |allow_target_subdomains| is false (0) only exact domain matches will be
|
/// |allow_target_subdomains| if false (0) only exact domain matches will be
|
||||||
/// allowed. If |target_domain| contains a top- level domain component (like
|
/// allowed. If |target_domain| contains a top- level domain component (like
|
||||||
/// "example.com") and |allow_target_subdomains| is true (1) sub-domain matches
|
/// "example.com") and |allow_target_subdomains| is true (1) sub-domain matches
|
||||||
/// will be allowed. If |target_domain| is NULL and |allow_target_subdomains| if
|
/// will be allowed. If |target_domain| is NULL and |allow_target_subdomains| if
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user