diff options
-rw-r--r-- | .SRCINFO | 17 | ||||
-rw-r--r-- | PKGBUILD | 11 | ||||
-rw-r--r-- | REVERT-simplify-blink-NativeValueTraitsBase.patch | 747 |
3 files changed, 761 insertions, 14 deletions
@@ -1,6 +1,6 @@ pkgbase = ungoogled-chromium pkgdesc = A lightweight approach to removing Google web service dependency - pkgver = 121.0.6167.139 + pkgver = 121.0.6167.184 pkgrel = 1 url = https://github.com/ungoogled-software/ungoogled-chromium arch = x86_64 @@ -39,6 +39,7 @@ pkgbase = ungoogled-chromium depends = flac depends = libxml2 depends = libwebp + depends = minizip depends = opus depends = harfbuzz depends = libxslt @@ -51,27 +52,27 @@ 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=121.0.6167.139 - provides = chromedriver=121.0.6167.139 + provides = chromium=121.0.6167.184 + provides = chromedriver=121.0.6167.184 conflicts = chromium conflicts = chromedriver options = !lto - source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-121.0.6167.139.tar.xz + source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-121.0.6167.184.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/121/chromium-patches-121.tar.bz2 - source = REVERT-simplify-blink-NativeValueTraitsBase.patch::https://github.com/chromium/chromium/commit/940af9f2c87b.patch + source = REVERT-simplify-blink-NativeValueTraitsBase.patch source = icu-74.patch source = chromium-121-constexpr.patch source = drop-flags-unsupported-by-clang16.patch source = compiler-rt-16.patch source = use-oauth2-client-switches-as-default.patch - source = ungoogled-chromium-121.0.6167.139-1.tar.gz::https://github.com/ungoogled-software/ungoogled-chromium/archive/121.0.6167.139-1.tar.gz + source = ungoogled-chromium-121.0.6167.184-1.tar.gz::https://github.com/ungoogled-software/ungoogled-chromium/archive/121.0.6167.184-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 = e12cc967bef7a79630828792f02d95297a06eb905c98e4c6e065fd5e74d6f9ff + sha256sums = 9fd6b82e7077ac26ec264bfcfc8ac8e0c2a0240378f035c9c0f34ad467aef09d sha256sums = 213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a sha256sums = e9113c1ed2900b84b488e608774ce25212d3c60094abdae005d8a943df9b505e sha256sums = 318df8f8662071cebcdf953698408058e17f59f184500b7e12e01a04a4206b50 @@ -80,7 +81,7 @@ pkgbase = ungoogled-chromium sha256sums = 8d1cdf3ddd8ff98f302c90c13953f39cd804b3479b13b69b8ef138ac57c83556 sha256sums = 8a2649dcc6ff8d8f24ddbe40dc2a171824f681c6f33c39c4792b645b87c9dcab sha256sums = e393174d7695d0bafed69e868c5fbfecf07aa6969f3b64596d0bae8b067e1711 - sha256sums = a4f389f9159effbbe47a07ade0b8b9b86ebb64a56230ea7a4b43664cd499f829 + sha256sums = feb1039d4d5c13fbeb53736e0f0bbfea09c7d71af81bcc7b52d0fb42fd86a4a1 sha256sums = 9a5594293616e1390462af1f50276ee29fd6075ffab0e3f944f6346cb2eb8aec sha256sums = 8ba5c67b7eb6cacd2dbbc29e6766169f0fca3bbb07779b1a0a76c913f17d343f sha256sums = 2a44756404e13c97d000cc0d859604d6848163998ea2f838b3b9bb2c840967e3 @@ -11,7 +11,7 @@ # Contributor: Daniel J Griffiths <ghost1227@archlinux.us> pkgname=ungoogled-chromium -pkgver=121.0.6167.139 +pkgver=121.0.6167.184 pkgrel=1 _launcher_ver=8 _manual_clone=0 @@ -35,13 +35,13 @@ options=('!lto') # Chromium adds its own flags for ThinLTO source=(https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$pkgver.tar.xz 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 - REVERT-simplify-blink-NativeValueTraitsBase.patch::https://github.com/chromium/chromium/commit/940af9f2c87b.patch + REVERT-simplify-blink-NativeValueTraitsBase.patch icu-74.patch chromium-121-constexpr.patch drop-flags-unsupported-by-clang16.patch compiler-rt-16.patch use-oauth2-client-switches-as-default.patch) -sha256sums=('e12cc967bef7a79630828792f02d95297a06eb905c98e4c6e065fd5e74d6f9ff' +sha256sums=('9fd6b82e7077ac26ec264bfcfc8ac8e0c2a0240378f035c9c0f34ad467aef09d' '213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a' 'e9113c1ed2900b84b488e608774ce25212d3c60094abdae005d8a943df9b505e' '318df8f8662071cebcdf953698408058e17f59f184500b7e12e01a04a4206b50' @@ -70,13 +70,12 @@ source=("${source[@]}" 0001-ozone-wayland-implement-text_input_manager_v3.patch 0001-ozone-wayland-implement-text_input_manager-fixes.patch) sha256sums=("${sha256sums[@]}" - 'a4f389f9159effbbe47a07ade0b8b9b86ebb64a56230ea7a4b43664cd499f829' + 'feb1039d4d5c13fbeb53736e0f0bbfea09c7d71af81bcc7b52d0fb42fd86a4a1' '9a5594293616e1390462af1f50276ee29fd6075ffab0e3f944f6346cb2eb8aec' '8ba5c67b7eb6cacd2dbbc29e6766169f0fca3bbb07779b1a0a76c913f17d343f' '2a44756404e13c97d000cc0d859604d6848163998ea2f838b3b9bb2c840967e3' 'd9974ddb50777be428fd0fa1e01ffe4b587065ba6adefea33678e1b3e25d1285' 'a2da75d0c20529f2d635050e0662941c0820264ea9371eb900b9d90b5968fa6a') - # Possible replacements are listed in build/linux/unbundle/replace_gn_files.py # Keys are the names in the above script; values are the dependencies in Arch @@ -103,7 +102,7 @@ declare -gA _system_libs=( #[re2]=re2 # needs libstdc++ #[snappy]=snappy # needs libstdc++ #[woff2]=woff2 # needs libstdc++ - #[zlib]=minizip + [zlib]=minizip ) _unwanted_bundled_libs=( $(printf "%s\n" ${!_system_libs[@]} | sed 's/^libjpeg$/&_turbo/') diff --git a/REVERT-simplify-blink-NativeValueTraitsBase.patch b/REVERT-simplify-blink-NativeValueTraitsBase.patch new file mode 100644 index 0000000..fc046cb --- /dev/null +++ b/REVERT-simplify-blink-NativeValueTraitsBase.patch @@ -0,0 +1,747 @@ +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; + |