summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustKidding <jk@vin.ovh>2024-03-10 21:31:54 -0500
committerJustKidding <jk@vin.ovh>2024-03-10 21:31:54 -0500
commit9a78fc29d33fb146a90c2e77988171f5fb58da45 (patch)
tree8619d4912b918ffac2d861e70bbdabd695016a24
parentfad04a0cadef9de555544b2f373aa290fce8b894 (diff)
downloadungoogled-chromium-9a78fc29d33fb146a90c2e77988171f5fb58da45.tar.gz
ungoogled-chromium-9a78fc29d33fb146a90c2e77988171f5fb58da45.tar.bz2
ungoogled-chromium-9a78fc29d33fb146a90c2e77988171f5fb58da45.zip
upgpkg: ungoogled-chromium 122.0.6261.111-1
upstream release
-rw-r--r--.SRCINFO29
-rw-r--r--PKGBUILD41
-rw-r--r--REVERT-simplify-blink-NativeValueTraitsBase.patch747
-rw-r--r--REVERT-use-v8-Array-Iterate-for-converting-script-wrappables.patch174
-rw-r--r--chromium-constexpr.patch48
-rw-r--r--compiler-rt-adjust-paths.patch (renamed from compiler-rt-16.patch)10
-rw-r--r--drop-flag-unsupported-by-clang17.patch (renamed from drop-flags-unsupported-by-clang16.patch)11
7 files changed, 28 insertions, 1032 deletions
diff --git a/.SRCINFO b/.SRCINFO
index bed7bf1..b3cdd7c 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = ungoogled-chromium
pkgdesc = A lightweight approach to removing Google web service dependency
- pkgver = 122.0.6261.69
+ pkgver = 122.0.6261.111
pkgrel = 1
url = https://github.com/ungoogled-software/ungoogled-chromium
arch = x86_64
@@ -13,6 +13,7 @@ pkgbase = ungoogled-chromium
makedepends = gperf
makedepends = nodejs
makedepends = pipewire
+ makedepends = rust
makedepends = qt5-base
makedepends = java-runtime-headless
makedepends = git
@@ -52,38 +53,32 @@ pkgbase = ungoogled-chromium
optdepends = org.freedesktop.secrets: password storage backend on GNOME / Xfce
optdepends = kwallet: support for storing passwords in KWallet on Plasma
optdepends = chromium-extension-web-store: Web Store Functionality
- provides = chromium=122.0.6261.69
- provides = chromedriver=122.0.6261.69
+ provides = chromium=122.0.6261.111
+ provides = chromedriver=122.0.6261.111
conflicts = chromium
conflicts = chromedriver
options = !lto
- source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-122.0.6261.69.tar.xz
+ source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-122.0.6261.111.tar.xz
source = https://github.com/foutrelis/chromium-launcher/archive/v8/chromium-launcher-8.tar.gz
source = https://gitlab.com/Matt.Jolly/chromium-patches/-/archive/122/chromium-patches-122.tar.bz2
source = support-ICU-74-in-LazyTextBreakIterator.patch
- source = REVERT-simplify-blink-NativeValueTraitsBase.patch
- source = REVERT-use-v8-Array-Iterate-for-converting-script-wrappables.patch
- source = chromium-constexpr.patch
- source = drop-flags-unsupported-by-clang16.patch
- source = compiler-rt-16.patch
+ source = drop-flag-unsupported-by-clang17.patch
+ source = compiler-rt-adjust-paths.patch
source = use-oauth2-client-switches-as-default.patch
- source = ungoogled-chromium-122.0.6261.69-1.tar.gz::https://github.com/ungoogled-software/ungoogled-chromium/archive/122.0.6261.69-1.tar.gz
+ source = ungoogled-chromium-122.0.6261.111-1.tar.gz::https://github.com/ungoogled-software/ungoogled-chromium/archive/122.0.6261.111-1.tar.gz
source = 0001-vaapi-flag-ozone-wayland.patch
source = 0001-adjust-buffer-format-order.patch
source = 0001-enable-linux-unstable-deb-target.patch
source = 0001-ozone-wayland-implement-text_input_manager_v3.patch
source = 0001-ozone-wayland-implement-text_input_manager-fixes.patch
- sha256sums = f5bf4085ad3173883b45ea72b483d07f50ec3aa0f7546ac3837a9d26d0b4f9c0
+ sha256sums = 0b3da2f0ca63625e84a1b36571f23591248b8fcb422ce683c09283dbfc35c309
sha256sums = 213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a
sha256sums = 1f6acf165578288dc84edc7d9dcfabf7d38f55153b63a37ee5afa929f0e2baad
sha256sums = 8c256b2a9498a63706a6e7a55eadbeb8cc814be66a75e49aec3716c6be450c6c
- sha256sums = 318df8f8662071cebcdf953698408058e17f59f184500b7e12e01a04a4206b50
- sha256sums = 00e06b889e4face0ef41293233ce55bd52064ab040f1fdd84aa19525f8ac3601
- sha256sums = a061f83e2b628927feb4dbc441eb54f8b8c3d81348e447cf3b90755d7cda5f54
- sha256sums = 53774fd7f807ad42f77d45cab9e5480cc2bcb0a5c5138110a434407521af9607
- sha256sums = 8a2649dcc6ff8d8f24ddbe40dc2a171824f681c6f33c39c4792b645b87c9dcab
+ sha256sums = 3bd35dab1ded5d9e1befa10d5c6c4555fe0a76d909fb724ac57d0bf10cb666c1
+ sha256sums = b3de01b7df227478687d7517f61a777450dca765756002c80c4915f271e2d961
sha256sums = e393174d7695d0bafed69e868c5fbfecf07aa6969f3b64596d0bae8b067e1711
- sha256sums = 6c2405ca58cae05ea1c8116495d7885a0f42f44ca3d70b2bd8f11c27abb23c52
+ sha256sums = 927ee3d2518d7c4757ba367e98810b18a16b9468c71a4ab39f84b2282a743c23
sha256sums = 9a5594293616e1390462af1f50276ee29fd6075ffab0e3f944f6346cb2eb8aec
sha256sums = 8ba5c67b7eb6cacd2dbbc29e6766169f0fca3bbb07779b1a0a76c913f17d343f
sha256sums = 2a44756404e13c97d000cc0d859604d6848163998ea2f838b3b9bb2c840967e3
diff --git a/PKGBUILD b/PKGBUILD
index 338bff9..6bca46e 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -11,11 +11,11 @@
# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
pkgname=ungoogled-chromium
-pkgver=122.0.6261.69
+pkgver=122.0.6261.111
pkgrel=1
_launcher_ver=8
_manual_clone=0
-_system_clang=0
+_system_clang=1
pkgdesc="A lightweight approach to removing Google web service dependency"
arch=('x86_64')
url="https://github.com/ungoogled-software/ungoogled-chromium"
@@ -24,7 +24,7 @@ depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt'
'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'libva'
'libffi' 'desktop-file-utils' 'hicolor-icon-theme')
makedepends=('python' 'gn' 'ninja' 'clang' 'lld' 'gperf' 'nodejs' 'pipewire'
- 'qt5-base' 'java-runtime-headless' 'git')
+ 'rust' 'qt5-base' 'java-runtime-headless' 'git')
optdepends=('pipewire: WebRTC desktop sharing under Wayland'
'kdialog: support for native dialogs in Plasma'
'qt5-base: enable Qt5 with --enable-features=AllowQt'
@@ -36,21 +36,15 @@ source=(https://commondatastorage.googleapis.com/chromium-browser-official/chrom
https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver/chromium-launcher-$_launcher_ver.tar.gz
https://gitlab.com/Matt.Jolly/chromium-patches/-/archive/${pkgver%%.*}/chromium-patches-${pkgver%%.*}.tar.bz2
support-ICU-74-in-LazyTextBreakIterator.patch
- REVERT-simplify-blink-NativeValueTraitsBase.patch
- REVERT-use-v8-Array-Iterate-for-converting-script-wrappables.patch
- chromium-constexpr.patch
- drop-flags-unsupported-by-clang16.patch
- compiler-rt-16.patch
+ drop-flag-unsupported-by-clang17.patch
+ compiler-rt-adjust-paths.patch
use-oauth2-client-switches-as-default.patch)
-sha256sums=('f5bf4085ad3173883b45ea72b483d07f50ec3aa0f7546ac3837a9d26d0b4f9c0'
+sha256sums=('0b3da2f0ca63625e84a1b36571f23591248b8fcb422ce683c09283dbfc35c309'
'213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a'
'1f6acf165578288dc84edc7d9dcfabf7d38f55153b63a37ee5afa929f0e2baad'
'8c256b2a9498a63706a6e7a55eadbeb8cc814be66a75e49aec3716c6be450c6c'
- '318df8f8662071cebcdf953698408058e17f59f184500b7e12e01a04a4206b50'
- '00e06b889e4face0ef41293233ce55bd52064ab040f1fdd84aa19525f8ac3601'
- 'a061f83e2b628927feb4dbc441eb54f8b8c3d81348e447cf3b90755d7cda5f54'
- '53774fd7f807ad42f77d45cab9e5480cc2bcb0a5c5138110a434407521af9607'
- '8a2649dcc6ff8d8f24ddbe40dc2a171824f681c6f33c39c4792b645b87c9dcab'
+ '3bd35dab1ded5d9e1befa10d5c6c4555fe0a76d909fb724ac57d0bf10cb666c1'
+ 'b3de01b7df227478687d7517f61a777450dca765756002c80c4915f271e2d961'
'e393174d7695d0bafed69e868c5fbfecf07aa6969f3b64596d0bae8b067e1711')
if (( _manual_clone )); then
@@ -72,7 +66,7 @@ source=("${source[@]}"
0001-ozone-wayland-implement-text_input_manager_v3.patch
0001-ozone-wayland-implement-text_input_manager-fixes.patch)
sha256sums=("${sha256sums[@]}"
- '6c2405ca58cae05ea1c8116495d7885a0f42f44ca3d70b2bd8f11c27abb23c52'
+ '927ee3d2518d7c4757ba367e98810b18a16b9468c71a4ab39f84b2282a743c23'
'9a5594293616e1390462af1f50276ee29fd6075ffab0e3f944f6346cb2eb8aec'
'8ba5c67b7eb6cacd2dbbc29e6766169f0fca3bbb07779b1a0a76c913f17d343f'
'2a44756404e13c97d000cc0d859604d6848163998ea2f838b3b9bb2c840967e3'
@@ -144,20 +138,11 @@ prepare() {
# Upstream fixes
patch -Np1 -i ../support-ICU-74-in-LazyTextBreakIterator.patch
- # Fix "error: defaulted definition of equality comparison operator cannot
- # be declared constexpr because it invokes a non-constexpr comparison
- # function" (patch for Chromium 121 from Fedora, later extended for 122)
- patch -Np1 -i ../chromium-constexpr.patch
+ # Drop compiler flag that needs newer clang
+ patch -Np1 -i ../drop-flag-unsupported-by-clang17.patch
- # Revert usage of C++20 features which likely need newer clang
- patch -Rp1 -i ../REVERT-use-v8-Array-Iterate-for-converting-script-wrappables.patch
- patch -Rp1 -i ../REVERT-simplify-blink-NativeValueTraitsBase.patch
-
- # Drop compiler flags that need newer clang
- patch -Np1 -i ../drop-flags-unsupported-by-clang16.patch
-
- # Allow libclang_rt.builtins from compiler-rt 16 to be used
- patch -Np1 -i ../compiler-rt-16.patch
+ # Allow libclang_rt.builtins from compiler-rt >= 16 to be used
+ patch -Np1 -i ../compiler-rt-adjust-paths.patch
# Fixes for building with libstdc++ instead of libc++
patch -Np1 -i ../chromium-patches-*/chromium-114-ruy-include.patch
diff --git a/REVERT-simplify-blink-NativeValueTraitsBase.patch b/REVERT-simplify-blink-NativeValueTraitsBase.patch
deleted file mode 100644
index fc046cb..0000000
--- a/REVERT-simplify-blink-NativeValueTraitsBase.patch
+++ /dev/null
@@ -1,747 +0,0 @@
-From 940af9f2c87b436559b97c53763aa9eaaf1254eb Mon Sep 17 00:00:00 2001
-From: Jeremy Roman <jbroman@chromium.org>
-Date: Wed, 15 Nov 2023 16:24:54 +0000
-Subject: [PATCH] Use C++20 features to simplify blink::NativeValueTraitsBase.
-
-These allow some of the metaprogramming bits to be simplified a little.
-
-Change-Id: I052b4397586d21348401616e1792afdb9662f975
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5030335
-Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
-Commit-Queue: Jeremy Roman <jbroman@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1224978}
----
- .../bindings/core/v8/native_value_traits.h | 54 ++----
- .../v8/native_value_traits_buffer_sources.cc | 166 ++++++++----------
- .../core/v8/native_value_traits_impl.h | 159 +++++++----------
- 3 files changed, 151 insertions(+), 228 deletions(-)
-
-diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits.h b/third_party/blink/renderer/bindings/core/v8/native_value_traits.h
-index 7fc91d14acc71a2..1e5a0790df6da81 100644
---- a/third_party/blink/renderer/bindings/core/v8/native_value_traits.h
-+++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits.h
-@@ -5,6 +5,7 @@
- #ifndef THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_H_
- #define THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_H_
-
-+#include <concepts>
- #include <type_traits>
-
- #include "third_party/blink/renderer/bindings/core/v8/idl_types_base.h"
-@@ -30,7 +31,7 @@ class ExceptionState;
- // return toInt32(isolate, value, exceptionState, NormalConversion);
- // }
- // }
--template <typename T, typename SFINAEHelper = void>
-+template <typename T>
- struct NativeValueTraits;
-
- // This declaration serves only as a blueprint for specializations: the
-@@ -45,22 +46,15 @@ struct NativeValueTraits;
-
- namespace bindings {
-
--template <typename T, typename = void>
--struct NativeValueTraitsHasIsNull : std::false_type {};
--
- template <typename T>
--struct NativeValueTraitsHasIsNull<
-- T,
-- std::void_t<decltype(std::declval<T>().IsNull())>> : std::true_type {};
-+struct ImplTypeFor {
-+ using type = T;
-+};
-
- template <typename T>
--struct NativeValueTraitsHasNullValue {
-- // true if |T| supports IDL null value.
-- static constexpr bool value =
-- // ScriptValue, String, and union types have IsNull member function.
-- bindings::NativeValueTraitsHasIsNull<T>::value ||
-- // Pointer types have nullptr as IDL null value.
-- std::is_pointer<T>::value;
-+ requires std::derived_from<T, IDLBase>
-+struct ImplTypeFor<T> {
-+ using type = typename T::ImplType;
- };
-
- } // namespace bindings
-@@ -78,37 +72,17 @@ struct NativeValueTraitsHasNullValue {
- // If present, |NullValue()| will be used when converting from the nullable type
- // T?, and should be used if the impl type has an existing "null" state. If not
- // present, WTF::Optional will be used to wrap the type.
--template <typename T, typename SFINAEHelper = void>
--struct NativeValueTraitsBase {
-- STATIC_ONLY(NativeValueTraitsBase);
--
-- using ImplType = T;
--
-- static constexpr bool has_null_value =
-- bindings::NativeValueTraitsHasNullValue<ImplType>::value;
--
-- template <typename... ExtraArgs>
-- static decltype(auto) ArgumentValue(v8::Isolate* isolate,
-- int argument_index,
-- v8::Local<v8::Value> value,
-- ExceptionState& exception_state,
-- ExtraArgs... extra_args) {
-- return NativeValueTraits<std::remove_pointer_t<T>>::NativeValue(
-- isolate, value, exception_state,
-- std::forward<ExtraArgs>(extra_args)...);
-- }
--};
--
- template <typename T>
--struct NativeValueTraitsBase<
-- T,
-- std::enable_if_t<std::is_base_of<IDLBase, T>::value>> {
-+struct NativeValueTraitsBase {
- STATIC_ONLY(NativeValueTraitsBase);
-
-- using ImplType = typename T::ImplType;
-+ using ImplType = bindings::ImplTypeFor<T>::type;
-
-+ // Pointer types have nullptr as IDL null value.
-+ // ScriptValue, String, and union types have IsNull member function.
- static constexpr bool has_null_value =
-- bindings::NativeValueTraitsHasNullValue<ImplType>::value;
-+ std::is_pointer_v<ImplType> ||
-+ requires(ImplType value) { value.IsNull(); };
-
- template <typename... ExtraArgs>
- static decltype(auto) ArgumentValue(v8::Isolate* isolate,
-diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc b/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc
-index 508ea6d8eea481e..18de71d84023f0c 100644
---- a/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc
-+++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc
-@@ -7,6 +7,7 @@
- #include "third_party/blink/renderer/core/core_export.h"
- #include "third_party/blink/renderer/core/execution_context/execution_context.h"
- #include "third_party/blink/renderer/core/frame/web_feature.h"
-+#include "third_party/blink/renderer/core/typed_arrays/flexible_array_buffer_view.h"
- #include "third_party/blink/renderer/core/typed_arrays/typed_flexible_array_buffer_view.h"
-
- namespace blink {
-@@ -698,12 +699,11 @@ DOMArrayBufferBase* NativeValueTraits<
- // ArrayBufferView
-
- template <typename T>
--NotShared<T> NativeValueTraits<
-- NotShared<T>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
-- NativeValue(v8::Isolate* isolate,
-- v8::Local<v8::Value> value,
-- ExceptionState& exception_state) {
-+ requires std::derived_from<T, DOMArrayBufferView>
-+NotShared<T> NativeValueTraits<NotShared<T>>::NativeValue(
-+ v8::Isolate* isolate,
-+ v8::Local<v8::Value> value,
-+ ExceptionState& exception_state) {
- return NativeValueImpl<
- RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>,
- Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
-@@ -712,13 +712,12 @@ NotShared<T> NativeValueTraits<
- }
-
- template <typename T>
--NotShared<T> NativeValueTraits<
-- NotShared<T>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
-- ArgumentValue(v8::Isolate* isolate,
-- int argument_index,
-- v8::Local<v8::Value> value,
-- ExceptionState& exception_state) {
-+ requires std::derived_from<T, DOMArrayBufferView>
-+NotShared<T> NativeValueTraits<NotShared<T>>::ArgumentValue(
-+ v8::Isolate* isolate,
-+ int argument_index,
-+ v8::Local<v8::Value> value,
-+ ExceptionState& exception_state) {
- return ArgumentValueImpl<
- RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>,
- Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
-@@ -729,12 +728,11 @@ NotShared<T> NativeValueTraits<
- // [AllowShared] ArrayBufferView
-
- template <typename T>
--MaybeShared<T> NativeValueTraits<
-- MaybeShared<T>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
-- NativeValue(v8::Isolate* isolate,
-- v8::Local<v8::Value> value,
-- ExceptionState& exception_state) {
-+ requires std::derived_from<T, DOMArrayBufferView>
-+MaybeShared<T> NativeValueTraits<MaybeShared<T>>::NativeValue(
-+ v8::Isolate* isolate,
-+ v8::Local<v8::Value> value,
-+ ExceptionState& exception_state) {
- return NativeValueImpl<RecipeTrait<MaybeShared<T>>,
- ToDOMViewType<T, kMaybeShared>,
- Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
-@@ -743,13 +741,12 @@ MaybeShared<T> NativeValueTraits<
- }
-
- template <typename T>
--MaybeShared<T> NativeValueTraits<
-- MaybeShared<T>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
-- ArgumentValue(v8::Isolate* isolate,
-- int argument_index,
-- v8::Local<v8::Value> value,
-- ExceptionState& exception_state) {
-+ requires std::derived_from<T, DOMArrayBufferView>
-+MaybeShared<T> NativeValueTraits<MaybeShared<T>>::ArgumentValue(
-+ v8::Isolate* isolate,
-+ int argument_index,
-+ v8::Local<v8::Value> value,
-+ ExceptionState& exception_state) {
- return ArgumentValueImpl<RecipeTrait<MaybeShared<T>>,
- ToDOMViewType<T, kMaybeShared>,
- Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
-@@ -760,12 +757,12 @@ MaybeShared<T> NativeValueTraits<
- // [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView
-
- template <typename T>
--MaybeShared<T> NativeValueTraits<
-- IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
-- NativeValue(v8::Isolate* isolate,
-- v8::Local<v8::Value> value,
-- ExceptionState& exception_state) {
-+ requires std::derived_from<T, DOMArrayBufferView>
-+MaybeShared<T>
-+NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>::NativeValue(
-+ v8::Isolate* isolate,
-+ v8::Local<v8::Value> value,
-+ ExceptionState& exception_state) {
- return NativeValueImpl<
- RecipeTrait<MaybeShared<T>>, ToDOMViewType<T, kMaybeShared>,
- Nullablity::kIsNotNullable, BufferSizeCheck::kDoNotCheck,
-@@ -774,13 +771,12 @@ MaybeShared<T> NativeValueTraits<
- }
-
- template <typename T>
--MaybeShared<T> NativeValueTraits<
-- IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
-- ArgumentValue(v8::Isolate* isolate,
-- int argument_index,
-- v8::Local<v8::Value> value,
-- ExceptionState& exception_state) {
-+ requires std::derived_from<T, DOMArrayBufferView>
-+MaybeShared<T> NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<
-+ MaybeShared<T>>>::ArgumentValue(v8::Isolate* isolate,
-+ int argument_index,
-+ v8::Local<v8::Value> value,
-+ ExceptionState& exception_state) {
- return ArgumentValueImpl<
- RecipeTrait<MaybeShared<T>>, ToDOMViewType<T, kMaybeShared>,
- Nullablity::kIsNotNullable, BufferSizeCheck::kDoNotCheck,
-@@ -791,12 +787,11 @@ MaybeShared<T> NativeValueTraits<
- // Nullable ArrayBufferView
-
- template <typename T>
--NotShared<T> NativeValueTraits<
-- IDLNullable<NotShared<T>>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
-- NativeValue(v8::Isolate* isolate,
-- v8::Local<v8::Value> value,
-- ExceptionState& exception_state) {
-+ requires std::derived_from<T, DOMArrayBufferView>
-+NotShared<T> NativeValueTraits<IDLNullable<NotShared<T>>>::NativeValue(
-+ v8::Isolate* isolate,
-+ v8::Local<v8::Value> value,
-+ ExceptionState& exception_state) {
- return NativeValueImpl<
- RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>,
- Nullablity::kIsNullable, BufferSizeCheck::kCheck,
-@@ -805,13 +800,12 @@ NotShared<T> NativeValueTraits<
- }
-
- template <typename T>
--NotShared<T> NativeValueTraits<
-- IDLNullable<NotShared<T>>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
-- ArgumentValue(v8::Isolate* isolate,
-- int argument_index,
-- v8::Local<v8::Value> value,
-- ExceptionState& exception_state) {
-+ requires std::derived_from<T, DOMArrayBufferView>
-+NotShared<T> NativeValueTraits<IDLNullable<NotShared<T>>>::ArgumentValue(
-+ v8::Isolate* isolate,
-+ int argument_index,
-+ v8::Local<v8::Value> value,
-+ ExceptionState& exception_state) {
- return ArgumentValueImpl<
- RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>,
- Nullablity::kIsNullable, BufferSizeCheck::kCheck,
-@@ -822,12 +816,11 @@ NotShared<T> NativeValueTraits<
- // Nullable [AllowShared] ArrayBufferView
-
- template <typename T>
--MaybeShared<T> NativeValueTraits<
-- IDLNullable<MaybeShared<T>>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
-- NativeValue(v8::Isolate* isolate,
-- v8::Local<v8::Value> value,
-- ExceptionState& exception_state) {
-+ requires std::derived_from<T, DOMArrayBufferView>
-+MaybeShared<T> NativeValueTraits<IDLNullable<MaybeShared<T>>>::NativeValue(
-+ v8::Isolate* isolate,
-+ v8::Local<v8::Value> value,
-+ ExceptionState& exception_state) {
- return NativeValueImpl<RecipeTrait<MaybeShared<T>>,
- ToDOMViewType<T, kMaybeShared>,
- Nullablity::kIsNullable, BufferSizeCheck::kCheck,
-@@ -836,13 +829,12 @@ MaybeShared<T> NativeValueTraits<
- }
-
- template <typename T>
--MaybeShared<T> NativeValueTraits<
-- IDLNullable<MaybeShared<T>>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
-- ArgumentValue(v8::Isolate* isolate,
-- int argument_index,
-- v8::Local<v8::Value> value,
-- ExceptionState& exception_state) {
-+ requires std::derived_from<T, DOMArrayBufferView>
-+MaybeShared<T> NativeValueTraits<IDLNullable<MaybeShared<T>>>::ArgumentValue(
-+ v8::Isolate* isolate,
-+ int argument_index,
-+ v8::Local<v8::Value> value,
-+ ExceptionState& exception_state) {
- return ArgumentValueImpl<RecipeTrait<MaybeShared<T>>,
- ToDOMViewType<T, kMaybeShared>,
- Nullablity::kIsNullable, BufferSizeCheck::kCheck,
-@@ -853,9 +845,9 @@ MaybeShared<T> NativeValueTraits<
- // Nullable [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView
-
- template <typename T>
--MaybeShared<T> NativeValueTraits<
-- IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
-+ requires std::derived_from<T, DOMArrayBufferView>
-+MaybeShared<T>
-+NativeValueTraits<IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>>::
- ArgumentValue(v8::Isolate* isolate,
- int argument_index,
- v8::Local<v8::Value> value,
-@@ -870,13 +862,11 @@ MaybeShared<T> NativeValueTraits<
- // [AllowShared, FlexibleArrayBufferView] ArrayBufferView
-
- template <typename T>
--T NativeValueTraits<T,
-- typename std::enable_if_t<
-- std::is_base_of<FlexibleArrayBufferView, T>::value>>::
-- ArgumentValue(v8::Isolate* isolate,
-- int argument_index,
-- v8::Local<v8::Value> value,
-- ExceptionState& exception_state) {
-+ requires std::derived_from<T, FlexibleArrayBufferView>
-+T NativeValueTraits<T>::ArgumentValue(v8::Isolate* isolate,
-+ int argument_index,
-+ v8::Local<v8::Value> value,
-+ ExceptionState& exception_state) {
- return ArgumentValueImpl<RecipeTrait<T>, ToFlexibleArrayBufferView,
- Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
- ResizableAllowance::kDisallowResizable,
-@@ -888,13 +878,12 @@ T NativeValueTraits<T,
- // ArrayBufferView
-
- template <typename T>
--T NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<T>,
-- typename std::enable_if_t<
-- std::is_base_of<FlexibleArrayBufferView, T>::value>>::
-- ArgumentValue(v8::Isolate* isolate,
-- int argument_index,
-- v8::Local<v8::Value> value,
-- ExceptionState& exception_state) {
-+ requires std::derived_from<T, FlexibleArrayBufferView>
-+T NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<T>>::ArgumentValue(
-+ v8::Isolate* isolate,
-+ int argument_index,
-+ v8::Local<v8::Value> value,
-+ ExceptionState& exception_state) {
- return ArgumentValueImpl<
- RecipeTrait<T>, ToFlexibleArrayBufferView, Nullablity::kIsNotNullable,
- BufferSizeCheck::kDoNotCheck, ResizableAllowance::kDisallowResizable,
-@@ -905,13 +894,12 @@ T NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<T>,
- // Nullable [AllowShared, FlexibleArrayBufferView] ArrayBufferView
-
- template <typename T>
--T NativeValueTraits<IDLNullable<T>,
-- typename std::enable_if_t<
-- std::is_base_of<FlexibleArrayBufferView, T>::value>>::
-- ArgumentValue(v8::Isolate* isolate,
-- int argument_index,
-- v8::Local<v8::Value> value,
-- ExceptionState& exception_state) {
-+ requires std::derived_from<T, FlexibleArrayBufferView>
-+T NativeValueTraits<IDLNullable<T>>::ArgumentValue(
-+ v8::Isolate* isolate,
-+ int argument_index,
-+ v8::Local<v8::Value> value,
-+ ExceptionState& exception_state) {
- return ArgumentValueImpl<RecipeTrait<T>, ToFlexibleArrayBufferView,
- Nullablity::kIsNullable, BufferSizeCheck::kCheck,
- ResizableAllowance::kDisallowResizable,
-diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h b/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h
-index 899929dcf49f90a..5011503dcf1c0c8 100644
---- a/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h
-+++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h
-@@ -5,6 +5,9 @@
- #ifndef THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_IMPL_H_
- #define THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_IMPL_H_
-
-+#include <concepts>
-+#include <type_traits>
-+
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "third_party/blink/renderer/bindings/core/v8/idl_types.h"
- #include "third_party/blink/renderer/bindings/core/v8/native_value_traits.h"
-@@ -715,9 +718,8 @@ struct CORE_EXPORT NativeValueTraits<
- };
-
- template <typename T>
--struct NativeValueTraits<
-- T,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>> {
-+ requires std::derived_from<T, DOMArrayBufferView>
-+struct NativeValueTraits<T> {
- // NotShared<T> or MaybeShared<T> should be used instead.
- static T* NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
-@@ -729,9 +731,8 @@ struct NativeValueTraits<
- };
-
- template <typename T>
--struct NativeValueTraits<
-- IDLNullable<T>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>> {
-+ requires std::derived_from<T, DOMArrayBufferView>
-+struct NativeValueTraits<IDLNullable<T>> {
- // NotShared<T> or MaybeShared<T> should be used instead.
- static T* NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
-@@ -743,9 +744,8 @@ struct NativeValueTraits<
- };
-
- template <typename T>
--struct NativeValueTraits<
-- NotShared<T>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
-+ requires std::derived_from<T, DOMArrayBufferView>
-+struct NativeValueTraits<NotShared<T>>
- : public NativeValueTraitsBase<NotShared<T>> {
- static NotShared<T> NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
-@@ -758,9 +758,8 @@ struct NativeValueTraits<
- };
-
- template <typename T>
--struct NativeValueTraits<
-- IDLNullable<NotShared<T>>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
-+ requires std::derived_from<T, DOMArrayBufferView>
-+struct NativeValueTraits<IDLNullable<NotShared<T>>>
- : public NativeValueTraitsBase<NotShared<T>> {
- static NotShared<T> NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
-@@ -773,9 +772,8 @@ struct NativeValueTraits<
- };
-
- template <typename T>
--struct NativeValueTraits<
-- MaybeShared<T>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
-+ requires std::derived_from<T, DOMArrayBufferView>
-+struct NativeValueTraits<MaybeShared<T>>
- : public NativeValueTraitsBase<MaybeShared<T>> {
- static MaybeShared<T> NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
-@@ -788,9 +786,8 @@ struct NativeValueTraits<
- };
-
- template <typename T>
--struct NativeValueTraits<
-- IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
-+ requires std::derived_from<T, DOMArrayBufferView>
-+struct NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>
- : public NativeValueTraitsBase<MaybeShared<T>> {
- // FlexibleArrayBufferView uses this in its implementation, so we cannot
- // delete it.
-@@ -805,9 +802,8 @@ struct NativeValueTraits<
- };
-
- template <typename T>
--struct NativeValueTraits<
-- IDLNullable<MaybeShared<T>>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
-+ requires std::derived_from<T, DOMArrayBufferView>
-+struct NativeValueTraits<IDLNullable<MaybeShared<T>>>
- : public NativeValueTraitsBase<MaybeShared<T>> {
- static MaybeShared<T> NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
-@@ -820,9 +816,9 @@ struct NativeValueTraits<
- };
-
- template <typename T>
-+ requires std::derived_from<T, DOMArrayBufferView>
- struct NativeValueTraits<
-- IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>,
-- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
-+ IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>>
- : public NativeValueTraitsBase<MaybeShared<T>> {
- // BufferSourceTypeNoSizeLimit must be used only as arguments.
- static MaybeShared<T> NativeValue(v8::Isolate* isolate,
-@@ -836,11 +832,8 @@ struct NativeValueTraits<
- };
-
- template <typename T>
--struct NativeValueTraits<
-- T,
-- typename std::enable_if_t<
-- std::is_base_of<FlexibleArrayBufferView, T>::value>>
-- : public NativeValueTraitsBase<T> {
-+ requires std::derived_from<T, FlexibleArrayBufferView>
-+struct NativeValueTraits<T> : public NativeValueTraitsBase<T> {
- // FlexibleArrayBufferView must be used only as arguments.
- static T NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
-@@ -853,10 +846,8 @@ struct NativeValueTraits<
- };
-
- template <typename T>
--struct NativeValueTraits<
-- IDLBufferSourceTypeNoSizeLimit<T>,
-- typename std::enable_if_t<
-- std::is_base_of<FlexibleArrayBufferView, T>::value>>
-+ requires std::derived_from<T, FlexibleArrayBufferView>
-+struct NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<T>>
- : public NativeValueTraitsBase<T> {
- // BufferSourceTypeNoSizeLimit and FlexibleArrayBufferView must be used only
- // as arguments.
-@@ -871,11 +862,8 @@ struct NativeValueTraits<
- };
-
- template <typename T>
--struct NativeValueTraits<
-- IDLNullable<T>,
-- typename std::enable_if_t<
-- std::is_base_of<FlexibleArrayBufferView, T>::value>>
-- : public NativeValueTraitsBase<T> {
-+ requires std::derived_from<T, FlexibleArrayBufferView>
-+struct NativeValueTraits<IDLNullable<T>> : public NativeValueTraitsBase<T> {
- // FlexibleArrayBufferView must be used only as arguments.
- static T NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
-@@ -1134,9 +1122,8 @@ NativeValueTraits<IDLSequence<T>>::NativeValue(
- }
-
- template <typename T>
--struct NativeValueTraits<IDLNullable<IDLSequence<T>>,
-- typename std::enable_if_t<
-- NativeValueTraits<IDLSequence<T>>::has_null_value>>
-+ requires NativeValueTraits<IDLSequence<T>>::has_null_value
-+struct NativeValueTraits<IDLNullable<IDLSequence<T>>>
- : public NativeValueTraitsBase<HeapVector<AddMemberIfNeeded<T>>*> {
- using ImplType = typename NativeValueTraits<IDLSequence<T>>::ImplType*;
-
-@@ -1203,9 +1190,8 @@ struct NativeValueTraits<IDLArray<T>>
- : public NativeValueTraits<IDLSequence<T>> {};
-
- template <typename T>
--struct NativeValueTraits<IDLNullable<IDLArray<T>>,
-- typename std::enable_if_t<
-- NativeValueTraits<IDLSequence<T>>::has_null_value>>
-+ requires NativeValueTraits<IDLSequence<T>>::has_null_value
-+struct NativeValueTraits<IDLNullable<IDLArray<T>>>
- : public NativeValueTraits<IDLNullable<IDLSequence<T>>> {};
-
- // Record types
-@@ -1335,10 +1321,8 @@ struct NativeValueTraits<IDLRecord<K, V>>
-
- // Callback function types
- template <typename T>
--struct NativeValueTraits<
-- T,
-- typename std::enable_if_t<std::is_base_of<CallbackFunctionBase, T>::value>>
-- : public NativeValueTraitsBase<T*> {
-+ requires std::derived_from<T, CallbackFunctionBase>
-+struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
- static T* NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
- ExceptionState& exception_state) {
-@@ -1361,9 +1345,8 @@ struct NativeValueTraits<
- };
-
- template <typename T>
--struct NativeValueTraits<
-- IDLNullable<T>,
-- typename std::enable_if_t<std::is_base_of<CallbackFunctionBase, T>::value>>
-+ requires std::derived_from<T, CallbackFunctionBase>
-+struct NativeValueTraits<IDLNullable<T>>
- : public NativeValueTraitsBase<IDLNullable<T>> {
- static T* NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
-@@ -1392,10 +1375,8 @@ struct NativeValueTraits<
-
- // Callback interface types
- template <typename T>
--struct NativeValueTraits<
-- T,
-- typename std::enable_if_t<std::is_base_of<CallbackInterfaceBase, T>::value>>
-- : public NativeValueTraitsBase<T*> {
-+ requires std::derived_from<T, CallbackInterfaceBase>
-+struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
- static T* NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
- ExceptionState& exception_state) {
-@@ -1418,9 +1399,8 @@ struct NativeValueTraits<
- };
-
- template <typename T>
--struct NativeValueTraits<
-- IDLNullable<T>,
-- typename std::enable_if_t<std::is_base_of<CallbackInterfaceBase, T>::value>>
-+ requires std::derived_from<T, CallbackInterfaceBase>
-+struct NativeValueTraits<IDLNullable<T>>
- : public NativeValueTraitsBase<IDLNullable<T>> {
- static T* NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
-@@ -1449,11 +1429,8 @@ struct NativeValueTraits<
-
- // Dictionary types
- template <typename T>
--struct NativeValueTraits<
-- T,
-- typename std::enable_if_t<
-- std::is_base_of<bindings::DictionaryBase, T>::value>>
-- : public NativeValueTraitsBase<T*> {
-+ requires std::derived_from<T, bindings::DictionaryBase>
-+struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
- static T* NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
- ExceptionState& exception_state) {
-@@ -1464,14 +1441,11 @@ struct NativeValueTraits<
- // We don't support nullable dictionary types in general since it's quite
- // confusing and often misused.
- template <typename T>
--struct NativeValueTraits<
-- IDLNullable<T>,
-- typename std::enable_if_t<
-- std::is_base_of<bindings::DictionaryBase, T>::value &&
-- (std::is_same<T, GPUColorTargetState>::value ||
-- std::is_same<T, GPURenderPassColorAttachment>::value ||
-- std::is_same<T, GPUVertexBufferLayout>::value)>>
-- : public NativeValueTraitsBase<T*> {
-+ requires std::derived_from<T, bindings::DictionaryBase> &&
-+ (std::same_as<T, GPUColorTargetState> ||
-+ std::same_as<T, GPURenderPassColorAttachment> ||
-+ std::same_as<T, GPUVertexBufferLayout>)
-+struct NativeValueTraits<IDLNullable<T>> : public NativeValueTraitsBase<T*> {
- static T* NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
- ExceptionState& exception_state) {
-@@ -1483,11 +1457,8 @@ struct NativeValueTraits<
-
- // Enumeration types
- template <typename T>
--struct NativeValueTraits<
-- T,
-- typename std::enable_if_t<
-- std::is_base_of<bindings::EnumerationBase, T>::value>>
-- : public NativeValueTraitsBase<T> {
-+ requires std::derived_from<T, bindings::EnumerationBase>
-+struct NativeValueTraits<T> : public NativeValueTraitsBase<T> {
- static T NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
- ExceptionState& exception_state) {
-@@ -1497,10 +1468,8 @@ struct NativeValueTraits<
-
- // Interface types
- template <typename T>
--struct NativeValueTraits<
-- T,
-- typename std::enable_if_t<std::is_base_of<ScriptWrappable, T>::value>>
-- : public NativeValueTraitsBase<T*> {
-+ requires std::derived_from<T, ScriptWrappable>
-+struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
- static inline T* NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
- ExceptionState& exception_state) {
-@@ -1528,9 +1497,8 @@ struct NativeValueTraits<
- };
-
- template <typename T>
--struct NativeValueTraits<
-- IDLNullable<T>,
-- typename std::enable_if_t<std::is_base_of<ScriptWrappable, T>::value>>
-+ requires std::derived_from<T, ScriptWrappable>
-+struct NativeValueTraits<IDLNullable<T>>
- : public NativeValueTraitsBase<IDLNullable<T>> {
- static inline T* NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
-@@ -1565,10 +1533,8 @@ struct NativeValueTraits<
- };
-
- template <typename T>
--struct NativeValueTraits<
-- T,
-- typename std::enable_if_t<std::is_base_of<bindings::UnionBase, T>::value>>
-- : public NativeValueTraitsBase<T*> {
-+ requires std::derived_from<T, bindings::UnionBase>
-+struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
- static T* NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
- ExceptionState& exception_state) {
-@@ -1584,10 +1550,8 @@ struct NativeValueTraits<
- };
-
- template <typename T>
--struct NativeValueTraits<
-- IDLNullable<T>,
-- typename std::enable_if_t<std::is_base_of<bindings::UnionBase, T>::value>>
-- : public NativeValueTraitsBase<T*> {
-+ requires std::derived_from<T, bindings::UnionBase>
-+struct NativeValueTraits<IDLNullable<T>> : public NativeValueTraitsBase<T*> {
- static T* NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
- ExceptionState& exception_state) {
-@@ -1608,9 +1572,8 @@ struct NativeValueTraits<
-
- // Nullable types
- template <typename InnerType>
--struct NativeValueTraits<
-- IDLNullable<InnerType>,
-- typename std::enable_if_t<!NativeValueTraits<InnerType>::has_null_value>>
-+ requires(!NativeValueTraits<InnerType>::has_null_value)
-+struct NativeValueTraits<IDLNullable<InnerType>>
- : public NativeValueTraitsBase<IDLNullable<InnerType>> {
- // https://webidl.spec.whatwg.org/#es-nullable-type
- using ImplType =
-@@ -1642,9 +1605,8 @@ struct NativeValueTraits<IDLNullable<IDLNullable<T>>>;
-
- // Optional types
- template <typename T>
--struct NativeValueTraits<IDLOptional<T>,
-- typename std::enable_if_t<std::is_arithmetic<
-- typename NativeValueTraits<T>::ImplType>::value>>
-+ requires std::is_arithmetic_v<typename NativeValueTraits<T>::ImplType>
-+struct NativeValueTraits<IDLOptional<T>>
- : public NativeValueTraitsBase<typename NativeValueTraits<T>::ImplType> {
- using ImplType = typename NativeValueTraits<T>::ImplType;
-
-@@ -1666,9 +1628,8 @@ struct NativeValueTraits<IDLOptional<T>,
- };
-
- template <typename T>
--struct NativeValueTraits<IDLOptional<T>,
-- typename std::enable_if_t<std::is_pointer<
-- typename NativeValueTraits<T>::ImplType>::value>>
-+ requires std::is_pointer_v<typename NativeValueTraits<T>::ImplType>
-+struct NativeValueTraits<IDLOptional<T>>
- : public NativeValueTraitsBase<typename NativeValueTraits<T>::ImplType> {
- using ImplType = typename NativeValueTraits<T>::ImplType;
-
diff --git a/REVERT-use-v8-Array-Iterate-for-converting-script-wrappables.patch b/REVERT-use-v8-Array-Iterate-for-converting-script-wrappables.patch
deleted file mode 100644
index 8db4a84..0000000
--- a/REVERT-use-v8-Array-Iterate-for-converting-script-wrappables.patch
+++ /dev/null
@@ -1,174 +0,0 @@
-From ce71348a09f6689dd01a68db64b172191d0182d8 Mon Sep 17 00:00:00 2001
-From: Andrey Kosyakov <caseq@chromium.org>
-Date: Thu, 21 Dec 2023 18:38:38 +0000
-Subject: [PATCH] [bindings] Use v8::Array::Iterate for converting script
- wrappables
-
-This changes CreateIDLSequenceFromV8Array to use the new
-v8::Array::Iterate() operation.
-This speeds up the "execBundles" part of the microbenchmark
-at crbug.com/dawn/1858 by around 3x.
-This depends on crrev.com/c/4846594 landing (and rolling) first.
-
-This is a slight re-work of https://crrev.com/c/4847447/3,
-originally by jkummerow@chromium.org
-
-Bug: v8:14218, dawn:1858, 1511239
-Change-Id: Ia266556d05b4d53e6942e12609d1c08882b4ff0f
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5132129
-Commit-Queue: Andrey Kosyakov <caseq@chromium.org>
-Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1240236}
----
- .../bindings/core/v8/native_value_traits.h | 6 ++
- .../core/v8/native_value_traits_impl.h | 91 ++++++++++++++++++-
- 2 files changed, 95 insertions(+), 2 deletions(-)
-
-diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits.h b/third_party/blink/renderer/bindings/core/v8/native_value_traits.h
-index 1e5a0790df6d..a5c28b37e945 100644
---- a/third_party/blink/renderer/bindings/core/v8/native_value_traits.h
-+++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits.h
-@@ -84,6 +84,12 @@ struct NativeValueTraitsBase {
- std::is_pointer_v<ImplType> ||
- requires(ImplType value) { value.IsNull(); };
-
-+ // This should only be true for certain subclasses of ScriptWrappable
-+ // that satisfy the assumptions of CreateIDLSequenceFromV8ArraySlow() with
-+ // regards to how NativeValue() is implemented for the underlying type.
-+ static constexpr bool supports_scriptwrappable_specific_fast_array_iteration =
-+ false;
-+
- template <typename... ExtraArgs>
- static decltype(auto) ArgumentValue(v8::Isolate* isolate,
- int argument_index,
-diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h b/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h
-index 5011503dcf1c..f085b6e90516 100644
---- a/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h
-+++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h
-@@ -1037,10 +1037,86 @@ CreateIDLSequenceFromV8ArraySlow(v8::Isolate* isolate,
- return {};
- }
-
-- typename NativeValueTraits<IDLSequence<T>>::ImplType result;
-+ using ResultType = typename NativeValueTraits<IDLSequence<T>>::ImplType;
-+ ResultType result;
- result.ReserveInitialCapacity(length);
- v8::Local<v8::Context> current_context = isolate->GetCurrentContext();
- v8::TryCatch try_block(isolate);
-+
-+ // Fast path -- we're creating a sequence of script wrappables, which can be
-+ // done by directly getting underlying object as long as array types are
-+ // homogeneous. With ScriptWrappables, we don't expect to enter JS during
-+ // iteration, so we can rely on v8::Array::Iterate() which is much faster than
-+ // iterating an array on the client side of the v8. Additionally, for most
-+ // subsptyes of ScriptWrappables, we can speed up type checks (see more on
-+ // that below next to supports_scriptwrappable_specific_fast_array_iteration
-+ // check.
-+ if constexpr (std::is_base_of_v<ScriptWrappable, T>) {
-+ struct CallbackData {
-+ STACK_ALLOCATED();
-+
-+ public:
-+ v8::Isolate* isolate;
-+ v8::TypecheckWitness witness;
-+ ResultType& result;
-+ ExceptionState& exception_state;
-+ CallbackData(v8::Isolate* isolate,
-+ ResultType& result,
-+ ExceptionState& exception_state)
-+ : isolate(isolate),
-+ witness(isolate),
-+ result(result),
-+ exception_state(exception_state) {}
-+ };
-+
-+ CallbackData callback_data(isolate, result, exception_state);
-+ v8::Array::IterationCallback callback = [](uint32_t index,
-+ v8::Local<v8::Value> v8_element,
-+ void* data) {
-+ CallbackData* callback_data = reinterpret_cast<CallbackData*>(data);
-+ // 3.4. Initialize Si to the result of converting nextItem to an IDL value
-+ // of type T.
-+ v8::TypecheckWitness& witness = callback_data->witness;
-+ // We can speed up type check by taking advantage of V8's type witness,
-+ // provided traits' NativeValue implementation doesn't have additional
-+ // logic beyond checking the type and calling ToScriptWrappable().
-+ if constexpr (
-+ NativeValueTraits<
-+ T>::supports_scriptwrappable_specific_fast_array_iteration) {
-+ if (witness.Matches(v8_element)) {
-+ auto&& value = ToScriptWrappable(v8_element.As<v8::Object>())
-+ ->template ToImpl<T>();
-+ callback_data->result.push_back(std::move(value));
-+ return v8::Array::CallbackResult::kContinue;
-+ }
-+ }
-+ auto&& element = NativeValueTraits<T>::NativeValue(
-+ callback_data->isolate, v8_element, callback_data->exception_state);
-+ if (callback_data->exception_state.HadException()) {
-+ // It doesn't matter whether we return `kException` or `kBreak` here,
-+ // as that only affects the return value of `v8_array->Iterate()`,
-+ // which we are ignoring.
-+ return v8::Array::CallbackResult::kException;
-+ }
-+ if constexpr (
-+ NativeValueTraits<
-+ T>::supports_scriptwrappable_specific_fast_array_iteration) {
-+ witness.Update(v8_element);
-+ }
-+ callback_data->result.push_back(std::move(element));
-+ return v8::Array::CallbackResult::kContinue;
-+ };
-+ if (!v8_array->Iterate(current_context, callback, &callback_data)
-+ .IsJust()) {
-+ if (try_block.HasCaught()) {
-+ exception_state.RethrowV8Exception(try_block.Exception());
-+ }
-+ DCHECK(exception_state.HadException());
-+ return {};
-+ }
-+ return result;
-+ }
-+
- // Array length may change if array is mutated during iteration.
- for (uint32_t i = 0; i < v8_array->Length(); ++i) {
- v8::Local<v8::Value> v8_element;
-@@ -1056,6 +1132,7 @@ CreateIDLSequenceFromV8ArraySlow(v8::Isolate* isolate,
- return {};
- result.push_back(std::move(element));
- }
-+
- // 3.2. If next is false, then return an IDL sequence value of type
- // sequence<T> of length i, where the value of the element at index j is Sj.
- return result;
-@@ -1398,6 +1475,7 @@ struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
- }
- };
-
-+// Interface types
- template <typename T>
- requires std::derived_from<T, CallbackInterfaceBase>
- struct NativeValueTraits<IDLNullable<T>>
-@@ -1470,12 +1548,21 @@ struct NativeValueTraits<T> : public NativeValueTraitsBase<T> {
- template <typename T>
- requires std::derived_from<T, ScriptWrappable>
- struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
-+ // This signifies that CreateIDLSequenceFromV8ArraySlow() may apply
-+ // certain optimization based on assumptions about `NativeValue()`
-+ // implementation below. For subclasses of ScriptWrappable that have
-+ // different implementation of NativeValue(), this should remain false.
-+ static constexpr bool supports_scriptwrappable_specific_fast_array_iteration =
-+ true;
-+
- static inline T* NativeValue(v8::Isolate* isolate,
- v8::Local<v8::Value> value,
- ExceptionState& exception_state) {
- const WrapperTypeInfo* wrapper_type_info = T::GetStaticWrapperTypeInfo();
-- if (V8PerIsolateData::From(isolate)->HasInstance(wrapper_type_info, value))
-+ if (V8PerIsolateData::From(isolate)->HasInstance(wrapper_type_info,
-+ value)) {
- return ToScriptWrappable(value.As<v8::Object>())->template ToImpl<T>();
-+ }
-
- bindings::NativeValueTraitsInterfaceNotOfType(wrapper_type_info,
- exception_state);
diff --git a/chromium-constexpr.patch b/chromium-constexpr.patch
deleted file mode 100644
index 35acd39..0000000
--- a/chromium-constexpr.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-diff --git a/base/types/strong_alias.h b/base/types/strong_alias.h
-index 9f80b7fc8adf..4d28bd195c8a 100644
---- a/base/types/strong_alias.h
-+++ b/base/types/strong_alias.h
-@@ -110,7 +110,7 @@ class StrongAlias {
- // a `StrongAlias<W>`.
- friend constexpr auto operator<=>(const StrongAlias& lhs,
- const StrongAlias& rhs) = default;
-- friend constexpr bool operator==(const StrongAlias& lhs,
-+ friend bool operator==(const StrongAlias& lhs,
- const StrongAlias& rhs) = default;
-
- // Hasher to use in std::unordered_map, std::unordered_set, etc.
-diff --git a/components/autofill/core/common/unique_ids.h b/components/autofill/core/common/unique_ids.h
-index eb8d5d2c8ec9..6bfabf286379 100644
---- a/components/autofill/core/common/unique_ids.h
-+++ b/components/autofill/core/common/unique_ids.h
-@@ -137,7 +137,7 @@ struct GlobalId {
-
- friend constexpr auto operator<=>(const GlobalId<RendererId>& lhs,
- const GlobalId<RendererId>& rhs) = default;
-- friend constexpr bool operator==(const GlobalId<RendererId>& lhs,
-+ friend bool operator==(const GlobalId<RendererId>& lhs,
- const GlobalId<RendererId>& rhs) = default;
- };
-
-diff --git a/components/performance_manager/resource_attribution/query_params.h b/components/performance_manager/resource_attribution/query_params.h
-index 4616f1665e91..679dfcabe999 100644
---- a/components/performance_manager/resource_attribution/query_params.h
-+++ b/components/performance_manager/resource_attribution/query_params.h
-@@ -29,7 +29,7 @@ class ContextCollection {
- ContextCollection(const ContextCollection& other);
- ContextCollection& operator=(const ContextCollection& other);
-
-- friend constexpr bool operator==(const ContextCollection&,
-+ friend bool operator==(const ContextCollection&,
- const ContextCollection&) = default;
-
- // Adds `context` to the collection.
-@@ -67,7 +67,7 @@ struct QueryParams {
- QueryParams(const QueryParams& other);
- QueryParams& operator=(const QueryParams& other);
-
-- friend constexpr bool operator==(const QueryParams&,
-+ friend bool operator==(const QueryParams&,
- const QueryParams&) = default;
-
- // Resource types to measure.
diff --git a/compiler-rt-16.patch b/compiler-rt-adjust-paths.patch
index e14829a..0469220 100644
--- a/compiler-rt-16.patch
+++ b/compiler-rt-adjust-paths.patch
@@ -18,17 +18,13 @@ index d4de2e0cca0..57359c32121 100644
} else {
assert(false) # Unhandled cpu type
}
-@@ -166,6 +169,15 @@ template("clang_lib") {
+@@ -166,6 +169,11 @@ template("clang_lib") {
assert(false) # Unhandled target platform
}
-+ # Bit of a hack to make this find builtins from compiler-rt 16
++ # Bit of a hack to make this find builtins from compiler-rt >= 16
+ if (is_linux || is_chromeos) {
-+ if (clang_version == "16") {
-+ _dir = "linux"
-+ } else {
-+ _suffix = ""
-+ }
++ _dir = "linux"
+ }
+
_clang_lib_dir = "$clang_base_path/lib/clang/$clang_version/lib"
diff --git a/drop-flags-unsupported-by-clang16.patch b/drop-flag-unsupported-by-clang17.patch
index a146a6d..a1412c9 100644
--- a/drop-flags-unsupported-by-clang16.patch
+++ b/drop-flag-unsupported-by-clang17.patch
@@ -27,14 +27,3 @@ index 89b4755ac8b3..94b457385663 100644
# TODO(crbug.com/1235145): Investigate why/if this should be needed.
if (is_win) {
cflags += [ "/clang:-ffp-contract=off" ]
-@@ -802,10 +784,6 @@ config("compiler") {
- if (is_apple) {
- ldflags += [ "-Wcrl,object_path_lto" ]
- }
--
-- # 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