[cef][wam] Make the recipe work with official chromium release tarballs 17/29417/2
authorRoger Zanoni <rzanoni@igalia.com>
Sun, 22 Oct 2023 01:07:31 +0000 (01:07 +0000)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Thu, 16 Nov 2023 16:51:05 +0000 (16:51 +0000)
This change drops the chromium mirror repository that was being used for
milestone 108 in favor of using the official release tarballs from
https://commondatastorage.googleapis.com/chromium-browser-official in an effort
to make it easier to upgrade the current chromium milestones (also to improve
download and build times).

Also, the current milestone is being upgraded from 108 to 118.

Bug-AGL: SPEC-3872

Signed-off-by: Roger Zanoni <rzanoni@igalia.com>
Change-Id: Iba4a94ef762d278864114c02bb9e36a308ff5a7a
Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/29417
Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
ci-image-build: Jenkins Job builder account
Tested-by: Jenkins Job builder account
ci-image-boot-test: Jenkins Job builder account

49 files changed:
recipes-wam/cef/cef_git.bb
recipes-wam/cef/files/cef/0001-Add-an-option-to-use-an-output-directory-outside-src.patch
recipes-wam/cef/files/cef/0002-Add-an-option-to-override-the-default-distrib-direct.patch
recipes-wam/cef/files/cef/0003-Add-an-option-to-use-an-alternative-base-output-dire.patch
recipes-wam/cef/files/cef/0004-Add-an-option-to-bypass-sysroot-checking-and-force.patch
recipes-wam/cef/files/cef/0005-Add-AGL-wayland-window-related-calls.patch [moved from recipes-wam/cef/files/cef/0006-Add-AGL-wayland-window-related-calls.patch with 83% similarity]
recipes-wam/cef/files/cef/0005-Linux-Fix-build-without-X11-fixes-issue-3431.patch [deleted file]
recipes-wam/cef/files/cef/0006-Add-a-method-to-check-if-the-agl-window-is-configure.patch [moved from recipes-wam/cef/files/cef/0007-Add-a-method-to-check-if-the-agl-window-is-configure.patch with 78% similarity]
recipes-wam/cef/files/cef/0007-Add-the-SetActivateRegion-method.patch [moved from recipes-wam/cef/files/cef/0008-Add-the-SetActivateRegion-method.patch with 82% similarity]
recipes-wam/cef/files/cef/0008-Allow-passing-the-app_id-on-widget-creation.patch [moved from recipes-wam/cef/files/cef/0009-Allow-passing-the-app_id-on-widget-creation.patch with 83% similarity]
recipes-wam/cef/files/cef/0009-Update-generated-api.patch [new file with mode: 0644]
recipes-wam/cef/files/cef/0010-Make-patcher-work-outside-a-git-checkout.patch [new file with mode: 0644]
recipes-wam/cef/files/cef/0010-Update-generated-api-wrapper-files.patch [deleted file]
recipes-wam/cef/files/cef/0011-Avoid-the-RuntimeError-dictionary-changed-size-durin.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0001-agl-compositor-Add-agl_shell_wrapper-AGL-wayland-ext.patch [moved from recipes-wam/cef/files/chromium/0005-Add-the-essential-parts-of-wayland-extensions-and-ag.patch with 94% similarity]
recipes-wam/cef/files/chromium/0001-sql-relax-constraints-on-VirtualCursor-layout.patch [deleted file]
recipes-wam/cef/files/chromium/0002-agl-Add-waylandwindow-window-tree-host-essential-par.patch [moved from recipes-wam/cef/files/chromium/0006-Add-webos-agl-waylandwindow-window-tree-host-essenti.patch with 82% similarity]
recipes-wam/cef/files/chromium/0003-agl-Only-bind-to-agl_shell-if-it-s-the-browser-proce.patch [moved from recipes-wam/cef/files/chromium/0007-Only-bind-to-agl_shell-if-it-s-the-browser-process.patch with 90% similarity]
recipes-wam/cef/files/chromium/0004-Don-t-use-DRI-for-renesas.patch [deleted file]
recipes-wam/cef/files/chromium/0004-agl-Add-a-method-to-check-if-the-agl-window-is-confi.patch [moved from recipes-wam/cef/files/chromium/0008-Add-a-method-to-check-if-the-agl-window-is-configure.patch with 89% similarity]
recipes-wam/cef/files/chromium/0005-agl-Start-using-agl-shell-version-4.patch [moved from recipes-wam/cef/files/chromium/0009-Start-using-agl-shell-version-4.patch with 98% similarity]
recipes-wam/cef/files/chromium/0006-agl-Don-t-use-DRI-for-renesas.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0007-meta-browser-Remove-the-GN-settings-done-for-clang-t.patch [moved from recipes-wam/cef/files/chromium/0003-Remove-the-GN-settings-done-for-clang-that-conflict-.patch with 79% similarity]
recipes-wam/cef/files/chromium/0008-meta-browser-Pass-no-static-libstdc-to-gen.py.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0009-meta-browser-IWYU-Add-includes-for-size_t-and-int64_.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0010-meta-browser-BUILD-do-not-specify-march-on-arm.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0011-meta-browser-Avoid-parenthesized-initialization-of-a.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0012-meta-browser-Fix-constexpr-variable-cannot-have-non-.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0013-meta-browser-Add-missing-typename-s.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0014-meta-browser-Avoid-std-ranges-find_if.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0015-meta-browser-Avoid-capturing-structured-bindings.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0016-meta-browser-Delete-compiler-options-not-available-i.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0017-meta-browser-Don-t-pass-disable-auto-upgrade-debug-i.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0018-meta-browser-Fix-undefined-symbol-PaintOpWriter-Seri.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0019-upstream-Initialize-ServerCvc-with-designated-initia.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0020-M118-fix-Don-t-look-for-depot_tools-in-chrommium-s-t.patch [moved from recipes-wam/cef/files/chromium/0002-Don-t-look-for-depot_tools-in-chrommium-s-third_part.patch with 67% similarity]
recipes-wam/cef/files/chromium/0021-M118-fix-Add-multiple-missing-includes.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0022-M118-fix-Fix-aggregate-initialization-in-trace_log.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0023-M118-fix-Add-missing-typename-keyword-in-multiple-st.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0024-M118-fix-Fix-comparison-in-HostResolverCache.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0025-M118-fix-Avoid-using-std-ranges-any_of-find_if-none_.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0026-M118-fix-Add-deleted-constructors-operators.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0027-M118-fix-Initialize-percentages-member-on-blink-Font.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0028-M118-fix-Don-t-delete-ZstdSourceStream-copy-move-cto.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0029-M118-fix-Fix-issue-with-structured-bindinds-captured.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0030-M118-fix-Only-default-arm_use_neon-to-true-if-its-va.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0031-M118-fix-Add-a-way-to-set-different-lib-paths-host-a.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0032-M118-fix-zlib-Fix-arm-build.patch [new file with mode: 0644]
recipes-wam/cef/files/chromium/0033-M118-fix-Fix-skia-linker-issues-for-arm-neon.patch [new file with mode: 0644]

