aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--recipes-wam/cef/cef_git.bb278
-rw-r--r--recipes-wam/cef/files/cef/0001-Add-an-option-to-use-an-output-directory-outside-src.patch12
-rw-r--r--recipes-wam/cef/files/cef/0002-Add-an-option-to-override-the-default-distrib-direct.patch12
-rw-r--r--recipes-wam/cef/files/cef/0003-Add-an-option-to-use-an-alternative-base-output-dire.patch11
-rw-r--r--recipes-wam/cef/files/cef/0004-Add-an-option-to-bypass-sysroot-checking-and-force.patch28
-rw-r--r--recipes-wam/cef/files/cef/0005-Add-AGL-wayland-window-related-calls.patch (renamed from recipes-wam/cef/files/cef/0006-Add-AGL-wayland-window-related-calls.patch)43
-rw-r--r--recipes-wam/cef/files/cef/0005-Linux-Fix-build-without-X11-fixes-issue-3431.patch62
-rw-r--r--recipes-wam/cef/files/cef/0006-Add-a-method-to-check-if-the-agl-window-is-configure.patch (renamed from recipes-wam/cef/files/cef/0007-Add-a-method-to-check-if-the-agl-window-is-configure.patch)36
-rw-r--r--recipes-wam/cef/files/cef/0007-Add-the-SetActivateRegion-method.patch (renamed from recipes-wam/cef/files/cef/0008-Add-the-SetActivateRegion-method.patch)28
-rw-r--r--recipes-wam/cef/files/cef/0008-Allow-passing-the-app_id-on-widget-creation.patch (renamed from recipes-wam/cef/files/cef/0009-Allow-passing-the-app_id-on-widget-creation.patch)40
-rw-r--r--recipes-wam/cef/files/cef/0009-Update-generated-api.patch753
-rw-r--r--recipes-wam/cef/files/cef/0010-Make-patcher-work-outside-a-git-checkout.patch118
-rw-r--r--recipes-wam/cef/files/cef/0010-Update-generated-api-wrapper-files.patch2912
-rw-r--r--recipes-wam/cef/files/cef/0011-Avoid-the-RuntimeError-dictionary-changed-size-durin.patch26
-rw-r--r--recipes-wam/cef/files/chromium/0001-agl-compositor-Add-agl_shell_wrapper-AGL-wayland-ext.patch (renamed from recipes-wam/cef/files/chromium/0005-Add-the-essential-parts-of-wayland-extensions-and-ag.patch)88
-rw-r--r--recipes-wam/cef/files/chromium/0001-sql-relax-constraints-on-VirtualCursor-layout.patch51
-rw-r--r--recipes-wam/cef/files/chromium/0002-agl-Add-waylandwindow-window-tree-host-essential-par.patch (renamed from recipes-wam/cef/files/chromium/0006-Add-webos-agl-waylandwindow-window-tree-host-essenti.patch)425
-rw-r--r--recipes-wam/cef/files/chromium/0003-agl-Only-bind-to-agl_shell-if-it-s-the-browser-proce.patch (renamed from recipes-wam/cef/files/chromium/0007-Only-bind-to-agl_shell-if-it-s-the-browser-process.patch)8
-rw-r--r--recipes-wam/cef/files/chromium/0004-Don-t-use-DRI-for-renesas.patch42
-rw-r--r--recipes-wam/cef/files/chromium/0004-agl-Add-a-method-to-check-if-the-agl-window-is-confi.patch (renamed from recipes-wam/cef/files/chromium/0008-Add-a-method-to-check-if-the-agl-window-is-configure.patch)11
-rw-r--r--recipes-wam/cef/files/chromium/0005-agl-Start-using-agl-shell-version-4.patch (renamed from recipes-wam/cef/files/chromium/0009-Start-using-agl-shell-version-4.patch)7
-rw-r--r--recipes-wam/cef/files/chromium/0006-agl-Don-t-use-DRI-for-renesas.patch72
-rw-r--r--recipes-wam/cef/files/chromium/0007-meta-browser-Remove-the-GN-settings-done-for-clang-t.patch (renamed from recipes-wam/cef/files/chromium/0003-Remove-the-GN-settings-done-for-clang-that-conflict-.patch)37
-rw-r--r--recipes-wam/cef/files/chromium/0008-meta-browser-Pass-no-static-libstdc-to-gen.py.patch31
-rw-r--r--recipes-wam/cef/files/chromium/0009-meta-browser-IWYU-Add-includes-for-size_t-and-int64_.patch42
-rw-r--r--recipes-wam/cef/files/chromium/0010-meta-browser-BUILD-do-not-specify-march-on-arm.patch43
-rw-r--r--recipes-wam/cef/files/chromium/0011-meta-browser-Avoid-parenthesized-initialization-of-a.patch164
-rw-r--r--recipes-wam/cef/files/chromium/0012-meta-browser-Fix-constexpr-variable-cannot-have-non-.patch78
-rw-r--r--recipes-wam/cef/files/chromium/0013-meta-browser-Add-missing-typename-s.patch105
-rw-r--r--recipes-wam/cef/files/chromium/0014-meta-browser-Avoid-std-ranges-find_if.patch70
-rw-r--r--recipes-wam/cef/files/chromium/0015-meta-browser-Avoid-capturing-structured-bindings.patch56
-rw-r--r--recipes-wam/cef/files/chromium/0016-meta-browser-Delete-compiler-options-not-available-i.patch32
-rw-r--r--recipes-wam/cef/files/chromium/0017-meta-browser-Don-t-pass-disable-auto-upgrade-debug-i.patch39
-rw-r--r--recipes-wam/cef/files/chromium/0018-meta-browser-Fix-undefined-symbol-PaintOpWriter-Seri.patch49
-rw-r--r--recipes-wam/cef/files/chromium/0019-upstream-Initialize-ServerCvc-with-designated-initia.patch45
-rw-r--r--recipes-wam/cef/files/chromium/0020-M118-fix-Don-t-look-for-depot_tools-in-chrommium-s-t.patch (renamed from recipes-wam/cef/files/chromium/0002-Don-t-look-for-depot_tools-in-chrommium-s-third_part.patch)17
-rw-r--r--recipes-wam/cef/files/chromium/0021-M118-fix-Add-multiple-missing-includes.patch69
-rw-r--r--recipes-wam/cef/files/chromium/0022-M118-fix-Fix-aggregate-initialization-in-trace_log.patch34
-rw-r--r--recipes-wam/cef/files/chromium/0023-M118-fix-Add-missing-typename-keyword-in-multiple-st.patch140
-rw-r--r--recipes-wam/cef/files/chromium/0024-M118-fix-Fix-comparison-in-HostResolverCache.patch34
-rw-r--r--recipes-wam/cef/files/chromium/0025-M118-fix-Avoid-using-std-ranges-any_of-find_if-none_.patch92
-rw-r--r--recipes-wam/cef/files/chromium/0026-M118-fix-Add-deleted-constructors-operators.patch339
-rw-r--r--recipes-wam/cef/files/chromium/0027-M118-fix-Initialize-percentages-member-on-blink-Font.patch52
-rw-r--r--recipes-wam/cef/files/chromium/0028-M118-fix-Don-t-delete-ZstdSourceStream-copy-move-cto.patch32
-rw-r--r--recipes-wam/cef/files/chromium/0029-M118-fix-Fix-issue-with-structured-bindinds-captured.patch68
-rw-r--r--recipes-wam/cef/files/chromium/0030-M118-fix-Only-default-arm_use_neon-to-true-if-its-va.patch107
-rw-r--r--recipes-wam/cef/files/chromium/0031-M118-fix-Add-a-way-to-set-different-lib-paths-host-a.patch135
-rw-r--r--recipes-wam/cef/files/chromium/0032-M118-fix-zlib-Fix-arm-build.patch48
-rw-r--r--recipes-wam/cef/files/chromium/0033-M118-fix-Fix-skia-linker-issues-for-arm-neon.patch56
49 files changed, 3478 insertions, 3599 deletions
diff --git a/recipes-wam/cef/cef_git.bb b/recipes-wam/cef/cef_git.bb
index 1ce1d5fd8..63897f3e4 100644
--- a/recipes-wam/cef/cef_git.bb
+++ b/recipes-wam/cef/cef_git.bb
@@ -7,151 +7,93 @@ LIC_FILES_CHKSUM = "\
file://third_party/blink/renderer/core/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \
file://third_party/blink/renderer/core/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \
"
-CHROMIUM_URL = "github.com/rogerzanoni/chromium108.git"
-CHROMIUM_VERSION = "108.0.5359.125"
-BRANCH_chromium108 = "5359"
-# Taken from https://bitbucket.org/chromiumembedded/cef/src/5615/CHROMIUM_BUILD_COMPATIBILITY.txt
-SRCREV_chromium108 = "ef52580d516c7f65e11cb7de66cfb3b3507a2219"
-SRCREV_cef = "a98cd4cdc0fdc49b6c38ba10cec800922745441e"
+
+CHROMIUM_VERSION = "118.0.5993.80"
+BRANCH = "5993"
+SRCREV = "3cffa575446727e2fe1f6499efa21f8e096e8ca0"
+
GN_TARGET_CPU = "${@gn_arch_name('${TUNE_ARCH}')}"
-PV = "${CHROMIUM_VERSION}.${BRANCH_chromium108}+git"
+PV = "${CHROMIUM_VERSION}.${BRANCH}+git"
FILESEXTRAPATHS:prepend := "${THISDIR}/files/cef:"
FILESEXTRAPATHS:prepend := "${THISDIR}/files/chromium:"
+# The [agl]-prefixed patches are the changes needed to make WAM work with
+# agl-compositor. The [meta-browser] patches comes from the https://github.com/OSSystems/meta-browser
+# project that does similar work on keeping up to the new chromium milestones
+# and the [MXX-Fix] patches are the fixes done by us to fix build issues for
+# the current chromium milestone.
+# For more information about the current milestones: https://chromiumdash.appspot.com/releases?platform=Linux
SRC_URI = "\
- git://${CHROMIUM_URL};branch=${BRANCH_chromium108};protocol=https;rev=${SRCREV_chromium108};name=chromium108;destsuffix=git/chromium/src \
- file://0001-sql-relax-constraints-on-VirtualCursor-layout.patch \
- file://0002-Don-t-look-for-depot_tools-in-chrommium-s-third_part.patch \
- file://0003-Remove-the-GN-settings-done-for-clang-that-conflict-.patch \
- file://0004-Don-t-use-DRI-for-renesas.patch \
- file://0005-Add-the-essential-parts-of-wayland-extensions-and-ag.patch \
- file://0006-Add-webos-agl-waylandwindow-window-tree-host-essenti.patch \
- file://0007-Only-bind-to-agl_shell-if-it-s-the-browser-process.patch \
- file://0008-Add-a-method-to-check-if-the-agl-window-is-configure.patch \
- file://0009-Start-using-agl-shell-version-4.patch \
+ https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${CHROMIUM_VERSION}.tar.xz \
+ file://0001-agl-compositor-Add-agl_shell_wrapper-AGL-wayland-ext.patch \
+ file://0002-agl-Add-waylandwindow-window-tree-host-essential-par.patch \
+ file://0003-agl-Only-bind-to-agl_shell-if-it-s-the-browser-proce.patch \
+ file://0004-agl-Add-a-method-to-check-if-the-agl-window-is-confi.patch \
+ file://0005-agl-Start-using-agl-shell-version-4.patch \
+ file://0006-agl-Don-t-use-DRI-for-renesas.patch \
+ file://0007-meta-browser-Remove-the-GN-settings-done-for-clang-t.patch \
+ file://0008-meta-browser-Pass-no-static-libstdc-to-gen.py.patch \
+ file://0009-meta-browser-IWYU-Add-includes-for-size_t-and-int64_.patch \
+ file://0010-meta-browser-BUILD-do-not-specify-march-on-arm.patch \
+ file://0011-meta-browser-Avoid-parenthesized-initialization-of-a.patch \
+ file://0012-meta-browser-Fix-constexpr-variable-cannot-have-non-.patch \
+ file://0013-meta-browser-Add-missing-typename-s.patch \
+ file://0014-meta-browser-Avoid-std-ranges-find_if.patch \
+ file://0015-meta-browser-Avoid-capturing-structured-bindings.patch \
+ file://0016-meta-browser-Delete-compiler-options-not-available-i.patch \
+ file://0017-meta-browser-Don-t-pass-disable-auto-upgrade-debug-i.patch \
+ file://0018-meta-browser-Fix-undefined-symbol-PaintOpWriter-Seri.patch \
+ file://0019-upstream-Initialize-ServerCvc-with-designated-initia.patch \
+ file://0020-M118-fix-Don-t-look-for-depot_tools-in-chrommium-s-t.patch \
+ file://0021-M118-fix-Add-multiple-missing-includes.patch \
+ file://0022-M118-fix-Fix-aggregate-initialization-in-trace_log.patch \
+ file://0023-M118-fix-Add-missing-typename-keyword-in-multiple-st.patch \
+ file://0024-M118-fix-Fix-comparison-in-HostResolverCache.patch \
+ file://0025-M118-fix-Avoid-using-std-ranges-any_of-find_if-none_.patch \
+ file://0026-M118-fix-Add-deleted-constructors-operators.patch \
+ file://0027-M118-fix-Initialize-percentages-member-on-blink-Font.patch \
+ file://0028-M118-fix-Don-t-delete-ZstdSourceStream-copy-move-cto.patch \
+ file://0029-M118-fix-Fix-issue-with-structured-bindinds-captured.patch \
+ file://0030-M118-fix-Only-default-arm_use_neon-to-true-if-its-va.patch \
+ file://0031-M118-fix-Add-a-way-to-set-different-lib-paths-host-a.patch \
+ file://0032-M118-fix-zlib-Fix-arm-build.patch \
+ file://0033-M118-fix-Fix-skia-linker-issues-for-arm-neon.patch \
\
- git://bitbucket.org/chromiumembedded/cef.git;branch=${BRANCH_chromium108};protocol=https;rev=${SRCREV_cef};name=cef;destsuffix=git/chromium/src/cef \
+ git://bitbucket.org/chromiumembedded/cef.git;branch=${BRANCH};protocol=https;rev=${SRCREV};name=cef;destsuffix=chromium-${CHROMIUM_VERSION}/cef \
file://0001-Add-an-option-to-use-an-output-directory-outside-src.patch;patchdir=cef \
file://0002-Add-an-option-to-override-the-default-distrib-direct.patch;patchdir=cef \
file://0003-Add-an-option-to-use-an-alternative-base-output-dire.patch;patchdir=cef \
file://0004-Add-an-option-to-bypass-sysroot-checking-and-force.patch;patchdir=cef \
- file://0005-Linux-Fix-build-without-X11-fixes-issue-3431.patch;patchdir=cef \
- file://0006-Add-AGL-wayland-window-related-calls.patch;patchdir=cef \
- file://0007-Add-a-method-to-check-if-the-agl-window-is-configure.patch;patchdir=cef \
- file://0008-Add-the-SetActivateRegion-method.patch;patchdir=cef \
- file://0009-Allow-passing-the-app_id-on-widget-creation.patch;patchdir=cef \
- file://0010-Update-generated-api-wrapper-files.patch;patchdir=cef \
+ file://0005-Add-AGL-wayland-window-related-calls.patch;patchdir=cef \
+ file://0006-Add-a-method-to-check-if-the-agl-window-is-configure.patch;patchdir=cef \
+ file://0007-Add-the-SetActivateRegion-method.patch;patchdir=cef \
+ file://0008-Allow-passing-the-app_id-on-widget-creation.patch;patchdir=cef \
+ file://0009-Update-generated-api.patch;patchdir=cef \
+ file://0010-Make-patcher-work-outside-a-git-checkout.patch;patchdir=cef \
+ file://0011-Avoid-the-RuntimeError-dictionary-changed-size-durin.patch;patchdir=cef \
"
-BASE_DIR = "${WORKDIR}/git/chromium"
-CHROMIUM_DIR = "${BASE_DIR}/src"
+SRC_URI[sha256sum] = "741c5528a151bc364999969077a13d7a283cfd0eaf34adf47de667a34e5e58ff"
+
+CHROMIUM_DIR = "${WORKDIR}/chromium-${CHROMIUM_VERSION}"
CEF_DIR = "${CHROMIUM_DIR}/cef"
DEPOT_TOOLS_DIR="${STAGING_DIR_NATIVE}${datadir}/depot_tools"
-S = "${BASE_DIR}/src"
+S = "${CHROMIUM_DIR}"
B = "${WORKDIR}/build"
OUT_PATH = "${B}/out/Release_GN_${GN_TARGET_CPU}"
DIST_PATH = "${OUT_PATH}/dist/cef-minimal_${GN_TARGET_CPU}"
CEF_DATA_PATH = "${datadir}/cef"
-DEPENDS:append = " curl clang-native gperf-native dbus libcxx compiler-rt libxkbcommon nss nss-native atk at-spi2-atk libdrm pango cairo virtual/egl qemu-native pciutils glib-2.0 pkgconfig-native pulseaudio xz-native"
+DEPENDS:append = " curl clang clang-native gperf-native gn-native dbus libcxx libcxx-native libpng libxslt jpeg compiler-rt libxkbcommon nss nss-native atk at-spi2-atk libdrm pango cairo virtual/egl qemu-native pciutils glib-2.0 pkgconfig-native pulseaudio xz-native compiler-rt compiler-rt-native"
do_sync[depends] += "depot-tools-wam-native:do_populate_sysroot"
do_configure[depends] += "depot-tools-wam-native:do_populate_sysroot"
do_compile[depends] += "depot-tools-wam-native:do_populate_sysroot"
-DOWNLOAD_PGO_PROFILES="False"
-
-# Adapted from CEF's tools/gclient_hooks.py
-python do_gclient_config() {
- import os
- # Create gclient configuration file.
- gclient_file = os.path.join(d.expand('${BASE_DIR}'), '.gclient')
- # Exclude unnecessary directories. Intentionally written without newlines.
- gclient_spec = \
- "solutions = [{"+\
- "'managed': False,"+\
- "'name': 'src', "+\
- "'url': '" + d.expand('https://${CHROMIUM_URL}') + "', "+\
- "'custom_vars': {"+\
- d.expand("'checkout_pgo_profiles': '${DOWNLOAD_PGO_PROFILES}'") +\
- "}, "+\
- "'custom_deps': {"+\
- "'build': None, "+\
- "'build/scripts/command_wrapper/bin': None, "+\
- "'build/scripts/gsd_generate_index': None, "+\
- "'build/scripts/private/data/reliability': None, "+\
- "'build/scripts/tools/deps2git': None, "+\
- "'build/third_party/lighttpd': None, "+\
- "'commit-queue': None, "+\
- "'depot_tools': None, "+\
- "'src/chrome_frame/tools/test/reference_build/chrome': None, "+\
- "'src/chrome/tools/test/reference_build/chrome_linux': None, "+\
- "'src/chrome/tools/test/reference_build/chrome_mac': None, "+\
- "'src/chrome/tools/test/reference_build/chrome_win': None, "+\
- "}, "+\
- "'deps_file': 'DEPS', "+\
- "'safesync_url': ''"+\
- "}]"
-
- with open(gclient_file, 'w+', encoding='utf-8') as fp:
- fp.write(gclient_spec)
-}
-addtask do_gclient_config after do_unpack before do_configure
-
-# Mostly adapted from CEF's tools/automate/automate-git.py
-do_sync[network] = "1"
-python do_sync() {
- import os
- def cef_run(command_line, working_dir):
- import subprocess
- env = os.environ
- env['PATH'] = d.expand("${DEPOT_TOOLS_DIR}") + os.pathsep + env['PATH']
- env['DEPOT_TOOLS_UPDATE'] = "0"
- env['GCLIENT_PY3'] = "1"
-
- subprocess.check_output(command_line.split(),
- cwd=working_dir,
- env=env,
- shell=False,
- stderr=subprocess.STDOUT)
-
- def cef_apply_patch(name, patches_path=os.path.join(d.expand("${CEF_DIR}"), 'patch', 'patches')):
- patch_file = os.path.join(patches_path, name)
- if not os.path.exists(patch_file + ".patch"):
- # Attempt to apply the patch file.
- patch_tool = os.path.join(d.expand("${CEF_DIR}"), 'tools', 'patcher.py')
- cef_run('%s %s --patch-file "%s" --patch-dir "%s"' %
- ("python3", patch_tool, patch_file, d.expand("${CHROMIUM_DIR}")),
- d.expand("${CHROMIUM_DIR}"))
-
- def cef_apply_deps_patch():
- """ Patch the Chromium DEPS file before `gclient sync` if necessary. """
- deps_path = os.path.join(d.expand("${CHROMIUM_DIR}"), 'DEPS')
- if os.path.isfile(deps_path):
- cef_apply_patch('DEPS')
- else:
- raise Exception("Path does not exist: DEPS")
-
- def cef_apply_runhooks_patch():
- """ Patch the Chromium runhooks files before `gclient runhooks` if necessary. """
- cef_apply_patch('runhooks')
-
- # CEF automation script usually applies
- # applies patches before running sync and
- # runhooks. This is taken directly from the
- # automation script
- def cef_do_sync():
- cef_apply_deps_patch()
- cef_run("gclient sync --reset --nohooks --jobs 16", d.expand("${CHROMIUM_DIR}"))
- cef_apply_runhooks_patch()
- cef_run("gclient runhooks --jobs 16", d.expand("${CHROMIUM_DIR}"))
-
- cef_do_sync()
-}
-addtask do_sync after do_gclient_config before do_configure
+GN_UNBUNDLE_LIBS = " libjpeg libpng libxslt"
# gn defaults from CEF wiki, except for use_sysroot
GN_DEFINES = "use_sysroot=false \
@@ -177,6 +119,7 @@ GN_DEFINES:append = " \
use_wayland_gbm=true \
use_gnome_keyring=false \
enable_remoting=false \
+ enable_js_type_check=false \
"
# ozone options
@@ -189,12 +132,13 @@ GN_DEFINES:append = " \
use_system_minigbm=true \
use_system_libdrm=true \
use_system_libwayland=false \
+ use_system_libffi=true \
"
GN_DEFINES:append = " \
dcheck_always_on=false \
is_debug=false \
- is_official_build=false \
+ is_official_build=true \
"
GN_DEFINES:append = " \
@@ -203,12 +147,14 @@ GN_DEFINES:append = " \
use_dri=false \
"
-# Disable PGO optimizations
-GN_DEFINES:append = " chrome_pgo_phase=0 "
-
RUNTIME = "llvm"
TOOLCHAIN = "clang"
TOOLCHAIN:class-native = "clang"
+LIBCPLUSPLUS = "-stdlib=libc++"
+
+BUILD_CPPFLAGS:append:runtime-llvm = " -isysroot=${STAGING_DIR_NATIVE} -stdlib=libc++"
+BUILD_LDFLAGS:append:runtime-llvm = " -rtlib=libgcc -unwindlib=libgcc -stdlib=libc++ -lc++abi -rpath ${STAGING_LIBDIR_NATIVE}"
+CXXFLAGS:append:runtime-llvm = " -isysroot=${STAGING_DIR_NATIVE} -stdlib=libc++"
BUILD_AR:toolchain-clang = "llvm-ar"
BUILD_CC:toolchain-clang = "clang"
@@ -223,15 +169,76 @@ COMPATIBLE_MACHINE:armv7ve = "(.*)"
COMPATIBLE_MACHINE:x86 = "(.*)"
COMPATIBLE_MACHINE:x86-64 = "(.*)"
+# ARM builds need special additional flags (see ${S}/build/config/arm.gni).
+# If we do not pass |arm_arch| and friends to GN, it will deduce a value that
+# will then conflict with TUNE_CCARGS and CC.
+# Note that as of M61 in some corner cases parts of the build system disable
+# the "compiler_arm_fpu" GN config, whereas -mfpu is always passed via ${CC}.
+# We might want to rework that if there are issues in the future.
+def get_compiler_flag(params, param_name, d):
+ """Given a sequence of compiler arguments in |params|, returns the value of
+ an option |param_name| or an empty string if the option is not present."""
+ for param in params:
+ if param.startswith(param_name):
+ return param.split('=')[1]
+ return ''
+
+ARM_FLOAT_ABI = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hard', 'softfp', d)}"
+ARM_FPU = "${@get_compiler_flag(d.getVar('TUNE_CCARGS').split(), '-mfpu', d)}"
+ARM_TUNE = "${@get_compiler_flag(d.getVar('TUNE_CCARGS').split(), '-mcpu', d)}"
+ARM_VERSION:aarch64 = "8"
+ARM_VERSION:armv7a = "7"
+ARM_VERSION:armv7ve = "7"
+ARM_VERSION:armv6 = "6"
+
+# GN computes and defaults to it automatically where needed
+# forcing it from cmdline breaks build on places where it ends up
+# overriding what GN wants
+TUNE_CCARGS:remove = "-mthumb"
+
+GN_DEFINES:append:arm = " \
+ arm_float_abi=\"${ARM_FLOAT_ABI}\" \
+ arm_fpu=\"${ARM_FPU}\" \
+ arm_tune=\"${ARM_TUNE}\" \
+ arm_version=${ARM_VERSION} \
+"
+# tcmalloc's atomicops-internals-arm-v6plus.h uses the "dmb" instruction that
+# is not available on (some?) ARMv6 models, which causes the build to fail.
+GN_DEFINES:append:armv6 = ' use_allocator="none"'
+# The WebRTC code fails to build on ARMv6 when NEON is enabled.
+# https://bugs.chromium.org/p/webrtc/issues/detail?id=6574
+
+# Disable unknown attribute warnings that are generating tons of logs
+# TODO(rzanoni): check if https://chromium-review.googlesource.com/c/chromium/src/+/4322480
+# needs to be reverted
+BUILD_CXXFLAGS:remove = '-Wunknown-attributes'
+BUILD_CXXFLAGS:append = ' -Wno-unknown-attributes'
+BUILD_CPPFLAGS:remove = '-Wunknown-attributes'
+BUILD_CPPFLAGS:append = ' -Wno-unknown-attributes'
+CXXFLAGS:remove = '-Wunknown-attributes'
+CXXFLAGS:append = ' -Wno-unknown-attributes'
+CPPFLAGS:remove = '-Wunknown-attributes'
+CPPFLAGS:append = ' -Wno-unknown-attributes'
+
GN_DEFINES:append = ' \
+ arm_use_neon=false \
use_lld=true \
use_gold=false \
+ use_custom_libcxx_for_host=false \
+ use_custom_libcxx=false \
+ chrome_pgo_phase=0 \
gold_path="" \
is_clang=true \
+ current_os="linux" \
clang_use_chrome_plugins=false \
- clang_base_path="${STAGING_BINDIR_NATIVE}" \
- host_toolchain=\"//build/toolchain/cros:host\" \
- use_custom_libcxx_for_host=false \
+ clang_base_path="${STAGING_DIR_NATIVE}/usr" \
+ clang_base_path_target="${STAGING_DIR_TARGET}/usr" \
+ clang_version="14.0.6" \
+ custom_toolchain="//build/toolchain/cros:target" \
+ host_toolchain="//build/toolchain/cros:host" \
+ v8_snapshot_toolchain="//build/toolchain/cros:v8_snapshot" \
+ target_cpu="${GN_TARGET_CPU}" \
+ use_v8_context_snapshot=false \
cros_host_ar=\"${BUILD_AR}\" \
cros_host_cc=\"${BUILD_CC}\" \
cros_host_cxx=\"${BUILD_CXX}\" \
@@ -239,9 +246,6 @@ GN_DEFINES:append = ' \
cros_host_extra_cppflags=\"${BUILD_CPPFLAGS}\" \
cros_host_extra_cxxflags=\"${BUILD_CXXFLAGS}\" \
cros_host_extra_ldflags=\"${BUILD_LDFLAGS}\" \
- custom_toolchain=\"//build/toolchain/cros:target\" \
- use_custom_libcxx=false \
- target_cpu=\"${GN_TARGET_CPU}\" \
cros_target_ar=\"${AR}\" \
cros_target_cc=\"${CC}\" \
cros_target_cxx=\"${CXX}\" \
@@ -249,14 +253,13 @@ GN_DEFINES:append = ' \
cros_target_extra_cppflags=\"${CPPFLAGS}\" \
cros_target_extra_cxxflags=\"${CXXFLAGS}\" \
cros_target_extra_ldflags=\"${LDFLAGS}\" \
- v8_snapshot_toolchain=\"//build/toolchain/cros:v8_snapshot\" \
cros_v8_snapshot_ar=\"${BUILD_AR}\" \
cros_v8_snapshot_cc=\"${BUILD_CC}\" \
cros_v8_snapshot_cxx=\"${BUILD_CXX}\" \
- cros_v8_snapshot_cppflags=\"${CPPFLAGS}\" \
- cros_v8_snapshot_cxxflags=\"${CXXFLAGS}\" \
- cros_v8_snapshot_ldflags=\"${LDFLAGS}\" \
- use_v8_context_snapshot=false \
+ cros_v8_snapshot_ld=\"${BUILD_CXX}\" \
+ cros_v8_snapshot_cppflags=\"${BUILD_CXXFLAGS}\" \
+ cros_v8_snapshot_cxxflags=\"${BUILD_CXXFLAGS}\" \
+ cros_v8_snapshot_ldflags=\"${BUILD_LDFLAGS}\" \
'
PACKAGECONFIG ??= "upower use-egl"
@@ -276,6 +279,15 @@ do_configure () {
export PATH="${DEPOT_TOOLS_DIR}:$PATH"
export GN_DEFINES="${GN_DEFINES}"
+ cd ${S}
+ python3 ./build/linux/unbundle/replace_gn_files.py --system-libraries ${GN_UNBUNDLE_LIBS}
+
+ # Download a few dependencies. Check the current chromium DEPS file when
+ # upgrading to a new milestone.
+ python3 third_party/depot_tools/download_from_google_storage.py --no_resume --extract --no_auth --bucket chromium-fonts -s third_party/test_fonts/test_fonts.tar.gz.sha1
+ python3 third_party/depot_tools/download_from_google_storage.py --no_resume --extract --no_auth --bucket chromium-nodejs/16.13.0 -s third_party/node/linux/node-linux-x64.tar.gz.sha1
+ python3 tools/rust/update_rust.py
+
cd ${S}/cef
python3 tools/gclient_hook.py --base-out-path ${B} --bypass-sysroot-check
}
diff --git a/recipes-wam/cef/files/cef/0001-Add-an-option-to-use-an-output-directory-outside-src.patch b/recipes-wam/cef/files/cef/0001-Add-an-option-to-use-an-output-directory-outside-src.patch
index 5d3cdac62..af2ea0baa 100644
--- a/recipes-wam/cef/files/cef/0001-Add-an-option-to-use-an-output-directory-outside-src.patch
+++ b/recipes-wam/cef/files/cef/0001-Add-an-option-to-use-an-output-directory-outside-src.patch
@@ -1,17 +1,17 @@
-From 7b7f5d77e87351cb98b7932eaf8959feaf280215 Mon Sep 17 00:00:00 2001
+From 97e9e8dd589d7d3467d762f6ab25ec4a4f30505f Mon Sep 17 00:00:00 2001
From: Roger Zanoni <rzanoni@igalia.com>
Date: Mon, 24 Apr 2023 10:52:57 +0200
-Subject: [PATCH 01/10] Add an option to use an output directory outside src
+Subject: [PATCH 1/9] Add an option to use an output directory outside src
---
tools/make_distrib.py | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/tools/make_distrib.py b/tools/make_distrib.py
-index 7122fae19..045430ea3 100644
+index c808ad7df..ea798b86f 100644
--- a/tools/make_distrib.py
+++ b/tools/make_distrib.py
-@@ -457,6 +457,12 @@ This utility builds the CEF Binary Distribution.
+@@ -459,6 +459,12 @@ This utility builds the CEF Binary Distribution.
"""
parser = OptionParser(description=disc)
@@ -24,7 +24,7 @@ index 7122fae19..045430ea3 100644
parser.add_option(
'--output-dir',
dest='outputdir',
-@@ -698,6 +704,8 @@ else:
+@@ -700,6 +706,8 @@ else:
# Determine the build directory paths.
out_dir = os.path.join(src_dir, 'out')
@@ -34,5 +34,5 @@ index 7122fae19..045430ea3 100644
build_dir_release = os.path.join(out_dir, 'Release' + build_dir_suffix)
--
-2.39.2
+2.42.0
diff --git a/recipes-wam/cef/files/cef/0002-Add-an-option-to-override-the-default-distrib-direct.patch b/recipes-wam/cef/files/cef/0002-Add-an-option-to-override-the-default-distrib-direct.patch
index c3df4b240..0061c4d15 100644
--- a/recipes-wam/cef/files/cef/0002-Add-an-option-to-override-the-default-distrib-direct.patch
+++ b/recipes-wam/cef/files/cef/0002-Add-an-option-to-override-the-default-distrib-direct.patch
@@ -1,7 +1,7 @@
-From 1da1ed1f7035bdb0a4528962c048b7365369f8fd Mon Sep 17 00:00:00 2001
+From d0ab00e0a22cab8f00d2b1b8c6904c68ff3fa09a Mon Sep 17 00:00:00 2001
From: Roger Zanoni <rzanoni@igalia.com>
Date: Mon, 24 Apr 2023 13:56:10 +0200
-Subject: [PATCH 02/10] Add an option to override the default distrib directory
+Subject: [PATCH 2/9] Add an option to override the default distrib directory
name
---
@@ -9,10 +9,10 @@ Subject: [PATCH 02/10] Add an option to override the default distrib directory
1 file changed, 8 insertions(+)
diff --git a/tools/make_distrib.py b/tools/make_distrib.py
-index 045430ea3..a858e8ff6 100644
+index ea798b86f..6ed748fe7 100644
--- a/tools/make_distrib.py
+++ b/tools/make_distrib.py
-@@ -463,6 +463,11 @@ parser.add_option(
+@@ -465,6 +465,11 @@ parser.add_option(
dest='baseoutpath',
default='',
help="Use an anternative base path for the generated gn outputs instead of using chromium source dir")
@@ -24,7 +24,7 @@ index 045430ea3..a858e8ff6 100644
parser.add_option(
'--output-dir',
dest='outputdir',
-@@ -675,6 +680,9 @@ else:
+@@ -677,6 +682,9 @@ else:
if options.ozone:
output_dir_name = output_dir_name + '_ozone'
@@ -35,5 +35,5 @@ index 045430ea3..a858e8ff6 100644
# create the README.TXT file
--
-2.39.2
+2.42.0
diff --git a/recipes-wam/cef/files/cef/0003-Add-an-option-to-use-an-alternative-base-output-dire.patch b/recipes-wam/cef/files/cef/0003-Add-an-option-to-use-an-alternative-base-output-dire.patch
index b8dd3bd2e..600d59dcb 100644
--- a/recipes-wam/cef/files/cef/0003-Add-an-option-to-use-an-alternative-base-output-dire.patch
+++ b/recipes-wam/cef/files/cef/0003-Add-an-option-to-use-an-alternative-base-output-dire.patch
@@ -1,15 +1,14 @@
-From 33aa8b58d5c5d189dcd51d465f1d9d39c740146e Mon Sep 17 00:00:00 2001
+From e54832c051aa34708025f350e81d08bafd3025f7 Mon Sep 17 00:00:00 2001
From: Roger Zanoni <rzanoni@igalia.com>
Date: Thu, 30 Mar 2023 15:22:32 +0200
-Subject: [PATCH 03/10] Add an option to use an alternative base output
- directory
+Subject: [PATCH 3/9] Add an option to use an alternative base output directory
---
tools/gclient_hook.py | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/tools/gclient_hook.py b/tools/gclient_hook.py
-index 290487433..4e5f9f687 100644
+index c525984e3..3d4375ec0 100644
--- a/tools/gclient_hook.py
+++ b/tools/gclient_hook.py
@@ -6,12 +6,23 @@
@@ -36,7 +35,7 @@ index 290487433..4e5f9f687 100644
# The CEF directory is the parent directory of _this_ script.
cef_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
# The src directory is the parent directory of the CEF directory.
-@@ -133,14 +144,18 @@ if platform == 'windows':
+@@ -136,14 +147,18 @@ if platform == 'windows':
configs = GetAllPlatformConfigs(gn_args)
for dir, config in configs.items():
# Create out directories and write the args.gn file.
@@ -58,5 +57,5 @@ index 290487433..4e5f9f687 100644
cmd.extend(os.environ['GN_ARGUMENTS'].split(' '))
RunAction(src_dir, cmd)
--
-2.39.2
+2.42.0
diff --git a/recipes-wam/cef/files/cef/0004-Add-an-option-to-bypass-sysroot-checking-and-force.patch b/recipes-wam/cef/files/cef/0004-Add-an-option-to-bypass-sysroot-checking-and-force.patch
index 7755da671..c57907441 100644
--- a/recipes-wam/cef/files/cef/0004-Add-an-option-to-bypass-sysroot-checking-and-force.patch
+++ b/recipes-wam/cef/files/cef/0004-Add-an-option-to-bypass-sysroot-checking-and-force.patch
@@ -1,7 +1,7 @@
-From 4b16bef4a219af372d022f0ec4f15befb1449808 Mon Sep 17 00:00:00 2001
+From 26d02223b99765f4c6d5ce5807947d4e0c925a0b Mon Sep 17 00:00:00 2001
From: Roger Zanoni <rzanoni@igalia.com>
Date: Tue, 16 May 2023 16:11:15 +0200
-Subject: [PATCH 04/10] Add an option to bypass sysroot checking and force
+Subject: [PATCH 4/9] Add an option to bypass sysroot checking and force
---
tools/gclient_hook.py | 8 +++++++-
@@ -9,7 +9,7 @@ Subject: [PATCH 04/10] Add an option to bypass sysroot checking and force
2 files changed, 21 insertions(+), 15 deletions(-)
diff --git a/tools/gclient_hook.py b/tools/gclient_hook.py
-index 4e5f9f687..6a7bc0d46 100644
+index 3d4375ec0..c971b9399 100644
--- a/tools/gclient_hook.py
+++ b/tools/gclient_hook.py
@@ -20,6 +20,12 @@ parser.add_option(
@@ -25,9 +25,9 @@ index 4e5f9f687..6a7bc0d46 100644
(options, args) = parser.parse_args()
-@@ -141,7 +147,7 @@ if platform == 'windows':
- gn_args['visual_studio_runtime_dirs'] = os.environ['VS_CRT_ROOT']
+@@ -144,7 +150,7 @@ if platform == 'windows':
gn_args['windows_sdk_path'] = os.environ['SDK_ROOT']
+ gn_args['windows_sdk_version'] = os.environ['SDK_VERSION']
-configs = GetAllPlatformConfigs(gn_args)
+configs = GetAllPlatformConfigs(gn_args, bypass_sysroot_check=options.bypasssysrootcheck)
@@ -35,10 +35,10 @@ index 4e5f9f687..6a7bc0d46 100644
# Create out directories and write the args.gn file.
base_out_dir = src_dir
diff --git a/tools/gn_args.py b/tools/gn_args.py
-index 563a6b9cc..f782bd765 100644
+index c1acac17b..80545da49 100644
--- a/tools/gn_args.py
+++ b/tools/gn_args.py
-@@ -323,7 +323,7 @@ def GetMergedArgs(build_args):
+@@ -327,7 +327,7 @@ def GetMergedArgs(build_args):
return MergeDicts(dict, required)
@@ -47,7 +47,7 @@ index 563a6b9cc..f782bd765 100644
"""
Validate GN arg combinations that we know about. Also provide suggestions
where appropriate.
-@@ -360,11 +360,11 @@ def ValidateArgs(args):
+@@ -365,11 +365,11 @@ def ValidateArgs(args):
if platform == 'linux':
if target_cpu == 'x86':
@@ -62,7 +62,7 @@ index 563a6b9cc..f782bd765 100644
# ASAN requires Release builds.
if is_asan:
-@@ -452,7 +452,7 @@ def ValidateArgs(args):
+@@ -460,7 +460,7 @@ def ValidateArgs(args):
"visual_studio_path requires INCLUDE, LIB and PATH env variables"
@@ -71,7 +71,7 @@ index 563a6b9cc..f782bd765 100644
"""
Return merged GN args for the configuration and validate.
"""
-@@ -478,11 +478,11 @@ def GetConfigArgs(args, is_debug, cpu):
+@@ -490,11 +490,11 @@ def GetConfigArgs(args, is_debug, cpu):
if key.startswith('arm_'):
del result[key]
@@ -85,7 +85,7 @@ index 563a6b9cc..f782bd765 100644
"""
Return merged GN args for the cef_sandbox configuration and validate.
"""
-@@ -548,7 +548,7 @@ def LinuxSysrootExists(cpu):
+@@ -566,7 +566,7 @@ def LinuxSysrootExists(cpu):
return os.path.isdir(os.path.join(sysroot_root, sysroot_name))
@@ -94,7 +94,7 @@ index 563a6b9cc..f782bd765 100644
"""
Return a map of directory name to GN args for the current platform.
"""
-@@ -568,10 +568,10 @@ def GetAllPlatformConfigs(build_args):
+@@ -586,10 +586,10 @@ def GetAllPlatformConfigs(build_args):
if platform == 'linux':
use_sysroot = GetArgValue(args, 'use_sysroot')
@@ -107,7 +107,7 @@ index 563a6b9cc..f782bd765 100644
supported_cpus.append(cpu)
else:
msg('Not generating %s configuration due to missing sysroot directory'
-@@ -593,17 +593,17 @@ def GetAllPlatformConfigs(build_args):
+@@ -611,17 +611,17 @@ def GetAllPlatformConfigs(build_args):
for cpu in supported_cpus:
if create_debug:
@@ -130,5 +130,5 @@ index 563a6b9cc..f782bd765 100644
return result
--
-2.39.2
+2.42.0
diff --git a/recipes-wam/cef/files/cef/0006-Add-AGL-wayland-window-related-calls.patch b/recipes-wam/cef/files/cef/0005-Add-AGL-wayland-window-related-calls.patch
index 36ae77937..d717b8174 100644
--- a/recipes-wam/cef/files/cef/0006-Add-AGL-wayland-window-related-calls.patch
+++ b/recipes-wam/cef/files/cef/0005-Add-AGL-wayland-window-related-calls.patch
@@ -1,7 +1,7 @@
-From efba58d289ad381c6ca9fae9ded040c816946894 Mon Sep 17 00:00:00 2001
+From ee2c3e430fd0d1025e46c108a79a4e0b07608dff Mon Sep 17 00:00:00 2001
From: Roger Zanoni <rzanoni@igalia.com>
Date: Thu, 18 May 2023 10:34:08 +0200
-Subject: [PATCH 06/10] Add AGL wayland window related calls
+Subject: [PATCH 5/9] Add AGL wayland window related calls
---
include/views/cef_window.h | 34 ++++++++++++++++
@@ -12,10 +12,10 @@ Subject: [PATCH 06/10] Add AGL wayland window related calls
5 files changed, 132 insertions(+)
diff --git a/include/views/cef_window.h b/include/views/cef_window.h
-index e34e446bd..dfa7821bc 100644
+index ec3843b25..22fe2e2a1 100644
--- a/include/views/cef_window.h
+++ b/include/views/cef_window.h
-@@ -348,6 +348,40 @@ class CefWindow : public CefPanel {
+@@ -366,6 +366,40 @@ class CefWindow : public CefPanel {
///
/*--cef()--*/
virtual void RemoveAllAccelerators() = 0;
@@ -57,12 +57,12 @@ index e34e446bd..dfa7821bc 100644
#endif // CEF_INCLUDE_VIEWS_CEF_WINDOW_H_
diff --git a/libcef/browser/views/view_util.h b/libcef/browser/views/view_util.h
-index 302eee464..505c66d94 100644
+index a5fb6e522..bc12a9ddc 100644
--- a/libcef/browser/views/view_util.h
+++ b/libcef/browser/views/view_util.h
-@@ -141,6 +141,16 @@ CefWindowHandle GetWindowHandle(views::Widget* widget);
- // Returns the platform window handle for |window|. May return nullptr.
- CefWindowHandle GetWindowHandle(gfx::NativeWindow window);
+@@ -165,6 +165,16 @@ views::View* GetHostView(views::Widget* widget);
+ float GetNSWindowTitleBarHeight(views::Widget* widget);
+ #endif
+// AGL-Related calls
+
@@ -78,11 +78,11 @@ index 302eee464..505c66d94 100644
#endif // CEF_LIBCEF_BROWSER_VIEWS_VIEW_UTIL_H_
diff --git a/libcef/browser/views/view_util_aura.cc b/libcef/browser/views/view_util_aura.cc
-index 8a144eb33..2ad2f3dc7 100644
+index 24be3311b..2dabf5eae 100644
--- a/libcef/browser/views/view_util_aura.cc
+++ b/libcef/browser/views/view_util_aura.cc
-@@ -39,4 +39,58 @@ CefWindowHandle GetWindowHandle(gfx::NativeWindow window) {
- return kNullWindowHandle;
+@@ -58,4 +58,58 @@ views::View* GetHostView(views::Widget* widget) {
+ return widget->GetNativeView()->GetProperty(views::kHostViewKey);
}
+// AGL-Related calls
@@ -141,13 +141,14 @@ index 8a144eb33..2ad2f3dc7 100644
+
} // namespace view_util
diff --git a/libcef/browser/views/window_impl.cc b/libcef/browser/views/window_impl.cc
-index 64e5c443e..22a4d39f6 100644
+index 3da94b08a..8b347bf4a 100644
--- a/libcef/browser/views/window_impl.cc
+++ b/libcef/browser/views/window_impl.cc
-@@ -522,6 +522,30 @@ CefWindowHandle CefWindowImpl::GetWindowHandle() {
- return view_util::GetWindowHandle(widget_);
+@@ -768,3 +768,27 @@ void CefWindowImpl::CreateWidget(gfx::AcceleratedWidget parent_widget) {
+ delegate()->OnWindowCreated(this);
+ }
}
-
++
+// AGL-Related calls
+
+void CefWindowImpl::AglActivateApp(const CefString& app) {
@@ -171,17 +172,13 @@ index 64e5c443e..22a4d39f6 100644
+}
+
+// -----------------
-+
- void CefWindowImpl::SendKeyPress(int key_code, uint32 event_flags) {
- CEF_REQUIRE_VALID_RETURN_VOID();
- InitializeUITesting();
diff --git a/libcef/browser/views/window_impl.h b/libcef/browser/views/window_impl.h
-index f9557d415..ad02904f9 100644
+index fae0ae832..20514fc32 100644
--- a/libcef/browser/views/window_impl.h
+++ b/libcef/browser/views/window_impl.h
-@@ -132,6 +132,16 @@ class CefWindowImpl
-
+@@ -134,6 +134,16 @@ class CefWindowImpl
views::Widget* widget() const { return widget_; }
+ bool initialized() const { return initialized_; }
+ // AGL-Related calls
+
@@ -197,5 +194,5 @@ index f9557d415..ad02904f9 100644
// Create a new implementation object.
// Always call Initialize() after creation.
--
-2.39.2
+2.42.0
diff --git a/recipes-wam/cef/files/cef/0005-Linux-Fix-build-without-X11-fixes-issue-3431.patch b/recipes-wam/cef/files/cef/0005-Linux-Fix-build-without-X11-fixes-issue-3431.patch
deleted file mode 100644
index 75b44e3f5..000000000
--- a/recipes-wam/cef/files/cef/0005-Linux-Fix-build-without-X11-fixes-issue-3431.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From b0bdd62be712b69db9164e80d4190d2bc72dcb3c Mon Sep 17 00:00:00 2001
-From: Enrique Turegano Pedruelo <epedruelo@netskope.com>
-Date: Tue, 10 Jan 2023 21:30:47 +0000
-Subject: [PATCH 05/10] Linux: Fix build without X11 (fixes issue #3431)
-
----
- .../browser_platform_delegate_native_linux.cc | 15 +++++++++++++--
- 1 file changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/libcef/browser/native/browser_platform_delegate_native_linux.cc b/libcef/browser/native/browser_platform_delegate_native_linux.cc
-index 5972a3134..95ca3df39 100644
---- a/libcef/browser/native/browser_platform_delegate_native_linux.cc
-+++ b/libcef/browser/native/browser_platform_delegate_native_linux.cc
-@@ -16,14 +16,14 @@
- #include "third_party/blink/public/mojom/renderer_preferences.mojom.h"
- #include "ui/events/keycodes/dom/dom_key.h"
- #include "ui/events/keycodes/dom/keycode_converter.h"
--#include "ui/events/keycodes/keyboard_code_conversion_x.h"
--#include "ui/events/keycodes/keyboard_code_conversion_xkb.h"
- #include "ui/events/keycodes/keysym_to_unicode.h"
- #include "ui/gfx/font_render_params.h"
- #include "ui/views/widget/widget.h"
-
- #if BUILDFLAG(OZONE_PLATFORM_X11)
- #include "libcef/browser/native/window_x11.h"
-+#include "ui/events/keycodes/keyboard_code_conversion_x.h"
-+#include "ui/events/keycodes/keyboard_code_conversion_xkb.h"
- #include "ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h"
- #endif
-
-@@ -240,9 +240,15 @@ ui::KeyEvent CefBrowserPlatformDelegateNativeLinux::TranslateUiKeyEvent(
- static_cast<ui::KeyboardCode>(key_event.windows_key_code);
- ui::DomCode dom_code =
- ui::KeycodeConverter::NativeKeycodeToDomCode(key_event.native_key_code);
-+
-+#if BUILDFLAG(OZONE_PLATFORM_X11)
- int keysym = ui::XKeysymForWindowsKeyCode(
- key_code, !!(key_event.modifiers & EVENTFLAG_SHIFT_DOWN));
- char16_t character = ui::GetUnicodeCharacterFromXKeySym(keysym);
-+#else
-+ char16_t character = key_event.character;
-+#endif
-+
- base::TimeTicks time_stamp = GetEventTimeStamp();
-
- if (key_event.type == KEYEVENT_CHAR) {
-@@ -262,7 +268,12 @@ ui::KeyEvent CefBrowserPlatformDelegateNativeLinux::TranslateUiKeyEvent(
- NOTREACHED();
- }
-
-+#if BUILDFLAG(OZONE_PLATFORM_X11)
- ui::DomKey dom_key = ui::XKeySymToDomKey(keysym, character);
-+#else
-+ ui::DomKey dom_key = ui::DomKey::NONE;
-+#endif
-+
- return ui::KeyEvent(type, key_code, dom_code, flags, dom_key, time_stamp);
- }
-
---
-2.39.2
-
diff --git a/recipes-wam/cef/files/cef/0007-Add-a-method-to-check-if-the-agl-window-is-configure.patch b/recipes-wam/cef/files/cef/0006-Add-a-method-to-check-if-the-agl-window-is-configure.patch
index 14897f1a7..0f5c4c5fa 100644
--- a/recipes-wam/cef/files/cef/0007-Add-a-method-to-check-if-the-agl-window-is-configure.patch
+++ b/recipes-wam/cef/files/cef/0006-Add-a-method-to-check-if-the-agl-window-is-configure.patch
@@ -1,7 +1,7 @@
-From b22b5302f20678bca5f03fe1738ce06fc799263b Mon Sep 17 00:00:00 2001
+From 7eefab1c1a8938145f9fb3a5d7a8fa58ca7ad695 Mon Sep 17 00:00:00 2001
From: Roger Zanoni <rzanoni@igalia.com>
Date: Fri, 30 Jun 2023 10:27:03 +0200
-Subject: [PATCH 07/10] Add a method to check if the agl window is configured
+Subject: [PATCH 6/9] Add a method to check if the agl window is configured
---
include/views/cef_window.h | 6 ++++++
@@ -12,10 +12,10 @@ Subject: [PATCH 07/10] Add a method to check if the agl window is configured
5 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/include/views/cef_window.h b/include/views/cef_window.h
-index dfa7821bc..063529964 100644
+index 22fe2e2a1..c34963302 100644
--- a/include/views/cef_window.h
+++ b/include/views/cef_window.h
-@@ -381,6 +381,12 @@ class CefWindow : public CefPanel {
+@@ -399,6 +399,12 @@ class CefWindow : public CefPanel {
/*--cef()--*/
virtual void AglSetPanelApp(uint32_t edge) = 0;
@@ -29,10 +29,10 @@ index dfa7821bc..063529964 100644
};
diff --git a/libcef/browser/views/view_util.h b/libcef/browser/views/view_util.h
-index 505c66d94..20b97038b 100644
+index bc12a9ddc..bf657fd39 100644
--- a/libcef/browser/views/view_util.h
+++ b/libcef/browser/views/view_util.h
-@@ -148,6 +148,7 @@ void AglSetAppId(views::Widget* widget, const std::string& app_id);
+@@ -172,6 +172,7 @@ void AglSetAppId(views::Widget* widget, const std::string& app_id);
void AglSetAppReady(views::Widget* widget);
void AglSetBackGroundApp(views::Widget* widget);
void AglSetPanelApp(views::Widget* widget, uint32_t edge);
@@ -41,10 +41,10 @@ index 505c66d94..20b97038b 100644
// -----------------
diff --git a/libcef/browser/views/view_util_aura.cc b/libcef/browser/views/view_util_aura.cc
-index 2ad2f3dc7..b5b4f414b 100644
+index 2dabf5eae..2946a2d81 100644
--- a/libcef/browser/views/view_util_aura.cc
+++ b/libcef/browser/views/view_util_aura.cc
-@@ -47,7 +47,7 @@ void AglActivateApp(views::Widget* widget, const std::string& app) {
+@@ -66,7 +66,7 @@ void AglActivateApp(views::Widget* widget, const std::string& app) {
}
aura::Window* window = widget->GetNativeWindow();
if (window && window->GetRootWindow()) {
@@ -53,7 +53,7 @@ index 2ad2f3dc7..b5b4f414b 100644
}
}
-@@ -57,7 +57,7 @@ void AglSetAppId(views::Widget* widget, const std::string& app_id) {
+@@ -76,7 +76,7 @@ void AglSetAppId(views::Widget* widget, const std::string& app_id) {
}
aura::Window* window = widget->GetNativeWindow();
if (window && window->GetRootWindow()) {
@@ -62,7 +62,7 @@ index 2ad2f3dc7..b5b4f414b 100644
}
}
-@@ -67,7 +67,7 @@ void AglSetAppReady(views::Widget* widget) {
+@@ -86,7 +86,7 @@ void AglSetAppReady(views::Widget* widget) {
}
aura::Window* window = widget->GetNativeWindow();
if (window && window->GetRootWindow()) {
@@ -71,7 +71,7 @@ index 2ad2f3dc7..b5b4f414b 100644
}
}
-@@ -77,7 +77,7 @@ void AglSetBackGroundApp(views::Widget* widget) {
+@@ -96,7 +96,7 @@ void AglSetBackGroundApp(views::Widget* widget) {
}
aura::Window* window = widget->GetNativeWindow();
if (window && window->GetRootWindow()) {
@@ -80,7 +80,7 @@ index 2ad2f3dc7..b5b4f414b 100644
}
}
-@@ -87,7 +87,17 @@ void AglSetPanelApp(views::Widget* widget, uint32_t edge) {
+@@ -106,7 +106,17 @@ void AglSetPanelApp(views::Widget* widget, uint32_t edge) {
}
aura::Window* window = widget->GetNativeWindow();
if (window && window->GetRootWindow()) {
@@ -100,10 +100,10 @@ index 2ad2f3dc7..b5b4f414b 100644
}
diff --git a/libcef/browser/views/window_impl.cc b/libcef/browser/views/window_impl.cc
-index 22a4d39f6..1b5d196ab 100644
+index 8b347bf4a..8edac98b5 100644
--- a/libcef/browser/views/window_impl.cc
+++ b/libcef/browser/views/window_impl.cc
-@@ -544,6 +544,10 @@ void CefWindowImpl::AglSetPanelApp(uint32_t edge) {
+@@ -791,4 +791,8 @@ void CefWindowImpl::AglSetPanelApp(uint32_t edge) {
view_util::AglSetPanelApp(widget_, edge);
}
@@ -112,13 +112,11 @@ index 22a4d39f6..1b5d196ab 100644
+}
+
// -----------------
-
- void CefWindowImpl::SendKeyPress(int key_code, uint32 event_flags) {
diff --git a/libcef/browser/views/window_impl.h b/libcef/browser/views/window_impl.h
-index ad02904f9..4ab77dbe6 100644
+index 20514fc32..7f7b47e1a 100644
--- a/libcef/browser/views/window_impl.h
+++ b/libcef/browser/views/window_impl.h
-@@ -139,6 +139,7 @@ class CefWindowImpl
+@@ -141,6 +141,7 @@ class CefWindowImpl
void AglSetAppReady() override;
void AglSetBackGroundApp() override;
void AglSetPanelApp(uint32_t edge) override;
@@ -127,5 +125,5 @@ index ad02904f9..4ab77dbe6 100644
// -----------------
--
-2.39.2
+2.42.0
diff --git a/recipes-wam/cef/files/cef/0008-Add-the-SetActivateRegion-method.patch b/recipes-wam/cef/files/cef/0007-Add-the-SetActivateRegion-method.patch
index ecc806a2b..e2d87065c 100644
--- a/recipes-wam/cef/files/cef/0008-Add-the-SetActivateRegion-method.patch
+++ b/recipes-wam/cef/files/cef/0007-Add-the-SetActivateRegion-method.patch
@@ -1,7 +1,7 @@
-From fcbb9bc7c390f2b9ab54c9f8996140ff83b46538 Mon Sep 17 00:00:00 2001
+From 6515114202a98f81950687b6656151fa7cfd5ab6 Mon Sep 17 00:00:00 2001
From: Roger Zanoni <rzanoni@igalia.com>
Date: Sun, 2 Jul 2023 12:08:59 +0200
-Subject: [PATCH 08/10] Add the SetActivateRegion method
+Subject: [PATCH 7/9] Add the SetActivateRegion method
---
include/views/cef_window.h | 6 ++++++
@@ -12,10 +12,10 @@ Subject: [PATCH 08/10] Add the SetActivateRegion method
5 files changed, 32 insertions(+)
diff --git a/include/views/cef_window.h b/include/views/cef_window.h
-index 063529964..52ccb7dc5 100644
+index c34963302..9f196a1e7 100644
--- a/include/views/cef_window.h
+++ b/include/views/cef_window.h
-@@ -387,6 +387,12 @@ class CefWindow : public CefPanel {
+@@ -405,6 +405,12 @@ class CefWindow : public CefPanel {
/*--cef()--*/
virtual bool IsSurfaceConfigured() = 0;
@@ -29,10 +29,10 @@ index 063529964..52ccb7dc5 100644
};
diff --git a/libcef/browser/views/view_util.h b/libcef/browser/views/view_util.h
-index 20b97038b..76c023254 100644
+index bf657fd39..50037a198 100644
--- a/libcef/browser/views/view_util.h
+++ b/libcef/browser/views/view_util.h
-@@ -149,6 +149,7 @@ void AglSetAppReady(views::Widget* widget);
+@@ -173,6 +173,7 @@ void AglSetAppReady(views::Widget* widget);
void AglSetBackGroundApp(views::Widget* widget);
void AglSetPanelApp(views::Widget* widget, uint32_t edge);
bool IsSurfaceConfigured(views::Widget* widget);
@@ -41,10 +41,10 @@ index 20b97038b..76c023254 100644
// -----------------
diff --git a/libcef/browser/views/view_util_aura.cc b/libcef/browser/views/view_util_aura.cc
-index b5b4f414b..96e44dbb6 100644
+index 2946a2d81..bf435078d 100644
--- a/libcef/browser/views/view_util_aura.cc
+++ b/libcef/browser/views/view_util_aura.cc
-@@ -101,6 +101,23 @@ bool IsSurfaceConfigured(views::Widget* widget) {
+@@ -120,6 +120,23 @@ bool IsSurfaceConfigured(views::Widget* widget) {
}
}
@@ -69,10 +69,10 @@ index b5b4f414b..96e44dbb6 100644
} // namespace view_util
diff --git a/libcef/browser/views/window_impl.cc b/libcef/browser/views/window_impl.cc
-index 1b5d196ab..485943ec6 100644
+index 8edac98b5..12858364e 100644
--- a/libcef/browser/views/window_impl.cc
+++ b/libcef/browser/views/window_impl.cc
-@@ -548,6 +548,13 @@ bool CefWindowImpl::IsSurfaceConfigured() {
+@@ -795,4 +795,11 @@ bool CefWindowImpl::IsSurfaceConfigured() {
return view_util::IsSurfaceConfigured(widget_);
}
@@ -84,13 +84,11 @@ index 1b5d196ab..485943ec6 100644
+}
+
// -----------------
-
- void CefWindowImpl::SendKeyPress(int key_code, uint32 event_flags) {
diff --git a/libcef/browser/views/window_impl.h b/libcef/browser/views/window_impl.h
-index 4ab77dbe6..89c136873 100644
+index 7f7b47e1a..aaca3c281 100644
--- a/libcef/browser/views/window_impl.h
+++ b/libcef/browser/views/window_impl.h
-@@ -140,6 +140,7 @@ class CefWindowImpl
+@@ -142,6 +142,7 @@ class CefWindowImpl
void AglSetBackGroundApp() override;
void AglSetPanelApp(uint32_t edge) override;
bool IsSurfaceConfigured() override;
@@ -99,5 +97,5 @@ index 4ab77dbe6..89c136873 100644
// -----------------
--
-2.39.2
+2.42.0
diff --git a/recipes-wam/cef/files/cef/0009-Allow-passing-the-app_id-on-widget-creation.patch b/recipes-wam/cef/files/cef/0008-Allow-passing-the-app_id-on-widget-creation.patch
index 006664d30..e0a79b6c2 100644
--- a/recipes-wam/cef/files/cef/0009-Allow-passing-the-app_id-on-widget-creation.patch
+++ b/recipes-wam/cef/files/cef/0008-Allow-passing-the-app_id-on-widget-creation.patch
@@ -1,7 +1,7 @@
-From 6bd43a70c23d407ca6c4d4a68f0e95eb3301290a Mon Sep 17 00:00:00 2001
+From 5a8d9996ee7b3ce77f7b3fd3c7839806a034ea16 Mon Sep 17 00:00:00 2001
From: Roger Zanoni <rzanoni@igalia.com>
Date: Tue, 4 Jul 2023 12:10:41 +0200
-Subject: [PATCH 09/10] Allow passing the app_id on widget creation
+Subject: [PATCH 08/10] Allow passing the app_id on widget creation
---
include/views/cef_window.h | 6 ++++++
@@ -12,10 +12,10 @@ Subject: [PATCH 09/10] Allow passing the app_id on widget creation
5 files changed, 22 insertions(+), 8 deletions(-)
diff --git a/include/views/cef_window.h b/include/views/cef_window.h
-index 52ccb7dc5..fd3e1c1b5 100644
+index 9f196a1e7..16c854b09 100644
--- a/include/views/cef_window.h
+++ b/include/views/cef_window.h
-@@ -63,6 +63,12 @@ class CefWindow : public CefPanel {
+@@ -65,6 +65,12 @@ class CefWindow : public CefPanel {
CefRefPtr<CefWindowDelegate> delegate);
///
@@ -29,10 +29,10 @@ index 52ccb7dc5..fd3e1c1b5 100644
///
/*--cef()--*/
diff --git a/libcef/browser/views/window_impl.cc b/libcef/browser/views/window_impl.cc
-index 485943ec6..35df22c51 100644
+index 12858364e..f0fe9dfb2 100644
--- a/libcef/browser/views/window_impl.cc
+++ b/libcef/browser/views/window_impl.cc
-@@ -115,14 +115,19 @@ CefRefPtr<CefWindow> CefWindow::CreateTopLevelWindow(
+@@ -110,14 +110,19 @@ CefRefPtr<CefWindow> CefWindow::CreateTopLevelWindow(
return CefWindowImpl::Create(delegate, gfx::kNullAcceleratedWidget);
}
@@ -51,10 +51,10 @@ index 485943ec6..35df22c51 100644
window->Initialize();
- window->CreateWidget(parent_widget);
+ window->CreateWidget(parent_widget, app_id);
- if (delegate)
- delegate->OnWindowCreated(window.get());
return window;
-@@ -678,10 +683,10 @@ void CefWindowImpl::InitializeRootView() {
+ }
+
+@@ -745,10 +750,10 @@ void CefWindowImpl::InitializeRootView() {
static_cast<CefWindowView*>(root_view())->Initialize();
}
@@ -68,7 +68,7 @@ index 485943ec6..35df22c51 100644
DCHECK(widget_);
diff --git a/libcef/browser/views/window_impl.h b/libcef/browser/views/window_impl.h
-index 89c136873..d3330dfd8 100644
+index aaca3c281..1c5be736f 100644
--- a/libcef/browser/views/window_impl.h
+++ b/libcef/browser/views/window_impl.h
@@ -36,7 +36,8 @@ class CefWindowImpl
@@ -81,7 +81,7 @@ index 89c136873..d3330dfd8 100644
// CefWindow methods:
void Show() override;
-@@ -155,7 +156,8 @@ class CefWindowImpl
+@@ -157,7 +158,8 @@ class CefWindowImpl
void InitializeRootView() override;
// Initialize the Widget.
@@ -89,13 +89,13 @@ index 89c136873..d3330dfd8 100644
+ void CreateWidget(gfx::AcceleratedWidget parent_widget,
+ const CefString& app_id = "");
- views::Widget* widget_;
+ views::Widget* widget_ = nullptr;
diff --git a/libcef/browser/views/window_view.cc b/libcef/browser/views/window_view.cc
-index 1e8d58a32..f4bf79ce3 100644
+index 2331caaea..5e4cb6b53 100644
--- a/libcef/browser/views/window_view.cc
+++ b/libcef/browser/views/window_view.cc
-@@ -255,7 +255,7 @@ CefWindowView::CefWindowView(CefWindowDelegate* cef_delegate,
+@@ -371,7 +371,7 @@ CefWindowView::CefWindowView(CefWindowDelegate* cef_delegate,
DCHECK(window_delegate_);
}
@@ -104,19 +104,19 @@ index 1e8d58a32..f4bf79ce3 100644
DCHECK(!GetWidget());
// |widget| is owned by the NativeWidget and will be destroyed in response to
-@@ -265,6 +265,7 @@ void CefWindowView::CreateWidget(gfx::AcceleratedWidget parent_widget) {
+@@ -381,6 +381,7 @@ void CefWindowView::CreateWidget(gfx::AcceleratedWidget parent_widget) {
views::Widget::InitParams params;
params.delegate = this;
+ params.wayland_app_id = app_id;
- bool can_activate = true;
- bool can_resize = true;
+ views::Widget* host_widget = nullptr;
+
diff --git a/libcef/browser/views/window_view.h b/libcef/browser/views/window_view.h
-index 6789636b8..ca593c60a 100644
+index b065f3700..c15e75d65 100644
--- a/libcef/browser/views/window_view.h
+++ b/libcef/browser/views/window_view.h
-@@ -51,7 +51,7 @@ class CefWindowView
+@@ -52,7 +52,7 @@ class CefWindowView
CefWindowView& operator=(const CefWindowView&) = delete;
// Create the Widget.
@@ -126,5 +126,5 @@ index 6789636b8..ca593c60a 100644
// Returns the CefWindow associated with this view. See comments on
// CefViewView::GetCefView.
--
-2.39.2
+2.42.1
diff --git a/recipes-wam/cef/files/cef/0009-Update-generated-api.patch b/recipes-wam/cef/files/cef/0009-Update-generated-api.patch
new file mode 100644
index 000000000..aaf8dd143
--- /dev/null
+++ b/recipes-wam/cef/files/cef/0009-Update-generated-api.patch
@@ -0,0 +1,753 @@
+From c10306e9da62f9c36513b98affc4589ea5016677 Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Mon, 6 Nov 2023 16:00:35 -0300
+Subject: [PATCH 09/10] Update generated api
+
+Command used:
+
+./translator.sh --classes CefWindow CefWindowDelegate CefView CefViewDeleate --root-dir
+---
+ include/capi/cef_cookie_capi.h | 6 +-
+ include/capi/cef_media_router_capi.h | 6 +-
+ include/capi/cef_scheme_capi.h | 10 +-
+ include/capi/views/cef_window_capi.h | 52 +++++++-
+ include/cef_api_hash.h | 8 +-
+ libcef_dll/cpptoc/views/window_cpptoc.cc | 153 ++++++++++++++++++++++-
+ libcef_dll/ctocpp/views/window_ctocpp.cc | 148 +++++++++++++++++++++-
+ libcef_dll/ctocpp/views/window_ctocpp.h | 12 +-
+ libcef_dll/wrapper/libcef_dll_dylib.cc | 72 +++++++----
+ 9 files changed, 422 insertions(+), 45 deletions(-)
+
+diff --git a/include/capi/cef_cookie_capi.h b/include/capi/cef_cookie_capi.h
+index 1be978bfd..f6f19ede2 100644
+--- a/include/capi/cef_cookie_capi.h
++++ b/include/capi/cef_cookie_capi.h
+@@ -33,7 +33,7 @@
+ // by hand. See the translator.README.txt file in the tools directory for
+ // more information.
+ //
+-// $hash=598c6f530b2e2553197d8c6a72ad9e2bf72b5443$
++// $hash=8093e45bcbd09f41f21c0cb7c8719166cc481529$
+ //
+
+ #ifndef CEF_INCLUDE_CAPI_CEF_COOKIE_CAPI_H_
+@@ -126,8 +126,8 @@ typedef struct _cef_cookie_manager_t {
+ /// cef_settings_t.cache_path if specified or in memory otherwise. If |callback|
+ /// is non-NULL it will be executed asnychronously on the UI thread after the
+ /// manager's storage has been initialized. Using this function is equivalent to
+-/// calling cef_request_context_t::cef_request_context_get_global_context()->Get
+-/// DefaultCookieManager().
++/// calling cef_request_context_t::cef_request_context_get_global_context()-
++/// >GetDefaultCookieManager().
+ ///
+ CEF_EXPORT cef_cookie_manager_t* cef_cookie_manager_get_global_manager(
+ struct _cef_completion_callback_t* callback);
+diff --git a/include/capi/cef_media_router_capi.h b/include/capi/cef_media_router_capi.h
+index 27f9d0e15..9df759013 100644
+--- a/include/capi/cef_media_router_capi.h
++++ b/include/capi/cef_media_router_capi.h
+@@ -33,7 +33,7 @@
+ // by hand. See the translator.README.txt file in the tools directory for
+ // more information.
+ //
+-// $hash=de4a9b856c6951231f446991a9b1efb89096ad3b$
++// $hash=d3f29de333c90768caac6aee2b7eb2db5f593515$
+ //
+
+ #ifndef CEF_INCLUDE_CAPI_CEF_MEDIA_ROUTER_CAPI_H_
+@@ -114,8 +114,8 @@ typedef struct _cef_media_router_t {
+ /// Returns the MediaRouter object associated with the global request context.
+ /// If |callback| is non-NULL it will be executed asnychronously on the UI
+ /// thread after the manager's storage has been initialized. Equivalent to
+-/// calling cef_request_context_t::cef_request_context_get_global_context()->get
+-/// _media_router().
++/// calling cef_request_context_t::cef_request_context_get_global_context()-
++/// >get_media_router().
+ ///
+ CEF_EXPORT cef_media_router_t* cef_media_router_get_global(
+ struct _cef_completion_callback_t* callback);
+diff --git a/include/capi/cef_scheme_capi.h b/include/capi/cef_scheme_capi.h
+index 5f8796287..bdcd6cc3b 100644
+--- a/include/capi/cef_scheme_capi.h
++++ b/include/capi/cef_scheme_capi.h
+@@ -33,7 +33,7 @@
+ // by hand. See the translator.README.txt file in the tools directory for
+ // more information.
+ //
+-// $hash=6b6a7f754abc9ee5d6f775ba9eee802d3244faf5$
++// $hash=794d4c01f06c656c425779b0189a3b52820498ed$
+ //
+
+ #ifndef CEF_INCLUDE_CAPI_CEF_SCHEME_CAPI_H_
+@@ -116,8 +116,8 @@ typedef struct _cef_scheme_handler_factory_t {
+ /// matches the specified |scheme_name| and optional |domain_name|. Returns
+ /// false (0) if an error occurs. This function may be called on any thread in
+ /// the browser process. Using this function is equivalent to calling cef_reques
+-/// t_context_t::cef_request_context_get_global_context()->register_scheme_handl
+-/// er_factory().
++/// t_context_t::cef_request_context_get_global_context()-
++/// >register_scheme_handler_factory().
+ ///
+ CEF_EXPORT int cef_register_scheme_handler_factory(
+ const cef_string_t* scheme_name,
+@@ -128,8 +128,8 @@ CEF_EXPORT int cef_register_scheme_handler_factory(
+ /// Clear all scheme handler factories registered with the global request
+ /// context. Returns false (0) on error. This function may be called on any
+ /// thread in the browser process. Using this function is equivalent to calling
+-/// cef_request_context_t::cef_request_context_get_global_context()->clear_schem
+-/// e_handler_factories().
++/// cef_request_context_t::cef_request_context_get_global_context()-
++/// >clear_scheme_handler_factories().
+ ///
+ CEF_EXPORT int cef_clear_scheme_handler_factories(void);
+
+diff --git a/include/capi/views/cef_window_capi.h b/include/capi/views/cef_window_capi.h
+index e5e04e83e..b0be32ad2 100644
+--- a/include/capi/views/cef_window_capi.h
++++ b/include/capi/views/cef_window_capi.h
+@@ -33,7 +33,7 @@
+ // by hand. See the translator.README.txt file in the tools directory for
+ // more information.
+ //
+-// $hash=4b43fe0b493d860e8b28d7a6d892db49d1135b34$
++// $hash=53e1bba9189f03819c0646670cab8f9caabc74d6$
+ //
+
+ #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_WINDOW_CAPI_H_
+@@ -353,6 +353,49 @@ typedef struct _cef_window_t {
+ /// Remove all keyboard accelerators.
+ ///
+ void(CEF_CALLBACK* remove_all_accelerators)(struct _cef_window_t* self);
++
++ ///
++ /// Tells the agl compositor to activate the app
++ ///
++ void(CEF_CALLBACK* agl_activate_app)(struct _cef_window_t* self,
++ const cef_string_t* app);
++
++ ///
++ /// Tells the agl compositor the application id
++ ///
++ void(CEF_CALLBACK* agl_set_app_id)(struct _cef_window_t* self,
++ const cef_string_t* app_id);
++
++ ///
++ /// Tells the agl compositor that everything is set-up and good to go
++ ///
++ void(CEF_CALLBACK* agl_set_app_ready)(struct _cef_window_t* self);
++
++ ///
++ /// Tells the agl compositor that the app is the background application
++ ///
++ void(CEF_CALLBACK* agl_set_back_ground_app)(struct _cef_window_t* self);
++
++ ///
++ /// Tells the agl compositor that the app is a panel
++ ///
++ void(CEF_CALLBACK* agl_set_panel_app)(struct _cef_window_t* self,
++ uint32_t edge);
++
++ ///
++ /// Tells if the window wayland surface is configured
++ ///
++ int(CEF_CALLBACK* is_surface_configured)(struct _cef_window_t* self);
++
++ ///
++ /// A hint for the compositor to use a custom area, rather than inferring the
++ /// activation area.
++ ///
++ void(CEF_CALLBACK* setup_activation_area)(struct _cef_window_t* self,
++ uint32_t x,
++ uint32_t y,
++ uint32_t width,
++ uint32_t height);
+ } cef_window_t;
+
+ ///
+@@ -361,6 +404,13 @@ typedef struct _cef_window_t {
+ CEF_EXPORT cef_window_t* cef_window_create_top_level(
+ struct _cef_window_delegate_t* delegate);
+
++///
++/// Create a new Window with the provided ID
++///
++CEF_EXPORT cef_window_t* cef_window_create_top_level_with_id(
++ struct _cef_window_delegate_t* delegate,
++ const cef_string_t* app_id);
++
+ #ifdef __cplusplus
+ }
+ #endif
+diff --git a/include/cef_api_hash.h b/include/cef_api_hash.h
+index 90142ccb0..6af07332a 100644
+--- a/include/cef_api_hash.h
++++ b/include/cef_api_hash.h
+@@ -42,13 +42,13 @@
+ // way that may cause binary incompatibility with other builds. The universal
+ // hash value will change if any platform is affected whereas the platform hash
+ // values will change only if that particular platform is affected.
+-#define CEF_API_HASH_UNIVERSAL "4acea2e5c7a3e281d9652802ae1d24b25eef299b"
++#define CEF_API_HASH_UNIVERSAL "7d1351328f7aeb7db3ae74b6d687b115ceec7695"
+ #if defined(OS_WIN)
+-#define CEF_API_HASH_PLATFORM "3a181fdfaa42d2214c77cd83f76886b0657b0b53"
++#define CEF_API_HASH_PLATFORM "70c2a3fee7a3f4a4f6d44d4a3b3699ad23cf6f67"
+ #elif defined(OS_MAC)
+-#define CEF_API_HASH_PLATFORM "06bfe874ee215bde0a415bac7ac37ecf4969d4ca"
++#define CEF_API_HASH_PLATFORM "9d9d39318398a7efaf43406ae25967a33c9d9787"
+ #elif defined(OS_LINUX)
+-#define CEF_API_HASH_PLATFORM "1615f7e7079d89e2e81f683d4a8480455b5f2a60"
++#define CEF_API_HASH_PLATFORM "f828859cd19052fd3dab4b9f50f530d7011642b6"
+ #endif
+
+ #ifdef __cplusplus
+diff --git a/libcef_dll/cpptoc/views/window_cpptoc.cc b/libcef_dll/cpptoc/views/window_cpptoc.cc
+index 93ee5341f..cbb4bb1a4 100644
+--- a/libcef_dll/cpptoc/views/window_cpptoc.cc
++++ b/libcef_dll/cpptoc/views/window_cpptoc.cc
+@@ -9,7 +9,7 @@
+ // implementations. See the translator.README.txt file in the tools directory
+ // for more information.
+ //
+-// $hash=23777aea864e9abf38c2e2c5d79a40d6bd22876d$
++// $hash=53b37fbf82615184d8b259a2e476431a3e699eea$
+ //
+
+ #include "libcef_dll/cpptoc/views/window_cpptoc.h"
+@@ -48,6 +48,32 @@ CEF_EXPORT cef_window_t* cef_window_create_top_level(
+ return CefWindowCppToC::Wrap(_retval);
+ }
+
++CEF_EXPORT cef_window_t* cef_window_create_top_level_with_id(
++ struct _cef_window_delegate_t* delegate,
++ const cef_string_t* app_id) {
++ shutdown_checker::AssertNotShutdown();
++
++ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
++
++ // Verify param: delegate; type: refptr_diff
++ DCHECK(delegate);
++ if (!delegate) {
++ return NULL;
++ }
++ // Verify param: app_id; type: string_byref_const
++ DCHECK(app_id);
++ if (!app_id) {
++ return NULL;
++ }
++
++ // Execute
++ CefRefPtr<CefWindow> _retval = CefWindow::CreateTopLevelWindowWithId(
++ CefWindowDelegateCToCpp::Wrap(delegate), CefString(app_id));
++
++ // Return type: refptr_same
++ return CefWindowCppToC::Wrap(_retval);
++}
++
+ namespace {
+
+ // MEMBER FUNCTIONS - Body may be edited by hand.
+@@ -717,6 +743,124 @@ void CEF_CALLBACK window_remove_all_accelerators(struct _cef_window_t* self) {
+ CefWindowCppToC::Get(self)->RemoveAllAccelerators();
+ }
+
++void CEF_CALLBACK window_agl_activate_app(struct _cef_window_t* self,
++ const cef_string_t* app) {
++ shutdown_checker::AssertNotShutdown();
++
++ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
++
++ DCHECK(self);
++ if (!self) {
++ return;
++ }
++ // Verify param: app; type: string_byref_const
++ DCHECK(app);
++ if (!app) {
++ return;
++ }
++
++ // Execute
++ CefWindowCppToC::Get(self)->AglActivateApp(CefString(app));
++}
++
++void CEF_CALLBACK window_agl_set_app_id(struct _cef_window_t* self,
++ const cef_string_t* app_id) {
++ shutdown_checker::AssertNotShutdown();
++
++ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
++
++ DCHECK(self);
++ if (!self) {
++ return;
++ }
++ // Verify param: app_id; type: string_byref_const
++ DCHECK(app_id);
++ if (!app_id) {
++ return;
++ }
++
++ // Execute
++ CefWindowCppToC::Get(self)->AglSetAppId(CefString(app_id));
++}
++
++void CEF_CALLBACK window_agl_set_app_ready(struct _cef_window_t* self) {
++ shutdown_checker::AssertNotShutdown();
++
++ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
++
++ DCHECK(self);
++ if (!self) {
++ return;
++ }
++
++ // Execute
++ CefWindowCppToC::Get(self)->AglSetAppReady();
++}
++
++void CEF_CALLBACK window_agl_set_back_ground_app(struct _cef_window_t* self) {
++ shutdown_checker::AssertNotShutdown();
++
++ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
++
++ DCHECK(self);
++ if (!self) {
++ return;
++ }
++
++ // Execute
++ CefWindowCppToC::Get(self)->AglSetBackGroundApp();
++}
++
++void CEF_CALLBACK window_agl_set_panel_app(struct _cef_window_t* self,
++ uint32_t edge) {
++ shutdown_checker::AssertNotShutdown();
++
++ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
++
++ DCHECK(self);
++ if (!self) {
++ return;
++ }
++
++ // Execute
++ CefWindowCppToC::Get(self)->AglSetPanelApp(edge);
++}
++
++int CEF_CALLBACK window_is_surface_configured(struct _cef_window_t* self) {
++ shutdown_checker::AssertNotShutdown();
++
++ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
++
++ DCHECK(self);
++ if (!self) {
++ return 0;
++ }
++
++ // Execute
++ bool _retval = CefWindowCppToC::Get(self)->IsSurfaceConfigured();
++
++ // Return type: bool
++ return _retval;
++}
++
++void CEF_CALLBACK window_setup_activation_area(struct _cef_window_t* self,
++ uint32_t x,
++ uint32_t y,
++ uint32_t width,
++ uint32_t height) {
++ shutdown_checker::AssertNotShutdown();
++
++ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
++
++ DCHECK(self);
++ if (!self) {
++ return;
++ }
++
++ // Execute
++ CefWindowCppToC::Get(self)->SetupActivationArea(x, y, width, height);
++}
++
+ struct _cef_window_t* CEF_CALLBACK window_as_window(struct _cef_panel_t* self) {
+ shutdown_checker::AssertNotShutdown();
+
+@@ -2031,6 +2175,13 @@ CefWindowCppToC::CefWindowCppToC() {
+ GetStruct()->set_accelerator = window_set_accelerator;
+ GetStruct()->remove_accelerator = window_remove_accelerator;
+ GetStruct()->remove_all_accelerators = window_remove_all_accelerators;
++ GetStruct()->agl_activate_app = window_agl_activate_app;
++ GetStruct()->agl_set_app_id = window_agl_set_app_id;
++ GetStruct()->agl_set_app_ready = window_agl_set_app_ready;
++ GetStruct()->agl_set_back_ground_app = window_agl_set_back_ground_app;
++ GetStruct()->agl_set_panel_app = window_agl_set_panel_app;
++ GetStruct()->is_surface_configured = window_is_surface_configured;
++ GetStruct()->setup_activation_area = window_setup_activation_area;
+ GetStruct()->base.as_window = window_as_window;
+ GetStruct()->base.set_to_fill_layout = window_set_to_fill_layout;
+ GetStruct()->base.set_to_box_layout = window_set_to_box_layout;
+diff --git a/libcef_dll/ctocpp/views/window_ctocpp.cc b/libcef_dll/ctocpp/views/window_ctocpp.cc
+index 3a0423d28..aee3d62f1 100644
+--- a/libcef_dll/ctocpp/views/window_ctocpp.cc
++++ b/libcef_dll/ctocpp/views/window_ctocpp.cc
+@@ -9,7 +9,7 @@
+ // implementations. See the translator.README.txt file in the tools directory
+ // for more information.
+ //
+-// $hash=b6b0a2a563b475163aa71b20af6ec2ac8c1f0cae$
++// $hash=61eb77c4622382d6dda0136187c6acbd093f2e83$
+ //
+
+ #include "libcef_dll/ctocpp/views/window_ctocpp.h"
+@@ -49,6 +49,33 @@ CefRefPtr<CefWindow> CefWindow::CreateTopLevelWindow(
+ return CefWindowCToCpp::Wrap(_retval);
+ }
+
++NO_SANITIZE("cfi-icall")
++CefRefPtr<CefWindow> CefWindow::CreateTopLevelWindowWithId(
++ CefRefPtr<CefWindowDelegate> delegate,
++ const CefString& app_id) {
++ shutdown_checker::AssertNotShutdown();
++
++ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
++
++ // Verify param: delegate; type: refptr_diff
++ DCHECK(delegate.get());
++ if (!delegate.get()) {
++ return nullptr;
++ }
++ // Verify param: app_id; type: string_byref_const
++ DCHECK(!app_id.empty());
++ if (app_id.empty()) {
++ return nullptr;
++ }
++
++ // Execute
++ cef_window_t* _retval = cef_window_create_top_level_with_id(
++ CefWindowDelegateCppToC::Wrap(delegate), app_id.GetStruct());
++
++ // Return type: refptr_same
++ return CefWindowCToCpp::Wrap(_retval);
++}
++
+ // VIRTUAL METHODS - Body may be edited by hand.
+
+ NO_SANITIZE("cfi-icall") void CefWindowCToCpp::Show() {
+@@ -707,6 +734,125 @@ NO_SANITIZE("cfi-icall") void CefWindowCToCpp::RemoveAllAccelerators() {
+ _struct->remove_all_accelerators(_struct);
+ }
+
++NO_SANITIZE("cfi-icall")
++void CefWindowCToCpp::AglActivateApp(const CefString& app) {
++ shutdown_checker::AssertNotShutdown();
++
++ cef_window_t* _struct = GetStruct();
++ if (CEF_MEMBER_MISSING(_struct, agl_activate_app)) {
++ return;
++ }
++
++ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
++
++ // Verify param: app; type: string_byref_const
++ DCHECK(!app.empty());
++ if (app.empty()) {
++ return;
++ }
++
++ // Execute
++ _struct->agl_activate_app(_struct, app.GetStruct());
++}
++
++NO_SANITIZE("cfi-icall")
++void CefWindowCToCpp::AglSetAppId(const CefString& app_id) {
++ shutdown_checker::AssertNotShutdown();
++
++ cef_window_t* _struct = GetStruct();
++ if (CEF_MEMBER_MISSING(_struct, agl_set_app_id)) {
++ return;
++ }
++
++ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
++
++ // Verify param: app_id; type: string_byref_const
++ DCHECK(!app_id.empty());
++ if (app_id.empty()) {
++ return;
++ }
++
++ // Execute
++ _struct->agl_set_app_id(_struct, app_id.GetStruct());
++}
++
++NO_SANITIZE("cfi-icall") void CefWindowCToCpp::AglSetAppReady() {
++ shutdown_checker::AssertNotShutdown();
++
++ cef_window_t* _struct = GetStruct();
++ if (CEF_MEMBER_MISSING(_struct, agl_set_app_ready)) {
++ return;
++ }
++
++ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
++
++ // Execute
++ _struct->agl_set_app_ready(_struct);
++}
++
++NO_SANITIZE("cfi-icall") void CefWindowCToCpp::AglSetBackGroundApp() {
++ shutdown_checker::AssertNotShutdown();
++
++ cef_window_t* _struct = GetStruct();
++ if (CEF_MEMBER_MISSING(_struct, agl_set_back_ground_app)) {
++ return;
++ }
++
++ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
++
++ // Execute
++ _struct->agl_set_back_ground_app(_struct);
++}
++
++NO_SANITIZE("cfi-icall") void CefWindowCToCpp::AglSetPanelApp(uint32_t edge) {
++ shutdown_checker::AssertNotShutdown();
++
++ cef_window_t* _struct = GetStruct();
++ if (CEF_MEMBER_MISSING(_struct, agl_set_panel_app)) {
++ return;
++ }
++
++ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
++
++ // Execute
++ _struct->agl_set_panel_app(_struct, edge);
++}
++
++NO_SANITIZE("cfi-icall") bool CefWindowCToCpp::IsSurfaceConfigured() {
++ shutdown_checker::AssertNotShutdown();
++
++ cef_window_t* _struct = GetStruct();
++ if (CEF_MEMBER_MISSING(_struct, is_surface_configured)) {
++ return false;
++ }
++
++ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
++
++ // Execute
++ int _retval = _struct->is_surface_configured(_struct);
++
++ // Return type: bool
++ return _retval ? true : false;
++}
++
++NO_SANITIZE("cfi-icall")
++void CefWindowCToCpp::SetupActivationArea(uint32_t x,
++ uint32_t y,
++ uint32_t width,
++ uint32_t height) {
++ shutdown_checker::AssertNotShutdown();
++
++ cef_window_t* _struct = GetStruct();
++ if (CEF_MEMBER_MISSING(_struct, setup_activation_area)) {
++ return;
++ }
++
++ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
++
++ // Execute
++ _struct->setup_activation_area(_struct, x, y, width, height);
++}
++
+ NO_SANITIZE("cfi-icall") CefRefPtr<CefWindow> CefWindowCToCpp::AsWindow() {
+ shutdown_checker::AssertNotShutdown();
+
+diff --git a/libcef_dll/ctocpp/views/window_ctocpp.h b/libcef_dll/ctocpp/views/window_ctocpp.h
+index bc797350c..9931a7a3e 100644
+--- a/libcef_dll/ctocpp/views/window_ctocpp.h
++++ b/libcef_dll/ctocpp/views/window_ctocpp.h
+@@ -9,7 +9,7 @@
+ // implementations. See the translator.README.txt file in the tools directory
+ // for more information.
+ //
+-// $hash=2a7aaed7d4296e29dca74345cf2b2d4db221a738$
++// $hash=10cca846f56124ef20cd769e018ccfdf0aba26f5$
+ //
+
+ #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_WINDOW_CTOCPP_H_
+@@ -86,6 +86,16 @@ class CefWindowCToCpp
+ bool alt_pressed) override;
+ void RemoveAccelerator(int command_id) override;
+ void RemoveAllAccelerators() override;
++ void AglActivateApp(const CefString& app) override;
++ void AglSetAppId(const CefString& app_id) override;
++ void AglSetAppReady() override;
++ void AglSetBackGroundApp() override;
++ void AglSetPanelApp(uint32_t edge) override;
++ bool IsSurfaceConfigured() override;
++ void SetupActivationArea(uint32_t x,
++ uint32_t y,
++ uint32_t width,
++ uint32_t height) override;
+
+ // CefPanel methods.
+ CefRefPtr<CefWindow> AsWindow() override;
+diff --git a/libcef_dll/wrapper/libcef_dll_dylib.cc b/libcef_dll/wrapper/libcef_dll_dylib.cc
+index 21065db3b..b61ea0d4b 100644
+--- a/libcef_dll/wrapper/libcef_dll_dylib.cc
++++ b/libcef_dll/wrapper/libcef_dll_dylib.cc
+@@ -9,7 +9,7 @@
+ // implementations. See the translator.README.txt file in the tools directory
+ // for more information.
+ //
+-// $hash=bcad216e5fef8b9c10a895524f8b1201608138f9$
++// $hash=51d1746394ff61e17d4fbb3d1415a3b646004563$
+ //
+
+ #include <dlfcn.h>
+@@ -249,6 +249,8 @@ struct libcef_pointers {
+ decltype(&cef_scroll_view_create) cef_scroll_view_create;
+ decltype(&cef_textfield_create) cef_textfield_create;
+ decltype(&cef_window_create_top_level) cef_window_create_top_level;
++ decltype(&cef_window_create_top_level_with_id)
++ cef_window_create_top_level_with_id;
+ decltype(&cef_api_hash) cef_api_hash;
+ decltype(&cef_version_info) cef_version_info;
+ decltype(&cef_get_min_log_level) cef_get_min_log_level;
+@@ -463,6 +465,7 @@ int libcef_init_pointers(const char* path) {
+ INIT_ENTRY(cef_scroll_view_create);
+ INIT_ENTRY(cef_textfield_create);
+ INIT_ENTRY(cef_window_create_top_level);
++ INIT_ENTRY(cef_window_create_top_level_with_id);
+ INIT_ENTRY(cef_api_hash);
+ INIT_ENTRY(cef_version_info);
+ INIT_ENTRY(cef_get_min_log_level);
+@@ -705,8 +708,8 @@ int cef_create_url(const struct _cef_urlparts_t* parts, cef_string_t* url) {
+ }
+
+ NO_SANITIZE("cfi-icall")
+-cef_string_userfree_t cef_format_url_for_security_display(
+- const cef_string_t* origin_url) {
++cef_string_userfree_t
++ cef_format_url_for_security_display(const cef_string_t* origin_url) {
+ return g_libcef_pointers.cef_format_url_for_security_display(origin_url);
+ }
+
+@@ -978,9 +981,10 @@ void cef_server_create(const cef_string_t* address,
+ }
+
+ NO_SANITIZE("cfi-icall")
+-struct _cef_shared_process_message_builder_t*
+-cef_shared_process_message_builder_create(const cef_string_t* name,
+- size_t byte_size) {
++struct
++ _cef_shared_process_message_builder_t* cef_shared_process_message_builder_create(
++ const cef_string_t* name,
++ size_t byte_size) {
+ return g_libcef_pointers.cef_shared_process_message_builder_create(name,
+ byte_size);
+ }
+@@ -1192,46 +1196,54 @@ struct _cef_translator_test_t* cef_translator_test_create() {
+ }
+
+ NO_SANITIZE("cfi-icall")
+-struct _cef_translator_test_ref_ptr_library_t*
+-cef_translator_test_ref_ptr_library_create(int value) {
++struct
++ _cef_translator_test_ref_ptr_library_t* cef_translator_test_ref_ptr_library_create(
++ int value) {
+ return g_libcef_pointers.cef_translator_test_ref_ptr_library_create(value);
+ }
+
+ NO_SANITIZE("cfi-icall")
+-struct _cef_translator_test_ref_ptr_library_child_t*
+-cef_translator_test_ref_ptr_library_child_create(int value, int other_value) {
++struct
++ _cef_translator_test_ref_ptr_library_child_t* cef_translator_test_ref_ptr_library_child_create(
++ int value,
++ int other_value) {
+ return g_libcef_pointers.cef_translator_test_ref_ptr_library_child_create(
+ value, other_value);
+ }
+
+ NO_SANITIZE("cfi-icall")
+-struct _cef_translator_test_ref_ptr_library_child_child_t*
+-cef_translator_test_ref_ptr_library_child_child_create(int value,
+- int other_value,
+- int other_other_value) {
++struct
++ _cef_translator_test_ref_ptr_library_child_child_t* cef_translator_test_ref_ptr_library_child_child_create(
++ int value,
++ int other_value,
++ int other_other_value) {
+ return g_libcef_pointers
+ .cef_translator_test_ref_ptr_library_child_child_create(
+ value, other_value, other_other_value);
+ }
+
+ NO_SANITIZE("cfi-icall")
+-struct _cef_translator_test_scoped_library_t*
+-cef_translator_test_scoped_library_create(int value) {
++struct
++ _cef_translator_test_scoped_library_t* cef_translator_test_scoped_library_create(
++ int value) {
+ return g_libcef_pointers.cef_translator_test_scoped_library_create(value);
+ }
+
+ NO_SANITIZE("cfi-icall")
+-struct _cef_translator_test_scoped_library_child_t*
+-cef_translator_test_scoped_library_child_create(int value, int other_value) {
++struct
++ _cef_translator_test_scoped_library_child_t* cef_translator_test_scoped_library_child_create(
++ int value,
++ int other_value) {
+ return g_libcef_pointers.cef_translator_test_scoped_library_child_create(
+ value, other_value);
+ }
+
+ NO_SANITIZE("cfi-icall")
+-struct _cef_translator_test_scoped_library_child_child_t*
+-cef_translator_test_scoped_library_child_child_create(int value,
+- int other_value,
+- int other_other_value) {
++struct
++ _cef_translator_test_scoped_library_child_child_t* cef_translator_test_scoped_library_child_child_create(
++ int value,
++ int other_value,
++ int other_other_value) {
+ return g_libcef_pointers
+ .cef_translator_test_scoped_library_child_child_create(value, other_value,
+ other_other_value);
+@@ -1284,14 +1296,14 @@ void cef_display_get_alls(size_t* displaysCount,
+ }
+
+ NO_SANITIZE("cfi-icall")
+-cef_point_t cef_display_convert_screen_point_to_pixels(
+- const cef_point_t* point) {
++cef_point_t
++ cef_display_convert_screen_point_to_pixels(const cef_point_t* point) {
+ return g_libcef_pointers.cef_display_convert_screen_point_to_pixels(point);
+ }
+
+ NO_SANITIZE("cfi-icall")
+-cef_point_t cef_display_convert_screen_point_from_pixels(
+- const cef_point_t* point) {
++cef_point_t
++ cef_display_convert_screen_point_from_pixels(const cef_point_t* point) {
+ return g_libcef_pointers.cef_display_convert_screen_point_from_pixels(point);
+ }
+
+@@ -1342,6 +1354,14 @@ struct _cef_window_t* cef_window_create_top_level(
+ return g_libcef_pointers.cef_window_create_top_level(delegate);
+ }
+
++NO_SANITIZE("cfi-icall")
++struct _cef_window_t* cef_window_create_top_level_with_id(
++ struct _cef_window_delegate_t* delegate,
++ const cef_string_t* app_id) {
++ return g_libcef_pointers.cef_window_create_top_level_with_id(delegate,
++ app_id);
++}
++
+ NO_SANITIZE("cfi-icall") const char* cef_api_hash(int entry) {
+ return g_libcef_pointers.cef_api_hash(entry);
+ }
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/cef/0010-Make-patcher-work-outside-a-git-checkout.patch b/recipes-wam/cef/files/cef/0010-Make-patcher-work-outside-a-git-checkout.patch
new file mode 100644
index 000000000..a59b4f3ca
--- /dev/null
+++ b/recipes-wam/cef/files/cef/0010-Make-patcher-work-outside-a-git-checkout.patch
@@ -0,0 +1,118 @@
+From 713ccd00a541ded20b20c84c7d985f87d3a88d00 Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Wed, 18 Oct 2023 15:59:13 -0300
+Subject: [PATCH 10/11] Make patcher work outside a git checkout
+
+---
+ tools/make_distrib.py | 21 +++++++++++----------
+ tools/patch_util.py | 40 ++++++++++++++++++++++++++++++++++++++++
+ tools/patcher.py | 3 +++
+ 3 files changed, 54 insertions(+), 10 deletions(-)
+ create mode 100644 tools/patch_util.py
+
+diff --git a/tools/make_distrib.py b/tools/make_distrib.py
+index 6ed748fe7..a8db7947e 100644
+--- a/tools/make_distrib.py
++++ b/tools/make_distrib.py
+@@ -621,20 +621,21 @@ cef_url = git.get_url(cef_dir)
+ cef_rev = git.get_hash(cef_dir)
+ cef_commit_number = git.get_commit_number(cef_dir)
+
+-if not git.is_checkout(src_dir):
+- raise Exception('Not a valid checkout: %s' % (src_dir))
+-
+-# retrieve information for Chromium
+-chromium_url = git.get_url(src_dir)
+-chromium_rev = git.get_hash(src_dir)
+-
+-date = get_date()
+-
+-# format version strings
+ formatter = VersionFormatter()
++# format version strings
+ cef_ver = formatter.get_version_string()
+ chromium_ver = formatter.get_chromium_version_string()
+
++if not git.is_checkout(src_dir):
++ chromium_url = git.get_url(src_dir)
++ chromium_rev = git.get_hash(src_dir)
++else:
++ # retrieve information for Chromium
++ chromium_rev = chromium_ver
++ chromium_url = 'https://commondatastorage.googleapis.com/chromium-browser-official/chromium-%s.tar.xz' % chromium_ver
++
++date = get_date()
++
+ # list of output directories to be archived
+ archive_dirs = []
+
+diff --git a/tools/patch_util.py b/tools/patch_util.py
+new file mode 100644
+index 000000000..2025e97e0
+--- /dev/null
++++ b/tools/patch_util.py
+@@ -0,0 +1,40 @@
++from __future__ import absolute_import
++from exec_util import exec_cmd
++import os
++import sys
++
++def patch_apply_patch_file(patch_path, patch_dir):
++ """ Apply |patch_path| to files in |patch_dir|. """
++ patch_name = os.path.basename(patch_path)
++ sys.stdout.write('\nApply %s in %s\n' % (patch_name, patch_dir))
++
++ if not os.path.isfile(patch_path):
++ sys.stdout.write('... patch file does not exist.\n')
++ return 'fail'
++
++ # Apply the patch file. This should always succeed because the previous
++ # command succeeded.
++
++ cmd = 'patch -p0 -N --dry-run --ignore-whitespace --input=%s' % patch_path
++ result = exec_cmd(cmd, patch_dir)
++ if result['ret'] != 0:
++ return 'skip'
++
++ cmd = 'patch --ignore-whitespace -p0 --input=%s --verbose' % patch_path
++ result = exec_cmd(cmd, patch_dir)
++
++ sys.stdout.write('Err: \t%s\n' % result['err'])
++ sys.stdout.write('Out: \t%s\n' % result['out'])
++
++ if result['err'].find('FAILED') >= 0:
++ sys.stdout.write('... error applying patch.\n')
++ write_indented_output(result['err'].replace('<stdin>', patch_name))
++ return 'fail'
++
++ if result['err'] == '':
++ sys.stdout.write('... successfully applied.\n')
++ else:
++ sys.stdout.write('... successfully applied (with warnings):\n')
++ sys.stdout.write('\t%s\n' % result['err'])
++ return 'apply'
++
+diff --git a/tools/patcher.py b/tools/patcher.py
+index 023e91d4b..fa6eb1946 100644
+--- a/tools/patcher.py
++++ b/tools/patcher.py
+@@ -9,6 +9,7 @@ import os
+ import sys
+ from file_util import *
+ from git_util import git_apply_patch_file
++from patch_util import patch_apply_patch_file
+
+ # Cannot be loaded as a module.
+ if __name__ != "__main__":
+@@ -46,6 +47,8 @@ def apply_patch_file(patch_file, patch_dir):
+ return 'skip'
+
+ result = git_apply_patch_file(patch_path, patch_dir)
++ if result == 'fail':
++ result = patch_apply_patch_file(patch_path, patch_dir)
+ if result == 'fail':
+ write_note('ERROR',
+ 'This patch failed to apply. Your build will not be correct.')
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/cef/0010-Update-generated-api-wrapper-files.patch b/recipes-wam/cef/files/cef/0010-Update-generated-api-wrapper-files.patch
deleted file mode 100644
index cc794fd81..000000000
--- a/recipes-wam/cef/files/cef/0010-Update-generated-api-wrapper-files.patch
+++ /dev/null
@@ -1,2912 +0,0 @@
-From 0559c94a3734b7f5ab546d6626a0d4fe6e976383 Mon Sep 17 00:00:00 2001
-From: Roger Zanoni <rzanoni@igalia.com>
-Date: Wed, 12 Jul 2023 22:15:44 +0200
-Subject: [PATCH 10/10] Update generated api/wrapper files
-
----
- cef_paths.gypi | 4 +-
- include/capi/cef_accessibility_handler_capi.h | 4 +-
- include/capi/cef_app_capi.h | 4 +-
- include/capi/cef_audio_handler_capi.h | 4 +-
- include/capi/cef_auth_callback_capi.h | 4 +-
- include/capi/cef_browser_capi.h | 4 +-
- .../capi/cef_browser_process_handler_capi.h | 4 +-
- include/capi/cef_callback_capi.h | 4 +-
- include/capi/cef_client_capi.h | 4 +-
- include/capi/cef_command_handler_capi.h | 4 +-
- include/capi/cef_command_line_capi.h | 4 +-
- include/capi/cef_context_menu_handler_capi.h | 4 +-
- include/capi/cef_cookie_capi.h | 8 +-
- include/capi/cef_crash_util_capi.h | 4 +-
- .../capi/cef_devtools_message_observer_capi.h | 4 +-
- include/capi/cef_dialog_handler_capi.h | 4 +-
- include/capi/cef_display_handler_capi.h | 4 +-
- include/capi/cef_dom_capi.h | 4 +-
- include/capi/cef_download_handler_capi.h | 4 +-
- include/capi/cef_download_item_capi.h | 4 +-
- include/capi/cef_drag_data_capi.h | 4 +-
- include/capi/cef_drag_handler_capi.h | 4 +-
- include/capi/cef_extension_capi.h | 4 +-
- include/capi/cef_extension_handler_capi.h | 4 +-
- include/capi/cef_file_util_capi.h | 4 +-
- include/capi/cef_find_handler_capi.h | 4 +-
- include/capi/cef_focus_handler_capi.h | 4 +-
- include/capi/cef_frame_capi.h | 4 +-
- include/capi/cef_frame_handler_capi.h | 4 +-
- include/capi/cef_i18n_util_capi.h | 4 +-
- include/capi/cef_image_capi.h | 4 +-
- include/capi/cef_jsdialog_handler_capi.h | 4 +-
- include/capi/cef_keyboard_handler_capi.h | 4 +-
- include/capi/cef_life_span_handler_capi.h | 4 +-
- include/capi/cef_load_handler_capi.h | 4 +-
- include/capi/cef_media_router_capi.h | 8 +-
- include/capi/cef_menu_model_capi.h | 4 +-
- include/capi/cef_menu_model_delegate_capi.h | 4 +-
- include/capi/cef_navigation_entry_capi.h | 4 +-
- include/capi/cef_origin_whitelist_capi.h | 4 +-
- include/capi/cef_parser_capi.h | 4 +-
- include/capi/cef_path_util_capi.h | 4 +-
- include/capi/cef_permission_handler_capi.h | 4 +-
- include/capi/cef_preference_capi.h | 4 +-
- include/capi/cef_print_handler_capi.h | 4 +-
- include/capi/cef_print_settings_capi.h | 4 +-
- include/capi/cef_process_message_capi.h | 4 +-
- include/capi/cef_process_util_capi.h | 4 +-
- include/capi/cef_registration_capi.h | 4 +-
- include/capi/cef_render_handler_capi.h | 4 +-
- .../capi/cef_render_process_handler_capi.h | 4 +-
- include/capi/cef_request_capi.h | 4 +-
- include/capi/cef_request_context_capi.h | 4 +-
- .../capi/cef_request_context_handler_capi.h | 4 +-
- include/capi/cef_request_handler_capi.h | 4 +-
- include/capi/cef_resource_bundle_capi.h | 4 +-
- .../capi/cef_resource_bundle_handler_capi.h | 4 +-
- include/capi/cef_resource_handler_capi.h | 4 +-
- .../capi/cef_resource_request_handler_capi.h | 4 +-
- include/capi/cef_response_capi.h | 4 +-
- include/capi/cef_response_filter_capi.h | 4 +-
- include/capi/cef_scheme_capi.h | 12 +-
- include/capi/cef_server_capi.h | 4 +-
- include/capi/cef_shared_memory_region_capi.h | 4 +-
- .../cef_shared_process_message_builder_capi.h | 4 +-
- include/capi/cef_ssl_info_capi.h | 4 +-
- include/capi/cef_ssl_status_capi.h | 4 +-
- include/capi/cef_stream_capi.h | 4 +-
- include/capi/cef_string_visitor_capi.h | 4 +-
- include/capi/cef_task_capi.h | 4 +-
- include/capi/cef_thread_capi.h | 4 +-
- include/capi/cef_trace_capi.h | 4 +-
- include/capi/cef_urlrequest_capi.h | 4 +-
- include/capi/cef_v8_capi.h | 4 +-
- include/capi/cef_values_capi.h | 4 +-
- include/capi/cef_waitable_event_capi.h | 4 +-
- include/capi/cef_x509_certificate_capi.h | 4 +-
- include/capi/cef_xml_reader_capi.h | 4 +-
- include/capi/cef_zip_reader_capi.h | 4 +-
- include/capi/test/cef_test_helpers_capi.h | 4 +-
- include/capi/test/cef_test_server_capi.h | 4 +-
- include/capi/test/cef_translator_test_capi.h | 4 +-
- include/capi/views/cef_box_layout_capi.h | 4 +-
- include/capi/views/cef_browser_view_capi.h | 4 +-
- .../views/cef_browser_view_delegate_capi.h | 4 +-
- include/capi/views/cef_button_capi.h | 4 +-
- include/capi/views/cef_button_delegate_capi.h | 4 +-
- include/capi/views/cef_display_capi.h | 4 +-
- include/capi/views/cef_fill_layout_capi.h | 4 +-
- include/capi/views/cef_label_button_capi.h | 4 +-
- include/capi/views/cef_layout_capi.h | 4 +-
- include/capi/views/cef_menu_button_capi.h | 4 +-
- .../views/cef_menu_button_delegate_capi.h | 4 +-
- .../capi/views/cef_overlay_controller_capi.h | 4 +-
- include/capi/views/cef_panel_capi.h | 4 +-
- include/capi/views/cef_panel_delegate_capi.h | 4 +-
- include/capi/views/cef_scroll_view_capi.h | 4 +-
- include/capi/views/cef_textfield_capi.h | 4 +-
- .../capi/views/cef_textfield_delegate_capi.h | 4 +-
- include/capi/views/cef_view_capi.h | 4 +-
- include/capi/views/cef_view_delegate_capi.h | 4 +-
- include/capi/views/cef_window_capi.h | 54 ++++++-
- include/capi/views/cef_window_delegate_capi.h | 4 +-
- include/cef_api_hash.h | 10 +-
- libcef_dll/cpptoc/views/window_cpptoc.cc | 144 +++++++++++++++++-
- libcef_dll/cpptoc/views/window_cpptoc.h | 4 +-
- libcef_dll/ctocpp/views/window_ctocpp.cc | 139 ++++++++++++++++-
- libcef_dll/ctocpp/views/window_ctocpp.h | 14 +-
- libcef_dll/libcef_dll.cc | 4 +-
- libcef_dll/wrapper/libcef_dll_dylib.cc | 74 +++++----
- libcef_dll/wrapper/libcef_dll_wrapper.cc | 32 ++--
- libcef_dll/wrapper_types.h | 4 +-
- 112 files changed, 629 insertions(+), 274 deletions(-)
-
-diff --git a/cef_paths.gypi b/cef_paths.gypi
-index 698667879..6adc13873 100644
---- a/cef_paths.gypi
-+++ b/cef_paths.gypi
-@@ -1,4 +1,4 @@
--# Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights
-+# Copyright (c) 2023 The Chromium Embedded Framework Authors. All rights
- # reserved. Use of this source code is governed by a BSD-style license that
- # can be found in the LICENSE file.
- #
-@@ -8,7 +8,7 @@
- # by hand. See the translator.README.txt file in the tools directory for
- # more information.
- #
--# $hash=0373d7e3fc02d16a128a5891aac70af56fb9ddc1$
-+# $hash=ab931540f6f4d80336123acea6cf51e701f5a63a$
- #
-
- {
-diff --git a/include/capi/cef_accessibility_handler_capi.h b/include/capi/cef_accessibility_handler_capi.h
-index 5eb40d84f..120714aca 100644
---- a/include/capi/cef_accessibility_handler_capi.h
-+++ b/include/capi/cef_accessibility_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=6bdc0ce413420b45510fcc7f415c6a6fb05f0112$
-+// $hash=0ac3c8ca887778a840c65108d56038d4d776e073$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_ACCESSIBILITY_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_app_capi.h b/include/capi/cef_app_capi.h
-index 145947c37..f1b58c56c 100644
---- a/include/capi/cef_app_capi.h
-+++ b/include/capi/cef_app_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=2f4bdc6adde5defdc86dbb5c998266d6372dd164$
-+// $hash=9b523fbf312a8a0cb1c743a3c8aca7bc9cc22bbc$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_APP_CAPI_H_
-diff --git a/include/capi/cef_audio_handler_capi.h b/include/capi/cef_audio_handler_capi.h
-index f6d204ce0..78af95ddb 100644
---- a/include/capi/cef_audio_handler_capi.h
-+++ b/include/capi/cef_audio_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=4e243df31e29bc6e473d56e371ed6328d948959c$
-+// $hash=936274d5539f225ff7adb7e0acba517fd9a8e2f8$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_AUDIO_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_auth_callback_capi.h b/include/capi/cef_auth_callback_capi.h
-index 76f21490f..6e74c0a48 100644
---- a/include/capi/cef_auth_callback_capi.h
-+++ b/include/capi/cef_auth_callback_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=c0704c0a87e8b57b20887be75700a30e887fee4f$
-+// $hash=4b9c31ef9a23f899c6d8cd3da49934a41f1bd231$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_AUTH_CALLBACK_CAPI_H_
-diff --git a/include/capi/cef_browser_capi.h b/include/capi/cef_browser_capi.h
-index c7e4b7214..244a20cd2 100644
---- a/include/capi/cef_browser_capi.h
-+++ b/include/capi/cef_browser_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=f8a604f73a04bec535d72ec7d05906da8c953b6b$
-+// $hash=7254c050cd7db2ff7d40a1f54c99e941dc592692$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_CAPI_H_
-diff --git a/include/capi/cef_browser_process_handler_capi.h b/include/capi/cef_browser_process_handler_capi.h
-index eef705553..043deb4d8 100644
---- a/include/capi/cef_browser_process_handler_capi.h
-+++ b/include/capi/cef_browser_process_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=a4d3026623111f1ba226d1579c6b03de3b924457$
-+// $hash=4ef8b73a5218531b370fdd76c23153a1f83b7f7b$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_PROCESS_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_callback_capi.h b/include/capi/cef_callback_capi.h
-index a91da31d8..d5086aabb 100644
---- a/include/capi/cef_callback_capi.h
-+++ b/include/capi/cef_callback_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=1bb026d01d1d4bb38ceb4c54f6bcf70300bf5201$
-+// $hash=4fd98ff68ecb42677c3344b75e26d4787161b0d2$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_CALLBACK_CAPI_H_
-diff --git a/include/capi/cef_client_capi.h b/include/capi/cef_client_capi.h
-index 3c33a1d78..e85a33b36 100644
---- a/include/capi/cef_client_capi.h
-+++ b/include/capi/cef_client_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=93f1c39c102dc97d6ad8d236a90a2e0e88f10fb7$
-+// $hash=eb9dcb574252483dfab12834af93ba14138d4089$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_CLIENT_CAPI_H_
-diff --git a/include/capi/cef_command_handler_capi.h b/include/capi/cef_command_handler_capi.h
-index dea127bed..862bff67a 100644
---- a/include/capi/cef_command_handler_capi.h
-+++ b/include/capi/cef_command_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=ec05ae57537091e3543c4b31d72d2d84d44df876$
-+// $hash=46817ef557307a55a9b7138134c4f5c32562f2d7$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_COMMAND_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_command_line_capi.h b/include/capi/cef_command_line_capi.h
-index 7af3177bf..1774c3459 100644
---- a/include/capi/cef_command_line_capi.h
-+++ b/include/capi/cef_command_line_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=f535e9560b9fde9b53fc4d8383905105ed029ea4$
-+// $hash=1d0a15624fec8ca8bd1a5cdf7195b9b553dde44f$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_COMMAND_LINE_CAPI_H_
-diff --git a/include/capi/cef_context_menu_handler_capi.h b/include/capi/cef_context_menu_handler_capi.h
-index e16ae5bff..bc2733340 100644
---- a/include/capi/cef_context_menu_handler_capi.h
-+++ b/include/capi/cef_context_menu_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=0ae549ed35e30afcbb01961fe55455beaadcd7f9$
-+// $hash=c82f41d81f5afa5ed6995693e012c13d2a609f88$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_CONTEXT_MENU_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_cookie_capi.h b/include/capi/cef_cookie_capi.h
-index 4cd5d3631..f6f19ede2 100644
---- a/include/capi/cef_cookie_capi.h
-+++ b/include/capi/cef_cookie_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=37b5e115ff7abd1df1b9913404b69505fb9fef29$
-+// $hash=8093e45bcbd09f41f21c0cb7c8719166cc481529$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_COOKIE_CAPI_H_
-@@ -126,8 +126,8 @@ typedef struct _cef_cookie_manager_t {
- /// cef_settings_t.cache_path if specified or in memory otherwise. If |callback|
- /// is non-NULL it will be executed asnychronously on the UI thread after the
- /// manager's storage has been initialized. Using this function is equivalent to
--/// calling cef_request_context_t::cef_request_context_get_global_context()->Get
--/// DefaultCookieManager().
-+/// calling cef_request_context_t::cef_request_context_get_global_context()-
-+/// >GetDefaultCookieManager().
- ///
- CEF_EXPORT cef_cookie_manager_t* cef_cookie_manager_get_global_manager(
- struct _cef_completion_callback_t* callback);
-diff --git a/include/capi/cef_crash_util_capi.h b/include/capi/cef_crash_util_capi.h
-index 3119367b4..f6272ab0d 100644
---- a/include/capi/cef_crash_util_capi.h
-+++ b/include/capi/cef_crash_util_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=1ce19c3213f033ca9059da738102b9b4292d4a06$
-+// $hash=5c6e0b9e37b8103a182f200fccdf5973104fcd70$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_CRASH_UTIL_CAPI_H_
-diff --git a/include/capi/cef_devtools_message_observer_capi.h b/include/capi/cef_devtools_message_observer_capi.h
-index ac64869eb..ee61835f0 100644
---- a/include/capi/cef_devtools_message_observer_capi.h
-+++ b/include/capi/cef_devtools_message_observer_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=076a01db2fc4241efeb46c5f247a9737fd828f9b$
-+// $hash=777485120b9a9df0f890579ee698d33f273819c5$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_DEVTOOLS_MESSAGE_OBSERVER_CAPI_H_
-diff --git a/include/capi/cef_dialog_handler_capi.h b/include/capi/cef_dialog_handler_capi.h
-index ecf900c08..82281ad96 100644
---- a/include/capi/cef_dialog_handler_capi.h
-+++ b/include/capi/cef_dialog_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=3a1a3ac84690c6090d356ddec3ddb49b934fe28c$
-+// $hash=69545645f079f4593d9cbb6d8a36535c209245f7$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_DIALOG_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_display_handler_capi.h b/include/capi/cef_display_handler_capi.h
-index 17fddfbab..b93421de4 100644
---- a/include/capi/cef_display_handler_capi.h
-+++ b/include/capi/cef_display_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=976a61df924efbcb0c53afeb75265e5e9e80c2de$
-+// $hash=1de3354bd0a042cc28199f1f56753b1df9e279a2$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_DISPLAY_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_dom_capi.h b/include/capi/cef_dom_capi.h
-index 2db400cfb..c895e3b7d 100644
---- a/include/capi/cef_dom_capi.h
-+++ b/include/capi/cef_dom_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=47d8c186f687b65c8e7f394b97d72530e67593cd$
-+// $hash=d703b8af664ed9dfac8ad935616ef43fafc062e2$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_DOM_CAPI_H_
-diff --git a/include/capi/cef_download_handler_capi.h b/include/capi/cef_download_handler_capi.h
-index 37a770d25..597951344 100644
---- a/include/capi/cef_download_handler_capi.h
-+++ b/include/capi/cef_download_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=aff139899b4b8b769fd0e506d8a46e434f924eee$
-+// $hash=f1f6a110a7ce15611a7062b3d7fe8b5c630f2980$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_download_item_capi.h b/include/capi/cef_download_item_capi.h
-index 5548c1a7a..d6986eb03 100644
---- a/include/capi/cef_download_item_capi.h
-+++ b/include/capi/cef_download_item_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=a218058d7ceb842c9ea0cf0c252f9787de6562e7$
-+// $hash=332b9cb62b9c85573dc705aba4c9db3b34177e20$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_DOWNLOAD_ITEM_CAPI_H_
-diff --git a/include/capi/cef_drag_data_capi.h b/include/capi/cef_drag_data_capi.h
-index 45a7c00c8..32eed2fe8 100644
---- a/include/capi/cef_drag_data_capi.h
-+++ b/include/capi/cef_drag_data_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=9e8375de3d30eb7e4f67488da3568d19848eb038$
-+// $hash=a1ce746f0dd97d21973d4c80d8ef46391c0fd463$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_DRAG_DATA_CAPI_H_
-diff --git a/include/capi/cef_drag_handler_capi.h b/include/capi/cef_drag_handler_capi.h
-index a1c717b57..a5023e001 100644
---- a/include/capi/cef_drag_handler_capi.h
-+++ b/include/capi/cef_drag_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=ec450acb2c3cc4d0e69b7da725387d5c1049773b$
-+// $hash=ad16b0f4320d7b363efb152a65e3ce142882b9d9$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_DRAG_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_extension_capi.h b/include/capi/cef_extension_capi.h
-index 008ad4a1f..a945b9bfb 100644
---- a/include/capi/cef_extension_capi.h
-+++ b/include/capi/cef_extension_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=b16b1c47d26e911d360159e5535743622a411c31$
-+// $hash=c81a74622b987483e5fcd2c508aec5c13e12389b$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_CAPI_H_
-diff --git a/include/capi/cef_extension_handler_capi.h b/include/capi/cef_extension_handler_capi.h
-index 3e0563b2e..ab29f3496 100644
---- a/include/capi/cef_extension_handler_capi.h
-+++ b/include/capi/cef_extension_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=ba961ade334c82e53213e7e8ac848adc2a7b533a$
-+// $hash=ad6d3845b150f22b88a71dafa601ef01c9579824$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_file_util_capi.h b/include/capi/cef_file_util_capi.h
-index 7272180c5..daad7a52b 100644
---- a/include/capi/cef_file_util_capi.h
-+++ b/include/capi/cef_file_util_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=3e2e068a2be0a3b12653eea65a4bbe1c9cdb8c7f$
-+// $hash=4e0e0abcb72327998df950e618b147b196e76b60$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_FILE_UTIL_CAPI_H_
-diff --git a/include/capi/cef_find_handler_capi.h b/include/capi/cef_find_handler_capi.h
-index b559e521a..94450d295 100644
---- a/include/capi/cef_find_handler_capi.h
-+++ b/include/capi/cef_find_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=30e86c9dd440616305f94747b313eb526c4323c7$
-+// $hash=8149c82dd6671d676ee62cb6749bf30b32a5832c$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_FIND_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_focus_handler_capi.h b/include/capi/cef_focus_handler_capi.h
-index a5ed63eec..f7b699dc1 100644
---- a/include/capi/cef_focus_handler_capi.h
-+++ b/include/capi/cef_focus_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=907b9628ac4b7ab4603dc6e20b7e8675a51987ba$
-+// $hash=53ec33c8937c735f646f9e0a14a416218e32887c$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_FOCUS_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_frame_capi.h b/include/capi/cef_frame_capi.h
-index 81e9249d7..94069cedc 100644
---- a/include/capi/cef_frame_capi.h
-+++ b/include/capi/cef_frame_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=48bc345bb0971e3fcaaf839e9e4419b2aec0e33b$
-+// $hash=b9b1308311999efcfd2aa678472f934ca783492c$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_FRAME_CAPI_H_
-diff --git a/include/capi/cef_frame_handler_capi.h b/include/capi/cef_frame_handler_capi.h
-index 38d25239c..94b3b8823 100644
---- a/include/capi/cef_frame_handler_capi.h
-+++ b/include/capi/cef_frame_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=3d97135fef535cc94aca6cf1afa4a9461c388b4f$
-+// $hash=4cdadeb6439415d60ec32249c3a0b6457dd586f7$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_FRAME_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_i18n_util_capi.h b/include/capi/cef_i18n_util_capi.h
-index 080731b4c..3aab714ef 100644
---- a/include/capi/cef_i18n_util_capi.h
-+++ b/include/capi/cef_i18n_util_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=14f7f979f668fdae0f080daa39f3c1b2e92162f9$
-+// $hash=c564ee1f32a0ef05fe49fc779af5bc0b0e1b36d6$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_I18N_UTIL_CAPI_H_
-diff --git a/include/capi/cef_image_capi.h b/include/capi/cef_image_capi.h
-index 31ce53cbe..9d4a0a9ca 100644
---- a/include/capi/cef_image_capi.h
-+++ b/include/capi/cef_image_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=f679dc1ec87e99bed6843d4f4dbbe04585a827bd$
-+// $hash=99c94b208f9b184985220493bba4ea08e6786046$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_IMAGE_CAPI_H_
-diff --git a/include/capi/cef_jsdialog_handler_capi.h b/include/capi/cef_jsdialog_handler_capi.h
-index e2d02bb86..a490ddd8c 100644
---- a/include/capi/cef_jsdialog_handler_capi.h
-+++ b/include/capi/cef_jsdialog_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=523a692475e912e4ecad89842596c3d6eac6f4aa$
-+// $hash=e9fb0354243611f3a4de508923a4e01dab42f82d$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_JSDIALOG_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_keyboard_handler_capi.h b/include/capi/cef_keyboard_handler_capi.h
-index 52476dc9f..7ff37b46e 100644
---- a/include/capi/cef_keyboard_handler_capi.h
-+++ b/include/capi/cef_keyboard_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=01d7f86c1304efe8dc8758624b74bafccf159e96$
-+// $hash=10fb708c5f550403205a976924abf1886bf3dfa7$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_KEYBOARD_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_life_span_handler_capi.h b/include/capi/cef_life_span_handler_capi.h
-index 2814d143c..f02ea6a4a 100644
---- a/include/capi/cef_life_span_handler_capi.h
-+++ b/include/capi/cef_life_span_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=44555ceece9989dabfa57a520168fa874dcfe2df$
-+// $hash=1c807597b96889f44a1e5199e860e8db4948b473$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_LIFE_SPAN_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_load_handler_capi.h b/include/capi/cef_load_handler_capi.h
-index 5536cc1f1..3667b8687 100644
---- a/include/capi/cef_load_handler_capi.h
-+++ b/include/capi/cef_load_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=2713381c9969d7039e6c1a1ed2527e5aeb5425ce$
-+// $hash=1ee684174554f7d1cf8899992705d072c1c56ae7$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_LOAD_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_media_router_capi.h b/include/capi/cef_media_router_capi.h
-index e078abb01..69e00522c 100644
---- a/include/capi/cef_media_router_capi.h
-+++ b/include/capi/cef_media_router_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=77920892e7d9e8b98106e0bc8dfcf4b4c52a24e6$
-+// $hash=364a4abc293a294bee461a0b75936dedea3294e5$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_MEDIA_ROUTER_CAPI_H_
-@@ -114,8 +114,8 @@ typedef struct _cef_media_router_t {
- /// Returns the MediaRouter object associated with the global request context.
- /// If |callback| is non-NULL it will be executed asnychronously on the UI
- /// thread after the manager's storage has been initialized. Equivalent to
--/// calling cef_request_context_t::cef_request_context_get_global_context()->get
--/// _media_router().
-+/// calling cef_request_context_t::cef_request_context_get_global_context()-
-+/// >get_media_router().
- ///
- CEF_EXPORT cef_media_router_t* cef_media_router_get_global(
- struct _cef_completion_callback_t* callback);
-diff --git a/include/capi/cef_menu_model_capi.h b/include/capi/cef_menu_model_capi.h
-index a3352d864..8b5bd6632 100644
---- a/include/capi/cef_menu_model_capi.h
-+++ b/include/capi/cef_menu_model_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=4bf9250599e3ba26e7f74ec22338548492202625$
-+// $hash=d70b78b8108bb08b4f53b2627ed4ebfdffece7c1$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_CAPI_H_
-diff --git a/include/capi/cef_menu_model_delegate_capi.h b/include/capi/cef_menu_model_delegate_capi.h
-index a4ed31ee8..dd339c197 100644
---- a/include/capi/cef_menu_model_delegate_capi.h
-+++ b/include/capi/cef_menu_model_delegate_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=8254165498a527d40517c1bc8ec413ad7a0ed259$
-+// $hash=933a90dfb7b94a3aba7f2944e4540662dc8c79d7$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_MENU_MODEL_DELEGATE_CAPI_H_
-diff --git a/include/capi/cef_navigation_entry_capi.h b/include/capi/cef_navigation_entry_capi.h
-index 4dd92bc3e..863c11d4b 100644
---- a/include/capi/cef_navigation_entry_capi.h
-+++ b/include/capi/cef_navigation_entry_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=2822d96d72b7df816c0fefb4ce1cbba18add50ac$
-+// $hash=d33771c31b7b0964aa2ccf1c2bc2ca1226194977$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_NAVIGATION_ENTRY_CAPI_H_
-diff --git a/include/capi/cef_origin_whitelist_capi.h b/include/capi/cef_origin_whitelist_capi.h
-index 3170bd48d..9b57f38d2 100644
---- a/include/capi/cef_origin_whitelist_capi.h
-+++ b/include/capi/cef_origin_whitelist_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=a40860835e6e693ed2f85eab5fa7990b7f2c7bbe$
-+// $hash=b564dfe24017a0805e393854d12791a71c46c454$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_ORIGIN_WHITELIST_CAPI_H_
-diff --git a/include/capi/cef_parser_capi.h b/include/capi/cef_parser_capi.h
-index c9bbdcb13..a6410c293 100644
---- a/include/capi/cef_parser_capi.h
-+++ b/include/capi/cef_parser_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=f6dfdfa5b8c77931d8e083a66f5a9445a2fdbf45$
-+// $hash=5d6dad4bfaeef0117d068b6e67a8da7490fe7c2d$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_PARSER_CAPI_H_
-diff --git a/include/capi/cef_path_util_capi.h b/include/capi/cef_path_util_capi.h
-index 84ff5e0ce..5706b8399 100644
---- a/include/capi/cef_path_util_capi.h
-+++ b/include/capi/cef_path_util_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=0b3af613a60e4c74ec83c0bb8f5280464cbe7f48$
-+// $hash=70b306534b9cb8334c9ea260feacfd8f2f503292$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_PATH_UTIL_CAPI_H_
-diff --git a/include/capi/cef_permission_handler_capi.h b/include/capi/cef_permission_handler_capi.h
-index ed005a1a0..67d8f0b93 100644
---- a/include/capi/cef_permission_handler_capi.h
-+++ b/include/capi/cef_permission_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=8f2ae563306d1e4ba5fa84a5f9a60712c6fc585f$
-+// $hash=bc44eb70b7f0b48e0646825e919cb9996ac99781$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_PERMISSION_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_preference_capi.h b/include/capi/cef_preference_capi.h
-index 89e36b967..fa6d9bd3b 100644
---- a/include/capi/cef_preference_capi.h
-+++ b/include/capi/cef_preference_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=eac0782793e7b9c64668f2a22a859357257140ea$
-+// $hash=922659242ea25c52d02884a7cc5918d086cbfaca$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_PREFERENCE_CAPI_H_
-diff --git a/include/capi/cef_print_handler_capi.h b/include/capi/cef_print_handler_capi.h
-index 28b6546d9..47e69b1d3 100644
---- a/include/capi/cef_print_handler_capi.h
-+++ b/include/capi/cef_print_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=0621c349d0ef1e5befe0dc653a5b8ba49e51a54e$
-+// $hash=d09937fb047debd9da39c4072a434659b3c5682c$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_PRINT_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_print_settings_capi.h b/include/capi/cef_print_settings_capi.h
-index b58904690..14a52f30b 100644
---- a/include/capi/cef_print_settings_capi.h
-+++ b/include/capi/cef_print_settings_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=22959da4d5a2c94edc7647334507e38c44d40250$
-+// $hash=46508464579e797d4684f4a7facdb39f9bdb312b$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_PRINT_SETTINGS_CAPI_H_
-diff --git a/include/capi/cef_process_message_capi.h b/include/capi/cef_process_message_capi.h
-index 6ec7e76ba..586014c38 100644
---- a/include/capi/cef_process_message_capi.h
-+++ b/include/capi/cef_process_message_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=7b8bbe145aa8d54d868b9d9e4ce6ff2e6a596e53$
-+// $hash=e20a8d6a5803dae5ba156adde40c8b964899b176$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_PROCESS_MESSAGE_CAPI_H_
-diff --git a/include/capi/cef_process_util_capi.h b/include/capi/cef_process_util_capi.h
-index b7033886f..2ae2c57cb 100644
---- a/include/capi/cef_process_util_capi.h
-+++ b/include/capi/cef_process_util_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=f6b215445a54f565a26f1a62d2671156635d6d46$
-+// $hash=88c42c5f216798304b07bfe985296014cf65996c$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_PROCESS_UTIL_CAPI_H_
-diff --git a/include/capi/cef_registration_capi.h b/include/capi/cef_registration_capi.h
-index 5f18c90a7..4ac84d670 100644
---- a/include/capi/cef_registration_capi.h
-+++ b/include/capi/cef_registration_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=28371116427e9457ea366c9f0546cd5eefd8f08a$
-+// $hash=b1b38a3171dd3626029e70e75b482dfa3531215b$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_REGISTRATION_CAPI_H_
-diff --git a/include/capi/cef_render_handler_capi.h b/include/capi/cef_render_handler_capi.h
-index f57233399..ccd3d238c 100644
---- a/include/capi/cef_render_handler_capi.h
-+++ b/include/capi/cef_render_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=931b329d62ea6461485b62b79f98165d7185b6e7$
-+// $hash=32d8176f39b05487bae048990b2dee3212ae3b78$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_RENDER_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_render_process_handler_capi.h b/include/capi/cef_render_process_handler_capi.h
-index dc4210176..f9c86c941 100644
---- a/include/capi/cef_render_process_handler_capi.h
-+++ b/include/capi/cef_render_process_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=b74afb6f8003ed24256ce7359ea377596b4406d9$
-+// $hash=d807c7566ce3085243e9e7ea279fee7241acfc5f$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_RENDER_PROCESS_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_request_capi.h b/include/capi/cef_request_capi.h
-index d39c7d475..9ac916576 100644
---- a/include/capi/cef_request_capi.h
-+++ b/include/capi/cef_request_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=041c1b4e6e57987ad547daff56f96c6ff7ab15c9$
-+// $hash=3339290cad3a77c8b0b07d422f0faf902a047838$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CAPI_H_
-diff --git a/include/capi/cef_request_context_capi.h b/include/capi/cef_request_context_capi.h
-index 8e7321e22..58f3ef2d1 100644
---- a/include/capi/cef_request_context_capi.h
-+++ b/include/capi/cef_request_context_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=62f9dd603840149334ecd1f25222dbda0682b0e6$
-+// $hash=c2a6265e8e9acce475a8b5755a8c58b97b495207$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_CAPI_H_
-diff --git a/include/capi/cef_request_context_handler_capi.h b/include/capi/cef_request_context_handler_capi.h
-index fb4a0a493..d7e06f816 100644
---- a/include/capi/cef_request_context_handler_capi.h
-+++ b/include/capi/cef_request_context_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=c25acf0c0dde9bbd8b9b3526e161aaa9e00445c8$
-+// $hash=b0b532a12106d960adc446b980affeee12b93ae3$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_request_handler_capi.h b/include/capi/cef_request_handler_capi.h
-index 398ed8c61..33b1469bc 100644
---- a/include/capi/cef_request_handler_capi.h
-+++ b/include/capi/cef_request_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=0524a218f8cb54cfde70f2ec475520b11923c2f7$
-+// $hash=c4e259fe4432ce8204c7814066d008b493f0001a$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_resource_bundle_capi.h b/include/capi/cef_resource_bundle_capi.h
-index cf8e96b78..b06728c1d 100644
---- a/include/capi/cef_resource_bundle_capi.h
-+++ b/include/capi/cef_resource_bundle_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=4350dcf46e2fcd18bea2c45446e448e588795afb$
-+// $hash=e8e8dd2730a47aad9414f7bfc2e6ad96aba2c875$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_BUNDLE_CAPI_H_
-diff --git a/include/capi/cef_resource_bundle_handler_capi.h b/include/capi/cef_resource_bundle_handler_capi.h
-index 136e0cef9..bc9eea523 100644
---- a/include/capi/cef_resource_bundle_handler_capi.h
-+++ b/include/capi/cef_resource_bundle_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=5f8c2d1e11779072e83610190ed7215324028d07$
-+// $hash=00023b2ec108ae6e4bd282d16e82032cdc99d548$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_BUNDLE_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_resource_handler_capi.h b/include/capi/cef_resource_handler_capi.h
-index 98ff24eb6..bad0b85ad 100644
---- a/include/capi/cef_resource_handler_capi.h
-+++ b/include/capi/cef_resource_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=3373cc29becf60303d1f01774c1ed8017c3f0da3$
-+// $hash=93e5c4f5e93f56b63b5944208300669dcecba972$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_resource_request_handler_capi.h b/include/capi/cef_resource_request_handler_capi.h
-index 057456e32..184055628 100644
---- a/include/capi/cef_resource_request_handler_capi.h
-+++ b/include/capi/cef_resource_request_handler_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=64d090faf64e2ffb99da110840af383b757e113b$
-+// $hash=70d6b393cbdc96a75864911d7ca3568cc8dcdebf$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_REQUEST_HANDLER_CAPI_H_
-diff --git a/include/capi/cef_response_capi.h b/include/capi/cef_response_capi.h
-index 089694295..d8c4b655d 100644
---- a/include/capi/cef_response_capi.h
-+++ b/include/capi/cef_response_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=21354bc7b20a18eb0c25d2aa0abf1211fd9ebcaa$
-+// $hash=7fbcd399c08dc39e33a7d0400a49f2e3a551bd02$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_RESPONSE_CAPI_H_
-diff --git a/include/capi/cef_response_filter_capi.h b/include/capi/cef_response_filter_capi.h
-index 425542703..c8a57de29 100644
---- a/include/capi/cef_response_filter_capi.h
-+++ b/include/capi/cef_response_filter_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=cbcb379f7ed86b58e271089a4117267a50f72814$
-+// $hash=2c9b14a86ee6777e4834eadcfc95802f2dedb11a$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_RESPONSE_FILTER_CAPI_H_
-diff --git a/include/capi/cef_scheme_capi.h b/include/capi/cef_scheme_capi.h
-index 08786ae5a..bdcd6cc3b 100644
---- a/include/capi/cef_scheme_capi.h
-+++ b/include/capi/cef_scheme_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=1b6cd9a13f93867b1f20418bfa4c7db8b5e6725d$
-+// $hash=794d4c01f06c656c425779b0189a3b52820498ed$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_SCHEME_CAPI_H_
-@@ -116,8 +116,8 @@ typedef struct _cef_scheme_handler_factory_t {
- /// matches the specified |scheme_name| and optional |domain_name|. Returns
- /// false (0) if an error occurs. This function may be called on any thread in
- /// the browser process. Using this function is equivalent to calling cef_reques
--/// t_context_t::cef_request_context_get_global_context()->register_scheme_handl
--/// er_factory().
-+/// t_context_t::cef_request_context_get_global_context()-
-+/// >register_scheme_handler_factory().
- ///
- CEF_EXPORT int cef_register_scheme_handler_factory(
- const cef_string_t* scheme_name,
-@@ -128,8 +128,8 @@ CEF_EXPORT int cef_register_scheme_handler_factory(
- /// Clear all scheme handler factories registered with the global request
- /// context. Returns false (0) on error. This function may be called on any
- /// thread in the browser process. Using this function is equivalent to calling
--/// cef_request_context_t::cef_request_context_get_global_context()->clear_schem
--/// e_handler_factories().
-+/// cef_request_context_t::cef_request_context_get_global_context()-
-+/// >clear_scheme_handler_factories().
- ///
- CEF_EXPORT int cef_clear_scheme_handler_factories(void);
-
-diff --git a/include/capi/cef_server_capi.h b/include/capi/cef_server_capi.h
-index 9a65378f4..d1d2d943d 100644
---- a/include/capi/cef_server_capi.h
-+++ b/include/capi/cef_server_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=4d76765604a96b026076f1c930a33d616f23b4ad$
-+// $hash=64e9ebc0e01acca0333ca3419e379d4053892270$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_SERVER_CAPI_H_
-diff --git a/include/capi/cef_shared_memory_region_capi.h b/include/capi/cef_shared_memory_region_capi.h
-index 2316e25b1..07be55e69 100644
---- a/include/capi/cef_shared_memory_region_capi.h
-+++ b/include/capi/cef_shared_memory_region_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=5f69190b21f9fa17e6fb4c2284968f8ec5b147ed$
-+// $hash=08f64795d78bdad29a45222a7263e795ce77a52d$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_SHARED_MEMORY_REGION_CAPI_H_
-diff --git a/include/capi/cef_shared_process_message_builder_capi.h b/include/capi/cef_shared_process_message_builder_capi.h
-index ef47472f4..1b570648f 100644
---- a/include/capi/cef_shared_process_message_builder_capi.h
-+++ b/include/capi/cef_shared_process_message_builder_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=66198e92ec123e753bb427a0b92d73672610136e$
-+// $hash=1a2d8806256d04362f181350db2835850cb3e0ae$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_SHARED_PROCESS_MESSAGE_BUILDER_CAPI_H_
-diff --git a/include/capi/cef_ssl_info_capi.h b/include/capi/cef_ssl_info_capi.h
-index 6fb5939d2..54b2009a5 100644
---- a/include/capi/cef_ssl_info_capi.h
-+++ b/include/capi/cef_ssl_info_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=64d6affe3e8e45869403f829c2aa86026773a17b$
-+// $hash=99dff3042ea437ecf5771eff9b3cab4c22190534$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_SSL_INFO_CAPI_H_
-diff --git a/include/capi/cef_ssl_status_capi.h b/include/capi/cef_ssl_status_capi.h
-index c3ca2bd15..0c6c4b799 100644
---- a/include/capi/cef_ssl_status_capi.h
-+++ b/include/capi/cef_ssl_status_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=b40ab326a1bf140859db9288b809a4038833f014$
-+// $hash=034a68aa4901cde95e12a7900cfc65753fbde345$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_SSL_STATUS_CAPI_H_
-diff --git a/include/capi/cef_stream_capi.h b/include/capi/cef_stream_capi.h
-index e9f20bf8a..c425b1fe2 100644
---- a/include/capi/cef_stream_capi.h
-+++ b/include/capi/cef_stream_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=9ccb4e6ea821c1b98adcc934429d2bf43cf9d8a2$
-+// $hash=bbb4153d5d7325ac9a410d7f85a8d47eadcfaf6e$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_STREAM_CAPI_H_
-diff --git a/include/capi/cef_string_visitor_capi.h b/include/capi/cef_string_visitor_capi.h
-index 564f3a960..5ea9b38fd 100644
---- a/include/capi/cef_string_visitor_capi.h
-+++ b/include/capi/cef_string_visitor_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=3940b4c999764eae305984a16c401e302aefddc6$
-+// $hash=6a22e5144c0254acb09656e6e41eedd05f2dd7e7$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_STRING_VISITOR_CAPI_H_
-diff --git a/include/capi/cef_task_capi.h b/include/capi/cef_task_capi.h
-index f7c9caac4..3a04e6bce 100644
---- a/include/capi/cef_task_capi.h
-+++ b/include/capi/cef_task_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=a7a4bf5cd4bde87774b8300d25f12b057a5abf60$
-+// $hash=273a6abfd4ac030701be00c45811c19e74e128bd$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_TASK_CAPI_H_
-diff --git a/include/capi/cef_thread_capi.h b/include/capi/cef_thread_capi.h
-index 960359a41..adfb79a0b 100644
---- a/include/capi/cef_thread_capi.h
-+++ b/include/capi/cef_thread_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=b5b17f2a66283495e19978a5bbc36b47d9b61507$
-+// $hash=b111114b291d3b91c526e6b3da5741959469ec4a$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_THREAD_CAPI_H_
-diff --git a/include/capi/cef_trace_capi.h b/include/capi/cef_trace_capi.h
-index 0429c2186..183ccdada 100644
---- a/include/capi/cef_trace_capi.h
-+++ b/include/capi/cef_trace_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=587514b02797f420da6ba13ba21c4344f41b56ce$
-+// $hash=8d275bd73854b2b8d5a7a5bc55fa737e020705ee$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_TRACE_CAPI_H_
-diff --git a/include/capi/cef_urlrequest_capi.h b/include/capi/cef_urlrequest_capi.h
-index f638122eb..d54ffb78c 100644
---- a/include/capi/cef_urlrequest_capi.h
-+++ b/include/capi/cef_urlrequest_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=5b2bfaf4b7572935b2cfba804dc1625261e32e24$
-+// $hash=91c121d4353a80d7fff3ef582c5a56ac86e0a34c$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_URLREQUEST_CAPI_H_
-diff --git a/include/capi/cef_v8_capi.h b/include/capi/cef_v8_capi.h
-index cd57020e4..7119475eb 100644
---- a/include/capi/cef_v8_capi.h
-+++ b/include/capi/cef_v8_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=b8af0d090bcb54f99d98804f7e3aaa0eab24449a$
-+// $hash=0d787ac7676ba90d3a1fe68d5e2494b985b1db0e$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_V8_CAPI_H_
-diff --git a/include/capi/cef_values_capi.h b/include/capi/cef_values_capi.h
-index a3eaf710f..50abd75f3 100644
---- a/include/capi/cef_values_capi.h
-+++ b/include/capi/cef_values_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=e8f16d32cc835f9b20b3fcd7048146f52ec9bfe5$
-+// $hash=1b8f7f620685c30b91c8fa656e1a01d182684ae6$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_VALUES_CAPI_H_
-diff --git a/include/capi/cef_waitable_event_capi.h b/include/capi/cef_waitable_event_capi.h
-index 1b0ad7434..1f5431c7f 100644
---- a/include/capi/cef_waitable_event_capi.h
-+++ b/include/capi/cef_waitable_event_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=737b3ee4e678de14ebffec828d113b007e06c58d$
-+// $hash=683d592a2405ada0a9c46c004f003d640a3298ad$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_WAITABLE_EVENT_CAPI_H_
-diff --git a/include/capi/cef_x509_certificate_capi.h b/include/capi/cef_x509_certificate_capi.h
-index 554013df4..bfd4700f8 100644
---- a/include/capi/cef_x509_certificate_capi.h
-+++ b/include/capi/cef_x509_certificate_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=1d551ff4900e1792bc2d89bebcda1707b8d9c985$
-+// $hash=7a541729b4ac664b22cdea625f19f1dba1b6a685$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_X509_CERTIFICATE_CAPI_H_
-diff --git a/include/capi/cef_xml_reader_capi.h b/include/capi/cef_xml_reader_capi.h
-index 71f126e8c..3db9b94e0 100644
---- a/include/capi/cef_xml_reader_capi.h
-+++ b/include/capi/cef_xml_reader_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=988d13daa86a6ed89d2116e44d2307ee01c63c08$
-+// $hash=366f872b03f7c25ef56677cc427a317bb529ad9c$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_XML_READER_CAPI_H_
-diff --git a/include/capi/cef_zip_reader_capi.h b/include/capi/cef_zip_reader_capi.h
-index 7c016c349..05c9cd2e3 100644
---- a/include/capi/cef_zip_reader_capi.h
-+++ b/include/capi/cef_zip_reader_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=5e121ff2140e0f1228fd8e2ad632c804ab854210$
-+// $hash=83debac545c04a630270665b391f52b15484b5d3$
- //
-
- #ifndef CEF_INCLUDE_CAPI_CEF_ZIP_READER_CAPI_H_
-diff --git a/include/capi/test/cef_test_helpers_capi.h b/include/capi/test/cef_test_helpers_capi.h
-index 61a5164be..c24bcf5a2 100644
---- a/include/capi/test/cef_test_helpers_capi.h
-+++ b/include/capi/test/cef_test_helpers_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=cdc9af1b664e49e339ab7bb50d04a7ea385e07e5$
-+// $hash=4d10dad2278e6d61367b3deaf501a0e7b4fd60e9$
- //
-
- #ifndef CEF_INCLUDE_CAPI_TEST_CEF_TEST_HELPERS_CAPI_H_
-diff --git a/include/capi/test/cef_test_server_capi.h b/include/capi/test/cef_test_server_capi.h
-index c6ffc5bc4..ba30e6840 100644
---- a/include/capi/test/cef_test_server_capi.h
-+++ b/include/capi/test/cef_test_server_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=7dc00d6af4e26812b78e47ec707f8d271c043a8e$
-+// $hash=df532eb91caf9de44b077abdf00620dd2508402b$
- //
-
- #ifndef CEF_INCLUDE_CAPI_TEST_CEF_TEST_SERVER_CAPI_H_
-diff --git a/include/capi/test/cef_translator_test_capi.h b/include/capi/test/cef_translator_test_capi.h
-index c0b8f509a..b1e87b051 100644
---- a/include/capi/test/cef_translator_test_capi.h
-+++ b/include/capi/test/cef_translator_test_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=58c8adb936b8dba8b13a586adfe9e32e7a02d24c$
-+// $hash=58809bc0a16010773cf11b5165e65b32ec4b4793$
- //
-
- #ifndef CEF_INCLUDE_CAPI_TEST_CEF_TRANSLATOR_TEST_CAPI_H_
-diff --git a/include/capi/views/cef_box_layout_capi.h b/include/capi/views/cef_box_layout_capi.h
-index e480e4a1b..f053f017f 100644
---- a/include/capi/views/cef_box_layout_capi.h
-+++ b/include/capi/views/cef_box_layout_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=fe404a2a9d429c6de2a00a8e27efe553e93e792d$
-+// $hash=31153d0702b646d310e74f04e256c0f5915b8caa$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_BOX_LAYOUT_CAPI_H_
-diff --git a/include/capi/views/cef_browser_view_capi.h b/include/capi/views/cef_browser_view_capi.h
-index 89bcd8baf..1e190bf7b 100644
---- a/include/capi/views/cef_browser_view_capi.h
-+++ b/include/capi/views/cef_browser_view_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=f575718f8c4df556ba92a2aff7204cbd6ad87bd6$
-+// $hash=f72e94f6bd63b6ea623c4d3170b5ad4333c136d6$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_BROWSER_VIEW_CAPI_H_
-diff --git a/include/capi/views/cef_browser_view_delegate_capi.h b/include/capi/views/cef_browser_view_delegate_capi.h
-index 63484202d..25fc074ff 100644
---- a/include/capi/views/cef_browser_view_delegate_capi.h
-+++ b/include/capi/views/cef_browser_view_delegate_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=0e7953aa553f6987fa0142a9c4848ca59d68fb69$
-+// $hash=e38c41a553d518abcd1b912d32281e99b93c4fd7$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_BROWSER_VIEW_DELEGATE_CAPI_H_
-diff --git a/include/capi/views/cef_button_capi.h b/include/capi/views/cef_button_capi.h
-index 2a698c4f2..e4fa6815b 100644
---- a/include/capi/views/cef_button_capi.h
-+++ b/include/capi/views/cef_button_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=6eb1f513763884af55e28aaf1c13b67240d15b33$
-+// $hash=6580dc6ef6c20d5d78dc0160982b9ef57c939f86$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_BUTTON_CAPI_H_
-diff --git a/include/capi/views/cef_button_delegate_capi.h b/include/capi/views/cef_button_delegate_capi.h
-index bf580b7fc..caa27da25 100644
---- a/include/capi/views/cef_button_delegate_capi.h
-+++ b/include/capi/views/cef_button_delegate_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=a5faae9e35df9935393dbf1db5df832f8b9a025c$
-+// $hash=9843593667569cf8755386ab2d884620087a36b8$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_BUTTON_DELEGATE_CAPI_H_
-diff --git a/include/capi/views/cef_display_capi.h b/include/capi/views/cef_display_capi.h
-index 4b94ca623..3c36324db 100644
---- a/include/capi/views/cef_display_capi.h
-+++ b/include/capi/views/cef_display_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=912c23bc842c87aeca79780746c31e3fe848013a$
-+// $hash=7674d3af52dd4272b454b2028e7a4ee72fb3c9ff$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_DISPLAY_CAPI_H_
-diff --git a/include/capi/views/cef_fill_layout_capi.h b/include/capi/views/cef_fill_layout_capi.h
-index 8df6df97f..c9ae6d9c6 100644
---- a/include/capi/views/cef_fill_layout_capi.h
-+++ b/include/capi/views/cef_fill_layout_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=dc1a43f52c873628c98a479ae69f6e24cbd58129$
-+// $hash=fdb3457ac8b18ad3cf0144af5886586dd675c8f8$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_FILL_LAYOUT_CAPI_H_
-diff --git a/include/capi/views/cef_label_button_capi.h b/include/capi/views/cef_label_button_capi.h
-index b821bb999..07b387631 100644
---- a/include/capi/views/cef_label_button_capi.h
-+++ b/include/capi/views/cef_label_button_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=88a2e2e9e1b0e7a692aca78be34ce1620c936336$
-+// $hash=eee5b9ebfa58617d5e6fa969e27cc9e378fddb22$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_LABEL_BUTTON_CAPI_H_
-diff --git a/include/capi/views/cef_layout_capi.h b/include/capi/views/cef_layout_capi.h
-index 85081f7ee..5430a4595 100644
---- a/include/capi/views/cef_layout_capi.h
-+++ b/include/capi/views/cef_layout_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=01c57abc0a004118040b58bdcec07dfd32827d4f$
-+// $hash=c4a17c07bb2a3518fc5b7350efdc13ffeb803747$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_LAYOUT_CAPI_H_
-diff --git a/include/capi/views/cef_menu_button_capi.h b/include/capi/views/cef_menu_button_capi.h
-index 986a21ca9..85cec0fe3 100644
---- a/include/capi/views/cef_menu_button_capi.h
-+++ b/include/capi/views/cef_menu_button_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=cfe68fb772b0c370f6895a1e8756491326de9c14$
-+// $hash=dcfa5d39d1355b2c675637a13378f43376a8053e$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_MENU_BUTTON_CAPI_H_
-diff --git a/include/capi/views/cef_menu_button_delegate_capi.h b/include/capi/views/cef_menu_button_delegate_capi.h
-index 8c05669c2..5d9386486 100644
---- a/include/capi/views/cef_menu_button_delegate_capi.h
-+++ b/include/capi/views/cef_menu_button_delegate_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=f52310d3f7e9a8be886161ae0e20e4b903a2e765$
-+// $hash=38177cad78713d382b81f8b8aa4372402c62fac7$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_MENU_BUTTON_DELEGATE_CAPI_H_
-diff --git a/include/capi/views/cef_overlay_controller_capi.h b/include/capi/views/cef_overlay_controller_capi.h
-index 9c3e581b4..8084bfd65 100644
---- a/include/capi/views/cef_overlay_controller_capi.h
-+++ b/include/capi/views/cef_overlay_controller_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=937ed3958b86682a88a09493aa5e9e4014d3bbc2$
-+// $hash=a5a2c7fe2c285b45268eee1710a8549ab12727f3$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_OVERLAY_CONTROLLER_CAPI_H_
-diff --git a/include/capi/views/cef_panel_capi.h b/include/capi/views/cef_panel_capi.h
-index 6e40c17c0..658b0050d 100644
---- a/include/capi/views/cef_panel_capi.h
-+++ b/include/capi/views/cef_panel_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=7dbcb8d40d3f5ac18dee74621fe472e9ab089f8a$
-+// $hash=40d350f75893a1e4307b282317d55f0fceae3baf$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_PANEL_CAPI_H_
-diff --git a/include/capi/views/cef_panel_delegate_capi.h b/include/capi/views/cef_panel_delegate_capi.h
-index 73ccdaabe..227762d5d 100644
---- a/include/capi/views/cef_panel_delegate_capi.h
-+++ b/include/capi/views/cef_panel_delegate_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=ce2d8e40ebdd803221ebcd26dab9461984917fd4$
-+// $hash=e8bdae70e1f16fba3a5e01d9e215a02f13291ff5$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_PANEL_DELEGATE_CAPI_H_
-diff --git a/include/capi/views/cef_scroll_view_capi.h b/include/capi/views/cef_scroll_view_capi.h
-index badffb601..dd503c286 100644
---- a/include/capi/views/cef_scroll_view_capi.h
-+++ b/include/capi/views/cef_scroll_view_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=26037d0a585f2d93f19ee0417be670a706ff42ff$
-+// $hash=e3aa3fbb265a600d498884b0fbb852fc5bbf8856$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_SCROLL_VIEW_CAPI_H_
-diff --git a/include/capi/views/cef_textfield_capi.h b/include/capi/views/cef_textfield_capi.h
-index e593a6b6e..c525f216d 100644
---- a/include/capi/views/cef_textfield_capi.h
-+++ b/include/capi/views/cef_textfield_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=a38b506d8bc425f3de4809c02d0ec4bc558eb518$
-+// $hash=7d5a43282c9847c5c842abd5de023f4c5c69a9f0$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_TEXTFIELD_CAPI_H_
-diff --git a/include/capi/views/cef_textfield_delegate_capi.h b/include/capi/views/cef_textfield_delegate_capi.h
-index 23457452a..a14c0bfed 100644
---- a/include/capi/views/cef_textfield_delegate_capi.h
-+++ b/include/capi/views/cef_textfield_delegate_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=43f4bcda7e81ee1750f5a4c220832455f1ab8300$
-+// $hash=482b091326684014bd799fef864e3dfdfc8693a1$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_TEXTFIELD_DELEGATE_CAPI_H_
-diff --git a/include/capi/views/cef_view_capi.h b/include/capi/views/cef_view_capi.h
-index b0d669eb9..5372f61f4 100644
---- a/include/capi/views/cef_view_capi.h
-+++ b/include/capi/views/cef_view_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=dcda9eb9c6258b68faed06f9edfdcabbbb3e7000$
-+// $hash=cb5950b283944d06312903eb554cc4c980713e98$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_VIEW_CAPI_H_
-diff --git a/include/capi/views/cef_view_delegate_capi.h b/include/capi/views/cef_view_delegate_capi.h
-index 0edb9d5af..4f4b8f01e 100644
---- a/include/capi/views/cef_view_delegate_capi.h
-+++ b/include/capi/views/cef_view_delegate_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=41b9addf8d38cc522879ba1abd455325e7f98bc4$
-+// $hash=70646cb55b5bf98ccfa2a93b2cf57bd5ba367268$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_VIEW_DELEGATE_CAPI_H_
-diff --git a/include/capi/views/cef_window_capi.h b/include/capi/views/cef_window_capi.h
-index e4f515773..b69f47d2f 100644
---- a/include/capi/views/cef_window_capi.h
-+++ b/include/capi/views/cef_window_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=ba3a92d4e09b2f728b330a822669c64ddff1f9d6$
-+// $hash=3582ae824b19ee8d1c56a527a5dff472e64804a6$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_WINDOW_CAPI_H_
-@@ -334,6 +334,49 @@ typedef struct _cef_window_t {
- /// Remove all keyboard accelerators.
- ///
- void(CEF_CALLBACK* remove_all_accelerators)(struct _cef_window_t* self);
-+
-+ ///
-+ /// Tells the agl compositor to activate the app
-+ ///
-+ void(CEF_CALLBACK* agl_activate_app)(struct _cef_window_t* self,
-+ const cef_string_t* app);
-+
-+ ///
-+ /// Tells the agl compositor the application id
-+ ///
-+ void(CEF_CALLBACK* agl_set_app_id)(struct _cef_window_t* self,
-+ const cef_string_t* app_id);
-+
-+ ///
-+ /// Tells the agl compositor that everything is set-up and good to go
-+ ///
-+ void(CEF_CALLBACK* agl_set_app_ready)(struct _cef_window_t* self);
-+
-+ ///
-+ /// Tells the agl compositor that the app is the background application
-+ ///
-+ void(CEF_CALLBACK* agl_set_back_ground_app)(struct _cef_window_t* self);
-+
-+ ///
-+ /// Tells the agl compositor that the app is a panel
-+ ///
-+ void(CEF_CALLBACK* agl_set_panel_app)(struct _cef_window_t* self,
-+ uint32_t edge);
-+
-+ ///
-+ /// Tells if the window wayland surface is configured
-+ ///
-+ int(CEF_CALLBACK* is_surface_configured)(struct _cef_window_t* self);
-+
-+ ///
-+ /// A hint for the compositor to use a custom area, rather than inferring the
-+ /// activation area.
-+ ///
-+ void(CEF_CALLBACK* setup_activation_area)(struct _cef_window_t* self,
-+ uint32_t x,
-+ uint32_t y,
-+ uint32_t width,
-+ uint32_t height);
- } cef_window_t;
-
- ///
-@@ -342,6 +385,13 @@ typedef struct _cef_window_t {
- CEF_EXPORT cef_window_t* cef_window_create_top_level(
- struct _cef_window_delegate_t* delegate);
-
-+///
-+/// Create a new Window with the provided ID
-+///
-+CEF_EXPORT cef_window_t* cef_window_create_top_level_with_id(
-+ struct _cef_window_delegate_t* delegate,
-+ const cef_string_t* app_id);
-+
- #ifdef __cplusplus
- }
- #endif
-diff --git a/include/capi/views/cef_window_delegate_capi.h b/include/capi/views/cef_window_delegate_capi.h
-index a74f9e910..e23c097cb 100644
---- a/include/capi/views/cef_window_delegate_capi.h
-+++ b/include/capi/views/cef_window_delegate_capi.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -33,7 +33,7 @@
- // by hand. See the translator.README.txt file in the tools directory for
- // more information.
- //
--// $hash=e1657ed68132b846ad638dc87bc5ee9b9c10f014$
-+// $hash=019abf16be4e151d31181a6bdcb1ad8dfef03d00$
- //
-
- #ifndef CEF_INCLUDE_CAPI_VIEWS_CEF_WINDOW_DELEGATE_CAPI_H_
-diff --git a/include/cef_api_hash.h b/include/cef_api_hash.h
-index 47c6a7212..07f19c47a 100644
---- a/include/cef_api_hash.h
-+++ b/include/cef_api_hash.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 Marshall A. Greenblatt. All rights reserved.
-+// Copyright (c) 2023 Marshall A. Greenblatt. All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
-@@ -42,13 +42,13 @@
- // way that may cause binary incompatibility with other builds. The universal
- // hash value will change if any platform is affected whereas the platform hash
- // values will change only if that particular platform is affected.
--#define CEF_API_HASH_UNIVERSAL "e92cde673e73851d8841e2f3c4f38bcd0f6ed2bb"
-+#define CEF_API_HASH_UNIVERSAL "3ae58e0ac999d1e3568659c3dc1726a69ff9c0e6"
- #if defined(OS_WIN)
--#define CEF_API_HASH_PLATFORM "162bfdae56cbfd7f76fd4178be019f0dba512c40"
-+#define CEF_API_HASH_PLATFORM "3c150cc7af73ac9579681eb25a037ed70a38922e"
- #elif defined(OS_MAC)
--#define CEF_API_HASH_PLATFORM "31c5680dbc8d80fffc14214dd1ce4126a08e38d3"
-+#define CEF_API_HASH_PLATFORM "79eb6d51d75ffe64614249cb3096c4edc2dcd7d0"
- #elif defined(OS_LINUX)
--#define CEF_API_HASH_PLATFORM "9682b2251f9973ee9eee0940eb9c773e522c2975"
-+#define CEF_API_HASH_PLATFORM "d95070e146608d518fd0152fec6b9e78fb8236a1"
- #endif
-
- #ifdef __cplusplus
-diff --git a/libcef_dll/cpptoc/views/window_cpptoc.cc b/libcef_dll/cpptoc/views/window_cpptoc.cc
-index fc175de23..4b71b6848 100644
---- a/libcef_dll/cpptoc/views/window_cpptoc.cc
-+++ b/libcef_dll/cpptoc/views/window_cpptoc.cc
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights
-+// Copyright (c) 2023 The Chromium Embedded Framework Authors. All rights
- // reserved. Use of this source code is governed by a BSD-style license that
- // can be found in the LICENSE file.
- //
-@@ -9,7 +9,7 @@
- // implementations. See the translator.README.txt file in the tools directory
- // for more information.
- //
--// $hash=32506537b2118f2d16285dc09174ae721447adc2$
-+// $hash=1d1f538674280357dedd3f8e57854235fd4391ce$
- //
-
- #include "libcef_dll/cpptoc/views/window_cpptoc.h"
-@@ -48,6 +48,30 @@ CEF_EXPORT cef_window_t* cef_window_create_top_level(
- return CefWindowCppToC::Wrap(_retval);
- }
-
-+CEF_EXPORT cef_window_t* cef_window_create_top_level_with_id(
-+ struct _cef_window_delegate_t* delegate,
-+ const cef_string_t* app_id) {
-+ shutdown_checker::AssertNotShutdown();
-+
-+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-+
-+ // Verify param: delegate; type: refptr_diff
-+ DCHECK(delegate);
-+ if (!delegate)
-+ return NULL;
-+ // Verify param: app_id; type: string_byref_const
-+ DCHECK(app_id);
-+ if (!app_id)
-+ return NULL;
-+
-+ // Execute
-+ CefRefPtr<CefWindow> _retval = CefWindow::CreateTopLevelWindowWithId(
-+ CefWindowDelegateCToCpp::Wrap(delegate), CefString(app_id));
-+
-+ // Return type: refptr_same
-+ return CefWindowCppToC::Wrap(_retval);
-+}
-+
- namespace {
-
- // MEMBER FUNCTIONS - Body may be edited by hand.
-@@ -652,6 +676,115 @@ void CEF_CALLBACK window_remove_all_accelerators(struct _cef_window_t* self) {
- CefWindowCppToC::Get(self)->RemoveAllAccelerators();
- }
-
-+void CEF_CALLBACK window_agl_activate_app(struct _cef_window_t* self,
-+ const cef_string_t* app) {
-+ shutdown_checker::AssertNotShutdown();
-+
-+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-+
-+ DCHECK(self);
-+ if (!self)
-+ return;
-+ // Verify param: app; type: string_byref_const
-+ DCHECK(app);
-+ if (!app)
-+ return;
-+
-+ // Execute
-+ CefWindowCppToC::Get(self)->AglActivateApp(CefString(app));
-+}
-+
-+void CEF_CALLBACK window_agl_set_app_id(struct _cef_window_t* self,
-+ const cef_string_t* app_id) {
-+ shutdown_checker::AssertNotShutdown();
-+
-+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-+
-+ DCHECK(self);
-+ if (!self)
-+ return;
-+ // Verify param: app_id; type: string_byref_const
-+ DCHECK(app_id);
-+ if (!app_id)
-+ return;
-+
-+ // Execute
-+ CefWindowCppToC::Get(self)->AglSetAppId(CefString(app_id));
-+}
-+
-+void CEF_CALLBACK window_agl_set_app_ready(struct _cef_window_t* self) {
-+ shutdown_checker::AssertNotShutdown();
-+
-+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-+
-+ DCHECK(self);
-+ if (!self)
-+ return;
-+
-+ // Execute
-+ CefWindowCppToC::Get(self)->AglSetAppReady();
-+}
-+
-+void CEF_CALLBACK window_agl_set_back_ground_app(struct _cef_window_t* self) {
-+ shutdown_checker::AssertNotShutdown();
-+
-+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-+
-+ DCHECK(self);
-+ if (!self)
-+ return;
-+
-+ // Execute
-+ CefWindowCppToC::Get(self)->AglSetBackGroundApp();
-+}
-+
-+void CEF_CALLBACK window_agl_set_panel_app(struct _cef_window_t* self,
-+ uint32_t edge) {
-+ shutdown_checker::AssertNotShutdown();
-+
-+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-+
-+ DCHECK(self);
-+ if (!self)
-+ return;
-+
-+ // Execute
-+ CefWindowCppToC::Get(self)->AglSetPanelApp(edge);
-+}
-+
-+int CEF_CALLBACK window_is_surface_configured(struct _cef_window_t* self) {
-+ shutdown_checker::AssertNotShutdown();
-+
-+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-+
-+ DCHECK(self);
-+ if (!self)
-+ return 0;
-+
-+ // Execute
-+ bool _retval = CefWindowCppToC::Get(self)->IsSurfaceConfigured();
-+
-+ // Return type: bool
-+ return _retval;
-+}
-+
-+void CEF_CALLBACK window_setup_activation_area(struct _cef_window_t* self,
-+ uint32_t x,
-+ uint32_t y,
-+ uint32_t width,
-+ uint32_t height) {
-+ shutdown_checker::AssertNotShutdown();
-+
-+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-+
-+ DCHECK(self);
-+ if (!self)
-+ return;
-+
-+ // Execute
-+ CefWindowCppToC::Get(self)->SetupActivationArea(x, y, width, height);
-+}
-+
- struct _cef_window_t* CEF_CALLBACK window_as_window(struct _cef_panel_t* self) {
- shutdown_checker::AssertNotShutdown();
-
-@@ -1876,6 +2009,13 @@ CefWindowCppToC::CefWindowCppToC() {
- GetStruct()->set_accelerator = window_set_accelerator;
- GetStruct()->remove_accelerator = window_remove_accelerator;
- GetStruct()->remove_all_accelerators = window_remove_all_accelerators;
-+ GetStruct()->agl_activate_app = window_agl_activate_app;
-+ GetStruct()->agl_set_app_id = window_agl_set_app_id;
-+ GetStruct()->agl_set_app_ready = window_agl_set_app_ready;
-+ GetStruct()->agl_set_back_ground_app = window_agl_set_back_ground_app;
-+ GetStruct()->agl_set_panel_app = window_agl_set_panel_app;
-+ GetStruct()->is_surface_configured = window_is_surface_configured;
-+ GetStruct()->setup_activation_area = window_setup_activation_area;
- GetStruct()->base.as_window = window_as_window;
- GetStruct()->base.set_to_fill_layout = window_set_to_fill_layout;
- GetStruct()->base.set_to_box_layout = window_set_to_box_layout;
-diff --git a/libcef_dll/cpptoc/views/window_cpptoc.h b/libcef_dll/cpptoc/views/window_cpptoc.h
-index de348f70d..e02be4494 100644
---- a/libcef_dll/cpptoc/views/window_cpptoc.h
-+++ b/libcef_dll/cpptoc/views/window_cpptoc.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights
-+// Copyright (c) 2023 The Chromium Embedded Framework Authors. All rights
- // reserved. Use of this source code is governed by a BSD-style license that
- // can be found in the LICENSE file.
- //
-@@ -9,7 +9,7 @@
- // implementations. See the translator.README.txt file in the tools directory
- // for more information.
- //
--// $hash=5b14236c7e00a7dafa47fdc32ce78d347de477a1$
-+// $hash=12ff3d7d14f9977ff1f62e9a35b04b153a135480$
- //
-
- #ifndef CEF_LIBCEF_DLL_CPPTOC_VIEWS_WINDOW_CPPTOC_H_
-diff --git a/libcef_dll/ctocpp/views/window_ctocpp.cc b/libcef_dll/ctocpp/views/window_ctocpp.cc
-index 145fa125d..718089e21 100644
---- a/libcef_dll/ctocpp/views/window_ctocpp.cc
-+++ b/libcef_dll/ctocpp/views/window_ctocpp.cc
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights
-+// Copyright (c) 2023 The Chromium Embedded Framework Authors. All rights
- // reserved. Use of this source code is governed by a BSD-style license that
- // can be found in the LICENSE file.
- //
-@@ -9,7 +9,7 @@
- // implementations. See the translator.README.txt file in the tools directory
- // for more information.
- //
--// $hash=a71d84e671749331e5ad99c84ef790f09613b145$
-+// $hash=b94adc237573ebd64f88bbc85aa95810e8efa891$
- //
-
- #include "libcef_dll/ctocpp/views/window_ctocpp.h"
-@@ -49,6 +49,31 @@ CefRefPtr<CefWindow> CefWindow::CreateTopLevelWindow(
- return CefWindowCToCpp::Wrap(_retval);
- }
-
-+NO_SANITIZE("cfi-icall")
-+CefRefPtr<CefWindow> CefWindow::CreateTopLevelWindowWithId(
-+ CefRefPtr<CefWindowDelegate> delegate,
-+ const CefString& app_id) {
-+ shutdown_checker::AssertNotShutdown();
-+
-+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-+
-+ // Verify param: delegate; type: refptr_diff
-+ DCHECK(delegate.get());
-+ if (!delegate.get())
-+ return nullptr;
-+ // Verify param: app_id; type: string_byref_const
-+ DCHECK(!app_id.empty());
-+ if (app_id.empty())
-+ return nullptr;
-+
-+ // Execute
-+ cef_window_t* _retval = cef_window_create_top_level_with_id(
-+ CefWindowDelegateCppToC::Wrap(delegate), app_id.GetStruct());
-+
-+ // Return type: refptr_same
-+ return CefWindowCToCpp::Wrap(_retval);
-+}
-+
- // VIRTUAL METHODS - Body may be edited by hand.
-
- NO_SANITIZE("cfi-icall") void CefWindowCToCpp::Show() {
-@@ -642,6 +667,116 @@ NO_SANITIZE("cfi-icall") void CefWindowCToCpp::RemoveAllAccelerators() {
- _struct->remove_all_accelerators(_struct);
- }
-
-+NO_SANITIZE("cfi-icall")
-+void CefWindowCToCpp::AglActivateApp(const CefString& app) {
-+ shutdown_checker::AssertNotShutdown();
-+
-+ cef_window_t* _struct = GetStruct();
-+ if (CEF_MEMBER_MISSING(_struct, agl_activate_app))
-+ return;
-+
-+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-+
-+ // Verify param: app; type: string_byref_const
-+ DCHECK(!app.empty());
-+ if (app.empty())
-+ return;
-+
-+ // Execute
-+ _struct->agl_activate_app(_struct, app.GetStruct());
-+}
-+
-+NO_SANITIZE("cfi-icall")
-+void CefWindowCToCpp::AglSetAppId(const CefString& app_id) {
-+ shutdown_checker::AssertNotShutdown();
-+
-+ cef_window_t* _struct = GetStruct();
-+ if (CEF_MEMBER_MISSING(_struct, agl_set_app_id))
-+ return;
-+
-+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-+
-+ // Verify param: app_id; type: string_byref_const
-+ DCHECK(!app_id.empty());
-+ if (app_id.empty())
-+ return;
-+
-+ // Execute
-+ _struct->agl_set_app_id(_struct, app_id.GetStruct());
-+}
-+
-+NO_SANITIZE("cfi-icall") void CefWindowCToCpp::AglSetAppReady() {
-+ shutdown_checker::AssertNotShutdown();
-+
-+ cef_window_t* _struct = GetStruct();
-+ if (CEF_MEMBER_MISSING(_struct, agl_set_app_ready))
-+ return;
-+
-+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-+
-+ // Execute
-+ _struct->agl_set_app_ready(_struct);
-+}
-+
-+NO_SANITIZE("cfi-icall") void CefWindowCToCpp::AglSetBackGroundApp() {
-+ shutdown_checker::AssertNotShutdown();
-+
-+ cef_window_t* _struct = GetStruct();
-+ if (CEF_MEMBER_MISSING(_struct, agl_set_back_ground_app))
-+ return;
-+
-+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-+
-+ // Execute
-+ _struct->agl_set_back_ground_app(_struct);
-+}
-+
-+NO_SANITIZE("cfi-icall") void CefWindowCToCpp::AglSetPanelApp(uint32_t edge) {
-+ shutdown_checker::AssertNotShutdown();
-+
-+ cef_window_t* _struct = GetStruct();
-+ if (CEF_MEMBER_MISSING(_struct, agl_set_panel_app))
-+ return;
-+
-+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-+
-+ // Execute
-+ _struct->agl_set_panel_app(_struct, edge);
-+}
-+
-+NO_SANITIZE("cfi-icall") bool CefWindowCToCpp::IsSurfaceConfigured() {
-+ shutdown_checker::AssertNotShutdown();
-+
-+ cef_window_t* _struct = GetStruct();
-+ if (CEF_MEMBER_MISSING(_struct, is_surface_configured))
-+ return false;
-+
-+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-+
-+ // Execute
-+ int _retval = _struct->is_surface_configured(_struct);
-+
-+ // Return type: bool
-+ return _retval ? true : false;
-+}
-+
-+NO_SANITIZE("cfi-icall")
-+void CefWindowCToCpp::SetupActivationArea(uint32_t x,
-+ uint32_t y,
-+ uint32_t width,
-+ uint32_t height) {
-+ shutdown_checker::AssertNotShutdown();
-+
-+ cef_window_t* _struct = GetStruct();
-+ if (CEF_MEMBER_MISSING(_struct, setup_activation_area))
-+ return;
-+
-+ // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-+
-+ // Execute
-+ _struct->setup_activation_area(_struct, x, y, width, height);
-+}
-+
- NO_SANITIZE("cfi-icall") CefRefPtr<CefWindow> CefWindowCToCpp::AsWindow() {
- shutdown_checker::AssertNotShutdown();
-
-diff --git a/libcef_dll/ctocpp/views/window_ctocpp.h b/libcef_dll/ctocpp/views/window_ctocpp.h
-index dfdc0c686..160e541e5 100644
---- a/libcef_dll/ctocpp/views/window_ctocpp.h
-+++ b/libcef_dll/ctocpp/views/window_ctocpp.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights
-+// Copyright (c) 2023 The Chromium Embedded Framework Authors. All rights
- // reserved. Use of this source code is governed by a BSD-style license that
- // can be found in the LICENSE file.
- //
-@@ -9,7 +9,7 @@
- // implementations. See the translator.README.txt file in the tools directory
- // for more information.
- //
--// $hash=5afd032b23745d114bc95d45139cf5d92a82f89a$
-+// $hash=1162283afe7d77f108ab6a4dee7ce58a2222b0fb$
- //
-
- #ifndef CEF_LIBCEF_DLL_CTOCPP_VIEWS_WINDOW_CTOCPP_H_
-@@ -82,6 +82,16 @@ class CefWindowCToCpp
- bool alt_pressed) override;
- void RemoveAccelerator(int command_id) override;
- void RemoveAllAccelerators() override;
-+ void AglActivateApp(const CefString& app) override;
-+ void AglSetAppId(const CefString& app_id) override;
-+ void AglSetAppReady() override;
-+ void AglSetBackGroundApp() override;
-+ void AglSetPanelApp(uint32_t edge) override;
-+ bool IsSurfaceConfigured() override;
-+ void SetupActivationArea(uint32_t x,
-+ uint32_t y,
-+ uint32_t width,
-+ uint32_t height) override;
-
- // CefPanel methods.
- CefRefPtr<CefWindow> AsWindow() override;
-diff --git a/libcef_dll/libcef_dll.cc b/libcef_dll/libcef_dll.cc
-index c3d5f2b5d..563f597fd 100644
---- a/libcef_dll/libcef_dll.cc
-+++ b/libcef_dll/libcef_dll.cc
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights
-+// Copyright (c) 2023 The Chromium Embedded Framework Authors. All rights
- // reserved. Use of this source code is governed by a BSD-style license that
- // can be found in the LICENSE file.
- //
-@@ -9,7 +9,7 @@
- // implementations. See the translator.README.txt file in the tools directory
- // for more information.
- //
--// $hash=6bc0085b04e78068511eb7198a3f9bda103adc85$
-+// $hash=60eb166db44900db1e9270d781e83b06544a1a3e$
- //
-
- #include "include/capi/cef_app_capi.h"
-diff --git a/libcef_dll/wrapper/libcef_dll_dylib.cc b/libcef_dll/wrapper/libcef_dll_dylib.cc
-index 295b3514e..6e57f2859 100644
---- a/libcef_dll/wrapper/libcef_dll_dylib.cc
-+++ b/libcef_dll/wrapper/libcef_dll_dylib.cc
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights
-+// Copyright (c) 2023 The Chromium Embedded Framework Authors. All rights
- // reserved. Use of this source code is governed by a BSD-style license that
- // can be found in the LICENSE file.
- //
-@@ -9,7 +9,7 @@
- // implementations. See the translator.README.txt file in the tools directory
- // for more information.
- //
--// $hash=aa091bc741fcefee760906fce4c8f86937dd74ca$
-+// $hash=637b28567ccfd4b89ed18bdf77fa81d4a8206173$
- //
-
- #include <dlfcn.h>
-@@ -249,6 +249,8 @@ struct libcef_pointers {
- decltype(&cef_scroll_view_create) cef_scroll_view_create;
- decltype(&cef_textfield_create) cef_textfield_create;
- decltype(&cef_window_create_top_level) cef_window_create_top_level;
-+ decltype(&cef_window_create_top_level_with_id)
-+ cef_window_create_top_level_with_id;
- decltype(&cef_api_hash) cef_api_hash;
- decltype(&cef_version_info) cef_version_info;
- decltype(&cef_get_min_log_level) cef_get_min_log_level;
-@@ -463,6 +465,7 @@ int libcef_init_pointers(const char* path) {
- INIT_ENTRY(cef_scroll_view_create);
- INIT_ENTRY(cef_textfield_create);
- INIT_ENTRY(cef_window_create_top_level);
-+ INIT_ENTRY(cef_window_create_top_level_with_id);
- INIT_ENTRY(cef_api_hash);
- INIT_ENTRY(cef_version_info);
- INIT_ENTRY(cef_get_min_log_level);
-@@ -704,8 +707,8 @@ int cef_create_url(const struct _cef_urlparts_t* parts, cef_string_t* url) {
- }
-
- NO_SANITIZE("cfi-icall")
--cef_string_userfree_t cef_format_url_for_security_display(
-- const cef_string_t* origin_url) {
-+cef_string_userfree_t
-+ cef_format_url_for_security_display(const cef_string_t* origin_url) {
- return g_libcef_pointers.cef_format_url_for_security_display(origin_url);
- }
-
-@@ -977,9 +980,10 @@ void cef_server_create(const cef_string_t* address,
- }
-
- NO_SANITIZE("cfi-icall")
--struct _cef_shared_process_message_builder_t*
--cef_shared_process_message_builder_create(const cef_string_t* name,
-- size_t byte_size) {
-+struct
-+ _cef_shared_process_message_builder_t* cef_shared_process_message_builder_create(
-+ const cef_string_t* name,
-+ size_t byte_size) {
- return g_libcef_pointers.cef_shared_process_message_builder_create(name,
- byte_size);
- }
-@@ -1191,46 +1195,54 @@ struct _cef_translator_test_t* cef_translator_test_create() {
- }
-
- NO_SANITIZE("cfi-icall")
--struct _cef_translator_test_ref_ptr_library_t*
--cef_translator_test_ref_ptr_library_create(int value) {
-+struct
-+ _cef_translator_test_ref_ptr_library_t* cef_translator_test_ref_ptr_library_create(
-+ int value) {
- return g_libcef_pointers.cef_translator_test_ref_ptr_library_create(value);
- }
-
- NO_SANITIZE("cfi-icall")
--struct _cef_translator_test_ref_ptr_library_child_t*
--cef_translator_test_ref_ptr_library_child_create(int value, int other_value) {
-+struct
-+ _cef_translator_test_ref_ptr_library_child_t* cef_translator_test_ref_ptr_library_child_create(
-+ int value,
-+ int other_value) {
- return g_libcef_pointers.cef_translator_test_ref_ptr_library_child_create(
- value, other_value);
- }
-
- NO_SANITIZE("cfi-icall")
--struct _cef_translator_test_ref_ptr_library_child_child_t*
--cef_translator_test_ref_ptr_library_child_child_create(int value,
-- int other_value,
-- int other_other_value) {
-+struct
-+ _cef_translator_test_ref_ptr_library_child_child_t* cef_translator_test_ref_ptr_library_child_child_create(
-+ int value,
-+ int other_value,
-+ int other_other_value) {
- return g_libcef_pointers
- .cef_translator_test_ref_ptr_library_child_child_create(
- value, other_value, other_other_value);
- }
-
- NO_SANITIZE("cfi-icall")
--struct _cef_translator_test_scoped_library_t*
--cef_translator_test_scoped_library_create(int value) {
-+struct
-+ _cef_translator_test_scoped_library_t* cef_translator_test_scoped_library_create(
-+ int value) {
- return g_libcef_pointers.cef_translator_test_scoped_library_create(value);
- }
-
- NO_SANITIZE("cfi-icall")
--struct _cef_translator_test_scoped_library_child_t*
--cef_translator_test_scoped_library_child_create(int value, int other_value) {
-+struct
-+ _cef_translator_test_scoped_library_child_t* cef_translator_test_scoped_library_child_create(
-+ int value,
-+ int other_value) {
- return g_libcef_pointers.cef_translator_test_scoped_library_child_create(
- value, other_value);
- }
-
- NO_SANITIZE("cfi-icall")
--struct _cef_translator_test_scoped_library_child_child_t*
--cef_translator_test_scoped_library_child_child_create(int value,
-- int other_value,
-- int other_other_value) {
-+struct
-+ _cef_translator_test_scoped_library_child_child_t* cef_translator_test_scoped_library_child_child_create(
-+ int value,
-+ int other_value,
-+ int other_other_value) {
- return g_libcef_pointers
- .cef_translator_test_scoped_library_child_child_create(value, other_value,
- other_other_value);
-@@ -1283,14 +1295,14 @@ void cef_display_get_alls(size_t* displaysCount,
- }
-
- NO_SANITIZE("cfi-icall")
--cef_point_t cef_display_convert_screen_point_to_pixels(
-- const cef_point_t* point) {
-+cef_point_t
-+ cef_display_convert_screen_point_to_pixels(const cef_point_t* point) {
- return g_libcef_pointers.cef_display_convert_screen_point_to_pixels(point);
- }
-
- NO_SANITIZE("cfi-icall")
--cef_point_t cef_display_convert_screen_point_from_pixels(
-- const cef_point_t* point) {
-+cef_point_t
-+ cef_display_convert_screen_point_from_pixels(const cef_point_t* point) {
- return g_libcef_pointers.cef_display_convert_screen_point_from_pixels(point);
- }
-
-@@ -1341,6 +1353,14 @@ struct _cef_window_t* cef_window_create_top_level(
- return g_libcef_pointers.cef_window_create_top_level(delegate);
- }
-
-+NO_SANITIZE("cfi-icall")
-+struct _cef_window_t* cef_window_create_top_level_with_id(
-+ struct _cef_window_delegate_t* delegate,
-+ const cef_string_t* app_id) {
-+ return g_libcef_pointers.cef_window_create_top_level_with_id(delegate,
-+ app_id);
-+}
-+
- NO_SANITIZE("cfi-icall") const char* cef_api_hash(int entry) {
- return g_libcef_pointers.cef_api_hash(entry);
- }
-diff --git a/libcef_dll/wrapper/libcef_dll_wrapper.cc b/libcef_dll/wrapper/libcef_dll_wrapper.cc
-index eec632f7f..0f119ff76 100644
---- a/libcef_dll/wrapper/libcef_dll_wrapper.cc
-+++ b/libcef_dll/wrapper/libcef_dll_wrapper.cc
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights
-+// Copyright (c) 2023 The Chromium Embedded Framework Authors. All rights
- // reserved. Use of this source code is governed by a BSD-style license that
- // can be found in the LICENSE file.
- //
-@@ -9,7 +9,7 @@
- // implementations. See the translator.README.txt file in the tools directory
- // for more information.
- //
--// $hash=24d0396cbcb6e2af587c1126c899277d4ac0b4d2$
-+// $hash=d5a08cdf0fed1ce8d92526cd0423706f3385d098$
- //
-
- #include "include/capi/cef_app_capi.h"
-@@ -150,7 +150,7 @@ NO_SANITIZE("cfi-icall") CEF_GLOBAL bool CefCrashReportingEnabled() {
-
- NO_SANITIZE("cfi-icall")
- CEF_GLOBAL
--void CefSetCrashKeyValue(const CefString& key, const CefString& value) {
-+ void CefSetCrashKeyValue(const CefString& key, const CefString& value) {
- // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-
- // Verify param: key; type: string_byref_const
-@@ -305,10 +305,10 @@ NO_SANITIZE("cfi-icall") CEF_GLOBAL bool CefIsRTL() {
-
- NO_SANITIZE("cfi-icall")
- CEF_GLOBAL
--bool CefAddCrossOriginWhitelistEntry(const CefString& source_origin,
-- const CefString& target_protocol,
-- const CefString& target_domain,
-- bool allow_target_subdomains) {
-+ bool CefAddCrossOriginWhitelistEntry(const CefString& source_origin,
-+ const CefString& target_protocol,
-+ const CefString& target_domain,
-+ bool allow_target_subdomains) {
- // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-
- // Verify param: source_origin; type: string_byref_const
-@@ -332,10 +332,10 @@ bool CefAddCrossOriginWhitelistEntry(const CefString& source_origin,
-
- NO_SANITIZE("cfi-icall")
- CEF_GLOBAL
--bool CefRemoveCrossOriginWhitelistEntry(const CefString& source_origin,
-- const CefString& target_protocol,
-- const CefString& target_domain,
-- bool allow_target_subdomains) {
-+ bool CefRemoveCrossOriginWhitelistEntry(const CefString& source_origin,
-+ const CefString& target_protocol,
-+ const CefString& target_domain,
-+ bool allow_target_subdomains) {
- // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-
- // Verify param: source_origin; type: string_byref_const
-@@ -419,7 +419,7 @@ CEF_GLOBAL bool CefCreateURL(const CefURLParts& parts, CefString& url) {
-
- NO_SANITIZE("cfi-icall")
- CEF_GLOBAL CefString
--CefFormatUrlForSecurityDisplay(const CefString& origin_url) {
-+ CefFormatUrlForSecurityDisplay(const CefString& origin_url) {
- // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-
- // Verify param: origin_url; type: string_byref_const
-@@ -457,8 +457,8 @@ CEF_GLOBAL CefString CefGetMimeType(const CefString& extension) {
-
- NO_SANITIZE("cfi-icall")
- CEF_GLOBAL
--void CefGetExtensionsForMimeType(const CefString& mime_type,
-- std::vector<CefString>& extensions) {
-+ void CefGetExtensionsForMimeType(const CefString& mime_type,
-+ std::vector<CefString>& extensions) {
- // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-
- // Verify param: mime_type; type: string_byref_const
-@@ -612,8 +612,8 @@ CEF_GLOBAL CefRefPtr<CefValue> CefParseJSONAndReturnError(
- }
-
- NO_SANITIZE("cfi-icall")
--CEF_GLOBAL CefString CefWriteJSON(CefRefPtr<CefValue> node,
-- cef_json_writer_options_t options) {
-+CEF_GLOBAL CefString
-+ CefWriteJSON(CefRefPtr<CefValue> node, cef_json_writer_options_t options) {
- // AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
-
- // Verify param: node; type: refptr_same
-diff --git a/libcef_dll/wrapper_types.h b/libcef_dll/wrapper_types.h
-index 1157bfd1c..eddb3ec90 100644
---- a/libcef_dll/wrapper_types.h
-+++ b/libcef_dll/wrapper_types.h
-@@ -1,4 +1,4 @@
--// Copyright (c) 2022 The Chromium Embedded Framework Authors. All rights
-+// Copyright (c) 2023 The Chromium Embedded Framework Authors. All rights
- // reserved. Use of this source code is governed by a BSD-style license that
- // can be found in the LICENSE file.
- //
-@@ -9,7 +9,7 @@
- // implementations. See the translator.README.txt file in the tools directory
- // for more information.
- //
--// $hash=e8bf5997bf7a4e77f39247068da48b539ef838b0$
-+// $hash=220cf66311a9b87b0edfadf9617138d7cf3273f8$
- //
-
- #ifndef CEF_LIBCEF_DLL_WRAPPER_TYPES_H_
---
-2.39.2
-
diff --git a/recipes-wam/cef/files/cef/0011-Avoid-the-RuntimeError-dictionary-changed-size-durin.patch b/recipes-wam/cef/files/cef/0011-Avoid-the-RuntimeError-dictionary-changed-size-durin.patch
new file mode 100644
index 000000000..32527b798
--- /dev/null
+++ b/recipes-wam/cef/files/cef/0011-Avoid-the-RuntimeError-dictionary-changed-size-durin.patch
@@ -0,0 +1,26 @@
+From db006bee47fd4cd5f9138a0b916b81dff9bab3d0 Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Wed, 8 Nov 2023 13:37:27 -0300
+Subject: [PATCH 11/11] Avoid the RuntimeError: dictionary changed size during
+ iteration
+
+---
+ tools/gn_args.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/gn_args.py b/tools/gn_args.py
+index 80545da49..9e2e9c061 100644
+--- a/tools/gn_args.py
++++ b/tools/gn_args.py
+@@ -486,7 +486,7 @@ def GetConfigArgs(args, is_debug, cpu, bypass_sysroot_check=False):
+
+ if platform == 'linux' and not cpu.startswith('arm'):
+ # Remove any arm-related values from non-arm configs.
+- for key in result.keys():
++ for key, value in list(result.items()):
+ if key.startswith('arm_'):
+ del result[key]
+
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0005-Add-the-essential-parts-of-wayland-extensions-and-ag.patch b/recipes-wam/cef/files/chromium/0001-agl-compositor-Add-agl_shell_wrapper-AGL-wayland-ext.patch
index fea8c04ac..6ab4d5b82 100644
--- a/recipes-wam/cef/files/chromium/0005-Add-the-essential-parts-of-wayland-extensions-and-ag.patch
+++ b/recipes-wam/cef/files/chromium/0001-agl-compositor-Add-agl_shell_wrapper-AGL-wayland-ext.patch
@@ -1,9 +1,13 @@
-From 7e927a21ecaa70c14873d5f06667dfc3bdaa4d25 Mon Sep 17 00:00:00 2001
+From 019d5dea79b9ac8ec17d5925546aab66473f67f5 Mon Sep 17 00:00:00 2001
From: Roger Zanoni <rzanoni@igalia.com>
Date: Mon, 15 May 2023 20:32:06 +0200
-Subject: [PATCH 5/9] Add the essential parts of wayland extensions and
- agl_shell
+Subject: [PATCH 01/33] [agl][compositor] Add agl_shell_wrapper / AGL wayland
+ extension
+This is a backport of the chages we did on top of chromium webosose to
+be able to communicate with the agl-compositor
+
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
---
ui/base/ui_base_switches.cc | 2 +
ui/base/ui_base_switches.h | 3 +
@@ -18,9 +22,9 @@ Subject: [PATCH 5/9] Add the essential parts of wayland extensions and
.../agl/host/wayland_extensions_agl_impl.h | 54 ++++++
.../extensions/agl/protocol/agl-shell.xml | 179 ++++++++++++++++++
.../wayland/host/wayland_connection.cc | 12 +-
- .../wayland/host/wayland_connection.h | 6 +
+ .../wayland/host/wayland_connection.h | 4 +
.../wayland/host/wayland_extensions.h | 56 ++++++
- 15 files changed, 722 insertions(+), 2 deletions(-)
+ 15 files changed, 720 insertions(+), 2 deletions(-)
create mode 100644 ui/ozone/platform/wayland/extensions/agl/BUILD.gn
create mode 100644 ui/ozone/platform/wayland/extensions/agl/common/wayland_object_agl.cc
create mode 100644 ui/ozone/platform/wayland/extensions/agl/common/wayland_object_agl.h
@@ -33,10 +37,10 @@ Subject: [PATCH 5/9] Add the essential parts of wayland extensions and
create mode 100644 ui/ozone/platform/wayland/host/wayland_extensions.h
diff --git a/ui/base/ui_base_switches.cc b/ui/base/ui_base_switches.cc
-index f8556679a79d8..e72ae83737c04 100644
+index 514bb3cdb580d..d94e2c5e78306 100644
--- a/ui/base/ui_base_switches.cc
+++ b/ui/base/ui_base_switches.cc
-@@ -100,4 +100,6 @@ const char kUIDisablePartialSwap[] = "ui-disable-partial-swap";
+@@ -112,4 +112,6 @@ const char kUIDisablePartialSwap[] = "ui-disable-partial-swap";
// Enables the ozone x11 clipboard for linux-chromeos.
const char kUseSystemClipboard[] = "use-system-clipboard";
@@ -44,10 +48,10 @@ index f8556679a79d8..e72ae83737c04 100644
+
} // namespace switches
diff --git a/ui/base/ui_base_switches.h b/ui/base/ui_base_switches.h
-index d35e544f2bc2f..019ba0e5151e5 100644
+index ec664b866c5d2..cf483e0339072 100644
--- a/ui/base/ui_base_switches.h
+++ b/ui/base/ui_base_switches.h
-@@ -45,6 +45,9 @@ COMPONENT_EXPORT(UI_BASE) extern const char kTopChromeTouchUiEnabled[];
+@@ -53,6 +53,9 @@ COMPONENT_EXPORT(UI_BASE) extern const char kTopChromeTouchUiEnabled[];
COMPONENT_EXPORT(UI_BASE) extern const char kUIDisablePartialSwap[];
COMPONENT_EXPORT(UI_BASE) extern const char kUseSystemClipboard[];
@@ -58,23 +62,23 @@ index d35e544f2bc2f..019ba0e5151e5 100644
COMPONENT_EXPORT(UI_BASE) extern const char kDisallowNonExactResourceReuse[];
COMPONENT_EXPORT(UI_BASE) extern const char kMangleLocalizedStrings[];
diff --git a/ui/ozone/platform/wayland/BUILD.gn b/ui/ozone/platform/wayland/BUILD.gn
-index e0f0d7dea3747..1a2f889dc8947 100644
+index ae763d441d55c..8a436de0fafe3 100644
--- a/ui/ozone/platform/wayland/BUILD.gn
+++ b/ui/ozone/platform/wayland/BUILD.gn
-@@ -407,6 +407,13 @@ source_set("wayland") {
- ]
- }
+@@ -397,6 +397,13 @@ source_set("wayland") {
+ ]
+ configs += [ "//third_party/khronos:khronos_headers" ]
++
+ sources += [
+ "host/wayland_extensions.h",
+ "host/wayland_extensions_stub.cc",
+ ]
+
+ deps += [ "extensions/agl" ]
-+
- configs += [ "//third_party/khronos:khronos_headers" ]
}
+ source_set("test_support") {
diff --git a/ui/ozone/platform/wayland/extensions/agl/BUILD.gn b/ui/ozone/platform/wayland/extensions/agl/BUILD.gn
new file mode 100644
index 0000000000000..ce289bc5dbbca
@@ -771,20 +775,20 @@ index 0000000000000..ad5553d61f189
+ </interface>
+</protocol>
diff --git a/ui/ozone/platform/wayland/host/wayland_connection.cc b/ui/ozone/platform/wayland/host/wayland_connection.cc
-index 6d44128e56458..93427c52e1284 100644
+index ad3bbd6e37157..7a47d4a636998 100644
--- a/ui/ozone/platform/wayland/host/wayland_connection.cc
+++ b/ui/ozone/platform/wayland/host/wayland_connection.cc
-@@ -64,6 +64,8 @@
+@@ -68,6 +68,8 @@
#include "ui/ozone/platform/wayland/host/zwp_primary_selection_device_manager.h"
#include "ui/platform_window/common/platform_window_defaults.h"
+#include "ui/ozone/platform/wayland/host/wayland_extensions.h"
+
- #if defined(USE_LIBWAYLAND_STUBS)
- #include <dlfcn.h>
+ namespace ui {
-@@ -238,6 +240,10 @@ bool WaylandConnection::Initialize() {
- return false;
+ namespace {
+@@ -212,6 +214,10 @@ bool WaylandConnection::Initialize(bool use_threaded_polling) {
+ use_threaded_polling = false;
}
+ if (!extensions_) {
@@ -794,31 +798,31 @@ index 6d44128e56458..93427c52e1284 100644
// Now that the connection with the display server has been properly
// estabilished, initialize the event source and input objects.
DCHECK(!event_source_);
-@@ -264,7 +270,7 @@ bool WaylandConnection::Initialize() {
+@@ -243,7 +249,7 @@ bool WaylandConnection::Initialize(bool use_threaded_polling) {
LOG(ERROR) << "No wl_shm object";
return false;
}
-- if (!shell_v6_ && !shell_) {
-+ if (!shell_v6_ && !shell_ && !(extensions_ && extensions_->HasShellObject())) {
+- if (!shell_) {
++ if (!shell_ && !(extensions_ && extensions_->HasShellObject())) {
LOG(ERROR) << "No Wayland shell found";
return false;
}
-@@ -434,7 +440,9 @@ void WaylandConnection::Global(void* data,
- auto* connection = static_cast<WaylandConnection*>(data);
-
- auto factory_it = connection->global_object_factories_.find(interface);
-- if (factory_it != connection->global_object_factories_.end()) {
-+ if (connection->extensions_->Bind(registry, name, interface, version)) {
+@@ -538,7 +544,9 @@ void WaylandConnection::HandleGlobal(wl_registry* registry,
+ const char* interface,
+ uint32_t version) {
+ auto factory_it = global_object_factories_.find(interface);
+- if (factory_it != global_object_factories_.end()) {
++ if (extensions_->Bind(registry, name, interface, version)) {
+ DVLOG(1) << "Successfully bound to " << interface;
-+ } else if (factory_it != connection->global_object_factories_.end()) {
- (*factory_it->second)(connection, registry, name, interface, version);
- } else if (!connection->compositor_ &&
- strcmp(interface, "wl_compositor") == 0) {
++ } else if (factory_it != global_object_factories_.end()) {
+ (*factory_it->second)(this, registry, name, interface, version);
+ } else if (!compositor_ && strcmp(interface, "wl_compositor") == 0) {
+ compositor_ = wl::Bind<wl_compositor>(
diff --git a/ui/ozone/platform/wayland/host/wayland_connection.h b/ui/ozone/platform/wayland/host/wayland_connection.h
-index d33959ad4066f..dfd1d060c73f2 100644
+index 6659bc54bd475..ba293e5bcd088 100644
--- a/ui/ozone/platform/wayland/host/wayland_connection.h
+++ b/ui/ozone/platform/wayland/host/wayland_connection.h
-@@ -45,6 +45,7 @@ class WaylandBufferManagerHost;
+@@ -50,6 +50,7 @@ class WaylandBufferManagerHost;
class WaylandCursor;
class WaylandCursorBufferListener;
class WaylandEventSource;
@@ -826,7 +830,7 @@ index d33959ad4066f..dfd1d060c73f2 100644
class WaylandOutputManager;
class WaylandSeat;
class WaylandZAuraShell;
-@@ -185,6 +186,8 @@ class WaylandConnection {
+@@ -201,6 +202,8 @@ class WaylandConnection {
WaylandZAuraShell* zaura_shell() const { return zaura_shell_.get(); }
@@ -835,16 +839,14 @@ index d33959ad4066f..dfd1d060c73f2 100644
WaylandZcrColorManager* zcr_color_manager() const {
return zcr_color_manager_.get();
}
-@@ -424,6 +427,9 @@ class WaylandConnection {
+@@ -486,6 +489,7 @@ class WaylandConnection {
std::unique_ptr<OverlayPrioritizer> overlay_prioritizer_;
std::unique_ptr<SurfaceAugmenter> surface_augmenter_;
-
+ std::unique_ptr<SinglePixelBuffer> single_pixel_buffer_;
+ std::unique_ptr<WaylandExtensions> extensions_;
-+
-+
+
// Clipboard-related objects. |clipboard_| must be declared after all
// DeviceManager instances it depends on, otherwise tests may crash with
- // UAFs while attempting to access already destroyed manager pointers.
diff --git a/ui/ozone/platform/wayland/host/wayland_extensions.h b/ui/ozone/platform/wayland/host/wayland_extensions.h
new file mode 100644
index 0000000000000..3bd2fd7a211ae
@@ -908,5 +910,5 @@ index 0000000000000..3bd2fd7a211ae
+
+#endif // UI_OZONE_PLATFORM_WAYLAND_HOST_WAYLAND_EXTENSIONS_H_
--
-2.39.2
+2.42.1
diff --git a/recipes-wam/cef/files/chromium/0001-sql-relax-constraints-on-VirtualCursor-layout.patch b/recipes-wam/cef/files/chromium/0001-sql-relax-constraints-on-VirtualCursor-layout.patch
deleted file mode 100644
index 624dd5019..000000000
--- a/recipes-wam/cef/files/chromium/0001-sql-relax-constraints-on-VirtualCursor-layout.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 94ffefa81d00466fabcf1050080c95fa4b294dda Mon Sep 17 00:00:00 2001
-From: Elly Fong-Jones <ellyjones@chromium.org>
-Date: Thu, 2 Mar 2023 00:15:11 +0000
-Subject: [PATCH 1/9] sql: relax constraints on VirtualCursor layout
-
-VirtualCursor::FromSqliteCursor required that VirtualCursor had a
-standard layout, but in fact VirtualCursor shouldn't have a standard
-layout, and the fact that it does with libc++ is a deviation from the
-C++ standard. This change:
-
-1. Relaxes the requirement that VirtualCursor has a standard layout, and
-2. Relaxes the requirement that the sqlite_cursor_ field has to be at
- offset 0
-
-by use of offsetof() and pointer subtraction. This change both improves
-standards compliance and makes this code build with libstdc++.
-
-Bug: 1380656
-Change-Id: I9c47abd9197b187da0360ca5619ccf7dadab4f33
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4292313
-Reviewed-by: Austin Sullivan <asully@chromium.org>
-Commit-Queue: Elly Fong-Jones <ellyjones@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1111925}
----
- sql/recover_module/cursor.h | 10 ++++------
- 1 file changed, 4 insertions(+), 6 deletions(-)
-
-diff --git a/sql/recover_module/cursor.h b/sql/recover_module/cursor.h
-index 1970bdca8c6f1..4cb0655700977 100644
---- a/sql/recover_module/cursor.h
-+++ b/sql/recover_module/cursor.h
-@@ -63,12 +63,10 @@ class VirtualCursor {
- // |sqlite_cursor| must have been returned by VirtualTable::SqliteCursor().
- static inline VirtualCursor* FromSqliteCursor(
- sqlite3_vtab_cursor* sqlite_cursor) {
-- static_assert(std::is_standard_layout<VirtualCursor>::value,
-- "needed for the reinterpret_cast below");
-- static_assert(offsetof(VirtualCursor, sqlite_cursor_) == 0,
-- "sqlite_cursor_ must be the first member of the class");
-- VirtualCursor* result = reinterpret_cast<VirtualCursor*>(sqlite_cursor);
-- DCHECK_EQ(sqlite_cursor, &result->sqlite_cursor_);
-+ VirtualCursor* result = reinterpret_cast<VirtualCursor*>(
-+ (reinterpret_cast<char*>(sqlite_cursor) -
-+ offsetof(VirtualCursor, sqlite_cursor_)));
-+ CHECK_EQ(sqlite_cursor, &result->sqlite_cursor_);
- return result;
- }
-
---
-2.39.2
-
diff --git a/recipes-wam/cef/files/chromium/0006-Add-webos-agl-waylandwindow-window-tree-host-essenti.patch b/recipes-wam/cef/files/chromium/0002-agl-Add-waylandwindow-window-tree-host-essential-par.patch
index 5ea8b83eb..488b398bb 100644
--- a/recipes-wam/cef/files/chromium/0006-Add-webos-agl-waylandwindow-window-tree-host-essenti.patch
+++ b/recipes-wam/cef/files/chromium/0002-agl-Add-waylandwindow-window-tree-host-essential-par.patch
@@ -1,9 +1,13 @@
-From a99977eb329ca0e114ad13ce31acc6ed38bb6a7b Mon Sep 17 00:00:00 2001
+From d50bcc010ca2856979f58b2ffbd0015514c4231f Mon Sep 17 00:00:00 2001
From: Roger Zanoni <rzanoni@igalia.com>
Date: Wed, 17 May 2023 21:25:53 +0200
-Subject: [PATCH 6/9] Add webos/agl waylandwindow/window tree host essential
+Subject: [PATCH 02/33] [agl] Add waylandwindow/window tree host essential
parts
+This is a backport of the work we did on top of chromium webosose to be
+able to communicate with the agl compositor.
+
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
---
ui/aura/BUILD.gn | 7 ++
ui/aura/agl/window_tree_host_agl.h | 42 +++++++++
@@ -19,11 +23,11 @@ Subject: [PATCH 6/9] Add webos/agl waylandwindow/window tree host essential
.../agl/host/wayland_extensions_agl_impl.h | 9 ++
.../extensions/agl/host/wayland_window_agl.cc | 86 +++++++++++++++++++
.../extensions/agl/host/wayland_window_agl.h | 49 +++++++++++
- .../wayland/gpu/gl_surface_wayland.cc | 10 ++-
+ .../wayland/gpu/gl_surface_wayland.cc | 9 +-
.../host/gtk_primary_selection_device.cc | 2 +-
.../gtk_primary_selection_device_manager.cc | 4 +-
.../wayland/host/proxy/wayland_proxy_impl.cc | 2 +-
- .../wayland/host/wayland_connection.cc | 23 ++++-
+ .../wayland/host/wayland_connection.cc | 19 +++-
.../wayland/host/wayland_connection.h | 9 +-
.../platform/wayland/host/wayland_cursor.cc | 4 +-
.../wayland/host/wayland_data_device.cc | 10 +--
@@ -33,24 +37,25 @@ Subject: [PATCH 6/9] Add webos/agl waylandwindow/window tree host essential
ui/ozone/platform/wayland/host/wayland_drm.cc | 6 +-
.../wayland/host/wayland_extensions.h | 6 ++
.../platform/wayland/host/wayland_keyboard.cc | 4 +-
- .../platform/wayland/host/wayland_popup.cc | 4 +-
+ .../platform/wayland/host/wayland_popup.cc | 8 +-
+ .../platform/wayland/host/wayland_seat.cc | 2 +-
ui/ozone/platform/wayland/host/wayland_shm.cc | 2 +-
.../platform/wayland/host/wayland_surface.cc | 2 +-
- .../wayland/host/wayland_toplevel_window.cc | 14 +--
- .../platform/wayland/host/wayland_window.cc | 14 +--
+ .../wayland/host/wayland_toplevel_window.cc | 18 ++--
+ .../platform/wayland/host/wayland_window.cc | 6 +-
.../platform/wayland/host/wayland_window.h | 2 +
.../host/wayland_window_drag_controller.cc | 2 +-
- .../wayland/host/wayland_window_factory.cc | 15 ++++
+ .../wayland/host/wayland_window_factory.cc | 14 +++
.../wayland/host/wayland_zwp_linux_dmabuf.cc | 4 +-
.../wayland/host/xdg_foreign_wrapper.cc | 4 +-
.../wayland/host/xdg_popup_wrapper_impl.cc | 2 +-
.../wayland/host/xdg_surface_wrapper_impl.cc | 2 +-
+ .../wayland/host/xdg_toplevel_wrapper_impl.cc | 2 +-
.../host/zwp_primary_selection_device.cc | 2 +-
.../zwp_primary_selection_device_manager.cc | 4 +-
- .../host/zxdg_surface_v6_wrapper_impl.cc | 2 +-
ui/platform_window/agl/platform_window_agl.h | 36 ++++++++
ui/platform_window/platform_window.h | 4 +-
- 45 files changed, 471 insertions(+), 65 deletions(-)
+ 46 files changed, 469 insertions(+), 63 deletions(-)
create mode 100644 ui/aura/agl/window_tree_host_agl.h
create mode 100644 ui/aura/agl/window_tree_host_platform_agl.cc
create mode 100644 ui/aura/agl/window_tree_host_platform_agl.h
@@ -59,7 +64,7 @@ Subject: [PATCH 6/9] Add webos/agl waylandwindow/window tree host essential
create mode 100644 ui/platform_window/agl/platform_window_agl.h
diff --git a/ui/aura/BUILD.gn b/ui/aura/BUILD.gn
-index 1beb9003b2fad..f3d3e359a9704 100644
+index 50ca856b9da18..8fa04492f69f7 100644
--- a/ui/aura/BUILD.gn
+++ b/ui/aura/BUILD.gn
@@ -99,6 +99,13 @@ component("aura") {
@@ -238,7 +243,7 @@ index 0000000000000..181eefae346f7
+
+#endif // UI_AURA_AGL_WINDOW_TREE_HOST_PLATFORM_AGL_H_
diff --git a/ui/aura/window_tree_host.h b/ui/aura/window_tree_host.h
-index 0bdb86be66ba3..b7696e6373284 100644
+index b4b6e7022ea34..afb37a3a3ed13 100644
--- a/ui/aura/window_tree_host.h
+++ b/ui/aura/window_tree_host.h
@@ -30,6 +30,8 @@
@@ -261,10 +266,10 @@ index 0bdb86be66ba3..b7696e6373284 100644
// VideoCaptureLock ensures state necessary for capturing video remains in
// effect. For example, this may force keeping the compositor visible when
diff --git a/ui/aura/window_tree_host_platform.cc b/ui/aura/window_tree_host_platform.cc
-index 4c31e785d7692..cecd1f4fc03fd 100644
+index fd4a560f6cdd1..33b9e892c0212 100644
--- a/ui/aura/window_tree_host_platform.cc
+++ b/ui/aura/window_tree_host_platform.cc
-@@ -51,7 +51,7 @@ std::unique_ptr<WindowTreeHost> WindowTreeHost::Create(
+@@ -52,7 +52,7 @@ std::unique_ptr<WindowTreeHost> WindowTreeHost::Create(
WindowTreeHostPlatform::WindowTreeHostPlatform(
ui::PlatformWindowInitProperties properties,
std::unique_ptr<Window> window)
@@ -273,7 +278,7 @@ index 4c31e785d7692..cecd1f4fc03fd 100644
size_in_pixels_ = properties.bounds.size();
CreateCompositor(false, false, properties.enable_compositing_based_throttling,
properties.compositor_memory_limit_mb);
-@@ -59,7 +59,7 @@ WindowTreeHostPlatform::WindowTreeHostPlatform(
+@@ -60,7 +60,7 @@ WindowTreeHostPlatform::WindowTreeHostPlatform(
}
WindowTreeHostPlatform::WindowTreeHostPlatform(std::unique_ptr<Window> window)
@@ -283,7 +288,7 @@ index 4c31e785d7692..cecd1f4fc03fd 100644
current_cursor_(ui::mojom::CursorType::kNull) {}
diff --git a/ui/aura/window_tree_host_platform.h b/ui/aura/window_tree_host_platform.h
-index 3a9232743bda3..6c1e3a424afd4 100644
+index 92ae0f0229e70..9c3f742c30ad3 100644
--- a/ui/aura/window_tree_host_platform.h
+++ b/ui/aura/window_tree_host_platform.h
@@ -15,6 +15,8 @@
@@ -305,10 +310,10 @@ index 3a9232743bda3..6c1e3a424afd4 100644
public:
explicit WindowTreeHostPlatform(ui::PlatformWindowInitProperties properties,
diff --git a/ui/ozone/platform/wayland/BUILD.gn b/ui/ozone/platform/wayland/BUILD.gn
-index 1a2f889dc8947..86ff8269af9e0 100644
+index 8a436de0fafe3..754cb123043a9 100644
--- a/ui/ozone/platform/wayland/BUILD.gn
+++ b/ui/ozone/platform/wayland/BUILD.gn
-@@ -409,7 +409,6 @@ source_set("wayland") {
+@@ -400,7 +400,6 @@ source_set("wayland") {
sources += [
"host/wayland_extensions.h",
@@ -577,17 +582,16 @@ index 0000000000000..b2a922604c001
+
+#endif // UI_OZONE_PLATFORM_WAYLAND_EXTENSIONS_AGL_HOST_WAYLAND_WINDOW_AGL_H_
diff --git a/ui/ozone/platform/wayland/gpu/gl_surface_wayland.cc b/ui/ozone/platform/wayland/gpu/gl_surface_wayland.cc
-index 1cef91bb39912..26ad374718005 100644
+index 1cda8aa671ddb..220f759ff30a1 100644
--- a/ui/ozone/platform/wayland/gpu/gl_surface_wayland.cc
+++ b/ui/ozone/platform/wayland/gpu/gl_surface_wayland.cc
-@@ -89,8 +89,14 @@ gfx::SwapResult GLSurfaceWayland::SwapBuffers(PresentationCallback callback,
+@@ -90,7 +90,14 @@ gfx::SwapResult GLSurfaceWayland::SwapBuffers(PresentationCallback callback,
return scoped_swap_buffers.result();
}
window_->root_surface()->set_surface_buffer_scale(scale_factor_);
-- return gl::NativeViewGLSurfaceEGL::SwapBuffers(std::move(callback),
-- std::move(data));
-+ gfx::SwapResult result = gl::NativeViewGLSurfaceEGL::SwapBuffers(std::move(callback),
-+ std::move(data));
+- return gl::NativeViewGLSurfaceEGL::SwapBuffers(std::move(callback), data);
++
++ gfx::SwapResult result = gl::NativeViewGLSurfaceEGL::SwapBuffers(std::move(callback), data);
+
+ if (window_) {
+ window_->OnSurfaceContentChanged();
@@ -598,10 +602,10 @@ index 1cef91bb39912..26ad374718005 100644
gfx::SwapResult GLSurfaceWayland::PostSubBuffer(int x,
diff --git a/ui/ozone/platform/wayland/host/gtk_primary_selection_device.cc b/ui/ozone/platform/wayland/host/gtk_primary_selection_device.cc
-index 43445ea2442b4..94f0739599142 100644
+index c62dd62be4fbf..2959593cfeb5b 100644
--- a/ui/ozone/platform/wayland/host/gtk_primary_selection_device.cc
+++ b/ui/ozone/platform/wayland/host/gtk_primary_selection_device.cc
-@@ -31,7 +31,7 @@ void GtkPrimarySelectionDevice::SetSelectionSource(
+@@ -32,7 +32,7 @@ void GtkPrimarySelectionDevice::SetSelectionSource(
auto* data_source = source ? source->data_source() : nullptr;
gtk_primary_selection_device_set_selection(data_device_.get(), data_source,
serial);
@@ -633,10 +637,10 @@ index 2c39409808128..1e07ae6009776 100644
delegate);
}
diff --git a/ui/ozone/platform/wayland/host/proxy/wayland_proxy_impl.cc b/ui/ozone/platform/wayland/host/proxy/wayland_proxy_impl.cc
-index dee90b1aaaf72..caad70e0ab1cb 100644
+index f2407d1c306ec..7a7868ded8a52 100644
--- a/ui/ozone/platform/wayland/host/proxy/wayland_proxy_impl.cc
+++ b/ui/ozone/platform/wayland/host/proxy/wayland_proxy_impl.cc
-@@ -75,7 +75,7 @@ void WaylandProxyImpl::DestroyShmForWlBuffer(wl_buffer* buffer) {
+@@ -69,7 +69,7 @@ void WaylandProxyImpl::DestroyShmForWlBuffer(wl_buffer* buffer) {
}
void WaylandProxyImpl::FlushForTesting() {
@@ -646,10 +650,10 @@ index dee90b1aaaf72..caad70e0ab1cb 100644
ui::PlatformWindowType WaylandProxyImpl::GetWindowType(
diff --git a/ui/ozone/platform/wayland/host/wayland_connection.cc b/ui/ozone/platform/wayland/host/wayland_connection.cc
-index 93427c52e1284..e2d45a6f5dc67 100644
+index 7a47d4a636998..8d9e8eea6fd79 100644
--- a/ui/ozone/platform/wayland/host/wayland_connection.cc
+++ b/ui/ozone/platform/wayland/host/wayland_connection.cc
-@@ -285,6 +285,20 @@ bool WaylandConnection::Initialize() {
+@@ -264,6 +264,20 @@ bool WaylandConnection::Initialize(bool use_threaded_polling) {
return true;
}
@@ -660,7 +664,7 @@ index 93427c52e1284..e2d45a6f5dc67 100644
+ if (!base::CurrentUIThread::IsSet()) {
+ Flush();
+ } else if (!scheduled_flush_) {
-+ base::ThreadTaskRunnerHandle::Get()->PostTask(
++ base::SingleThreadTaskRunner::GetCurrentDefault()->PostTask(
+ FROM_HERE,
+ base::BindOnce(&WaylandConnection::Flush, base::Unretained(this)));
+ scheduled_flush_ = true;
@@ -670,7 +674,7 @@ index 93427c52e1284..e2d45a6f5dc67 100644
void WaylandConnection::RoundTripQueue() {
if (roundtrip_closure_for_testing_) {
roundtrip_closure_for_testing_.Run();
-@@ -354,6 +368,7 @@ void WaylandConnection::RegisterGlobalObjectFactory(
+@@ -333,6 +347,7 @@ void WaylandConnection::RegisterGlobalObjectFactory(
void WaylandConnection::Flush() {
wl_display_flush(display_.get());
@@ -678,48 +682,31 @@ index 93427c52e1284..e2d45a6f5dc67 100644
}
void WaylandConnection::UpdateInputDevices() {
-@@ -441,7 +456,7 @@ void WaylandConnection::Global(void* data,
-
- auto factory_it = connection->global_object_factories_.find(interface);
- if (connection->extensions_->Bind(registry, name, interface, version)) {
-- DVLOG(1) << "Successfully bound to " << interface;
-+ LOG(INFO) << "Successfully bound to " << interface;
- } else if (factory_it != connection->global_object_factories_.end()) {
- (*factory_it->second)(connection, registry, name, interface, version);
- } else if (!connection->compositor_ &&
-@@ -609,7 +624,7 @@ void WaylandConnection::Global(void* data,
-
- connection->available_globals_.emplace_back(interface, version);
-
-- connection->Flush();
-+ connection->ScheduleFlush();
- }
-
- base::TimeTicks WaylandConnection::ConvertPresentationTime(uint32_t tv_sec_hi,
-@@ -674,14 +689,14 @@ void WaylandConnection::PingV6(void* data,
+@@ -526,7 +541,7 @@ void WaylandConnection::OnPing(void* data,
uint32_t serial) {
- WaylandConnection* connection = static_cast<WaylandConnection*>(data);
- zxdg_shell_v6_pong(shell_v6, serial);
+ auto* connection = static_cast<WaylandConnection*>(data);
+ xdg_wm_base_pong(shell, serial);
- connection->Flush();
+ connection->ScheduleFlush();
}
// static
- void WaylandConnection::Ping(void* data, xdg_wm_base* shell, uint32_t serial) {
- WaylandConnection* connection = static_cast<WaylandConnection*>(data);
- xdg_wm_base_pong(shell, serial);
-- connection->Flush();
-+ connection->ScheduleFlush();
+@@ -707,7 +722,7 @@ void WaylandConnection::HandleGlobal(wl_registry* registry,
+ }
+
+ available_globals_.emplace_back(interface, version);
+- Flush();
++ ScheduleFlush();
}
- // static
+ } // namespace ui
diff --git a/ui/ozone/platform/wayland/host/wayland_connection.h b/ui/ozone/platform/wayland/host/wayland_connection.h
-index dfd1d060c73f2..d2d7a866d3af8 100644
+index ba293e5bcd088..641f36f13db35 100644
--- a/ui/ozone/platform/wayland/host/wayland_connection.h
+++ b/ui/ozone/platform/wayland/host/wayland_connection.h
-@@ -94,8 +94,8 @@ class WaylandConnection {
+@@ -100,8 +100,8 @@ class WaylandConnection {
- bool Initialize();
+ bool Initialize(bool use_threaded_polling = false);
- // Immediately flushes the Wayland display.
- void Flush();
@@ -728,7 +715,7 @@ index dfd1d060c73f2..d2d7a866d3af8 100644
// Calls wl_display_roundtrip_queue. Might be required during initialization
// of some objects that should block until they are initialized.
-@@ -340,6 +340,9 @@ class WaylandConnection {
+@@ -388,6 +388,9 @@ class WaylandConnection {
friend class ZwpIdleInhibitManager;
friend class ZwpPrimarySelectionDeviceManager;
@@ -738,9 +725,9 @@ index dfd1d060c73f2..d2d7a866d3af8 100644
void RegisterGlobalObjectFactory(const char* interface_name,
wl::GlobalObjectFactory factory);
-@@ -467,6 +470,8 @@ class WaylandConnection {
- // sizes.
- bool surface_submission_in_pixel_coordinates_ = false;
+@@ -535,6 +538,8 @@ class WaylandConnection {
+ // This is set if delegated composition should not be used.
+ bool overlay_delegation_disabled_ = false;
+ bool scheduled_flush_ = false;
+
@@ -748,10 +735,10 @@ index dfd1d060c73f2..d2d7a866d3af8 100644
// Global Wayland interfaces available in the current session, with their
diff --git a/ui/ozone/platform/wayland/host/wayland_cursor.cc b/ui/ozone/platform/wayland/host/wayland_cursor.cc
-index 891ca2e5e1f3c..48ac8b8925ddd 100644
+index 1b7d303291cff..a384212c84134 100644
--- a/ui/ozone/platform/wayland/host/wayland_cursor.cc
+++ b/ui/ozone/platform/wayland/host/wayland_cursor.cc
-@@ -109,7 +109,7 @@ void WaylandCursor::HideCursor() {
+@@ -107,7 +107,7 @@ void WaylandCursor::HideCursor() {
wl_surface_attach(pointer_surface_.get(), nullptr, 0, 0);
wl_surface_commit(pointer_surface_.get());
@@ -760,9 +747,9 @@ index 891ca2e5e1f3c..48ac8b8925ddd 100644
if (listener_)
listener_->OnCursorBufferAttached(nullptr);
-@@ -160,7 +160,7 @@ void WaylandCursor::AttachAndCommit(wl_buffer* buffer,
- wl_surface_attach(pointer_surface_.get(), buffer, 0, 0);
- wl_surface_commit(pointer_surface_.get());
+@@ -166,7 +166,7 @@ void WaylandCursor::AttachAndCommit(wl_buffer* buffer,
+ wl_pointer_set_cursor(pointer_->wl_object(), pointer_enter_serial->value,
+ pointer_surface_.get(), hotspot_x_dip, hotspot_y_dip);
- connection_->Flush();
+ connection_->ScheduleFlush();
@@ -770,10 +757,10 @@ index 891ca2e5e1f3c..48ac8b8925ddd 100644
} // namespace ui
diff --git a/ui/ozone/platform/wayland/host/wayland_data_device.cc b/ui/ozone/platform/wayland/host/wayland_data_device.cc
-index a1d691b6315ac..ccc7bfb0305a8 100644
+index a7adfd313188b..fe16d8577fd35 100644
--- a/ui/ozone/platform/wayland/host/wayland_data_device.cc
+++ b/ui/ozone/platform/wayland/host/wayland_data_device.cc
-@@ -46,7 +46,7 @@ void WaylandDataDevice::StartDrag(const WaylandDataSource& data_source,
+@@ -51,7 +51,7 @@ void WaylandDataDevice::StartDrag(const WaylandDataSource& data_source,
origin_window.root_surface()->surface(),
icon_surface, serial);
drag_delegate_->DrawIcon();
@@ -782,7 +769,7 @@ index a1d691b6315ac..ccc7bfb0305a8 100644
}
void WaylandDataDevice::ResetDragDelegate() {
-@@ -78,7 +78,7 @@ void WaylandDataDevice::SetSelectionSource(WaylandDataSource* source,
+@@ -92,7 +92,7 @@ void WaylandDataDevice::SetSelectionSource(WaylandDataSource* source,
uint32_t serial) {
auto* data_source = source ? source->data_source() : nullptr;
wl_data_device_set_selection(data_device_.get(), data_source, serial);
@@ -791,7 +778,7 @@ index a1d691b6315ac..ccc7bfb0305a8 100644
}
void WaylandDataDevice::ReadDragDataFromFD(base::ScopedFD fd,
-@@ -140,7 +140,7 @@ void WaylandDataDevice::OnEnter(void* data,
+@@ -146,7 +146,7 @@ void WaylandDataDevice::OnEnter(void* data,
gfx::PointF(wl_fixed_to_double(x), wl_fixed_to_double(y)), window);
self->drag_delegate_->OnDragEnter(window, point, serial);
@@ -800,7 +787,7 @@ index a1d691b6315ac..ccc7bfb0305a8 100644
}
void WaylandDataDevice::OnMotion(void* data,
-@@ -161,7 +161,7 @@ void WaylandDataDevice::OnDrop(void* data, wl_data_device* data_device) {
+@@ -167,7 +167,7 @@ void WaylandDataDevice::OnDrop(void* data, wl_data_device* data_device) {
auto* self = static_cast<WaylandDataDevice*>(data);
if (self->drag_delegate_) {
self->drag_delegate_->OnDragDrop();
@@ -809,33 +796,33 @@ index a1d691b6315ac..ccc7bfb0305a8 100644
}
// There are buggy Exo versions, which send 'drop' event (even for
-@@ -178,7 +178,7 @@ void WaylandDataDevice::OnLeave(void* data, wl_data_device* data_device) {
+@@ -184,7 +184,7 @@ void WaylandDataDevice::OnLeave(void* data, wl_data_device* data_device) {
auto* self = static_cast<WaylandDataDevice*>(data);
if (self->drag_delegate_) {
self->drag_delegate_->OnDragLeave();
- self->connection()->Flush();
+ self->connection()->ScheduleFlush();
}
- self->ResetDragDelegateIfNeeded();
+ self->ResetDragDelegateIfNotDragSource();
}
diff --git a/ui/ozone/platform/wayland/host/wayland_data_device_base.cc b/ui/ozone/platform/wayland/host/wayland_data_device_base.cc
-index 4287f72617708..d0c077c2e69ea 100644
+index 203e907f92bfa..a0c72971ac567 100644
--- a/ui/ozone/platform/wayland/host/wayland_data_device_base.cc
+++ b/ui/ozone/platform/wayland/host/wayland_data_device_base.cc
-@@ -72,7 +72,7 @@ void WaylandDataDeviceBase::RegisterDeferredReadCallback() {
-
- wl_callback_add_listener(deferred_read_callback_.get(), &kListener, this);
-
+@@ -64,7 +64,7 @@ void WaylandDataDeviceBase::RegisterDeferredReadCallback() {
+ static constexpr wl_callback_listener kSyncCallbackListener = {
+ .done = &OnSyncDone};
+ wl_callback_add_listener(sync_callback_.get(), &kSyncCallbackListener, this);
- connection_->Flush();
+ connection_->ScheduleFlush();
}
void WaylandDataDeviceBase::RegisterDeferredReadClosure(
diff --git a/ui/ozone/platform/wayland/host/wayland_data_drag_controller.cc b/ui/ozone/platform/wayland/host/wayland_data_drag_controller.cc
-index f2123ec8bac3f..11750a3f55da2 100644
+index 705bdec41a1b7..dfa5789e8d149 100644
--- a/ui/ozone/platform/wayland/host/wayland_data_drag_controller.cc
+++ b/ui/ozone/platform/wayland/host/wayland_data_drag_controller.cc
-@@ -217,7 +217,7 @@ void WaylandDataDragController::OnDragSurfaceFrame(void* data,
+@@ -256,7 +256,7 @@ void WaylandDataDragController::OnDragSurfaceFrame(void* data,
DCHECK(self);
self->DrawIconInternal();
self->icon_frame_callback_.reset();
@@ -843,12 +830,12 @@ index f2123ec8bac3f..11750a3f55da2 100644
+ self->connection_->ScheduleFlush();
}
- void WaylandDataDragController::DrawIconInternal() {
+ SkBitmap WaylandDataDragController::GetIconBitmap() {
diff --git a/ui/ozone/platform/wayland/host/wayland_data_source.cc b/ui/ozone/platform/wayland/host/wayland_data_source.cc
-index de1e110f73b11..e24f31b1a8f52 100644
+index c0e95c8a22e48..c294ffb8836aa 100644
--- a/ui/ozone/platform/wayland/host/wayland_data_source.cc
+++ b/ui/ozone/platform/wayland/host/wayland_data_source.cc
-@@ -119,7 +119,7 @@ void DataSource<wl_data_source>::Offer(
+@@ -130,7 +130,7 @@ void DataSource<wl_data_source>::Offer(
const std::vector<std::string>& mime_types) {
for (auto& mime_type : mime_types)
wl_data_source_offer(data_source_.get(), mime_type.c_str());
@@ -857,7 +844,7 @@ index de1e110f73b11..e24f31b1a8f52 100644
}
template <typename T>
-@@ -154,7 +154,7 @@ void DataSource<gtk_primary_selection_source>::Offer(
+@@ -165,7 +165,7 @@ void DataSource<gtk_primary_selection_source>::Offer(
const std::vector<std::string>& mime_types) {
for (const auto& mime_type : mime_types)
gtk_primary_selection_source_offer(data_source_.get(), mime_type.c_str());
@@ -866,7 +853,7 @@ index de1e110f73b11..e24f31b1a8f52 100644
}
template <>
-@@ -173,7 +173,7 @@ void DataSource<zwp_primary_selection_source_v1>::Offer(
+@@ -185,7 +185,7 @@ void DataSource<zwp_primary_selection_source_v1>::Offer(
for (const auto& mime_type : mime_types)
zwp_primary_selection_source_v1_offer(data_source_.get(),
mime_type.c_str());
@@ -876,11 +863,11 @@ index de1e110f73b11..e24f31b1a8f52 100644
template class DataSource<gtk_primary_selection_source>;
diff --git a/ui/ozone/platform/wayland/host/wayland_drm.cc b/ui/ozone/platform/wayland/host/wayland_drm.cc
-index 7edc0da798b9b..280350d9286c0 100644
+index 68570a9aacb2c..2b3b16e8859cb 100644
--- a/ui/ozone/platform/wayland/host/wayland_drm.cc
+++ b/ui/ozone/platform/wayland/host/wayland_drm.cc
-@@ -57,7 +57,7 @@ WaylandDrm::WaylandDrm(wl_drm* drm, WaylandConnection* connection)
- &Capabilities,
+@@ -58,7 +58,7 @@ WaylandDrm::WaylandDrm(wl_drm* drm, WaylandConnection* connection)
+ .capabilities = &OnCapabilities,
};
wl_drm_add_listener(wl_drm_.get(), &kDrmListener, this);
- connection_->Flush();
@@ -888,7 +875,7 @@ index 7edc0da798b9b..280350d9286c0 100644
// A roundtrip after binding guarantees that the client has received all
// supported formats and capabilities of the device.
-@@ -91,7 +91,7 @@ void WaylandDrm::CreateBuffer(const base::ScopedFD& fd,
+@@ -92,7 +92,7 @@ void WaylandDrm::CreateBuffer(const base::ScopedFD& fd,
wl::Object<wl_buffer> buffer(wl_drm_create_prime_buffer(
wl_drm_.get(), fd.get(), size.width(), size.height(), format, offset[0],
stride[0], offset[1], stride[1], offset[2], stride[2]));
@@ -897,7 +884,7 @@ index 7edc0da798b9b..280350d9286c0 100644
std::move(callback).Run(std::move(buffer));
}
-@@ -145,7 +145,7 @@ void WaylandDrm::Authenticate(const char* drm_device_path) {
+@@ -146,7 +146,7 @@ void WaylandDrm::Authenticate(const char* drm_device_path) {
}
wl_drm_authenticate(wl_drm_.get(), magic);
@@ -932,10 +919,10 @@ index 3bd2fd7a211ae..f6ed47507d217 100644
// Creates Wayland extensions.
diff --git a/ui/ozone/platform/wayland/host/wayland_keyboard.cc b/ui/ozone/platform/wayland/host/wayland_keyboard.cc
-index c6e64f1e55da3..473a702bf8987 100644
+index 2b7fc05d426e1..f24d6993b26ac 100644
--- a/ui/ozone/platform/wayland/host/wayland_keyboard.cc
+++ b/ui/ozone/platform/wayland/host/wayland_keyboard.cc
-@@ -54,7 +54,7 @@ class WaylandKeyboard::ZCRExtendedKeyboard {
+@@ -114,7 +114,7 @@ class WaylandKeyboard::ZCRExtendedKeyboard {
void AckKey(uint32_t serial, bool handled) {
zcr_extended_keyboard_v1_ack_key(obj_.get(), serial, handled);
@@ -944,20 +931,20 @@ index c6e64f1e55da3..473a702bf8987 100644
}
// Returns true if connected object will send zcr_extended_keyboard::peek_key.
-@@ -247,7 +247,7 @@ void WaylandKeyboard::FlushInput(base::OnceClosure closure) {
- // get spurious repeats.
- sync_callback_.reset(wl_display_sync(connection_->display_wrapper()));
- wl_callback_add_listener(sync_callback_.get(), &callback_listener_, this);
+@@ -373,7 +373,7 @@ void WaylandKeyboard::FlushInput(base::OnceClosure closure) {
+ .done = &OnSyncDone,
+ };
+ wl_callback_add_listener(sync_callback_.get(), &kSyncCallbackListener, this);
- connection_->Flush();
+ connection_->ScheduleFlush();
}
void WaylandKeyboard::DispatchKey(unsigned int key,
diff --git a/ui/ozone/platform/wayland/host/wayland_popup.cc b/ui/ozone/platform/wayland/host/wayland_popup.cc
-index 84e429457462e..cb13557093dc2 100644
+index f1e886f8675fb..28903c031e6ce 100644
--- a/ui/ozone/platform/wayland/host/wayland_popup.cc
+++ b/ui/ozone/platform/wayland/host/wayland_popup.cc
-@@ -124,7 +124,7 @@ void WaylandPopup::Show(bool inactive) {
+@@ -132,7 +132,7 @@ void WaylandPopup::Show(bool inactive) {
return;
}
@@ -966,7 +953,7 @@ index 84e429457462e..cb13557093dc2 100644
WaylandWindow::Show(inactive);
}
-@@ -147,7 +147,7 @@ void WaylandPopup::Hide() {
+@@ -158,7 +158,7 @@ void WaylandPopup::Hide() {
decorated_via_aura_popup_ = false;
}
@@ -975,8 +962,38 @@ index 84e429457462e..cb13557093dc2 100644
}
bool WaylandPopup::IsVisible() const {
+@@ -256,14 +256,14 @@ void WaylandPopup::ShowTooltip(const std::u16string& text,
+ if (zaura_surface &&
+ zaura_surface->ShowTooltip(text, position, zaura_shell_trigger,
+ show_delay, hide_delay)) {
+- connection()->Flush();
++ connection()->ScheduleFlush();
+ }
+ }
+
+ void WaylandPopup::HideTooltip() {
+ auto* zaura_surface = GetZAuraSurface();
+ if (zaura_surface && zaura_surface->HideTooltip()) {
+- connection()->Flush();
++ connection()->ScheduleFlush();
+ }
+ }
+
+diff --git a/ui/ozone/platform/wayland/host/wayland_seat.cc b/ui/ozone/platform/wayland/host/wayland_seat.cc
+index 3b05da49eb6b8..5f70725a9a9dd 100644
+--- a/ui/ozone/platform/wayland/host/wayland_seat.cc
++++ b/ui/ozone/platform/wayland/host/wayland_seat.cc
+@@ -128,7 +128,7 @@ void WaylandSeat::HandleCapabilities(void* data,
+
+ connection_->UpdateInputDevices();
+ connection_->UpdateCursor();
+- connection_->Flush();
++ connection_->ScheduleFlush();
+ }
+
+ } // namespace ui
diff --git a/ui/ozone/platform/wayland/host/wayland_shm.cc b/ui/ozone/platform/wayland/host/wayland_shm.cc
-index 80d27227b9ab3..2b6c4f31ca0d8 100644
+index b264ad88962bb..95c19d9962085 100644
--- a/ui/ozone/platform/wayland/host/wayland_shm.cc
+++ b/ui/ozone/platform/wayland/host/wayland_shm.cc
@@ -62,7 +62,7 @@ wl::Object<wl_buffer> WaylandShm::CreateBuffer(const base::ScopedFD& fd,
@@ -989,10 +1006,10 @@ index 80d27227b9ab3..2b6c4f31ca0d8 100644
}
diff --git a/ui/ozone/platform/wayland/host/wayland_surface.cc b/ui/ozone/platform/wayland/host/wayland_surface.cc
-index cd178f9aaee00..ffe5062402b33 100644
+index 47dc846390898..2a04d28b05484 100644
--- a/ui/ozone/platform/wayland/host/wayland_surface.cc
+++ b/ui/ozone/platform/wayland/host/wayland_surface.cc
-@@ -267,7 +267,7 @@ void WaylandSurface::UpdateBufferDamageRegion(const gfx::Rect& damage_px) {
+@@ -305,7 +305,7 @@ void WaylandSurface::UpdateBufferDamageRegion(const gfx::Rect& damage_px) {
void WaylandSurface::Commit(bool flush) {
wl_surface_commit(surface_.get());
if (flush)
@@ -1002,28 +1019,28 @@ index cd178f9aaee00..ffe5062402b33 100644
void WaylandSurface::set_surface_buffer_scale(float scale) {
diff --git a/ui/ozone/platform/wayland/host/wayland_toplevel_window.cc b/ui/ozone/platform/wayland/host/wayland_toplevel_window.cc
-index e39daa898c9a5..68aebd357fdc2 100644
+index 898113178a783..1b489b327fa29 100644
--- a/ui/ozone/platform/wayland/host/wayland_toplevel_window.cc
+++ b/ui/ozone/platform/wayland/host/wayland_toplevel_window.cc
-@@ -131,7 +131,7 @@ void WaylandToplevelWindow::DispatchHostWindowDragMovement(
+@@ -127,7 +127,7 @@ void WaylandToplevelWindow::DispatchHostWindowDragMovement(
else
shell_toplevel_->SurfaceResize(connection(), hittest);
- connection()->Flush();
+ connection()->ScheduleFlush();
- }
+ #if !BUILDFLAG(IS_CHROMEOS_LACROS)
+ // TODO(crbug.com/1454893): Revisit to resolve the correct impl.
+ connection()->event_source()->ResetPointerFlags();
+@@ -176,7 +176,7 @@ void WaylandToplevelWindow::Hide() {
+ gtk_surface1_.reset();
- void WaylandToplevelWindow::Show(bool inactive) {
-@@ -166,7 +166,7 @@ void WaylandToplevelWindow::Hide() {
- aura_surface_.reset();
- }
shell_toplevel_.reset();
- connection()->Flush();
+ connection()->ScheduleFlush();
}
bool WaylandToplevelWindow::IsVisible() const {
-@@ -183,7 +183,7 @@ void WaylandToplevelWindow::SetTitle(const std::u16string& title) {
+@@ -193,7 +193,7 @@ void WaylandToplevelWindow::SetTitle(const std::u16string& title) {
if (shell_toplevel_) {
shell_toplevel_->SetTitle(title);
@@ -1032,7 +1049,7 @@ index e39daa898c9a5..68aebd357fdc2 100644
}
}
-@@ -262,13 +262,13 @@ void WaylandToplevelWindow::Activate() {
+@@ -288,13 +288,13 @@ void WaylandToplevelWindow::Activate() {
// but nothing more happens (until the user moves the mouse over a Lacros
// window in which case events will start and the activation will come
// through).
@@ -1048,18 +1065,35 @@ index e39daa898c9a5..68aebd357fdc2 100644
}
}
-@@ -877,7 +877,7 @@ void WaylandToplevelWindow::TriggerStateChanges() {
+@@ -722,14 +722,14 @@ void WaylandToplevelWindow::ShowTooltip(
+ if (zaura_surface &&
+ zaura_surface->ShowTooltip(text, position, zaura_shell_trigger,
+ show_delay, hide_delay)) {
+- connection()->Flush();
++ connection()->ScheduleFlush();
+ }
+ }
- delegate()->OnWindowStateChanged(previous_state_, state_);
+ void WaylandToplevelWindow::HideTooltip() {
+ auto* zaura_surface = GetZAuraSurface();
+ if (zaura_surface && zaura_surface->HideTooltip()) {
+- connection()->Flush();
++ connection()->ScheduleFlush();
+ }
+ }
+
+@@ -1001,7 +1001,7 @@ void WaylandToplevelWindow::TriggerStateChanges() {
+ }
+ delegate()->OnWindowStateChanged(previous_state_, state_);
- connection()->Flush();
+ connection()->ScheduleFlush();
}
void WaylandToplevelWindow::SetWindowState(PlatformWindowState state) {
-@@ -908,7 +908,7 @@ void WaylandToplevelWindow::SetSizeConstraints() {
- if (max_size_dip.has_value())
- shell_toplevel_->SetMaxSize(max_size_dip->width(), max_size_dip->height());
+@@ -1035,7 +1035,7 @@ void WaylandToplevelWindow::SetSizeConstraints() {
+ shell_toplevel_->SetCanMaximize(delegate()->CanMaximize());
+ shell_toplevel_->SetCanFullscreen(delegate()->CanFullscreen());
- connection()->Flush();
+ connection()->ScheduleFlush();
@@ -1067,20 +1101,11 @@ index e39daa898c9a5..68aebd357fdc2 100644
void WaylandToplevelWindow::SetOrResetRestoredBounds() {
diff --git a/ui/ozone/platform/wayland/host/wayland_window.cc b/ui/ozone/platform/wayland/host/wayland_window.cc
-index f8b8c36a745e5..e415efde8ccd8 100644
+index ad4366edfe4db..9a18c567bcbcc 100644
--- a/ui/ozone/platform/wayland/host/wayland_window.cc
+++ b/ui/ozone/platform/wayland/host/wayland_window.cc
-@@ -430,7 +430,7 @@ void WaylandWindow::SetDecorationInsets(const gfx::Insets* insets_px) {
- else
- frame_insets_px_ = absl::nullopt;
- UpdateDecorations();
-- connection_->Flush();
-+ connection_->ScheduleFlush();
- }
-
- void WaylandWindow::SetWindowIcons(const gfx::ImageSkia& window_icon,
-@@ -522,6 +522,10 @@ void WaylandWindow::HandleSurfaceConfigure(uint32_t serial) {
- << "Only shell surfaces must receive HandleSurfaceConfigure calls.";
+@@ -686,6 +686,10 @@ std::string WaylandWindow::WindowStates::ToString() const {
+ return states;
}
+void WaylandWindow::OnSurfaceContentChanged() {
@@ -1090,47 +1115,20 @@ index f8b8c36a745e5..e415efde8ccd8 100644
void WaylandWindow::HandleToplevelConfigure(int32_t widht,
int32_t height,
const WindowStates& window_states) {
-@@ -551,7 +555,7 @@ void WaylandWindow::UpdateVisualSize(const gfx::Size& size_px) {
-
- if (apply_pending_state_on_update_visual_size_for_testing_) {
- root_surface_->ApplyPendingState();
-- connection_->Flush();
-+ connection_->ScheduleFlush();
- }
- }
-
-@@ -661,7 +665,7 @@ bool WaylandWindow::Initialize(PlatformWindowInitProperties properties) {
- std::vector<gfx::Rect> region{gfx::Rect{size_px_}};
- root_surface_->set_opaque_region(&region);
+@@ -832,7 +836,7 @@ bool WaylandWindow::Initialize(PlatformWindowInitProperties properties) {
+ root_surface_->EnableTrustedDamageIfPossible();
root_surface_->ApplyPendingState();
+
- connection_->Flush();
+ connection_->ScheduleFlush();
return true;
}
-@@ -957,7 +961,7 @@ void WaylandWindow::ProcessPendingBoundsDip(uint32_t serial) {
- // window has been applied.
- SetWindowGeometry(pending_bounds_dip_);
- AckConfigure(serial);
-- connection()->Flush();
-+ connection()->ScheduleFlush();
- } else if (!pending_configures_.empty() &&
- pending_bounds_dip_.size() ==
- pending_configures_.back().bounds_dip.size()) {
-@@ -1051,7 +1055,7 @@ bool WaylandWindow::ProcessVisualSizeUpdate(const gfx::Size& size_px) {
- auto serial = result->serial;
- SetWindowGeometry(result->bounds_dip);
- AckConfigure(serial);
-- connection()->Flush();
-+ connection()->ScheduleFlush();
- pending_configures_.erase(pending_configures_.begin(), ++result);
- return true;
- }
diff --git a/ui/ozone/platform/wayland/host/wayland_window.h b/ui/ozone/platform/wayland/host/wayland_window.h
-index f0f75d4481cd2..dae1ddcd2933f 100644
+index d68d4d818f28f..2c5afbb3de99c 100644
--- a/ui/ozone/platform/wayland/host/wayland_window.h
+++ b/ui/ozone/platform/wayland/host/wayland_window.h
-@@ -218,6 +218,8 @@ class WaylandWindow : public PlatformWindow,
+@@ -230,6 +230,8 @@ class WaylandWindow : public PlatformWindow,
// currently bound to.
virtual void HandleSurfaceConfigure(uint32_t serial);
@@ -1140,23 +1138,23 @@ index f0f75d4481cd2..dae1ddcd2933f 100644
bool is_maximized = false;
bool is_fullscreen = false;
diff --git a/ui/ozone/platform/wayland/host/wayland_window_drag_controller.cc b/ui/ozone/platform/wayland/host/wayland_window_drag_controller.cc
-index 6f45f47a71c25..a269ec9b368a4 100644
+index e38565635a583..ff201c038efb7 100644
--- a/ui/ozone/platform/wayland/host/wayland_window_drag_controller.cc
+++ b/ui/ozone/platform/wayland/host/wayland_window_drag_controller.cc
-@@ -84,7 +84,7 @@ class WaylandWindowDragController::ExtendedDragSource {
+@@ -91,7 +91,7 @@ class WaylandWindowDragController::ExtendedDragSource {
auto* surface = window ? window->root_surface()->surface() : nullptr;
zcr_extended_drag_source_v1_drag(source_.get(), surface, offset.x(),
offset.y());
-- connection_.Flush();
-+ connection_.ScheduleFlush();
+- connection_->Flush();
++ connection_->ScheduleFlush();
}
private:
diff --git a/ui/ozone/platform/wayland/host/wayland_window_factory.cc b/ui/ozone/platform/wayland/host/wayland_window_factory.cc
-index 4857125bb5f34..b2f73218681b9 100644
+index 6f66c6654819c..e2bc045e4b3fb 100644
--- a/ui/ozone/platform/wayland/host/wayland_window_factory.cc
+++ b/ui/ozone/platform/wayland/host/wayland_window_factory.cc
-@@ -13,6 +13,8 @@
+@@ -12,6 +12,8 @@
#include "ui/ozone/platform/wayland/host/wayland_window.h"
#include "ui/platform_window/platform_window_init_properties.h"
@@ -1164,12 +1162,11 @@ index 4857125bb5f34..b2f73218681b9 100644
+
namespace ui {
- namespace {
-@@ -41,6 +43,13 @@ std::unique_ptr<WaylandWindow> WaylandWindow::Create(
+ // static
+@@ -29,6 +31,12 @@ std::unique_ptr<WaylandWindow> WaylandWindow::Create(
// toplevel window instead.
- if (auto* parent =
- GetParentWindow(connection, properties.parent_widget)) {
-+
+ if (auto* parent = connection->window_manager()->GetWindow(
+ properties.parent_widget)) {
+ if (connection->extensions()) {
+ window = connection->extensions()->CreateWaylandWindow(delegate,
+ connection);
@@ -1178,11 +1175,11 @@ index 4857125bb5f34..b2f73218681b9 100644
+ }
window = std::make_unique<WaylandPopup>(delegate, connection, parent);
} else {
- DLOG(WARNING) << "Failed to determine for menu/popup window.";
-@@ -52,6 +61,12 @@ std::unique_ptr<WaylandWindow> WaylandWindow::Create(
+ DLOG(WARNING) << "Failed to determine parent for menu/popup window.";
+@@ -40,6 +48,12 @@ std::unique_ptr<WaylandWindow> WaylandWindow::Create(
case PlatformWindowType::kDrag:
- // TODO(msisov): Figure out what kind of surface we need to create for
- // bubble and drag windows.
+ // TODO(crbug.com/1399419): Figure out what kind of surface we need to
+ // create for kBubble and kDrag windows.
+ if (connection->extensions()) {
+ window =
+ connection->extensions()->CreateWaylandWindow(delegate, connection);
@@ -1193,7 +1190,7 @@ index 4857125bb5f34..b2f73218681b9 100644
break;
default:
diff --git a/ui/ozone/platform/wayland/host/wayland_zwp_linux_dmabuf.cc b/ui/ozone/platform/wayland/host/wayland_zwp_linux_dmabuf.cc
-index 3db8cb5e5dba9..5d6293e016842 100644
+index 33935db68eadd..15f600ed7a126 100644
--- a/ui/ozone/platform/wayland/host/wayland_zwp_linux_dmabuf.cc
+++ b/ui/ozone/platform/wayland/host/wayland_zwp_linux_dmabuf.cc
@@ -104,7 +104,7 @@ void WaylandZwpLinuxDmabuf::CreateBuffer(const base::ScopedFD& fd,
@@ -1205,31 +1202,31 @@ index 3db8cb5e5dba9..5d6293e016842 100644
}
bool WaylandZwpLinuxDmabuf::CanCreateBufferImmed() const {
-@@ -150,7 +150,7 @@ void WaylandZwpLinuxDmabuf::NotifyRequestCreateBufferDone(
-
+@@ -147,7 +147,7 @@ void WaylandZwpLinuxDmabuf::NotifyRequestCreateBufferDone(
+ DCHECK(it != pending_params_.end());
+ std::move(it->second).Run(wl::Object<wl_buffer>(new_buffer));
pending_params_.erase(it);
-
- connection_->Flush();
+ connection_->ScheduleFlush();
}
// static
diff --git a/ui/ozone/platform/wayland/host/xdg_foreign_wrapper.cc b/ui/ozone/platform/wayland/host/xdg_foreign_wrapper.cc
-index 8b8591fabe015..9b3c6e5136d5d 100644
+index 293c09a7e35f2..d36db127ec057 100644
--- a/ui/ozone/platform/wayland/host/xdg_foreign_wrapper.cc
+++ b/ui/ozone/platform/wayland/host/xdg_foreign_wrapper.cc
-@@ -162,7 +162,7 @@ void XdgForeignWrapperImpl<zxdg_exporter_v1, zxdg_exported_v1>::
- zxdg_exported_v1_add_listener(exported_surface.exported.get(),
- &kExportedListener, this);
+@@ -158,7 +158,7 @@ void XdgForeignWrapperImpl<zxdg_exporter_v1, zxdg_exported_v1>::
+ &kXdgExportedListener, this);
+
exported_surfaces_.emplace_back(std::move(exported_surface));
- connection_->Flush();
+ connection_->ScheduleFlush();
}
template <>
-@@ -176,7 +176,7 @@ void XdgForeignWrapperImpl<zxdg_exporter_v2, zxdg_exported_v2>::
- zxdg_exported_v2_add_listener(exported_surface.exported.get(),
- &kExportedListener, this);
+@@ -174,7 +174,7 @@ void XdgForeignWrapperImpl<zxdg_exporter_v2, zxdg_exported_v2>::
+ &kXdgExportedListener, this);
+
exported_surfaces_.emplace_back(std::move(exported_surface));
- connection_->Flush();
+ connection_->ScheduleFlush();
@@ -1237,10 +1234,10 @@ index 8b8591fabe015..9b3c6e5136d5d 100644
// static
diff --git a/ui/ozone/platform/wayland/host/xdg_popup_wrapper_impl.cc b/ui/ozone/platform/wayland/host/xdg_popup_wrapper_impl.cc
-index 23b7ad8fbf3cc..2e1f8fc129bf7 100644
+index 64c8f2663ae60..b0d8f27aebbf9 100644
--- a/ui/ozone/platform/wayland/host/xdg_popup_wrapper_impl.cc
+++ b/ui/ozone/platform/wayland/host/xdg_popup_wrapper_impl.cc
-@@ -230,7 +230,7 @@ bool XDGPopupWrapperImpl::SetBounds(const gfx::Rect& new_bounds) {
+@@ -239,7 +239,7 @@ bool XDGPopupWrapperImpl::SetBounds(const gfx::Rect& new_bounds) {
xdg_popup_reposition(xdg_popup_.get(), positioner.get(),
++next_reposition_token_);
@@ -1250,23 +1247,36 @@ index 23b7ad8fbf3cc..2e1f8fc129bf7 100644
}
diff --git a/ui/ozone/platform/wayland/host/xdg_surface_wrapper_impl.cc b/ui/ozone/platform/wayland/host/xdg_surface_wrapper_impl.cc
-index 048071b4b7b76..692f562e203f0 100644
+index c4dd8c8e78ce4..67702ecc8fa4f 100644
--- a/ui/ozone/platform/wayland/host/xdg_surface_wrapper_impl.cc
+++ b/ui/ozone/platform/wayland/host/xdg_surface_wrapper_impl.cc
-@@ -40,7 +40,7 @@ bool XDGSurfaceWrapperImpl::Initialize() {
- }
+@@ -39,7 +39,7 @@ bool XDGSurfaceWrapperImpl::Initialize() {
+ };
+ xdg_surface_add_listener(xdg_surface_.get(), &kXdgSurfaceListener, this);
- xdg_surface_add_listener(xdg_surface_.get(), &xdg_surface_listener, this);
- connection_->Flush();
+ connection_->ScheduleFlush();
return true;
}
+diff --git a/ui/ozone/platform/wayland/host/xdg_toplevel_wrapper_impl.cc b/ui/ozone/platform/wayland/host/xdg_toplevel_wrapper_impl.cc
+index 0673c59185348..b9462c60a2eee 100644
+--- a/ui/ozone/platform/wayland/host/xdg_toplevel_wrapper_impl.cc
++++ b/ui/ozone/platform/wayland/host/xdg_toplevel_wrapper_impl.cc
+@@ -720,7 +720,7 @@ void XDGToplevelWrapperImpl::ShowSnapPreview(
+
+ void XDGToplevelWrapperImpl::AckRotateFocus(uint32_t serial, uint32_t handled) {
+ zaura_toplevel_ack_rotate_focus(aura_toplevel_.get(), serial, handled);
+- connection_->Flush();
++ connection_->ScheduleFlush();
+ }
+
+ XDGToplevelWrapperImpl* XDGToplevelWrapperImpl::AsXDGToplevelWrapper() {
diff --git a/ui/ozone/platform/wayland/host/zwp_primary_selection_device.cc b/ui/ozone/platform/wayland/host/zwp_primary_selection_device.cc
-index d02c76db80aa2..9e7e0a916d66d 100644
+index 9057d1bea0116..97c1624e200ac 100644
--- a/ui/ozone/platform/wayland/host/zwp_primary_selection_device.cc
+++ b/ui/ozone/platform/wayland/host/zwp_primary_selection_device.cc
-@@ -31,7 +31,7 @@ void ZwpPrimarySelectionDevice::SetSelectionSource(
+@@ -32,7 +32,7 @@ void ZwpPrimarySelectionDevice::SetSelectionSource(
auto* data_source = source ? source->data_source() : nullptr;
zwp_primary_selection_device_v1_set_selection(data_device_.get(), data_source,
serial);
@@ -1297,19 +1307,6 @@ index 9d5d79635b66d..2ca82ce6031ba 100644
return std::make_unique<ZwpPrimarySelectionSource>(data_source, connection_,
delegate);
}
-diff --git a/ui/ozone/platform/wayland/host/zxdg_surface_v6_wrapper_impl.cc b/ui/ozone/platform/wayland/host/zxdg_surface_v6_wrapper_impl.cc
-index e900f9d37e8ad..5c4c538800f65 100644
---- a/ui/ozone/platform/wayland/host/zxdg_surface_v6_wrapper_impl.cc
-+++ b/ui/ozone/platform/wayland/host/zxdg_surface_v6_wrapper_impl.cc
-@@ -43,7 +43,7 @@ bool ZXDGSurfaceV6WrapperImpl::Initialize() {
-
- zxdg_surface_v6_add_listener(zxdg_surface_v6_.get(),
- &zxdg_surface_v6_listener, this);
-- connection_->Flush();
-+ connection_->ScheduleFlush();
- return true;
- }
-
diff --git a/ui/platform_window/agl/platform_window_agl.h b/ui/platform_window/agl/platform_window_agl.h
new file mode 100644
index 0000000000000..4bc915d663e72
@@ -1353,7 +1350,7 @@ index 0000000000000..4bc915d663e72
+
+#endif // UI_PLATFORM_WINDOW_AGL_PLATFORM_WINDOW_AGL_H_
diff --git a/ui/platform_window/platform_window.h b/ui/platform_window/platform_window.h
-index a7bd3ef17a728..80f67671b88cf 100644
+index 845da9467d6a4..a9b28388ec649 100644
--- a/ui/platform_window/platform_window.h
+++ b/ui/platform_window/platform_window.h
@@ -9,6 +9,7 @@
@@ -1375,5 +1372,5 @@ index a7bd3ef17a728..80f67671b88cf 100644
PlatformWindow();
~PlatformWindow() override;
--
-2.39.2
+2.42.1
diff --git a/recipes-wam/cef/files/chromium/0007-Only-bind-to-agl_shell-if-it-s-the-browser-process.patch b/recipes-wam/cef/files/chromium/0003-agl-Only-bind-to-agl_shell-if-it-s-the-browser-proce.patch
index 8961b4649..4de7779f7 100644
--- a/recipes-wam/cef/files/chromium/0007-Only-bind-to-agl_shell-if-it-s-the-browser-process.patch
+++ b/recipes-wam/cef/files/chromium/0003-agl-Only-bind-to-agl_shell-if-it-s-the-browser-proce.patch
@@ -1,8 +1,10 @@
-From 1b60d7d98be14175b5175ee6ba4c19da03d8188e Mon Sep 17 00:00:00 2001
+From ab07780e04f15b511967cd609b70fb97abcea96f Mon Sep 17 00:00:00 2001
From: Roger Zanoni <rzanoni@igalia.com>
Date: Sat, 27 May 2023 15:55:17 +0200
-Subject: [PATCH 7/9] Only bind to agl_shell if it's the browser process
+Subject: [PATCH 03/33] [agl] Only bind to agl_shell if it's the browser
+ process
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
---
.../extensions/agl/host/wayland_extensions_agl_impl.cc | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
@@ -35,5 +37,5 @@ index 87376cbb8a9d3..075b3010ea8a1 100644
kMaxAglShellExtensionVersion);
bool is_agl_shell_interface = (strcmp(interface, "agl_shell") == 0);
--
-2.39.2
+2.42.1
diff --git a/recipes-wam/cef/files/chromium/0004-Don-t-use-DRI-for-renesas.patch b/recipes-wam/cef/files/chromium/0004-Don-t-use-DRI-for-renesas.patch
deleted file mode 100644
index 332e1f2de..000000000
--- a/recipes-wam/cef/files/chromium/0004-Don-t-use-DRI-for-renesas.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 60b8b1379f2eb154a3c58c00dabbf0f9f0bd5445 Mon Sep 17 00:00:00 2001
-From: Roger Zanoni <rzanoni@igalia.com>
-Date: Thu, 4 May 2023 10:42:06 +0200
-Subject: [PATCH 4/9] Don't use DRI for renesas
-
-This adds the use_dri flag that defauls to true and
-can be disabled if we are building CEF using ozone + wayland
-
-Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
----
- content/gpu/BUILD.gn | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/content/gpu/BUILD.gn b/content/gpu/BUILD.gn
-index 9f5f303b2f220..f7639030ac30c 100644
---- a/content/gpu/BUILD.gn
-+++ b/content/gpu/BUILD.gn
-@@ -8,6 +8,10 @@ import("//build/config/ui.gni")
- import("//gpu/vulkan/features.gni")
- import("//media/media_options.gni")
-
-+declare_args() {
-+ use_dri = true
-+}
-+
- # See //content/BUILD.gn for how this works.
- group("gpu") {
- visibility = [ "//content/*" ] # This is an internal content API.
-@@ -137,8 +141,8 @@ target(link_target_type, "gpu_sources") {
- }
-
- # Use DRI on desktop Linux builds.
-- if (current_cpu != "s390x" && current_cpu != "ppc64" && is_linux &&
-- !is_castos) {
-+ if (use_dri && current_cpu != "s390x" && current_cpu != "ppc64" &&
-+ is_linux && !is_castos) {
- configs += [ "//build/config/linux/dri" ]
- }
- }
---
-2.39.2
-
diff --git a/recipes-wam/cef/files/chromium/0008-Add-a-method-to-check-if-the-agl-window-is-configure.patch b/recipes-wam/cef/files/chromium/0004-agl-Add-a-method-to-check-if-the-agl-window-is-confi.patch
index bae799d7b..398023ca0 100644
--- a/recipes-wam/cef/files/chromium/0008-Add-a-method-to-check-if-the-agl-window-is-configure.patch
+++ b/recipes-wam/cef/files/chromium/0004-agl-Add-a-method-to-check-if-the-agl-window-is-confi.patch
@@ -1,8 +1,13 @@
-From d76f1575fd5abd31d488f7456700af0ead9712f0 Mon Sep 17 00:00:00 2001
+From 76cb42f0773ecff97710d7d5ea20cd16b8781d51 Mon Sep 17 00:00:00 2001
From: Roger Zanoni <rzanoni@igalia.com>
Date: Fri, 30 Jun 2023 10:25:10 +0200
-Subject: [PATCH 8/9] Add a method to check if the agl window is configured
+Subject: [PATCH 04/33] [agl] Add a method to check if the agl window is
+ configured
+This will be used on cef side to know the time when the window can be
+displayed.
+
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
---
ui/aura/agl/window_tree_host_agl.h | 1 +
ui/aura/agl/window_tree_host_platform_agl.cc | 4 ++++
@@ -60,5 +65,5 @@ index 4bc915d663e72..cab1f42272772 100644
} // namespace ui
--
-2.39.2
+2.42.1
diff --git a/recipes-wam/cef/files/chromium/0009-Start-using-agl-shell-version-4.patch b/recipes-wam/cef/files/chromium/0005-agl-Start-using-agl-shell-version-4.patch
index 1cf91430d..8b5a38125 100644
--- a/recipes-wam/cef/files/chromium/0009-Start-using-agl-shell-version-4.patch
+++ b/recipes-wam/cef/files/chromium/0005-agl-Start-using-agl-shell-version-4.patch
@@ -1,8 +1,9 @@
-From 87e8811a2fc95b57f958e2bdfe5f3e434ecbff1e Mon Sep 17 00:00:00 2001
+From 98de96755da14f4cabf2447ce88a01cd3cdca770 Mon Sep 17 00:00:00 2001
From: Roger Zanoni <rzanoni@igalia.com>
Date: Sun, 2 Jul 2023 11:11:07 +0200
-Subject: [PATCH 9/9] Start using agl-shell version 4
+Subject: [PATCH 05/33] [agl] Start using agl-shell version 4
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
---
ui/aura/agl/window_tree_host_agl.h | 1 +
ui/aura/agl/window_tree_host_platform_agl.cc | 4 +
@@ -343,5 +344,5 @@ index cab1f42272772..b1a6150fff950 100644
} // namespace ui
--
-2.39.2
+2.42.1
diff --git a/recipes-wam/cef/files/chromium/0006-agl-Don-t-use-DRI-for-renesas.patch b/recipes-wam/cef/files/chromium/0006-agl-Don-t-use-DRI-for-renesas.patch
new file mode 100644
index 000000000..1914661ed
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0006-agl-Don-t-use-DRI-for-renesas.patch
@@ -0,0 +1,72 @@
+From e7b779035f0d7ff1ba5bf59ea2f314f364493928 Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Thu, 4 May 2023 10:42:06 +0200
+Subject: [PATCH 06/33] [agl] Don't use DRI for renesas
+
+This adds the use_dri flag that defauls to true and
+can be disabled if we are building CEF using ozone + wayland
+
+Upstream-Status: Inappropriate, specific to the renesas boards supported
+by AGL.
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
+---
+ content/gpu/BUILD.gn | 4 ++--
+ media/gpu/sandbox/BUILD.gn | 5 +++--
+ media/media_options.gni | 3 +++
+ 3 files changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/content/gpu/BUILD.gn b/content/gpu/BUILD.gn
+index 93559f6092c7a..cef8415be7ab1 100644
+--- a/content/gpu/BUILD.gn
++++ b/content/gpu/BUILD.gn
+@@ -139,8 +139,8 @@ target(link_target_type, "gpu_sources") {
+ }
+
+ # Use DRI on desktop Linux builds.
+- if (current_cpu != "s390x" && current_cpu != "ppc64" && is_linux &&
+- !is_castos) {
++ if (use_dri && current_cpu != "s390x" && current_cpu != "ppc64" &&
++ is_linux && !is_castos) {
+ configs += [ "//build/config/linux/dri" ]
+ }
+ }
+diff --git a/media/gpu/sandbox/BUILD.gn b/media/gpu/sandbox/BUILD.gn
+index cfcb7fa80ef89..6ba37d06b29c8 100644
+--- a/media/gpu/sandbox/BUILD.gn
++++ b/media/gpu/sandbox/BUILD.gn
+@@ -4,6 +4,7 @@
+
+ import("//build/config/chromeos/ui_mode.gni")
+ import("//media/gpu/args.gni")
++import("//media/media_options.gni")
+
+ source_set("sandbox") {
+ sources = []
+@@ -30,8 +31,8 @@ source_set("sandbox") {
+ if (use_v4l2_codec) {
+ deps += [ "//media/gpu/v4l2" ]
+ }
+- if (current_cpu != "s390x" && current_cpu != "ppc64" && is_linux &&
+- !is_castos) {
++ if (use_dri && (current_cpu != "s390x" && current_cpu != "ppc64" && is_linux &&
++ !is_castos)) {
+ # For DRI_DRIVER_DIR.
+ configs += [ "//build/config/linux/dri" ]
+ }
+diff --git a/media/media_options.gni b/media/media_options.gni
+index 61d5046d0cb0e..4898c9034d448 100644
+--- a/media/media_options.gni
++++ b/media/media_options.gni
+@@ -117,6 +117,9 @@ declare_args() {
+ # Enable inclusion of VVC/H.266 parser/demuxer, and also enable VVC/H.266 decoding
+ # with hardware acceleration provided by platform. Disabled by default for all builds.
+ enable_platform_vvc = false
++
++ # used to disable dri on renesas boards
++ use_dri = true
+ }
+
+ # Use another declare_args() to allow dependence on args defined above.
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0003-Remove-the-GN-settings-done-for-clang-that-conflict-.patch b/recipes-wam/cef/files/chromium/0007-meta-browser-Remove-the-GN-settings-done-for-clang-t.patch
index 68c37f25a..75d37ab13 100644
--- a/recipes-wam/cef/files/chromium/0003-Remove-the-GN-settings-done-for-clang-that-conflict-.patch
+++ b/recipes-wam/cef/files/chromium/0007-meta-browser-Remove-the-GN-settings-done-for-clang-t.patch
@@ -1,8 +1,8 @@
-From 22de50ac2371aed1e04e4cb248beabb7f8ad3ebe Mon Sep 17 00:00:00 2001
+From 89705cfc3a4e677dd97db36c3dc9b0aa97515760 Mon Sep 17 00:00:00 2001
From: Roger Zanoni <rzanoni@igalia.com>
Date: Thu, 27 Apr 2023 16:16:28 +0200
-Subject: [PATCH 3/9] Remove the GN settings done for clang that conflict with
- OE
+Subject: [PATCH 07/33] [meta-browser] Remove the GN settings done for clang
+ that conflict with OE
clang cross compiler that is build with meta-clang has lot of these
settings built-in and specifying them here confuses the compiler
@@ -18,14 +18,14 @@ Rebased-by: Maksim Sisov <msisov@igalia.com>
Rebased-by: Randy MacLeod <randy.macleod@windriver.com>
Rebased-by: Roger Zanoni <rzanoni@igalia.com>
---
- build/config/compiler/BUILD.gn | 37 ----------------------------------
- 1 file changed, 37 deletions(-)
+ build/config/compiler/BUILD.gn | 38 ----------------------------------
+ 1 file changed, 38 deletions(-)
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
-index 531b326c498d0..244a6757613d5 100644
+index 06812fb9c2188..db763b998c4fb 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
-@@ -924,11 +924,6 @@ config("compiler_cpu_abi") {
+@@ -1112,11 +1112,6 @@ config("compiler_cpu_abi") {
]
}
} else if (current_cpu == "arm") {
@@ -37,19 +37,20 @@ index 531b326c498d0..244a6757613d5 100644
if (!is_nacl) {
cflags += [
"-march=$arm_arch",
-@@ -939,11 +934,6 @@ config("compiler_cpu_abi") {
+@@ -1126,12 +1121,6 @@ config("compiler_cpu_abi") {
+ if (arm_tune != "") {
cflags += [ "-mtune=$arm_tune" ]
}
- } else if (current_cpu == "arm64") {
+- } else if (current_cpu == "arm64") {
- if (is_clang && !is_android && !is_nacl && !is_fuchsia &&
- !(is_chromeos_lacros && is_chromeos_device)) {
- cflags += [ "--target=aarch64-linux-gnu" ]
- ldflags += [ "--target=aarch64-linux-gnu" ]
- }
- if (is_android) {
- # Outline atomics crash on Exynos 9810. http://crbug.com/1272795
- cflags += [ "-mno-outline-atomics" ]
-@@ -955,9 +945,6 @@ config("compiler_cpu_abi") {
+ } else if (current_cpu == "mipsel" && !is_nacl) {
+ ldflags += [ "-Wl,--hash-style=sysv" ]
+ if (custom_toolchain == "") {
+@@ -1139,9 +1128,6 @@ config("compiler_cpu_abi") {
if (is_android) {
cflags += [ "--target=mipsel-linux-android" ]
ldflags += [ "--target=mipsel-linux-android" ]
@@ -59,7 +60,7 @@ index 531b326c498d0..244a6757613d5 100644
}
} else {
cflags += [ "-EL" ]
-@@ -1037,8 +1024,6 @@ config("compiler_cpu_abi") {
+@@ -1221,8 +1207,6 @@ config("compiler_cpu_abi") {
ldflags += [ "-Wl,--hash-style=sysv" ]
if (custom_toolchain == "") {
if (is_clang) {
@@ -68,7 +69,7 @@ index 531b326c498d0..244a6757613d5 100644
} else {
cflags += [ "-EB" ]
ldflags += [ "-EB" ]
-@@ -1086,9 +1071,6 @@ config("compiler_cpu_abi") {
+@@ -1270,9 +1254,6 @@ config("compiler_cpu_abi") {
if (is_android) {
cflags += [ "--target=mips64el-linux-android" ]
ldflags += [ "--target=mips64el-linux-android" ]
@@ -78,7 +79,7 @@ index 531b326c498d0..244a6757613d5 100644
}
} else {
cflags += [
-@@ -1146,8 +1128,6 @@ config("compiler_cpu_abi") {
+@@ -1330,8 +1311,6 @@ config("compiler_cpu_abi") {
ldflags += [ "-Wl,--hash-style=sysv" ]
if (custom_toolchain == "") {
if (is_clang) {
@@ -87,7 +88,7 @@ index 531b326c498d0..244a6757613d5 100644
} else {
cflags += [
"-EB",
-@@ -1309,23 +1289,6 @@ config("compiler_deterministic") {
+@@ -1494,23 +1473,6 @@ config("compiler_deterministic") {
}
}
}
@@ -112,5 +113,5 @@ index 531b326c498d0..244a6757613d5 100644
config("clang_revision") {
--
-2.39.2
+2.42.1
diff --git a/recipes-wam/cef/files/chromium/0008-meta-browser-Pass-no-static-libstdc-to-gen.py.patch b/recipes-wam/cef/files/chromium/0008-meta-browser-Pass-no-static-libstdc-to-gen.py.patch
new file mode 100644
index 000000000..a31d4242c
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0008-meta-browser-Pass-no-static-libstdc-to-gen.py.patch
@@ -0,0 +1,31 @@
+From f4d754e203e4968f4c9f68f00321fa0f1c942139 Mon Sep 17 00:00:00 2001
+From: Maksim Sisov <msisov@igalia.com>
+Date: Thu, 19 Dec 2019 15:47:53 +0200
+Subject: [PATCH 08/33] [meta-browser] Pass no-static-libstdc++ to gen.py
+
+Upstream-Status: Inappropriate
+
+GN requires libstdc++.a to be installed on host systems by default,
+which is often not very common, for no particular reason.
+
+Signed-off-by: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
+Signed-off-by: Maksim Sisov <msisov@igalia.com>
+---
+ tools/gn/bootstrap/bootstrap.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tools/gn/bootstrap/bootstrap.py b/tools/gn/bootstrap/bootstrap.py
+index caf736b28946d..c5d7c428ed68a 100755
+--- a/tools/gn/bootstrap/bootstrap.py
++++ b/tools/gn/bootstrap/bootstrap.py
+@@ -113,6 +113,7 @@ def main(argv):
+ cmd = [
+ sys.executable,
+ os.path.join(GN_ROOT, 'build', 'gen.py'),
++ '--no-static-libstdc++',
+ '--no-last-commit-position',
+ '--out-path=' + gn_build_dir,
+ ]
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0009-meta-browser-IWYU-Add-includes-for-size_t-and-int64_.patch b/recipes-wam/cef/files/chromium/0009-meta-browser-IWYU-Add-includes-for-size_t-and-int64_.patch
new file mode 100644
index 000000000..8e46c2c50
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0009-meta-browser-IWYU-Add-includes-for-size_t-and-int64_.patch
@@ -0,0 +1,42 @@
+From 585854fa48a040fe31caa42e675f78c783be0098 Mon Sep 17 00:00:00 2001
+From: Ivan Murashov <ivan.murashov@lge.com>
+Date: Wed, 6 Sep 2023 19:40:47 +0000
+Subject: [PATCH 09/33] [meta-browser] IWYU: Add includes for size_t and
+ int64_t usage into sensor_reading.h
+
+Otherwise build fails when building with use_custom_libcxx=false.
+The errors example:
+services/device/public/cpp/generic_sensor/sensor_reading.h:17:40:
+error: use of undeclared identifier 'int64_t'
+services/device/public/cpp/generic_sensor/sensor_reading.h:35:5:
+error: unknown type name 'int64_t'
+services/device/public/cpp/generic_sensor/sensor_reading.h:58:20:
+error: unknown type name 'size_t'; did you mean 'std::size_t'?
+
+Bug: 957519
+Change-Id: Iec9bb821eb6284cf38d93c1cec90846e2f615fab
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4838935
+Reviewed-by: Reilly Grant <reillyg@chromium.org>
+Commit-Queue: Ivan Murashov <ivan.murashov@lge.com>
+Cr-Commit-Position: refs/heads/main@{#1193203}
+---
+ services/device/public/cpp/generic_sensor/sensor_reading.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/services/device/public/cpp/generic_sensor/sensor_reading.h b/services/device/public/cpp/generic_sensor/sensor_reading.h
+index 7df8278649a23..c653bec632cc6 100644
+--- a/services/device/public/cpp/generic_sensor/sensor_reading.h
++++ b/services/device/public/cpp/generic_sensor/sensor_reading.h
+@@ -5,6 +5,9 @@
+ #ifndef SERVICES_DEVICE_PUBLIC_CPP_GENERIC_SENSOR_SENSOR_READING_H_
+ #define SERVICES_DEVICE_PUBLIC_CPP_GENERIC_SENSOR_SENSOR_READING_H_
+
++#include <stddef.h>
++#include <stdint.h>
++
+ #include <type_traits>
+
+ namespace device {
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0010-meta-browser-BUILD-do-not-specify-march-on-arm.patch b/recipes-wam/cef/files/chromium/0010-meta-browser-BUILD-do-not-specify-march-on-arm.patch
new file mode 100644
index 000000000..5936248ec
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0010-meta-browser-BUILD-do-not-specify-march-on-arm.patch
@@ -0,0 +1,43 @@
+From 5d216a0f4d6312531bc03ce8c878dc251b67c589 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 22 Jan 2019 00:17:41 -0800
+Subject: [PATCH 10/33] [meta-browser] BUILD: do not specify march on arm
+
+Do not try to set the guessed values for march/mtune/float-abi
+OE config machinary has computed these values already and fed it
+via compiler cmdline to chromium build
+
+I think upstream should check for the values on compiler cmdline
+before overriding these
+
+Upstream-Status: Inappropriate [OE-Specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ build/config/compiler/BUILD.gn | 10 ----------
+ 1 file changed, 10 deletions(-)
+
+diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
+index db763b998c4fb..6d87a2b03fa04 100644
+--- a/build/config/compiler/BUILD.gn
++++ b/build/config/compiler/BUILD.gn
+@@ -1111,16 +1111,6 @@ config("compiler_cpu_abi") {
+ "-msse3",
+ ]
+ }
+- } else if (current_cpu == "arm") {
+- if (!is_nacl) {
+- cflags += [
+- "-march=$arm_arch",
+- "-mfloat-abi=$arm_float_abi",
+- ]
+- }
+- if (arm_tune != "") {
+- cflags += [ "-mtune=$arm_tune" ]
+- }
+ } else if (current_cpu == "mipsel" && !is_nacl) {
+ ldflags += [ "-Wl,--hash-style=sysv" ]
+ if (custom_toolchain == "") {
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0011-meta-browser-Avoid-parenthesized-initialization-of-a.patch b/recipes-wam/cef/files/chromium/0011-meta-browser-Avoid-parenthesized-initialization-of-a.patch
new file mode 100644
index 000000000..dbdda920b
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0011-meta-browser-Avoid-parenthesized-initialization-of-a.patch
@@ -0,0 +1,164 @@
+From 03e9492ef563af17682683b6db5761d1c2ece8cc Mon Sep 17 00:00:00 2001
+From: Max Ihlenfeldt <max@igalia.com>
+Date: Thu, 3 Aug 2023 13:31:15 +0000
+Subject: [PATCH 11/33] [meta-browser] Avoid parenthesized initialization of
+ aggregates
+
+clang < 16 doesn't support C++20's "Parenthesized initialization of
+aggregates" [1]. To fix build errors with older clang versions, we need
+to either explicitly define a constructor that does the initialization,
+or initialize the aggregate using curly braces.
+
+[1] https://clang.llvm.org/cxx_status.html
+
+Upstream-Status: Inappropriate [specific to older versions of clang]
+Signed-off-by: Max Ihlenfeldt <max@igalia.com>
+---
+ .../browser/content_settings/one_time_permission_provider.h | 1 +
+ chrome/browser/ui/omnibox/chrome_omnibox_client.cc | 4 ++--
+ chrome/test/chromedriver/chrome/client_hints.h | 1 +
+ .../display_embedder/skia_output_surface_impl_on_gpu.cc | 2 +-
+ net/dns/host_resolver_cache.cc | 2 +-
+ .../blink/renderer/modules/canvas/canvas2d/canvas_style.cc | 4 ++--
+ .../blink/renderer/platform/fonts/palette_interpolation.cc | 2 +-
+ ui/base/wayland/color_manager_util.h | 5 +++++
+ 8 files changed, 14 insertions(+), 7 deletions(-)
+
+diff --git a/chrome/browser/content_settings/one_time_permission_provider.h b/chrome/browser/content_settings/one_time_permission_provider.h
+index 839bec7daff97..2a000003507cf 100644
+--- a/chrome/browser/content_settings/one_time_permission_provider.h
++++ b/chrome/browser/content_settings/one_time_permission_provider.h
+@@ -92,6 +92,7 @@ class OneTimePermissionProvider
+ ContentSettingsType type;
+ ContentSettingsPattern primary_pattern;
+ ContentSettingsPattern secondary_pattern;
++ ContentSettingEntry(ContentSettingsType t, ContentSettingsPattern p, ContentSettingsPattern s) : type(t), primary_pattern(p), secondary_pattern(s) {}
+ };
+
+ void DeleteEntriesAndNotify(
+diff --git a/chrome/browser/ui/omnibox/chrome_omnibox_client.cc b/chrome/browser/ui/omnibox/chrome_omnibox_client.cc
+index 7ee2e0645e6c8..e036eeea4a5f9 100644
+--- a/chrome/browser/ui/omnibox/chrome_omnibox_client.cc
++++ b/chrome/browser/ui/omnibox/chrome_omnibox_client.cc
+@@ -474,10 +474,10 @@ void ChromeOmniboxClient::OnAutocompleteAccept(
+ alternative_nav_match);
+
+ // Store the details necessary to open the omnibox match via browser commands.
+- location_bar_->set_navigation_params(LocationBar::NavigationParams(
++ location_bar_->set_navigation_params(LocationBar::NavigationParams {
+ destination_url, disposition, transition, match_selection_timestamp,
+ destination_url_entered_without_scheme,
+- destination_url_entered_with_http_scheme));
++ destination_url_entered_with_http_scheme});
+
+ if (browser_) {
+ auto navigation = chrome::OpenCurrentURL(browser_);
+diff --git a/chrome/test/chromedriver/chrome/client_hints.h b/chrome/test/chromedriver/chrome/client_hints.h
+index 8c13bd3321c5e..42dc1acf75ec5 100644
+--- a/chrome/test/chromedriver/chrome/client_hints.h
++++ b/chrome/test/chromedriver/chrome/client_hints.h
+@@ -19,6 +19,7 @@ struct BrandVersion {
+ // * "major version" for "brands",
+ // * "full version" for "fullVersionList".
+ std::string version;
++ BrandVersion(std::string b, std::string v) : brand(b), version(v) {}
+ };
+
+ // User-Agent Client Hints
+diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
+index 9e04843c454e3..e4981a96bbb06 100644
+--- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
++++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
+@@ -1521,7 +1521,7 @@ void SkiaOutputSurfaceImplOnGpu::CopyOutputNV12(
+
+ // Issue readbacks from the surfaces:
+ for (size_t i = 0; i < CopyOutputResult::kNV12MaxPlanes; ++i) {
+- SkISize size(plane_surfaces[i]->width(), plane_surfaces[i]->height());
++ SkISize size {plane_surfaces[i]->width(), plane_surfaces[i]->height()};
+ SkImageInfo dst_info = SkImageInfo::Make(
+ size, (i == 0) ? kAlpha_8_SkColorType : kR8G8_unorm_SkColorType,
+ kUnpremul_SkAlphaType);
+diff --git a/net/dns/host_resolver_cache.cc b/net/dns/host_resolver_cache.cc
+index e54ed00c913ba..7d1165e7fcacf 100644
+--- a/net/dns/host_resolver_cache.cc
++++ b/net/dns/host_resolver_cache.cc
+@@ -161,7 +161,7 @@ void HostResolverCache::Set(
+
+ std::string domain_name = result->domain_name();
+ entries_.emplace(
+- Key(std::move(domain_name), network_anonymization_key),
++ Key {std::move(domain_name), network_anonymization_key},
+ Entry(std::move(result), source, secure, staleness_generation_));
+
+ if (entries_.size() > max_entries_) {
+diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_style.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_style.cc
+index 883d769ca4b24..3dcd0d73468fc 100644
+--- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_style.cc
++++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_style.cc
+@@ -83,12 +83,12 @@ void CanvasStyle::ApplyToFlags(cc::PaintFlags& flags,
+ case kGradient:
+ GetCanvasGradient()->GetGradient()->ApplyToFlags(flags, SkMatrix::I(),
+ ImageDrawOptions());
+- flags.setColor(SkColor4f(0.0f, 0.0f, 0.0f, global_alpha));
++ flags.setColor(SkColor4f {0.0f, 0.0f, 0.0f, global_alpha});
+ break;
+ case kImagePattern:
+ GetCanvasPattern()->GetPattern()->ApplyToFlags(
+ flags, AffineTransformToSkMatrix(GetCanvasPattern()->GetTransform()));
+- flags.setColor(SkColor4f(0.0f, 0.0f, 0.0f, global_alpha));
++ flags.setColor(SkColor4f {0.0f, 0.0f, 0.0f, global_alpha});
+ break;
+ default:
+ NOTREACHED();
+diff --git a/third_party/blink/renderer/platform/fonts/palette_interpolation.cc b/third_party/blink/renderer/platform/fonts/palette_interpolation.cc
+index 1ce08e956a7aa..d6521525a52f6 100644
+--- a/third_party/blink/renderer/platform/fonts/palette_interpolation.cc
++++ b/third_party/blink/renderer/platform/fonts/palette_interpolation.cc
+@@ -31,7 +31,7 @@ Vector<FontPalette::FontPaletteOverride> PaletteInterpolation::MixColorRecords(
+ color_interpolation_space, hue_interpolation_method, start_color,
+ end_color, percentage, alpha_multiplier);
+
+- FontPalette::FontPaletteOverride result_color_record(i, result_color);
++ FontPalette::FontPaletteOverride result_color_record {static_cast<int>(i), result_color};
+ result_color_records.push_back(result_color_record);
+ }
+ return result_color_records;
+diff --git a/ui/base/wayland/color_manager_util.h b/ui/base/wayland/color_manager_util.h
+index fa1dd422c0e60..c54ace574e52e 100644
+--- a/ui/base/wayland/color_manager_util.h
++++ b/ui/base/wayland/color_manager_util.h
+@@ -23,26 +23,31 @@ constexpr uint32_t kDefaultSinceVersion = 1;
+ struct TransferFnVersion {
+ skcms_TransferFunction transfer_fn;
+ uint32_t version;
++ TransferFnVersion(skcms_TransferFunction t, uint32_t v) : transfer_fn(t), version(v) {}
+ };
+
+ struct TransferVersion {
+ gfx::ColorSpace::TransferID transfer;
+ uint32_t version;
++ TransferVersion(gfx::ColorSpace::TransferID t, uint32_t v) : transfer(t), version(v) {}
+ };
+
+ struct PrimaryVersion {
+ gfx::ColorSpace::PrimaryID primary;
+ uint32_t version;
++ PrimaryVersion(gfx::ColorSpace::PrimaryID p, uint32_t v) : primary(p), version(v) {}
+ };
+
+ struct MatrixVersion {
+ gfx::ColorSpace::MatrixID matrix;
+ uint32_t version;
++ MatrixVersion(gfx::ColorSpace::MatrixID m, uint32_t v) : matrix(m), version(v) {}
+ };
+
+ struct RangeVersion {
+ gfx::ColorSpace::RangeID range;
+ uint32_t version;
++ RangeVersion(gfx::ColorSpace::RangeID r, uint32_t v) : range(r), version(v) {}
+ };
+
+ // A map from the zcr_color_manager_v1 chromaticity_names enum values
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0012-meta-browser-Fix-constexpr-variable-cannot-have-non-.patch b/recipes-wam/cef/files/chromium/0012-meta-browser-Fix-constexpr-variable-cannot-have-non-.patch
new file mode 100644
index 000000000..3a91c1ddf
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0012-meta-browser-Fix-constexpr-variable-cannot-have-non-.patch
@@ -0,0 +1,78 @@
+From dcc972ec3451eaf88c2289a6f4852b24e901f26d Mon Sep 17 00:00:00 2001
+From: Max Ihlenfeldt <max@igalia.com>
+Date: Thu, 31 Aug 2023 10:27:47 +0000
+Subject: [PATCH 12/33] [meta-browser] Fix "constexpr variable cannot have
+ non-literal type" errors
+
+Something about Chromium's `base::flat_map` /
+`base::internal::flat_tree` isn't considered a literal type by older
+clang versions, meaning they can't be used in constexpr expressions. We
+need to change them to be const instead.
+
+Upstream-Status: Inappropriate [specific to older versions of clang]
+Signed-off-by: Max Ihlenfeldt <max@igalia.com>
+---
+ ui/base/wayland/color_manager_util.h | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/ui/base/wayland/color_manager_util.h b/ui/base/wayland/color_manager_util.h
+index c54ace574e52e..e25abe8e5d722 100644
+--- a/ui/base/wayland/color_manager_util.h
++++ b/ui/base/wayland/color_manager_util.h
+@@ -53,7 +53,7 @@ struct RangeVersion {
+ // A map from the zcr_color_manager_v1 chromaticity_names enum values
+ // representing well-known chromaticities, to their equivalent PrimaryIDs.
+ // See components/exo/wayland/protocol/chrome-color-management.xml
+-constexpr auto kChromaticityMap = base::MakeFixedFlatMap<
++const auto kChromaticityMap = base::MakeFixedFlatMap<
+ zcr_color_manager_v1_chromaticity_names,
+ PrimaryVersion>(
+ {{ZCR_COLOR_MANAGER_V1_CHROMATICITY_NAMES_BT601_525_LINE,
+@@ -108,7 +108,7 @@ constexpr auto kChromaticityMap = base::MakeFixedFlatMap<
+ // A map from the zcr_color_manager_v1 eotf_names enum values
+ // representing well-known EOTFs, to their equivalent TransferIDs.
+ // See components/exo/wayland/protocol/chrome-color-management.xml
+-constexpr auto kEotfMap = base::MakeFixedFlatMap<
++const auto kEotfMap = base::MakeFixedFlatMap<
+ zcr_color_manager_v1_eotf_names,
+ TransferVersion>({
+ {ZCR_COLOR_MANAGER_V1_EOTF_NAMES_LINEAR,
+@@ -176,7 +176,7 @@ constexpr auto kEotfMap = base::MakeFixedFlatMap<
+ // A map from the SDR zcr_color_manager_v1 eotf_names enum values
+ // representing well-known EOTFs, to their equivalent transfer functions.
+ // See components/exo/wayland/protocol/chrome-color-management.xml
+-constexpr auto kTransferMap =
++const auto kTransferMap =
+ base::MakeFixedFlatMap<zcr_color_manager_v1_eotf_names, TransferFnVersion>({
+ {ZCR_COLOR_MANAGER_V1_EOTF_NAMES_LINEAR,
+ TransferFnVersion(SkNamedTransferFn::kLinear, kDefaultSinceVersion)},
+@@ -196,7 +196,7 @@ constexpr auto kTransferMap =
+ // A map from the HDR zcr_color_manager_v1 eotf_names enum values
+ // representing well-known EOTFs, to their equivalent transfer functions.
+ // See components/exo/wayland/protocol/chrome-color-management.xml
+-constexpr auto kHDRTransferMap =
++const auto kHDRTransferMap =
+ base::MakeFixedFlatMap<zcr_color_manager_v1_eotf_names, TransferFnVersion>(
+ {{ZCR_COLOR_MANAGER_V1_EOTF_NAMES_LINEAR,
+ TransferFnVersion(SkNamedTransferFn::kLinear, kDefaultSinceVersion)},
+@@ -214,7 +214,7 @@ constexpr auto kHDRTransferMap =
+
+ // A map from zcr_color_manager_v1 matrix_names enum values to
+ // gfx::ColorSpace::MatrixIDs.
+-constexpr auto kMatrixMap =
++const auto kMatrixMap =
+ base::MakeFixedFlatMap<zcr_color_manager_v1_matrix_names, MatrixVersion>(
+ {{ZCR_COLOR_MANAGER_V1_MATRIX_NAMES_RGB,
+ MatrixVersion(gfx::ColorSpace::MatrixID::RGB, kDefaultSinceVersion)},
+@@ -251,7 +251,7 @@ constexpr auto kMatrixMap =
+
+ // A map from zcr_color_manager_v1 range_names enum values to
+ // gfx::ColorSpace::RangeIDs.
+-constexpr auto kRangeMap =
++const auto kRangeMap =
+ base::MakeFixedFlatMap<zcr_color_manager_v1_range_names, RangeVersion>(
+ {{ZCR_COLOR_MANAGER_V1_RANGE_NAMES_LIMITED,
+ RangeVersion(gfx::ColorSpace::RangeID::LIMITED,
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0013-meta-browser-Add-missing-typename-s.patch b/recipes-wam/cef/files/chromium/0013-meta-browser-Add-missing-typename-s.patch
new file mode 100644
index 000000000..8740b81aa
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0013-meta-browser-Add-missing-typename-s.patch
@@ -0,0 +1,105 @@
+From 210019ce23ea273a13c77fedb3e674a47c67214a Mon Sep 17 00:00:00 2001
+From: Max Ihlenfeldt <max@igalia.com>
+Date: Mon, 12 Jun 2023 16:52:44 +0000
+Subject: [PATCH 13/33] [meta-browser] Add missing "typename"s
+
+This adds some `typename`s in locations where they are needed in older
+versions of clang (probably < 16).
+
+Upstream-Status: Inappropriate [specific to older versions of clang]
+Signed-off-by: Max Ihlenfeldt <max@igalia.com>
+---
+ .../download/bubble/download_bubble_update_service.cc | 6 +++---
+ components/optimization_guide/core/tflite_model_executor.h | 2 +-
+ .../browser/web_ui_browser_interface_broker_registry.h | 6 +++---
+ .../core/html/parser/html_document_parser_fastpath.cc | 2 +-
+ .../renderer/core/paint/object_paint_properties_sparse.h | 4 ++--
+ 5 files changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/chrome/browser/download/bubble/download_bubble_update_service.cc b/chrome/browser/download/bubble/download_bubble_update_service.cc
+index 93ec91e38b9b3..acd25f25d1579 100644
+--- a/chrome/browser/download/bubble/download_bubble_update_service.cc
++++ b/chrome/browser/download/bubble/download_bubble_update_service.cc
+@@ -91,7 +91,7 @@ ItemSortKey GetSortKey(const Item& item) {
+ // Helper to get an iterator to the last element in the cache. The cache
+ // must not be empty.
+ template <typename Item>
+-SortedItems<Item>::const_iterator GetLastIter(const SortedItems<Item>& cache) {
++typename SortedItems<Item>::const_iterator GetLastIter(const SortedItems<Item>& cache) {
+ CHECK(!cache.empty());
+ auto it = cache.end();
+ return std::prev(it);
+@@ -967,9 +967,9 @@ bool DownloadBubbleUpdateService::CacheManager::RemoveItemFromCacheImpl(
+ }
+
+ template <typename Id, typename Item>
+-SortedItems<Item>::iterator
++typename SortedItems<Item>::iterator
+ DownloadBubbleUpdateService::CacheManager::RemoveItemFromCacheByIter(
+- SortedItems<Item>::iterator iter,
++ typename SortedItems<Item>::iterator iter,
+ SortedItems<Item>& cache,
+ IterMap<Id, Item>& iter_map) {
+ CHECK(iter != cache.end());
+diff --git a/components/optimization_guide/core/tflite_model_executor.h b/components/optimization_guide/core/tflite_model_executor.h
+index bbb5208aae904..027ae8e101634 100644
+--- a/components/optimization_guide/core/tflite_model_executor.h
++++ b/components/optimization_guide/core/tflite_model_executor.h
+@@ -240,7 +240,7 @@ class TFLiteModelExecutor : public ModelExecutor<OutputType, InputType> {
+ void SendForBatchExecution(
+ BatchExecutionCallback callback_on_complete,
+ base::TimeTicks start_time,
+- ModelExecutor<OutputType, InputType>::ConstRefInputVector inputs)
++ typename ModelExecutor<OutputType, InputType>::ConstRefInputVector inputs)
+ override {
+ DCHECK(execution_task_runner_->RunsTasksInCurrentSequence());
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+diff --git a/content/public/browser/web_ui_browser_interface_broker_registry.h b/content/public/browser/web_ui_browser_interface_broker_registry.h
+index 0a419be66b325..7253c9680f722 100644
+--- a/content/public/browser/web_ui_browser_interface_broker_registry.h
++++ b/content/public/browser/web_ui_browser_interface_broker_registry.h
+@@ -127,10 +127,10 @@ class CONTENT_EXPORT WebUIBrowserInterfaceBrokerRegistry {
+ //
+ // TODO(crbug.com/1407936): Point to WebUIJsBridge documentation.
+ template <typename ControllerType>
+- JsBridgeTraits<ControllerType>::BinderInitializer& ForWebUIWithJsBridge() {
++ typename JsBridgeTraits<ControllerType>::BinderInitializer& ForWebUIWithJsBridge() {
+ using Traits = JsBridgeTraits<ControllerType>;
+- using Interface = Traits::Interface;
+- using JsBridgeBinderInitializer = Traits::BinderInitializer;
++ using Interface = typename Traits::Interface;
++ using JsBridgeBinderInitializer = typename Traits::BinderInitializer;
+
+ // WebUIController::GetType() requires an instantiated WebUIController
+ // (because it's a virtual method and can't be static). Here we only have
+diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser_fastpath.cc b/third_party/blink/renderer/core/html/parser/html_document_parser_fastpath.cc
+index 4b5b6701a591b..59e1262a06e37 100644
+--- a/third_party/blink/renderer/core/html/parser/html_document_parser_fastpath.cc
++++ b/third_party/blink/renderer/core/html/parser/html_document_parser_fastpath.cc
+@@ -169,7 +169,7 @@ class HTMLFastPathParser {
+ using Span = base::span<const Char>;
+ using USpan = base::span<const UChar>;
+ // 32 matches that used by HTMLToken::Attribute.
+- typedef std::conditional<std::is_same_v<Char, UChar>,
++ typedef typename std::conditional<std::is_same_v<Char, UChar>,
+ UCharLiteralBuffer<32>,
+ LCharLiteralBuffer<32>>::type LiteralBufferType;
+ typedef UCharLiteralBuffer<32> UCharLiteralBufferType;
+diff --git a/third_party/blink/renderer/core/paint/object_paint_properties_sparse.h b/third_party/blink/renderer/core/paint/object_paint_properties_sparse.h
+index 9adc6dfac54db..be94e55af7cf6 100644
+--- a/third_party/blink/renderer/core/paint/object_paint_properties_sparse.h
++++ b/third_party/blink/renderer/core/paint/object_paint_properties_sparse.h
+@@ -272,8 +272,8 @@ class CORE_EXPORT ObjectPaintPropertiesSparse : public ObjectPaintProperties {
+ NodeList& nodes,
+ NodeId node_id,
+ const ParentType& parent,
+- NodeType::State&& state,
+- const NodeType::AnimationState& animation_state =
++ typename NodeType::State&& state,
++ const typename NodeType::AnimationState& animation_state =
+ NodeType::AnimationState()) {
+ // First, check if we need to add a new node.
+ if (!nodes.HasField(node_id)) {
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0014-meta-browser-Avoid-std-ranges-find_if.patch b/recipes-wam/cef/files/chromium/0014-meta-browser-Avoid-std-ranges-find_if.patch
new file mode 100644
index 000000000..2bd12fae1
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0014-meta-browser-Avoid-std-ranges-find_if.patch
@@ -0,0 +1,70 @@
+From a577e7a76e6002e50b5ab27514b7f49d4070499c Mon Sep 17 00:00:00 2001
+From: Max Ihlenfeldt <max@igalia.com>
+Date: Wed, 30 Aug 2023 16:06:19 +0000
+Subject: [PATCH 14/33] [meta-browser] Avoid std::ranges::find_if()
+
+std::ranges::find_if() was introduced in C++20, and older versions of
+clang don't support it. We can instead use Chromium's `base::ranges`
+library, which is supported.
+
+Upstream-Status: Inappropriate [specific to older versions of clang]
+Signed-off-by: Max Ihlenfeldt <max@igalia.com>
+---
+ .../password_manager/core/browser/ui/passwords_grouper.cc | 3 ++-
+ components/webauthn/core/browser/passkey_sync_bridge.cc | 5 +++--
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/components/password_manager/core/browser/ui/passwords_grouper.cc b/components/password_manager/core/browser/ui/passwords_grouper.cc
+index 1b016e0eb9561..d259c6accf246 100644
+--- a/components/password_manager/core/browser/ui/passwords_grouper.cc
++++ b/components/password_manager/core/browser/ui/passwords_grouper.cc
+@@ -8,6 +8,7 @@
+ #include "base/containers/flat_set.h"
+ #include "base/strings/escape.h"
+ #include "base/strings/string_util.h"
++#include "base/ranges/algorithm.h"
+ #include "components/password_manager/core/browser/affiliation/affiliation_service.h"
+ #include "components/password_manager/core/browser/affiliation/affiliation_utils.h"
+ #include "components/password_manager/core/browser/passkey_credential.h"
+@@ -277,7 +278,7 @@ absl::optional<PasskeyCredential> PasswordsGrouper::GetPasskeyFor(
+ const std::vector<PasskeyCredential>& passkeys =
+ map_group_id_to_credentials_[group_id_iterator->second].passkeys;
+ const auto passkey_it =
+- std::ranges::find_if(passkeys, [&credential](const auto& passkey) {
++ base::ranges::find_if(passkeys, [&credential](const auto& passkey) {
+ return credential.passkey_credential_id == passkey.credential_id();
+ });
+ if (passkey_it == passkeys.end()) {
+diff --git a/components/webauthn/core/browser/passkey_sync_bridge.cc b/components/webauthn/core/browser/passkey_sync_bridge.cc
+index 93129fed756aa..794c696fcff04 100644
+--- a/components/webauthn/core/browser/passkey_sync_bridge.cc
++++ b/components/webauthn/core/browser/passkey_sync_bridge.cc
+@@ -16,6 +16,7 @@
+ #include "base/containers/span.h"
+ #include "base/feature_list.h"
+ #include "base/functional/callback_helpers.h"
++#include "base/ranges/algorithm.h"
+ #include "base/strings/string_number_conversions.h"
+ #include "base/trace_event/trace_event.h"
+ #include "components/sync/base/features.h"
+@@ -258,7 +259,7 @@ PasskeySyncBridge::GetPasskeysForRelyingPartyId(
+ bool PasskeySyncBridge::DeletePasskey(const std::string& credential_id) {
+ // Find the credential with the given |credential_id|.
+ const auto passkey_it =
+- std::ranges::find_if(data_, [&credential_id](const auto& passkey) {
++ base::ranges::find_if(data_, [&credential_id](const auto& passkey) {
+ return passkey.second.credential_id() == credential_id;
+ });
+ if (passkey_it == data_.end()) {
+@@ -309,7 +310,7 @@ bool PasskeySyncBridge::UpdatePasskey(const std::string& credential_id,
+ PasskeyChange change) {
+ // Find the credential with the given |credential_id|.
+ const auto passkey_it =
+- std::ranges::find_if(data_, [&credential_id](const auto& passkey) {
++ base::ranges::find_if(data_, [&credential_id](const auto& passkey) {
+ return passkey.second.credential_id() == credential_id;
+ });
+ if (passkey_it == data_.end()) {
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0015-meta-browser-Avoid-capturing-structured-bindings.patch b/recipes-wam/cef/files/chromium/0015-meta-browser-Avoid-capturing-structured-bindings.patch
new file mode 100644
index 000000000..7b612b84f
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0015-meta-browser-Avoid-capturing-structured-bindings.patch
@@ -0,0 +1,56 @@
+From a1c05a94dc5b999bf22f1beedf3e3a9468775775 Mon Sep 17 00:00:00 2001
+From: Max Ihlenfeldt <max@igalia.com>
+Date: Tue, 13 Jun 2023 15:48:12 +0000
+Subject: [PATCH 15/33] [meta-browser] Avoid capturing structured bindings
+
+Similar to https://crrev.com/c/4526976, this patch removes some uses of
+structured bindings that lead to compile errors when using older
+versions of clang (observed with clang 15).
+
+Upstream-Status: Inappropriate [specific to older versions of clang]
+Signed-off-by: Max Ihlenfeldt <max@igalia.com>
+---
+ .../service_worker/service_worker_context_wrapper.cc | 3 ++-
+ media/base/cdm_promise_adapter.cc | 8 ++++----
+ 2 files changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/content/browser/service_worker/service_worker_context_wrapper.cc b/content/browser/service_worker/service_worker_context_wrapper.cc
+index 3267cdb340819..de88ef7e565cb 100644
+--- a/content/browser/service_worker/service_worker_context_wrapper.cc
++++ b/content/browser/service_worker/service_worker_context_wrapper.cc
+@@ -1412,9 +1412,10 @@ void ServiceWorkerContextWrapper::MaybeProcessPendingWarmUpRequest() {
+ auto [document_url, key, callback] = std::move(*request);
+
+ DCHECK(document_url.is_valid());
++ auto document_url_spec = document_url.spec();
+ TRACE_EVENT1("ServiceWorker",
+ "ServiceWorkerContextWrapper::MaybeProcessPendingWarmUpRequest",
+- "document_url", document_url.spec());
++ "document_url", document_url_spec);
+
+ context_core_->registry()->FindRegistrationForClientUrl(
+ ServiceWorkerRegistry::Purpose::kNotForNavigation,
+diff --git a/media/base/cdm_promise_adapter.cc b/media/base/cdm_promise_adapter.cc
+index f013809a62e25..144809b9696c3 100644
+--- a/media/base/cdm_promise_adapter.cc
++++ b/media/base/cdm_promise_adapter.cc
+@@ -94,12 +94,12 @@ void CdmPromiseAdapter::RejectPromise(uint32_t promise_id,
+ void CdmPromiseAdapter::Clear(ClearReason reason) {
+ // Reject all outstanding promises.
+ DCHECK(thread_checker_.CalledOnValidThread());
+- for (auto& [promise_id, promise] : promises_) {
++ for (auto& promise : promises_) {
+ TRACE_EVENT_NESTABLE_ASYNC_END1(
+- "media", "CdmPromise", TRACE_ID_WITH_SCOPE("CdmPromise", promise_id),
++ "media", "CdmPromise", TRACE_ID_WITH_SCOPE("CdmPromise", promise.first),
+ "status", "cleared");
+- promise->reject(CdmPromise::Exception::INVALID_STATE_ERROR,
+- ToSystemCode(reason), "Operation aborted.");
++ promise.second->reject(CdmPromise::Exception::INVALID_STATE_ERROR,
++ ToSystemCode(reason), "Operation aborted.");
+ }
+ promises_.clear();
+ }
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0016-meta-browser-Delete-compiler-options-not-available-i.patch b/recipes-wam/cef/files/chromium/0016-meta-browser-Delete-compiler-options-not-available-i.patch
new file mode 100644
index 000000000..0956f5f3c
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0016-meta-browser-Delete-compiler-options-not-available-i.patch
@@ -0,0 +1,32 @@
+From 267609878c7f7472990ee5b480a9ab1c54dad8b2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 4 Dec 2019 19:06:54 -0800
+Subject: [PATCH 16/33] [meta-browser] Delete compiler options not available in
+ release versions of clang _yet_
+
+Upstream-Status: Inappropriate [ clang/master already supports them ]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Randy MacLeod <Randy.MacLeod@windriver.com>
+---
+ build/config/compiler/BUILD.gn | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
+index 6d87a2b03fa04..5762f0b4e6b0a 100644
+--- a/build/config/compiler/BUILD.gn
++++ b/build/config/compiler/BUILD.gn
+@@ -1725,6 +1725,11 @@ config("default_warnings") {
+ cflags += [
+ "-Wenum-compare-conditional",
+
++ # Disable unknown warnings, since system clang may not have
++ # backported newer warning yet unlike internal clang that
++ # chromium uses.
++ "-Wno-unknown-warning-option",
++
+ # Ignore warnings about MSVC optimization pragmas.
+ # TODO(thakis): Only for no_chromium_code? http://crbug.com/912662
+ "-Wno-ignored-pragma-optimize",
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0017-meta-browser-Don-t-pass-disable-auto-upgrade-debug-i.patch b/recipes-wam/cef/files/chromium/0017-meta-browser-Don-t-pass-disable-auto-upgrade-debug-i.patch
new file mode 100644
index 000000000..48f722e8c
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0017-meta-browser-Don-t-pass-disable-auto-upgrade-debug-i.patch
@@ -0,0 +1,39 @@
+From a8243956b0fd410bf16143b3e781144ad8964244 Mon Sep 17 00:00:00 2001
+From: Max Ihlenfeldt <max@igalia.com>
+Date: Tue, 13 Jun 2023 14:36:23 +0000
+Subject: [PATCH 17/33] [meta-browser] Don't pass
+ disable-auto-upgrade-debug-info to linker
+
+The version of aarch64-oe-linux-ld.lld we use on dunfell, kirkstone, and
+mickledore doesn't support this flag. Thus, we mustn't pass it if we
+want to avoid an "Unknown command line argument" linker error that stops
+the build.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Max Ihlenfeldt <max@igalia.com>
+---
+ build/config/compiler/BUILD.gn | 8 --------
+ 1 file changed, 8 deletions(-)
+
+diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
+index 5762f0b4e6b0a..c73b7ca6325d8 100644
+--- a/build/config/compiler/BUILD.gn
++++ b/build/config/compiler/BUILD.gn
+@@ -767,14 +767,6 @@ config("compiler") {
+ }
+
+ ldflags += [ "-Wl,-mllvm,-import-instr-limit=$import_instr_limit" ]
+-
+- if (!is_chromeos) {
+- # TODO(https://crbug.com/972449): turn on for ChromeOS when that
+- # toolchain has this flag.
+- # We only use one version of LLVM within a build so there's no need to
+- # upgrade debug info, which can be expensive since it runs the verifier.
+- ldflags += [ "-Wl,-mllvm,-disable-auto-upgrade-debug-info" ]
+- }
+ }
+
+ # TODO(https://crbug.com/1211155): investigate why this isn't effective on
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0018-meta-browser-Fix-undefined-symbol-PaintOpWriter-Seri.patch b/recipes-wam/cef/files/chromium/0018-meta-browser-Fix-undefined-symbol-PaintOpWriter-Seri.patch
new file mode 100644
index 000000000..2c953d3b0
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0018-meta-browser-Fix-undefined-symbol-PaintOpWriter-Seri.patch
@@ -0,0 +1,49 @@
+From 1b8ee706e8bb16a9b6c59c832d33b56915d1f410 Mon Sep 17 00:00:00 2001
+From: Max Ihlenfeldt <max@igalia.com>
+Date: Tue, 5 Sep 2023 09:51:38 +0000
+Subject: [PATCH 18/33] [meta-browser] Fix "undefined symbol:
+ PaintOpWriter::SerializedSize<unsigned long>()"
+
+For some reason, clang 14 (currently used on dunfell and kirkstone)
+seems to fail to correctly generate a needed instantiation of
+`cc::PaintOpWriter::SerializedSize<T>()`, and thus the final linking
+step fails with an "undefined symbol" error.
+
+We can fix this by explicitly providing a specialization, which does the
+same thing as the generic implementation.
+
+Upstream-Status: Inappropriate [specific to older versions of clang]
+Signed-off-by: Max Ihlenfeldt <max@igalia.com>
+---
+ cc/paint/paint_op_writer.h | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/cc/paint/paint_op_writer.h b/cc/paint/paint_op_writer.h
+index 70153c0aa64ac..f47eb934c1eb1 100644
+--- a/cc/paint/paint_op_writer.h
++++ b/cc/paint/paint_op_writer.h
+@@ -122,6 +122,9 @@ class CC_PAINT_EXPORT PaintOpWriter {
+ static size_t SerializedSize(const PaintRecord& record);
+ static size_t SerializedSize(const SkHighContrastConfig& config);
+
++ template<>
++ constexpr size_t SerializedSize<size_t>();
++
+ // Serialization of raw/smart pointers is not supported by default.
+ template <typename T>
+ static inline size_t SerializedSize(const T* p);
+@@ -385,6 +388,11 @@ constexpr size_t PaintOpWriter::SerializedSize<SkGainmapInfo>() {
+ SerializedSizeSimple<uint32_t>(); // fBaseImageType
+ }
+
++template<>
++constexpr size_t PaintOpWriter::SerializedSize<size_t>() {
++ return SerializedSizeSimple<size_t>();
++}
++
+ template <typename T>
+ constexpr size_t PaintOpWriter::SerializedSize() {
+ static_assert(std::is_arithmetic_v<T> || std::is_enum_v<T>);
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0019-upstream-Initialize-ServerCvc-with-designated-initia.patch b/recipes-wam/cef/files/chromium/0019-upstream-Initialize-ServerCvc-with-designated-initia.patch
new file mode 100644
index 000000000..aba255028
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0019-upstream-Initialize-ServerCvc-with-designated-initia.patch
@@ -0,0 +1,45 @@
+From 41653aae0a0de782bcfb8396a01aa1d3c98d3149 Mon Sep 17 00:00:00 2001
+From: Chisoon Jeong <chisoon.jeong@lge.com>
+Date: Tue, 12 Sep 2023 08:35:43 +0000
+Subject: [PATCH 19/33] [upstream] Initialize ServerCvc with designated
+ initializers.
+
+Replace ServerCvc initialization using aggregates from a parenthesized
+list of values, which is not a c++20 feature allowed for Chromium at
+the moment, with designated initializers.
+
+Change-Id: Ifdeb78d0ebc804016c655683ad1369dd543d4204
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4855865
+Reviewed-by: Florian Leimgruber <fleimgruber@google.com>
+Reviewed-by: Dominic Battre <battre@chromium.org>
+Commit-Queue: Dominic Battre <battre@chromium.org>
+Cr-Commit-Position: refs/heads/main@{#1195267}
+---
+ .../core/browser/webdata/autofill_sync_bridge_util.cc | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/components/autofill/core/browser/webdata/autofill_sync_bridge_util.cc b/components/autofill/core/browser/webdata/autofill_sync_bridge_util.cc
+index 634443fb4fe22..f67b90114f762 100644
+--- a/components/autofill/core/browser/webdata/autofill_sync_bridge_util.cc
++++ b/components/autofill/core/browser/webdata/autofill_sync_bridge_util.cc
+@@ -553,11 +553,13 @@ ServerCvc AutofillWalletCvcStructDataFromWalletCredentialSpecifics(
+ base::StringToInt64(wallet_credential_specifics.instrument_id(),
+ &instrument_id);
+
+- return ServerCvc(
+- instrument_id, base::UTF8ToUTF16(wallet_credential_specifics.cvc()),
+- base::Time::UnixEpoch() +
++ return ServerCvc{
++ .instrument_id = instrument_id,
++ .cvc = base::UTF8ToUTF16(wallet_credential_specifics.cvc()),
++ .last_updated_timestamp =
++ base::Time::UnixEpoch() +
+ base::Milliseconds(wallet_credential_specifics
+- .last_updated_time_unix_epoch_millis()));
++ .last_updated_time_unix_epoch_millis())};
+ }
+
+ VirtualCardUsageData VirtualCardUsageDataFromUsageSpecifics(
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0002-Don-t-look-for-depot_tools-in-chrommium-s-third_part.patch b/recipes-wam/cef/files/chromium/0020-M118-fix-Don-t-look-for-depot_tools-in-chrommium-s-t.patch
index dd05b3730..a8c01ab00 100644
--- a/recipes-wam/cef/files/chromium/0002-Don-t-look-for-depot_tools-in-chrommium-s-third_part.patch
+++ b/recipes-wam/cef/files/chromium/0020-M118-fix-Don-t-look-for-depot_tools-in-chrommium-s-t.patch
@@ -1,18 +1,23 @@
-From dd5ce9e0d0dbf55184a9c57c4c81eeaf9a7dd3a9 Mon Sep 17 00:00:00 2001
+From 814421a53454a9d35cd9d0799f68eaae8b7cf440 Mon Sep 17 00:00:00 2001
From: Roger Zanoni <rzanoni@igalia.com>
Date: Fri, 7 Apr 2023 16:28:51 +0200
-Subject: [PATCH 2/9] Don't look for depot_tools in chrommium's third_party
- folder
+Subject: [PATCH 20/33] [M118-fix] Don't look for depot_tools in chrommium's
+ third_party folder
+This caused an issue at the configure step before we starte using
+tarballs, we need to check if it still needed.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
---
build/find_depot_tools.py | 8 --------
1 file changed, 8 deletions(-)
diff --git a/build/find_depot_tools.py b/build/find_depot_tools.py
-index 94985fe7b3495..6d2adcfa63531 100755
+index f891a414837a5..592bba699c00d 100755
--- a/build/find_depot_tools.py
+++ b/build/find_depot_tools.py
-@@ -28,14 +28,6 @@ def IsRealDepotTools(path):
+@@ -27,14 +27,6 @@ def IsRealDepotTools(path):
def add_depot_tools_to_path():
"""Search for depot_tools and add it to sys.path."""
@@ -28,5 +33,5 @@ index 94985fe7b3495..6d2adcfa63531 100755
for i in sys.path:
if i.rstrip(os.sep).endswith('depot_tools') and IsRealDepotTools(i):
--
-2.39.2
+2.42.1
diff --git a/recipes-wam/cef/files/chromium/0021-M118-fix-Add-multiple-missing-includes.patch b/recipes-wam/cef/files/chromium/0021-M118-fix-Add-multiple-missing-includes.patch
new file mode 100644
index 000000000..df307082a
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0021-M118-fix-Add-multiple-missing-includes.patch
@@ -0,0 +1,69 @@
+From 99b897cb41f70222477ed55128b38ea78edc78ff Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Tue, 31 Oct 2023 10:29:32 -0300
+Subject: [PATCH 21/33] [M118-fix] Add multiple missing includes
+
+Fix build issues related to missing includes.
+
+Upstream-Status: Apparently the issue only happens on older versions of
+clang, but it's worth checking if it's applicable.
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
+---
+ chrome/browser/ui/views/dark_mode_manager_linux.h | 1 +
+ net/cert/pki/general_names.h | 1 +
+ net/filter/zstd_source_stream.cc | 1 +
+ ui/events/gesture_detection/motion_event_generic.h | 2 ++
+ 4 files changed, 5 insertions(+)
+
+diff --git a/chrome/browser/ui/views/dark_mode_manager_linux.h b/chrome/browser/ui/views/dark_mode_manager_linux.h
+index f9bcd034d141d..e98db21ef1767 100644
+--- a/chrome/browser/ui/views/dark_mode_manager_linux.h
++++ b/chrome/browser/ui/views/dark_mode_manager_linux.h
+@@ -6,6 +6,7 @@
+ #define CHROME_BROWSER_UI_VIEWS_DARK_MODE_MANAGER_LINUX_H_
+
+ #include <string>
++#include <vector>
+
+ #include "base/gtest_prod_util.h"
+ #include "base/memory/scoped_refptr.h"
+diff --git a/net/cert/pki/general_names.h b/net/cert/pki/general_names.h
+index e35e410a2fba7..7704837970178 100644
+--- a/net/cert/pki/general_names.h
++++ b/net/cert/pki/general_names.h
+@@ -6,6 +6,7 @@
+ #define NET_CERT_PKI_GENERAL_NAMES_H_
+
+ #include <memory>
++#include <string_view>
+ #include <vector>
+
+ #include "net/base/net_export.h"
+diff --git a/net/filter/zstd_source_stream.cc b/net/filter/zstd_source_stream.cc
+index bd337d14366bb..551729ac542b7 100644
+--- a/net/filter/zstd_source_stream.cc
++++ b/net/filter/zstd_source_stream.cc
+@@ -5,6 +5,7 @@
+ #include "net/filter/zstd_source_stream.h"
+
+ #include <algorithm>
++#include <unordered_map>
+ #include <utility>
+
+ #define ZSTD_STATIC_LINKING_ONLY
+diff --git a/ui/events/gesture_detection/motion_event_generic.h b/ui/events/gesture_detection/motion_event_generic.h
+index 5460f7f8adf46..e508335d47ae9 100644
+--- a/ui/events/gesture_detection/motion_event_generic.h
++++ b/ui/events/gesture_detection/motion_event_generic.h
+@@ -5,6 +5,8 @@
+ #ifndef UI_EVENTS_GESTURE_DETECTION_MOTION_EVENT_GENERIC_H_
+ #define UI_EVENTS_GESTURE_DETECTION_MOTION_EVENT_GENERIC_H_
+
++#include <vector>
++
+ #include <stddef.h>
+ #include <stdint.h>
+
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0022-M118-fix-Fix-aggregate-initialization-in-trace_log.patch b/recipes-wam/cef/files/chromium/0022-M118-fix-Fix-aggregate-initialization-in-trace_log.patch
new file mode 100644
index 000000000..39e5c6054
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0022-M118-fix-Fix-aggregate-initialization-in-trace_log.patch
@@ -0,0 +1,34 @@
+From a46e381a9007ab552d4551711611cd9d231a9f17 Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Wed, 25 Oct 2023 15:59:23 -0300
+Subject: [PATCH 22/33] [M118-fix] Fix aggregate initialization in trace_log
+
+clang 14 doesn't parenthesized initialization of aggregates, so we are
+explicitly defining the needed constructor.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
+---
+ base/trace_event/trace_log.h | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/base/trace_event/trace_log.h b/base/trace_event/trace_log.h
+index 2778526e87b78..3b7e0f0306cf5 100644
+--- a/base/trace_event/trace_log.h
++++ b/base/trace_event/trace_log.h
+@@ -420,6 +420,12 @@ class BASE_EXPORT TraceLog :
+
+ #if BUILDFLAG(USE_PERFETTO_CLIENT_LIBRARY)
+ struct TrackEventSession {
++ TrackEventSession(uint32_t internal_instance_index,
++ perfetto::DataSourceConfig config,
++ perfetto::BackendType backend_type = perfetto::kUnspecifiedBackend)
++ : internal_instance_index{internal_instance_index}
++ , config{config}
++ , backend_type{backend_type} {}
+ uint32_t internal_instance_index;
+ perfetto::DataSourceConfig config;
+ perfetto::BackendType backend_type = perfetto::kUnspecifiedBackend;
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0023-M118-fix-Add-missing-typename-keyword-in-multiple-st.patch b/recipes-wam/cef/files/chromium/0023-M118-fix-Add-missing-typename-keyword-in-multiple-st.patch
new file mode 100644
index 000000000..ea0b2c59f
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0023-M118-fix-Add-missing-typename-keyword-in-multiple-st.patch
@@ -0,0 +1,140 @@
+From a1077aa6d029f729143727ab8d25f85121f871a3 Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Thu, 26 Oct 2023 07:43:26 -0300
+Subject: [PATCH 23/33] [M118-fix] Add missing 'typename' keyword in multiple
+ statements
+
+Add the typename keywork where it's needed as this causes build issues
+in clang 14.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
+---
+ .../optimization_guide/core/tflite_model_executor.h | 8 ++++----
+ components/supervised_user/core/browser/proto_fetcher.cc | 6 +++---
+ components/supervised_user/core/browser/proto_fetcher.h | 4 ++--
+ ui/base/interaction/interactive_test_internal.h | 6 +++---
+ 4 files changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/components/optimization_guide/core/tflite_model_executor.h b/components/optimization_guide/core/tflite_model_executor.h
+index 027ae8e101634..a256a85322e54 100644
+--- a/components/optimization_guide/core/tflite_model_executor.h
++++ b/components/optimization_guide/core/tflite_model_executor.h
+@@ -262,7 +262,7 @@ class TFLiteModelExecutor : public ModelExecutor<OutputType, InputType> {
+ // Starts the synchronous execution of the model. Returns model outputs.
+ // Model needs to be loaded. Synchronous calls do not load or unload model.
+ std::vector<absl::optional<OutputType>> SendForBatchExecutionSync(
+- ModelExecutor<OutputType, InputType>::ConstRefInputVector inputs)
++ typename ModelExecutor<OutputType, InputType>::ConstRefInputVector inputs)
+ override {
+ DCHECK(execution_task_runner_->RunsTasksInCurrentSequence());
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+@@ -417,7 +417,7 @@ class TFLiteModelExecutor : public ModelExecutor<OutputType, InputType> {
+ // executes it on the model execution thread.
+ void LoadModelFileAndBatchExecute(
+ BatchExecutionCallback callback_on_complete,
+- ModelExecutor<OutputType, InputType>::ConstRefInputVector inputs) {
++ typename ModelExecutor<OutputType, InputType>::ConstRefInputVector inputs) {
+ DCHECK(execution_task_runner_->RunsTasksInCurrentSequence());
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+@@ -434,7 +434,7 @@ class TFLiteModelExecutor : public ModelExecutor<OutputType, InputType> {
+
+ // Batch executes the loaded model for inputs.
+ void BatchExecuteLoadedModel(
+- ModelExecutor<OutputType, InputType>::ConstRefInputVector inputs,
++ typename ModelExecutor<OutputType, InputType>::ConstRefInputVector inputs,
+ std::vector<absl::optional<OutputType>>* outputs) {
+ DCHECK(execution_task_runner_->RunsTasksInCurrentSequence());
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+@@ -494,7 +494,7 @@ class TFLiteModelExecutor : public ModelExecutor<OutputType, InputType> {
+ // Unloads the model if needed.
+ void BatchExecuteLoadedModelAndRunCallback(
+ BatchExecutionCallback callback_on_complete,
+- ModelExecutor<OutputType, InputType>::ConstRefInputVector inputs,
++ typename ModelExecutor<OutputType, InputType>::ConstRefInputVector inputs,
+ ExecutionStatus execution_status) {
+ DCHECK(execution_task_runner_->RunsTasksInCurrentSequence());
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+diff --git a/components/supervised_user/core/browser/proto_fetcher.cc b/components/supervised_user/core/browser/proto_fetcher.cc
+index 9c8e7b5cb88f4..92a614d75b579 100644
+--- a/components/supervised_user/core/browser/proto_fetcher.cc
++++ b/components/supervised_user/core/browser/proto_fetcher.cc
+@@ -399,7 +399,7 @@ class RetryingFetcherImpl final : public DeferredFetcherImpl<Response> {
+ RetryingFetcherImpl(const RetryingFetcherImpl&) = delete;
+ RetryingFetcherImpl& operator=(const RetryingFetcherImpl&) = delete;
+
+- void Start(ProtoFetcher<Response>::Callback callback) override {
++ void Start(typename ProtoFetcher<Response>::Callback callback) override {
+ callback_ = std::move(callback);
+ Retry();
+ }
+@@ -435,7 +435,7 @@ class RetryingFetcherImpl final : public DeferredFetcherImpl<Response> {
+ }
+
+ // Client callback.
+- ProtoFetcher<Response>::Callback callback_;
++ typename ProtoFetcher<Response>::Callback callback_;
+
+ // Retry controls.
+ base::OneShotTimer timer_;
+@@ -578,7 +578,7 @@ ParallelFetchManager<Request, Response>::ParallelFetchManager(
+ template <typename Request, typename Response>
+ void ParallelFetchManager<Request, Response>::Fetch(
+ const Request& request,
+- Fetcher::Callback callback) {
++ typename Fetcher::Callback callback) {
+ CHECK(callback) << "Use base::DoNothing() instead of empty callback.";
+ KeyType key = requests_in_flight_.Add(MakeFetcher(request));
+ requests_in_flight_.Lookup(key)->Start(
+diff --git a/components/supervised_user/core/browser/proto_fetcher.h b/components/supervised_user/core/browser/proto_fetcher.h
+index 8266c99d78a7a..9c41978aea68e 100644
+--- a/components/supervised_user/core/browser/proto_fetcher.h
++++ b/components/supervised_user/core/browser/proto_fetcher.h
+@@ -165,10 +165,10 @@ class ParallelFetchManager {
+
+ // Starts the fetch. Underlying fetcher is stored internally, and will be
+ // cleaned up after finish or when this manager is destroyed.
+- void Fetch(const Request& request, Fetcher::Callback callback);
++ void Fetch(const Request& request, typename Fetcher::Callback callback);
+
+ private:
+- using KeyType = base::IDMap<std::unique_ptr<Fetcher>>::KeyType;
++ using KeyType = typename base::IDMap<std::unique_ptr<Fetcher>>::KeyType;
+
+ // Remove fetcher under key from requests_in_flight_.
+ void Remove(KeyType key);
+diff --git a/ui/base/interaction/interactive_test_internal.h b/ui/base/interaction/interactive_test_internal.h
+index 080152fa265cd..a3c9b22f79487 100644
+--- a/ui/base/interaction/interactive_test_internal.h
++++ b/ui/base/interaction/interactive_test_internal.h
+@@ -108,7 +108,7 @@ class InteractiveTestPrivate {
+
+ // Adds `state_observer` and associates it with an element with identifier
+ // `id` and context `context`.
+- template <typename Observer, typename V = Observer::ValueType>
++ template <typename Observer, typename V = typename Observer::ValueType>
+ void AddStateObserver(ElementIdentifier id,
+ ElementContext context,
+ std::unique_ptr<Observer> state_observer);
+@@ -457,7 +457,7 @@ struct ArgsExtractor<R(Args...)> {
+ };
+
+ template <typename F>
+-using ReturnTypeOf = MaybeBindTypeHelper<F>::ReturnType;
++using ReturnTypeOf = typename MaybeBindTypeHelper<F>::ReturnType;
+
+ template <size_t N, typename F>
+ using NthArgumentOf = std::tuple_element_t<
+@@ -556,7 +556,7 @@ struct MatcherTypeHelper<const char16_t[]> {
+ };
+
+ template <typename T>
+-using MatcherTypeFor = MatcherTypeHelper<std::remove_cvref_t<T>>::ActualType;
++using MatcherTypeFor = typename MatcherTypeHelper<std::remove_cvref_t<T>>::ActualType;
+
+ template <typename T>
+ class IsMatcherHelper {
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0024-M118-fix-Fix-comparison-in-HostResolverCache.patch b/recipes-wam/cef/files/chromium/0024-M118-fix-Fix-comparison-in-HostResolverCache.patch
new file mode 100644
index 000000000..ab487339f
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0024-M118-fix-Fix-comparison-in-HostResolverCache.patch
@@ -0,0 +1,34 @@
+From 590fdfc0339a2d82f30927b7c4e35b5e24d2dcc8 Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Mon, 30 Oct 2023 08:14:34 -0300
+Subject: [PATCH 24/33] [M118-fix] Fix comparison in HostResolverCache
+
+Fixes the string_view/basic_strinc comparison:
+
+error: invalid operands to binary expression
+('tuple<...basic_string_view<char> &, ...>' and 'tuple<const std::basic_string<char> &, ...')
+ return std::tie(lhs.domain_name, *lhs.network_anonymization_key) <
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
+
+Upstream-Status: Inappropriate
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
+---
+ net/dns/host_resolver_cache.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/net/dns/host_resolver_cache.h b/net/dns/host_resolver_cache.h
+index 934e0682c9864..2bb147de0ff19 100644
+--- a/net/dns/host_resolver_cache.h
++++ b/net/dns/host_resolver_cache.h
+@@ -120,7 +120,7 @@ class NET_EXPORT HostResolverCache final {
+ struct Key {
+ ~Key();
+
+- std::string domain_name;
++ base::StringPiece domain_name;
+ NetworkAnonymizationKey network_anonymization_key;
+ };
+
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0025-M118-fix-Avoid-using-std-ranges-any_of-find_if-none_.patch b/recipes-wam/cef/files/chromium/0025-M118-fix-Avoid-using-std-ranges-any_of-find_if-none_.patch
new file mode 100644
index 000000000..fff1423ed
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0025-M118-fix-Avoid-using-std-ranges-any_of-find_if-none_.patch
@@ -0,0 +1,92 @@
+From ded11a971e690a00075c4f337fa09469b69b69a5 Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Mon, 30 Oct 2023 15:03:04 -0300
+Subject: [PATCH 25/33] [M118-fix] Avoid using
+ std::ranges::any_of/find_if/none_of/all_of
+
+Those functions are available only in newer c++ standards(C++20).
+Chromium defines those functions in base::ranges.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
+---
+ chrome/browser/ui/webauthn/sheet_models.cc | 2 +-
+ .../browser/webauthn/authenticator_request_dialog_model.cc | 2 +-
+ .../webauthn/chrome_authenticator_request_delegate.cc | 4 ++--
+ device/fido/get_assertion_request_handler.cc | 5 +++--
+ 4 files changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/chrome/browser/ui/webauthn/sheet_models.cc b/chrome/browser/ui/webauthn/sheet_models.cc
+index e72087c22dc84..1d1999fdc49c3 100644
+--- a/chrome/browser/ui/webauthn/sheet_models.cc
++++ b/chrome/browser/ui/webauthn/sheet_models.cc
+@@ -1499,7 +1499,7 @@ AuthenticatorMultiSourcePickerSheetModel::
+ using ICloudKeychainMech =
+ AuthenticatorRequestDialogModel::Mechanism::ICloudKeychain;
+ bool has_local_passkeys =
+- std::ranges::any_of(dialog_model->mechanisms(), [](const auto& mech) {
++ base::ranges::any_of(dialog_model->mechanisms(), [](const auto& mech) {
+ return absl::holds_alternative<CredentialMech>(mech.type) &&
+ absl::get<CredentialMech>(mech.type).value().source !=
+ device::AuthenticatorType::kPhone;
+diff --git a/chrome/browser/webauthn/authenticator_request_dialog_model.cc b/chrome/browser/webauthn/authenticator_request_dialog_model.cc
+index 7695aa00f44a8..fa983ddf1a166 100644
+--- a/chrome/browser/webauthn/authenticator_request_dialog_model.cc
++++ b/chrome/browser/webauthn/authenticator_request_dialog_model.cc
+@@ -495,7 +495,7 @@ void AuthenticatorRequestDialogModel::
+ // extra step. Jump to Windows instead.
+ if (base::FeatureList::IsEnabled(device::kWebAuthnNewPasskeyUI) &&
+ transport_availability_.has_win_native_api_authenticator &&
+- std::ranges::all_of(mechanisms_, [](const auto& mech) {
++ base::ranges::all_of(mechanisms_, [](const auto& mech) {
+ return absl::holds_alternative<Mechanism::WindowsAPI>(mech.type) ||
+ (absl::holds_alternative<Mechanism::Credential>(mech.type) &&
+ absl::get<Mechanism::Credential>(mech.type).value().source ==
+diff --git a/chrome/browser/webauthn/chrome_authenticator_request_delegate.cc b/chrome/browser/webauthn/chrome_authenticator_request_delegate.cc
+index 15773fad86902..6ddd5cba1d6f3 100644
+--- a/chrome/browser/webauthn/chrome_authenticator_request_delegate.cc
++++ b/chrome/browser/webauthn/chrome_authenticator_request_delegate.cc
+@@ -886,8 +886,8 @@ void ChromeAuthenticatorRequestDelegate::OnTransportAvailabilityEnumerated(
+ if (data.has_platform_authenticator_credential ==
+ device::FidoRequestHandlerBase::RecognizedCredential::
+ kHasRecognizedCredential &&
+- std::ranges::none_of(data.recognized_credentials,
+- IsCredentialFromPlatformAuthenticator)) {
++ base::ranges::none_of(data.recognized_credentials,
++ IsCredentialFromPlatformAuthenticator)) {
+ data.has_platform_authenticator_credential = device::
+ FidoRequestHandlerBase::RecognizedCredential::kNoRecognizedCredential;
+ }
+diff --git a/device/fido/get_assertion_request_handler.cc b/device/fido/get_assertion_request_handler.cc
+index 507cc2b46ddb6..80b6da1799c33 100644
+--- a/device/fido/get_assertion_request_handler.cc
++++ b/device/fido/get_assertion_request_handler.cc
+@@ -15,6 +15,7 @@
+ #include "base/functional/bind.h"
+ #include "base/json/json_writer.h"
+ #include "base/metrics/histogram_functions.h"
++#include "base/ranges/algorithm.h"
+ #include "base/stl_util.h"
+ #include "base/strings/string_number_conversions.h"
+ #include "base/timer/elapsed_timer.h"
+@@ -370,7 +371,7 @@ bool AllowListOnlyHybridOrInternal(const CtapGetAssertionRequest& request) {
+
+ bool AllowListIncludedTransport(const CtapGetAssertionRequest& request,
+ FidoTransportProtocol transport) {
+- return std::ranges::any_of(
++ return base::ranges::any_of(
+ request.allow_list,
+ [transport](const PublicKeyCredentialDescriptor& cred) {
+ return cred.transports.empty() ||
+@@ -441,7 +442,7 @@ void GetAssertionRequestHandler::PreselectAccount(
+ PublicKeyCredentialDescriptor credential) {
+ DCHECK(!preselected_credential_);
+ DCHECK(request_.allow_list.empty() ||
+- std::ranges::any_of(
++ base::ranges::any_of(
+ request_.allow_list,
+ [&credential](const PublicKeyCredentialDescriptor& desc) {
+ return desc.id == credential.id;
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0026-M118-fix-Add-deleted-constructors-operators.patch b/recipes-wam/cef/files/chromium/0026-M118-fix-Add-deleted-constructors-operators.patch
new file mode 100644
index 000000000..06106360f
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0026-M118-fix-Add-deleted-constructors-operators.patch
@@ -0,0 +1,339 @@
+From 19a3339965f79f8ae8ab650850461cbd0a782bff Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Mon, 30 Oct 2023 15:28:20 -0300
+Subject: [PATCH 26/33] [M118-fix] Add deleted constructors/operators
+
+Apparently the rules for deleting the implicitly-defined move
+constructor/operators is different in clang 14 and this causes build
+issues where the constructors or operators are needed.
+
+So we explicitly declare all the needed constructors defined as deleted
+by the compiler.
+
+Upstream-Status: Inappropriate, only affects older versions of clang
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
+---
+ .../profile_management_navigation_throttle.cc | 22 +++++++++++++
+ .../core/browser/profile_token_quality.cc | 12 +++----
+ .../core/browser/profile_token_quality.h | 15 +++++++++
+ .../public/common/download_save_item_data.h | 5 +++
+ .../fenced_frame/fenced_frame_reporter.h | 25 +++++++++++++++
+ .../header_direct_from_seller_signals.cc | 4 ++-
+ .../webid/idp_network_request_manager.h | 31 +++++++++++++++++++
+ .../renderer/platform/fonts/font_palette.h | 1 +
+ .../gesture_detection/motion_event_generic.cc | 27 ++++++++++++++++
+ .../gesture_detection/motion_event_generic.h | 6 ++--
+ 10 files changed, 139 insertions(+), 9 deletions(-)
+
+diff --git a/chrome/browser/enterprise/profile_management/profile_management_navigation_throttle.cc b/chrome/browser/enterprise/profile_management/profile_management_navigation_throttle.cc
+index aecaaf76762ee..3b02142d3e722 100644
+--- a/chrome/browser/enterprise/profile_management/profile_management_navigation_throttle.cc
++++ b/chrome/browser/enterprise/profile_management/profile_management_navigation_throttle.cc
+@@ -5,6 +5,7 @@
+ #include "chrome/browser/enterprise/profile_management/profile_management_navigation_throttle.h"
+
+ #include <string>
++#include <utility>
+
+ #include "base/command_line.h"
+ #include "base/containers/contains.h"
+@@ -47,6 +48,27 @@ constexpr char kGoogleServiceLoginUrl[] =
+ // Utility struct used to store SAML attributes related to third-party profile
+ // management.
+ struct SAMLProfileAttributes {
++ SAMLProfileAttributes() {}
++ SAMLProfileAttributes(std::string n, std::string d, std::string t)
++ : name{n}, domain{d}, token{t} {}
++ SAMLProfileAttributes(const SAMLProfileAttributes& o)
++ : SAMLProfileAttributes(o.name,
++ o.domain,
++ o.token) {}
++ SAMLProfileAttributes(SAMLProfileAttributes&& o)
++ : name{std::move(o.name)}
++ , domain{std::move(o.domain)}
++ , token{std::move(o.token)} {}
++ SAMLProfileAttributes& operator=(const SAMLProfileAttributes& o) {
++ return *this = SAMLProfileAttributes(o);
++ }
++ SAMLProfileAttributes& operator=(SAMLProfileAttributes&& o) {
++ name = std::move(o.name);
++ domain = std::move(o.domain);
++ token = std::move(o.token);
++ return *this;
++ }
++
+ std::string name;
+ std::string domain;
+ std::string token;
+diff --git a/components/autofill/core/browser/profile_token_quality.cc b/components/autofill/core/browser/profile_token_quality.cc
+index ff5f175372f39..e1c18eccb84b3 100644
+--- a/components/autofill/core/browser/profile_token_quality.cc
++++ b/components/autofill/core/browser/profile_token_quality.cc
+@@ -241,10 +241,10 @@ bool ProfileTokenQuality::AddObservationsForFilledForm(
+ }
+ possible_observations.emplace_back(
+ stored_type,
+- Observation{.type = base::to_underlying(GetObservationTypeFromField(
++ Observation(base::to_underlying(GetObservationTypeFromField(
+ field, form_data.fields[i].value, other_profiles,
+ pdm.app_locale())),
+- .form_hash = hash});
++ hash));
+ }
+ return AddSubsetOfObservations(std::move(possible_observations)) > 0;
+ }
+@@ -387,10 +387,10 @@ void ProfileTokenQuality::LoadSerializedObservationsForStoredType(
+ for (size_t i = 0; i + 1 < serialized_data.size(); i += 2) {
+ AddObservation(
+ type,
+- Observation{
+- .type = std::min(serialized_data[i],
+- base::to_underlying(ObservationType::kMaxValue)),
+- .form_hash = FormSignatureHash(serialized_data[i + 1])});
++ Observation(
++ std::min(serialized_data[i],
++ base::to_underlying(ObservationType::kMaxValue)),
++ FormSignatureHash(serialized_data[i + 1])));
+ }
+ }
+
+diff --git a/components/autofill/core/browser/profile_token_quality.h b/components/autofill/core/browser/profile_token_quality.h
+index 9dc16a1f98a13..2f726f04ab8d3 100644
+--- a/components/autofill/core/browser/profile_token_quality.h
++++ b/components/autofill/core/browser/profile_token_quality.h
+@@ -211,6 +211,21 @@ class ProfileTokenQuality {
+ // For this reason, it is preferred to store the `ObservationType`s as their
+ // underlying type in the data model as well.
+ // Getters expose unknown values as `kUnknown`.
++ Observation(std::underlying_type_t<ObservationType> t,
++ FormSignatureHash h) : type{t}, form_hash{h} {}
++ Observation(const Observation &o)
++ : Observation(o.type, o.form_hash) {}
++ Observation(Observation &&o) : type{std::move(o.type)},
++ form_hash{std::move(o.form_hash)} {}
++ Observation& operator=(const Observation& o) {
++ return *this = Observation(o);
++ }
++ Observation& operator=(Observation&& o) noexcept {
++ type = std::move(o.type);
++ form_hash = std::move(o.form_hash);
++ return *this;
++ }
++
+ std::underlying_type_t<ObservationType> type;
+ FormSignatureHash form_hash = FormSignatureHash(0);
+ };
+diff --git a/components/download/public/common/download_save_item_data.h b/components/download/public/common/download_save_item_data.h
+index 754aec2f64f6d..d49c3cd545b06 100644
+--- a/components/download/public/common/download_save_item_data.h
++++ b/components/download/public/common/download_save_item_data.h
+@@ -20,6 +20,11 @@ class COMPONENTS_DOWNLOAD_EXPORT DownloadSaveItemData
+ : public base::SupportsUserData::Data {
+ public:
+ struct ItemInfo {
++ ItemInfo(base::FilePath f, GURL u, GURL r)
++ : file_path{f}
++ , url{u}
++ , referrer_url{r} {}
++
+ // The final path where this file of the package will be saved.
+ base::FilePath file_path;
+ // The url this file was downloaded from.
+diff --git a/content/browser/fenced_frame/fenced_frame_reporter.h b/content/browser/fenced_frame/fenced_frame_reporter.h
+index 19ebadf3e14f7..8d2ee62847ced 100644
+--- a/content/browser/fenced_frame/fenced_frame_reporter.h
++++ b/content/browser/fenced_frame/fenced_frame_reporter.h
+@@ -8,6 +8,7 @@
+ #include <map>
+ #include <set>
+ #include <string>
++#include <utility>
+ #include <vector>
+
+ #include "base/containers/flat_map.h"
+@@ -40,6 +41,21 @@ class RenderFrameHostImpl;
+ // `type` is the key for the `ReportingUrlMap`, and `data` is sent with the
+ // request as a POST.
+ struct DestinationEnumEvent {
++ DestinationEnumEvent(std::string t, std::string d)
++ : type{std::move(t)}
++ , data{std::move(d)} {}
++ DestinationEnumEvent(const DestinationEnumEvent& o)
++ : DestinationEnumEvent(o.type, o.data) {}
++ DestinationEnumEvent(DestinationEnumEvent&& o)
++ : type{std::move(o.type)}
++ , data{std::move(o.data)} {}
++ DestinationEnumEvent& operator=(const DestinationEnumEvent& o) {
++ return *this = DestinationEnumEvent(o);
++ }
++ DestinationEnumEvent& operator=(DestinationEnumEvent&& o) {
++ std::swap(type, o.type);
++ std::swap(data, o.data);
++ }
+ std::string type;
+ std::string data;
+ };
+@@ -48,6 +64,15 @@ struct DestinationEnumEvent {
+ // `url` is the custom destination url, and the request is sent as a GET.
+ // Macros are substituted using the `ReportingMacros`.
+ struct DestinationURLEvent {
++ DestinationURLEvent(const GURL& u) : url{u} {}
++ DestinationURLEvent(const DestinationURLEvent& u) : url{u.url} {}
++ DestinationURLEvent(DestinationURLEvent&& u) : url{std::move(u.url)} {}
++ DestinationURLEvent& operator=(const DestinationURLEvent& o) {
++ return *this =DestinationURLEvent(o);
++ }
++ DestinationURLEvent& operator=(DestinationURLEvent&& o) {
++ std::swap(url, o.url);
++ }
+ GURL url;
+ };
+
+diff --git a/content/browser/interest_group/header_direct_from_seller_signals.cc b/content/browser/interest_group/header_direct_from_seller_signals.cc
+index fe59d11edf449..facbec80a203a 100644
+--- a/content/browser/interest_group/header_direct_from_seller_signals.cc
++++ b/content/browser/interest_group/header_direct_from_seller_signals.cc
+@@ -16,6 +16,7 @@
+ #include "base/strings/stringprintf.h"
+ #include "base/values.h"
+ #include "services/data_decoder/public/cpp/data_decoder.h"
++#include "third_party/abseil-cpp/absl/types/optional.h"
+ #include "url/gurl.h"
+ #include "url/origin.h"
+ #include "url/url_constants.h"
+@@ -187,7 +188,8 @@ void OnJsonDecoded(std::unique_ptr<const std::set<std::string>> responses,
+
+ } // namespace
+
+-HeaderDirectFromSellerSignals::HeaderDirectFromSellerSignals() = default;
++HeaderDirectFromSellerSignals::HeaderDirectFromSellerSignals() : seller_signals_{absl::nullopt}
++ , auction_signals_{absl::nullopt} {}
+
+ HeaderDirectFromSellerSignals::~HeaderDirectFromSellerSignals() = default;
+
+diff --git a/content/browser/webid/idp_network_request_manager.h b/content/browser/webid/idp_network_request_manager.h
+index 6a652e0a22b44..307e0f4a68f48 100644
+--- a/content/browser/webid/idp_network_request_manager.h
++++ b/content/browser/webid/idp_network_request_manager.h
+@@ -75,6 +75,24 @@ class CONTENT_EXPORT IdpNetworkRequestManager {
+ kInvalidContentTypeError,
+ };
+ struct FetchStatus {
++ FetchStatus(ParseStatus p, int r)
++ : parse_status{p}
++ , response_code{r} {}
++ FetchStatus(const FetchStatus& o)
++ : FetchStatus(o.parse_status,
++ o.response_code) {}
++ FetchStatus(FetchStatus&& o)
++ : parse_status{std::move(o.parse_status)}
++ , response_code{std::move(o.response_code)} {}
++ FetchStatus& operator=(const FetchStatus& o) {
++ return *this = FetchStatus(o);
++ }
++ FetchStatus& operator=(FetchStatus&& o) {
++ std::swap(parse_status, o.parse_status);
++ std::swap(response_code, o.response_code);
++ return *this;
++ }
++
+ ParseStatus parse_status;
+ // The HTTP response code, if one was received, otherwise the net error. It
+ // is possible to distinguish which it is since HTTP response codes are
+@@ -117,6 +135,19 @@ class CONTENT_EXPORT IdpNetworkRequestManager {
+ };
+
+ struct IdentityCredentialTokenError {
++ IdentityCredentialTokenError(int c, GURL u) : code{c}, url{u} {}
++ IdentityCredentialTokenError(const IdentityCredentialTokenError &o)
++ : IdentityCredentialTokenError(o.code, o.url) {}
++ IdentityCredentialTokenError(IdentityCredentialTokenError &&o)
++ : code{std::move(o.code)}, url{std::move(o.url)} {}
++ IdentityCredentialTokenError& operator=(const IdentityCredentialTokenError& o) {
++ return *this = IdentityCredentialTokenError(o);
++ }
++ IdentityCredentialTokenError& operator=(IdentityCredentialTokenError&& o) {
++ std::swap(code, o.code);
++ std::swap(url, o.url);
++ return *this;
++ }
+ int code;
+ GURL url;
+ };
+diff --git a/third_party/blink/renderer/platform/fonts/font_palette.h b/third_party/blink/renderer/platform/fonts/font_palette.h
+index 01dac9c908e9e..9a1a167acf213 100644
+--- a/third_party/blink/renderer/platform/fonts/font_palette.h
++++ b/third_party/blink/renderer/platform/fonts/font_palette.h
+@@ -60,6 +60,7 @@ class PLATFORM_EXPORT FontPalette : public RefCounted<FontPalette> {
+ };
+
+ struct NonNormalizedPercentages {
++ NonNormalizedPercentages(double s, double e) : start{s}, end{e} {}
+ double start;
+ double end;
+ bool operator==(const NonNormalizedPercentages& other) const {
+diff --git a/ui/events/gesture_detection/motion_event_generic.cc b/ui/events/gesture_detection/motion_event_generic.cc
+index 77c5edaa17ee4..a312c6d4de0cf 100644
+--- a/ui/events/gesture_detection/motion_event_generic.cc
++++ b/ui/events/gesture_detection/motion_event_generic.cc
+@@ -348,6 +348,33 @@ MotionEventGeneric& MotionEventGeneric::operator=(
+ return *this;
+ }
+
++MotionEventGeneric& MotionEventGeneric::operator=(
++ MotionEventGeneric&& other) {
++ action_ = std::move(other.action_);
++ event_time_ = std::move(other.event_time_);
++ unique_event_id_ = std::move(other.unique_event_id_);
++ action_index_ = std::move(other.action_index_);
++ button_state_ = std::move(other.button_state_);
++ flags_ = std::move(other.flags_);
++ pointers_ = std::move(other.pointers_);
++ const size_t history_size = std::move(other.GetHistorySize());
++ for (size_t h = 0; h < history_size; ++h)
++ PushHistoricalEvent(other.historical_events_[h]->Clone());
++}
++
++MotionEventGeneric::MotionEventGeneric(MotionEventGeneric&& other) {
++ action_ = std::move(other.action_);
++ event_time_ = std::move(other.event_time_);
++ unique_event_id_ = std::move(other.unique_event_id_);
++ action_index_ = std::move(other.action_index_);
++ button_state_ = std::move(other.button_state_);
++ flags_ = std::move(other.flags_);
++ pointers_ = std::move(other.pointers_);
++ const size_t history_size = std::move(other.GetHistorySize());
++ for (size_t h = 0; h < history_size; ++h)
++ PushHistoricalEvent(other.historical_events_[h]->Clone());
++}
++
+ void MotionEventGeneric::PopPointer() {
+ DCHECK_GT(pointers_.size(), 0U);
+ pointers_.pop_back();
+diff --git a/ui/events/gesture_detection/motion_event_generic.h b/ui/events/gesture_detection/motion_event_generic.h
+index e508335d47ae9..ed87c6254412c 100644
+--- a/ui/events/gesture_detection/motion_event_generic.h
++++ b/ui/events/gesture_detection/motion_event_generic.h
+@@ -55,6 +55,9 @@ class GESTURE_DETECTION_EXPORT MotionEventGeneric : public MotionEvent {
+ base::TimeTicks event_time,
+ const PointerProperties& pointer);
+ MotionEventGeneric(const MotionEventGeneric& other);
++ MotionEventGeneric(MotionEventGeneric&& other);
++ MotionEventGeneric& operator=(const MotionEventGeneric& other);
++ MotionEventGeneric& operator=(MotionEventGeneric&& other);
+
+ ~MotionEventGeneric() override;
+
+@@ -124,8 +127,7 @@ class GESTURE_DETECTION_EXPORT MotionEventGeneric : public MotionEvent {
+ protected:
+ MotionEventGeneric();
+ MotionEventGeneric(const MotionEvent& event, bool with_history);
+- MotionEventGeneric& operator=(const MotionEventGeneric& other);
+-
++
+ void PopPointer();
+
+ private:
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0027-M118-fix-Initialize-percentages-member-on-blink-Font.patch b/recipes-wam/cef/files/chromium/0027-M118-fix-Initialize-percentages-member-on-blink-Font.patch
new file mode 100644
index 000000000..9d7e30eb0
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0027-M118-fix-Initialize-percentages-member-on-blink-Font.patch
@@ -0,0 +1,52 @@
+From c206c886eabc8f03289802276f826baedf0e4e54 Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Mon, 30 Oct 2023 21:20:48 -0300
+Subject: [PATCH 27/33] [M118-fix] Initialize percentages member on
+ blink::FontPalette
+
+Fixes the build issue:
+
+error: constructor for 'blink::FontPalette' must explicitly
+initialize the member 'percentages_'
+
+Upstream-Status: Inappropriate
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
+---
+ .../blink/renderer/platform/fonts/font_palette.h | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/third_party/blink/renderer/platform/fonts/font_palette.h b/third_party/blink/renderer/platform/fonts/font_palette.h
+index 9a1a167acf213..8c9a9c02439b5 100644
+--- a/third_party/blink/renderer/platform/fonts/font_palette.h
++++ b/third_party/blink/renderer/platform/fonts/font_palette.h
+@@ -202,11 +202,14 @@ class PLATFORM_EXPORT FontPalette : public RefCounted<FontPalette> {
+
+ private:
+ explicit FontPalette(KeywordPaletteName palette_name)
+- : palette_keyword_(palette_name), base_palette_({kNoBasePalette, 0}) {}
++ : palette_keyword_(palette_name),
++ base_palette_({kNoBasePalette, 0}),
++ percentages_{0.0, 0.0} {}
+ explicit FontPalette(AtomicString palette_values_name)
+ : palette_keyword_(kCustomPalette),
+ palette_values_name_(palette_values_name),
+- base_palette_({kNoBasePalette, 0}) {}
++ base_palette_({kNoBasePalette, 0}),
++ percentages_{0.0, 0.0} {}
+ FontPalette(
+ scoped_refptr<FontPalette> start,
+ scoped_refptr<FontPalette> end,
+@@ -224,7 +227,9 @@ class PLATFORM_EXPORT FontPalette : public RefCounted<FontPalette> {
+ color_interpolation_space_(color_interpoaltion_space),
+ hue_interpolation_method_(hue_interpolation_method) {}
+ FontPalette()
+- : palette_keyword_(kNormalPalette), base_palette_({kNoBasePalette, 0}) {}
++ : palette_keyword_(kNormalPalette),
++ base_palette_({kNoBasePalette, 0}),
++ percentages_{0.0, 0.0} {}
+
+ KeywordPaletteName palette_keyword_;
+ AtomicString palette_values_name_;
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0028-M118-fix-Don-t-delete-ZstdSourceStream-copy-move-cto.patch b/recipes-wam/cef/files/chromium/0028-M118-fix-Don-t-delete-ZstdSourceStream-copy-move-cto.patch
new file mode 100644
index 000000000..d387b67cc
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0028-M118-fix-Don-t-delete-ZstdSourceStream-copy-move-cto.patch
@@ -0,0 +1,32 @@
+From f45fd7f3cd85c0d421c37202d0f4dff2f7925162 Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Fri, 3 Nov 2023 15:53:09 -0300
+Subject: [PATCH 28/33] [M118-fix] Don't delete ZstdSourceStream copy/move
+ ctors
+
+std::unique_ptr requires the deleted ZstdSourceStream deleted
+constructors and it causes a build issue.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
+---
+ net/filter/zstd_source_stream.cc | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/net/filter/zstd_source_stream.cc b/net/filter/zstd_source_stream.cc
+index 551729ac542b7..81d4565608e7a 100644
+--- a/net/filter/zstd_source_stream.cc
++++ b/net/filter/zstd_source_stream.cc
+@@ -64,9 +64,6 @@ class ZstdSourceStream : public FilterSourceStream {
+ }
+ }
+
+- ZstdSourceStream(const ZstdSourceStream&) = delete;
+- ZstdSourceStream& operator=(const ZstdSourceStream&) = delete;
+-
+ ~ZstdSourceStream() override {
+ if (ZSTD_isError(decoding_result_)) {
+ ZSTD_ErrorCode error_code = ZSTD_getErrorCode(decoding_result_);
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0029-M118-fix-Fix-issue-with-structured-bindinds-captured.patch b/recipes-wam/cef/files/chromium/0029-M118-fix-Fix-issue-with-structured-bindinds-captured.patch
new file mode 100644
index 000000000..fec15dd8c
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0029-M118-fix-Fix-issue-with-structured-bindinds-captured.patch
@@ -0,0 +1,68 @@
+From f7581fa1a0c25d2b76407bb04fd77031f5108411 Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Fri, 3 Nov 2023 21:08:22 -0300
+Subject: [PATCH 29/33] [M118-fix] Fix issue with structured bindinds captured
+ by nested lambdas
+
+In clang <=14 the build fails doesn't when lambdas capture
+aliases created in structured bindinds, so we do a few init-captures to
+fix that.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
+---
+ .../core/layout/ng/grid/ng_grid_layout_algorithm.cc | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc
+index 64c7a7481dd15..71eb55954e253 100644
+--- a/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc
++++ b/third_party/blink/renderer/core/layout/ng/grid/ng_grid_layout_algorithm.cc
+@@ -3494,7 +3494,7 @@ void NGGridLayoutAlgorithm::PlaceGridItems(
+ To<NGPhysicalBoxFragment>(result->PhysicalFragment());
+ NGBoxFragment fragment(container_writing_direction, physical_fragment);
+
+- auto BaselineOffset = [&](GridTrackSizingDirection track_direction,
++ auto BaselineOffset = [&, &layout_data = layout_data](GridTrackSizingDirection track_direction,
+ LayoutUnit size) -> LayoutUnit {
+ if (!grid_item.IsBaselineAligned(track_direction)) {
+ return LayoutUnit();
+@@ -3700,7 +3700,7 @@ void NGGridLayoutAlgorithm::PlaceGridItemsForFragmentation(
+ if (BreakToken())
+ child_break_tokens = BreakToken()->ChildBreakTokens();
+
+- auto PlaceItems = [&]() {
++ auto PlaceItems = [&, &grid_items = grid_items, &layout_data = layout_data]() {
+ // Reset our state.
+ result_and_offsets.clear();
+ out_of_fragmentainer_space_item_placement.clear();
+@@ -3933,7 +3933,7 @@ void NGGridLayoutAlgorithm::PlaceGridItemsForFragmentation(
+
+ // Adjust by |delta| the pre-computed item-offset for all grid items with a
+ // row begin index greater or equal than |row_index|.
+- auto AdjustItemOffsets = [&](wtf_size_t row_index, LayoutUnit delta) {
++ auto AdjustItemOffsets = [&, &grid_items = grid_items](wtf_size_t row_index, LayoutUnit delta) {
+ auto current_item = grid_items.begin();
+
+ for (auto& item_placement_data : *grid_items_placement_data) {
+@@ -3944,7 +3944,7 @@ void NGGridLayoutAlgorithm::PlaceGridItemsForFragmentation(
+
+ // Adjust our grid break-token data to accommodate the larger item in the row.
+ // Returns true if this function adjusted the break-token data in any way.
+- auto ExpandRow = [&]() -> bool {
++ auto ExpandRow = [&, &layout_data = layout_data]() -> bool {
+ if (max_row_expansion == 0)
+ return false;
+
+@@ -3963,7 +3963,7 @@ void NGGridLayoutAlgorithm::PlaceGridItemsForFragmentation(
+ // Shifts the row where we wish to take a breakpoint (indicated by
+ // |breakpoint_row_set_index|) into the next fragmentainer.
+ // Returns true if this function adjusted the break-token data in any way.
+- auto ShiftBreakpointIntoNextFragmentainer = [&]() -> bool {
++ auto ShiftBreakpointIntoNextFragmentainer = [&, &layout_data = layout_data]() -> bool {
+ if (breakpoint_row_set_index == kNotFound)
+ return false;
+
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0030-M118-fix-Only-default-arm_use_neon-to-true-if-its-va.patch b/recipes-wam/cef/files/chromium/0030-M118-fix-Only-default-arm_use_neon-to-true-if-its-va.patch
new file mode 100644
index 000000000..08a2db602
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0030-M118-fix-Only-default-arm_use_neon-to-true-if-its-va.patch
@@ -0,0 +1,107 @@
+From 55fe851951b11c30e010b5f3df618addf606e3d4 Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Wed, 8 Nov 2023 14:35:21 -0300
+Subject: [PATCH 30/33] [M118-fix] Only default arm_use_neon to true if its
+ value wasn't already set
+
+arm_use_neon was always being set causing the build to fail.
+
+Upstream-Status: Needs checking
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
+---
+ build/config/arm.gni | 58 +++++++++++++++++++++-----------------------
+ 1 file changed, 27 insertions(+), 31 deletions(-)
+
+diff --git a/build/config/arm.gni b/build/config/arm.gni
+index 5b404c1ca94f0..575871c287c80 100644
+--- a/build/config/arm.gni
++++ b/build/config/arm.gni
+@@ -9,36 +9,39 @@ import("//build/config/v8_target_cpu.gni")
+ # ARM code is being compiled. But they can also be relevant in the
+ # other contexts when the code will change its behavior based on the
+ # cpu it wants to generate code for.
+-if (current_cpu == "arm" || v8_current_cpu == "arm") {
+- declare_args() {
+- # Version of the ARM processor when compiling on ARM. Ignored on non-ARM
+- # platforms.
+- arm_version = 7
++declare_args() {
++ # Version of the ARM processor when compiling on ARM. Ignored on non-ARM
++ # platforms.
++ arm_version = 7
+
+- # The ARM architecture. This will be a string like "armv6" or "armv7-a".
+- # An empty string means to use the default for the arm_version.
+- arm_arch = ""
++ # The ARM architecture. This will be a string like "armv6" or "armv7-a".
++ # An empty string means to use the default for the arm_version.
++ arm_arch = ""
+
+- # The ARM floating point hardware. This will be a string like "neon" or
+- # "vfpv3". An empty string means to use the default for the arm_version.
+- arm_fpu = ""
++ # The ARM floating point hardware. This will be a string like "neon" or
++ # "vfpv3". An empty string means to use the default for the arm_version.
++ arm_fpu = ""
+
+- # The ARM variant-specific tuning mode. This will be a string like "armv6"
+- # or "cortex-a15". An empty string means to use the default for the
+- # arm_version.
+- arm_tune = ""
++ # The ARM variant-specific tuning mode. This will be a string like "armv6"
++ # or "cortex-a15". An empty string means to use the default for the
++ # arm_version.
++ arm_tune = ""
+
+- # Whether to use the neon FPU instruction set or not.
+- arm_use_neon = ""
++ # Whether to use the neon FPU instruction set or not.
++ arm_use_neon = ""
+
+- # Whether to enable optional NEON code paths.
+- arm_optionally_use_neon = false
++ # Whether to enable optional NEON code paths.
++ arm_optionally_use_neon = false
+
+- # Thumb is a reduced instruction set available on some ARM processors that
+- # has increased code density.
+- arm_use_thumb = true
+- }
++ # Thumb is a reduced instruction set available on some ARM processors that
++ # has increased code density.
++ arm_use_thumb = true
+
++ arm_control_flow_integrity = "none"
++ arm_float_abi = ""
++}
++
++if (current_cpu == "arm" || v8_current_cpu == "arm") {
+ # For lacros build, we use ARM v8 by default.
+ if (is_chromeos_lacros && arm_arch == "") {
+ # TODO(crbug.com/1467681) Enable i8mm and dotprod instructions for ffmpeg
+@@ -49,13 +52,6 @@ if (current_cpu == "arm" || v8_current_cpu == "arm") {
+
+ if (current_os == "android" || target_os == "android") {
+ arm_float_abi = "softfp"
+- } else {
+- declare_args() {
+- # The ARM floating point mode. This is either the string "hard", "soft",
+- # or "softfp". An empty string means to use the default one for the
+- # arm_version.
+- arm_float_abi = ""
+- }
+ }
+ assert(arm_float_abi == "" || arm_float_abi == "hard" ||
+ arm_float_abi == "soft" || arm_float_abi == "softfp")
+@@ -126,7 +122,7 @@ if (current_cpu == "arm" || v8_current_cpu == "arm") {
+ }
+ }
+ }
+-} else if (current_cpu == "arm64" || v8_current_cpu == "arm64") {
++} else if (arm_use_neon == "" && (current_cpu == "arm64" || v8_current_cpu == "arm64")) {
+ # arm64 supports only "hard".
+ arm_float_abi = "hard"
+ arm_use_neon = true
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0031-M118-fix-Add-a-way-to-set-different-lib-paths-host-a.patch b/recipes-wam/cef/files/chromium/0031-M118-fix-Add-a-way-to-set-different-lib-paths-host-a.patch
new file mode 100644
index 000000000..fa4dfe60d
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0031-M118-fix-Add-a-way-to-set-different-lib-paths-host-a.patch
@@ -0,0 +1,135 @@
+From e1bc5ea870e17afee145009194e6f2092dd1d3ff Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Sun, 12 Nov 2023 19:41:07 -0300
+Subject: [PATCH 31/33] [M118-fix] Add a way to set different lib paths host
+ and target
+
+meta-clang on AGL defines a simplified path structure for clang's
+runtime libraries and a different lib naming convention.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
+---
+ build/config/clang/BUILD.gn | 80 +++++++++++-------------------------
+ build/config/clang/clang.gni | 3 ++
+ 2 files changed, 27 insertions(+), 56 deletions(-)
+
+diff --git a/build/config/clang/BUILD.gn b/build/config/clang/BUILD.gn
+index fe044e29e428b..33edce7aed9a2 100644
+--- a/build/config/clang/BUILD.gn
++++ b/build/config/clang/BUILD.gn
+@@ -3,6 +3,7 @@
+ # found in the LICENSE file.
+
+ import("//build/config/rust.gni")
++import("//v8/gni/snapshot_toolchain.gni")
+ import("clang.gni")
+
+ if (is_ios) {
+@@ -95,66 +96,33 @@ template("clang_lib") {
+ }
+ } else {
+ config(target_name) {
+- _dir = ""
++ if (current_toolchain == host_toolchain ||
++ current_toolchain == v8_snapshot_toolchain) {
++ _base_path = "$clang_base_path"
++ _cpu = host_cpu
++ } else {
++ _base_path = "$clang_base_path_target"
++ _cpu = target_cpu
++ }
++
++ if (_cpu == "x64") {
++ _suffix = "-x86_64"
++ } else if (_cpu == "x86") {
++ _suffix = "-i386"
++ } else if (_cpu == "arm64") {
++ _suffix = "-aarch64"
++ } else if (_cpu == "arm") {
++ _suffix = "-arm"
++ } else {
++ assert(false) # Unhandled cpu type
++ }
++
++ _dir = "linux"
+ _libname = invoker.libname
+ _prefix = "lib"
+- _suffix = ""
+ _ext = "a"
+- if (is_win) {
+- _dir = "windows"
+- _prefix = ""
+- _ext = "lib"
+- if (current_cpu == "x64") {
+- _suffix = "-x86_64"
+- } else if (current_cpu == "x86") {
+- _suffix = "-i386"
+- } else if (current_cpu == "arm64") {
+- _suffix = "-aarch64"
+- } else {
+- assert(false) # Unhandled cpu type
+- }
+- } else if (is_apple) {
+- _dir = "darwin"
+- } else if (is_linux || is_chromeos) {
+- if (current_cpu == "x64") {
+- _dir = "x86_64-unknown-linux-gnu"
+- } else if (current_cpu == "x86") {
+- _dir = "i386-unknown-linux-gnu"
+- } else if (current_cpu == "arm") {
+- _dir = "armv7-unknown-linux-gnueabihf"
+- } else if (current_cpu == "arm64") {
+- _dir = "aarch64-unknown-linux-gnu"
+- } else {
+- assert(false) # Unhandled cpu type
+- }
+- } else if (is_fuchsia) {
+- if (current_cpu == "x64") {
+- _dir = "x86_64-unknown-fuchsia"
+- } else if (current_cpu == "arm64") {
+- _dir = "aarch64-unknown-fuchsia"
+- } else {
+- assert(false) # Unhandled cpu type
+- }
+- } else if (is_android) {
+- _dir = "linux"
+- if (current_cpu == "x64") {
+- _suffix = "-x86_64-android"
+- } else if (current_cpu == "x86") {
+- _suffix = "-i686-android"
+- } else if (current_cpu == "arm") {
+- _suffix = "-arm-android"
+- } else if (current_cpu == "arm64") {
+- _suffix = "-aarch64-android"
+- } else if (current_cpu == "riscv64") {
+- _suffix = "-riscv64-android"
+- } else {
+- assert(false) # Unhandled cpu type
+- }
+- } else {
+- assert(false) # Unhandled target platform
+- }
+
+- _clang_lib_dir = "$clang_base_path/lib/clang/$clang_version/lib"
++ _clang_lib_dir = "$_base_path/lib/clang/$clang_version/lib"
+ _lib_file = "${_prefix}clang_rt.${_libname}${_suffix}.${_ext}"
+ libs = [ "$_clang_lib_dir/$_dir/$_lib_file" ]
+ }
+diff --git a/build/config/clang/clang.gni b/build/config/clang/clang.gni
+index 1a065b5e348b0..46fb56693b494 100644
+--- a/build/config/clang/clang.gni
++++ b/build/config/clang/clang.gni
+@@ -26,6 +26,9 @@ declare_args() {
+ build_with_chromium && !is_official_build && is_linux && !is_castos
+
+ clang_base_path = default_clang_base_path
++
++ # used only for linking
++ clang_base_path_target = default_clang_base_path
+
+ # Specifies whether or not bitcode should be embedded during compilation.
+ # This is used for creating a MLGO corpus from Chromium in the non-ThinLTO case.
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0032-M118-fix-zlib-Fix-arm-build.patch b/recipes-wam/cef/files/chromium/0032-M118-fix-zlib-Fix-arm-build.patch
new file mode 100644
index 000000000..3c2b3a775
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0032-M118-fix-zlib-Fix-arm-build.patch
@@ -0,0 +1,48 @@
+From 9ae234968078366877a1f8027423644ae7bbfb89 Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Mon, 13 Nov 2023 11:07:15 -0300
+Subject: [PATCH 32/33] [M118-fix] zlib: Fix arm build
+
+Prevent inclusion of cpuid on arm builds.
+
+error:
+
+third_party/zlib/cpu_features.c:15:
+cpuid.h:14:2: error: this header is for x86 only
+
+Upstream-Status: Inappropriate
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
+---
+ third_party/zlib/adler32_simd.c | 2 +-
+ third_party/zlib/cpu_features.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/third_party/zlib/adler32_simd.c b/third_party/zlib/adler32_simd.c
+index 58966eecf0b80..25867ace82bd2 100644
+--- a/third_party/zlib/adler32_simd.c
++++ b/third_party/zlib/adler32_simd.c
+@@ -49,7 +49,7 @@
+ /* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
+ #define NMAX 5552
+
+-#if defined(ADLER32_SIMD_SSSE3)
++#if (__x86_64__ || __i386__) && defined(ADLER32_SIMD_SSSE3)
+
+ #include <tmmintrin.h>
+
+diff --git a/third_party/zlib/cpu_features.c b/third_party/zlib/cpu_features.c
+index 64e0428cd2fc2..c26c619970c10 100644
+--- a/third_party/zlib/cpu_features.c
++++ b/third_party/zlib/cpu_features.c
+@@ -11,7 +11,7 @@
+ #include <stdint.h>
+ #if defined(_MSC_VER)
+ #include <intrin.h>
+-#elif defined(ADLER32_SIMD_SSSE3)
++#elif (__x86_64__ || __i386__) && defined(ADLER32_SIMD_SSSE3)
+ #include <cpuid.h>
+ #endif
+
+--
+2.42.1
+
diff --git a/recipes-wam/cef/files/chromium/0033-M118-fix-Fix-skia-linker-issues-for-arm-neon.patch b/recipes-wam/cef/files/chromium/0033-M118-fix-Fix-skia-linker-issues-for-arm-neon.patch
new file mode 100644
index 000000000..57f713b2d
--- /dev/null
+++ b/recipes-wam/cef/files/chromium/0033-M118-fix-Fix-skia-linker-issues-for-arm-neon.patch
@@ -0,0 +1,56 @@
+From 0c37732e8443882518b79ce50b9389d1218484ef Mon Sep 17 00:00:00 2001
+From: Roger Zanoni <rzanoni@igalia.com>
+Date: Mon, 13 Nov 2023 22:10:25 -0300
+Subject: [PATCH 33/33] [M118-fix] Fix skia linker issues for arm neon
+
+Fixes the following linker issue:
+
+error: undefined symbol: skia::ConvolveHorizontally_Neon(...)
+
+Upstream-Status: Inappropriate
+Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
+---
+ build/config/arm.gni | 5 +++++
+ skia/ext/convolver.cc | 2 +-
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/build/config/arm.gni b/build/config/arm.gni
+index 575871c287c80..ebf56196c2605 100644
+--- a/build/config/arm.gni
++++ b/build/config/arm.gni
+@@ -122,10 +122,14 @@ if (current_cpu == "arm" || v8_current_cpu == "arm") {
+ }
+ }
+ }
++ if (arm_use_neon) {
++ defines += [ "USE_NEON" ]
++ }
+ } else if (arm_use_neon == "" && (current_cpu == "arm64" || v8_current_cpu == "arm64")) {
+ # arm64 supports only "hard".
+ arm_float_abi = "hard"
+ arm_use_neon = true
++ defines += [ "USE_NEON" ]
+ declare_args() {
+ # Enables the new Armv8 branch protection features. Valid strings are:
+ # - "pac": Enables Pointer Authentication Code (PAC, featured in Armv8.3)
+@@ -146,3 +150,4 @@ if (current_cpu == "arm" || v8_current_cpu == "arm") {
+ arm_control_flow_integrity == "pac",
+ "Invalid branch protection option")
+ }
++
+diff --git a/skia/ext/convolver.cc b/skia/ext/convolver.cc
+index 8b3bd070d168a..a7d99de48d398 100644
+--- a/skia/ext/convolver.cc
++++ b/skia/ext/convolver.cc
+@@ -371,7 +371,7 @@ void SetupSIMD(ConvolveProcs *procs) {
+ procs->extra_horizontal_reads = 3;
+ procs->convolve_vertically = &ConvolveVertically_mips_dspr2;
+ procs->convolve_horizontally = &ConvolveHorizontally_mips_dspr2;
+-#elif defined SIMD_NEON
++#elif defined USE_NEON && defined SIMD_NEON
+ procs->extra_horizontal_reads = 3;
+ procs->convolve_vertically = &ConvolveVertically_Neon;
+ procs->convolve_4rows_horizontally = &Convolve4RowsHorizontally_Neon;
+--
+2.42.1
+