index 1ce1d5f..63897f3 100644 (file)
@@ -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
 }
index 5d3cdac..af2ea0b 100644 (file)
@@ -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
 
index c3df4b2..0061c4d 100644 (file)
@@ -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
 
index b8dd3bd..600d59d 100644 (file)
@@ -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
 
index 7755da6..c579074 100644 (file)
@@ -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
 
@@ -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 (file)
index 75b44e3..0000000
+++ /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
-
@@ -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
 
@@ -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
 
@@ -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 (file)
index 0000000..aaf8dd1
--- /dev/null
@@ -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 (file)
index 0000000..a59b4f3
--- /dev/null
@@ -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 (file)
index cc794fd..0000000
+++ /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 (file)
index 0000000..32527b7
--- /dev/null
@@ -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
+
@@ -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 (file)
index 624dd50..0000000
+++ /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
-
@@ -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   | 1+--
- .../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    | 1+++
  .../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
 
@@ -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 (file)
index 332e1f2..0000000
+++ /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
-
@@ -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
 
@@ -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 (file)
index 0000000..1914661
--- /dev/null
@@ -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
+
@@ -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 (file)
index 0000000..a31d424
--- /dev/null
@@ -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 (file)
index 0000000..8e46c2c
--- /dev/null
@@ -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 (file)
index 0000000..5936248
--- /dev/null
@@ -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 (file)
index 0000000..dbdda92
--- /dev/null
@@ -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 (file)
index 0000000..3a91c1d
--- /dev/null
@@ -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 (file)
index 0000000..8740b81
--- /dev/null
@@ -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 (file)
index 0000000..2bd12fa
--- /dev/null
@@ -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 (file)
index 0000000..7b612b8
--- /dev/null
@@ -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 (file)
index 0000000..0956f5f
--- /dev/null
@@ -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 (file)
index 0000000..48f722e
--- /dev/null
@@ -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 (file)
index 0000000..2c953d3
--- /dev/null
@@ -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 (file)
index 0000000..aba2550
--- /dev/null
@@ -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
+
@@ -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 (file)
index 0000000..df30708
--- /dev/null
@@ -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 (file)
index 0000000..39e5c60
--- /dev/null
@@ -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 (file)
index 0000000..ea0b2c5
--- /dev/null
@@ -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 (file)
index 0000000..ab48733
--- /dev/null
@@ -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 (file)
index 0000000..fff1423
--- /dev/null
@@ -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 (file)
index 0000000..0610636
--- /dev/null
@@ -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 (file)
index 0000000..9d7e30e
--- /dev/null
@@ -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 (file)
index 0000000..d387b67
--- /dev/null
@@ -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 (file)
index 0000000..fec15dd
--- /dev/null
@@ -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 (file)
index 0000000..08a2db6
--- /dev/null
@@ -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 (file)
index 0000000..fa4dfe6
--- /dev/null
@@ -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 (file)
index 0000000..3c2b3a7
--- /dev/null
@@ -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 (file)
index 0000000..57f713b
--- /dev/null
@@ -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
+