Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] chromium: update to 121.0.6167.85.
@ 2024-01-25 15:39 Duncaen
  2024-02-10 23:38 ` [PR PATCH] [Updated] " Duncaen
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Duncaen @ 2024-01-25 15:39 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 406 bytes --]

There is a new pull request by Duncaen against master on the void-packages repository

https://github.com/Duncaen/void-packages chromium-121
https://github.com/void-linux/void-packages/pull/48367

chromium: update to 121.0.6167.85.
[ci skip]

* [ ] x86_64-glibc
* [ ] x86_64-musl
* [ ] aarch64-musl
* [ ] i686

A patch file from https://github.com/void-linux/void-packages/pull/48367.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-chromium-121-48367.patch --]
[-- Type: text/x-diff, Size: 129243 bytes --]

From 50f143645627df8550f45162bf9f783e4d5c2c7b Mon Sep 17 00:00:00 2001
From: Duncaen <duncaen@voidlinux.org>
Date: Thu, 25 Jan 2024 16:07:07 +0100
Subject: [PATCH] chromium: update to 121.0.6167.85.

---
 ...ERT-roll-src-third_party-ffmpeg-m102.patch | 333 -------------
 ...oll-src-third_party-ffmpeg-m102.patch.args |   1 -
 ...ERT-roll-src-third_party-ffmpeg-m106.patch |  55 ---
 ...oll-src-third_party-ffmpeg-m106.patch.args |   1 -
 .../chromium-120-arm64-memory_tagging.patch   |  14 -
 ...romium-120-el7-clang-version-warning.patch |  16 -
 .../chromium-120-gn-workaround-atspi.patch    |  13 -
 .../chromium-120-missing-header-files.patch   | 459 ------------------
 .../chromium-121-arm64-memory_tagging.patch   |  13 +
 .../patches/chromium-121-constexpr.patch      |  12 +
 ...romium-121-el7-clang-version-warning.patch |  15 +
 ...onstructor-involving-anonymous-union.patch |  12 +
 .../chromium-121-missing-header-files.patch   | 459 ++++++++++++++++++
 .../patches/chromium-121-mnemonic-error.patch |  12 +
 ...hromium-121-no_matching_constructor.patch} | 407 ++++++++++++----
 ...-121-nullptr_t-without-namespace-std.patch |  12 +
 ...-121-python3-invalid-escape-sequence.patch |  77 +++
 .../patches/chromium-121-rust-clang_lib.patch |  22 +
 ...m-121-rust-without-profiler_builtins.patch |  10 +
 .../chromium-121-system-old-ffmpeg.patch      |  34 ++
 ...name.patch => chromium-121-typename.patch} |  54 +++
 ...around_clang_bug-structured_binding.patch} |  20 +-
 srcpkgs/chromium/template                     |  13 +-
 23 files changed, 1057 insertions(+), 1007 deletions(-)
 delete mode 100644 srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch
 delete mode 100644 srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch.args
 delete mode 100644 srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch
 delete mode 100644 srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch.args
 delete mode 100644 srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-120-missing-header-files.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-arm64-memory_tagging.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-constexpr.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-el7-clang-version-warning.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-el7-default-constructor-involving-anonymous-union.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-missing-header-files.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-mnemonic-error.patch
 rename srcpkgs/chromium/patches/{chromium-120-no_matching_constructor.patch => chromium-121-no_matching_constructor.patch} (75%)
 create mode 100644 srcpkgs/chromium/patches/chromium-121-nullptr_t-without-namespace-std.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-python3-invalid-escape-sequence.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-rust-clang_lib.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-rust-without-profiler_builtins.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-system-old-ffmpeg.patch
 rename srcpkgs/chromium/patches/{chromium-120-typename.patch => chromium-121-typename.patch} (78%)
 rename srcpkgs/chromium/patches/{chromium-120-workaround_clang_bug-structured_binding.patch => chromium-121-workaround_clang_bug-structured_binding.patch} (75%)

diff --git a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch b/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch
deleted file mode 100644
index e739b40a2733c..0000000000000
--- a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch
+++ /dev/null
@@ -1,333 +0,0 @@
-From 6e554a30893150793c2638e3689cf208ffc8e375 Mon Sep 17 00:00:00 2001
-From: Dale Curtis <dalecurtis@chromium.org>
-Date: Sat, 2 Apr 2022 05:13:53 +0000
-Subject: [PATCH] Roll src/third_party/ffmpeg/ 574c39cce..32b2d1d526 (1125
- commits)
-
-https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/574c39cce323..32b2d1d526
-
-Created with:
-  roll-dep src/third_party/ffmpeg
-
-Fixed: 1293918
-Cq-Include-Trybots: luci.chromium.try:mac_chromium_asan_rel_ng,linux_chromium_asan_rel_ng,linux_chromium_chromeos_asan_rel_ng
-Change-Id: I41945d0f963e3d1f65940067bac22f63b68e37d2
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3565647
-Auto-Submit: Dale Curtis <dalecurtis@chromium.org>
-Reviewed-by: Dan Sanders <sandersd@chromium.org>
-Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#988253}
----
- .../clear_key_cdm/ffmpeg_cdm_audio_decoder.cc | 29 ++++++++++---------
- media/ffmpeg/ffmpeg_common.cc                 | 11 +++----
- media/filters/audio_file_reader.cc            |  9 +++---
- media/filters/audio_file_reader_unittest.cc   |  6 ++--
- .../filters/audio_video_metadata_extractor.cc | 11 +++++--
- .../filters/ffmpeg_aac_bitstream_converter.cc |  7 +++--
- ...ffmpeg_aac_bitstream_converter_unittest.cc |  2 +-
- media/filters/ffmpeg_audio_decoder.cc         | 13 +++++----
- 8 files changed, 51 insertions(+), 37 deletions(-)
-
-diff --git a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
-index e4fc3f460e2..9b1ad9f7675 100644
---- a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
-+++ b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
-@@ -74,7 +74,7 @@ void CdmAudioDecoderConfigToAVCodecContext(
-       codec_context->sample_fmt = AV_SAMPLE_FMT_NONE;
-   }
- 
--  codec_context->channels = config.channel_count;
-+  codec_context->ch_layout.nb_channels = config.channel_count;
-   codec_context->sample_rate = config.samples_per_second;
- 
-   if (config.extra_data) {
-@@ -124,8 +124,8 @@ void CopySamples(cdm::AudioFormat cdm_format,
-     case cdm::kAudioFormatPlanarS16:
-     case cdm::kAudioFormatPlanarF32: {
-       const int decoded_size_per_channel =
--          decoded_audio_size / av_frame.channels;
--      for (int i = 0; i < av_frame.channels; ++i) {
-+          decoded_audio_size / av_frame.ch_layout.nb_channels;
-+      for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) {
-         memcpy(output_buffer, av_frame.extended_data[i],
-                decoded_size_per_channel);
-         output_buffer += decoded_size_per_channel;
-@@ -185,13 +185,14 @@ bool FFmpegCdmAudioDecoder::Initialize(
-   // Success!
-   decoding_loop_ = std::make_unique<FFmpegDecodingLoop>(codec_context_.get());
-   samples_per_second_ = config.samples_per_second;
--  bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8;
-+  bytes_per_frame_ =
-+      codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8;
-   output_timestamp_helper_ =
-       std::make_unique<AudioTimestampHelper>(config.samples_per_second);
-   is_initialized_ = true;
- 
-   // Store initial values to guard against midstream configuration changes.
--  channels_ = codec_context_->channels;
-+  channels_ = codec_context_->ch_layout.nb_channels;
-   av_sample_format_ = codec_context_->sample_fmt;
- 
-   return true;
-@@ -291,17 +292,19 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer(
-   for (auto& frame : audio_frames) {
-     int decoded_audio_size = 0;
-     if (frame->sample_rate != samples_per_second_ ||
--        frame->channels != channels_ || frame->format != av_sample_format_) {
-+        frame->ch_layout.nb_channels != channels_ ||
-+        frame->format != av_sample_format_) {
-       DLOG(ERROR) << "Unsupported midstream configuration change!"
-                   << " Sample Rate: " << frame->sample_rate << " vs "
--                  << samples_per_second_ << ", Channels: " << frame->channels
--                  << " vs " << channels_ << ", Sample Format: " << frame->format
--                  << " vs " << av_sample_format_;
-+                  << samples_per_second_
-+                  << ", Channels: " << frame->ch_layout.nb_channels << " vs "
-+                  << channels_ << ", Sample Format: " << frame->format << " vs "
-+                  << av_sample_format_;
-       return cdm::kDecodeError;
-     }
- 
-     decoded_audio_size = av_samples_get_buffer_size(
--        nullptr, codec_context_->channels, frame->nb_samples,
-+        nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
-         codec_context_->sample_fmt, 1);
-     if (!decoded_audio_size)
-       continue;
-@@ -320,9 +323,9 @@ bool FFmpegCdmAudioDecoder::OnNewFrame(
-     size_t* total_size,
-     std::vector<std::unique_ptr<AVFrame, ScopedPtrAVFreeFrame>>* audio_frames,
-     AVFrame* frame) {
--  *total_size += av_samples_get_buffer_size(nullptr, codec_context_->channels,
--                                            frame->nb_samples,
--                                            codec_context_->sample_fmt, 1);
-+  *total_size += av_samples_get_buffer_size(
-+      nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
-+      codec_context_->sample_fmt, 1);
-   audio_frames->emplace_back(av_frame_clone(frame));
-   return true;
- }
-diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc
-index 87ca8969626..76f03d6608e 100644
---- a/media/ffmpeg/ffmpeg_common.cc
-+++ b/media/ffmpeg/ffmpeg_common.cc
-@@ -345,10 +345,11 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
-       codec_context->sample_fmt, codec_context->codec_id);
- 
-   ChannelLayout channel_layout =
--      codec_context->channels > 8
-+      codec_context->ch_layout.nb_channels > 8
-           ? CHANNEL_LAYOUT_DISCRETE
--          : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout,
--                                               codec_context->channels);
-+          : ChannelLayoutToChromeChannelLayout(
-+                codec_context->ch_layout.u.mask,
-+                codec_context->ch_layout.nb_channels);
- 
-   int sample_rate = codec_context->sample_rate;
-   switch (codec) {
-@@ -401,7 +402,7 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
-                      extra_data, encryption_scheme, seek_preroll,
-                      codec_context->delay);
-   if (channel_layout == CHANNEL_LAYOUT_DISCRETE)
--    config->SetChannelsForDiscrete(codec_context->channels);
-+    config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels);
- 
- #if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO)
-   // These are bitstream formats unknown to ffmpeg, so they don't have
-@@ -470,7 +471,7 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config,
- 
-   // TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses
-   // said information to decode.
--  codec_context->channels = config.channels();
-+  codec_context->ch_layout.nb_channels = config.channels();
-   codec_context->sample_rate = config.samples_per_second();
- 
-   if (config.extra_data().empty()) {
-diff --git a/media/filters/audio_file_reader.cc b/media/filters/audio_file_reader.cc
-index 5f257bdfaa6..e1be5aa9a5b 100644
---- a/media/filters/audio_file_reader.cc
-+++ b/media/filters/audio_file_reader.cc
-@@ -113,14 +113,15 @@ bool AudioFileReader::OpenDecoder() {
- 
-   // Verify the channel layout is supported by Chrome.  Acts as a sanity check
-   // against invalid files.  See http://crbug.com/171962
--  if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout,
--                                         codec_context_->channels) ==
-+  if (ChannelLayoutToChromeChannelLayout(
-+          codec_context_->ch_layout.u.mask,
-+          codec_context_->ch_layout.nb_channels) ==
-       CHANNEL_LAYOUT_UNSUPPORTED) {
-     return false;
-   }
- 
-   // Store initial values to guard against midstream configuration changes.
--  channels_ = codec_context_->channels;
-+  channels_ = codec_context_->ch_layout.nb_channels;
-   audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id);
-   sample_rate_ = codec_context_->sample_rate;
-   av_sample_format_ = codec_context_->sample_fmt;
-@@ -223,7 +224,7 @@ bool AudioFileReader::OnNewFrame(
-   if (frames_read < 0)
-     return false;
- 
--  const int channels = frame->channels;
-+  const int channels = frame->ch_layout.nb_channels;
-   if (frame->sample_rate != sample_rate_ || channels != channels_ ||
-       frame->format != av_sample_format_) {
-     DLOG(ERROR) << "Unsupported midstream configuration change!"
-diff --git a/media/filters/audio_file_reader_unittest.cc b/media/filters/audio_file_reader_unittest.cc
-index 2aba7927a31..1f45a50cace 100644
---- a/media/filters/audio_file_reader_unittest.cc
-+++ b/media/filters/audio_file_reader_unittest.cc
-@@ -121,11 +121,11 @@ class AudioFileReaderTest : public testing::Test {
-     EXPECT_FALSE(reader_->Open());
-   }
- 
--  void RunTestFailingDecode(const char* fn) {
-+  void RunTestFailingDecode(const char* fn, int expect_read = 0) {
-     Initialize(fn);
-     EXPECT_TRUE(reader_->Open());
-     std::vector<std::unique_ptr<AudioBus>> decoded_audio_packets;
--    EXPECT_EQ(reader_->Read(&decoded_audio_packets), 0);
-+    EXPECT_EQ(reader_->Read(&decoded_audio_packets), expect_read);
-   }
- 
-   void RunTestPartialDecode(const char* fn) {
-@@ -219,7 +219,7 @@ TEST_F(AudioFileReaderTest, AAC_ADTS) {
- }
- 
- TEST_F(AudioFileReaderTest, MidStreamConfigChangesFail) {
--  RunTestFailingDecode("midstream_config_change.mp3");
-+  RunTestFailingDecode("midstream_config_change.mp3", 42624);
- }
- #endif
- 
-diff --git a/media/filters/audio_video_metadata_extractor.cc b/media/filters/audio_video_metadata_extractor.cc
-index 185819eb936..69ff508c221 100644
---- a/media/filters/audio_video_metadata_extractor.cc
-+++ b/media/filters/audio_video_metadata_extractor.cc
-@@ -113,6 +113,15 @@ bool AudioVideoMetadataExtractor::Extract(DataSource* source,
-     if (!stream)
-       continue;
- 
-+    void* display_matrix =
-+        av_stream_get_side_data(stream, AV_PKT_DATA_DISPLAYMATRIX, nullptr);
-+    if (display_matrix) {
-+      rotation_ = VideoTransformation::FromFFmpegDisplayMatrix(
-+                      static_cast<int32_t*>(display_matrix))
-+                      .rotation;
-+      info.tags["rotate"] = base::NumberToString(rotation_);
-+    }
-+
-     // Extract dictionary from streams also. Needed for containers that attach
-     // metadata to contained streams instead the container itself, like OGG.
-     ExtractDictionary(stream->metadata, &info.tags);
-@@ -255,8 +264,6 @@ void AudioVideoMetadataExtractor::ExtractDictionary(AVDictionary* metadata,
-     if (raw_tags->find(tag->key) == raw_tags->end())
-       (*raw_tags)[tag->key] = tag->value;
- 
--    if (ExtractInt(tag, "rotate", &rotation_))
--      continue;
-     if (ExtractString(tag, "album", &album_))
-       continue;
-     if (ExtractString(tag, "artist", &artist_))
-diff --git a/media/filters/ffmpeg_aac_bitstream_converter.cc b/media/filters/ffmpeg_aac_bitstream_converter.cc
-index 6f231c85729..ca5e5fb927d 100644
---- a/media/filters/ffmpeg_aac_bitstream_converter.cc
-+++ b/media/filters/ffmpeg_aac_bitstream_converter.cc
-@@ -195,14 +195,15 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
-   if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id ||
-       audio_profile_ != stream_codec_parameters_->profile ||
-       sample_rate_index_ != sample_rate_index ||
--      channel_configuration_ != stream_codec_parameters_->channels ||
-+      channel_configuration_ !=
-+          stream_codec_parameters_->ch_layout.nb_channels ||
-       frame_length_ != header_plus_packet_size) {
-     header_generated_ =
-         GenerateAdtsHeader(stream_codec_parameters_->codec_id,
-                            0,  // layer
-                            stream_codec_parameters_->profile, sample_rate_index,
-                            0,  // private stream
--                           stream_codec_parameters_->channels,
-+                           stream_codec_parameters_->ch_layout.nb_channels,
-                            0,  // originality
-                            0,  // home
-                            0,  // copyrighted_stream
-@@ -214,7 +215,7 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
-     codec_ = stream_codec_parameters_->codec_id;
-     audio_profile_ = stream_codec_parameters_->profile;
-     sample_rate_index_ = sample_rate_index;
--    channel_configuration_ = stream_codec_parameters_->channels;
-+    channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels;
-     frame_length_ = header_plus_packet_size;
-   }
- 
-diff --git a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
-index 1fd4c5ccd7d..f59bcd8fdaf 100644
---- a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
-+++ b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
-@@ -34,7 +34,7 @@ class FFmpegAACBitstreamConverterTest : public testing::Test {
-     memset(&test_parameters_, 0, sizeof(AVCodecParameters));
-     test_parameters_.codec_id = AV_CODEC_ID_AAC;
-     test_parameters_.profile = FF_PROFILE_AAC_MAIN;
--    test_parameters_.channels = 2;
-+    test_parameters_.ch_layout.nb_channels = 2;
-     test_parameters_.extradata = extradata_header_;
-     test_parameters_.extradata_size = sizeof(extradata_header_);
-   }
-diff --git a/media/filters/ffmpeg_audio_decoder.cc b/media/filters/ffmpeg_audio_decoder.cc
-index 6a56c675f7d..4615fdeb3fb 100644
---- a/media/filters/ffmpeg_audio_decoder.cc
-+++ b/media/filters/ffmpeg_audio_decoder.cc
-@@ -28,7 +28,7 @@ namespace media {
- 
- // Return the number of channels from the data in |frame|.
- static inline int DetermineChannels(AVFrame* frame) {
--  return frame->channels;
-+  return frame->ch_layout.nb_channels;
- }
- 
- // Called by FFmpeg's allocation routine to allocate a buffer. Uses
-@@ -231,7 +231,7 @@ bool FFmpegAudioDecoder::OnNewFrame(const DecoderBuffer& buffer,
-   // Translate unsupported into discrete layouts for discrete configurations;
-   // ffmpeg does not have a labeled discrete configuration internally.
-   ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout(
--      codec_context_->channel_layout, codec_context_->channels);
-+      codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels);
-   if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED &&
-       config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) {
-     channel_layout = CHANNEL_LAYOUT_DISCRETE;
-@@ -348,11 +348,11 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) {
-   // Success!
-   av_sample_format_ = codec_context_->sample_fmt;
- 
--  if (codec_context_->channels != config.channels()) {
-+  if (codec_context_->ch_layout.nb_channels != config.channels()) {
-     MEDIA_LOG(ERROR, media_log_)
-         << "Audio configuration specified " << config.channels()
-         << " channels, but FFmpeg thinks the file contains "
--        << codec_context_->channels << " channels";
-+        << codec_context_->ch_layout.nb_channels << " channels";
-     ReleaseFFmpegResources();
-     state_ = DecoderState::kUninitialized;
-     return false;
-@@ -403,7 +403,7 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
-   if (frame->nb_samples <= 0)
-     return AVERROR(EINVAL);
- 
--  if (s->channels != channels) {
-+  if (s->ch_layout.nb_channels != channels) {
-     DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count.";
-     return AVERROR(EINVAL);
-   }
-@@ -436,7 +436,8 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
-   ChannelLayout channel_layout =
-       config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE
-           ? CHANNEL_LAYOUT_DISCRETE
--          : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels);
-+          : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask,
-+                                               s->ch_layout.nb_channels);
- 
-   if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) {
-     DLOG(ERROR) << "Unsupported channel layout.";
diff --git a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch.args b/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch.args
deleted file mode 100644
index 8bbbbe9483632..0000000000000
--- a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch.args
+++ /dev/null
@@ -1 +0,0 @@
--RNp1
diff --git a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch b/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch
deleted file mode 100644
index b2a113791734c..0000000000000
--- a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From ded379824f5de39357b6b1894578101aba5cdf05 Mon Sep 17 00:00:00 2001
-From: Eugene Zemtsov <eugene@chromium.org>
-Date: Fri, 29 Jul 2022 04:41:04 +0000
-Subject: [PATCH] Roll src/third_party/ffmpeg/ 880df5ede..b71ecd02b (279
- commits)
-
-https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/880df5ede50a..b71ecd02b479
-
-$ git log 880df5ede..b71ecd02b --date=short --no-merges --format='%ad %ae %s'
-2022-07-27 eugene Roll for M106
-2022-07-25 andreas.rheinhardt avcodec/x86/pngdsp: Remove obsolete ff_add_bytes_l2_mmx()
-2022-07-22 andreas.rheinhardt avcodec/hevcdec: Output MD5-message in one piece
-2022-07-24 epirat07 configure: properly require libx264 if enabled
-2022-07-24 zane avformat/argo_cvg: expose loop/reverb/checksum via metadata
-(...)
-2022-05-03 leo.izen avcodec/libjxldec: properly tag output colorspace
-2022-06-25 ffmpeg avfilter/Makefile: always make colorspace.o
-2022-03-02 brad avutil/ppc/cpu: Use proper header for OpenBSD PPC CPU detection
-2022-06-24 jamrial avformat/http: include version.h
-2022-05-16 mbonda-at-nvidia.com AV1 VDPAU hwaccel Decode support
-
-Created with:
-  roll-dep src/third_party/ffmpeg
-
-ffmpeg usage fix:
- Switch from AVFrame::pkt_duration to AVFrame::duration,
- AVFrame::pkt_duration is deprecated
-
-Bug: 1344646
-Change-Id: Iaa3abf48ef81dae6d282bca8f0fa2a8dffeeba25
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3788638
-Reviewed-by: Will Cassella <cassew@chromium.org>
-Commit-Queue: Eugene Zemtsov <eugene@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1029623}
----
- media/filters/audio_file_reader.cc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/media/filters/audio_file_reader.cc b/media/filters/audio_file_reader.cc
-index e1be5aa9a5b..951c003956f 100644
---- a/media/filters/audio_file_reader.cc
-+++ b/media/filters/audio_file_reader.cc
-@@ -243,10 +243,10 @@ bool AudioFileReader::OnNewFrame(
-   // silence from being output. In the case where we are also discarding some
-   // portion of the packet (as indicated by a negative pts), we further want to
-   // adjust the duration downward by however much exists before zero.
--  if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) {
-+  if (audio_codec_ == AudioCodec::kAAC && frame->duration) {
-     const base::TimeDelta pkt_duration = ConvertFromTimeBase(
-         glue_->format_context()->streams[stream_index_]->time_base,
--        frame->pkt_duration + std::min(static_cast<int64_t>(0), frame->pts));
-+        frame->duration + std::min(static_cast<int64_t>(0), frame->pts));
-     const base::TimeDelta frame_duration =
-         base::Seconds(frames_read / static_cast<double>(sample_rate_));
- 
diff --git a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch.args b/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch.args
deleted file mode 100644
index 8bbbbe9483632..0000000000000
--- a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch.args
+++ /dev/null
@@ -1 +0,0 @@
--RNp1
diff --git a/srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch b/srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch
deleted file mode 100644
index bb461ef3664a2..0000000000000
--- a/srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- chromium-120.0.6099.35/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h.than	2023-11-26 13:50:07.005519877 +0100
-+++ chromium-120.0.6099.35/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h	2023-11-26 13:50:49.727267240 +0100
-@@ -152,10 +152,7 @@
-   (!BUILDFLAG(PUT_REF_COUNT_IN_PREVIOUS_SLOT) && \
-    defined(ARCH_CPU_LITTLE_ENDIAN))
- 
--#define PA_CONFIG_HAS_MEMORY_TAGGING()              \
--  (defined(ARCH_CPU_ARM64) && defined(__clang__) && \
--   !defined(ADDRESS_SANITIZER) &&                   \
--   (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID)))
-+#define PA_CONFIG_HAS_MEMORY_TAGGING() 0
- 
- #if PA_CONFIG(HAS_MEMORY_TAGGING)
- static_assert(sizeof(void*) == 8);
diff --git a/srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch b/srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch
deleted file mode 100644
index 112da65b4d9b6..0000000000000
--- a/srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -up chromium-120.0.6099.56/third_party/libc++/src/include/__config.me chromium-120.0.6099.56/third_party/libc++/src/include/__config
---- chromium-120.0.6099.56/third_party/libc++/src/include/__config.me	2023-12-03 00:05:51.254483474 +0100
-+++ chromium-120.0.6099.56/third_party/libc++/src/include/__config	2023-12-03 00:06:05.872863168 +0100
-@@ -32,11 +32,7 @@
- 
- // Warn if a compiler version is used that is not supported anymore
- // LLVM RELEASE Update the minimum compiler versions
--#  if defined(_LIBCPP_CLANG_VER)
--#    if _LIBCPP_CLANG_VER < 1500
--#      warning "Libc++ only supports Clang 15 and later"
--#    endif
--#  elif defined(_LIBCPP_APPLE_CLANG_VER)
-+#  if defined(_LIBCPP_APPLE_CLANG_VER)
- #    if _LIBCPP_APPLE_CLANG_VER < 1500
- #      warning "Libc++ only supports AppleClang 15 and later"
- #    endif
diff --git a/srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch b/srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch
deleted file mode 100644
index 72c7b7ec41c28..0000000000000
--- a/srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn.me chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn
---- chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn.me	2023-11-26 16:14:15.364064126 +0100
-+++ chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn	2023-11-26 16:41:16.877321990 +0100
-@@ -21,6 +21,9 @@ if (use_atk) {
-     minor = atspi_version[1]
-     micro = atspi_version[2]
- 
-+    # gn workaround for the error: Assignment had no effect
-+    print("ATSPI Version: $major.$minor.$micro")
-+
-     # ATSPI 2.49.90 now defines these for us and it's an error for us to
-     # redefine them on the compiler command line.
-     # See ATSPI 927344a34cd5bf81fc64da4968241735ecb4f03b
diff --git a/srcpkgs/chromium/patches/chromium-120-missing-header-files.patch b/srcpkgs/chromium/patches/chromium-120-missing-header-files.patch
deleted file mode 100644
index 44f867475b218..0000000000000
--- a/srcpkgs/chromium/patches/chromium-120-missing-header-files.patch
+++ /dev/null
@@ -1,459 +0,0 @@
-diff -up chromium-110.0.5481.177/base/memory/ref_counted.h.me chromium-110.0.5481.177/base/memory/ref_counted.h
---- chromium-110.0.5481.177/base/memory/ref_counted.h.me	2023-02-23 13:34:33.174817255 -0500
-+++ chromium-110.0.5481.177/base/memory/ref_counted.h	2023-02-23 13:42:28.646052469 -0500
-@@ -6,6 +6,7 @@
- #define BASE_MEMORY_REF_COUNTED_H_
- 
- #include <stddef.h>
-+#include <limits>
- 
- #include <utility>
- 
-diff -up chromium-109.0.5414.74/base/check_op.h.me chromium-109.0.5414.74/base/check_op.h
---- chromium-109.0.5414.74/base/check_op.h.me	2023-01-17 17:39:27.620875883 +0100
-+++ chromium-109.0.5414.74/base/check_op.h	2023-01-17 17:39:42.546060957 +0100
-@@ -5,6 +5,7 @@
- #ifndef BASE_CHECK_OP_H_
- #define BASE_CHECK_OP_H_
- 
-+#include <cstdint>
- #include <cstddef>
- #include <string>
- #include <type_traits>
-diff -up chromium-109.0.5414.74/base/debug/profiler.h.me chromium-109.0.5414.74/base/debug/profiler.h
---- chromium-109.0.5414.74/base/debug/profiler.h.me	2023-01-17 16:29:26.368090073 +0100
-+++ chromium-109.0.5414.74/base/debug/profiler.h	2023-01-17 16:59:41.190628679 +0100
-@@ -7,6 +7,7 @@
- 
- #include <stddef.h>
- 
-+#include <cstdint>
- #include <string>
- 
- #include "base/base_export.h"
-diff -up chromium-109.0.5414.74/gpu/config/gpu_feature_info.h.me chromium-109.0.5414.74/gpu/config/gpu_feature_info.h
---- chromium-109.0.5414.74/gpu/config/gpu_feature_info.h.me	2023-01-17 19:06:53.530675129 +0100
-+++ chromium-109.0.5414.74/gpu/config/gpu_feature_info.h	2023-01-17 19:07:08.874849879 +0100
-@@ -5,6 +5,7 @@
- #ifndef GPU_CONFIG_GPU_FEATURE_INFO_H_
- #define GPU_CONFIG_GPU_FEATURE_INFO_H_
- 
-+#include <cstdint>
- #include <string>
- #include <vector>
- 
-diff -up chromium-109.0.5414.74/net/base/net_export.h.me chromium-109.0.5414.74/net/base/net_export.h
---- chromium-109.0.5414.74/net/base/net_export.h.me	2023-01-17 18:16:34.133854615 +0100
-+++ chromium-109.0.5414.74/net/base/net_export.h	2023-01-17 18:16:15.945623153 +0100
-@@ -5,6 +5,8 @@
- #ifndef NET_BASE_NET_EXPORT_H_
- #define NET_BASE_NET_EXPORT_H_
- 
-+#include <cstdint>
-+
- // Defines NET_EXPORT so that functionality implemented by the net module can
- // be exported to consumers, and NET_EXPORT_PRIVATE that allows unit tests to
- // access features not intended to be used directly by real consumers.
-diff -up chromium-109.0.5414.74/sandbox/linux/syscall_broker/broker_file_permission.h.me chromium-109.0.5414.74/sandbox/linux/syscall_broker/broker_file_permission.h
---- chromium-109.0.5414.74/sandbox/linux/syscall_broker/broker_file_permission.h.me	2023-01-17 17:12:34.184686515 +0100
-+++ chromium-109.0.5414.74/sandbox/linux/syscall_broker/broker_file_permission.h	2023-01-17 17:13:16.537162420 +0100
-@@ -5,6 +5,7 @@
- #ifndef SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
- #define SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
- 
-+#include <cstdint>
- #include <bitset>
- #include <string>
- 
-diff -up chromium-109.0.5414.74/third_party/abseil-cpp/absl/strings/string_view.h.me chromium-109.0.5414.74/third_party/abseil-cpp/absl/strings/string_view.h
---- chromium-109.0.5414.74/third_party/abseil-cpp/absl/strings/string_view.h.me	2023-01-17 17:33:20.895717307 +0100
-+++ chromium-109.0.5414.74/third_party/abseil-cpp/absl/strings/string_view.h	2023-01-17 17:34:03.456185365 +0100
-@@ -27,6 +27,7 @@
- #ifndef ABSL_STRINGS_STRING_VIEW_H_
- #define ABSL_STRINGS_STRING_VIEW_H_
- 
-+#include <cstdint>
- #include <algorithm>
- #include <cassert>
- #include <cstddef>
-diff -up chromium-109.0.5414.74/third_party/angle/include/GLSLANG/ShaderVars.h.me chromium-109.0.5414.74/third_party/angle/include/GLSLANG/ShaderVars.h
---- chromium-109.0.5414.74/third_party/angle/include/GLSLANG/ShaderVars.h.me	2023-01-17 17:36:15.017616250 +0100
-+++ chromium-109.0.5414.74/third_party/angle/include/GLSLANG/ShaderVars.h	2023-01-17 17:36:48.960982195 +0100
-@@ -10,6 +10,7 @@
- #ifndef GLSLANG_SHADERVARS_H_
- #define GLSLANG_SHADERVARS_H_
- 
-+#include <cstdint>
- #include <algorithm>
- #include <array>
- #include <string>
-diff -up chromium-109.0.5414.74/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.me chromium-109.0.5414.74/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h
---- chromium-109.0.5414.74/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.me	2023-01-17 19:17:40.480876171 +0100
-+++ chromium-109.0.5414.74/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h	2023-01-17 19:17:46.803958320 +0100
-@@ -5,6 +5,7 @@
- #ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_BLUETOOTH_WEB_BLUETOOTH_DEVICE_ID_H_
- #define THIRD_PARTY_BLINK_PUBLIC_COMMON_BLUETOOTH_WEB_BLUETOOTH_DEVICE_ID_H_
- 
-+#include <cstdint>
- #include <array>
- #include <string>
- 
-diff -up chromium-117.0.5938.48/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.me chromium-117.0.5938.48/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h
---- chromium-117.0.5938.48/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.me	2023-01-17 18:02:44.681538107 +0100
-+++ chromium-117.0.5938.48/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h	2023-01-17 18:02:57.208679140 +0100
-@@ -15,6 +15,7 @@
- #ifndef SRC_TINT_READER_SPIRV_NAMER_H_
- #define SRC_TINT_READER_SPIRV_NAMER_H_
- 
-+#include <cstdint>
- #include <string>
- #include <unordered_map>
- #include <vector>
-diff -up chromium-109.0.5414.74/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.me chromium-109.0.5414.74/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h
---- chromium-109.0.5414.74/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.me	2023-01-18 15:22:38.472940648 +0100
-+++ chromium-109.0.5414.74/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h	2023-01-18 15:23:09.380255101 +0100
-@@ -5,6 +5,7 @@
- #ifndef DISCOVERY_DNSSD_PUBLIC_DNS_SD_TXT_RECORD_H_
- #define DISCOVERY_DNSSD_PUBLIC_DNS_SD_TXT_RECORD_H_
- 
-+#include <cstdint>
- #include <functional>
- #include <map>
- #include <set>
-diff -up chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp.me chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp
---- chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp.me	2023-01-17 15:37:48.530626516 +0100
-+++ chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp	2023-01-17 16:57:46.025548092 +0100
-@@ -17,6 +17,7 @@
- 
- #include "System/Debug.hpp"
- 
-+#include <cstdint>
- #include <cstddef>
- #include <functional>
- #include <unordered_set>
-diff -up chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h.me chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h
---- chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h.me	2023-01-17 18:08:25.745491353 +0100
-+++ chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h	2023-01-17 18:08:35.777667632 +0100
-@@ -5,6 +5,7 @@
- #ifndef UI_GFX_LINEAR_GRADIENT_H_
- #define UI_GFX_LINEAR_GRADIENT_H_
- 
-+#include <cstdint>
- #include <array>
- #include <string>
- 
-diff -up chromium-109.0.5414.74/third_party/ruy/src/ruy/profiler/instrumentation.h.me chromium-109.0.5414.74/third_party/ruy/src/ruy/profiler/instrumentation.h
---- chromium-109.0.5414.74/third_party/ruy/src/ruy/profiler/instrumentation.h.me	2023-01-19 10:10:21.287876736 +0100
-+++ chromium-109.0.5414.74/third_party/ruy/src/ruy/profiler/instrumentation.h	2023-01-19 10:11:21.714778896 +0100
-@@ -17,6 +17,7 @@ limitations under the License.
- #define RUY_RUY_PROFILER_INSTRUMENTATION_H_
- 
- #ifdef RUY_PROFILER
-+#include <string>
- #include <cstdio>
- #include <mutex>
- #include <vector>
-diff -up chromium-109.0.5414.74/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.me chromium-109.0.5414.74/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h
---- chromium-109.0.5414.74/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.me	2023-01-19 10:30:27.533861985 +0100
-+++ chromium-109.0.5414.74/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h	2023-01-19 10:31:12.585554183 +0100
-@@ -31,6 +31,7 @@ limitations under the License.
- #ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
- #define TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
- 
-+#include <cstdint>
- #include <complex>
- #include <deque>
- #include <vector>
-diff -up chromium-109.0.5414.74/base/containers/flat_map.h.mee chromium-109.0.5414.74/base/containers/flat_map.h
---- chromium-109.0.5414.74/base/containers/flat_map.h.mee	2023-01-19 10:59:52.214957773 +0100
-+++ chromium-109.0.5414.74/base/containers/flat_map.h	2023-01-19 11:00:06.415215309 +0100
-@@ -5,6 +5,7 @@
- #ifndef BASE_CONTAINERS_FLAT_MAP_H_
- #define BASE_CONTAINERS_FLAT_MAP_H_
- 
-+#include <cstdint>
- #include <functional>
- #include <tuple>
- #include <utility>
-diff -up chromium-109.0.5414.74/components/crash/core/app/crash_reporter_client.h.mee chromium-109.0.5414.74/components/crash/core/app/crash_reporter_client.h
---- chromium-109.0.5414.74/components/crash/core/app/crash_reporter_client.h.mee	2023-01-19 10:36:40.571422826 +0100
-+++ chromium-109.0.5414.74/components/crash/core/app/crash_reporter_client.h	2023-01-19 10:36:49.343565294 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_CRASH_CORE_APP_CRASH_REPORTER_CLIENT_H_
- #define COMPONENTS_CRASH_CORE_APP_CRASH_REPORTER_CLIENT_H_
- 
-+#include <cstdint>
- #include <string>
- 
- #include "build/build_config.h"
-diff -up chromium-109.0.5414.74/ui/base/prediction/kalman_filter.h.mee chromium-109.0.5414.74/ui/base/prediction/kalman_filter.h
---- chromium-109.0.5414.74/ui/base/prediction/kalman_filter.h.mee	2023-01-19 11:45:15.953159755 +0100
-+++ chromium-109.0.5414.74/ui/base/prediction/kalman_filter.h	2023-01-19 11:45:22.320246241 +0100
-@@ -5,6 +5,8 @@
- #ifndef UI_BASE_PREDICTION_KALMAN_FILTER_H_
- #define UI_BASE_PREDICTION_KALMAN_FILTER_H_
- 
-+#include <cstdint>
-+
- #include "base/component_export.h"
- #include "ui/gfx/geometry/matrix3_f.h"
- 
-diff -up chromium-109.0.5414.74/components/password_manager/core/browser/generation/password_generator.h.me chromium-109.0.5414.74/components/password_manager/core/browser/generation/password_generator.h
---- chromium-109.0.5414.74/components/password_manager/core/browser/generation/password_generator.h.me	2023-01-19 15:20:07.620987949 +0100
-+++ chromium-109.0.5414.74/components/password_manager/core/browser/generation/password_generator.h	2023-01-19 15:20:18.324173702 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_GENERATION_PASSWORD_GENERATOR_H_
- #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_GENERATION_PASSWORD_GENERATOR_H_
- 
-+#include <cstdint>
- #include <string>
- 
- 
-diff -up chromium-109.0.5414.74/components/feature_engagement/internal/event_storage_validator.h.me chromium-109.0.5414.74/components/feature_engagement/internal/event_storage_validator.h
---- chromium-109.0.5414.74/components/feature_engagement/internal/event_storage_validator.h.me	2023-01-19 16:00:14.350186515 +0100
-+++ chromium-109.0.5414.74/components/feature_engagement/internal/event_storage_validator.h	2023-01-19 16:00:21.643307993 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_EVENT_STORAGE_VALIDATOR_H_
- #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_EVENT_STORAGE_VALIDATOR_H_
- 
-+#include <cstdint>
- #include <string>
- 
- namespace feature_engagement {
-diff -up chromium-109.0.5414.74/components/feature_engagement/internal/never_event_storage_validator.h.me chromium-109.0.5414.74/components/feature_engagement/internal/never_event_storage_validator.h
---- chromium-109.0.5414.74/components/feature_engagement/internal/never_event_storage_validator.h.me	2023-01-19 15:59:18.210239416 +0100
-+++ chromium-109.0.5414.74/components/feature_engagement/internal/never_event_storage_validator.h	2023-01-19 15:59:34.513515030 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
- #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
- 
-+#include <cstdint>
- #include <string>
- 
- #include "components/feature_engagement/internal/event_storage_validator.h"
-diff -up chromium-109.0.5414.74/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.me chromium-109.0.5414.74/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc
---- chromium-109.0.5414.74/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.me	2023-01-19 16:09:29.216477182 +0100
-+++ chromium-109.0.5414.74/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc	2023-01-19 16:10:05.657089208 +0100
-@@ -45,6 +45,7 @@
- #include "llvm/Support/SaveAndRestore.h"
- #include "llvm/Support/raw_ostream.h"
- #include <algorithm>
-+#include <cstdint>
- #include <string>
- #include <sysexits.h>
- #ifdef HAVE_BACKTRACE
-diff -up chromium-109.0.5414.74/chrome/browser/privacy_budget/encountered_surface_tracker.h.me chromium-109.0.5414.74/chrome/browser/privacy_budget/encountered_surface_tracker.h
---- chromium-109.0.5414.74/chrome/browser/privacy_budget/encountered_surface_tracker.h.me	2023-01-19 16:32:05.338160131 +0100
-+++ chromium-109.0.5414.74/chrome/browser/privacy_budget/encountered_surface_tracker.h	2023-01-19 16:32:16.213326798 +0100
-@@ -5,6 +5,7 @@
- #ifndef CHROME_BROWSER_PRIVACY_BUDGET_ENCOUNTERED_SURFACE_TRACKER_H_
- #define CHROME_BROWSER_PRIVACY_BUDGET_ENCOUNTERED_SURFACE_TRACKER_H_
- 
-+#include <cstdint>
- #include <map>
- 
- #include "base/containers/flat_set.h"
-diff -up chromium-109.0.5414.74/components/autofill/core/browser/autofill_ablation_study.h.me chromium-109.0.5414.74/components/autofill/core/browser/autofill_ablation_study.h
---- chromium-109.0.5414.74/components/autofill/core/browser/autofill_ablation_study.h.me	2023-01-19 16:47:55.548571102 +0100
-+++ chromium-109.0.5414.74/components/autofill/core/browser/autofill_ablation_study.h	2023-01-19 16:48:29.214146529 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ABLATION_STUDY_H_
- #define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ABLATION_STUDY_H_
- 
-+#include <cstdint>
- #include <string>
- 
- class GURL;
-diff -up chromium-109.0.5414.74/components/omnibox/browser/on_device_head_model.h.me chromium-109.0.5414.74/components/omnibox/browser/on_device_head_model.h
---- chromium-109.0.5414.74/components/omnibox/browser/on_device_head_model.h.me	2023-01-19 16:57:29.525372814 +0100
-+++ chromium-109.0.5414.74/components/omnibox/browser/on_device_head_model.h	2023-01-19 16:58:02.667979288 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_OMNIBOX_BROWSER_ON_DEVICE_HEAD_MODEL_H_
- #define COMPONENTS_OMNIBOX_BROWSER_ON_DEVICE_HEAD_MODEL_H_
- 
-+#include <cstdint>
- #include <string>
- #include <utility>
- #include <vector>
-diff -up chromium-109.0.5414.74/components/payments/content/utility/fingerprint_parser.h.me chromium-109.0.5414.74/components/payments/content/utility/fingerprint_parser.h
---- chromium-109.0.5414.74/components/payments/content/utility/fingerprint_parser.h.me	2023-01-19 17:02:45.258544665 +0100
-+++ chromium-109.0.5414.74/components/payments/content/utility/fingerprint_parser.h	2023-01-19 17:02:52.577611757 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
- #define COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
- 
-+#include <cstdint>
- #include <stddef.h>
- 
- #include <string>
-diff -up chromium-109.0.5414.74/pdf/document_attachment_info.h.me chromium-109.0.5414.74/pdf/document_attachment_info.h
---- chromium-109.0.5414.74/pdf/document_attachment_info.h.me	2023-01-19 17:28:28.552063534 +0100
-+++ chromium-109.0.5414.74/pdf/document_attachment_info.h	2023-01-19 17:28:48.072379953 +0100
-@@ -5,6 +5,7 @@
- #ifndef PDF_DOCUMENT_ATTACHMENT_INFO_H_
- #define PDF_DOCUMENT_ATTACHMENT_INFO_H_
- 
-+#include <cstdint>
- #include <string>
- 
- 
-diff -up chromium-109.0.5414.74/third_party/pdfium/constants/annotation_flags.h.me chromium-109.0.5414.74/third_party/pdfium/constants/annotation_flags.h
---- chromium-109.0.5414.74/third_party/pdfium/constants/annotation_flags.h.me	2023-01-19 18:25:47.648193710 +0100
-+++ chromium-109.0.5414.74/third_party/pdfium/constants/annotation_flags.h	2023-01-19 18:26:11.488593556 +0100
-@@ -5,6 +5,8 @@
- #ifndef CONSTANTS_ANNOTATION_FLAGS_H_
- #define CONSTANTS_ANNOTATION_FLAGS_H_
- 
-+#include <cstdint>
-+
- namespace pdfium {
- namespace annotation_flags {
- 
-diff -up chromium-113.0.5672.24/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.me chromium-113.0.5672.24/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h
---- chromium-113.0.5672.24/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.me	2023-04-15 16:44:55.344305412 +0200
-+++ chromium-113.0.5672.24/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h	2023-04-15 16:47:09.028666995 +0200
-@@ -2854,6 +2854,7 @@ static void vma_aligned_free(void* VMA_N
- 
- // Define this macro to 1 to enable functions: vmaBuildStatsString, vmaFreeStatsString.
- #if VMA_STATS_STRING_ENABLED
-+#include <stdio.h>
-     static inline void VmaUint32ToStr(char* VMA_NOT_NULL outStr, size_t strLen, uint32_t num)
-     {
-         snprintf(outStr, strLen, "%u", static_cast<unsigned int>(num));
-diff -up chromium-113.0.5672.37/chrome/browser/webauthn/authenticator_request_dialog_model.h.me chromium-113.0.5672.37/chrome/browser/webauthn/authenticator_request_dialog_model.h
---- chromium-113.0.5672.37/chrome/browser/webauthn/authenticator_request_dialog_model.h.me	2023-04-18 15:55:44.774916319 +0200
-+++ chromium-113.0.5672.37/chrome/browser/webauthn/authenticator_request_dialog_model.h	2023-04-18 15:55:54.441085882 +0200
-@@ -8,6 +8,7 @@
- #include <memory>
- #include <string>
- #include <vector>
-+#include <variant>
- 
- #include "base/containers/span.h"
- #include "base/functional/callback_forward.h"
-diff -up chromium-113.0.5672.37/gin/time_clamper.h.me chromium-113.0.5672.37/gin/time_clamper.h
---- chromium-113.0.5672.37/gin/time_clamper.h.me	2023-04-18 16:38:41.180437467 +0200
-+++ chromium-113.0.5672.37/gin/time_clamper.h	2023-04-18 16:39:43.857049432 +0200
-@@ -48,7 +48,7 @@ class GIN_EXPORT TimeClamper {
-     const int64_t micros = now_micros % 1000;
-     // abs() is necessary for devices with times before unix-epoch (most likely
-     // configured incorrectly).
--    if (abs(micros) + kResolutionMicros < 1000) {
-+    if (std::abs(micros) + kResolutionMicros < 1000) {
-       return now_micros / 1000;
-     }
-     return ClampTimeResolution(now_micros) / 1000;
-diff -up chromium-113.0.5672.53/chrome/test/chromedriver/chrome/web_view_impl.cc.me chromium-113.0.5672.53/chrome/test/chromedriver/chrome/web_view_impl.cc
---- chromium-113.0.5672.53/chrome/test/chromedriver/chrome/web_view_impl.cc.me	2023-04-21 08:07:55.362714544 +0200
-+++ chromium-113.0.5672.53/chrome/test/chromedriver/chrome/web_view_impl.cc	2023-04-21 08:14:35.424158693 +0200
-@@ -10,6 +10,7 @@
- #include <queue>
- #include <utility>
- #include <vector>
-+#include <cstring>
- 
- #include "base/check.h"
- #include "base/files/file_path.h"
-diff -up chromium-115.0.5790.32/skia/ext/skcolorspace_trfn.cc.me chromium-115.0.5790.32/skia/ext/skcolorspace_trfn.cc
---- chromium-115.0.5790.32/skia/ext/skcolorspace_trfn.cc.me	2023-06-18 12:33:52.387412788 +0200
-+++ chromium-115.0.5790.32/skia/ext/skcolorspace_trfn.cc	2023-06-18 12:35:28.229148935 +0200
-@@ -3,6 +3,7 @@
- // found in the LICENSE file.
- 
- #include "skia/ext/skcolorspace_trfn.h"
-+#include <cmath>
- 
- namespace skia {
- 
-diff -up chromium-96.0.4664.45/third_party/webrtc/common_video/h264/sps_parser.h.missing-cstdint chromium-96.0.4664.45/third_party/webrtc/common_video/h264/sps_parser.h
---- chromium-96.0.4664.45/third_party/webrtc/common_video/h264/sps_parser.h.missing-cstdint	2021-11-19 17:05:31.379750350 -0500
-+++ chromium-96.0.4664.45/third_party/webrtc/common_video/h264/sps_parser.h	2021-11-19 17:07:35.191520127 -0500
-@@ -11,6 +11,7 @@
- #ifndef COMMON_VIDEO_H264_SPS_PARSER_H_
- #define COMMON_VIDEO_H264_SPS_PARSER_H_
- 
-+#include <cstdint>
- #include "absl/types/optional.h"
- #include "rtc_base/bitstream_reader.h"
- 
-diff -up chromium-96.0.4664.45/third_party/webrtc/modules/include/module_common_types_public.h.missing-cstdint chromium-96.0.4664.45/third_party/webrtc/modules/include/module_common_types_public.h
---- chromium-96.0.4664.45/third_party/webrtc/modules/include/module_common_types_public.h.missing-cstdint	2021-11-12 05:28:10.000000000 -0500
-+++ chromium-96.0.4664.45/third_party/webrtc/modules/include/module_common_types_public.h	2021-11-19 17:05:31.379750350 -0500
-@@ -11,6 +11,7 @@
- #ifndef MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
- #define MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
- 
-+#include <cstdint>
- #include <limits>
- 
- #include "absl/types/optional.h"
-diff -up chromium-96.0.4664.45/ui/gfx/linux/drm_util_linux.h.missing-cstdint chromium-96.0.4664.45/ui/gfx/linux/drm_util_linux.h
---- chromium-96.0.4664.45/ui/gfx/linux/drm_util_linux.h.missing-cstdint	2021-11-12 05:25:24.000000000 -0500
-+++ chromium-96.0.4664.45/ui/gfx/linux/drm_util_linux.h	2021-11-19 17:05:31.379750350 -0500
-@@ -9,6 +9,8 @@
- 
- #include "ui/gfx/buffer_types.h"
- 
-+#include <cstdint>
-+
- namespace ui {
- 
- int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format);
-diff -up chromium-96.0.4664.45/third_party/webrtc/audio/utility/channel_mixer.cc.missing-cstring chromium-96.0.4664.45/third_party/webrtc/audio/utility/channel_mixer.cc
---- chromium-96.0.4664.45/third_party/webrtc/audio/utility/channel_mixer.cc.missing-cstring	2021-11-12 05:28:09.000000000 -0500
-+++ chromium-96.0.4664.45/third_party/webrtc/audio/utility/channel_mixer.cc	2021-11-19 17:10:02.927438695 -0500
-@@ -8,6 +8,8 @@
-  *  be found in the AUTHORS file in the root of the source tree.
-  */
- 
-+#include <cstring>
-+
- #include "audio/utility/channel_mixer.h"
- 
- #include "audio/utility/channel_mixing_matrix.h"
-diff -up chromium-96.0.4664.45/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-cstring chromium-96.0.4664.45/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc
---- chromium-96.0.4664.45/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-cstring	2021-11-12 05:28:10.000000000 -0500
-+++ chromium-96.0.4664.45/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc	2021-11-19 17:10:02.928438701 -0500
-@@ -10,6 +10,7 @@
- 
- #include "modules/video_coding/utility/ivf_file_reader.h"
- 
-+#include <cstring>
- #include <string>
- #include <vector>
- 
-diff -up chromium-117.0.5938.48/third_party/ipcz/src/ipcz/router_link.h.me chromium-117.0.5938.48/third_party/ipcz/src/ipcz/router_link.h
---- chromium-117.0.5938.48/third_party/ipcz/src/ipcz/router_link.h.me	2023-09-10 17:53:04.826298351 +0200
-+++ chromium-117.0.5938.48/third_party/ipcz/src/ipcz/router_link.h	2023-09-10 17:53:22.201756894 +0200
-@@ -5,6 +5,7 @@
- #ifndef IPCZ_SRC_IPCZ_ROUTER_LINK_H_
- #define IPCZ_SRC_IPCZ_ROUTER_LINK_H_
- 
-+#include <memory>
- #include <cstddef>
- #include <functional>
- #include <string>
-diff -up chromium-117.0.5938.48/third_party/material_color_utilities/src/cpp/palettes/tones.cc.me chromium-117.0.5938.48/third_party/material_color_utilities/src/cpp/palettes/tones.cc
---- chromium-117.0.5938.48/third_party/material_color_utilities/src/cpp/palettes/tones.cc.me	2023-09-10 17:36:27.199841051 +0200
-+++ chromium-117.0.5938.48/third_party/material_color_utilities/src/cpp/palettes/tones.cc	2023-09-10 17:44:51.870554233 +0200
-@@ -14,6 +14,7 @@
-  * limitations under the License.
-  */
- 
-+#include <cmath>
- #include "cpp/palettes/tones.h"
- 
- #include "cpp/cam/cam.h"
-diff -up chromium-118.0.5993.32/services/device/public/cpp/generic_sensor/sensor_reading.h.me chromium-118.0.5993.32/services/device/public/cpp/generic_sensor/sensor_reading.h
---- chromium-118.0.5993.32/services/device/public/cpp/generic_sensor/sensor_reading.h.me	2023-10-01 13:55:01.913193186 +0200
-+++ chromium-118.0.5993.32/services/device/public/cpp/generic_sensor/sensor_reading.h	2023-10-01 14:05:38.488038429 +0200
-@@ -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 <cstddef>
-+#include <cstdint>
-+
- #include <type_traits>
- 
- namespace device {
diff --git a/srcpkgs/chromium/patches/chromium-121-arm64-memory_tagging.patch b/srcpkgs/chromium/patches/chromium-121-arm64-memory_tagging.patch
new file mode 100644
index 0000000000000..cf807ddb31ec7
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-arm64-memory_tagging.patch
@@ -0,0 +1,13 @@
+diff -up chromium-121.0.6167.57/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h.me chromium-121.0.6167.57/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h
+--- chromium-121.0.6167.57/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h.me	2024-01-16 14:20:52.401890657 +0100
++++ chromium-121.0.6167.57/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h	2024-01-16 15:08:04.070156474 +0100
+@@ -162,7 +162,8 @@ static_assert(sizeof(void*) != 8, "");
+ 
+ #if defined(ARCH_CPU_ARM64) && defined(__clang__) && \
+     !defined(ADDRESS_SANITIZER) &&                   \
+-    (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID))
++    (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID)) && \
++    __GLIBC_PREREQ(2, 29)
+ #define PA_CONFIG_HAS_MEMORY_TAGGING() 1
+ #else
+ #define PA_CONFIG_HAS_MEMORY_TAGGING() 0
diff --git a/srcpkgs/chromium/patches/chromium-121-constexpr.patch b/srcpkgs/chromium/patches/chromium-121-constexpr.patch
new file mode 100644
index 0000000000000..a0b7166a5c8f8
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-constexpr.patch
@@ -0,0 +1,12 @@
+diff -up chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h.me chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h
+--- chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h.me	2024-01-18 17:00:24.791582422 +0100
++++ chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h	2024-01-18 17:22:21.521682845 +0100
+@@ -27,7 +27,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;
+ 
+   // Individual resource contexts to measure.
diff --git a/srcpkgs/chromium/patches/chromium-121-el7-clang-version-warning.patch b/srcpkgs/chromium/patches/chromium-121-el7-clang-version-warning.patch
new file mode 100644
index 0000000000000..bc86eb2355874
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-el7-clang-version-warning.patch
@@ -0,0 +1,15 @@
+--- chromium-121.0.6167.57/third_party/libc++/src/include/__config.orig	2024-01-16 18:38:00.995930774 +0100
++++ chromium-121.0.6167.57/third_party/libc++/src/include/__config	2024-01-16 18:43:47.056517289 +0100
+@@ -32,11 +32,7 @@
+ 
+ // Warn if a compiler version is used that is not supported anymore
+ // LLVM RELEASE Update the minimum compiler versions
+-#  if defined(_LIBCPP_CLANG_VER)
+-#    if _LIBCPP_CLANG_VER < 1600
+-#      warning "Libc++ only supports Clang 16 and later"
+-#    endif
+-#  elif defined(_LIBCPP_APPLE_CLANG_VER)
++#  if defined(_LIBCPP_APPLE_CLANG_VER)
+ #    if _LIBCPP_APPLE_CLANG_VER < 1500
+ #      warning "Libc++ only supports AppleClang 15 and later"
+ #    endif
diff --git a/srcpkgs/chromium/patches/chromium-121-el7-default-constructor-involving-anonymous-union.patch b/srcpkgs/chromium/patches/chromium-121-el7-default-constructor-involving-anonymous-union.patch
new file mode 100644
index 0000000000000..0a2ac1de3561d
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-el7-default-constructor-involving-anonymous-union.patch
@@ -0,0 +1,12 @@
+diff -up chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.cc.me chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.cc
+--- chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.cc.me	2024-01-23 15:13:11.469104694 +0100
++++ chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.cc	2024-01-23 15:11:40.117842015 +0100
+@@ -46,7 +46,7 @@ size_t GetResultSizeBytes(const HeaderDi
+ 
+ }  // namespace
+ 
+-HeaderDirectFromSellerSignals::Result::Result() = default;
++HeaderDirectFromSellerSignals::Result::Result() {}
+ 
+ HeaderDirectFromSellerSignals::Result::Result(
+     absl::optional<std::string> seller_signals,
diff --git a/srcpkgs/chromium/patches/chromium-121-missing-header-files.patch b/srcpkgs/chromium/patches/chromium-121-missing-header-files.patch
new file mode 100644
index 0000000000000..377de0d1140cb
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-missing-header-files.patch
@@ -0,0 +1,459 @@
+diff -up chromium-119.0.6045.105/base/check_op.h.missing-header-files chromium-119.0.6045.105/base/check_op.h
+--- chromium-119.0.6045.105/base/check_op.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
++++ chromium-119.0.6045.105/base/check_op.h	2023-11-06 14:34:01.808868982 +0100
+@@ -5,6 +5,7 @@
+ #ifndef BASE_CHECK_OP_H_
+ #define BASE_CHECK_OP_H_
+ 
++#include <cstdint>
+ #include <cstddef>
+ #include <string>
+ #include <string_view>
+diff -up chromium-119.0.6045.105/base/containers/flat_map.h.missing-header-files chromium-119.0.6045.105/base/containers/flat_map.h
+--- chromium-119.0.6045.105/base/containers/flat_map.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
++++ chromium-119.0.6045.105/base/containers/flat_map.h	2023-11-06 14:34:01.813869089 +0100
+@@ -5,6 +5,7 @@
+ #ifndef BASE_CONTAINERS_FLAT_MAP_H_
+ #define BASE_CONTAINERS_FLAT_MAP_H_
+ 
++#include <cstdint>
+ #include <functional>
+ #include <tuple>
+ #include <type_traits>
+diff -up chromium-119.0.6045.105/base/debug/profiler.h.missing-header-files chromium-119.0.6045.105/base/debug/profiler.h
+--- chromium-119.0.6045.105/base/debug/profiler.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
++++ chromium-119.0.6045.105/base/debug/profiler.h	2023-11-06 14:34:01.809869004 +0100
+@@ -8,6 +8,7 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ #include "base/base_export.h"
+diff -up chromium-119.0.6045.105/base/memory/ref_counted.h.missing-header-files chromium-119.0.6045.105/base/memory/ref_counted.h
+--- chromium-119.0.6045.105/base/memory/ref_counted.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
++++ chromium-119.0.6045.105/base/memory/ref_counted.h	2023-11-06 14:34:01.808868982 +0100
+@@ -6,6 +6,7 @@
+ #define BASE_MEMORY_REF_COUNTED_H_
+ 
+ #include <stddef.h>
++#include <limits>
+ 
+ #include <limits>
+ #include <utility>
+diff -up chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h.missing-header-files chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h
+--- chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h.missing-header-files	2023-11-01 19:10:13.000000000 +0100
++++ chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h	2023-11-06 14:34:01.814869110 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <map>
+ 
+ #include "base/containers/flat_set.h"
+diff -up chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h.missing-header-files chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h
+--- chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h.missing-header-files	2023-11-01 19:10:16.000000000 +0100
++++ chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h	2023-11-06 14:34:01.817869174 +0100
+@@ -8,6 +8,7 @@
+ #include <memory>
+ #include <string>
+ #include <vector>
++#include <variant>
+ 
+ #include "base/containers/span.h"
+ #include "base/functional/callback_forward.h"
+diff -up chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc.missing-header-files chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc
+--- chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc.missing-header-files	2023-11-01 19:10:16.000000000 +0100
++++ chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc	2023-11-06 14:34:01.818869196 +0100
+@@ -11,6 +11,7 @@
+ #include <queue>
+ #include <utility>
+ #include <vector>
++#include <cstring>
+ 
+ #include "base/check.h"
+ #include "base/files/file_path.h"
+diff -up chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h.missing-header-files chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h
+--- chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h.missing-header-files	2023-11-01 19:10:19.000000000 +0100
++++ chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h	2023-11-06 14:34:01.815869132 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ class GURL;
+diff -up chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h.missing-header-files chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h
+--- chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h.missing-header-files	2023-11-01 19:10:20.000000000 +0100
++++ chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h	2023-11-06 14:34:01.813869089 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ #include "build/build_config.h"
+diff -up chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h.missing-header-files chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h
+--- chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h	2023-11-06 14:34:01.814869110 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ namespace feature_engagement {
+diff -up chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h.missing-header-files chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h
+--- chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h	2023-11-06 14:34:01.814869110 +0100
+@@ -5,6 +5,7 @@
+ #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
+ #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
+ 
++#include <cstdint>
+ #include <string>
+ 
+ #include "components/feature_engagement/internal/event_storage_validator.h"
+diff -up chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h.missing-header-files chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h
+--- chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h	2023-11-06 14:34:01.815869132 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ #include <utility>
+ #include <vector>
+diff -up chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h.missing-header-files chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h
+--- chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h	2023-11-06 14:34:01.814869110 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ 
+diff -up chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h.missing-header-files chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h
+--- chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h	2023-11-06 14:34:01.815869132 +0100
+@@ -5,6 +5,7 @@
+ #ifndef COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
+ #define COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
+ 
++#include <cstdint>
+ #include <stddef.h>
+ #include <stdint.h>
+ 
+diff -up chromium-119.0.6045.105/gin/time_clamper.h.missing-header-files chromium-119.0.6045.105/gin/time_clamper.h
+--- chromium-119.0.6045.105/gin/time_clamper.h.missing-header-files	2023-11-01 19:10:28.000000000 +0100
++++ chromium-119.0.6045.105/gin/time_clamper.h	2023-11-06 14:34:01.818869196 +0100
+@@ -48,7 +48,7 @@ class GIN_EXPORT TimeClamper {
+     const int64_t micros = now_micros % 1000;
+     // abs() is necessary for devices with times before unix-epoch (most likely
+     // configured incorrectly).
+-    if (abs(micros) + kResolutionMicros < 1000) {
++    if (std::abs(micros) + kResolutionMicros < 1000) {
+       return now_micros / 1000;
+     }
+     return ClampTimeResolution(now_micros) / 1000;
+diff -up chromium-119.0.6045.105/gpu/config/gpu_feature_info.h.missing-header-files chromium-119.0.6045.105/gpu/config/gpu_feature_info.h
+--- chromium-119.0.6045.105/gpu/config/gpu_feature_info.h.missing-header-files	2023-11-01 19:10:28.000000000 +0100
++++ chromium-119.0.6045.105/gpu/config/gpu_feature_info.h	2023-11-06 14:34:01.809869004 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ #include <vector>
+ 
+diff -up chromium-119.0.6045.105/net/base/net_export.h.missing-header-files chromium-119.0.6045.105/net/base/net_export.h
+--- chromium-119.0.6045.105/net/base/net_export.h.missing-header-files	2023-11-01 19:10:32.000000000 +0100
++++ chromium-119.0.6045.105/net/base/net_export.h	2023-11-06 14:34:01.809869004 +0100
+@@ -5,6 +5,8 @@
+ #ifndef NET_BASE_NET_EXPORT_H_
+ #define NET_BASE_NET_EXPORT_H_
+ 
++#include <cstdint>
++
+ // Defines NET_EXPORT so that functionality implemented by the net module can
+ // be exported to consumers, and NET_EXPORT_PRIVATE that allows unit tests to
+ // access features not intended to be used directly by real consumers.
+diff -up chromium-119.0.6045.105/pdf/document_attachment_info.h.missing-header-files chromium-119.0.6045.105/pdf/document_attachment_info.h
+--- chromium-119.0.6045.105/pdf/document_attachment_info.h.missing-header-files	2023-11-01 19:10:34.000000000 +0100
++++ chromium-119.0.6045.105/pdf/document_attachment_info.h	2023-11-06 14:34:01.815869132 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ 
+diff -up chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h.missing-header-files chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h
+--- chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h.missing-header-files	2023-11-01 19:10:34.000000000 +0100
++++ chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h	2023-11-06 14:34:01.809869004 +0100
+@@ -5,6 +5,7 @@
+ #ifndef SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
+ #define SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
+ 
++#include <cstdint>
+ #include <bitset>
+ #include <cstdint>
+ #include <string>
+diff -up chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h.missing-header-files chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h
+--- chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h.missing-header-files	2023-11-01 19:10:35.000000000 +0100
++++ chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h	2023-11-06 14:34:01.820869238 +0100
+@@ -8,6 +8,9 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ 
++#include <cstddef>
++#include <cstdint>
++
+ #include <type_traits>
+ 
+ namespace device {
+diff -up chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc.missing-header-files chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc
+--- chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc.missing-header-files	2023-11-01 19:10:35.000000000 +0100
++++ chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc	2023-11-06 14:34:01.818869196 +0100
+@@ -3,6 +3,7 @@
+ // found in the LICENSE file.
+ 
+ #include "skia/ext/skcolorspace_trfn.h"
++#include <cmath>
+ 
+ #include <cmath>
+ 
+diff -up chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h.missing-header-files chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h
+--- chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h.missing-header-files	2023-11-01 19:10:36.000000000 +0100
++++ chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h	2023-11-06 14:34:01.809869004 +0100
+@@ -27,6 +27,7 @@
+ #ifndef ABSL_STRINGS_STRING_VIEW_H_
+ #define ABSL_STRINGS_STRING_VIEW_H_
+ 
++#include <cstdint>
+ #include <algorithm>
+ #include <cassert>
+ #include <cstddef>
+diff -up chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h.missing-header-files chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h
+--- chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h.missing-header-files	2023-11-01 19:11:59.000000000 +0100
++++ chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h	2023-11-06 14:34:01.810869025 +0100
+@@ -10,6 +10,7 @@
+ #ifndef GLSLANG_SHADERVARS_H_
+ #define GLSLANG_SHADERVARS_H_
+ 
++#include <cstdint>
+ #include <algorithm>
+ #include <array>
+ #include <cstdint>
+diff -up chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.missing-header-files chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h
+--- chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.missing-header-files	2023-11-01 19:10:37.000000000 +0100
++++ chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h	2023-11-06 14:34:01.810869025 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <array>
+ #include <cstdint>
+ #include <functional>
+diff -up chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.missing-header-files chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h
+--- chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.missing-header-files	2023-11-01 19:13:50.000000000 +0100
++++ chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h	2023-11-06 14:34:01.810869025 +0100
+@@ -15,6 +15,7 @@
+ #ifndef SRC_TINT_LANG_SPIRV_READER_AST_PARSER_NAMER_H_
+ #define SRC_TINT_LANG_SPIRV_READER_AST_PARSER_NAMER_H_
+ 
++#include <cstdint>
+ #include <string>
+ #include <unordered_map>
+ #include <vector>
+diff -up chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h.missing-header-files chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h
+--- chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h.missing-header-files	2023-11-01 19:11:20.000000000 +0100
++++ chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h	2023-11-06 14:34:01.819869217 +0100
+@@ -5,6 +5,7 @@
+ #ifndef IPCZ_SRC_IPCZ_ROUTER_LINK_H_
+ #define IPCZ_SRC_IPCZ_ROUTER_LINK_H_
+ 
++#include <memory>
+ #include <cstddef>
+ #include <functional>
+ #include <memory>
+diff -up chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc.missing-header-files chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc
+--- chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc.missing-header-files	2023-11-01 19:11:53.000000000 +0100
++++ chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc	2023-11-06 14:34:01.819869217 +0100
+@@ -14,6 +14,7 @@
+  * limitations under the License.
+  */
+ 
++#include <cmath>
+ #include "cpp/palettes/tones.h"
+ 
+ #include "cpp/cam/cam.h"
+diff -up chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.missing-header-files chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h
+--- chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.missing-header-files	2023-11-01 19:11:59.000000000 +0100
++++ chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h	2023-11-06 14:34:01.810869025 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <functional>
+ #include <map>
+ #include <set>
+diff -up chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h.missing-header-files chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h
+--- chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h.missing-header-files	2023-11-01 19:14:48.000000000 +0100
++++ chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h	2023-11-06 14:34:01.815869132 +0100
+@@ -7,6 +7,8 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
++
+ namespace pdfium {
+ namespace annotation_flags {
+ 
+diff -up chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h.missing-header-files chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h
+--- chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h.missing-header-files	2023-11-01 19:12:02.000000000 +0100
++++ chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h	2023-11-06 14:34:01.813869089 +0100
+@@ -17,6 +17,7 @@ limitations under the License.
+ #define RUY_RUY_PROFILER_INSTRUMENTATION_H_
+ 
+ #ifdef RUY_PROFILER
++#include <string>
+ #include <cstdio>
+ #include <mutex>
+ #include <vector>
+diff -up chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp.missing-header-files chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp
+--- chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp.missing-header-files	2023-11-01 19:12:15.000000000 +0100
++++ chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp	2023-11-06 14:34:01.810869025 +0100
+@@ -17,6 +17,7 @@
+ 
+ #include "System/Debug.hpp"
+ 
++#include <cstdint>
+ #include <cstddef>
+ #include <cstdint>
+ #include <functional>
+diff -up chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.missing-header-files chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc
+--- chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.missing-header-files	2023-11-01 19:12:42.000000000 +0100
++++ chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc	2023-11-06 14:34:01.814869110 +0100
+@@ -45,6 +45,7 @@
+ #include "llvm/Support/SaveAndRestore.h"
+ #include "llvm/Support/raw_ostream.h"
+ #include <algorithm>
++#include <cstdint>
+ #include <string>
+ #include <sysexits.h>
+ #ifdef HAVE_BACKTRACE
+diff -up chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.missing-header-files chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h
+--- chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.missing-header-files	2023-11-01 19:13:20.000000000 +0100
++++ chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h	2023-11-06 14:34:01.813869089 +0100
+@@ -31,6 +31,7 @@ limitations under the License.
+ #ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
+ #define TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
+ 
++#include <cstdint>
+ #include <complex>
+ #include <deque>
+ #include <vector>
+diff -up chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.missing-header-files chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h
+--- chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.missing-header-files	2023-11-01 19:12:45.000000000 +0100
++++ chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h	2023-11-06 14:34:01.817869174 +0100
+@@ -2884,6 +2884,7 @@ static void vma_aligned_free(void* VMA_N
+ 
+ // Define this macro to 1 to enable functions: vmaBuildStatsString, vmaFreeStatsString.
+ #if VMA_STATS_STRING_ENABLED
++#include <stdio.h>
+     static inline void VmaUint32ToStr(char* VMA_NOT_NULL outStr, size_t strLen, uint32_t num)
+     {
+         snprintf(outStr, strLen, "%u", static_cast<unsigned int>(num));
+diff -up chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc.missing-header-files chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc
+--- chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc.missing-header-files	2023-11-01 19:14:05.000000000 +0100
++++ chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc	2023-11-06 14:34:01.819869217 +0100
+@@ -8,6 +8,8 @@
+  *  be found in the AUTHORS file in the root of the source tree.
+  */
+ 
++#include <cstring>
++
+ #include "audio/utility/channel_mixer.h"
+ 
+ #include "audio/utility/channel_mixing_matrix.h"
+diff -up chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h.missing-header-files chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h
+--- chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h.missing-header-files	2023-11-01 19:14:06.000000000 +0100
++++ chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h	2023-11-06 14:34:01.819869217 +0100
+@@ -11,6 +11,7 @@
+ #ifndef COMMON_VIDEO_H264_SPS_PARSER_H_
+ #define COMMON_VIDEO_H264_SPS_PARSER_H_
+ 
++#include <cstdint>
+ #include "absl/types/optional.h"
+ #include "rtc_base/bitstream_reader.h"
+ 
+diff -up chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h.missing-header-files chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h
+--- chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h.missing-header-files	2023-11-01 19:14:11.000000000 +0100
++++ chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h	2023-11-06 14:34:01.819869217 +0100
+@@ -11,6 +11,7 @@
+ #ifndef MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
+ #define MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
+ 
++#include <cstdint>
+ #include <limits>
+ 
+ #include "absl/types/optional.h"
+diff -up chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-header-files chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc
+--- chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-header-files	2023-11-01 19:14:12.000000000 +0100
++++ chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc	2023-11-06 14:34:01.819869217 +0100
+@@ -10,6 +10,7 @@
+ 
+ #include "modules/video_coding/utility/ivf_file_reader.h"
+ 
++#include <cstring>
+ #include <string>
+ #include <vector>
+ 
+diff -up chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h.missing-header-files chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h
+--- chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h.missing-header-files	2023-11-01 19:11:28.000000000 +0100
++++ chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h	2023-11-06 14:34:01.814869110 +0100
+@@ -7,6 +7,8 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
++
+ #include "base/component_export.h"
+ #include "ui/gfx/geometry/matrix3_f.h"
+ 
+diff -up chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h.missing-header-files chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h
+--- chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h.missing-header-files	2023-11-01 19:11:28.000000000 +0100
++++ chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h	2023-11-06 14:34:01.812869068 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <array>
+ #include <cstddef>
+ #include <cstdint>
+diff -up chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h.missing-header-files chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h
+--- chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h.missing-header-files	2023-11-01 19:11:28.000000000 +0100
++++ chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h	2023-11-06 14:34:01.819869217 +0100
+@@ -9,6 +9,8 @@
+ 
+ #include "ui/gfx/buffer_types.h"
+ 
++#include <cstdint>
++
+ namespace ui {
+ 
+ int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format);
diff --git a/srcpkgs/chromium/patches/chromium-121-mnemonic-error.patch b/srcpkgs/chromium/patches/chromium-121-mnemonic-error.patch
new file mode 100644
index 0000000000000..61239e7f02276
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-mnemonic-error.patch
@@ -0,0 +1,12 @@
+diff -up chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn.mnemonic-error chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn
+--- chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn.mnemonic-error	2023-12-19 18:14:43.027723832 +0100
++++ chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn	2023-12-19 18:39:47.492384620 +0100
+@@ -1731,8 +1731,6 @@ action_foreach("element_locator_test_pro
+   python_path_root = "${root_out_dir}/pyproto"
+   python_path_proto = "${python_path_root}/third_party/blink/renderer/core/lcp_critical_path_predictor"
+ 
+-  mnemonic = "ELOC_PROTO"
+-
+   source_dir = "lcp_critical_path_predictor/test_proto"
+   sources = rebase_path([ "lcp_image_id.asciipb" ], "", source_dir)
+   sources += rebase_path([ "lcp_image_id_b.asciipb" ], "", source_dir)
diff --git a/srcpkgs/chromium/patches/chromium-120-no_matching_constructor.patch b/srcpkgs/chromium/patches/chromium-121-no_matching_constructor.patch
similarity index 75%
rename from srcpkgs/chromium/patches/chromium-120-no_matching_constructor.patch
rename to srcpkgs/chromium/patches/chromium-121-no_matching_constructor.patch
index b1d987adeff8d..332a91ad06b3d 100644
--- a/srcpkgs/chromium/patches/chromium-120-no_matching_constructor.patch
+++ b/srcpkgs/chromium/patches/chromium-121-no_matching_constructor.patch
@@ -114,9 +114,9 @@ diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_per
 +        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal};
    }
 -  buttons.emplace_back(l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
--                       ButtonType::kAllow, ui::ButtonStyle::kTonal);
+-                       ButtonType::kAllow, ui::ButtonStyle::kTonal, kAllowId);
 +  buttons.emplace_back() = {l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
-+                       ButtonType::kAllow, ui::ButtonStyle::kTonal};
++                       ButtonType::kAllow, ui::ButtonStyle::kTonal, kAllowId};
    return buttons;
  }
  
@@ -145,55 +145,6 @@ diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_per
    return buttons;
  }
  
-diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc
---- chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.no_matching_constructor	2023-11-29 22:39:53.000000000 +0100
-+++ chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc	2023-12-03 17:31:25.756420342 +0100
-@@ -63,18 +63,18 @@ EmbeddedPermissionPromptPreviouslyDenied
- std::vector<EmbeddedPermissionPromptPreviouslyDeniedView::ButtonConfiguration>
- EmbeddedPermissionPromptPreviouslyDeniedView::GetButtonsConfiguration() const {
-   std::vector<ButtonConfiguration> buttons;
--  buttons.emplace_back(
-+  buttons.emplace_back() = {
-       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_NOT_ALLOWING),
--      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal);
-+      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal};
- 
-   if (base::FeatureList::IsEnabled(permissions::features::kOneTimePermission)) {
--    buttons.emplace_back(
-+    buttons.emplace_back() = {
-         l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME),
--        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal);
-+        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal};
-   } else {
--    buttons.emplace_back(
-+    buttons.emplace_back() = {
-         l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME),
--        ButtonType::kAllow, ui::ButtonStyle::kTonal);
-+        ButtonType::kAllow, ui::ButtonStyle::kTonal};
-   }
-   return buttons;
- }
-diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc
---- chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.no_matching_constructor	2023-11-29 22:39:53.000000000 +0100
-+++ chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc	2023-12-03 17:31:25.750420227 +0100
-@@ -57,13 +57,13 @@ EmbeddedPermissionPromptPreviouslyGrante
- std::vector<EmbeddedPermissionPromptPreviouslyGrantedView::ButtonConfiguration>
- EmbeddedPermissionPromptPreviouslyGrantedView::GetButtonsConfiguration() const {
-   std::vector<ButtonConfiguration> buttons;
--  buttons.emplace_back(
-+  buttons.emplace_back() = {
-       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_ALLOWING),
--      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal);
-+      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal};
- 
--  buttons.emplace_back(
-+  buttons.emplace_back() = {
-       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_STOP_ALLOWING),
--      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal);
-+      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal};
-   return buttons;
- }
- 
 diff -up chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc.no_matching_constructor chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc
 --- chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc.no_matching_constructor	2023-11-29 22:39:54.000000000 +0100
 +++ chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc	2023-12-03 17:31:25.750420227 +0100
@@ -246,18 +197,6 @@ diff -up chromium-120.0.6099.56/components/autofill/core/browser/webdata/autofil
  
      if (type == ADDRESS_HOME_COUNTRY) {
        country_code = base::UTF16ToUTF8(s.ColumnString16(1));
-diff -up chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc.no_matching_constructor chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc
---- chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc.no_matching_constructor	2023-11-29 22:39:58.000000000 +0100
-+++ chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc	2023-12-03 17:31:25.751420246 +0100
-@@ -630,7 +630,7 @@ void PasswordManager::OnUserModifiedNonP
-   // |driver| might be empty on iOS or in tests.
-   int driver_id = driver ? driver->GetId() : 0;
-   possible_usernames_.Put(
--      PossibleUsernameFieldIdentifier(driver_id, renderer_id),
-+      PossibleUsernameFieldIdentifier{driver_id, renderer_id},
-       PossibleUsernameData(GetSignonRealm(driver->GetLastCommittedURL()),
-                            renderer_id, value, base::Time::Now(), driver_id,
-                            autocomplete_attribute_has_username, is_likely_otp));
 diff -up chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc.no_matching_constructor chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
 --- chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc.no_matching_constructor	2023-11-29 22:40:01.000000000 +0100
 +++ chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc	2023-12-03 17:31:25.751420246 +0100
@@ -300,45 +239,6 @@ diff -up chromium-120.0.6099.56/content/browser/interest_group/interest_group_st
    }
    if (!interest_group_kanon_query.Succeeded()) {
      return absl::nullopt;
-diff -up chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc.no_matching_constructor chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc
---- chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc.no_matching_constructor	2023-11-29 22:40:01.000000000 +0100
-+++ chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc	2023-12-03 20:49:28.059042672 +0100
-@@ -8685,7 +8685,7 @@ void RenderFrameHostImpl::SendFencedFram
-   for (const blink::FencedFrame::ReportingDestination& destination :
-        destinations) {
-     SendFencedFrameReportingBeaconInternal(
--        DestinationEnumEvent(event_type, event_data), destination,
-+        DestinationEnumEvent{event_type, event_data}, destination,
-         /*from_renderer=*/true, attribution_reporting_runtime_features);
-   }
- }
-@@ -8720,7 +8720,7 @@ void RenderFrameHostImpl::SendFencedFram
-   }
- 
-   SendFencedFrameReportingBeaconInternal(
--      DestinationURLEvent(destination_url),
-+      DestinationURLEvent{destination_url},
-       blink::FencedFrame::ReportingDestination::kBuyer,
-       /*from_renderer=*/true, attribution_reporting_runtime_features);
- }
-@@ -8820,7 +8820,7 @@ void RenderFrameHostImpl::MaybeSendFence
-         data = info->data;
-       }
-       initiator_rfh->SendFencedFrameReportingBeaconInternal(
--          AutomaticBeaconEvent(event_type, data), destination,
-+          AutomaticBeaconEvent{event_type, data}, destination,
-           /*from_renderer=*/false, attribution_reporting_features,
-           navigation_request.GetNavigationId());
-     }
-@@ -8832,7 +8832,7 @@ void RenderFrameHostImpl::MaybeSendFence
-     for (blink::FencedFrame::ReportingDestination destination :
-          info->destinations) {
-       initiator_rfh->SendFencedFrameReportingBeaconInternal(
--          AutomaticBeaconEvent(event_type, info->data), destination,
-+          AutomaticBeaconEvent{event_type, info->data}, destination,
-           /*from_renderer=*/false, info->attribution_reporting_runtime_features,
-           navigation_request.GetNavigationId());
-     }
 diff -up chromium-120.0.6099.56/net/dns/host_resolver_cache.cc.no_matching_constructor chromium-120.0.6099.56/net/dns/host_resolver_cache.cc
 --- chromium-120.0.6099.56/net/dns/host_resolver_cache.cc.no_matching_constructor	2023-11-29 22:40:07.000000000 +0100
 +++ chromium-120.0.6099.56/net/dns/host_resolver_cache.cc	2023-12-03 17:31:25.754420303 +0100
@@ -740,3 +640,306 @@ diff -up chromium-120.0.6099.56/ui/gtk/gtk_ui.cc.no_matching_constructor chromiu
    }
    return config;
  }
+diff -up chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.than chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc
+--- chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.than	2023-12-19 17:13:15.116949814 +0100
++++ chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc	2023-12-19 17:27:18.807102716 +0100
+@@ -66,17 +66,17 @@ EmbeddedPermissionPromptPreviouslyDenied
+ std::vector<EmbeddedPermissionPromptPreviouslyDeniedView::ButtonConfiguration>
+ EmbeddedPermissionPromptPreviouslyDeniedView::GetButtonsConfiguration() const {
+   std::vector<ButtonConfiguration> buttons;
+-  buttons.emplace_back(
++  buttons.emplace_back() = {
+       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_NOT_ALLOWING),
+-      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal);
++      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal};
+ 
+   if (base::FeatureList::IsEnabled(permissions::features::kOneTimePermission)) {
+-    buttons.emplace_back(
++    buttons.emplace_back() = {
+         l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME),
+-        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal, kAllowThisTimeId);
++        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal, kAllowThisTimeId};
+   } else {
+-    buttons.emplace_back(l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
+-                         ButtonType::kAllow, ui::ButtonStyle::kTonal);
++    buttons.emplace_back() = {l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
++                         ButtonType::kAllow, ui::ButtonStyle::kTonal};
+   }
+   return buttons;
+ }
+diff -up chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.than chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc
+--- chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.than	2023-12-19 17:39:17.818834020 +0100
++++ chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc	2023-12-19 17:44:15.346337876 +0100
+@@ -61,13 +61,13 @@ EmbeddedPermissionPromptPreviouslyGrante
+ std::vector<EmbeddedPermissionPromptPreviouslyGrantedView::ButtonConfiguration>
+ EmbeddedPermissionPromptPreviouslyGrantedView::GetButtonsConfiguration() const {
+   std::vector<ButtonConfiguration> buttons;
+-  buttons.emplace_back(
++  buttons.emplace_back() = {
+       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_ALLOWING),
+-      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal);
++      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal};
+ 
+-  buttons.emplace_back(
++  buttons.emplace_back() = {
+       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_STOP_ALLOWING),
+-      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal, kStopAllowingId);
++      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal, kStopAllowingId};
+   return buttons;
+ }
+ 
+diff -up chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc.than chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc
+--- chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc.than	2023-12-19 17:39:17.819834039 +0100
++++ chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc	2023-12-19 17:48:33.144389081 +0100
+@@ -666,7 +666,7 @@ void PasswordManager::OnUserModifiedNonP
+     it->second.last_change = base::Time::Now();
+   } else {
+     possible_usernames_.Put(
+-        PossibleUsernameFieldIdentifier(driver_id, renderer_id),
++        PossibleUsernameFieldIdentifier{driver_id, renderer_id},
+         PossibleUsernameData(GetSignonRealm(driver->GetLastCommittedURL()),
+                              renderer_id, value, base::Time::Now(), driver_id,
+                              autocomplete_attribute_has_username,
+diff -up chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc.than chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc
+--- chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc.than	2023-12-19 17:39:17.825834156 +0100
++++ chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc	2023-12-19 17:53:43.153283847 +0100
+@@ -8561,7 +8561,7 @@ void RenderFrameHostImpl::SendFencedFram
+   for (const blink::FencedFrame::ReportingDestination& destination :
+        destinations) {
+     SendFencedFrameReportingBeaconInternal(
+-        DestinationEnumEvent(event_type, event_data), destination,
++        DestinationEnumEvent{event_type, event_data}, destination,
+         attribution_reporting_runtime_features);
+   }
+ }
+@@ -8593,7 +8593,7 @@ void RenderFrameHostImpl::SendFencedFram
+   }
+ 
+   SendFencedFrameReportingBeaconInternal(
+-      DestinationURLEvent(destination_url),
++      DestinationURLEvent{destination_url},
+       blink::FencedFrame::ReportingDestination::kBuyer,
+       attribution_reporting_runtime_features);
+ }
+@@ -8730,7 +8730,7 @@ void RenderFrameHostImpl::MaybeSendFence
+         data = info->data;
+       }
+       initiator_rfh->SendFencedFrameReportingBeaconInternal(
+-          AutomaticBeaconEvent(event_type, data), destination,
++          AutomaticBeaconEvent{event_type, data}, destination,
+           attribution_reporting_features, navigation_request.GetNavigationId());
+     }
+   } else {
+@@ -8741,7 +8741,7 @@ void RenderFrameHostImpl::MaybeSendFence
+     for (blink::FencedFrame::ReportingDestination destination :
+          info->destinations) {
+       initiator_rfh->SendFencedFrameReportingBeaconInternal(
+-          AutomaticBeaconEvent(event_type, info->data), destination,
++          AutomaticBeaconEvent{event_type, info->data}, destination,
+           info->attribution_reporting_runtime_features,
+           navigation_request.GetNavigationId());
+     }
+diff -up chromium-121.0.6167.57/base/nix/mime_util_xdg.cc.me chromium-121.0.6167.57/base/nix/mime_util_xdg.cc
+--- chromium-121.0.6167.57/base/nix/mime_util_xdg.cc.me	2024-01-21 16:54:15.261844448 +0100
++++ chromium-121.0.6167.57/base/nix/mime_util_xdg.cc	2024-01-21 16:55:48.705577424 +0100
+@@ -56,7 +56,7 @@ void LoadAllMimeCacheFiles(MimeTypeMap&
+   for (const auto& path : GetXDGDataSearchLocations(env.get())) {
+     FilePath mime_cache = path.Append("mime/mime.cache");
+     if (GetFileInfo(mime_cache, &info) && ParseMimeTypes(mime_cache, map)) {
+-      files.emplace_back(mime_cache, info.last_modified);
++      files.emplace_back() = {mime_cache, info.last_modified};
+     }
+   }
+ }
+diff -up chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc.me chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc
+--- chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc.me	2024-01-21 18:11:31.397859608 +0100
++++ chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc	2024-01-21 18:20:07.715415037 +0100
+@@ -239,7 +239,7 @@ void WorkerWatcher::OnWorkerCreated(
+   DCHECK(insertion_result.second);
+ 
+   absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [&,
+            this](const content::GlobalRenderFrameHostId& render_frame_host_id) {
+             AddFrameClientConnection(insertion_result.first->second.get(),
+@@ -248,7 +248,7 @@ void WorkerWatcher::OnWorkerCreated(
+           [&, this](blink::DedicatedWorkerToken dedicated_worker_token) {
+             ConnectDedicatedWorkerClient(insertion_result.first->second.get(),
+                                          dedicated_worker_token);
+-          }),
++          }},
+       creator);
+ }
+ 
+@@ -265,7 +265,7 @@ void WorkerWatcher::OnBeforeWorkerDestro
+   // First disconnect the creator's node from this worker node.
+ 
+   absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [&,
+            this](const content::GlobalRenderFrameHostId& render_frame_host_id) {
+             RemoveFrameClientConnection(worker_node.get(),
+@@ -274,7 +274,7 @@ void WorkerWatcher::OnBeforeWorkerDestro
+           [&, this](blink::DedicatedWorkerToken dedicated_worker_token) {
+             DisconnectDedicatedWorkerClient(worker_node.get(),
+                                             dedicated_worker_token);
+-          }),
++          }},
+       creator);
+ 
+   // Disconnect all child workers before destroying the node.
+@@ -446,7 +446,7 @@ void WorkerWatcher::OnControlleeAdded(
+     const std::string& client_uuid,
+     const content::ServiceWorkerClientInfo& client_info) {
+   absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [&, this](content::GlobalRenderFrameHostId render_frame_host_id) {
+             // For window clients, it is necessary to wait until the navigation
+             // has committed to a RenderFrameHost.
+@@ -484,7 +484,7 @@ void WorkerWatcher::OnControlleeAdded(
+               ConnectSharedWorkerClient(service_worker_node,
+                                         shared_worker_token);
+             }
+-          }),
++          }},
+       client_info);
+ }
+ 
+@@ -524,7 +524,7 @@ void WorkerWatcher::OnControlleeRemoved(
+     return;
+ 
+   absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [&, this](content::GlobalRenderFrameHostId render_frame_host_id) {
+             RemoveFrameClientConnection(worker_node, render_frame_host_id);
+           },
+@@ -534,7 +534,7 @@ void WorkerWatcher::OnControlleeRemoved(
+           },
+           [&, this](blink::SharedWorkerToken shared_worker_token) {
+             DisconnectSharedWorkerClient(worker_node, shared_worker_token);
+-          }),
++          }},
+       client);
+ }
+ 
+@@ -810,7 +810,7 @@ void WorkerWatcher::ConnectAllServiceWor
+ 
+   for (const auto& kv : it->second) {
+     absl::visit(
+-        base::Overloaded(
++        base::Overloaded{
+             [&, this](content::GlobalRenderFrameHostId render_frame_host_id) {
+               AddFrameClientConnection(service_worker_node,
+                                        render_frame_host_id);
+@@ -822,7 +822,7 @@ void WorkerWatcher::ConnectAllServiceWor
+             [&, this](blink::SharedWorkerToken shared_worker_token) {
+               ConnectSharedWorkerClient(service_worker_node,
+                                         shared_worker_token);
+-            }),
++            }},
+         kv.second);
+   }
+ }
+@@ -837,7 +837,7 @@ void WorkerWatcher::DisconnectAllService
+ 
+   for (const auto& kv : it->second) {
+     absl::visit(
+-        base::Overloaded(
++        base::Overloaded{
+             [&, this](
+                 const content::GlobalRenderFrameHostId& render_frame_host_id) {
+               RemoveFrameClientConnection(service_worker_node,
+@@ -851,7 +851,7 @@ void WorkerWatcher::DisconnectAllService
+             [&, this](const blink::SharedWorkerToken& shared_worker_token) {
+               DisconnectSharedWorkerClient(service_worker_node,
+                                            shared_worker_token);
+-            }),
++            }},
+         kv.second);
+   }
+ }
+diff -up chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc.me chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc
+--- chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc.me	2024-01-21 18:40:52.284389286 +0100
++++ chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc	2024-01-21 18:41:17.276840222 +0100
+@@ -764,7 +764,7 @@ FirstPartySetParser::ParseSetsFromEnterp
+                      context.GetPolicySetsFromList(
+                          policy.FindList(kFirstPartySetPolicyAdditionsField),
+                          PolicySetType::kAddition));
+-    return ParsedPolicySetLists(std::move(replacements), std::move(additions));
++    return ParsedPolicySetLists{std::move(replacements), std::move(additions)};
+   }();
+ 
+   context.PostProcessSetLists(set_lists);
+diff -up chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h.me chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h
+--- chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h.me	2024-01-21 19:30:00.536387844 +0100
++++ chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h	2024-01-21 20:29:50.236287514 +0100
+@@ -133,6 +133,7 @@ class CONTENT_EXPORT HeaderDirectFromSel
+ 
+     // The Ad-Auction-Signals response served by `origin`.
+     std::string response_json;
++    UnprocessedResponse(auto u, auto s) : origin(u), response_json(s) { }
+   };
+ 
+   // Information from ParseAndFind() calls used by ParseAndFindCompleted.
+diff -up chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc.me chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc
+--- chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc.me	2024-01-21 21:58:48.773366301 +0100
++++ chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc	2024-01-21 22:02:17.956086167 +0100
+@@ -360,10 +360,10 @@ ServiceWorkerMainResourceLoaderIntercept
+   }
+   auto* storage_partition = process->GetStoragePartition();
+ 
+-  return absl::visit(base::Overloaded([&, this](auto token) {
++  return absl::visit(base::Overloaded{[&, this](auto token) {
+                        return GetStorageKeyFromWorkerHost(storage_partition,
+                                                           token, origin);
+-                     }),
++                     }},
+                      *worker_token_);
+ }
+ 
+diff -up chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc.me chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc
+--- chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc.me	2024-01-21 22:04:30.446454697 +0100
++++ chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc	2024-01-21 22:05:22.847391481 +0100
+@@ -870,7 +870,7 @@ ServiceWorkerContainerHost::GetClientTyp
+   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+   DCHECK(client_info_);
+   return absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [](GlobalRenderFrameHostId render_frame_host_id) {
+             return blink::mojom::ServiceWorkerClientType::kWindow;
+           },
+@@ -879,7 +879,7 @@ ServiceWorkerContainerHost::GetClientTyp
+           },
+           [](blink::SharedWorkerToken shared_worker_token) {
+             return blink::mojom::ServiceWorkerClientType::kSharedWorker;
+-          }),
++          }},
+       *client_info_);
+ }
+ 
+diff -up chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc.me chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc
+--- chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc.me	2024-01-21 22:37:00.969416148 +0100
++++ chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc	2024-01-21 22:38:07.754528335 +0100
+@@ -251,7 +251,7 @@ void DedicatedWorkerHost::StartScriptLoa
+   RenderFrameHostImpl* creator_render_frame_host = nullptr;
+   DedicatedWorkerHost* creator_worker = nullptr;
+ 
+-  absl::visit(base::Overloaded(
++  absl::visit(base::Overloaded{
+                   [&](const GlobalRenderFrameHostId& render_frame_host_id) {
+                     creator_render_frame_host =
+                         RenderFrameHostImpl::FromID(render_frame_host_id);
+@@ -259,7 +259,7 @@ void DedicatedWorkerHost::StartScriptLoa
+                   [&](blink::DedicatedWorkerToken dedicated_worker_token) {
+                     creator_worker = service_->GetDedicatedWorkerHostFromToken(
+                         dedicated_worker_token);
+-                  }),
++                  }},
+               creator_);
+ 
+   if (!creator_render_frame_host && !creator_worker) {
diff --git a/srcpkgs/chromium/patches/chromium-121-nullptr_t-without-namespace-std.patch b/srcpkgs/chromium/patches/chromium-121-nullptr_t-without-namespace-std.patch
new file mode 100644
index 0000000000000..3defc393c084f
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-nullptr_t-without-namespace-std.patch
@@ -0,0 +1,12 @@
+diff -up chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h.than chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h
+--- chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h.than	2023-12-04 10:20:45.350540897 +0100
++++ chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h	2023-12-04 10:23:17.335339670 +0100
+@@ -21,7 +21,7 @@ class FragmentDataIteratorBase {
+ 
+  public:
+   explicit FragmentDataIteratorBase(Head& head) : fragment_head_(head) {}
+-  explicit FragmentDataIteratorBase(nullptr_t) {}
++  explicit FragmentDataIteratorBase(std::nullptr_t) {}
+ 
+   Data* GetFragmentData() const {
+     return !IsDone() ? &fragment_head_.at(idx_) : nullptr;
diff --git a/srcpkgs/chromium/patches/chromium-121-python3-invalid-escape-sequence.patch b/srcpkgs/chromium/patches/chromium-121-python3-invalid-escape-sequence.patch
new file mode 100644
index 0000000000000..c2bf5b489f7a1
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-python3-invalid-escape-sequence.patch
@@ -0,0 +1,77 @@
+diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py
+--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py.me	2024-01-15 20:48:28.177397102 +0100
++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py	2024-01-15 20:48:46.427768328 +0100
+@@ -18,7 +18,7 @@ class HTMLGenerationController(object):
+ 
+   def GetHTMLForInlineStylesheet(self, contents):
+     if self.current_module is None:
+-      if re.search('url\(.+\)', contents):
++      if re.search(r'url\(.+\)', contents):
+         raise Exception(
+             'Default HTMLGenerationController cannot handle inline style urls')
+       return contents
+diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py
+--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py.me	2024-01-15 20:49:39.363845083 +0100
++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py	2024-01-15 20:49:57.407212098 +0100
+@@ -4,4 +4,4 @@
+ 
+ 
+ def EscapeJSIfNeeded(js):
+-  return js.replace('</script>', '<\/script>')
++  return js.replace(r'</script>', r'<\/script>')
+diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py
+--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py.me	2024-01-15 20:50:11.819505254 +0100
++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py	2024-01-15 20:50:38.611050213 +0100
+@@ -293,6 +293,6 @@ class HTMLModuleParser():
+       html = ''
+     else:
+       if html.find('< /script>') != -1:
+-        raise Exception('Escape script tags with <\/script>')
++        raise Exception(r'Escape script tags with <\/script>')
+ 
+     return HTMLModuleParserResults(html)
+diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py
+--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py.me	2024-01-15 20:48:59.917042709 +0100
++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py	2024-01-15 20:49:24.402540761 +0100
+@@ -60,7 +60,7 @@ class ParsedStyleSheet(object):
+       return 'url(data:image/%s;base64,%s)' % (ext[1:], data.decode('utf-8'))
+ 
+     # I'm assuming we only have url()'s associated with images
+-    return re.sub('url\((?P<quote>"|\'|)(?P<url>[^"\'()]*)(?P=quote)\)',
++    return re.sub(r'url\((?P<quote>"|\'|)(?P<url>[^"\'()]*)(?P=quote)\)',
+                   InlineUrl, self.contents)
+ 
+   def AppendDirectlyDependentFilenamesTo(self, dependent_filenames):
+@@ -72,7 +72,7 @@ class ParsedStyleSheet(object):
+       raise Exception('@imports are not supported')
+ 
+     matches = re.findall(
+-        'url\((?:["|\']?)([^"\'()]*)(?:["|\']?)\)',
++        r'url\((?:["|\']?)([^"\'()]*)(?:["|\']?)\)',
+         self.contents)
+ 
+     def resolve_url(url):
+diff -up chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py.me chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py
+--- chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py.me	2024-01-15 20:50:56.810420400 +0100
++++ chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py	2024-01-15 20:52:33.506387261 +0100
+@@ -28,7 +28,7 @@ import platform
+ import sys
+ 
+ def glob_slash(dirname):
+-    """Like regular glob but replaces \ with / in returned paths."""
++    """Like regular glob but replaces \\ with / in returned paths."""
+     return [s.replace('\\', '/') for s in glob.glob(dirname)]
+ 
+ def main():
+diff -up chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py.me chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py
+--- chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py.me	2024-01-15 20:52:38.016479000 +0100
++++ chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py	2024-01-15 20:52:48.863699640 +0100
+@@ -28,7 +28,7 @@ import platform
+ import sys
+ 
+ def glob_slash(dirname):
+-    """Like regular glob but replaces \ with / in returned paths."""
++    """Like regular glob but replaces \\ with / in returned paths."""
+     return [s.replace('\\', '/') for s in glob.glob(dirname)]
+ 
+ def main():
diff --git a/srcpkgs/chromium/patches/chromium-121-rust-clang_lib.patch b/srcpkgs/chromium/patches/chromium-121-rust-clang_lib.patch
new file mode 100644
index 0000000000000..4014f9a827648
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-rust-clang_lib.patch
@@ -0,0 +1,22 @@
+--- a/build/config/clang/BUILD.gn
++++ b/build/config/clang/BUILD.gn
+@@ -128,14 +128,15 @@
+       } else if (is_apple) {
+         _dir = "darwin"
+       } else if (is_linux || is_chromeos) {
++        _dir = "linux"
+         if (current_cpu == "x64") {
+-          _dir = "x86_64-unknown-linux-gnu"
++          _suffix = "-x86_64"
+         } else if (current_cpu == "x86") {
+-          _dir = "i386-unknown-linux-gnu"
++          _suffix = "-i386"
+         } else if (current_cpu == "arm") {
+-          _dir = "armv7-unknown-linux-gnueabihf"
++          _suffix = "-armhf"
+         } else if (current_cpu == "arm64") {
+-          _dir = "aarch64-unknown-linux-gnu"
++          _suffix = "-aarch64"
+         } else {
+           assert(false)  # Unhandled cpu type
+         }
diff --git a/srcpkgs/chromium/patches/chromium-121-rust-without-profiler_builtins.patch b/srcpkgs/chromium/patches/chromium-121-rust-without-profiler_builtins.patch
new file mode 100644
index 0000000000000..25c3422982933
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-rust-without-profiler_builtins.patch
@@ -0,0 +1,10 @@
+--- a/build/rust/std/BUILD.gn
++++ b/build/rust/std/BUILD.gn
+@@ -100,7 +100,6 @@
+   # don't need to pass to the C++ linker because they're used for specialized
+   # purposes.
+   skip_stdlib_files = [
+-    "profiler_builtins",
+     "rustc_std_workspace_alloc",
+     "rustc_std_workspace_core",
+     "rustc_std_workspace_std",
diff --git a/srcpkgs/chromium/patches/chromium-121-system-old-ffmpeg.patch b/srcpkgs/chromium/patches/chromium-121-system-old-ffmpeg.patch
new file mode 100644
index 0000000000000..0398e5b697f90
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-system-old-ffmpeg.patch
@@ -0,0 +1,34 @@
+diff -up chromium-121.0.6167.57/media/ffmpeg/ffmpeg_common.cc.me chromium-121.0.6167.57/media/ffmpeg/ffmpeg_common.cc
+--- chromium-121.0.6167.57/media/ffmpeg/ffmpeg_common.cc.me	2024-01-16 10:54:38.994173911 +0100
++++ chromium-121.0.6167.57/media/ffmpeg/ffmpeg_common.cc	2024-01-16 11:06:20.974160612 +0100
+@@ -710,8 +710,13 @@ bool AVStreamToVideoDecoderConfig(const
+   }
+ 
+   VideoTransformation video_transformation = VideoTransformation();
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(60, 31, 102)
++  for (int i = 0; i < stream->nb_side_data; i++) {
++    const auto& side_data = stream->side_data[i];
++#else
+   for (int i = 0; i < stream->codecpar->nb_coded_side_data; ++i) {
+     const auto& side_data = stream->codecpar->coded_side_data[i];
++#endif
+     switch (side_data.type) {
+       case AV_PKT_DATA_DISPLAYMATRIX: {
+         CHECK_EQ(side_data.size, sizeof(int32_t) * 3 * 3);
+diff -up chromium-121.0.6167.57/media/filters/audio_video_metadata_extractor.cc.me chromium-121.0.6167.57/media/filters/audio_video_metadata_extractor.cc
+--- chromium-121.0.6167.57/media/filters/audio_video_metadata_extractor.cc.me	2024-01-16 11:12:27.521534151 +0100
++++ chromium-121.0.6167.57/media/filters/audio_video_metadata_extractor.cc	2024-01-16 11:15:08.717337026 +0100
+@@ -113,8 +113,13 @@ bool AudioVideoMetadataExtractor::Extrac
+     if (!stream)
+       continue;
+ 
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(60, 31, 102)
++    for (int j = 0; j < stream->nb_side_data; j++) {
++      const AVPacketSideData& sd = stream->side_data[j];
++#else
+     for (int j = 0; j < stream->codecpar->nb_coded_side_data; j++) {
+       const AVPacketSideData& sd = stream->codecpar->coded_side_data[j];
++#endif
+       if (sd.type == AV_PKT_DATA_DISPLAYMATRIX) {
+         CHECK_EQ(sd.size, sizeof(int32_t) * 3 * 3);
+         rotation_ = VideoTransformation::FromFFmpegDisplayMatrix(
diff --git a/srcpkgs/chromium/patches/chromium-120-typename.patch b/srcpkgs/chromium/patches/chromium-121-typename.patch
similarity index 78%
rename from srcpkgs/chromium/patches/chromium-120-typename.patch
rename to srcpkgs/chromium/patches/chromium-121-typename.patch
index 9a2d878b12b54..e83e62c60a54e 100644
--- a/srcpkgs/chromium/patches/chromium-120-typename.patch
+++ b/srcpkgs/chromium/patches/chromium-121-typename.patch
@@ -203,3 +203,57 @@ diff -up chromium-120.0.6099.56/third_party/blink/renderer/bindings/core/v8/asyn
        ExceptionState& exception_state) = 0;
  };
  
+diff -up chromium-121.0.6167.57/base/functional/bind_internal.h.me chromium-121.0.6167.57/base/functional/bind_internal.h
+--- chromium-121.0.6167.57/base/functional/bind_internal.h.me	2024-01-21 16:10:09.809037581 +0100
++++ chromium-121.0.6167.57/base/functional/bind_internal.h	2024-01-21 16:46:33.759397303 +0100
+@@ -1533,11 +1533,11 @@ template <int i,
+           typename Param>
+ struct ParamCanBeBound {
+  private:
+-  using UnwrappedParam = BindArgument<i>::template ForwardedAs<
++  using UnwrappedParam = typename BindArgument<i>::template ForwardedAs<
+       Unwrapped>::template ToParamWithType<Param>;
+-  using ParamStorage = BindArgument<i>::template ToParamWithType<
++  using ParamStorage = typename BindArgument<i>::template ToParamWithType<
+       Param>::template StoredAs<Storage>;
+-  using BoundStorage =
++  using BoundStorage = typename
+       BindArgument<i>::template BoundAs<Arg>::template StoredAs<Storage>;
+ 
+   // We forbid callbacks from using raw_ptr as a parameter. However, we allow
+diff -up chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h.me chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h
+--- chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h.me	2024-01-21 17:23:37.786606428 +0100
++++ chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h	2024-01-21 17:23:58.582127103 +0100
+@@ -90,7 +90,7 @@ template <typename Container>
+     { c[i] } -> std::same_as<typename Container::reference>;
+   }
+ struct ArrayTraits<Container> {
+-  using Element = Container::value_type;
++  using Element = typename Container::value_type;
+ 
+   // vector-like containers have no built-in null.
+   static bool IsNull(const Container& c) { return false; }
+diff -up chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h.me chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h
+--- chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h.me	2024-01-21 17:33:40.030897838 +0100
++++ chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h	2024-01-21 17:34:11.518705266 +0100
+@@ -25,7 +25,7 @@ void SetExecutionRequestTemplate(
+ 
+   // Request is set by the feature and should always be typed.
+   auto typed_request =
+-      static_cast<const FeatureType::Request&>(request_metadata);
++      static_cast<const typename FeatureType::Request&>(request_metadata);
+   *(logging_data->mutable_request_data()) = typed_request;
+ }
+ 
+diff -up chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h.me chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h
+--- chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h.me	2024-01-21 17:32:42.367417619 +0100
++++ chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h	2024-01-21 17:33:25.732531198 +0100
+@@ -29,7 +29,7 @@ class ModelQualityLogEntry {
+   }
+ 
+   template <typename FeatureType>
+-  FeatureType::Quality* quality_data() {
++  typename FeatureType::Quality* quality_data() {
+     return FeatureType::GetLoggingData(*log_ai_data_request_)
+         ->mutable_quality_data();
+   }
diff --git a/srcpkgs/chromium/patches/chromium-120-workaround_clang_bug-structured_binding.patch b/srcpkgs/chromium/patches/chromium-121-workaround_clang_bug-structured_binding.patch
similarity index 75%
rename from srcpkgs/chromium/patches/chromium-120-workaround_clang_bug-structured_binding.patch
rename to srcpkgs/chromium/patches/chromium-121-workaround_clang_bug-structured_binding.patch
index b06e29f29047a..192b0692fbf73 100644
--- a/srcpkgs/chromium/patches/chromium-120-workaround_clang_bug-structured_binding.patch
+++ b/srcpkgs/chromium/patches/chromium-121-workaround_clang_bug-structured_binding.patch
@@ -25,27 +25,29 @@ diff -up chromium-115.0.5790.32/content/browser/service_worker/service_worker_co
  
    DCHECK(document_url.is_valid());
    TRACE_EVENT1("ServiceWorker",
-diff -up chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.me chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc
---- chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.me	2023-12-03 22:17:50.922083200 +0100
-+++ chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc	2023-12-03 22:22:55.437484343 +0100
-@@ -3447,7 +3447,8 @@ void GridLayoutAlgorithm::PlaceGridItems
+diff -up chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.than chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc
+--- chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.than	2023-12-19 17:57:56.205197246 +0100
++++ chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc	2023-12-19 18:10:13.778634531 +0100
+@@ -3527,8 +3527,8 @@ void GridLayoutAlgorithm::PlaceGridItems
    DCHECK(out_row_break_between);
  
-   const auto& container_space = ConstraintSpace();
+   const auto& container_space = GetConstraintSpace();
 -  const auto& [grid_items, layout_data, tree_size] = sizing_tree.TreeRootData();
+-
 +  const auto& [grid_items, l_d, tree_size] = sizing_tree.TreeRootData();
 +  const auto& layout_data = l_d;
- 
    const auto* cached_layout_subtree = container_space.GetGridLayoutSubtree();
    const auto container_writing_direction =
-@@ -3611,7 +3612,9 @@ void GridLayoutAlgorithm::PlaceGridItems
+       container_space.GetWritingDirection();
+@@ -3691,8 +3691,9 @@ void GridLayoutAlgorithm::PlaceGridItems
  
    // TODO(ikilpatrick): Update |SetHasSeenAllChildren| and early exit if true.
-   const auto& constraint_space = ConstraintSpace();
+   const auto& constraint_space = GetConstraintSpace();
 -  const auto& [grid_items, layout_data, tree_size] = sizing_tree.TreeRootData();
+-
 +  const auto& [g_i, l_d, tree_size] = sizing_tree.TreeRootData();
 +  const auto& grid_items = g_i;
 +  const auto& layout_data = l_d;
- 
    const auto* cached_layout_subtree = constraint_space.GetGridLayoutSubtree();
    const auto container_writing_direction =
+       constraint_space.GetWritingDirection();
diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template
index 5613fa3813822..197ac9fa07346 100644
--- a/srcpkgs/chromium/template
+++ b/srcpkgs/chromium/template
@@ -1,13 +1,13 @@
 # Template file for 'chromium'
 pkgname=chromium
 # See https://chromiumdash.appspot.com/releases?platform=Linux for the latest version
-version=120.0.6099.129
+version=121.0.6167.85
 revision=1
 archs="i686* x86_64* aarch64* armv7l*"
 hostmakedepends="
  $(vopt_if clang "clang lld llvm15")
  bison git gperf hwids ninja nodejs perl pkg-config python3
- libepoxy-devel libevent-devel libglib-devel"
+ libepoxy-devel libevent-devel libglib-devel rust"
 makedepends="
  alsa-lib-devel libdav1d-devel brotli-devel cups-devel elfutils-devel ffmpeg-devel
  fontconfig-devel freetype-devel gtk+3-devel libXScrnSaver-devel
@@ -27,7 +27,7 @@ maintainer="Duncaen <duncaen@voidlinux.org>"
 license="BSD-3-Clause"
 homepage="https://www.chromium.org/"
 distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz"
-checksum=be36d5abecfafdc68d9b27b0bee65136316610a295e844b99483a7520b245f85
+checksum=a2f46c5266681126ea9e15c1c3067560d84f3e5d902e1ace934a3813c84e7152
 
 lib32disabled=yes
 
@@ -188,7 +188,6 @@ do_configure() {
 
 	conf=(
 		'enable_nacl=false'
-		'enable_rust=false'
 
 		'use_sysroot=false'
 
@@ -198,12 +197,15 @@ do_configure() {
 		"use_lld=$(vopt_if clang true false)"
 		'clang_use_chrome_plugins=false'
 		'clang_base_path="/usr"'
+		"clang_version=\"$(clang -dumpversion)\""
 
 		"gold_path=\"${XBPS_CROSS_BASE}/usr/bin/ld.gold\""
 		"use_custom_libcxx=$(vopt_if libcxx true false)" # https://github.com/llvm/llvm-project/issues/61705
 		'use_gold=false'
 
+		'enable_rust=true'
 		'rust_sysroot_absolute="/usr"'
+		"rustc_version=\"$(rustc --version)\""
 
 		# is_debug makes the build a debug build, changes some things.
 		# might be useful for real debugging vs just debug symbols.
@@ -293,6 +295,9 @@ do_configure() {
 }
 
 do_build() {
+	# XXX: need for error: the option `Z` is only accepted on the nightly compiler
+	export RUSTC_BOOTSTRAP=1
+
 	_setup_toolchain
 	CCACHE_SLOPPINESS=include_file_mtime ninja -C out/Release ${makejobs} chrome chromedriver.unstripped chrome_crashpad_handler
 }

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PR PATCH] [Updated] chromium: update to 121.0.6167.85.
  2024-01-25 15:39 [PR PATCH] chromium: update to 121.0.6167.85 Duncaen
@ 2024-02-10 23:38 ` Duncaen
  2024-02-11  1:46 ` Duncaen
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Duncaen @ 2024-02-10 23:38 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 411 bytes --]

There is an updated pull request by Duncaen against master on the void-packages repository

https://github.com/Duncaen/void-packages chromium-121
https://github.com/void-linux/void-packages/pull/48367

chromium: update to 121.0.6167.85.
[ci skip]

* [ ] x86_64-glibc
* [ ] x86_64-musl
* [ ] aarch64-musl
* [ ] i686

A patch file from https://github.com/void-linux/void-packages/pull/48367.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-chromium-121-48367.patch --]
[-- Type: text/x-diff, Size: 132711 bytes --]

From 1b85c5b583b71cf9013a38d0074686d26301310c Mon Sep 17 00:00:00 2001
From: Duncaen <duncaen@voidlinux.org>
Date: Thu, 25 Jan 2024 16:07:07 +0100
Subject: [PATCH] chromium: update to 121.0.6167.85.

---
 ...ERT-roll-src-third_party-ffmpeg-m102.patch | 333 -------------
 ...oll-src-third_party-ffmpeg-m102.patch.args |   1 -
 ...ERT-roll-src-third_party-ffmpeg-m106.patch |  55 ---
 ...oll-src-third_party-ffmpeg-m106.patch.args |   1 -
 .../patches/chromium-119-ffmpeg-4.4.patch     |  20 -
 .../chromium-120-arm64-memory_tagging.patch   |  14 -
 ...romium-120-el7-clang-version-warning.patch |  16 -
 .../chromium-120-gn-workaround-atspi.patch    |  13 -
 .../chromium-120-missing-header-files.patch   | 459 ------------------
 .../chromium-121-arm64-memory_tagging.patch   |  13 +
 .../patches/chromium-121-constexpr.patch      |  12 +
 ...romium-121-el7-clang-version-warning.patch |  15 +
 ...onstructor-involving-anonymous-union.patch |  12 +
 .../chromium-121-missing-header-files.patch   | 459 ++++++++++++++++++
 .../patches/chromium-121-mnemonic-error.patch |  12 +
 ...hromium-121-no_matching_constructor.patch} | 407 ++++++++++++----
 ...-121-nullptr_t-without-namespace-std.patch |  12 +
 ...-121-python3-invalid-escape-sequence.patch |  77 +++
 .../patches/chromium-121-rust-clang_lib.patch |  22 +
 ...m-121-rust-without-profiler_builtins.patch |  10 +
 ...name.patch => chromium-121-typename.patch} |  54 +++
 ...around_clang_bug-structured_binding.patch} |  20 +-
 srcpkgs/chromium/patches/gcc13-wnoerror.patch |  21 -
 ...undle-ffmpeg-av_stream_get_first_dts.patch |  12 -
 srcpkgs/chromium/template                     |  34 +-
 25 files changed, 1035 insertions(+), 1069 deletions(-)
 delete mode 100644 srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch
 delete mode 100644 srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch.args
 delete mode 100644 srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch
 delete mode 100644 srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch.args
 delete mode 100644 srcpkgs/chromium/patches/chromium-119-ffmpeg-4.4.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-120-missing-header-files.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-arm64-memory_tagging.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-constexpr.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-el7-clang-version-warning.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-el7-default-constructor-involving-anonymous-union.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-missing-header-files.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-mnemonic-error.patch
 rename srcpkgs/chromium/patches/{chromium-120-no_matching_constructor.patch => chromium-121-no_matching_constructor.patch} (75%)
 create mode 100644 srcpkgs/chromium/patches/chromium-121-nullptr_t-without-namespace-std.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-python3-invalid-escape-sequence.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-rust-clang_lib.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-rust-without-profiler_builtins.patch
 rename srcpkgs/chromium/patches/{chromium-120-typename.patch => chromium-121-typename.patch} (78%)
 rename srcpkgs/chromium/patches/{chromium-120-workaround_clang_bug-structured_binding.patch => chromium-121-workaround_clang_bug-structured_binding.patch} (75%)
 delete mode 100644 srcpkgs/chromium/patches/gcc13-wnoerror.patch
 delete mode 100644 srcpkgs/chromium/patches/unbundle-ffmpeg-av_stream_get_first_dts.patch

diff --git a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch b/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch
deleted file mode 100644
index e739b40a2733c..0000000000000
--- a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch
+++ /dev/null
@@ -1,333 +0,0 @@
-From 6e554a30893150793c2638e3689cf208ffc8e375 Mon Sep 17 00:00:00 2001
-From: Dale Curtis <dalecurtis@chromium.org>
-Date: Sat, 2 Apr 2022 05:13:53 +0000
-Subject: [PATCH] Roll src/third_party/ffmpeg/ 574c39cce..32b2d1d526 (1125
- commits)
-
-https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/574c39cce323..32b2d1d526
-
-Created with:
-  roll-dep src/third_party/ffmpeg
-
-Fixed: 1293918
-Cq-Include-Trybots: luci.chromium.try:mac_chromium_asan_rel_ng,linux_chromium_asan_rel_ng,linux_chromium_chromeos_asan_rel_ng
-Change-Id: I41945d0f963e3d1f65940067bac22f63b68e37d2
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3565647
-Auto-Submit: Dale Curtis <dalecurtis@chromium.org>
-Reviewed-by: Dan Sanders <sandersd@chromium.org>
-Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#988253}
----
- .../clear_key_cdm/ffmpeg_cdm_audio_decoder.cc | 29 ++++++++++---------
- media/ffmpeg/ffmpeg_common.cc                 | 11 +++----
- media/filters/audio_file_reader.cc            |  9 +++---
- media/filters/audio_file_reader_unittest.cc   |  6 ++--
- .../filters/audio_video_metadata_extractor.cc | 11 +++++--
- .../filters/ffmpeg_aac_bitstream_converter.cc |  7 +++--
- ...ffmpeg_aac_bitstream_converter_unittest.cc |  2 +-
- media/filters/ffmpeg_audio_decoder.cc         | 13 +++++----
- 8 files changed, 51 insertions(+), 37 deletions(-)
-
-diff --git a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
-index e4fc3f460e2..9b1ad9f7675 100644
---- a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
-+++ b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
-@@ -74,7 +74,7 @@ void CdmAudioDecoderConfigToAVCodecContext(
-       codec_context->sample_fmt = AV_SAMPLE_FMT_NONE;
-   }
- 
--  codec_context->channels = config.channel_count;
-+  codec_context->ch_layout.nb_channels = config.channel_count;
-   codec_context->sample_rate = config.samples_per_second;
- 
-   if (config.extra_data) {
-@@ -124,8 +124,8 @@ void CopySamples(cdm::AudioFormat cdm_format,
-     case cdm::kAudioFormatPlanarS16:
-     case cdm::kAudioFormatPlanarF32: {
-       const int decoded_size_per_channel =
--          decoded_audio_size / av_frame.channels;
--      for (int i = 0; i < av_frame.channels; ++i) {
-+          decoded_audio_size / av_frame.ch_layout.nb_channels;
-+      for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) {
-         memcpy(output_buffer, av_frame.extended_data[i],
-                decoded_size_per_channel);
-         output_buffer += decoded_size_per_channel;
-@@ -185,13 +185,14 @@ bool FFmpegCdmAudioDecoder::Initialize(
-   // Success!
-   decoding_loop_ = std::make_unique<FFmpegDecodingLoop>(codec_context_.get());
-   samples_per_second_ = config.samples_per_second;
--  bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8;
-+  bytes_per_frame_ =
-+      codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8;
-   output_timestamp_helper_ =
-       std::make_unique<AudioTimestampHelper>(config.samples_per_second);
-   is_initialized_ = true;
- 
-   // Store initial values to guard against midstream configuration changes.
--  channels_ = codec_context_->channels;
-+  channels_ = codec_context_->ch_layout.nb_channels;
-   av_sample_format_ = codec_context_->sample_fmt;
- 
-   return true;
-@@ -291,17 +292,19 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer(
-   for (auto& frame : audio_frames) {
-     int decoded_audio_size = 0;
-     if (frame->sample_rate != samples_per_second_ ||
--        frame->channels != channels_ || frame->format != av_sample_format_) {
-+        frame->ch_layout.nb_channels != channels_ ||
-+        frame->format != av_sample_format_) {
-       DLOG(ERROR) << "Unsupported midstream configuration change!"
-                   << " Sample Rate: " << frame->sample_rate << " vs "
--                  << samples_per_second_ << ", Channels: " << frame->channels
--                  << " vs " << channels_ << ", Sample Format: " << frame->format
--                  << " vs " << av_sample_format_;
-+                  << samples_per_second_
-+                  << ", Channels: " << frame->ch_layout.nb_channels << " vs "
-+                  << channels_ << ", Sample Format: " << frame->format << " vs "
-+                  << av_sample_format_;
-       return cdm::kDecodeError;
-     }
- 
-     decoded_audio_size = av_samples_get_buffer_size(
--        nullptr, codec_context_->channels, frame->nb_samples,
-+        nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
-         codec_context_->sample_fmt, 1);
-     if (!decoded_audio_size)
-       continue;
-@@ -320,9 +323,9 @@ bool FFmpegCdmAudioDecoder::OnNewFrame(
-     size_t* total_size,
-     std::vector<std::unique_ptr<AVFrame, ScopedPtrAVFreeFrame>>* audio_frames,
-     AVFrame* frame) {
--  *total_size += av_samples_get_buffer_size(nullptr, codec_context_->channels,
--                                            frame->nb_samples,
--                                            codec_context_->sample_fmt, 1);
-+  *total_size += av_samples_get_buffer_size(
-+      nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
-+      codec_context_->sample_fmt, 1);
-   audio_frames->emplace_back(av_frame_clone(frame));
-   return true;
- }
-diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc
-index 87ca8969626..76f03d6608e 100644
---- a/media/ffmpeg/ffmpeg_common.cc
-+++ b/media/ffmpeg/ffmpeg_common.cc
-@@ -345,10 +345,11 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
-       codec_context->sample_fmt, codec_context->codec_id);
- 
-   ChannelLayout channel_layout =
--      codec_context->channels > 8
-+      codec_context->ch_layout.nb_channels > 8
-           ? CHANNEL_LAYOUT_DISCRETE
--          : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout,
--                                               codec_context->channels);
-+          : ChannelLayoutToChromeChannelLayout(
-+                codec_context->ch_layout.u.mask,
-+                codec_context->ch_layout.nb_channels);
- 
-   int sample_rate = codec_context->sample_rate;
-   switch (codec) {
-@@ -401,7 +402,7 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
-                      extra_data, encryption_scheme, seek_preroll,
-                      codec_context->delay);
-   if (channel_layout == CHANNEL_LAYOUT_DISCRETE)
--    config->SetChannelsForDiscrete(codec_context->channels);
-+    config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels);
- 
- #if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO)
-   // These are bitstream formats unknown to ffmpeg, so they don't have
-@@ -470,7 +471,7 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config,
- 
-   // TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses
-   // said information to decode.
--  codec_context->channels = config.channels();
-+  codec_context->ch_layout.nb_channels = config.channels();
-   codec_context->sample_rate = config.samples_per_second();
- 
-   if (config.extra_data().empty()) {
-diff --git a/media/filters/audio_file_reader.cc b/media/filters/audio_file_reader.cc
-index 5f257bdfaa6..e1be5aa9a5b 100644
---- a/media/filters/audio_file_reader.cc
-+++ b/media/filters/audio_file_reader.cc
-@@ -113,14 +113,15 @@ bool AudioFileReader::OpenDecoder() {
- 
-   // Verify the channel layout is supported by Chrome.  Acts as a sanity check
-   // against invalid files.  See http://crbug.com/171962
--  if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout,
--                                         codec_context_->channels) ==
-+  if (ChannelLayoutToChromeChannelLayout(
-+          codec_context_->ch_layout.u.mask,
-+          codec_context_->ch_layout.nb_channels) ==
-       CHANNEL_LAYOUT_UNSUPPORTED) {
-     return false;
-   }
- 
-   // Store initial values to guard against midstream configuration changes.
--  channels_ = codec_context_->channels;
-+  channels_ = codec_context_->ch_layout.nb_channels;
-   audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id);
-   sample_rate_ = codec_context_->sample_rate;
-   av_sample_format_ = codec_context_->sample_fmt;
-@@ -223,7 +224,7 @@ bool AudioFileReader::OnNewFrame(
-   if (frames_read < 0)
-     return false;
- 
--  const int channels = frame->channels;
-+  const int channels = frame->ch_layout.nb_channels;
-   if (frame->sample_rate != sample_rate_ || channels != channels_ ||
-       frame->format != av_sample_format_) {
-     DLOG(ERROR) << "Unsupported midstream configuration change!"
-diff --git a/media/filters/audio_file_reader_unittest.cc b/media/filters/audio_file_reader_unittest.cc
-index 2aba7927a31..1f45a50cace 100644
---- a/media/filters/audio_file_reader_unittest.cc
-+++ b/media/filters/audio_file_reader_unittest.cc
-@@ -121,11 +121,11 @@ class AudioFileReaderTest : public testing::Test {
-     EXPECT_FALSE(reader_->Open());
-   }
- 
--  void RunTestFailingDecode(const char* fn) {
-+  void RunTestFailingDecode(const char* fn, int expect_read = 0) {
-     Initialize(fn);
-     EXPECT_TRUE(reader_->Open());
-     std::vector<std::unique_ptr<AudioBus>> decoded_audio_packets;
--    EXPECT_EQ(reader_->Read(&decoded_audio_packets), 0);
-+    EXPECT_EQ(reader_->Read(&decoded_audio_packets), expect_read);
-   }
- 
-   void RunTestPartialDecode(const char* fn) {
-@@ -219,7 +219,7 @@ TEST_F(AudioFileReaderTest, AAC_ADTS) {
- }
- 
- TEST_F(AudioFileReaderTest, MidStreamConfigChangesFail) {
--  RunTestFailingDecode("midstream_config_change.mp3");
-+  RunTestFailingDecode("midstream_config_change.mp3", 42624);
- }
- #endif
- 
-diff --git a/media/filters/audio_video_metadata_extractor.cc b/media/filters/audio_video_metadata_extractor.cc
-index 185819eb936..69ff508c221 100644
---- a/media/filters/audio_video_metadata_extractor.cc
-+++ b/media/filters/audio_video_metadata_extractor.cc
-@@ -113,6 +113,15 @@ bool AudioVideoMetadataExtractor::Extract(DataSource* source,
-     if (!stream)
-       continue;
- 
-+    void* display_matrix =
-+        av_stream_get_side_data(stream, AV_PKT_DATA_DISPLAYMATRIX, nullptr);
-+    if (display_matrix) {
-+      rotation_ = VideoTransformation::FromFFmpegDisplayMatrix(
-+                      static_cast<int32_t*>(display_matrix))
-+                      .rotation;
-+      info.tags["rotate"] = base::NumberToString(rotation_);
-+    }
-+
-     // Extract dictionary from streams also. Needed for containers that attach
-     // metadata to contained streams instead the container itself, like OGG.
-     ExtractDictionary(stream->metadata, &info.tags);
-@@ -255,8 +264,6 @@ void AudioVideoMetadataExtractor::ExtractDictionary(AVDictionary* metadata,
-     if (raw_tags->find(tag->key) == raw_tags->end())
-       (*raw_tags)[tag->key] = tag->value;
- 
--    if (ExtractInt(tag, "rotate", &rotation_))
--      continue;
-     if (ExtractString(tag, "album", &album_))
-       continue;
-     if (ExtractString(tag, "artist", &artist_))
-diff --git a/media/filters/ffmpeg_aac_bitstream_converter.cc b/media/filters/ffmpeg_aac_bitstream_converter.cc
-index 6f231c85729..ca5e5fb927d 100644
---- a/media/filters/ffmpeg_aac_bitstream_converter.cc
-+++ b/media/filters/ffmpeg_aac_bitstream_converter.cc
-@@ -195,14 +195,15 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
-   if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id ||
-       audio_profile_ != stream_codec_parameters_->profile ||
-       sample_rate_index_ != sample_rate_index ||
--      channel_configuration_ != stream_codec_parameters_->channels ||
-+      channel_configuration_ !=
-+          stream_codec_parameters_->ch_layout.nb_channels ||
-       frame_length_ != header_plus_packet_size) {
-     header_generated_ =
-         GenerateAdtsHeader(stream_codec_parameters_->codec_id,
-                            0,  // layer
-                            stream_codec_parameters_->profile, sample_rate_index,
-                            0,  // private stream
--                           stream_codec_parameters_->channels,
-+                           stream_codec_parameters_->ch_layout.nb_channels,
-                            0,  // originality
-                            0,  // home
-                            0,  // copyrighted_stream
-@@ -214,7 +215,7 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
-     codec_ = stream_codec_parameters_->codec_id;
-     audio_profile_ = stream_codec_parameters_->profile;
-     sample_rate_index_ = sample_rate_index;
--    channel_configuration_ = stream_codec_parameters_->channels;
-+    channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels;
-     frame_length_ = header_plus_packet_size;
-   }
- 
-diff --git a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
-index 1fd4c5ccd7d..f59bcd8fdaf 100644
---- a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
-+++ b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
-@@ -34,7 +34,7 @@ class FFmpegAACBitstreamConverterTest : public testing::Test {
-     memset(&test_parameters_, 0, sizeof(AVCodecParameters));
-     test_parameters_.codec_id = AV_CODEC_ID_AAC;
-     test_parameters_.profile = FF_PROFILE_AAC_MAIN;
--    test_parameters_.channels = 2;
-+    test_parameters_.ch_layout.nb_channels = 2;
-     test_parameters_.extradata = extradata_header_;
-     test_parameters_.extradata_size = sizeof(extradata_header_);
-   }
-diff --git a/media/filters/ffmpeg_audio_decoder.cc b/media/filters/ffmpeg_audio_decoder.cc
-index 6a56c675f7d..4615fdeb3fb 100644
---- a/media/filters/ffmpeg_audio_decoder.cc
-+++ b/media/filters/ffmpeg_audio_decoder.cc
-@@ -28,7 +28,7 @@ namespace media {
- 
- // Return the number of channels from the data in |frame|.
- static inline int DetermineChannels(AVFrame* frame) {
--  return frame->channels;
-+  return frame->ch_layout.nb_channels;
- }
- 
- // Called by FFmpeg's allocation routine to allocate a buffer. Uses
-@@ -231,7 +231,7 @@ bool FFmpegAudioDecoder::OnNewFrame(const DecoderBuffer& buffer,
-   // Translate unsupported into discrete layouts for discrete configurations;
-   // ffmpeg does not have a labeled discrete configuration internally.
-   ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout(
--      codec_context_->channel_layout, codec_context_->channels);
-+      codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels);
-   if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED &&
-       config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) {
-     channel_layout = CHANNEL_LAYOUT_DISCRETE;
-@@ -348,11 +348,11 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) {
-   // Success!
-   av_sample_format_ = codec_context_->sample_fmt;
- 
--  if (codec_context_->channels != config.channels()) {
-+  if (codec_context_->ch_layout.nb_channels != config.channels()) {
-     MEDIA_LOG(ERROR, media_log_)
-         << "Audio configuration specified " << config.channels()
-         << " channels, but FFmpeg thinks the file contains "
--        << codec_context_->channels << " channels";
-+        << codec_context_->ch_layout.nb_channels << " channels";
-     ReleaseFFmpegResources();
-     state_ = DecoderState::kUninitialized;
-     return false;
-@@ -403,7 +403,7 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
-   if (frame->nb_samples <= 0)
-     return AVERROR(EINVAL);
- 
--  if (s->channels != channels) {
-+  if (s->ch_layout.nb_channels != channels) {
-     DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count.";
-     return AVERROR(EINVAL);
-   }
-@@ -436,7 +436,8 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
-   ChannelLayout channel_layout =
-       config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE
-           ? CHANNEL_LAYOUT_DISCRETE
--          : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels);
-+          : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask,
-+                                               s->ch_layout.nb_channels);
- 
-   if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) {
-     DLOG(ERROR) << "Unsupported channel layout.";
diff --git a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch.args b/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch.args
deleted file mode 100644
index 8bbbbe9483632..0000000000000
--- a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch.args
+++ /dev/null
@@ -1 +0,0 @@
--RNp1
diff --git a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch b/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch
deleted file mode 100644
index b2a113791734c..0000000000000
--- a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From ded379824f5de39357b6b1894578101aba5cdf05 Mon Sep 17 00:00:00 2001
-From: Eugene Zemtsov <eugene@chromium.org>
-Date: Fri, 29 Jul 2022 04:41:04 +0000
-Subject: [PATCH] Roll src/third_party/ffmpeg/ 880df5ede..b71ecd02b (279
- commits)
-
-https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/880df5ede50a..b71ecd02b479
-
-$ git log 880df5ede..b71ecd02b --date=short --no-merges --format='%ad %ae %s'
-2022-07-27 eugene Roll for M106
-2022-07-25 andreas.rheinhardt avcodec/x86/pngdsp: Remove obsolete ff_add_bytes_l2_mmx()
-2022-07-22 andreas.rheinhardt avcodec/hevcdec: Output MD5-message in one piece
-2022-07-24 epirat07 configure: properly require libx264 if enabled
-2022-07-24 zane avformat/argo_cvg: expose loop/reverb/checksum via metadata
-(...)
-2022-05-03 leo.izen avcodec/libjxldec: properly tag output colorspace
-2022-06-25 ffmpeg avfilter/Makefile: always make colorspace.o
-2022-03-02 brad avutil/ppc/cpu: Use proper header for OpenBSD PPC CPU detection
-2022-06-24 jamrial avformat/http: include version.h
-2022-05-16 mbonda-at-nvidia.com AV1 VDPAU hwaccel Decode support
-
-Created with:
-  roll-dep src/third_party/ffmpeg
-
-ffmpeg usage fix:
- Switch from AVFrame::pkt_duration to AVFrame::duration,
- AVFrame::pkt_duration is deprecated
-
-Bug: 1344646
-Change-Id: Iaa3abf48ef81dae6d282bca8f0fa2a8dffeeba25
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3788638
-Reviewed-by: Will Cassella <cassew@chromium.org>
-Commit-Queue: Eugene Zemtsov <eugene@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1029623}
----
- media/filters/audio_file_reader.cc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/media/filters/audio_file_reader.cc b/media/filters/audio_file_reader.cc
-index e1be5aa9a5b..951c003956f 100644
---- a/media/filters/audio_file_reader.cc
-+++ b/media/filters/audio_file_reader.cc
-@@ -243,10 +243,10 @@ bool AudioFileReader::OnNewFrame(
-   // silence from being output. In the case where we are also discarding some
-   // portion of the packet (as indicated by a negative pts), we further want to
-   // adjust the duration downward by however much exists before zero.
--  if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) {
-+  if (audio_codec_ == AudioCodec::kAAC && frame->duration) {
-     const base::TimeDelta pkt_duration = ConvertFromTimeBase(
-         glue_->format_context()->streams[stream_index_]->time_base,
--        frame->pkt_duration + std::min(static_cast<int64_t>(0), frame->pts));
-+        frame->duration + std::min(static_cast<int64_t>(0), frame->pts));
-     const base::TimeDelta frame_duration =
-         base::Seconds(frames_read / static_cast<double>(sample_rate_));
- 
diff --git a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch.args b/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch.args
deleted file mode 100644
index 8bbbbe9483632..0000000000000
--- a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch.args
+++ /dev/null
@@ -1 +0,0 @@
--RNp1
diff --git a/srcpkgs/chromium/patches/chromium-119-ffmpeg-4.4.patch b/srcpkgs/chromium/patches/chromium-119-ffmpeg-4.4.patch
deleted file mode 100644
index 04d04b166ba37..0000000000000
--- a/srcpkgs/chromium/patches/chromium-119-ffmpeg-4.4.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/media/filters/ffmpeg_demuxer.cc.orig
-+++ b/media/filters/ffmpeg_demuxer.cc
-@@ -390,7 +390,7 @@
- 
-   scoped_refptr<DecoderBuffer> buffer;
- 
--    size_t side_data_size = 0;
-+    int side_data_size = 0;
-     uint8_t* side_data = av_packet_get_side_data(
-         packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size);
- 
-@@ -453,7 +453,7 @@
-                                        packet->size - data_offset);
-     }
- 
--    size_t skip_samples_size = 0;
-+    int skip_samples_size = 0;
-     const uint32_t* skip_samples_ptr =
-         reinterpret_cast<const uint32_t*>(av_packet_get_side_data(
-             packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));
diff --git a/srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch b/srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch
deleted file mode 100644
index bb461ef3664a2..0000000000000
--- a/srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- chromium-120.0.6099.35/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h.than	2023-11-26 13:50:07.005519877 +0100
-+++ chromium-120.0.6099.35/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h	2023-11-26 13:50:49.727267240 +0100
-@@ -152,10 +152,7 @@
-   (!BUILDFLAG(PUT_REF_COUNT_IN_PREVIOUS_SLOT) && \
-    defined(ARCH_CPU_LITTLE_ENDIAN))
- 
--#define PA_CONFIG_HAS_MEMORY_TAGGING()              \
--  (defined(ARCH_CPU_ARM64) && defined(__clang__) && \
--   !defined(ADDRESS_SANITIZER) &&                   \
--   (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID)))
-+#define PA_CONFIG_HAS_MEMORY_TAGGING() 0
- 
- #if PA_CONFIG(HAS_MEMORY_TAGGING)
- static_assert(sizeof(void*) == 8);
diff --git a/srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch b/srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch
deleted file mode 100644
index 112da65b4d9b6..0000000000000
--- a/srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -up chromium-120.0.6099.56/third_party/libc++/src/include/__config.me chromium-120.0.6099.56/third_party/libc++/src/include/__config
---- chromium-120.0.6099.56/third_party/libc++/src/include/__config.me	2023-12-03 00:05:51.254483474 +0100
-+++ chromium-120.0.6099.56/third_party/libc++/src/include/__config	2023-12-03 00:06:05.872863168 +0100
-@@ -32,11 +32,7 @@
- 
- // Warn if a compiler version is used that is not supported anymore
- // LLVM RELEASE Update the minimum compiler versions
--#  if defined(_LIBCPP_CLANG_VER)
--#    if _LIBCPP_CLANG_VER < 1500
--#      warning "Libc++ only supports Clang 15 and later"
--#    endif
--#  elif defined(_LIBCPP_APPLE_CLANG_VER)
-+#  if defined(_LIBCPP_APPLE_CLANG_VER)
- #    if _LIBCPP_APPLE_CLANG_VER < 1500
- #      warning "Libc++ only supports AppleClang 15 and later"
- #    endif
diff --git a/srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch b/srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch
deleted file mode 100644
index 72c7b7ec41c28..0000000000000
--- a/srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn.me chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn
---- chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn.me	2023-11-26 16:14:15.364064126 +0100
-+++ chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn	2023-11-26 16:41:16.877321990 +0100
-@@ -21,6 +21,9 @@ if (use_atk) {
-     minor = atspi_version[1]
-     micro = atspi_version[2]
- 
-+    # gn workaround for the error: Assignment had no effect
-+    print("ATSPI Version: $major.$minor.$micro")
-+
-     # ATSPI 2.49.90 now defines these for us and it's an error for us to
-     # redefine them on the compiler command line.
-     # See ATSPI 927344a34cd5bf81fc64da4968241735ecb4f03b
diff --git a/srcpkgs/chromium/patches/chromium-120-missing-header-files.patch b/srcpkgs/chromium/patches/chromium-120-missing-header-files.patch
deleted file mode 100644
index 44f867475b218..0000000000000
--- a/srcpkgs/chromium/patches/chromium-120-missing-header-files.patch
+++ /dev/null
@@ -1,459 +0,0 @@
-diff -up chromium-110.0.5481.177/base/memory/ref_counted.h.me chromium-110.0.5481.177/base/memory/ref_counted.h
---- chromium-110.0.5481.177/base/memory/ref_counted.h.me	2023-02-23 13:34:33.174817255 -0500
-+++ chromium-110.0.5481.177/base/memory/ref_counted.h	2023-02-23 13:42:28.646052469 -0500
-@@ -6,6 +6,7 @@
- #define BASE_MEMORY_REF_COUNTED_H_
- 
- #include <stddef.h>
-+#include <limits>
- 
- #include <utility>
- 
-diff -up chromium-109.0.5414.74/base/check_op.h.me chromium-109.0.5414.74/base/check_op.h
---- chromium-109.0.5414.74/base/check_op.h.me	2023-01-17 17:39:27.620875883 +0100
-+++ chromium-109.0.5414.74/base/check_op.h	2023-01-17 17:39:42.546060957 +0100
-@@ -5,6 +5,7 @@
- #ifndef BASE_CHECK_OP_H_
- #define BASE_CHECK_OP_H_
- 
-+#include <cstdint>
- #include <cstddef>
- #include <string>
- #include <type_traits>
-diff -up chromium-109.0.5414.74/base/debug/profiler.h.me chromium-109.0.5414.74/base/debug/profiler.h
---- chromium-109.0.5414.74/base/debug/profiler.h.me	2023-01-17 16:29:26.368090073 +0100
-+++ chromium-109.0.5414.74/base/debug/profiler.h	2023-01-17 16:59:41.190628679 +0100
-@@ -7,6 +7,7 @@
- 
- #include <stddef.h>
- 
-+#include <cstdint>
- #include <string>
- 
- #include "base/base_export.h"
-diff -up chromium-109.0.5414.74/gpu/config/gpu_feature_info.h.me chromium-109.0.5414.74/gpu/config/gpu_feature_info.h
---- chromium-109.0.5414.74/gpu/config/gpu_feature_info.h.me	2023-01-17 19:06:53.530675129 +0100
-+++ chromium-109.0.5414.74/gpu/config/gpu_feature_info.h	2023-01-17 19:07:08.874849879 +0100
-@@ -5,6 +5,7 @@
- #ifndef GPU_CONFIG_GPU_FEATURE_INFO_H_
- #define GPU_CONFIG_GPU_FEATURE_INFO_H_
- 
-+#include <cstdint>
- #include <string>
- #include <vector>
- 
-diff -up chromium-109.0.5414.74/net/base/net_export.h.me chromium-109.0.5414.74/net/base/net_export.h
---- chromium-109.0.5414.74/net/base/net_export.h.me	2023-01-17 18:16:34.133854615 +0100
-+++ chromium-109.0.5414.74/net/base/net_export.h	2023-01-17 18:16:15.945623153 +0100
-@@ -5,6 +5,8 @@
- #ifndef NET_BASE_NET_EXPORT_H_
- #define NET_BASE_NET_EXPORT_H_
- 
-+#include <cstdint>
-+
- // Defines NET_EXPORT so that functionality implemented by the net module can
- // be exported to consumers, and NET_EXPORT_PRIVATE that allows unit tests to
- // access features not intended to be used directly by real consumers.
-diff -up chromium-109.0.5414.74/sandbox/linux/syscall_broker/broker_file_permission.h.me chromium-109.0.5414.74/sandbox/linux/syscall_broker/broker_file_permission.h
---- chromium-109.0.5414.74/sandbox/linux/syscall_broker/broker_file_permission.h.me	2023-01-17 17:12:34.184686515 +0100
-+++ chromium-109.0.5414.74/sandbox/linux/syscall_broker/broker_file_permission.h	2023-01-17 17:13:16.537162420 +0100
-@@ -5,6 +5,7 @@
- #ifndef SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
- #define SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
- 
-+#include <cstdint>
- #include <bitset>
- #include <string>
- 
-diff -up chromium-109.0.5414.74/third_party/abseil-cpp/absl/strings/string_view.h.me chromium-109.0.5414.74/third_party/abseil-cpp/absl/strings/string_view.h
---- chromium-109.0.5414.74/third_party/abseil-cpp/absl/strings/string_view.h.me	2023-01-17 17:33:20.895717307 +0100
-+++ chromium-109.0.5414.74/third_party/abseil-cpp/absl/strings/string_view.h	2023-01-17 17:34:03.456185365 +0100
-@@ -27,6 +27,7 @@
- #ifndef ABSL_STRINGS_STRING_VIEW_H_
- #define ABSL_STRINGS_STRING_VIEW_H_
- 
-+#include <cstdint>
- #include <algorithm>
- #include <cassert>
- #include <cstddef>
-diff -up chromium-109.0.5414.74/third_party/angle/include/GLSLANG/ShaderVars.h.me chromium-109.0.5414.74/third_party/angle/include/GLSLANG/ShaderVars.h
---- chromium-109.0.5414.74/third_party/angle/include/GLSLANG/ShaderVars.h.me	2023-01-17 17:36:15.017616250 +0100
-+++ chromium-109.0.5414.74/third_party/angle/include/GLSLANG/ShaderVars.h	2023-01-17 17:36:48.960982195 +0100
-@@ -10,6 +10,7 @@
- #ifndef GLSLANG_SHADERVARS_H_
- #define GLSLANG_SHADERVARS_H_
- 
-+#include <cstdint>
- #include <algorithm>
- #include <array>
- #include <string>
-diff -up chromium-109.0.5414.74/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.me chromium-109.0.5414.74/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h
---- chromium-109.0.5414.74/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.me	2023-01-17 19:17:40.480876171 +0100
-+++ chromium-109.0.5414.74/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h	2023-01-17 19:17:46.803958320 +0100
-@@ -5,6 +5,7 @@
- #ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_BLUETOOTH_WEB_BLUETOOTH_DEVICE_ID_H_
- #define THIRD_PARTY_BLINK_PUBLIC_COMMON_BLUETOOTH_WEB_BLUETOOTH_DEVICE_ID_H_
- 
-+#include <cstdint>
- #include <array>
- #include <string>
- 
-diff -up chromium-117.0.5938.48/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.me chromium-117.0.5938.48/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h
---- chromium-117.0.5938.48/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.me	2023-01-17 18:02:44.681538107 +0100
-+++ chromium-117.0.5938.48/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h	2023-01-17 18:02:57.208679140 +0100
-@@ -15,6 +15,7 @@
- #ifndef SRC_TINT_READER_SPIRV_NAMER_H_
- #define SRC_TINT_READER_SPIRV_NAMER_H_
- 
-+#include <cstdint>
- #include <string>
- #include <unordered_map>
- #include <vector>
-diff -up chromium-109.0.5414.74/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.me chromium-109.0.5414.74/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h
---- chromium-109.0.5414.74/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.me	2023-01-18 15:22:38.472940648 +0100
-+++ chromium-109.0.5414.74/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h	2023-01-18 15:23:09.380255101 +0100
-@@ -5,6 +5,7 @@
- #ifndef DISCOVERY_DNSSD_PUBLIC_DNS_SD_TXT_RECORD_H_
- #define DISCOVERY_DNSSD_PUBLIC_DNS_SD_TXT_RECORD_H_
- 
-+#include <cstdint>
- #include <functional>
- #include <map>
- #include <set>
-diff -up chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp.me chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp
---- chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp.me	2023-01-17 15:37:48.530626516 +0100
-+++ chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp	2023-01-17 16:57:46.025548092 +0100
-@@ -17,6 +17,7 @@
- 
- #include "System/Debug.hpp"
- 
-+#include <cstdint>
- #include <cstddef>
- #include <functional>
- #include <unordered_set>
-diff -up chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h.me chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h
---- chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h.me	2023-01-17 18:08:25.745491353 +0100
-+++ chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h	2023-01-17 18:08:35.777667632 +0100
-@@ -5,6 +5,7 @@
- #ifndef UI_GFX_LINEAR_GRADIENT_H_
- #define UI_GFX_LINEAR_GRADIENT_H_
- 
-+#include <cstdint>
- #include <array>
- #include <string>
- 
-diff -up chromium-109.0.5414.74/third_party/ruy/src/ruy/profiler/instrumentation.h.me chromium-109.0.5414.74/third_party/ruy/src/ruy/profiler/instrumentation.h
---- chromium-109.0.5414.74/third_party/ruy/src/ruy/profiler/instrumentation.h.me	2023-01-19 10:10:21.287876736 +0100
-+++ chromium-109.0.5414.74/third_party/ruy/src/ruy/profiler/instrumentation.h	2023-01-19 10:11:21.714778896 +0100
-@@ -17,6 +17,7 @@ limitations under the License.
- #define RUY_RUY_PROFILER_INSTRUMENTATION_H_
- 
- #ifdef RUY_PROFILER
-+#include <string>
- #include <cstdio>
- #include <mutex>
- #include <vector>
-diff -up chromium-109.0.5414.74/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.me chromium-109.0.5414.74/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h
---- chromium-109.0.5414.74/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.me	2023-01-19 10:30:27.533861985 +0100
-+++ chromium-109.0.5414.74/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h	2023-01-19 10:31:12.585554183 +0100
-@@ -31,6 +31,7 @@ limitations under the License.
- #ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
- #define TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
- 
-+#include <cstdint>
- #include <complex>
- #include <deque>
- #include <vector>
-diff -up chromium-109.0.5414.74/base/containers/flat_map.h.mee chromium-109.0.5414.74/base/containers/flat_map.h
---- chromium-109.0.5414.74/base/containers/flat_map.h.mee	2023-01-19 10:59:52.214957773 +0100
-+++ chromium-109.0.5414.74/base/containers/flat_map.h	2023-01-19 11:00:06.415215309 +0100
-@@ -5,6 +5,7 @@
- #ifndef BASE_CONTAINERS_FLAT_MAP_H_
- #define BASE_CONTAINERS_FLAT_MAP_H_
- 
-+#include <cstdint>
- #include <functional>
- #include <tuple>
- #include <utility>
-diff -up chromium-109.0.5414.74/components/crash/core/app/crash_reporter_client.h.mee chromium-109.0.5414.74/components/crash/core/app/crash_reporter_client.h
---- chromium-109.0.5414.74/components/crash/core/app/crash_reporter_client.h.mee	2023-01-19 10:36:40.571422826 +0100
-+++ chromium-109.0.5414.74/components/crash/core/app/crash_reporter_client.h	2023-01-19 10:36:49.343565294 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_CRASH_CORE_APP_CRASH_REPORTER_CLIENT_H_
- #define COMPONENTS_CRASH_CORE_APP_CRASH_REPORTER_CLIENT_H_
- 
-+#include <cstdint>
- #include <string>
- 
- #include "build/build_config.h"
-diff -up chromium-109.0.5414.74/ui/base/prediction/kalman_filter.h.mee chromium-109.0.5414.74/ui/base/prediction/kalman_filter.h
---- chromium-109.0.5414.74/ui/base/prediction/kalman_filter.h.mee	2023-01-19 11:45:15.953159755 +0100
-+++ chromium-109.0.5414.74/ui/base/prediction/kalman_filter.h	2023-01-19 11:45:22.320246241 +0100
-@@ -5,6 +5,8 @@
- #ifndef UI_BASE_PREDICTION_KALMAN_FILTER_H_
- #define UI_BASE_PREDICTION_KALMAN_FILTER_H_
- 
-+#include <cstdint>
-+
- #include "base/component_export.h"
- #include "ui/gfx/geometry/matrix3_f.h"
- 
-diff -up chromium-109.0.5414.74/components/password_manager/core/browser/generation/password_generator.h.me chromium-109.0.5414.74/components/password_manager/core/browser/generation/password_generator.h
---- chromium-109.0.5414.74/components/password_manager/core/browser/generation/password_generator.h.me	2023-01-19 15:20:07.620987949 +0100
-+++ chromium-109.0.5414.74/components/password_manager/core/browser/generation/password_generator.h	2023-01-19 15:20:18.324173702 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_GENERATION_PASSWORD_GENERATOR_H_
- #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_GENERATION_PASSWORD_GENERATOR_H_
- 
-+#include <cstdint>
- #include <string>
- 
- 
-diff -up chromium-109.0.5414.74/components/feature_engagement/internal/event_storage_validator.h.me chromium-109.0.5414.74/components/feature_engagement/internal/event_storage_validator.h
---- chromium-109.0.5414.74/components/feature_engagement/internal/event_storage_validator.h.me	2023-01-19 16:00:14.350186515 +0100
-+++ chromium-109.0.5414.74/components/feature_engagement/internal/event_storage_validator.h	2023-01-19 16:00:21.643307993 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_EVENT_STORAGE_VALIDATOR_H_
- #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_EVENT_STORAGE_VALIDATOR_H_
- 
-+#include <cstdint>
- #include <string>
- 
- namespace feature_engagement {
-diff -up chromium-109.0.5414.74/components/feature_engagement/internal/never_event_storage_validator.h.me chromium-109.0.5414.74/components/feature_engagement/internal/never_event_storage_validator.h
---- chromium-109.0.5414.74/components/feature_engagement/internal/never_event_storage_validator.h.me	2023-01-19 15:59:18.210239416 +0100
-+++ chromium-109.0.5414.74/components/feature_engagement/internal/never_event_storage_validator.h	2023-01-19 15:59:34.513515030 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
- #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
- 
-+#include <cstdint>
- #include <string>
- 
- #include "components/feature_engagement/internal/event_storage_validator.h"
-diff -up chromium-109.0.5414.74/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.me chromium-109.0.5414.74/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc
---- chromium-109.0.5414.74/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.me	2023-01-19 16:09:29.216477182 +0100
-+++ chromium-109.0.5414.74/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc	2023-01-19 16:10:05.657089208 +0100
-@@ -45,6 +45,7 @@
- #include "llvm/Support/SaveAndRestore.h"
- #include "llvm/Support/raw_ostream.h"
- #include <algorithm>
-+#include <cstdint>
- #include <string>
- #include <sysexits.h>
- #ifdef HAVE_BACKTRACE
-diff -up chromium-109.0.5414.74/chrome/browser/privacy_budget/encountered_surface_tracker.h.me chromium-109.0.5414.74/chrome/browser/privacy_budget/encountered_surface_tracker.h
---- chromium-109.0.5414.74/chrome/browser/privacy_budget/encountered_surface_tracker.h.me	2023-01-19 16:32:05.338160131 +0100
-+++ chromium-109.0.5414.74/chrome/browser/privacy_budget/encountered_surface_tracker.h	2023-01-19 16:32:16.213326798 +0100
-@@ -5,6 +5,7 @@
- #ifndef CHROME_BROWSER_PRIVACY_BUDGET_ENCOUNTERED_SURFACE_TRACKER_H_
- #define CHROME_BROWSER_PRIVACY_BUDGET_ENCOUNTERED_SURFACE_TRACKER_H_
- 
-+#include <cstdint>
- #include <map>
- 
- #include "base/containers/flat_set.h"
-diff -up chromium-109.0.5414.74/components/autofill/core/browser/autofill_ablation_study.h.me chromium-109.0.5414.74/components/autofill/core/browser/autofill_ablation_study.h
---- chromium-109.0.5414.74/components/autofill/core/browser/autofill_ablation_study.h.me	2023-01-19 16:47:55.548571102 +0100
-+++ chromium-109.0.5414.74/components/autofill/core/browser/autofill_ablation_study.h	2023-01-19 16:48:29.214146529 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ABLATION_STUDY_H_
- #define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ABLATION_STUDY_H_
- 
-+#include <cstdint>
- #include <string>
- 
- class GURL;
-diff -up chromium-109.0.5414.74/components/omnibox/browser/on_device_head_model.h.me chromium-109.0.5414.74/components/omnibox/browser/on_device_head_model.h
---- chromium-109.0.5414.74/components/omnibox/browser/on_device_head_model.h.me	2023-01-19 16:57:29.525372814 +0100
-+++ chromium-109.0.5414.74/components/omnibox/browser/on_device_head_model.h	2023-01-19 16:58:02.667979288 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_OMNIBOX_BROWSER_ON_DEVICE_HEAD_MODEL_H_
- #define COMPONENTS_OMNIBOX_BROWSER_ON_DEVICE_HEAD_MODEL_H_
- 
-+#include <cstdint>
- #include <string>
- #include <utility>
- #include <vector>
-diff -up chromium-109.0.5414.74/components/payments/content/utility/fingerprint_parser.h.me chromium-109.0.5414.74/components/payments/content/utility/fingerprint_parser.h
---- chromium-109.0.5414.74/components/payments/content/utility/fingerprint_parser.h.me	2023-01-19 17:02:45.258544665 +0100
-+++ chromium-109.0.5414.74/components/payments/content/utility/fingerprint_parser.h	2023-01-19 17:02:52.577611757 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
- #define COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
- 
-+#include <cstdint>
- #include <stddef.h>
- 
- #include <string>
-diff -up chromium-109.0.5414.74/pdf/document_attachment_info.h.me chromium-109.0.5414.74/pdf/document_attachment_info.h
---- chromium-109.0.5414.74/pdf/document_attachment_info.h.me	2023-01-19 17:28:28.552063534 +0100
-+++ chromium-109.0.5414.74/pdf/document_attachment_info.h	2023-01-19 17:28:48.072379953 +0100
-@@ -5,6 +5,7 @@
- #ifndef PDF_DOCUMENT_ATTACHMENT_INFO_H_
- #define PDF_DOCUMENT_ATTACHMENT_INFO_H_
- 
-+#include <cstdint>
- #include <string>
- 
- 
-diff -up chromium-109.0.5414.74/third_party/pdfium/constants/annotation_flags.h.me chromium-109.0.5414.74/third_party/pdfium/constants/annotation_flags.h
---- chromium-109.0.5414.74/third_party/pdfium/constants/annotation_flags.h.me	2023-01-19 18:25:47.648193710 +0100
-+++ chromium-109.0.5414.74/third_party/pdfium/constants/annotation_flags.h	2023-01-19 18:26:11.488593556 +0100
-@@ -5,6 +5,8 @@
- #ifndef CONSTANTS_ANNOTATION_FLAGS_H_
- #define CONSTANTS_ANNOTATION_FLAGS_H_
- 
-+#include <cstdint>
-+
- namespace pdfium {
- namespace annotation_flags {
- 
-diff -up chromium-113.0.5672.24/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.me chromium-113.0.5672.24/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h
---- chromium-113.0.5672.24/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.me	2023-04-15 16:44:55.344305412 +0200
-+++ chromium-113.0.5672.24/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h	2023-04-15 16:47:09.028666995 +0200
-@@ -2854,6 +2854,7 @@ static void vma_aligned_free(void* VMA_N
- 
- // Define this macro to 1 to enable functions: vmaBuildStatsString, vmaFreeStatsString.
- #if VMA_STATS_STRING_ENABLED
-+#include <stdio.h>
-     static inline void VmaUint32ToStr(char* VMA_NOT_NULL outStr, size_t strLen, uint32_t num)
-     {
-         snprintf(outStr, strLen, "%u", static_cast<unsigned int>(num));
-diff -up chromium-113.0.5672.37/chrome/browser/webauthn/authenticator_request_dialog_model.h.me chromium-113.0.5672.37/chrome/browser/webauthn/authenticator_request_dialog_model.h
---- chromium-113.0.5672.37/chrome/browser/webauthn/authenticator_request_dialog_model.h.me	2023-04-18 15:55:44.774916319 +0200
-+++ chromium-113.0.5672.37/chrome/browser/webauthn/authenticator_request_dialog_model.h	2023-04-18 15:55:54.441085882 +0200
-@@ -8,6 +8,7 @@
- #include <memory>
- #include <string>
- #include <vector>
-+#include <variant>
- 
- #include "base/containers/span.h"
- #include "base/functional/callback_forward.h"
-diff -up chromium-113.0.5672.37/gin/time_clamper.h.me chromium-113.0.5672.37/gin/time_clamper.h
---- chromium-113.0.5672.37/gin/time_clamper.h.me	2023-04-18 16:38:41.180437467 +0200
-+++ chromium-113.0.5672.37/gin/time_clamper.h	2023-04-18 16:39:43.857049432 +0200
-@@ -48,7 +48,7 @@ class GIN_EXPORT TimeClamper {
-     const int64_t micros = now_micros % 1000;
-     // abs() is necessary for devices with times before unix-epoch (most likely
-     // configured incorrectly).
--    if (abs(micros) + kResolutionMicros < 1000) {
-+    if (std::abs(micros) + kResolutionMicros < 1000) {
-       return now_micros / 1000;
-     }
-     return ClampTimeResolution(now_micros) / 1000;
-diff -up chromium-113.0.5672.53/chrome/test/chromedriver/chrome/web_view_impl.cc.me chromium-113.0.5672.53/chrome/test/chromedriver/chrome/web_view_impl.cc
---- chromium-113.0.5672.53/chrome/test/chromedriver/chrome/web_view_impl.cc.me	2023-04-21 08:07:55.362714544 +0200
-+++ chromium-113.0.5672.53/chrome/test/chromedriver/chrome/web_view_impl.cc	2023-04-21 08:14:35.424158693 +0200
-@@ -10,6 +10,7 @@
- #include <queue>
- #include <utility>
- #include <vector>
-+#include <cstring>
- 
- #include "base/check.h"
- #include "base/files/file_path.h"
-diff -up chromium-115.0.5790.32/skia/ext/skcolorspace_trfn.cc.me chromium-115.0.5790.32/skia/ext/skcolorspace_trfn.cc
---- chromium-115.0.5790.32/skia/ext/skcolorspace_trfn.cc.me	2023-06-18 12:33:52.387412788 +0200
-+++ chromium-115.0.5790.32/skia/ext/skcolorspace_trfn.cc	2023-06-18 12:35:28.229148935 +0200
-@@ -3,6 +3,7 @@
- // found in the LICENSE file.
- 
- #include "skia/ext/skcolorspace_trfn.h"
-+#include <cmath>
- 
- namespace skia {
- 
-diff -up chromium-96.0.4664.45/third_party/webrtc/common_video/h264/sps_parser.h.missing-cstdint chromium-96.0.4664.45/third_party/webrtc/common_video/h264/sps_parser.h
---- chromium-96.0.4664.45/third_party/webrtc/common_video/h264/sps_parser.h.missing-cstdint	2021-11-19 17:05:31.379750350 -0500
-+++ chromium-96.0.4664.45/third_party/webrtc/common_video/h264/sps_parser.h	2021-11-19 17:07:35.191520127 -0500
-@@ -11,6 +11,7 @@
- #ifndef COMMON_VIDEO_H264_SPS_PARSER_H_
- #define COMMON_VIDEO_H264_SPS_PARSER_H_
- 
-+#include <cstdint>
- #include "absl/types/optional.h"
- #include "rtc_base/bitstream_reader.h"
- 
-diff -up chromium-96.0.4664.45/third_party/webrtc/modules/include/module_common_types_public.h.missing-cstdint chromium-96.0.4664.45/third_party/webrtc/modules/include/module_common_types_public.h
---- chromium-96.0.4664.45/third_party/webrtc/modules/include/module_common_types_public.h.missing-cstdint	2021-11-12 05:28:10.000000000 -0500
-+++ chromium-96.0.4664.45/third_party/webrtc/modules/include/module_common_types_public.h	2021-11-19 17:05:31.379750350 -0500
-@@ -11,6 +11,7 @@
- #ifndef MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
- #define MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
- 
-+#include <cstdint>
- #include <limits>
- 
- #include "absl/types/optional.h"
-diff -up chromium-96.0.4664.45/ui/gfx/linux/drm_util_linux.h.missing-cstdint chromium-96.0.4664.45/ui/gfx/linux/drm_util_linux.h
---- chromium-96.0.4664.45/ui/gfx/linux/drm_util_linux.h.missing-cstdint	2021-11-12 05:25:24.000000000 -0500
-+++ chromium-96.0.4664.45/ui/gfx/linux/drm_util_linux.h	2021-11-19 17:05:31.379750350 -0500
-@@ -9,6 +9,8 @@
- 
- #include "ui/gfx/buffer_types.h"
- 
-+#include <cstdint>
-+
- namespace ui {
- 
- int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format);
-diff -up chromium-96.0.4664.45/third_party/webrtc/audio/utility/channel_mixer.cc.missing-cstring chromium-96.0.4664.45/third_party/webrtc/audio/utility/channel_mixer.cc
---- chromium-96.0.4664.45/third_party/webrtc/audio/utility/channel_mixer.cc.missing-cstring	2021-11-12 05:28:09.000000000 -0500
-+++ chromium-96.0.4664.45/third_party/webrtc/audio/utility/channel_mixer.cc	2021-11-19 17:10:02.927438695 -0500
-@@ -8,6 +8,8 @@
-  *  be found in the AUTHORS file in the root of the source tree.
-  */
- 
-+#include <cstring>
-+
- #include "audio/utility/channel_mixer.h"
- 
- #include "audio/utility/channel_mixing_matrix.h"
-diff -up chromium-96.0.4664.45/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-cstring chromium-96.0.4664.45/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc
---- chromium-96.0.4664.45/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-cstring	2021-11-12 05:28:10.000000000 -0500
-+++ chromium-96.0.4664.45/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc	2021-11-19 17:10:02.928438701 -0500
-@@ -10,6 +10,7 @@
- 
- #include "modules/video_coding/utility/ivf_file_reader.h"
- 
-+#include <cstring>
- #include <string>
- #include <vector>
- 
-diff -up chromium-117.0.5938.48/third_party/ipcz/src/ipcz/router_link.h.me chromium-117.0.5938.48/third_party/ipcz/src/ipcz/router_link.h
---- chromium-117.0.5938.48/third_party/ipcz/src/ipcz/router_link.h.me	2023-09-10 17:53:04.826298351 +0200
-+++ chromium-117.0.5938.48/third_party/ipcz/src/ipcz/router_link.h	2023-09-10 17:53:22.201756894 +0200
-@@ -5,6 +5,7 @@
- #ifndef IPCZ_SRC_IPCZ_ROUTER_LINK_H_
- #define IPCZ_SRC_IPCZ_ROUTER_LINK_H_
- 
-+#include <memory>
- #include <cstddef>
- #include <functional>
- #include <string>
-diff -up chromium-117.0.5938.48/third_party/material_color_utilities/src/cpp/palettes/tones.cc.me chromium-117.0.5938.48/third_party/material_color_utilities/src/cpp/palettes/tones.cc
---- chromium-117.0.5938.48/third_party/material_color_utilities/src/cpp/palettes/tones.cc.me	2023-09-10 17:36:27.199841051 +0200
-+++ chromium-117.0.5938.48/third_party/material_color_utilities/src/cpp/palettes/tones.cc	2023-09-10 17:44:51.870554233 +0200
-@@ -14,6 +14,7 @@
-  * limitations under the License.
-  */
- 
-+#include <cmath>
- #include "cpp/palettes/tones.h"
- 
- #include "cpp/cam/cam.h"
-diff -up chromium-118.0.5993.32/services/device/public/cpp/generic_sensor/sensor_reading.h.me chromium-118.0.5993.32/services/device/public/cpp/generic_sensor/sensor_reading.h
---- chromium-118.0.5993.32/services/device/public/cpp/generic_sensor/sensor_reading.h.me	2023-10-01 13:55:01.913193186 +0200
-+++ chromium-118.0.5993.32/services/device/public/cpp/generic_sensor/sensor_reading.h	2023-10-01 14:05:38.488038429 +0200
-@@ -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 <cstddef>
-+#include <cstdint>
-+
- #include <type_traits>
- 
- namespace device {
diff --git a/srcpkgs/chromium/patches/chromium-121-arm64-memory_tagging.patch b/srcpkgs/chromium/patches/chromium-121-arm64-memory_tagging.patch
new file mode 100644
index 0000000000000..cf807ddb31ec7
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-arm64-memory_tagging.patch
@@ -0,0 +1,13 @@
+diff -up chromium-121.0.6167.57/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h.me chromium-121.0.6167.57/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h
+--- chromium-121.0.6167.57/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h.me	2024-01-16 14:20:52.401890657 +0100
++++ chromium-121.0.6167.57/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h	2024-01-16 15:08:04.070156474 +0100
+@@ -162,7 +162,8 @@ static_assert(sizeof(void*) != 8, "");
+ 
+ #if defined(ARCH_CPU_ARM64) && defined(__clang__) && \
+     !defined(ADDRESS_SANITIZER) &&                   \
+-    (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID))
++    (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID)) && \
++    __GLIBC_PREREQ(2, 29)
+ #define PA_CONFIG_HAS_MEMORY_TAGGING() 1
+ #else
+ #define PA_CONFIG_HAS_MEMORY_TAGGING() 0
diff --git a/srcpkgs/chromium/patches/chromium-121-constexpr.patch b/srcpkgs/chromium/patches/chromium-121-constexpr.patch
new file mode 100644
index 0000000000000..a0b7166a5c8f8
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-constexpr.patch
@@ -0,0 +1,12 @@
+diff -up chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h.me chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h
+--- chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h.me	2024-01-18 17:00:24.791582422 +0100
++++ chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h	2024-01-18 17:22:21.521682845 +0100
+@@ -27,7 +27,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;
+ 
+   // Individual resource contexts to measure.
diff --git a/srcpkgs/chromium/patches/chromium-121-el7-clang-version-warning.patch b/srcpkgs/chromium/patches/chromium-121-el7-clang-version-warning.patch
new file mode 100644
index 0000000000000..bc86eb2355874
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-el7-clang-version-warning.patch
@@ -0,0 +1,15 @@
+--- chromium-121.0.6167.57/third_party/libc++/src/include/__config.orig	2024-01-16 18:38:00.995930774 +0100
++++ chromium-121.0.6167.57/third_party/libc++/src/include/__config	2024-01-16 18:43:47.056517289 +0100
+@@ -32,11 +32,7 @@
+ 
+ // Warn if a compiler version is used that is not supported anymore
+ // LLVM RELEASE Update the minimum compiler versions
+-#  if defined(_LIBCPP_CLANG_VER)
+-#    if _LIBCPP_CLANG_VER < 1600
+-#      warning "Libc++ only supports Clang 16 and later"
+-#    endif
+-#  elif defined(_LIBCPP_APPLE_CLANG_VER)
++#  if defined(_LIBCPP_APPLE_CLANG_VER)
+ #    if _LIBCPP_APPLE_CLANG_VER < 1500
+ #      warning "Libc++ only supports AppleClang 15 and later"
+ #    endif
diff --git a/srcpkgs/chromium/patches/chromium-121-el7-default-constructor-involving-anonymous-union.patch b/srcpkgs/chromium/patches/chromium-121-el7-default-constructor-involving-anonymous-union.patch
new file mode 100644
index 0000000000000..0a2ac1de3561d
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-el7-default-constructor-involving-anonymous-union.patch
@@ -0,0 +1,12 @@
+diff -up chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.cc.me chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.cc
+--- chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.cc.me	2024-01-23 15:13:11.469104694 +0100
++++ chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.cc	2024-01-23 15:11:40.117842015 +0100
+@@ -46,7 +46,7 @@ size_t GetResultSizeBytes(const HeaderDi
+ 
+ }  // namespace
+ 
+-HeaderDirectFromSellerSignals::Result::Result() = default;
++HeaderDirectFromSellerSignals::Result::Result() {}
+ 
+ HeaderDirectFromSellerSignals::Result::Result(
+     absl::optional<std::string> seller_signals,
diff --git a/srcpkgs/chromium/patches/chromium-121-missing-header-files.patch b/srcpkgs/chromium/patches/chromium-121-missing-header-files.patch
new file mode 100644
index 0000000000000..377de0d1140cb
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-missing-header-files.patch
@@ -0,0 +1,459 @@
+diff -up chromium-119.0.6045.105/base/check_op.h.missing-header-files chromium-119.0.6045.105/base/check_op.h
+--- chromium-119.0.6045.105/base/check_op.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
++++ chromium-119.0.6045.105/base/check_op.h	2023-11-06 14:34:01.808868982 +0100
+@@ -5,6 +5,7 @@
+ #ifndef BASE_CHECK_OP_H_
+ #define BASE_CHECK_OP_H_
+ 
++#include <cstdint>
+ #include <cstddef>
+ #include <string>
+ #include <string_view>
+diff -up chromium-119.0.6045.105/base/containers/flat_map.h.missing-header-files chromium-119.0.6045.105/base/containers/flat_map.h
+--- chromium-119.0.6045.105/base/containers/flat_map.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
++++ chromium-119.0.6045.105/base/containers/flat_map.h	2023-11-06 14:34:01.813869089 +0100
+@@ -5,6 +5,7 @@
+ #ifndef BASE_CONTAINERS_FLAT_MAP_H_
+ #define BASE_CONTAINERS_FLAT_MAP_H_
+ 
++#include <cstdint>
+ #include <functional>
+ #include <tuple>
+ #include <type_traits>
+diff -up chromium-119.0.6045.105/base/debug/profiler.h.missing-header-files chromium-119.0.6045.105/base/debug/profiler.h
+--- chromium-119.0.6045.105/base/debug/profiler.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
++++ chromium-119.0.6045.105/base/debug/profiler.h	2023-11-06 14:34:01.809869004 +0100
+@@ -8,6 +8,7 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ #include "base/base_export.h"
+diff -up chromium-119.0.6045.105/base/memory/ref_counted.h.missing-header-files chromium-119.0.6045.105/base/memory/ref_counted.h
+--- chromium-119.0.6045.105/base/memory/ref_counted.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
++++ chromium-119.0.6045.105/base/memory/ref_counted.h	2023-11-06 14:34:01.808868982 +0100
+@@ -6,6 +6,7 @@
+ #define BASE_MEMORY_REF_COUNTED_H_
+ 
+ #include <stddef.h>
++#include <limits>
+ 
+ #include <limits>
+ #include <utility>
+diff -up chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h.missing-header-files chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h
+--- chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h.missing-header-files	2023-11-01 19:10:13.000000000 +0100
++++ chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h	2023-11-06 14:34:01.814869110 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <map>
+ 
+ #include "base/containers/flat_set.h"
+diff -up chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h.missing-header-files chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h
+--- chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h.missing-header-files	2023-11-01 19:10:16.000000000 +0100
++++ chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h	2023-11-06 14:34:01.817869174 +0100
+@@ -8,6 +8,7 @@
+ #include <memory>
+ #include <string>
+ #include <vector>
++#include <variant>
+ 
+ #include "base/containers/span.h"
+ #include "base/functional/callback_forward.h"
+diff -up chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc.missing-header-files chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc
+--- chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc.missing-header-files	2023-11-01 19:10:16.000000000 +0100
++++ chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc	2023-11-06 14:34:01.818869196 +0100
+@@ -11,6 +11,7 @@
+ #include <queue>
+ #include <utility>
+ #include <vector>
++#include <cstring>
+ 
+ #include "base/check.h"
+ #include "base/files/file_path.h"
+diff -up chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h.missing-header-files chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h
+--- chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h.missing-header-files	2023-11-01 19:10:19.000000000 +0100
++++ chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h	2023-11-06 14:34:01.815869132 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ class GURL;
+diff -up chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h.missing-header-files chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h
+--- chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h.missing-header-files	2023-11-01 19:10:20.000000000 +0100
++++ chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h	2023-11-06 14:34:01.813869089 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ #include "build/build_config.h"
+diff -up chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h.missing-header-files chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h
+--- chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h	2023-11-06 14:34:01.814869110 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ namespace feature_engagement {
+diff -up chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h.missing-header-files chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h
+--- chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h	2023-11-06 14:34:01.814869110 +0100
+@@ -5,6 +5,7 @@
+ #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
+ #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
+ 
++#include <cstdint>
+ #include <string>
+ 
+ #include "components/feature_engagement/internal/event_storage_validator.h"
+diff -up chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h.missing-header-files chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h
+--- chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h	2023-11-06 14:34:01.815869132 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ #include <utility>
+ #include <vector>
+diff -up chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h.missing-header-files chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h
+--- chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h	2023-11-06 14:34:01.814869110 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ 
+diff -up chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h.missing-header-files chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h
+--- chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h	2023-11-06 14:34:01.815869132 +0100
+@@ -5,6 +5,7 @@
+ #ifndef COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
+ #define COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
+ 
++#include <cstdint>
+ #include <stddef.h>
+ #include <stdint.h>
+ 
+diff -up chromium-119.0.6045.105/gin/time_clamper.h.missing-header-files chromium-119.0.6045.105/gin/time_clamper.h
+--- chromium-119.0.6045.105/gin/time_clamper.h.missing-header-files	2023-11-01 19:10:28.000000000 +0100
++++ chromium-119.0.6045.105/gin/time_clamper.h	2023-11-06 14:34:01.818869196 +0100
+@@ -48,7 +48,7 @@ class GIN_EXPORT TimeClamper {
+     const int64_t micros = now_micros % 1000;
+     // abs() is necessary for devices with times before unix-epoch (most likely
+     // configured incorrectly).
+-    if (abs(micros) + kResolutionMicros < 1000) {
++    if (std::abs(micros) + kResolutionMicros < 1000) {
+       return now_micros / 1000;
+     }
+     return ClampTimeResolution(now_micros) / 1000;
+diff -up chromium-119.0.6045.105/gpu/config/gpu_feature_info.h.missing-header-files chromium-119.0.6045.105/gpu/config/gpu_feature_info.h
+--- chromium-119.0.6045.105/gpu/config/gpu_feature_info.h.missing-header-files	2023-11-01 19:10:28.000000000 +0100
++++ chromium-119.0.6045.105/gpu/config/gpu_feature_info.h	2023-11-06 14:34:01.809869004 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ #include <vector>
+ 
+diff -up chromium-119.0.6045.105/net/base/net_export.h.missing-header-files chromium-119.0.6045.105/net/base/net_export.h
+--- chromium-119.0.6045.105/net/base/net_export.h.missing-header-files	2023-11-01 19:10:32.000000000 +0100
++++ chromium-119.0.6045.105/net/base/net_export.h	2023-11-06 14:34:01.809869004 +0100
+@@ -5,6 +5,8 @@
+ #ifndef NET_BASE_NET_EXPORT_H_
+ #define NET_BASE_NET_EXPORT_H_
+ 
++#include <cstdint>
++
+ // Defines NET_EXPORT so that functionality implemented by the net module can
+ // be exported to consumers, and NET_EXPORT_PRIVATE that allows unit tests to
+ // access features not intended to be used directly by real consumers.
+diff -up chromium-119.0.6045.105/pdf/document_attachment_info.h.missing-header-files chromium-119.0.6045.105/pdf/document_attachment_info.h
+--- chromium-119.0.6045.105/pdf/document_attachment_info.h.missing-header-files	2023-11-01 19:10:34.000000000 +0100
++++ chromium-119.0.6045.105/pdf/document_attachment_info.h	2023-11-06 14:34:01.815869132 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ 
+diff -up chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h.missing-header-files chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h
+--- chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h.missing-header-files	2023-11-01 19:10:34.000000000 +0100
++++ chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h	2023-11-06 14:34:01.809869004 +0100
+@@ -5,6 +5,7 @@
+ #ifndef SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
+ #define SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
+ 
++#include <cstdint>
+ #include <bitset>
+ #include <cstdint>
+ #include <string>
+diff -up chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h.missing-header-files chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h
+--- chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h.missing-header-files	2023-11-01 19:10:35.000000000 +0100
++++ chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h	2023-11-06 14:34:01.820869238 +0100
+@@ -8,6 +8,9 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ 
++#include <cstddef>
++#include <cstdint>
++
+ #include <type_traits>
+ 
+ namespace device {
+diff -up chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc.missing-header-files chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc
+--- chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc.missing-header-files	2023-11-01 19:10:35.000000000 +0100
++++ chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc	2023-11-06 14:34:01.818869196 +0100
+@@ -3,6 +3,7 @@
+ // found in the LICENSE file.
+ 
+ #include "skia/ext/skcolorspace_trfn.h"
++#include <cmath>
+ 
+ #include <cmath>
+ 
+diff -up chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h.missing-header-files chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h
+--- chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h.missing-header-files	2023-11-01 19:10:36.000000000 +0100
++++ chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h	2023-11-06 14:34:01.809869004 +0100
+@@ -27,6 +27,7 @@
+ #ifndef ABSL_STRINGS_STRING_VIEW_H_
+ #define ABSL_STRINGS_STRING_VIEW_H_
+ 
++#include <cstdint>
+ #include <algorithm>
+ #include <cassert>
+ #include <cstddef>
+diff -up chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h.missing-header-files chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h
+--- chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h.missing-header-files	2023-11-01 19:11:59.000000000 +0100
++++ chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h	2023-11-06 14:34:01.810869025 +0100
+@@ -10,6 +10,7 @@
+ #ifndef GLSLANG_SHADERVARS_H_
+ #define GLSLANG_SHADERVARS_H_
+ 
++#include <cstdint>
+ #include <algorithm>
+ #include <array>
+ #include <cstdint>
+diff -up chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.missing-header-files chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h
+--- chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.missing-header-files	2023-11-01 19:10:37.000000000 +0100
++++ chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h	2023-11-06 14:34:01.810869025 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <array>
+ #include <cstdint>
+ #include <functional>
+diff -up chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.missing-header-files chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h
+--- chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.missing-header-files	2023-11-01 19:13:50.000000000 +0100
++++ chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h	2023-11-06 14:34:01.810869025 +0100
+@@ -15,6 +15,7 @@
+ #ifndef SRC_TINT_LANG_SPIRV_READER_AST_PARSER_NAMER_H_
+ #define SRC_TINT_LANG_SPIRV_READER_AST_PARSER_NAMER_H_
+ 
++#include <cstdint>
+ #include <string>
+ #include <unordered_map>
+ #include <vector>
+diff -up chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h.missing-header-files chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h
+--- chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h.missing-header-files	2023-11-01 19:11:20.000000000 +0100
++++ chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h	2023-11-06 14:34:01.819869217 +0100
+@@ -5,6 +5,7 @@
+ #ifndef IPCZ_SRC_IPCZ_ROUTER_LINK_H_
+ #define IPCZ_SRC_IPCZ_ROUTER_LINK_H_
+ 
++#include <memory>
+ #include <cstddef>
+ #include <functional>
+ #include <memory>
+diff -up chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc.missing-header-files chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc
+--- chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc.missing-header-files	2023-11-01 19:11:53.000000000 +0100
++++ chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc	2023-11-06 14:34:01.819869217 +0100
+@@ -14,6 +14,7 @@
+  * limitations under the License.
+  */
+ 
++#include <cmath>
+ #include "cpp/palettes/tones.h"
+ 
+ #include "cpp/cam/cam.h"
+diff -up chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.missing-header-files chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h
+--- chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.missing-header-files	2023-11-01 19:11:59.000000000 +0100
++++ chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h	2023-11-06 14:34:01.810869025 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <functional>
+ #include <map>
+ #include <set>
+diff -up chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h.missing-header-files chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h
+--- chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h.missing-header-files	2023-11-01 19:14:48.000000000 +0100
++++ chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h	2023-11-06 14:34:01.815869132 +0100
+@@ -7,6 +7,8 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
++
+ namespace pdfium {
+ namespace annotation_flags {
+ 
+diff -up chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h.missing-header-files chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h
+--- chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h.missing-header-files	2023-11-01 19:12:02.000000000 +0100
++++ chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h	2023-11-06 14:34:01.813869089 +0100
+@@ -17,6 +17,7 @@ limitations under the License.
+ #define RUY_RUY_PROFILER_INSTRUMENTATION_H_
+ 
+ #ifdef RUY_PROFILER
++#include <string>
+ #include <cstdio>
+ #include <mutex>
+ #include <vector>
+diff -up chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp.missing-header-files chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp
+--- chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp.missing-header-files	2023-11-01 19:12:15.000000000 +0100
++++ chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp	2023-11-06 14:34:01.810869025 +0100
+@@ -17,6 +17,7 @@
+ 
+ #include "System/Debug.hpp"
+ 
++#include <cstdint>
+ #include <cstddef>
+ #include <cstdint>
+ #include <functional>
+diff -up chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.missing-header-files chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc
+--- chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.missing-header-files	2023-11-01 19:12:42.000000000 +0100
++++ chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc	2023-11-06 14:34:01.814869110 +0100
+@@ -45,6 +45,7 @@
+ #include "llvm/Support/SaveAndRestore.h"
+ #include "llvm/Support/raw_ostream.h"
+ #include <algorithm>
++#include <cstdint>
+ #include <string>
+ #include <sysexits.h>
+ #ifdef HAVE_BACKTRACE
+diff -up chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.missing-header-files chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h
+--- chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.missing-header-files	2023-11-01 19:13:20.000000000 +0100
++++ chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h	2023-11-06 14:34:01.813869089 +0100
+@@ -31,6 +31,7 @@ limitations under the License.
+ #ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
+ #define TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
+ 
++#include <cstdint>
+ #include <complex>
+ #include <deque>
+ #include <vector>
+diff -up chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.missing-header-files chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h
+--- chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.missing-header-files	2023-11-01 19:12:45.000000000 +0100
++++ chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h	2023-11-06 14:34:01.817869174 +0100
+@@ -2884,6 +2884,7 @@ static void vma_aligned_free(void* VMA_N
+ 
+ // Define this macro to 1 to enable functions: vmaBuildStatsString, vmaFreeStatsString.
+ #if VMA_STATS_STRING_ENABLED
++#include <stdio.h>
+     static inline void VmaUint32ToStr(char* VMA_NOT_NULL outStr, size_t strLen, uint32_t num)
+     {
+         snprintf(outStr, strLen, "%u", static_cast<unsigned int>(num));
+diff -up chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc.missing-header-files chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc
+--- chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc.missing-header-files	2023-11-01 19:14:05.000000000 +0100
++++ chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc	2023-11-06 14:34:01.819869217 +0100
+@@ -8,6 +8,8 @@
+  *  be found in the AUTHORS file in the root of the source tree.
+  */
+ 
++#include <cstring>
++
+ #include "audio/utility/channel_mixer.h"
+ 
+ #include "audio/utility/channel_mixing_matrix.h"
+diff -up chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h.missing-header-files chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h
+--- chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h.missing-header-files	2023-11-01 19:14:06.000000000 +0100
++++ chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h	2023-11-06 14:34:01.819869217 +0100
+@@ -11,6 +11,7 @@
+ #ifndef COMMON_VIDEO_H264_SPS_PARSER_H_
+ #define COMMON_VIDEO_H264_SPS_PARSER_H_
+ 
++#include <cstdint>
+ #include "absl/types/optional.h"
+ #include "rtc_base/bitstream_reader.h"
+ 
+diff -up chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h.missing-header-files chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h
+--- chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h.missing-header-files	2023-11-01 19:14:11.000000000 +0100
++++ chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h	2023-11-06 14:34:01.819869217 +0100
+@@ -11,6 +11,7 @@
+ #ifndef MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
+ #define MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
+ 
++#include <cstdint>
+ #include <limits>
+ 
+ #include "absl/types/optional.h"
+diff -up chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-header-files chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc
+--- chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-header-files	2023-11-01 19:14:12.000000000 +0100
++++ chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc	2023-11-06 14:34:01.819869217 +0100
+@@ -10,6 +10,7 @@
+ 
+ #include "modules/video_coding/utility/ivf_file_reader.h"
+ 
++#include <cstring>
+ #include <string>
+ #include <vector>
+ 
+diff -up chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h.missing-header-files chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h
+--- chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h.missing-header-files	2023-11-01 19:11:28.000000000 +0100
++++ chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h	2023-11-06 14:34:01.814869110 +0100
+@@ -7,6 +7,8 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
++
+ #include "base/component_export.h"
+ #include "ui/gfx/geometry/matrix3_f.h"
+ 
+diff -up chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h.missing-header-files chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h
+--- chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h.missing-header-files	2023-11-01 19:11:28.000000000 +0100
++++ chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h	2023-11-06 14:34:01.812869068 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <array>
+ #include <cstddef>
+ #include <cstdint>
+diff -up chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h.missing-header-files chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h
+--- chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h.missing-header-files	2023-11-01 19:11:28.000000000 +0100
++++ chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h	2023-11-06 14:34:01.819869217 +0100
+@@ -9,6 +9,8 @@
+ 
+ #include "ui/gfx/buffer_types.h"
+ 
++#include <cstdint>
++
+ namespace ui {
+ 
+ int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format);
diff --git a/srcpkgs/chromium/patches/chromium-121-mnemonic-error.patch b/srcpkgs/chromium/patches/chromium-121-mnemonic-error.patch
new file mode 100644
index 0000000000000..61239e7f02276
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-mnemonic-error.patch
@@ -0,0 +1,12 @@
+diff -up chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn.mnemonic-error chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn
+--- chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn.mnemonic-error	2023-12-19 18:14:43.027723832 +0100
++++ chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn	2023-12-19 18:39:47.492384620 +0100
+@@ -1731,8 +1731,6 @@ action_foreach("element_locator_test_pro
+   python_path_root = "${root_out_dir}/pyproto"
+   python_path_proto = "${python_path_root}/third_party/blink/renderer/core/lcp_critical_path_predictor"
+ 
+-  mnemonic = "ELOC_PROTO"
+-
+   source_dir = "lcp_critical_path_predictor/test_proto"
+   sources = rebase_path([ "lcp_image_id.asciipb" ], "", source_dir)
+   sources += rebase_path([ "lcp_image_id_b.asciipb" ], "", source_dir)
diff --git a/srcpkgs/chromium/patches/chromium-120-no_matching_constructor.patch b/srcpkgs/chromium/patches/chromium-121-no_matching_constructor.patch
similarity index 75%
rename from srcpkgs/chromium/patches/chromium-120-no_matching_constructor.patch
rename to srcpkgs/chromium/patches/chromium-121-no_matching_constructor.patch
index b1d987adeff8d..332a91ad06b3d 100644
--- a/srcpkgs/chromium/patches/chromium-120-no_matching_constructor.patch
+++ b/srcpkgs/chromium/patches/chromium-121-no_matching_constructor.patch
@@ -114,9 +114,9 @@ diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_per
 +        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal};
    }
 -  buttons.emplace_back(l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
--                       ButtonType::kAllow, ui::ButtonStyle::kTonal);
+-                       ButtonType::kAllow, ui::ButtonStyle::kTonal, kAllowId);
 +  buttons.emplace_back() = {l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
-+                       ButtonType::kAllow, ui::ButtonStyle::kTonal};
++                       ButtonType::kAllow, ui::ButtonStyle::kTonal, kAllowId};
    return buttons;
  }
  
@@ -145,55 +145,6 @@ diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_per
    return buttons;
  }
  
-diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc
---- chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.no_matching_constructor	2023-11-29 22:39:53.000000000 +0100
-+++ chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc	2023-12-03 17:31:25.756420342 +0100
-@@ -63,18 +63,18 @@ EmbeddedPermissionPromptPreviouslyDenied
- std::vector<EmbeddedPermissionPromptPreviouslyDeniedView::ButtonConfiguration>
- EmbeddedPermissionPromptPreviouslyDeniedView::GetButtonsConfiguration() const {
-   std::vector<ButtonConfiguration> buttons;
--  buttons.emplace_back(
-+  buttons.emplace_back() = {
-       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_NOT_ALLOWING),
--      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal);
-+      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal};
- 
-   if (base::FeatureList::IsEnabled(permissions::features::kOneTimePermission)) {
--    buttons.emplace_back(
-+    buttons.emplace_back() = {
-         l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME),
--        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal);
-+        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal};
-   } else {
--    buttons.emplace_back(
-+    buttons.emplace_back() = {
-         l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME),
--        ButtonType::kAllow, ui::ButtonStyle::kTonal);
-+        ButtonType::kAllow, ui::ButtonStyle::kTonal};
-   }
-   return buttons;
- }
-diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc
---- chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.no_matching_constructor	2023-11-29 22:39:53.000000000 +0100
-+++ chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc	2023-12-03 17:31:25.750420227 +0100
-@@ -57,13 +57,13 @@ EmbeddedPermissionPromptPreviouslyGrante
- std::vector<EmbeddedPermissionPromptPreviouslyGrantedView::ButtonConfiguration>
- EmbeddedPermissionPromptPreviouslyGrantedView::GetButtonsConfiguration() const {
-   std::vector<ButtonConfiguration> buttons;
--  buttons.emplace_back(
-+  buttons.emplace_back() = {
-       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_ALLOWING),
--      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal);
-+      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal};
- 
--  buttons.emplace_back(
-+  buttons.emplace_back() = {
-       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_STOP_ALLOWING),
--      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal);
-+      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal};
-   return buttons;
- }
- 
 diff -up chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc.no_matching_constructor chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc
 --- chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc.no_matching_constructor	2023-11-29 22:39:54.000000000 +0100
 +++ chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc	2023-12-03 17:31:25.750420227 +0100
@@ -246,18 +197,6 @@ diff -up chromium-120.0.6099.56/components/autofill/core/browser/webdata/autofil
  
      if (type == ADDRESS_HOME_COUNTRY) {
        country_code = base::UTF16ToUTF8(s.ColumnString16(1));
-diff -up chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc.no_matching_constructor chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc
---- chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc.no_matching_constructor	2023-11-29 22:39:58.000000000 +0100
-+++ chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc	2023-12-03 17:31:25.751420246 +0100
-@@ -630,7 +630,7 @@ void PasswordManager::OnUserModifiedNonP
-   // |driver| might be empty on iOS or in tests.
-   int driver_id = driver ? driver->GetId() : 0;
-   possible_usernames_.Put(
--      PossibleUsernameFieldIdentifier(driver_id, renderer_id),
-+      PossibleUsernameFieldIdentifier{driver_id, renderer_id},
-       PossibleUsernameData(GetSignonRealm(driver->GetLastCommittedURL()),
-                            renderer_id, value, base::Time::Now(), driver_id,
-                            autocomplete_attribute_has_username, is_likely_otp));
 diff -up chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc.no_matching_constructor chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
 --- chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc.no_matching_constructor	2023-11-29 22:40:01.000000000 +0100
 +++ chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc	2023-12-03 17:31:25.751420246 +0100
@@ -300,45 +239,6 @@ diff -up chromium-120.0.6099.56/content/browser/interest_group/interest_group_st
    }
    if (!interest_group_kanon_query.Succeeded()) {
      return absl::nullopt;
-diff -up chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc.no_matching_constructor chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc
---- chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc.no_matching_constructor	2023-11-29 22:40:01.000000000 +0100
-+++ chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc	2023-12-03 20:49:28.059042672 +0100
-@@ -8685,7 +8685,7 @@ void RenderFrameHostImpl::SendFencedFram
-   for (const blink::FencedFrame::ReportingDestination& destination :
-        destinations) {
-     SendFencedFrameReportingBeaconInternal(
--        DestinationEnumEvent(event_type, event_data), destination,
-+        DestinationEnumEvent{event_type, event_data}, destination,
-         /*from_renderer=*/true, attribution_reporting_runtime_features);
-   }
- }
-@@ -8720,7 +8720,7 @@ void RenderFrameHostImpl::SendFencedFram
-   }
- 
-   SendFencedFrameReportingBeaconInternal(
--      DestinationURLEvent(destination_url),
-+      DestinationURLEvent{destination_url},
-       blink::FencedFrame::ReportingDestination::kBuyer,
-       /*from_renderer=*/true, attribution_reporting_runtime_features);
- }
-@@ -8820,7 +8820,7 @@ void RenderFrameHostImpl::MaybeSendFence
-         data = info->data;
-       }
-       initiator_rfh->SendFencedFrameReportingBeaconInternal(
--          AutomaticBeaconEvent(event_type, data), destination,
-+          AutomaticBeaconEvent{event_type, data}, destination,
-           /*from_renderer=*/false, attribution_reporting_features,
-           navigation_request.GetNavigationId());
-     }
-@@ -8832,7 +8832,7 @@ void RenderFrameHostImpl::MaybeSendFence
-     for (blink::FencedFrame::ReportingDestination destination :
-          info->destinations) {
-       initiator_rfh->SendFencedFrameReportingBeaconInternal(
--          AutomaticBeaconEvent(event_type, info->data), destination,
-+          AutomaticBeaconEvent{event_type, info->data}, destination,
-           /*from_renderer=*/false, info->attribution_reporting_runtime_features,
-           navigation_request.GetNavigationId());
-     }
 diff -up chromium-120.0.6099.56/net/dns/host_resolver_cache.cc.no_matching_constructor chromium-120.0.6099.56/net/dns/host_resolver_cache.cc
 --- chromium-120.0.6099.56/net/dns/host_resolver_cache.cc.no_matching_constructor	2023-11-29 22:40:07.000000000 +0100
 +++ chromium-120.0.6099.56/net/dns/host_resolver_cache.cc	2023-12-03 17:31:25.754420303 +0100
@@ -740,3 +640,306 @@ diff -up chromium-120.0.6099.56/ui/gtk/gtk_ui.cc.no_matching_constructor chromiu
    }
    return config;
  }
+diff -up chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.than chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc
+--- chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.than	2023-12-19 17:13:15.116949814 +0100
++++ chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc	2023-12-19 17:27:18.807102716 +0100
+@@ -66,17 +66,17 @@ EmbeddedPermissionPromptPreviouslyDenied
+ std::vector<EmbeddedPermissionPromptPreviouslyDeniedView::ButtonConfiguration>
+ EmbeddedPermissionPromptPreviouslyDeniedView::GetButtonsConfiguration() const {
+   std::vector<ButtonConfiguration> buttons;
+-  buttons.emplace_back(
++  buttons.emplace_back() = {
+       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_NOT_ALLOWING),
+-      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal);
++      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal};
+ 
+   if (base::FeatureList::IsEnabled(permissions::features::kOneTimePermission)) {
+-    buttons.emplace_back(
++    buttons.emplace_back() = {
+         l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME),
+-        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal, kAllowThisTimeId);
++        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal, kAllowThisTimeId};
+   } else {
+-    buttons.emplace_back(l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
+-                         ButtonType::kAllow, ui::ButtonStyle::kTonal);
++    buttons.emplace_back() = {l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
++                         ButtonType::kAllow, ui::ButtonStyle::kTonal};
+   }
+   return buttons;
+ }
+diff -up chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.than chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc
+--- chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.than	2023-12-19 17:39:17.818834020 +0100
++++ chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc	2023-12-19 17:44:15.346337876 +0100
+@@ -61,13 +61,13 @@ EmbeddedPermissionPromptPreviouslyGrante
+ std::vector<EmbeddedPermissionPromptPreviouslyGrantedView::ButtonConfiguration>
+ EmbeddedPermissionPromptPreviouslyGrantedView::GetButtonsConfiguration() const {
+   std::vector<ButtonConfiguration> buttons;
+-  buttons.emplace_back(
++  buttons.emplace_back() = {
+       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_ALLOWING),
+-      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal);
++      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal};
+ 
+-  buttons.emplace_back(
++  buttons.emplace_back() = {
+       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_STOP_ALLOWING),
+-      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal, kStopAllowingId);
++      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal, kStopAllowingId};
+   return buttons;
+ }
+ 
+diff -up chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc.than chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc
+--- chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc.than	2023-12-19 17:39:17.819834039 +0100
++++ chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc	2023-12-19 17:48:33.144389081 +0100
+@@ -666,7 +666,7 @@ void PasswordManager::OnUserModifiedNonP
+     it->second.last_change = base::Time::Now();
+   } else {
+     possible_usernames_.Put(
+-        PossibleUsernameFieldIdentifier(driver_id, renderer_id),
++        PossibleUsernameFieldIdentifier{driver_id, renderer_id},
+         PossibleUsernameData(GetSignonRealm(driver->GetLastCommittedURL()),
+                              renderer_id, value, base::Time::Now(), driver_id,
+                              autocomplete_attribute_has_username,
+diff -up chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc.than chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc
+--- chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc.than	2023-12-19 17:39:17.825834156 +0100
++++ chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc	2023-12-19 17:53:43.153283847 +0100
+@@ -8561,7 +8561,7 @@ void RenderFrameHostImpl::SendFencedFram
+   for (const blink::FencedFrame::ReportingDestination& destination :
+        destinations) {
+     SendFencedFrameReportingBeaconInternal(
+-        DestinationEnumEvent(event_type, event_data), destination,
++        DestinationEnumEvent{event_type, event_data}, destination,
+         attribution_reporting_runtime_features);
+   }
+ }
+@@ -8593,7 +8593,7 @@ void RenderFrameHostImpl::SendFencedFram
+   }
+ 
+   SendFencedFrameReportingBeaconInternal(
+-      DestinationURLEvent(destination_url),
++      DestinationURLEvent{destination_url},
+       blink::FencedFrame::ReportingDestination::kBuyer,
+       attribution_reporting_runtime_features);
+ }
+@@ -8730,7 +8730,7 @@ void RenderFrameHostImpl::MaybeSendFence
+         data = info->data;
+       }
+       initiator_rfh->SendFencedFrameReportingBeaconInternal(
+-          AutomaticBeaconEvent(event_type, data), destination,
++          AutomaticBeaconEvent{event_type, data}, destination,
+           attribution_reporting_features, navigation_request.GetNavigationId());
+     }
+   } else {
+@@ -8741,7 +8741,7 @@ void RenderFrameHostImpl::MaybeSendFence
+     for (blink::FencedFrame::ReportingDestination destination :
+          info->destinations) {
+       initiator_rfh->SendFencedFrameReportingBeaconInternal(
+-          AutomaticBeaconEvent(event_type, info->data), destination,
++          AutomaticBeaconEvent{event_type, info->data}, destination,
+           info->attribution_reporting_runtime_features,
+           navigation_request.GetNavigationId());
+     }
+diff -up chromium-121.0.6167.57/base/nix/mime_util_xdg.cc.me chromium-121.0.6167.57/base/nix/mime_util_xdg.cc
+--- chromium-121.0.6167.57/base/nix/mime_util_xdg.cc.me	2024-01-21 16:54:15.261844448 +0100
++++ chromium-121.0.6167.57/base/nix/mime_util_xdg.cc	2024-01-21 16:55:48.705577424 +0100
+@@ -56,7 +56,7 @@ void LoadAllMimeCacheFiles(MimeTypeMap&
+   for (const auto& path : GetXDGDataSearchLocations(env.get())) {
+     FilePath mime_cache = path.Append("mime/mime.cache");
+     if (GetFileInfo(mime_cache, &info) && ParseMimeTypes(mime_cache, map)) {
+-      files.emplace_back(mime_cache, info.last_modified);
++      files.emplace_back() = {mime_cache, info.last_modified};
+     }
+   }
+ }
+diff -up chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc.me chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc
+--- chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc.me	2024-01-21 18:11:31.397859608 +0100
++++ chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc	2024-01-21 18:20:07.715415037 +0100
+@@ -239,7 +239,7 @@ void WorkerWatcher::OnWorkerCreated(
+   DCHECK(insertion_result.second);
+ 
+   absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [&,
+            this](const content::GlobalRenderFrameHostId& render_frame_host_id) {
+             AddFrameClientConnection(insertion_result.first->second.get(),
+@@ -248,7 +248,7 @@ void WorkerWatcher::OnWorkerCreated(
+           [&, this](blink::DedicatedWorkerToken dedicated_worker_token) {
+             ConnectDedicatedWorkerClient(insertion_result.first->second.get(),
+                                          dedicated_worker_token);
+-          }),
++          }},
+       creator);
+ }
+ 
+@@ -265,7 +265,7 @@ void WorkerWatcher::OnBeforeWorkerDestro
+   // First disconnect the creator's node from this worker node.
+ 
+   absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [&,
+            this](const content::GlobalRenderFrameHostId& render_frame_host_id) {
+             RemoveFrameClientConnection(worker_node.get(),
+@@ -274,7 +274,7 @@ void WorkerWatcher::OnBeforeWorkerDestro
+           [&, this](blink::DedicatedWorkerToken dedicated_worker_token) {
+             DisconnectDedicatedWorkerClient(worker_node.get(),
+                                             dedicated_worker_token);
+-          }),
++          }},
+       creator);
+ 
+   // Disconnect all child workers before destroying the node.
+@@ -446,7 +446,7 @@ void WorkerWatcher::OnControlleeAdded(
+     const std::string& client_uuid,
+     const content::ServiceWorkerClientInfo& client_info) {
+   absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [&, this](content::GlobalRenderFrameHostId render_frame_host_id) {
+             // For window clients, it is necessary to wait until the navigation
+             // has committed to a RenderFrameHost.
+@@ -484,7 +484,7 @@ void WorkerWatcher::OnControlleeAdded(
+               ConnectSharedWorkerClient(service_worker_node,
+                                         shared_worker_token);
+             }
+-          }),
++          }},
+       client_info);
+ }
+ 
+@@ -524,7 +524,7 @@ void WorkerWatcher::OnControlleeRemoved(
+     return;
+ 
+   absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [&, this](content::GlobalRenderFrameHostId render_frame_host_id) {
+             RemoveFrameClientConnection(worker_node, render_frame_host_id);
+           },
+@@ -534,7 +534,7 @@ void WorkerWatcher::OnControlleeRemoved(
+           },
+           [&, this](blink::SharedWorkerToken shared_worker_token) {
+             DisconnectSharedWorkerClient(worker_node, shared_worker_token);
+-          }),
++          }},
+       client);
+ }
+ 
+@@ -810,7 +810,7 @@ void WorkerWatcher::ConnectAllServiceWor
+ 
+   for (const auto& kv : it->second) {
+     absl::visit(
+-        base::Overloaded(
++        base::Overloaded{
+             [&, this](content::GlobalRenderFrameHostId render_frame_host_id) {
+               AddFrameClientConnection(service_worker_node,
+                                        render_frame_host_id);
+@@ -822,7 +822,7 @@ void WorkerWatcher::ConnectAllServiceWor
+             [&, this](blink::SharedWorkerToken shared_worker_token) {
+               ConnectSharedWorkerClient(service_worker_node,
+                                         shared_worker_token);
+-            }),
++            }},
+         kv.second);
+   }
+ }
+@@ -837,7 +837,7 @@ void WorkerWatcher::DisconnectAllService
+ 
+   for (const auto& kv : it->second) {
+     absl::visit(
+-        base::Overloaded(
++        base::Overloaded{
+             [&, this](
+                 const content::GlobalRenderFrameHostId& render_frame_host_id) {
+               RemoveFrameClientConnection(service_worker_node,
+@@ -851,7 +851,7 @@ void WorkerWatcher::DisconnectAllService
+             [&, this](const blink::SharedWorkerToken& shared_worker_token) {
+               DisconnectSharedWorkerClient(service_worker_node,
+                                            shared_worker_token);
+-            }),
++            }},
+         kv.second);
+   }
+ }
+diff -up chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc.me chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc
+--- chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc.me	2024-01-21 18:40:52.284389286 +0100
++++ chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc	2024-01-21 18:41:17.276840222 +0100
+@@ -764,7 +764,7 @@ FirstPartySetParser::ParseSetsFromEnterp
+                      context.GetPolicySetsFromList(
+                          policy.FindList(kFirstPartySetPolicyAdditionsField),
+                          PolicySetType::kAddition));
+-    return ParsedPolicySetLists(std::move(replacements), std::move(additions));
++    return ParsedPolicySetLists{std::move(replacements), std::move(additions)};
+   }();
+ 
+   context.PostProcessSetLists(set_lists);
+diff -up chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h.me chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h
+--- chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h.me	2024-01-21 19:30:00.536387844 +0100
++++ chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h	2024-01-21 20:29:50.236287514 +0100
+@@ -133,6 +133,7 @@ class CONTENT_EXPORT HeaderDirectFromSel
+ 
+     // The Ad-Auction-Signals response served by `origin`.
+     std::string response_json;
++    UnprocessedResponse(auto u, auto s) : origin(u), response_json(s) { }
+   };
+ 
+   // Information from ParseAndFind() calls used by ParseAndFindCompleted.
+diff -up chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc.me chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc
+--- chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc.me	2024-01-21 21:58:48.773366301 +0100
++++ chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc	2024-01-21 22:02:17.956086167 +0100
+@@ -360,10 +360,10 @@ ServiceWorkerMainResourceLoaderIntercept
+   }
+   auto* storage_partition = process->GetStoragePartition();
+ 
+-  return absl::visit(base::Overloaded([&, this](auto token) {
++  return absl::visit(base::Overloaded{[&, this](auto token) {
+                        return GetStorageKeyFromWorkerHost(storage_partition,
+                                                           token, origin);
+-                     }),
++                     }},
+                      *worker_token_);
+ }
+ 
+diff -up chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc.me chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc
+--- chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc.me	2024-01-21 22:04:30.446454697 +0100
++++ chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc	2024-01-21 22:05:22.847391481 +0100
+@@ -870,7 +870,7 @@ ServiceWorkerContainerHost::GetClientTyp
+   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+   DCHECK(client_info_);
+   return absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [](GlobalRenderFrameHostId render_frame_host_id) {
+             return blink::mojom::ServiceWorkerClientType::kWindow;
+           },
+@@ -879,7 +879,7 @@ ServiceWorkerContainerHost::GetClientTyp
+           },
+           [](blink::SharedWorkerToken shared_worker_token) {
+             return blink::mojom::ServiceWorkerClientType::kSharedWorker;
+-          }),
++          }},
+       *client_info_);
+ }
+ 
+diff -up chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc.me chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc
+--- chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc.me	2024-01-21 22:37:00.969416148 +0100
++++ chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc	2024-01-21 22:38:07.754528335 +0100
+@@ -251,7 +251,7 @@ void DedicatedWorkerHost::StartScriptLoa
+   RenderFrameHostImpl* creator_render_frame_host = nullptr;
+   DedicatedWorkerHost* creator_worker = nullptr;
+ 
+-  absl::visit(base::Overloaded(
++  absl::visit(base::Overloaded{
+                   [&](const GlobalRenderFrameHostId& render_frame_host_id) {
+                     creator_render_frame_host =
+                         RenderFrameHostImpl::FromID(render_frame_host_id);
+@@ -259,7 +259,7 @@ void DedicatedWorkerHost::StartScriptLoa
+                   [&](blink::DedicatedWorkerToken dedicated_worker_token) {
+                     creator_worker = service_->GetDedicatedWorkerHostFromToken(
+                         dedicated_worker_token);
+-                  }),
++                  }},
+               creator_);
+ 
+   if (!creator_render_frame_host && !creator_worker) {
diff --git a/srcpkgs/chromium/patches/chromium-121-nullptr_t-without-namespace-std.patch b/srcpkgs/chromium/patches/chromium-121-nullptr_t-without-namespace-std.patch
new file mode 100644
index 0000000000000..3defc393c084f
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-nullptr_t-without-namespace-std.patch
@@ -0,0 +1,12 @@
+diff -up chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h.than chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h
+--- chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h.than	2023-12-04 10:20:45.350540897 +0100
++++ chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h	2023-12-04 10:23:17.335339670 +0100
+@@ -21,7 +21,7 @@ class FragmentDataIteratorBase {
+ 
+  public:
+   explicit FragmentDataIteratorBase(Head& head) : fragment_head_(head) {}
+-  explicit FragmentDataIteratorBase(nullptr_t) {}
++  explicit FragmentDataIteratorBase(std::nullptr_t) {}
+ 
+   Data* GetFragmentData() const {
+     return !IsDone() ? &fragment_head_.at(idx_) : nullptr;
diff --git a/srcpkgs/chromium/patches/chromium-121-python3-invalid-escape-sequence.patch b/srcpkgs/chromium/patches/chromium-121-python3-invalid-escape-sequence.patch
new file mode 100644
index 0000000000000..c2bf5b489f7a1
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-python3-invalid-escape-sequence.patch
@@ -0,0 +1,77 @@
+diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py
+--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py.me	2024-01-15 20:48:28.177397102 +0100
++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py	2024-01-15 20:48:46.427768328 +0100
+@@ -18,7 +18,7 @@ class HTMLGenerationController(object):
+ 
+   def GetHTMLForInlineStylesheet(self, contents):
+     if self.current_module is None:
+-      if re.search('url\(.+\)', contents):
++      if re.search(r'url\(.+\)', contents):
+         raise Exception(
+             'Default HTMLGenerationController cannot handle inline style urls')
+       return contents
+diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py
+--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py.me	2024-01-15 20:49:39.363845083 +0100
++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py	2024-01-15 20:49:57.407212098 +0100
+@@ -4,4 +4,4 @@
+ 
+ 
+ def EscapeJSIfNeeded(js):
+-  return js.replace('</script>', '<\/script>')
++  return js.replace(r'</script>', r'<\/script>')
+diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py
+--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py.me	2024-01-15 20:50:11.819505254 +0100
++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py	2024-01-15 20:50:38.611050213 +0100
+@@ -293,6 +293,6 @@ class HTMLModuleParser():
+       html = ''
+     else:
+       if html.find('< /script>') != -1:
+-        raise Exception('Escape script tags with <\/script>')
++        raise Exception(r'Escape script tags with <\/script>')
+ 
+     return HTMLModuleParserResults(html)
+diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py
+--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py.me	2024-01-15 20:48:59.917042709 +0100
++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py	2024-01-15 20:49:24.402540761 +0100
+@@ -60,7 +60,7 @@ class ParsedStyleSheet(object):
+       return 'url(data:image/%s;base64,%s)' % (ext[1:], data.decode('utf-8'))
+ 
+     # I'm assuming we only have url()'s associated with images
+-    return re.sub('url\((?P<quote>"|\'|)(?P<url>[^"\'()]*)(?P=quote)\)',
++    return re.sub(r'url\((?P<quote>"|\'|)(?P<url>[^"\'()]*)(?P=quote)\)',
+                   InlineUrl, self.contents)
+ 
+   def AppendDirectlyDependentFilenamesTo(self, dependent_filenames):
+@@ -72,7 +72,7 @@ class ParsedStyleSheet(object):
+       raise Exception('@imports are not supported')
+ 
+     matches = re.findall(
+-        'url\((?:["|\']?)([^"\'()]*)(?:["|\']?)\)',
++        r'url\((?:["|\']?)([^"\'()]*)(?:["|\']?)\)',
+         self.contents)
+ 
+     def resolve_url(url):
+diff -up chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py.me chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py
+--- chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py.me	2024-01-15 20:50:56.810420400 +0100
++++ chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py	2024-01-15 20:52:33.506387261 +0100
+@@ -28,7 +28,7 @@ import platform
+ import sys
+ 
+ def glob_slash(dirname):
+-    """Like regular glob but replaces \ with / in returned paths."""
++    """Like regular glob but replaces \\ with / in returned paths."""
+     return [s.replace('\\', '/') for s in glob.glob(dirname)]
+ 
+ def main():
+diff -up chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py.me chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py
+--- chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py.me	2024-01-15 20:52:38.016479000 +0100
++++ chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py	2024-01-15 20:52:48.863699640 +0100
+@@ -28,7 +28,7 @@ import platform
+ import sys
+ 
+ def glob_slash(dirname):
+-    """Like regular glob but replaces \ with / in returned paths."""
++    """Like regular glob but replaces \\ with / in returned paths."""
+     return [s.replace('\\', '/') for s in glob.glob(dirname)]
+ 
+ def main():
diff --git a/srcpkgs/chromium/patches/chromium-121-rust-clang_lib.patch b/srcpkgs/chromium/patches/chromium-121-rust-clang_lib.patch
new file mode 100644
index 0000000000000..4014f9a827648
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-rust-clang_lib.patch
@@ -0,0 +1,22 @@
+--- a/build/config/clang/BUILD.gn
++++ b/build/config/clang/BUILD.gn
+@@ -128,14 +128,15 @@
+       } else if (is_apple) {
+         _dir = "darwin"
+       } else if (is_linux || is_chromeos) {
++        _dir = "linux"
+         if (current_cpu == "x64") {
+-          _dir = "x86_64-unknown-linux-gnu"
++          _suffix = "-x86_64"
+         } else if (current_cpu == "x86") {
+-          _dir = "i386-unknown-linux-gnu"
++          _suffix = "-i386"
+         } else if (current_cpu == "arm") {
+-          _dir = "armv7-unknown-linux-gnueabihf"
++          _suffix = "-armhf"
+         } else if (current_cpu == "arm64") {
+-          _dir = "aarch64-unknown-linux-gnu"
++          _suffix = "-aarch64"
+         } else {
+           assert(false)  # Unhandled cpu type
+         }
diff --git a/srcpkgs/chromium/patches/chromium-121-rust-without-profiler_builtins.patch b/srcpkgs/chromium/patches/chromium-121-rust-without-profiler_builtins.patch
new file mode 100644
index 0000000000000..25c3422982933
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-rust-without-profiler_builtins.patch
@@ -0,0 +1,10 @@
+--- a/build/rust/std/BUILD.gn
++++ b/build/rust/std/BUILD.gn
+@@ -100,7 +100,6 @@
+   # don't need to pass to the C++ linker because they're used for specialized
+   # purposes.
+   skip_stdlib_files = [
+-    "profiler_builtins",
+     "rustc_std_workspace_alloc",
+     "rustc_std_workspace_core",
+     "rustc_std_workspace_std",
diff --git a/srcpkgs/chromium/patches/chromium-120-typename.patch b/srcpkgs/chromium/patches/chromium-121-typename.patch
similarity index 78%
rename from srcpkgs/chromium/patches/chromium-120-typename.patch
rename to srcpkgs/chromium/patches/chromium-121-typename.patch
index 9a2d878b12b54..e83e62c60a54e 100644
--- a/srcpkgs/chromium/patches/chromium-120-typename.patch
+++ b/srcpkgs/chromium/patches/chromium-121-typename.patch
@@ -203,3 +203,57 @@ diff -up chromium-120.0.6099.56/third_party/blink/renderer/bindings/core/v8/asyn
        ExceptionState& exception_state) = 0;
  };
  
+diff -up chromium-121.0.6167.57/base/functional/bind_internal.h.me chromium-121.0.6167.57/base/functional/bind_internal.h
+--- chromium-121.0.6167.57/base/functional/bind_internal.h.me	2024-01-21 16:10:09.809037581 +0100
++++ chromium-121.0.6167.57/base/functional/bind_internal.h	2024-01-21 16:46:33.759397303 +0100
+@@ -1533,11 +1533,11 @@ template <int i,
+           typename Param>
+ struct ParamCanBeBound {
+  private:
+-  using UnwrappedParam = BindArgument<i>::template ForwardedAs<
++  using UnwrappedParam = typename BindArgument<i>::template ForwardedAs<
+       Unwrapped>::template ToParamWithType<Param>;
+-  using ParamStorage = BindArgument<i>::template ToParamWithType<
++  using ParamStorage = typename BindArgument<i>::template ToParamWithType<
+       Param>::template StoredAs<Storage>;
+-  using BoundStorage =
++  using BoundStorage = typename
+       BindArgument<i>::template BoundAs<Arg>::template StoredAs<Storage>;
+ 
+   // We forbid callbacks from using raw_ptr as a parameter. However, we allow
+diff -up chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h.me chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h
+--- chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h.me	2024-01-21 17:23:37.786606428 +0100
++++ chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h	2024-01-21 17:23:58.582127103 +0100
+@@ -90,7 +90,7 @@ template <typename Container>
+     { c[i] } -> std::same_as<typename Container::reference>;
+   }
+ struct ArrayTraits<Container> {
+-  using Element = Container::value_type;
++  using Element = typename Container::value_type;
+ 
+   // vector-like containers have no built-in null.
+   static bool IsNull(const Container& c) { return false; }
+diff -up chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h.me chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h
+--- chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h.me	2024-01-21 17:33:40.030897838 +0100
++++ chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h	2024-01-21 17:34:11.518705266 +0100
+@@ -25,7 +25,7 @@ void SetExecutionRequestTemplate(
+ 
+   // Request is set by the feature and should always be typed.
+   auto typed_request =
+-      static_cast<const FeatureType::Request&>(request_metadata);
++      static_cast<const typename FeatureType::Request&>(request_metadata);
+   *(logging_data->mutable_request_data()) = typed_request;
+ }
+ 
+diff -up chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h.me chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h
+--- chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h.me	2024-01-21 17:32:42.367417619 +0100
++++ chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h	2024-01-21 17:33:25.732531198 +0100
+@@ -29,7 +29,7 @@ class ModelQualityLogEntry {
+   }
+ 
+   template <typename FeatureType>
+-  FeatureType::Quality* quality_data() {
++  typename FeatureType::Quality* quality_data() {
+     return FeatureType::GetLoggingData(*log_ai_data_request_)
+         ->mutable_quality_data();
+   }
diff --git a/srcpkgs/chromium/patches/chromium-120-workaround_clang_bug-structured_binding.patch b/srcpkgs/chromium/patches/chromium-121-workaround_clang_bug-structured_binding.patch
similarity index 75%
rename from srcpkgs/chromium/patches/chromium-120-workaround_clang_bug-structured_binding.patch
rename to srcpkgs/chromium/patches/chromium-121-workaround_clang_bug-structured_binding.patch
index b06e29f29047a..192b0692fbf73 100644
--- a/srcpkgs/chromium/patches/chromium-120-workaround_clang_bug-structured_binding.patch
+++ b/srcpkgs/chromium/patches/chromium-121-workaround_clang_bug-structured_binding.patch
@@ -25,27 +25,29 @@ diff -up chromium-115.0.5790.32/content/browser/service_worker/service_worker_co
  
    DCHECK(document_url.is_valid());
    TRACE_EVENT1("ServiceWorker",
-diff -up chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.me chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc
---- chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.me	2023-12-03 22:17:50.922083200 +0100
-+++ chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc	2023-12-03 22:22:55.437484343 +0100
-@@ -3447,7 +3447,8 @@ void GridLayoutAlgorithm::PlaceGridItems
+diff -up chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.than chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc
+--- chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.than	2023-12-19 17:57:56.205197246 +0100
++++ chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc	2023-12-19 18:10:13.778634531 +0100
+@@ -3527,8 +3527,8 @@ void GridLayoutAlgorithm::PlaceGridItems
    DCHECK(out_row_break_between);
  
-   const auto& container_space = ConstraintSpace();
+   const auto& container_space = GetConstraintSpace();
 -  const auto& [grid_items, layout_data, tree_size] = sizing_tree.TreeRootData();
+-
 +  const auto& [grid_items, l_d, tree_size] = sizing_tree.TreeRootData();
 +  const auto& layout_data = l_d;
- 
    const auto* cached_layout_subtree = container_space.GetGridLayoutSubtree();
    const auto container_writing_direction =
-@@ -3611,7 +3612,9 @@ void GridLayoutAlgorithm::PlaceGridItems
+       container_space.GetWritingDirection();
+@@ -3691,8 +3691,9 @@ void GridLayoutAlgorithm::PlaceGridItems
  
    // TODO(ikilpatrick): Update |SetHasSeenAllChildren| and early exit if true.
-   const auto& constraint_space = ConstraintSpace();
+   const auto& constraint_space = GetConstraintSpace();
 -  const auto& [grid_items, layout_data, tree_size] = sizing_tree.TreeRootData();
+-
 +  const auto& [g_i, l_d, tree_size] = sizing_tree.TreeRootData();
 +  const auto& grid_items = g_i;
 +  const auto& layout_data = l_d;
- 
    const auto* cached_layout_subtree = constraint_space.GetGridLayoutSubtree();
    const auto container_writing_direction =
+       constraint_space.GetWritingDirection();
diff --git a/srcpkgs/chromium/patches/gcc13-wnoerror.patch b/srcpkgs/chromium/patches/gcc13-wnoerror.patch
deleted file mode 100644
index c069aa41b2d09..0000000000000
--- a/srcpkgs/chromium/patches/gcc13-wnoerror.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-https://gn.googlesource.com/gn/+/c7b223bfb225ce87a72a244d016ffdfcf227fa5e%5E%21/
-Ignore build warning -Werror=redundant-move
-
-gcc-13 complains with:
-error: redundant move in return statement [-Werror=redundant-move]
-
-We cannot fix the code, because both old versions of gcc and the windows
-toolchain fails to build.
-index adb622a..232e536 100755
---- a/tools/gn/build/gen.py
-+++ b/tools/gn/build/gen.py
-
-@@ -472,6 +472,8 @@
-     # flags not supported by gcc/g++.
-     if cxx == 'clang++':
-       cflags.extend(['-Wrange-loop-analysis', '-Wextra-semi-stmt'])
-+    else:
-+      cflags.append('-Wno-redundant-move')
- 
-     if platform.is_linux() or platform.is_mingw() or platform.is_msys():
-       ldflags.append('-Wl,--as-needed')
diff --git a/srcpkgs/chromium/patches/unbundle-ffmpeg-av_stream_get_first_dts.patch b/srcpkgs/chromium/patches/unbundle-ffmpeg-av_stream_get_first_dts.patch
deleted file mode 100644
index dae1adde0bc66..0000000000000
--- a/srcpkgs/chromium/patches/unbundle-ffmpeg-av_stream_get_first_dts.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/build/linux/unbundle/ffmpeg.gn b/build/linux/unbundle/ffmpeg.gn
-index 16e20744706..6a079b32221 100644
---- a/build/linux/unbundle/ffmpeg.gn
-+++ b/build/linux/unbundle/ffmpeg.gn
-@@ -12,6 +12,7 @@ pkg_config("system_ffmpeg") {
-     "libavformat",
-     "libavutil",
-   ]
-+  defines = [ "av_stream_get_first_dts(stream)=stream->first_dts" ]
- }
- 
- buildflag_header("ffmpeg_features") {
diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template
index 5613fa3813822..995c194d17f6b 100644
--- a/srcpkgs/chromium/template
+++ b/srcpkgs/chromium/template
@@ -1,15 +1,15 @@
 # Template file for 'chromium'
 pkgname=chromium
 # See https://chromiumdash.appspot.com/releases?platform=Linux for the latest version
-version=120.0.6099.129
+version=121.0.6167.160
 revision=1
 archs="i686* x86_64* aarch64* armv7l*"
 hostmakedepends="
- $(vopt_if clang "clang lld llvm15")
+ $(vopt_if clang "clang17 lld17 llvm15")
  bison git gperf hwids ninja nodejs perl pkg-config python3
- libepoxy-devel libevent-devel libglib-devel"
+ libepoxy-devel libevent-devel libglib-devel rust"
 makedepends="
- alsa-lib-devel libdav1d-devel brotli-devel cups-devel elfutils-devel ffmpeg-devel
+ alsa-lib-devel libdav1d-devel brotli-devel cups-devel elfutils-devel
  fontconfig-devel freetype-devel gtk+3-devel libXScrnSaver-devel
  libXcomposite-devel libXcursor-devel libXdamage-devel libXi-devel libXrandr-devel
  libavif-devel libcap-devel libcurl-devel libdrm-devel libevent-devel
@@ -18,6 +18,7 @@ makedepends="
  libxslt-devel minizip-devel mit-krb5-devel nss-devel opus-devel
  pciutils-devel snappy-devel speech-dispatcher-devel speex-devel
  xcb-proto zlib-devel libaom-devel libffi-devel libevdev-devel
+ compiler-rt
  $(vopt_if pipewire pipewire-devel)
  $(vopt_if pulseaudio pulseaudio-devel)
  $(vopt_if sndio sndio-devel)"
@@ -27,7 +28,7 @@ maintainer="Duncaen <duncaen@voidlinux.org>"
 license="BSD-3-Clause"
 homepage="https://www.chromium.org/"
 distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz"
-checksum=be36d5abecfafdc68d9b27b0bee65136316610a295e844b99483a7520b245f85
+checksum=4586673899383d30e9d95fa3a9c5f8160f32a9d5789e40be82abf3e4dd9cc3df
 
 lib32disabled=yes
 
@@ -50,7 +51,7 @@ if [ "$CROSS_BUILD" ]; then
 	hostmakedepends+=" libX11-devel libxcb-devel pciutils-devel libXext-devel libglvnd-devel
 	 libjpeg-turbo-devel libXi-devel nss-devel libpng-devel libwebp-devel
 	 libxml2-devel $(vopt_if pulseaudio pulseaudio-devel) libxslt-devel libxkbcommon-devel
-	 $(vopt_if pipewire pipewire-devel) ffmpeg-devel opus-devel pango-devel libva-devel
+	 $(vopt_if pipewire pipewire-devel) opus-devel pango-devel libva-devel
 	 libcurl-devel snappy-devel libXrandr-devel libXcomposite-devel cups-devel
 	 mit-krb5-devel alsa-lib-devel libXdamage-devel libepoxy-devel libevdev-devel
 	 libavif-devel libaom-devel libdav1d-devel libflac-devel
@@ -133,7 +134,7 @@ _setup_toolchain() {
 }
 
 do_configure() {
-	local system="" conf=()
+	local system=() conf=()
 
 	# compile gn early, so it can be used to generate gni stuff
 	AR="ar" CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD LD=$CXX_FOR_BUILD \
@@ -153,8 +154,9 @@ do_configure() {
 	# XXX: harfbuzz-ng use builtin one until system-wide is updated >=3.0.0
 	# libcxx https://github.com/llvm/llvm-project/issues/61705:
 	# snappy
-	system="
-		ffmpeg
+	# ffmpeg: system ffmpeg is too old and makes the ffmpeg update not require
+	#  rebuilding chromium
+	system=(
 		flac
 		fontconfig
 		freetype
@@ -166,12 +168,12 @@ do_configure() {
 		libxml
 		libxslt
 		opus
-	"
+	)
 
 	# remove build scripts for system provided dependencies - basically does the
 	# same as the bundeled script to remove bundeled libs, but this way we don't
 	# have to list the remaining libs
-	for LIB in ${system} libjpeg_turbo; do
+	for LIB in "${system[@]}" libjpeg_turbo; do
 		find "third_party/$LIB" -type f \
 			\! -path "third_party/$LIB/chromium/*" \
 			\! -path "third_party/$LIB/google/*" \
@@ -182,13 +184,13 @@ do_configure() {
 	done
 
 	# switch to system provided dependencies
-	build/linux/unbundle/replace_gn_files.py --system-libraries ${system}
+	build/linux/unbundle/replace_gn_files.py --system-libraries "${system[@]}"
 
 	third_party/libaddressinput/chromium/tools/update-strings.py
 
+	local clang_version="$(clang -dumpversion)"
 	conf=(
 		'enable_nacl=false'
-		'enable_rust=false'
 
 		'use_sysroot=false'
 
@@ -198,12 +200,15 @@ do_configure() {
 		"use_lld=$(vopt_if clang true false)"
 		'clang_use_chrome_plugins=false'
 		'clang_base_path="/usr"'
+		"clang_version=\"${clang_version%%.*}\""
 
 		"gold_path=\"${XBPS_CROSS_BASE}/usr/bin/ld.gold\""
 		"use_custom_libcxx=$(vopt_if libcxx true false)" # https://github.com/llvm/llvm-project/issues/61705
 		'use_gold=false'
 
+		'enable_rust=true'
 		'rust_sysroot_absolute="/usr"'
+		"rustc_version=\"$(rustc --version)\""
 
 		# is_debug makes the build a debug build, changes some things.
 		# might be useful for real debugging vs just debug symbols.
@@ -293,6 +298,9 @@ do_configure() {
 }
 
 do_build() {
+	# XXX: need for error: the option `Z` is only accepted on the nightly compiler
+	export RUSTC_BOOTSTRAP=1
+
 	_setup_toolchain
 	CCACHE_SLOPPINESS=include_file_mtime ninja -C out/Release ${makejobs} chrome chromedriver.unstripped chrome_crashpad_handler
 }

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PR PATCH] [Updated] chromium: update to 121.0.6167.85.
  2024-01-25 15:39 [PR PATCH] chromium: update to 121.0.6167.85 Duncaen
  2024-02-10 23:38 ` [PR PATCH] [Updated] " Duncaen
@ 2024-02-11  1:46 ` Duncaen
  2024-02-12  0:49 ` Duncaen
  2024-02-12  0:50 ` [PR PATCH] [Closed]: " Duncaen
  3 siblings, 0 replies; 5+ messages in thread
From: Duncaen @ 2024-02-11  1:46 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 411 bytes --]

There is an updated pull request by Duncaen against master on the void-packages repository

https://github.com/Duncaen/void-packages chromium-121
https://github.com/void-linux/void-packages/pull/48367

chromium: update to 121.0.6167.85.
[ci skip]

* [ ] x86_64-glibc
* [ ] x86_64-musl
* [ ] aarch64-musl
* [ ] i686

A patch file from https://github.com/void-linux/void-packages/pull/48367.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-chromium-121-48367.patch --]
[-- Type: text/x-diff, Size: 134677 bytes --]

From a9894c9e3bd8e2cbbcf37c6610b0023d183bbb80 Mon Sep 17 00:00:00 2001
From: Duncaen <duncaen@voidlinux.org>
Date: Thu, 25 Jan 2024 16:07:07 +0100
Subject: [PATCH] chromium: update to 121.0.6167.85.

---
 ...ERT-roll-src-third_party-ffmpeg-m102.patch | 333 -------------
 ...oll-src-third_party-ffmpeg-m102.patch.args |   1 -
 ...ERT-roll-src-third_party-ffmpeg-m106.patch |  55 ---
 ...oll-src-third_party-ffmpeg-m106.patch.args |   1 -
 .../patches/chromium-119-ffmpeg-4.4.patch     |  20 -
 .../chromium-120-arm64-memory_tagging.patch   |  14 -
 ...romium-120-el7-clang-version-warning.patch |  16 -
 .../chromium-120-gn-workaround-atspi.patch    |  13 -
 .../chromium-120-missing-header-files.patch   | 459 ------------------
 .../chromium-121-arm64-memory_tagging.patch   |  13 +
 .../patches/chromium-121-constexpr.patch      |  12 +
 ...romium-121-el7-clang-version-warning.patch |  15 +
 ...onstructor-involving-anonymous-union.patch |  12 +
 .../chromium-121-missing-header-files.patch   | 459 ++++++++++++++++++
 .../patches/chromium-121-mnemonic-error.patch |  12 +
 ...hromium-121-no_matching_constructor.patch} | 407 ++++++++++++----
 ...-121-nullptr_t-without-namespace-std.patch |  12 +
 ...-121-python3-invalid-escape-sequence.patch |  77 +++
 .../patches/chromium-121-rust-clang_lib.patch |  22 +
 ...m-121-rust-without-profiler_builtins.patch |  10 +
 .../patches/chromium-121-system-libxml.patch  |  24 +
 ...name.patch => chromium-121-typename.patch} |  54 +++
 ...around_clang_bug-structured_binding.patch} |  20 +-
 srcpkgs/chromium/patches/gcc13-wnoerror.patch |  21 -
 ...undle-ffmpeg-av_stream_get_first_dts.patch |  12 -
 srcpkgs/chromium/template                     |  34 +-
 26 files changed, 1059 insertions(+), 1069 deletions(-)
 delete mode 100644 srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch
 delete mode 100644 srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch.args
 delete mode 100644 srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch
 delete mode 100644 srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch.args
 delete mode 100644 srcpkgs/chromium/patches/chromium-119-ffmpeg-4.4.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-120-missing-header-files.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-arm64-memory_tagging.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-constexpr.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-el7-clang-version-warning.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-el7-default-constructor-involving-anonymous-union.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-missing-header-files.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-mnemonic-error.patch
 rename srcpkgs/chromium/patches/{chromium-120-no_matching_constructor.patch => chromium-121-no_matching_constructor.patch} (75%)
 create mode 100644 srcpkgs/chromium/patches/chromium-121-nullptr_t-without-namespace-std.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-python3-invalid-escape-sequence.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-rust-clang_lib.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-rust-without-profiler_builtins.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-system-libxml.patch
 rename srcpkgs/chromium/patches/{chromium-120-typename.patch => chromium-121-typename.patch} (78%)
 rename srcpkgs/chromium/patches/{chromium-120-workaround_clang_bug-structured_binding.patch => chromium-121-workaround_clang_bug-structured_binding.patch} (75%)
 delete mode 100644 srcpkgs/chromium/patches/gcc13-wnoerror.patch
 delete mode 100644 srcpkgs/chromium/patches/unbundle-ffmpeg-av_stream_get_first_dts.patch

diff --git a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch b/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch
deleted file mode 100644
index e739b40a2733c..0000000000000
--- a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch
+++ /dev/null
@@ -1,333 +0,0 @@
-From 6e554a30893150793c2638e3689cf208ffc8e375 Mon Sep 17 00:00:00 2001
-From: Dale Curtis <dalecurtis@chromium.org>
-Date: Sat, 2 Apr 2022 05:13:53 +0000
-Subject: [PATCH] Roll src/third_party/ffmpeg/ 574c39cce..32b2d1d526 (1125
- commits)
-
-https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/574c39cce323..32b2d1d526
-
-Created with:
-  roll-dep src/third_party/ffmpeg
-
-Fixed: 1293918
-Cq-Include-Trybots: luci.chromium.try:mac_chromium_asan_rel_ng,linux_chromium_asan_rel_ng,linux_chromium_chromeos_asan_rel_ng
-Change-Id: I41945d0f963e3d1f65940067bac22f63b68e37d2
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3565647
-Auto-Submit: Dale Curtis <dalecurtis@chromium.org>
-Reviewed-by: Dan Sanders <sandersd@chromium.org>
-Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#988253}
----
- .../clear_key_cdm/ffmpeg_cdm_audio_decoder.cc | 29 ++++++++++---------
- media/ffmpeg/ffmpeg_common.cc                 | 11 +++----
- media/filters/audio_file_reader.cc            |  9 +++---
- media/filters/audio_file_reader_unittest.cc   |  6 ++--
- .../filters/audio_video_metadata_extractor.cc | 11 +++++--
- .../filters/ffmpeg_aac_bitstream_converter.cc |  7 +++--
- ...ffmpeg_aac_bitstream_converter_unittest.cc |  2 +-
- media/filters/ffmpeg_audio_decoder.cc         | 13 +++++----
- 8 files changed, 51 insertions(+), 37 deletions(-)
-
-diff --git a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
-index e4fc3f460e2..9b1ad9f7675 100644
---- a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
-+++ b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
-@@ -74,7 +74,7 @@ void CdmAudioDecoderConfigToAVCodecContext(
-       codec_context->sample_fmt = AV_SAMPLE_FMT_NONE;
-   }
- 
--  codec_context->channels = config.channel_count;
-+  codec_context->ch_layout.nb_channels = config.channel_count;
-   codec_context->sample_rate = config.samples_per_second;
- 
-   if (config.extra_data) {
-@@ -124,8 +124,8 @@ void CopySamples(cdm::AudioFormat cdm_format,
-     case cdm::kAudioFormatPlanarS16:
-     case cdm::kAudioFormatPlanarF32: {
-       const int decoded_size_per_channel =
--          decoded_audio_size / av_frame.channels;
--      for (int i = 0; i < av_frame.channels; ++i) {
-+          decoded_audio_size / av_frame.ch_layout.nb_channels;
-+      for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) {
-         memcpy(output_buffer, av_frame.extended_data[i],
-                decoded_size_per_channel);
-         output_buffer += decoded_size_per_channel;
-@@ -185,13 +185,14 @@ bool FFmpegCdmAudioDecoder::Initialize(
-   // Success!
-   decoding_loop_ = std::make_unique<FFmpegDecodingLoop>(codec_context_.get());
-   samples_per_second_ = config.samples_per_second;
--  bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8;
-+  bytes_per_frame_ =
-+      codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8;
-   output_timestamp_helper_ =
-       std::make_unique<AudioTimestampHelper>(config.samples_per_second);
-   is_initialized_ = true;
- 
-   // Store initial values to guard against midstream configuration changes.
--  channels_ = codec_context_->channels;
-+  channels_ = codec_context_->ch_layout.nb_channels;
-   av_sample_format_ = codec_context_->sample_fmt;
- 
-   return true;
-@@ -291,17 +292,19 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer(
-   for (auto& frame : audio_frames) {
-     int decoded_audio_size = 0;
-     if (frame->sample_rate != samples_per_second_ ||
--        frame->channels != channels_ || frame->format != av_sample_format_) {
-+        frame->ch_layout.nb_channels != channels_ ||
-+        frame->format != av_sample_format_) {
-       DLOG(ERROR) << "Unsupported midstream configuration change!"
-                   << " Sample Rate: " << frame->sample_rate << " vs "
--                  << samples_per_second_ << ", Channels: " << frame->channels
--                  << " vs " << channels_ << ", Sample Format: " << frame->format
--                  << " vs " << av_sample_format_;
-+                  << samples_per_second_
-+                  << ", Channels: " << frame->ch_layout.nb_channels << " vs "
-+                  << channels_ << ", Sample Format: " << frame->format << " vs "
-+                  << av_sample_format_;
-       return cdm::kDecodeError;
-     }
- 
-     decoded_audio_size = av_samples_get_buffer_size(
--        nullptr, codec_context_->channels, frame->nb_samples,
-+        nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
-         codec_context_->sample_fmt, 1);
-     if (!decoded_audio_size)
-       continue;
-@@ -320,9 +323,9 @@ bool FFmpegCdmAudioDecoder::OnNewFrame(
-     size_t* total_size,
-     std::vector<std::unique_ptr<AVFrame, ScopedPtrAVFreeFrame>>* audio_frames,
-     AVFrame* frame) {
--  *total_size += av_samples_get_buffer_size(nullptr, codec_context_->channels,
--                                            frame->nb_samples,
--                                            codec_context_->sample_fmt, 1);
-+  *total_size += av_samples_get_buffer_size(
-+      nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
-+      codec_context_->sample_fmt, 1);
-   audio_frames->emplace_back(av_frame_clone(frame));
-   return true;
- }
-diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc
-index 87ca8969626..76f03d6608e 100644
---- a/media/ffmpeg/ffmpeg_common.cc
-+++ b/media/ffmpeg/ffmpeg_common.cc
-@@ -345,10 +345,11 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
-       codec_context->sample_fmt, codec_context->codec_id);
- 
-   ChannelLayout channel_layout =
--      codec_context->channels > 8
-+      codec_context->ch_layout.nb_channels > 8
-           ? CHANNEL_LAYOUT_DISCRETE
--          : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout,
--                                               codec_context->channels);
-+          : ChannelLayoutToChromeChannelLayout(
-+                codec_context->ch_layout.u.mask,
-+                codec_context->ch_layout.nb_channels);
- 
-   int sample_rate = codec_context->sample_rate;
-   switch (codec) {
-@@ -401,7 +402,7 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
-                      extra_data, encryption_scheme, seek_preroll,
-                      codec_context->delay);
-   if (channel_layout == CHANNEL_LAYOUT_DISCRETE)
--    config->SetChannelsForDiscrete(codec_context->channels);
-+    config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels);
- 
- #if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO)
-   // These are bitstream formats unknown to ffmpeg, so they don't have
-@@ -470,7 +471,7 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config,
- 
-   // TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses
-   // said information to decode.
--  codec_context->channels = config.channels();
-+  codec_context->ch_layout.nb_channels = config.channels();
-   codec_context->sample_rate = config.samples_per_second();
- 
-   if (config.extra_data().empty()) {
-diff --git a/media/filters/audio_file_reader.cc b/media/filters/audio_file_reader.cc
-index 5f257bdfaa6..e1be5aa9a5b 100644
---- a/media/filters/audio_file_reader.cc
-+++ b/media/filters/audio_file_reader.cc
-@@ -113,14 +113,15 @@ bool AudioFileReader::OpenDecoder() {
- 
-   // Verify the channel layout is supported by Chrome.  Acts as a sanity check
-   // against invalid files.  See http://crbug.com/171962
--  if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout,
--                                         codec_context_->channels) ==
-+  if (ChannelLayoutToChromeChannelLayout(
-+          codec_context_->ch_layout.u.mask,
-+          codec_context_->ch_layout.nb_channels) ==
-       CHANNEL_LAYOUT_UNSUPPORTED) {
-     return false;
-   }
- 
-   // Store initial values to guard against midstream configuration changes.
--  channels_ = codec_context_->channels;
-+  channels_ = codec_context_->ch_layout.nb_channels;
-   audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id);
-   sample_rate_ = codec_context_->sample_rate;
-   av_sample_format_ = codec_context_->sample_fmt;
-@@ -223,7 +224,7 @@ bool AudioFileReader::OnNewFrame(
-   if (frames_read < 0)
-     return false;
- 
--  const int channels = frame->channels;
-+  const int channels = frame->ch_layout.nb_channels;
-   if (frame->sample_rate != sample_rate_ || channels != channels_ ||
-       frame->format != av_sample_format_) {
-     DLOG(ERROR) << "Unsupported midstream configuration change!"
-diff --git a/media/filters/audio_file_reader_unittest.cc b/media/filters/audio_file_reader_unittest.cc
-index 2aba7927a31..1f45a50cace 100644
---- a/media/filters/audio_file_reader_unittest.cc
-+++ b/media/filters/audio_file_reader_unittest.cc
-@@ -121,11 +121,11 @@ class AudioFileReaderTest : public testing::Test {
-     EXPECT_FALSE(reader_->Open());
-   }
- 
--  void RunTestFailingDecode(const char* fn) {
-+  void RunTestFailingDecode(const char* fn, int expect_read = 0) {
-     Initialize(fn);
-     EXPECT_TRUE(reader_->Open());
-     std::vector<std::unique_ptr<AudioBus>> decoded_audio_packets;
--    EXPECT_EQ(reader_->Read(&decoded_audio_packets), 0);
-+    EXPECT_EQ(reader_->Read(&decoded_audio_packets), expect_read);
-   }
- 
-   void RunTestPartialDecode(const char* fn) {
-@@ -219,7 +219,7 @@ TEST_F(AudioFileReaderTest, AAC_ADTS) {
- }
- 
- TEST_F(AudioFileReaderTest, MidStreamConfigChangesFail) {
--  RunTestFailingDecode("midstream_config_change.mp3");
-+  RunTestFailingDecode("midstream_config_change.mp3", 42624);
- }
- #endif
- 
-diff --git a/media/filters/audio_video_metadata_extractor.cc b/media/filters/audio_video_metadata_extractor.cc
-index 185819eb936..69ff508c221 100644
---- a/media/filters/audio_video_metadata_extractor.cc
-+++ b/media/filters/audio_video_metadata_extractor.cc
-@@ -113,6 +113,15 @@ bool AudioVideoMetadataExtractor::Extract(DataSource* source,
-     if (!stream)
-       continue;
- 
-+    void* display_matrix =
-+        av_stream_get_side_data(stream, AV_PKT_DATA_DISPLAYMATRIX, nullptr);
-+    if (display_matrix) {
-+      rotation_ = VideoTransformation::FromFFmpegDisplayMatrix(
-+                      static_cast<int32_t*>(display_matrix))
-+                      .rotation;
-+      info.tags["rotate"] = base::NumberToString(rotation_);
-+    }
-+
-     // Extract dictionary from streams also. Needed for containers that attach
-     // metadata to contained streams instead the container itself, like OGG.
-     ExtractDictionary(stream->metadata, &info.tags);
-@@ -255,8 +264,6 @@ void AudioVideoMetadataExtractor::ExtractDictionary(AVDictionary* metadata,
-     if (raw_tags->find(tag->key) == raw_tags->end())
-       (*raw_tags)[tag->key] = tag->value;
- 
--    if (ExtractInt(tag, "rotate", &rotation_))
--      continue;
-     if (ExtractString(tag, "album", &album_))
-       continue;
-     if (ExtractString(tag, "artist", &artist_))
-diff --git a/media/filters/ffmpeg_aac_bitstream_converter.cc b/media/filters/ffmpeg_aac_bitstream_converter.cc
-index 6f231c85729..ca5e5fb927d 100644
---- a/media/filters/ffmpeg_aac_bitstream_converter.cc
-+++ b/media/filters/ffmpeg_aac_bitstream_converter.cc
-@@ -195,14 +195,15 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
-   if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id ||
-       audio_profile_ != stream_codec_parameters_->profile ||
-       sample_rate_index_ != sample_rate_index ||
--      channel_configuration_ != stream_codec_parameters_->channels ||
-+      channel_configuration_ !=
-+          stream_codec_parameters_->ch_layout.nb_channels ||
-       frame_length_ != header_plus_packet_size) {
-     header_generated_ =
-         GenerateAdtsHeader(stream_codec_parameters_->codec_id,
-                            0,  // layer
-                            stream_codec_parameters_->profile, sample_rate_index,
-                            0,  // private stream
--                           stream_codec_parameters_->channels,
-+                           stream_codec_parameters_->ch_layout.nb_channels,
-                            0,  // originality
-                            0,  // home
-                            0,  // copyrighted_stream
-@@ -214,7 +215,7 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
-     codec_ = stream_codec_parameters_->codec_id;
-     audio_profile_ = stream_codec_parameters_->profile;
-     sample_rate_index_ = sample_rate_index;
--    channel_configuration_ = stream_codec_parameters_->channels;
-+    channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels;
-     frame_length_ = header_plus_packet_size;
-   }
- 
-diff --git a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
-index 1fd4c5ccd7d..f59bcd8fdaf 100644
---- a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
-+++ b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
-@@ -34,7 +34,7 @@ class FFmpegAACBitstreamConverterTest : public testing::Test {
-     memset(&test_parameters_, 0, sizeof(AVCodecParameters));
-     test_parameters_.codec_id = AV_CODEC_ID_AAC;
-     test_parameters_.profile = FF_PROFILE_AAC_MAIN;
--    test_parameters_.channels = 2;
-+    test_parameters_.ch_layout.nb_channels = 2;
-     test_parameters_.extradata = extradata_header_;
-     test_parameters_.extradata_size = sizeof(extradata_header_);
-   }
-diff --git a/media/filters/ffmpeg_audio_decoder.cc b/media/filters/ffmpeg_audio_decoder.cc
-index 6a56c675f7d..4615fdeb3fb 100644
---- a/media/filters/ffmpeg_audio_decoder.cc
-+++ b/media/filters/ffmpeg_audio_decoder.cc
-@@ -28,7 +28,7 @@ namespace media {
- 
- // Return the number of channels from the data in |frame|.
- static inline int DetermineChannels(AVFrame* frame) {
--  return frame->channels;
-+  return frame->ch_layout.nb_channels;
- }
- 
- // Called by FFmpeg's allocation routine to allocate a buffer. Uses
-@@ -231,7 +231,7 @@ bool FFmpegAudioDecoder::OnNewFrame(const DecoderBuffer& buffer,
-   // Translate unsupported into discrete layouts for discrete configurations;
-   // ffmpeg does not have a labeled discrete configuration internally.
-   ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout(
--      codec_context_->channel_layout, codec_context_->channels);
-+      codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels);
-   if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED &&
-       config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) {
-     channel_layout = CHANNEL_LAYOUT_DISCRETE;
-@@ -348,11 +348,11 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) {
-   // Success!
-   av_sample_format_ = codec_context_->sample_fmt;
- 
--  if (codec_context_->channels != config.channels()) {
-+  if (codec_context_->ch_layout.nb_channels != config.channels()) {
-     MEDIA_LOG(ERROR, media_log_)
-         << "Audio configuration specified " << config.channels()
-         << " channels, but FFmpeg thinks the file contains "
--        << codec_context_->channels << " channels";
-+        << codec_context_->ch_layout.nb_channels << " channels";
-     ReleaseFFmpegResources();
-     state_ = DecoderState::kUninitialized;
-     return false;
-@@ -403,7 +403,7 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
-   if (frame->nb_samples <= 0)
-     return AVERROR(EINVAL);
- 
--  if (s->channels != channels) {
-+  if (s->ch_layout.nb_channels != channels) {
-     DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count.";
-     return AVERROR(EINVAL);
-   }
-@@ -436,7 +436,8 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
-   ChannelLayout channel_layout =
-       config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE
-           ? CHANNEL_LAYOUT_DISCRETE
--          : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels);
-+          : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask,
-+                                               s->ch_layout.nb_channels);
- 
-   if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) {
-     DLOG(ERROR) << "Unsupported channel layout.";
diff --git a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch.args b/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch.args
deleted file mode 100644
index 8bbbbe9483632..0000000000000
--- a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch.args
+++ /dev/null
@@ -1 +0,0 @@
--RNp1
diff --git a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch b/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch
deleted file mode 100644
index b2a113791734c..0000000000000
--- a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From ded379824f5de39357b6b1894578101aba5cdf05 Mon Sep 17 00:00:00 2001
-From: Eugene Zemtsov <eugene@chromium.org>
-Date: Fri, 29 Jul 2022 04:41:04 +0000
-Subject: [PATCH] Roll src/third_party/ffmpeg/ 880df5ede..b71ecd02b (279
- commits)
-
-https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/880df5ede50a..b71ecd02b479
-
-$ git log 880df5ede..b71ecd02b --date=short --no-merges --format='%ad %ae %s'
-2022-07-27 eugene Roll for M106
-2022-07-25 andreas.rheinhardt avcodec/x86/pngdsp: Remove obsolete ff_add_bytes_l2_mmx()
-2022-07-22 andreas.rheinhardt avcodec/hevcdec: Output MD5-message in one piece
-2022-07-24 epirat07 configure: properly require libx264 if enabled
-2022-07-24 zane avformat/argo_cvg: expose loop/reverb/checksum via metadata
-(...)
-2022-05-03 leo.izen avcodec/libjxldec: properly tag output colorspace
-2022-06-25 ffmpeg avfilter/Makefile: always make colorspace.o
-2022-03-02 brad avutil/ppc/cpu: Use proper header for OpenBSD PPC CPU detection
-2022-06-24 jamrial avformat/http: include version.h
-2022-05-16 mbonda-at-nvidia.com AV1 VDPAU hwaccel Decode support
-
-Created with:
-  roll-dep src/third_party/ffmpeg
-
-ffmpeg usage fix:
- Switch from AVFrame::pkt_duration to AVFrame::duration,
- AVFrame::pkt_duration is deprecated
-
-Bug: 1344646
-Change-Id: Iaa3abf48ef81dae6d282bca8f0fa2a8dffeeba25
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3788638
-Reviewed-by: Will Cassella <cassew@chromium.org>
-Commit-Queue: Eugene Zemtsov <eugene@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1029623}
----
- media/filters/audio_file_reader.cc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/media/filters/audio_file_reader.cc b/media/filters/audio_file_reader.cc
-index e1be5aa9a5b..951c003956f 100644
---- a/media/filters/audio_file_reader.cc
-+++ b/media/filters/audio_file_reader.cc
-@@ -243,10 +243,10 @@ bool AudioFileReader::OnNewFrame(
-   // silence from being output. In the case where we are also discarding some
-   // portion of the packet (as indicated by a negative pts), we further want to
-   // adjust the duration downward by however much exists before zero.
--  if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) {
-+  if (audio_codec_ == AudioCodec::kAAC && frame->duration) {
-     const base::TimeDelta pkt_duration = ConvertFromTimeBase(
-         glue_->format_context()->streams[stream_index_]->time_base,
--        frame->pkt_duration + std::min(static_cast<int64_t>(0), frame->pts));
-+        frame->duration + std::min(static_cast<int64_t>(0), frame->pts));
-     const base::TimeDelta frame_duration =
-         base::Seconds(frames_read / static_cast<double>(sample_rate_));
- 
diff --git a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch.args b/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch.args
deleted file mode 100644
index 8bbbbe9483632..0000000000000
--- a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch.args
+++ /dev/null
@@ -1 +0,0 @@
--RNp1
diff --git a/srcpkgs/chromium/patches/chromium-119-ffmpeg-4.4.patch b/srcpkgs/chromium/patches/chromium-119-ffmpeg-4.4.patch
deleted file mode 100644
index 04d04b166ba37..0000000000000
--- a/srcpkgs/chromium/patches/chromium-119-ffmpeg-4.4.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/media/filters/ffmpeg_demuxer.cc.orig
-+++ b/media/filters/ffmpeg_demuxer.cc
-@@ -390,7 +390,7 @@
- 
-   scoped_refptr<DecoderBuffer> buffer;
- 
--    size_t side_data_size = 0;
-+    int side_data_size = 0;
-     uint8_t* side_data = av_packet_get_side_data(
-         packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size);
- 
-@@ -453,7 +453,7 @@
-                                        packet->size - data_offset);
-     }
- 
--    size_t skip_samples_size = 0;
-+    int skip_samples_size = 0;
-     const uint32_t* skip_samples_ptr =
-         reinterpret_cast<const uint32_t*>(av_packet_get_side_data(
-             packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));
diff --git a/srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch b/srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch
deleted file mode 100644
index bb461ef3664a2..0000000000000
--- a/srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- chromium-120.0.6099.35/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h.than	2023-11-26 13:50:07.005519877 +0100
-+++ chromium-120.0.6099.35/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h	2023-11-26 13:50:49.727267240 +0100
-@@ -152,10 +152,7 @@
-   (!BUILDFLAG(PUT_REF_COUNT_IN_PREVIOUS_SLOT) && \
-    defined(ARCH_CPU_LITTLE_ENDIAN))
- 
--#define PA_CONFIG_HAS_MEMORY_TAGGING()              \
--  (defined(ARCH_CPU_ARM64) && defined(__clang__) && \
--   !defined(ADDRESS_SANITIZER) &&                   \
--   (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID)))
-+#define PA_CONFIG_HAS_MEMORY_TAGGING() 0
- 
- #if PA_CONFIG(HAS_MEMORY_TAGGING)
- static_assert(sizeof(void*) == 8);
diff --git a/srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch b/srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch
deleted file mode 100644
index 112da65b4d9b6..0000000000000
--- a/srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -up chromium-120.0.6099.56/third_party/libc++/src/include/__config.me chromium-120.0.6099.56/third_party/libc++/src/include/__config
---- chromium-120.0.6099.56/third_party/libc++/src/include/__config.me	2023-12-03 00:05:51.254483474 +0100
-+++ chromium-120.0.6099.56/third_party/libc++/src/include/__config	2023-12-03 00:06:05.872863168 +0100
-@@ -32,11 +32,7 @@
- 
- // Warn if a compiler version is used that is not supported anymore
- // LLVM RELEASE Update the minimum compiler versions
--#  if defined(_LIBCPP_CLANG_VER)
--#    if _LIBCPP_CLANG_VER < 1500
--#      warning "Libc++ only supports Clang 15 and later"
--#    endif
--#  elif defined(_LIBCPP_APPLE_CLANG_VER)
-+#  if defined(_LIBCPP_APPLE_CLANG_VER)
- #    if _LIBCPP_APPLE_CLANG_VER < 1500
- #      warning "Libc++ only supports AppleClang 15 and later"
- #    endif
diff --git a/srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch b/srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch
deleted file mode 100644
index 72c7b7ec41c28..0000000000000
--- a/srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn.me chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn
---- chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn.me	2023-11-26 16:14:15.364064126 +0100
-+++ chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn	2023-11-26 16:41:16.877321990 +0100
-@@ -21,6 +21,9 @@ if (use_atk) {
-     minor = atspi_version[1]
-     micro = atspi_version[2]
- 
-+    # gn workaround for the error: Assignment had no effect
-+    print("ATSPI Version: $major.$minor.$micro")
-+
-     # ATSPI 2.49.90 now defines these for us and it's an error for us to
-     # redefine them on the compiler command line.
-     # See ATSPI 927344a34cd5bf81fc64da4968241735ecb4f03b
diff --git a/srcpkgs/chromium/patches/chromium-120-missing-header-files.patch b/srcpkgs/chromium/patches/chromium-120-missing-header-files.patch
deleted file mode 100644
index 44f867475b218..0000000000000
--- a/srcpkgs/chromium/patches/chromium-120-missing-header-files.patch
+++ /dev/null
@@ -1,459 +0,0 @@
-diff -up chromium-110.0.5481.177/base/memory/ref_counted.h.me chromium-110.0.5481.177/base/memory/ref_counted.h
---- chromium-110.0.5481.177/base/memory/ref_counted.h.me	2023-02-23 13:34:33.174817255 -0500
-+++ chromium-110.0.5481.177/base/memory/ref_counted.h	2023-02-23 13:42:28.646052469 -0500
-@@ -6,6 +6,7 @@
- #define BASE_MEMORY_REF_COUNTED_H_
- 
- #include <stddef.h>
-+#include <limits>
- 
- #include <utility>
- 
-diff -up chromium-109.0.5414.74/base/check_op.h.me chromium-109.0.5414.74/base/check_op.h
---- chromium-109.0.5414.74/base/check_op.h.me	2023-01-17 17:39:27.620875883 +0100
-+++ chromium-109.0.5414.74/base/check_op.h	2023-01-17 17:39:42.546060957 +0100
-@@ -5,6 +5,7 @@
- #ifndef BASE_CHECK_OP_H_
- #define BASE_CHECK_OP_H_
- 
-+#include <cstdint>
- #include <cstddef>
- #include <string>
- #include <type_traits>
-diff -up chromium-109.0.5414.74/base/debug/profiler.h.me chromium-109.0.5414.74/base/debug/profiler.h
---- chromium-109.0.5414.74/base/debug/profiler.h.me	2023-01-17 16:29:26.368090073 +0100
-+++ chromium-109.0.5414.74/base/debug/profiler.h	2023-01-17 16:59:41.190628679 +0100
-@@ -7,6 +7,7 @@
- 
- #include <stddef.h>
- 
-+#include <cstdint>
- #include <string>
- 
- #include "base/base_export.h"
-diff -up chromium-109.0.5414.74/gpu/config/gpu_feature_info.h.me chromium-109.0.5414.74/gpu/config/gpu_feature_info.h
---- chromium-109.0.5414.74/gpu/config/gpu_feature_info.h.me	2023-01-17 19:06:53.530675129 +0100
-+++ chromium-109.0.5414.74/gpu/config/gpu_feature_info.h	2023-01-17 19:07:08.874849879 +0100
-@@ -5,6 +5,7 @@
- #ifndef GPU_CONFIG_GPU_FEATURE_INFO_H_
- #define GPU_CONFIG_GPU_FEATURE_INFO_H_
- 
-+#include <cstdint>
- #include <string>
- #include <vector>
- 
-diff -up chromium-109.0.5414.74/net/base/net_export.h.me chromium-109.0.5414.74/net/base/net_export.h
---- chromium-109.0.5414.74/net/base/net_export.h.me	2023-01-17 18:16:34.133854615 +0100
-+++ chromium-109.0.5414.74/net/base/net_export.h	2023-01-17 18:16:15.945623153 +0100
-@@ -5,6 +5,8 @@
- #ifndef NET_BASE_NET_EXPORT_H_
- #define NET_BASE_NET_EXPORT_H_
- 
-+#include <cstdint>
-+
- // Defines NET_EXPORT so that functionality implemented by the net module can
- // be exported to consumers, and NET_EXPORT_PRIVATE that allows unit tests to
- // access features not intended to be used directly by real consumers.
-diff -up chromium-109.0.5414.74/sandbox/linux/syscall_broker/broker_file_permission.h.me chromium-109.0.5414.74/sandbox/linux/syscall_broker/broker_file_permission.h
---- chromium-109.0.5414.74/sandbox/linux/syscall_broker/broker_file_permission.h.me	2023-01-17 17:12:34.184686515 +0100
-+++ chromium-109.0.5414.74/sandbox/linux/syscall_broker/broker_file_permission.h	2023-01-17 17:13:16.537162420 +0100
-@@ -5,6 +5,7 @@
- #ifndef SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
- #define SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
- 
-+#include <cstdint>
- #include <bitset>
- #include <string>
- 
-diff -up chromium-109.0.5414.74/third_party/abseil-cpp/absl/strings/string_view.h.me chromium-109.0.5414.74/third_party/abseil-cpp/absl/strings/string_view.h
---- chromium-109.0.5414.74/third_party/abseil-cpp/absl/strings/string_view.h.me	2023-01-17 17:33:20.895717307 +0100
-+++ chromium-109.0.5414.74/third_party/abseil-cpp/absl/strings/string_view.h	2023-01-17 17:34:03.456185365 +0100
-@@ -27,6 +27,7 @@
- #ifndef ABSL_STRINGS_STRING_VIEW_H_
- #define ABSL_STRINGS_STRING_VIEW_H_
- 
-+#include <cstdint>
- #include <algorithm>
- #include <cassert>
- #include <cstddef>
-diff -up chromium-109.0.5414.74/third_party/angle/include/GLSLANG/ShaderVars.h.me chromium-109.0.5414.74/third_party/angle/include/GLSLANG/ShaderVars.h
---- chromium-109.0.5414.74/third_party/angle/include/GLSLANG/ShaderVars.h.me	2023-01-17 17:36:15.017616250 +0100
-+++ chromium-109.0.5414.74/third_party/angle/include/GLSLANG/ShaderVars.h	2023-01-17 17:36:48.960982195 +0100
-@@ -10,6 +10,7 @@
- #ifndef GLSLANG_SHADERVARS_H_
- #define GLSLANG_SHADERVARS_H_
- 
-+#include <cstdint>
- #include <algorithm>
- #include <array>
- #include <string>
-diff -up chromium-109.0.5414.74/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.me chromium-109.0.5414.74/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h
---- chromium-109.0.5414.74/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.me	2023-01-17 19:17:40.480876171 +0100
-+++ chromium-109.0.5414.74/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h	2023-01-17 19:17:46.803958320 +0100
-@@ -5,6 +5,7 @@
- #ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_BLUETOOTH_WEB_BLUETOOTH_DEVICE_ID_H_
- #define THIRD_PARTY_BLINK_PUBLIC_COMMON_BLUETOOTH_WEB_BLUETOOTH_DEVICE_ID_H_
- 
-+#include <cstdint>
- #include <array>
- #include <string>
- 
-diff -up chromium-117.0.5938.48/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.me chromium-117.0.5938.48/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h
---- chromium-117.0.5938.48/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.me	2023-01-17 18:02:44.681538107 +0100
-+++ chromium-117.0.5938.48/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h	2023-01-17 18:02:57.208679140 +0100
-@@ -15,6 +15,7 @@
- #ifndef SRC_TINT_READER_SPIRV_NAMER_H_
- #define SRC_TINT_READER_SPIRV_NAMER_H_
- 
-+#include <cstdint>
- #include <string>
- #include <unordered_map>
- #include <vector>
-diff -up chromium-109.0.5414.74/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.me chromium-109.0.5414.74/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h
---- chromium-109.0.5414.74/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.me	2023-01-18 15:22:38.472940648 +0100
-+++ chromium-109.0.5414.74/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h	2023-01-18 15:23:09.380255101 +0100
-@@ -5,6 +5,7 @@
- #ifndef DISCOVERY_DNSSD_PUBLIC_DNS_SD_TXT_RECORD_H_
- #define DISCOVERY_DNSSD_PUBLIC_DNS_SD_TXT_RECORD_H_
- 
-+#include <cstdint>
- #include <functional>
- #include <map>
- #include <set>
-diff -up chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp.me chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp
---- chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp.me	2023-01-17 15:37:48.530626516 +0100
-+++ chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp	2023-01-17 16:57:46.025548092 +0100
-@@ -17,6 +17,7 @@
- 
- #include "System/Debug.hpp"
- 
-+#include <cstdint>
- #include <cstddef>
- #include <functional>
- #include <unordered_set>
-diff -up chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h.me chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h
---- chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h.me	2023-01-17 18:08:25.745491353 +0100
-+++ chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h	2023-01-17 18:08:35.777667632 +0100
-@@ -5,6 +5,7 @@
- #ifndef UI_GFX_LINEAR_GRADIENT_H_
- #define UI_GFX_LINEAR_GRADIENT_H_
- 
-+#include <cstdint>
- #include <array>
- #include <string>
- 
-diff -up chromium-109.0.5414.74/third_party/ruy/src/ruy/profiler/instrumentation.h.me chromium-109.0.5414.74/third_party/ruy/src/ruy/profiler/instrumentation.h
---- chromium-109.0.5414.74/third_party/ruy/src/ruy/profiler/instrumentation.h.me	2023-01-19 10:10:21.287876736 +0100
-+++ chromium-109.0.5414.74/third_party/ruy/src/ruy/profiler/instrumentation.h	2023-01-19 10:11:21.714778896 +0100
-@@ -17,6 +17,7 @@ limitations under the License.
- #define RUY_RUY_PROFILER_INSTRUMENTATION_H_
- 
- #ifdef RUY_PROFILER
-+#include <string>
- #include <cstdio>
- #include <mutex>
- #include <vector>
-diff -up chromium-109.0.5414.74/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.me chromium-109.0.5414.74/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h
---- chromium-109.0.5414.74/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.me	2023-01-19 10:30:27.533861985 +0100
-+++ chromium-109.0.5414.74/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h	2023-01-19 10:31:12.585554183 +0100
-@@ -31,6 +31,7 @@ limitations under the License.
- #ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
- #define TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
- 
-+#include <cstdint>
- #include <complex>
- #include <deque>
- #include <vector>
-diff -up chromium-109.0.5414.74/base/containers/flat_map.h.mee chromium-109.0.5414.74/base/containers/flat_map.h
---- chromium-109.0.5414.74/base/containers/flat_map.h.mee	2023-01-19 10:59:52.214957773 +0100
-+++ chromium-109.0.5414.74/base/containers/flat_map.h	2023-01-19 11:00:06.415215309 +0100
-@@ -5,6 +5,7 @@
- #ifndef BASE_CONTAINERS_FLAT_MAP_H_
- #define BASE_CONTAINERS_FLAT_MAP_H_
- 
-+#include <cstdint>
- #include <functional>
- #include <tuple>
- #include <utility>
-diff -up chromium-109.0.5414.74/components/crash/core/app/crash_reporter_client.h.mee chromium-109.0.5414.74/components/crash/core/app/crash_reporter_client.h
---- chromium-109.0.5414.74/components/crash/core/app/crash_reporter_client.h.mee	2023-01-19 10:36:40.571422826 +0100
-+++ chromium-109.0.5414.74/components/crash/core/app/crash_reporter_client.h	2023-01-19 10:36:49.343565294 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_CRASH_CORE_APP_CRASH_REPORTER_CLIENT_H_
- #define COMPONENTS_CRASH_CORE_APP_CRASH_REPORTER_CLIENT_H_
- 
-+#include <cstdint>
- #include <string>
- 
- #include "build/build_config.h"
-diff -up chromium-109.0.5414.74/ui/base/prediction/kalman_filter.h.mee chromium-109.0.5414.74/ui/base/prediction/kalman_filter.h
---- chromium-109.0.5414.74/ui/base/prediction/kalman_filter.h.mee	2023-01-19 11:45:15.953159755 +0100
-+++ chromium-109.0.5414.74/ui/base/prediction/kalman_filter.h	2023-01-19 11:45:22.320246241 +0100
-@@ -5,6 +5,8 @@
- #ifndef UI_BASE_PREDICTION_KALMAN_FILTER_H_
- #define UI_BASE_PREDICTION_KALMAN_FILTER_H_
- 
-+#include <cstdint>
-+
- #include "base/component_export.h"
- #include "ui/gfx/geometry/matrix3_f.h"
- 
-diff -up chromium-109.0.5414.74/components/password_manager/core/browser/generation/password_generator.h.me chromium-109.0.5414.74/components/password_manager/core/browser/generation/password_generator.h
---- chromium-109.0.5414.74/components/password_manager/core/browser/generation/password_generator.h.me	2023-01-19 15:20:07.620987949 +0100
-+++ chromium-109.0.5414.74/components/password_manager/core/browser/generation/password_generator.h	2023-01-19 15:20:18.324173702 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_GENERATION_PASSWORD_GENERATOR_H_
- #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_GENERATION_PASSWORD_GENERATOR_H_
- 
-+#include <cstdint>
- #include <string>
- 
- 
-diff -up chromium-109.0.5414.74/components/feature_engagement/internal/event_storage_validator.h.me chromium-109.0.5414.74/components/feature_engagement/internal/event_storage_validator.h
---- chromium-109.0.5414.74/components/feature_engagement/internal/event_storage_validator.h.me	2023-01-19 16:00:14.350186515 +0100
-+++ chromium-109.0.5414.74/components/feature_engagement/internal/event_storage_validator.h	2023-01-19 16:00:21.643307993 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_EVENT_STORAGE_VALIDATOR_H_
- #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_EVENT_STORAGE_VALIDATOR_H_
- 
-+#include <cstdint>
- #include <string>
- 
- namespace feature_engagement {
-diff -up chromium-109.0.5414.74/components/feature_engagement/internal/never_event_storage_validator.h.me chromium-109.0.5414.74/components/feature_engagement/internal/never_event_storage_validator.h
---- chromium-109.0.5414.74/components/feature_engagement/internal/never_event_storage_validator.h.me	2023-01-19 15:59:18.210239416 +0100
-+++ chromium-109.0.5414.74/components/feature_engagement/internal/never_event_storage_validator.h	2023-01-19 15:59:34.513515030 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
- #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
- 
-+#include <cstdint>
- #include <string>
- 
- #include "components/feature_engagement/internal/event_storage_validator.h"
-diff -up chromium-109.0.5414.74/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.me chromium-109.0.5414.74/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc
---- chromium-109.0.5414.74/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.me	2023-01-19 16:09:29.216477182 +0100
-+++ chromium-109.0.5414.74/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc	2023-01-19 16:10:05.657089208 +0100
-@@ -45,6 +45,7 @@
- #include "llvm/Support/SaveAndRestore.h"
- #include "llvm/Support/raw_ostream.h"
- #include <algorithm>
-+#include <cstdint>
- #include <string>
- #include <sysexits.h>
- #ifdef HAVE_BACKTRACE
-diff -up chromium-109.0.5414.74/chrome/browser/privacy_budget/encountered_surface_tracker.h.me chromium-109.0.5414.74/chrome/browser/privacy_budget/encountered_surface_tracker.h
---- chromium-109.0.5414.74/chrome/browser/privacy_budget/encountered_surface_tracker.h.me	2023-01-19 16:32:05.338160131 +0100
-+++ chromium-109.0.5414.74/chrome/browser/privacy_budget/encountered_surface_tracker.h	2023-01-19 16:32:16.213326798 +0100
-@@ -5,6 +5,7 @@
- #ifndef CHROME_BROWSER_PRIVACY_BUDGET_ENCOUNTERED_SURFACE_TRACKER_H_
- #define CHROME_BROWSER_PRIVACY_BUDGET_ENCOUNTERED_SURFACE_TRACKER_H_
- 
-+#include <cstdint>
- #include <map>
- 
- #include "base/containers/flat_set.h"
-diff -up chromium-109.0.5414.74/components/autofill/core/browser/autofill_ablation_study.h.me chromium-109.0.5414.74/components/autofill/core/browser/autofill_ablation_study.h
---- chromium-109.0.5414.74/components/autofill/core/browser/autofill_ablation_study.h.me	2023-01-19 16:47:55.548571102 +0100
-+++ chromium-109.0.5414.74/components/autofill/core/browser/autofill_ablation_study.h	2023-01-19 16:48:29.214146529 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ABLATION_STUDY_H_
- #define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ABLATION_STUDY_H_
- 
-+#include <cstdint>
- #include <string>
- 
- class GURL;
-diff -up chromium-109.0.5414.74/components/omnibox/browser/on_device_head_model.h.me chromium-109.0.5414.74/components/omnibox/browser/on_device_head_model.h
---- chromium-109.0.5414.74/components/omnibox/browser/on_device_head_model.h.me	2023-01-19 16:57:29.525372814 +0100
-+++ chromium-109.0.5414.74/components/omnibox/browser/on_device_head_model.h	2023-01-19 16:58:02.667979288 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_OMNIBOX_BROWSER_ON_DEVICE_HEAD_MODEL_H_
- #define COMPONENTS_OMNIBOX_BROWSER_ON_DEVICE_HEAD_MODEL_H_
- 
-+#include <cstdint>
- #include <string>
- #include <utility>
- #include <vector>
-diff -up chromium-109.0.5414.74/components/payments/content/utility/fingerprint_parser.h.me chromium-109.0.5414.74/components/payments/content/utility/fingerprint_parser.h
---- chromium-109.0.5414.74/components/payments/content/utility/fingerprint_parser.h.me	2023-01-19 17:02:45.258544665 +0100
-+++ chromium-109.0.5414.74/components/payments/content/utility/fingerprint_parser.h	2023-01-19 17:02:52.577611757 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
- #define COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
- 
-+#include <cstdint>
- #include <stddef.h>
- 
- #include <string>
-diff -up chromium-109.0.5414.74/pdf/document_attachment_info.h.me chromium-109.0.5414.74/pdf/document_attachment_info.h
---- chromium-109.0.5414.74/pdf/document_attachment_info.h.me	2023-01-19 17:28:28.552063534 +0100
-+++ chromium-109.0.5414.74/pdf/document_attachment_info.h	2023-01-19 17:28:48.072379953 +0100
-@@ -5,6 +5,7 @@
- #ifndef PDF_DOCUMENT_ATTACHMENT_INFO_H_
- #define PDF_DOCUMENT_ATTACHMENT_INFO_H_
- 
-+#include <cstdint>
- #include <string>
- 
- 
-diff -up chromium-109.0.5414.74/third_party/pdfium/constants/annotation_flags.h.me chromium-109.0.5414.74/third_party/pdfium/constants/annotation_flags.h
---- chromium-109.0.5414.74/third_party/pdfium/constants/annotation_flags.h.me	2023-01-19 18:25:47.648193710 +0100
-+++ chromium-109.0.5414.74/third_party/pdfium/constants/annotation_flags.h	2023-01-19 18:26:11.488593556 +0100
-@@ -5,6 +5,8 @@
- #ifndef CONSTANTS_ANNOTATION_FLAGS_H_
- #define CONSTANTS_ANNOTATION_FLAGS_H_
- 
-+#include <cstdint>
-+
- namespace pdfium {
- namespace annotation_flags {
- 
-diff -up chromium-113.0.5672.24/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.me chromium-113.0.5672.24/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h
---- chromium-113.0.5672.24/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.me	2023-04-15 16:44:55.344305412 +0200
-+++ chromium-113.0.5672.24/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h	2023-04-15 16:47:09.028666995 +0200
-@@ -2854,6 +2854,7 @@ static void vma_aligned_free(void* VMA_N
- 
- // Define this macro to 1 to enable functions: vmaBuildStatsString, vmaFreeStatsString.
- #if VMA_STATS_STRING_ENABLED
-+#include <stdio.h>
-     static inline void VmaUint32ToStr(char* VMA_NOT_NULL outStr, size_t strLen, uint32_t num)
-     {
-         snprintf(outStr, strLen, "%u", static_cast<unsigned int>(num));
-diff -up chromium-113.0.5672.37/chrome/browser/webauthn/authenticator_request_dialog_model.h.me chromium-113.0.5672.37/chrome/browser/webauthn/authenticator_request_dialog_model.h
---- chromium-113.0.5672.37/chrome/browser/webauthn/authenticator_request_dialog_model.h.me	2023-04-18 15:55:44.774916319 +0200
-+++ chromium-113.0.5672.37/chrome/browser/webauthn/authenticator_request_dialog_model.h	2023-04-18 15:55:54.441085882 +0200
-@@ -8,6 +8,7 @@
- #include <memory>
- #include <string>
- #include <vector>
-+#include <variant>
- 
- #include "base/containers/span.h"
- #include "base/functional/callback_forward.h"
-diff -up chromium-113.0.5672.37/gin/time_clamper.h.me chromium-113.0.5672.37/gin/time_clamper.h
---- chromium-113.0.5672.37/gin/time_clamper.h.me	2023-04-18 16:38:41.180437467 +0200
-+++ chromium-113.0.5672.37/gin/time_clamper.h	2023-04-18 16:39:43.857049432 +0200
-@@ -48,7 +48,7 @@ class GIN_EXPORT TimeClamper {
-     const int64_t micros = now_micros % 1000;
-     // abs() is necessary for devices with times before unix-epoch (most likely
-     // configured incorrectly).
--    if (abs(micros) + kResolutionMicros < 1000) {
-+    if (std::abs(micros) + kResolutionMicros < 1000) {
-       return now_micros / 1000;
-     }
-     return ClampTimeResolution(now_micros) / 1000;
-diff -up chromium-113.0.5672.53/chrome/test/chromedriver/chrome/web_view_impl.cc.me chromium-113.0.5672.53/chrome/test/chromedriver/chrome/web_view_impl.cc
---- chromium-113.0.5672.53/chrome/test/chromedriver/chrome/web_view_impl.cc.me	2023-04-21 08:07:55.362714544 +0200
-+++ chromium-113.0.5672.53/chrome/test/chromedriver/chrome/web_view_impl.cc	2023-04-21 08:14:35.424158693 +0200
-@@ -10,6 +10,7 @@
- #include <queue>
- #include <utility>
- #include <vector>
-+#include <cstring>
- 
- #include "base/check.h"
- #include "base/files/file_path.h"
-diff -up chromium-115.0.5790.32/skia/ext/skcolorspace_trfn.cc.me chromium-115.0.5790.32/skia/ext/skcolorspace_trfn.cc
---- chromium-115.0.5790.32/skia/ext/skcolorspace_trfn.cc.me	2023-06-18 12:33:52.387412788 +0200
-+++ chromium-115.0.5790.32/skia/ext/skcolorspace_trfn.cc	2023-06-18 12:35:28.229148935 +0200
-@@ -3,6 +3,7 @@
- // found in the LICENSE file.
- 
- #include "skia/ext/skcolorspace_trfn.h"
-+#include <cmath>
- 
- namespace skia {
- 
-diff -up chromium-96.0.4664.45/third_party/webrtc/common_video/h264/sps_parser.h.missing-cstdint chromium-96.0.4664.45/third_party/webrtc/common_video/h264/sps_parser.h
---- chromium-96.0.4664.45/third_party/webrtc/common_video/h264/sps_parser.h.missing-cstdint	2021-11-19 17:05:31.379750350 -0500
-+++ chromium-96.0.4664.45/third_party/webrtc/common_video/h264/sps_parser.h	2021-11-19 17:07:35.191520127 -0500
-@@ -11,6 +11,7 @@
- #ifndef COMMON_VIDEO_H264_SPS_PARSER_H_
- #define COMMON_VIDEO_H264_SPS_PARSER_H_
- 
-+#include <cstdint>
- #include "absl/types/optional.h"
- #include "rtc_base/bitstream_reader.h"
- 
-diff -up chromium-96.0.4664.45/third_party/webrtc/modules/include/module_common_types_public.h.missing-cstdint chromium-96.0.4664.45/third_party/webrtc/modules/include/module_common_types_public.h
---- chromium-96.0.4664.45/third_party/webrtc/modules/include/module_common_types_public.h.missing-cstdint	2021-11-12 05:28:10.000000000 -0500
-+++ chromium-96.0.4664.45/third_party/webrtc/modules/include/module_common_types_public.h	2021-11-19 17:05:31.379750350 -0500
-@@ -11,6 +11,7 @@
- #ifndef MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
- #define MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
- 
-+#include <cstdint>
- #include <limits>
- 
- #include "absl/types/optional.h"
-diff -up chromium-96.0.4664.45/ui/gfx/linux/drm_util_linux.h.missing-cstdint chromium-96.0.4664.45/ui/gfx/linux/drm_util_linux.h
---- chromium-96.0.4664.45/ui/gfx/linux/drm_util_linux.h.missing-cstdint	2021-11-12 05:25:24.000000000 -0500
-+++ chromium-96.0.4664.45/ui/gfx/linux/drm_util_linux.h	2021-11-19 17:05:31.379750350 -0500
-@@ -9,6 +9,8 @@
- 
- #include "ui/gfx/buffer_types.h"
- 
-+#include <cstdint>
-+
- namespace ui {
- 
- int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format);
-diff -up chromium-96.0.4664.45/third_party/webrtc/audio/utility/channel_mixer.cc.missing-cstring chromium-96.0.4664.45/third_party/webrtc/audio/utility/channel_mixer.cc
---- chromium-96.0.4664.45/third_party/webrtc/audio/utility/channel_mixer.cc.missing-cstring	2021-11-12 05:28:09.000000000 -0500
-+++ chromium-96.0.4664.45/third_party/webrtc/audio/utility/channel_mixer.cc	2021-11-19 17:10:02.927438695 -0500
-@@ -8,6 +8,8 @@
-  *  be found in the AUTHORS file in the root of the source tree.
-  */
- 
-+#include <cstring>
-+
- #include "audio/utility/channel_mixer.h"
- 
- #include "audio/utility/channel_mixing_matrix.h"
-diff -up chromium-96.0.4664.45/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-cstring chromium-96.0.4664.45/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc
---- chromium-96.0.4664.45/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-cstring	2021-11-12 05:28:10.000000000 -0500
-+++ chromium-96.0.4664.45/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc	2021-11-19 17:10:02.928438701 -0500
-@@ -10,6 +10,7 @@
- 
- #include "modules/video_coding/utility/ivf_file_reader.h"
- 
-+#include <cstring>
- #include <string>
- #include <vector>
- 
-diff -up chromium-117.0.5938.48/third_party/ipcz/src/ipcz/router_link.h.me chromium-117.0.5938.48/third_party/ipcz/src/ipcz/router_link.h
---- chromium-117.0.5938.48/third_party/ipcz/src/ipcz/router_link.h.me	2023-09-10 17:53:04.826298351 +0200
-+++ chromium-117.0.5938.48/third_party/ipcz/src/ipcz/router_link.h	2023-09-10 17:53:22.201756894 +0200
-@@ -5,6 +5,7 @@
- #ifndef IPCZ_SRC_IPCZ_ROUTER_LINK_H_
- #define IPCZ_SRC_IPCZ_ROUTER_LINK_H_
- 
-+#include <memory>
- #include <cstddef>
- #include <functional>
- #include <string>
-diff -up chromium-117.0.5938.48/third_party/material_color_utilities/src/cpp/palettes/tones.cc.me chromium-117.0.5938.48/third_party/material_color_utilities/src/cpp/palettes/tones.cc
---- chromium-117.0.5938.48/third_party/material_color_utilities/src/cpp/palettes/tones.cc.me	2023-09-10 17:36:27.199841051 +0200
-+++ chromium-117.0.5938.48/third_party/material_color_utilities/src/cpp/palettes/tones.cc	2023-09-10 17:44:51.870554233 +0200
-@@ -14,6 +14,7 @@
-  * limitations under the License.
-  */
- 
-+#include <cmath>
- #include "cpp/palettes/tones.h"
- 
- #include "cpp/cam/cam.h"
-diff -up chromium-118.0.5993.32/services/device/public/cpp/generic_sensor/sensor_reading.h.me chromium-118.0.5993.32/services/device/public/cpp/generic_sensor/sensor_reading.h
---- chromium-118.0.5993.32/services/device/public/cpp/generic_sensor/sensor_reading.h.me	2023-10-01 13:55:01.913193186 +0200
-+++ chromium-118.0.5993.32/services/device/public/cpp/generic_sensor/sensor_reading.h	2023-10-01 14:05:38.488038429 +0200
-@@ -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 <cstddef>
-+#include <cstdint>
-+
- #include <type_traits>
- 
- namespace device {
diff --git a/srcpkgs/chromium/patches/chromium-121-arm64-memory_tagging.patch b/srcpkgs/chromium/patches/chromium-121-arm64-memory_tagging.patch
new file mode 100644
index 0000000000000..cf807ddb31ec7
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-arm64-memory_tagging.patch
@@ -0,0 +1,13 @@
+diff -up chromium-121.0.6167.57/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h.me chromium-121.0.6167.57/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h
+--- chromium-121.0.6167.57/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h.me	2024-01-16 14:20:52.401890657 +0100
++++ chromium-121.0.6167.57/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h	2024-01-16 15:08:04.070156474 +0100
+@@ -162,7 +162,8 @@ static_assert(sizeof(void*) != 8, "");
+ 
+ #if defined(ARCH_CPU_ARM64) && defined(__clang__) && \
+     !defined(ADDRESS_SANITIZER) &&                   \
+-    (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID))
++    (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID)) && \
++    __GLIBC_PREREQ(2, 29)
+ #define PA_CONFIG_HAS_MEMORY_TAGGING() 1
+ #else
+ #define PA_CONFIG_HAS_MEMORY_TAGGING() 0
diff --git a/srcpkgs/chromium/patches/chromium-121-constexpr.patch b/srcpkgs/chromium/patches/chromium-121-constexpr.patch
new file mode 100644
index 0000000000000..a0b7166a5c8f8
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-constexpr.patch
@@ -0,0 +1,12 @@
+diff -up chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h.me chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h
+--- chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h.me	2024-01-18 17:00:24.791582422 +0100
++++ chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h	2024-01-18 17:22:21.521682845 +0100
+@@ -27,7 +27,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;
+ 
+   // Individual resource contexts to measure.
diff --git a/srcpkgs/chromium/patches/chromium-121-el7-clang-version-warning.patch b/srcpkgs/chromium/patches/chromium-121-el7-clang-version-warning.patch
new file mode 100644
index 0000000000000..bc86eb2355874
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-el7-clang-version-warning.patch
@@ -0,0 +1,15 @@
+--- chromium-121.0.6167.57/third_party/libc++/src/include/__config.orig	2024-01-16 18:38:00.995930774 +0100
++++ chromium-121.0.6167.57/third_party/libc++/src/include/__config	2024-01-16 18:43:47.056517289 +0100
+@@ -32,11 +32,7 @@
+ 
+ // Warn if a compiler version is used that is not supported anymore
+ // LLVM RELEASE Update the minimum compiler versions
+-#  if defined(_LIBCPP_CLANG_VER)
+-#    if _LIBCPP_CLANG_VER < 1600
+-#      warning "Libc++ only supports Clang 16 and later"
+-#    endif
+-#  elif defined(_LIBCPP_APPLE_CLANG_VER)
++#  if defined(_LIBCPP_APPLE_CLANG_VER)
+ #    if _LIBCPP_APPLE_CLANG_VER < 1500
+ #      warning "Libc++ only supports AppleClang 15 and later"
+ #    endif
diff --git a/srcpkgs/chromium/patches/chromium-121-el7-default-constructor-involving-anonymous-union.patch b/srcpkgs/chromium/patches/chromium-121-el7-default-constructor-involving-anonymous-union.patch
new file mode 100644
index 0000000000000..0a2ac1de3561d
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-el7-default-constructor-involving-anonymous-union.patch
@@ -0,0 +1,12 @@
+diff -up chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.cc.me chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.cc
+--- chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.cc.me	2024-01-23 15:13:11.469104694 +0100
++++ chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.cc	2024-01-23 15:11:40.117842015 +0100
+@@ -46,7 +46,7 @@ size_t GetResultSizeBytes(const HeaderDi
+ 
+ }  // namespace
+ 
+-HeaderDirectFromSellerSignals::Result::Result() = default;
++HeaderDirectFromSellerSignals::Result::Result() {}
+ 
+ HeaderDirectFromSellerSignals::Result::Result(
+     absl::optional<std::string> seller_signals,
diff --git a/srcpkgs/chromium/patches/chromium-121-missing-header-files.patch b/srcpkgs/chromium/patches/chromium-121-missing-header-files.patch
new file mode 100644
index 0000000000000..377de0d1140cb
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-missing-header-files.patch
@@ -0,0 +1,459 @@
+diff -up chromium-119.0.6045.105/base/check_op.h.missing-header-files chromium-119.0.6045.105/base/check_op.h
+--- chromium-119.0.6045.105/base/check_op.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
++++ chromium-119.0.6045.105/base/check_op.h	2023-11-06 14:34:01.808868982 +0100
+@@ -5,6 +5,7 @@
+ #ifndef BASE_CHECK_OP_H_
+ #define BASE_CHECK_OP_H_
+ 
++#include <cstdint>
+ #include <cstddef>
+ #include <string>
+ #include <string_view>
+diff -up chromium-119.0.6045.105/base/containers/flat_map.h.missing-header-files chromium-119.0.6045.105/base/containers/flat_map.h
+--- chromium-119.0.6045.105/base/containers/flat_map.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
++++ chromium-119.0.6045.105/base/containers/flat_map.h	2023-11-06 14:34:01.813869089 +0100
+@@ -5,6 +5,7 @@
+ #ifndef BASE_CONTAINERS_FLAT_MAP_H_
+ #define BASE_CONTAINERS_FLAT_MAP_H_
+ 
++#include <cstdint>
+ #include <functional>
+ #include <tuple>
+ #include <type_traits>
+diff -up chromium-119.0.6045.105/base/debug/profiler.h.missing-header-files chromium-119.0.6045.105/base/debug/profiler.h
+--- chromium-119.0.6045.105/base/debug/profiler.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
++++ chromium-119.0.6045.105/base/debug/profiler.h	2023-11-06 14:34:01.809869004 +0100
+@@ -8,6 +8,7 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ #include "base/base_export.h"
+diff -up chromium-119.0.6045.105/base/memory/ref_counted.h.missing-header-files chromium-119.0.6045.105/base/memory/ref_counted.h
+--- chromium-119.0.6045.105/base/memory/ref_counted.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
++++ chromium-119.0.6045.105/base/memory/ref_counted.h	2023-11-06 14:34:01.808868982 +0100
+@@ -6,6 +6,7 @@
+ #define BASE_MEMORY_REF_COUNTED_H_
+ 
+ #include <stddef.h>
++#include <limits>
+ 
+ #include <limits>
+ #include <utility>
+diff -up chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h.missing-header-files chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h
+--- chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h.missing-header-files	2023-11-01 19:10:13.000000000 +0100
++++ chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h	2023-11-06 14:34:01.814869110 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <map>
+ 
+ #include "base/containers/flat_set.h"
+diff -up chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h.missing-header-files chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h
+--- chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h.missing-header-files	2023-11-01 19:10:16.000000000 +0100
++++ chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h	2023-11-06 14:34:01.817869174 +0100
+@@ -8,6 +8,7 @@
+ #include <memory>
+ #include <string>
+ #include <vector>
++#include <variant>
+ 
+ #include "base/containers/span.h"
+ #include "base/functional/callback_forward.h"
+diff -up chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc.missing-header-files chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc
+--- chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc.missing-header-files	2023-11-01 19:10:16.000000000 +0100
++++ chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc	2023-11-06 14:34:01.818869196 +0100
+@@ -11,6 +11,7 @@
+ #include <queue>
+ #include <utility>
+ #include <vector>
++#include <cstring>
+ 
+ #include "base/check.h"
+ #include "base/files/file_path.h"
+diff -up chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h.missing-header-files chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h
+--- chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h.missing-header-files	2023-11-01 19:10:19.000000000 +0100
++++ chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h	2023-11-06 14:34:01.815869132 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ class GURL;
+diff -up chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h.missing-header-files chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h
+--- chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h.missing-header-files	2023-11-01 19:10:20.000000000 +0100
++++ chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h	2023-11-06 14:34:01.813869089 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ #include "build/build_config.h"
+diff -up chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h.missing-header-files chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h
+--- chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h	2023-11-06 14:34:01.814869110 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ namespace feature_engagement {
+diff -up chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h.missing-header-files chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h
+--- chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h	2023-11-06 14:34:01.814869110 +0100
+@@ -5,6 +5,7 @@
+ #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
+ #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
+ 
++#include <cstdint>
+ #include <string>
+ 
+ #include "components/feature_engagement/internal/event_storage_validator.h"
+diff -up chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h.missing-header-files chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h
+--- chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h	2023-11-06 14:34:01.815869132 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ #include <utility>
+ #include <vector>
+diff -up chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h.missing-header-files chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h
+--- chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h	2023-11-06 14:34:01.814869110 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ 
+diff -up chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h.missing-header-files chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h
+--- chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h	2023-11-06 14:34:01.815869132 +0100
+@@ -5,6 +5,7 @@
+ #ifndef COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
+ #define COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
+ 
++#include <cstdint>
+ #include <stddef.h>
+ #include <stdint.h>
+ 
+diff -up chromium-119.0.6045.105/gin/time_clamper.h.missing-header-files chromium-119.0.6045.105/gin/time_clamper.h
+--- chromium-119.0.6045.105/gin/time_clamper.h.missing-header-files	2023-11-01 19:10:28.000000000 +0100
++++ chromium-119.0.6045.105/gin/time_clamper.h	2023-11-06 14:34:01.818869196 +0100
+@@ -48,7 +48,7 @@ class GIN_EXPORT TimeClamper {
+     const int64_t micros = now_micros % 1000;
+     // abs() is necessary for devices with times before unix-epoch (most likely
+     // configured incorrectly).
+-    if (abs(micros) + kResolutionMicros < 1000) {
++    if (std::abs(micros) + kResolutionMicros < 1000) {
+       return now_micros / 1000;
+     }
+     return ClampTimeResolution(now_micros) / 1000;
+diff -up chromium-119.0.6045.105/gpu/config/gpu_feature_info.h.missing-header-files chromium-119.0.6045.105/gpu/config/gpu_feature_info.h
+--- chromium-119.0.6045.105/gpu/config/gpu_feature_info.h.missing-header-files	2023-11-01 19:10:28.000000000 +0100
++++ chromium-119.0.6045.105/gpu/config/gpu_feature_info.h	2023-11-06 14:34:01.809869004 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ #include <vector>
+ 
+diff -up chromium-119.0.6045.105/net/base/net_export.h.missing-header-files chromium-119.0.6045.105/net/base/net_export.h
+--- chromium-119.0.6045.105/net/base/net_export.h.missing-header-files	2023-11-01 19:10:32.000000000 +0100
++++ chromium-119.0.6045.105/net/base/net_export.h	2023-11-06 14:34:01.809869004 +0100
+@@ -5,6 +5,8 @@
+ #ifndef NET_BASE_NET_EXPORT_H_
+ #define NET_BASE_NET_EXPORT_H_
+ 
++#include <cstdint>
++
+ // Defines NET_EXPORT so that functionality implemented by the net module can
+ // be exported to consumers, and NET_EXPORT_PRIVATE that allows unit tests to
+ // access features not intended to be used directly by real consumers.
+diff -up chromium-119.0.6045.105/pdf/document_attachment_info.h.missing-header-files chromium-119.0.6045.105/pdf/document_attachment_info.h
+--- chromium-119.0.6045.105/pdf/document_attachment_info.h.missing-header-files	2023-11-01 19:10:34.000000000 +0100
++++ chromium-119.0.6045.105/pdf/document_attachment_info.h	2023-11-06 14:34:01.815869132 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ 
+diff -up chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h.missing-header-files chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h
+--- chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h.missing-header-files	2023-11-01 19:10:34.000000000 +0100
++++ chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h	2023-11-06 14:34:01.809869004 +0100
+@@ -5,6 +5,7 @@
+ #ifndef SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
+ #define SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
+ 
++#include <cstdint>
+ #include <bitset>
+ #include <cstdint>
+ #include <string>
+diff -up chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h.missing-header-files chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h
+--- chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h.missing-header-files	2023-11-01 19:10:35.000000000 +0100
++++ chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h	2023-11-06 14:34:01.820869238 +0100
+@@ -8,6 +8,9 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ 
++#include <cstddef>
++#include <cstdint>
++
+ #include <type_traits>
+ 
+ namespace device {
+diff -up chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc.missing-header-files chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc
+--- chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc.missing-header-files	2023-11-01 19:10:35.000000000 +0100
++++ chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc	2023-11-06 14:34:01.818869196 +0100
+@@ -3,6 +3,7 @@
+ // found in the LICENSE file.
+ 
+ #include "skia/ext/skcolorspace_trfn.h"
++#include <cmath>
+ 
+ #include <cmath>
+ 
+diff -up chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h.missing-header-files chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h
+--- chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h.missing-header-files	2023-11-01 19:10:36.000000000 +0100
++++ chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h	2023-11-06 14:34:01.809869004 +0100
+@@ -27,6 +27,7 @@
+ #ifndef ABSL_STRINGS_STRING_VIEW_H_
+ #define ABSL_STRINGS_STRING_VIEW_H_
+ 
++#include <cstdint>
+ #include <algorithm>
+ #include <cassert>
+ #include <cstddef>
+diff -up chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h.missing-header-files chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h
+--- chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h.missing-header-files	2023-11-01 19:11:59.000000000 +0100
++++ chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h	2023-11-06 14:34:01.810869025 +0100
+@@ -10,6 +10,7 @@
+ #ifndef GLSLANG_SHADERVARS_H_
+ #define GLSLANG_SHADERVARS_H_
+ 
++#include <cstdint>
+ #include <algorithm>
+ #include <array>
+ #include <cstdint>
+diff -up chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.missing-header-files chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h
+--- chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.missing-header-files	2023-11-01 19:10:37.000000000 +0100
++++ chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h	2023-11-06 14:34:01.810869025 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <array>
+ #include <cstdint>
+ #include <functional>
+diff -up chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.missing-header-files chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h
+--- chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.missing-header-files	2023-11-01 19:13:50.000000000 +0100
++++ chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h	2023-11-06 14:34:01.810869025 +0100
+@@ -15,6 +15,7 @@
+ #ifndef SRC_TINT_LANG_SPIRV_READER_AST_PARSER_NAMER_H_
+ #define SRC_TINT_LANG_SPIRV_READER_AST_PARSER_NAMER_H_
+ 
++#include <cstdint>
+ #include <string>
+ #include <unordered_map>
+ #include <vector>
+diff -up chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h.missing-header-files chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h
+--- chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h.missing-header-files	2023-11-01 19:11:20.000000000 +0100
++++ chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h	2023-11-06 14:34:01.819869217 +0100
+@@ -5,6 +5,7 @@
+ #ifndef IPCZ_SRC_IPCZ_ROUTER_LINK_H_
+ #define IPCZ_SRC_IPCZ_ROUTER_LINK_H_
+ 
++#include <memory>
+ #include <cstddef>
+ #include <functional>
+ #include <memory>
+diff -up chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc.missing-header-files chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc
+--- chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc.missing-header-files	2023-11-01 19:11:53.000000000 +0100
++++ chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc	2023-11-06 14:34:01.819869217 +0100
+@@ -14,6 +14,7 @@
+  * limitations under the License.
+  */
+ 
++#include <cmath>
+ #include "cpp/palettes/tones.h"
+ 
+ #include "cpp/cam/cam.h"
+diff -up chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.missing-header-files chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h
+--- chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.missing-header-files	2023-11-01 19:11:59.000000000 +0100
++++ chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h	2023-11-06 14:34:01.810869025 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <functional>
+ #include <map>
+ #include <set>
+diff -up chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h.missing-header-files chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h
+--- chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h.missing-header-files	2023-11-01 19:14:48.000000000 +0100
++++ chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h	2023-11-06 14:34:01.815869132 +0100
+@@ -7,6 +7,8 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
++
+ namespace pdfium {
+ namespace annotation_flags {
+ 
+diff -up chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h.missing-header-files chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h
+--- chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h.missing-header-files	2023-11-01 19:12:02.000000000 +0100
++++ chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h	2023-11-06 14:34:01.813869089 +0100
+@@ -17,6 +17,7 @@ limitations under the License.
+ #define RUY_RUY_PROFILER_INSTRUMENTATION_H_
+ 
+ #ifdef RUY_PROFILER
++#include <string>
+ #include <cstdio>
+ #include <mutex>
+ #include <vector>
+diff -up chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp.missing-header-files chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp
+--- chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp.missing-header-files	2023-11-01 19:12:15.000000000 +0100
++++ chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp	2023-11-06 14:34:01.810869025 +0100
+@@ -17,6 +17,7 @@
+ 
+ #include "System/Debug.hpp"
+ 
++#include <cstdint>
+ #include <cstddef>
+ #include <cstdint>
+ #include <functional>
+diff -up chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.missing-header-files chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc
+--- chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.missing-header-files	2023-11-01 19:12:42.000000000 +0100
++++ chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc	2023-11-06 14:34:01.814869110 +0100
+@@ -45,6 +45,7 @@
+ #include "llvm/Support/SaveAndRestore.h"
+ #include "llvm/Support/raw_ostream.h"
+ #include <algorithm>
++#include <cstdint>
+ #include <string>
+ #include <sysexits.h>
+ #ifdef HAVE_BACKTRACE
+diff -up chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.missing-header-files chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h
+--- chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.missing-header-files	2023-11-01 19:13:20.000000000 +0100
++++ chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h	2023-11-06 14:34:01.813869089 +0100
+@@ -31,6 +31,7 @@ limitations under the License.
+ #ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
+ #define TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
+ 
++#include <cstdint>
+ #include <complex>
+ #include <deque>
+ #include <vector>
+diff -up chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.missing-header-files chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h
+--- chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.missing-header-files	2023-11-01 19:12:45.000000000 +0100
++++ chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h	2023-11-06 14:34:01.817869174 +0100
+@@ -2884,6 +2884,7 @@ static void vma_aligned_free(void* VMA_N
+ 
+ // Define this macro to 1 to enable functions: vmaBuildStatsString, vmaFreeStatsString.
+ #if VMA_STATS_STRING_ENABLED
++#include <stdio.h>
+     static inline void VmaUint32ToStr(char* VMA_NOT_NULL outStr, size_t strLen, uint32_t num)
+     {
+         snprintf(outStr, strLen, "%u", static_cast<unsigned int>(num));
+diff -up chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc.missing-header-files chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc
+--- chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc.missing-header-files	2023-11-01 19:14:05.000000000 +0100
++++ chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc	2023-11-06 14:34:01.819869217 +0100
+@@ -8,6 +8,8 @@
+  *  be found in the AUTHORS file in the root of the source tree.
+  */
+ 
++#include <cstring>
++
+ #include "audio/utility/channel_mixer.h"
+ 
+ #include "audio/utility/channel_mixing_matrix.h"
+diff -up chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h.missing-header-files chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h
+--- chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h.missing-header-files	2023-11-01 19:14:06.000000000 +0100
++++ chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h	2023-11-06 14:34:01.819869217 +0100
+@@ -11,6 +11,7 @@
+ #ifndef COMMON_VIDEO_H264_SPS_PARSER_H_
+ #define COMMON_VIDEO_H264_SPS_PARSER_H_
+ 
++#include <cstdint>
+ #include "absl/types/optional.h"
+ #include "rtc_base/bitstream_reader.h"
+ 
+diff -up chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h.missing-header-files chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h
+--- chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h.missing-header-files	2023-11-01 19:14:11.000000000 +0100
++++ chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h	2023-11-06 14:34:01.819869217 +0100
+@@ -11,6 +11,7 @@
+ #ifndef MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
+ #define MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
+ 
++#include <cstdint>
+ #include <limits>
+ 
+ #include "absl/types/optional.h"
+diff -up chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-header-files chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc
+--- chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-header-files	2023-11-01 19:14:12.000000000 +0100
++++ chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc	2023-11-06 14:34:01.819869217 +0100
+@@ -10,6 +10,7 @@
+ 
+ #include "modules/video_coding/utility/ivf_file_reader.h"
+ 
++#include <cstring>
+ #include <string>
+ #include <vector>
+ 
+diff -up chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h.missing-header-files chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h
+--- chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h.missing-header-files	2023-11-01 19:11:28.000000000 +0100
++++ chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h	2023-11-06 14:34:01.814869110 +0100
+@@ -7,6 +7,8 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
++
+ #include "base/component_export.h"
+ #include "ui/gfx/geometry/matrix3_f.h"
+ 
+diff -up chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h.missing-header-files chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h
+--- chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h.missing-header-files	2023-11-01 19:11:28.000000000 +0100
++++ chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h	2023-11-06 14:34:01.812869068 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <array>
+ #include <cstddef>
+ #include <cstdint>
+diff -up chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h.missing-header-files chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h
+--- chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h.missing-header-files	2023-11-01 19:11:28.000000000 +0100
++++ chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h	2023-11-06 14:34:01.819869217 +0100
+@@ -9,6 +9,8 @@
+ 
+ #include "ui/gfx/buffer_types.h"
+ 
++#include <cstdint>
++
+ namespace ui {
+ 
+ int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format);
diff --git a/srcpkgs/chromium/patches/chromium-121-mnemonic-error.patch b/srcpkgs/chromium/patches/chromium-121-mnemonic-error.patch
new file mode 100644
index 0000000000000..61239e7f02276
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-mnemonic-error.patch
@@ -0,0 +1,12 @@
+diff -up chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn.mnemonic-error chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn
+--- chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn.mnemonic-error	2023-12-19 18:14:43.027723832 +0100
++++ chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn	2023-12-19 18:39:47.492384620 +0100
+@@ -1731,8 +1731,6 @@ action_foreach("element_locator_test_pro
+   python_path_root = "${root_out_dir}/pyproto"
+   python_path_proto = "${python_path_root}/third_party/blink/renderer/core/lcp_critical_path_predictor"
+ 
+-  mnemonic = "ELOC_PROTO"
+-
+   source_dir = "lcp_critical_path_predictor/test_proto"
+   sources = rebase_path([ "lcp_image_id.asciipb" ], "", source_dir)
+   sources += rebase_path([ "lcp_image_id_b.asciipb" ], "", source_dir)
diff --git a/srcpkgs/chromium/patches/chromium-120-no_matching_constructor.patch b/srcpkgs/chromium/patches/chromium-121-no_matching_constructor.patch
similarity index 75%
rename from srcpkgs/chromium/patches/chromium-120-no_matching_constructor.patch
rename to srcpkgs/chromium/patches/chromium-121-no_matching_constructor.patch
index b1d987adeff8d..332a91ad06b3d 100644
--- a/srcpkgs/chromium/patches/chromium-120-no_matching_constructor.patch
+++ b/srcpkgs/chromium/patches/chromium-121-no_matching_constructor.patch
@@ -114,9 +114,9 @@ diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_per
 +        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal};
    }
 -  buttons.emplace_back(l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
--                       ButtonType::kAllow, ui::ButtonStyle::kTonal);
+-                       ButtonType::kAllow, ui::ButtonStyle::kTonal, kAllowId);
 +  buttons.emplace_back() = {l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
-+                       ButtonType::kAllow, ui::ButtonStyle::kTonal};
++                       ButtonType::kAllow, ui::ButtonStyle::kTonal, kAllowId};
    return buttons;
  }
  
@@ -145,55 +145,6 @@ diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_per
    return buttons;
  }
  
-diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc
---- chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.no_matching_constructor	2023-11-29 22:39:53.000000000 +0100
-+++ chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc	2023-12-03 17:31:25.756420342 +0100
-@@ -63,18 +63,18 @@ EmbeddedPermissionPromptPreviouslyDenied
- std::vector<EmbeddedPermissionPromptPreviouslyDeniedView::ButtonConfiguration>
- EmbeddedPermissionPromptPreviouslyDeniedView::GetButtonsConfiguration() const {
-   std::vector<ButtonConfiguration> buttons;
--  buttons.emplace_back(
-+  buttons.emplace_back() = {
-       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_NOT_ALLOWING),
--      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal);
-+      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal};
- 
-   if (base::FeatureList::IsEnabled(permissions::features::kOneTimePermission)) {
--    buttons.emplace_back(
-+    buttons.emplace_back() = {
-         l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME),
--        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal);
-+        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal};
-   } else {
--    buttons.emplace_back(
-+    buttons.emplace_back() = {
-         l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME),
--        ButtonType::kAllow, ui::ButtonStyle::kTonal);
-+        ButtonType::kAllow, ui::ButtonStyle::kTonal};
-   }
-   return buttons;
- }
-diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc
---- chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.no_matching_constructor	2023-11-29 22:39:53.000000000 +0100
-+++ chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc	2023-12-03 17:31:25.750420227 +0100
-@@ -57,13 +57,13 @@ EmbeddedPermissionPromptPreviouslyGrante
- std::vector<EmbeddedPermissionPromptPreviouslyGrantedView::ButtonConfiguration>
- EmbeddedPermissionPromptPreviouslyGrantedView::GetButtonsConfiguration() const {
-   std::vector<ButtonConfiguration> buttons;
--  buttons.emplace_back(
-+  buttons.emplace_back() = {
-       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_ALLOWING),
--      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal);
-+      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal};
- 
--  buttons.emplace_back(
-+  buttons.emplace_back() = {
-       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_STOP_ALLOWING),
--      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal);
-+      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal};
-   return buttons;
- }
- 
 diff -up chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc.no_matching_constructor chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc
 --- chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc.no_matching_constructor	2023-11-29 22:39:54.000000000 +0100
 +++ chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc	2023-12-03 17:31:25.750420227 +0100
@@ -246,18 +197,6 @@ diff -up chromium-120.0.6099.56/components/autofill/core/browser/webdata/autofil
  
      if (type == ADDRESS_HOME_COUNTRY) {
        country_code = base::UTF16ToUTF8(s.ColumnString16(1));
-diff -up chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc.no_matching_constructor chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc
---- chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc.no_matching_constructor	2023-11-29 22:39:58.000000000 +0100
-+++ chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc	2023-12-03 17:31:25.751420246 +0100
-@@ -630,7 +630,7 @@ void PasswordManager::OnUserModifiedNonP
-   // |driver| might be empty on iOS or in tests.
-   int driver_id = driver ? driver->GetId() : 0;
-   possible_usernames_.Put(
--      PossibleUsernameFieldIdentifier(driver_id, renderer_id),
-+      PossibleUsernameFieldIdentifier{driver_id, renderer_id},
-       PossibleUsernameData(GetSignonRealm(driver->GetLastCommittedURL()),
-                            renderer_id, value, base::Time::Now(), driver_id,
-                            autocomplete_attribute_has_username, is_likely_otp));
 diff -up chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc.no_matching_constructor chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
 --- chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc.no_matching_constructor	2023-11-29 22:40:01.000000000 +0100
 +++ chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc	2023-12-03 17:31:25.751420246 +0100
@@ -300,45 +239,6 @@ diff -up chromium-120.0.6099.56/content/browser/interest_group/interest_group_st
    }
    if (!interest_group_kanon_query.Succeeded()) {
      return absl::nullopt;
-diff -up chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc.no_matching_constructor chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc
---- chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc.no_matching_constructor	2023-11-29 22:40:01.000000000 +0100
-+++ chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc	2023-12-03 20:49:28.059042672 +0100
-@@ -8685,7 +8685,7 @@ void RenderFrameHostImpl::SendFencedFram
-   for (const blink::FencedFrame::ReportingDestination& destination :
-        destinations) {
-     SendFencedFrameReportingBeaconInternal(
--        DestinationEnumEvent(event_type, event_data), destination,
-+        DestinationEnumEvent{event_type, event_data}, destination,
-         /*from_renderer=*/true, attribution_reporting_runtime_features);
-   }
- }
-@@ -8720,7 +8720,7 @@ void RenderFrameHostImpl::SendFencedFram
-   }
- 
-   SendFencedFrameReportingBeaconInternal(
--      DestinationURLEvent(destination_url),
-+      DestinationURLEvent{destination_url},
-       blink::FencedFrame::ReportingDestination::kBuyer,
-       /*from_renderer=*/true, attribution_reporting_runtime_features);
- }
-@@ -8820,7 +8820,7 @@ void RenderFrameHostImpl::MaybeSendFence
-         data = info->data;
-       }
-       initiator_rfh->SendFencedFrameReportingBeaconInternal(
--          AutomaticBeaconEvent(event_type, data), destination,
-+          AutomaticBeaconEvent{event_type, data}, destination,
-           /*from_renderer=*/false, attribution_reporting_features,
-           navigation_request.GetNavigationId());
-     }
-@@ -8832,7 +8832,7 @@ void RenderFrameHostImpl::MaybeSendFence
-     for (blink::FencedFrame::ReportingDestination destination :
-          info->destinations) {
-       initiator_rfh->SendFencedFrameReportingBeaconInternal(
--          AutomaticBeaconEvent(event_type, info->data), destination,
-+          AutomaticBeaconEvent{event_type, info->data}, destination,
-           /*from_renderer=*/false, info->attribution_reporting_runtime_features,
-           navigation_request.GetNavigationId());
-     }
 diff -up chromium-120.0.6099.56/net/dns/host_resolver_cache.cc.no_matching_constructor chromium-120.0.6099.56/net/dns/host_resolver_cache.cc
 --- chromium-120.0.6099.56/net/dns/host_resolver_cache.cc.no_matching_constructor	2023-11-29 22:40:07.000000000 +0100
 +++ chromium-120.0.6099.56/net/dns/host_resolver_cache.cc	2023-12-03 17:31:25.754420303 +0100
@@ -740,3 +640,306 @@ diff -up chromium-120.0.6099.56/ui/gtk/gtk_ui.cc.no_matching_constructor chromiu
    }
    return config;
  }
+diff -up chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.than chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc
+--- chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.than	2023-12-19 17:13:15.116949814 +0100
++++ chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc	2023-12-19 17:27:18.807102716 +0100
+@@ -66,17 +66,17 @@ EmbeddedPermissionPromptPreviouslyDenied
+ std::vector<EmbeddedPermissionPromptPreviouslyDeniedView::ButtonConfiguration>
+ EmbeddedPermissionPromptPreviouslyDeniedView::GetButtonsConfiguration() const {
+   std::vector<ButtonConfiguration> buttons;
+-  buttons.emplace_back(
++  buttons.emplace_back() = {
+       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_NOT_ALLOWING),
+-      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal);
++      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal};
+ 
+   if (base::FeatureList::IsEnabled(permissions::features::kOneTimePermission)) {
+-    buttons.emplace_back(
++    buttons.emplace_back() = {
+         l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME),
+-        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal, kAllowThisTimeId);
++        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal, kAllowThisTimeId};
+   } else {
+-    buttons.emplace_back(l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
+-                         ButtonType::kAllow, ui::ButtonStyle::kTonal);
++    buttons.emplace_back() = {l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
++                         ButtonType::kAllow, ui::ButtonStyle::kTonal};
+   }
+   return buttons;
+ }
+diff -up chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.than chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc
+--- chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.than	2023-12-19 17:39:17.818834020 +0100
++++ chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc	2023-12-19 17:44:15.346337876 +0100
+@@ -61,13 +61,13 @@ EmbeddedPermissionPromptPreviouslyGrante
+ std::vector<EmbeddedPermissionPromptPreviouslyGrantedView::ButtonConfiguration>
+ EmbeddedPermissionPromptPreviouslyGrantedView::GetButtonsConfiguration() const {
+   std::vector<ButtonConfiguration> buttons;
+-  buttons.emplace_back(
++  buttons.emplace_back() = {
+       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_ALLOWING),
+-      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal);
++      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal};
+ 
+-  buttons.emplace_back(
++  buttons.emplace_back() = {
+       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_STOP_ALLOWING),
+-      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal, kStopAllowingId);
++      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal, kStopAllowingId};
+   return buttons;
+ }
+ 
+diff -up chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc.than chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc
+--- chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc.than	2023-12-19 17:39:17.819834039 +0100
++++ chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc	2023-12-19 17:48:33.144389081 +0100
+@@ -666,7 +666,7 @@ void PasswordManager::OnUserModifiedNonP
+     it->second.last_change = base::Time::Now();
+   } else {
+     possible_usernames_.Put(
+-        PossibleUsernameFieldIdentifier(driver_id, renderer_id),
++        PossibleUsernameFieldIdentifier{driver_id, renderer_id},
+         PossibleUsernameData(GetSignonRealm(driver->GetLastCommittedURL()),
+                              renderer_id, value, base::Time::Now(), driver_id,
+                              autocomplete_attribute_has_username,
+diff -up chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc.than chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc
+--- chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc.than	2023-12-19 17:39:17.825834156 +0100
++++ chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc	2023-12-19 17:53:43.153283847 +0100
+@@ -8561,7 +8561,7 @@ void RenderFrameHostImpl::SendFencedFram
+   for (const blink::FencedFrame::ReportingDestination& destination :
+        destinations) {
+     SendFencedFrameReportingBeaconInternal(
+-        DestinationEnumEvent(event_type, event_data), destination,
++        DestinationEnumEvent{event_type, event_data}, destination,
+         attribution_reporting_runtime_features);
+   }
+ }
+@@ -8593,7 +8593,7 @@ void RenderFrameHostImpl::SendFencedFram
+   }
+ 
+   SendFencedFrameReportingBeaconInternal(
+-      DestinationURLEvent(destination_url),
++      DestinationURLEvent{destination_url},
+       blink::FencedFrame::ReportingDestination::kBuyer,
+       attribution_reporting_runtime_features);
+ }
+@@ -8730,7 +8730,7 @@ void RenderFrameHostImpl::MaybeSendFence
+         data = info->data;
+       }
+       initiator_rfh->SendFencedFrameReportingBeaconInternal(
+-          AutomaticBeaconEvent(event_type, data), destination,
++          AutomaticBeaconEvent{event_type, data}, destination,
+           attribution_reporting_features, navigation_request.GetNavigationId());
+     }
+   } else {
+@@ -8741,7 +8741,7 @@ void RenderFrameHostImpl::MaybeSendFence
+     for (blink::FencedFrame::ReportingDestination destination :
+          info->destinations) {
+       initiator_rfh->SendFencedFrameReportingBeaconInternal(
+-          AutomaticBeaconEvent(event_type, info->data), destination,
++          AutomaticBeaconEvent{event_type, info->data}, destination,
+           info->attribution_reporting_runtime_features,
+           navigation_request.GetNavigationId());
+     }
+diff -up chromium-121.0.6167.57/base/nix/mime_util_xdg.cc.me chromium-121.0.6167.57/base/nix/mime_util_xdg.cc
+--- chromium-121.0.6167.57/base/nix/mime_util_xdg.cc.me	2024-01-21 16:54:15.261844448 +0100
++++ chromium-121.0.6167.57/base/nix/mime_util_xdg.cc	2024-01-21 16:55:48.705577424 +0100
+@@ -56,7 +56,7 @@ void LoadAllMimeCacheFiles(MimeTypeMap&
+   for (const auto& path : GetXDGDataSearchLocations(env.get())) {
+     FilePath mime_cache = path.Append("mime/mime.cache");
+     if (GetFileInfo(mime_cache, &info) && ParseMimeTypes(mime_cache, map)) {
+-      files.emplace_back(mime_cache, info.last_modified);
++      files.emplace_back() = {mime_cache, info.last_modified};
+     }
+   }
+ }
+diff -up chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc.me chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc
+--- chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc.me	2024-01-21 18:11:31.397859608 +0100
++++ chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc	2024-01-21 18:20:07.715415037 +0100
+@@ -239,7 +239,7 @@ void WorkerWatcher::OnWorkerCreated(
+   DCHECK(insertion_result.second);
+ 
+   absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [&,
+            this](const content::GlobalRenderFrameHostId& render_frame_host_id) {
+             AddFrameClientConnection(insertion_result.first->second.get(),
+@@ -248,7 +248,7 @@ void WorkerWatcher::OnWorkerCreated(
+           [&, this](blink::DedicatedWorkerToken dedicated_worker_token) {
+             ConnectDedicatedWorkerClient(insertion_result.first->second.get(),
+                                          dedicated_worker_token);
+-          }),
++          }},
+       creator);
+ }
+ 
+@@ -265,7 +265,7 @@ void WorkerWatcher::OnBeforeWorkerDestro
+   // First disconnect the creator's node from this worker node.
+ 
+   absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [&,
+            this](const content::GlobalRenderFrameHostId& render_frame_host_id) {
+             RemoveFrameClientConnection(worker_node.get(),
+@@ -274,7 +274,7 @@ void WorkerWatcher::OnBeforeWorkerDestro
+           [&, this](blink::DedicatedWorkerToken dedicated_worker_token) {
+             DisconnectDedicatedWorkerClient(worker_node.get(),
+                                             dedicated_worker_token);
+-          }),
++          }},
+       creator);
+ 
+   // Disconnect all child workers before destroying the node.
+@@ -446,7 +446,7 @@ void WorkerWatcher::OnControlleeAdded(
+     const std::string& client_uuid,
+     const content::ServiceWorkerClientInfo& client_info) {
+   absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [&, this](content::GlobalRenderFrameHostId render_frame_host_id) {
+             // For window clients, it is necessary to wait until the navigation
+             // has committed to a RenderFrameHost.
+@@ -484,7 +484,7 @@ void WorkerWatcher::OnControlleeAdded(
+               ConnectSharedWorkerClient(service_worker_node,
+                                         shared_worker_token);
+             }
+-          }),
++          }},
+       client_info);
+ }
+ 
+@@ -524,7 +524,7 @@ void WorkerWatcher::OnControlleeRemoved(
+     return;
+ 
+   absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [&, this](content::GlobalRenderFrameHostId render_frame_host_id) {
+             RemoveFrameClientConnection(worker_node, render_frame_host_id);
+           },
+@@ -534,7 +534,7 @@ void WorkerWatcher::OnControlleeRemoved(
+           },
+           [&, this](blink::SharedWorkerToken shared_worker_token) {
+             DisconnectSharedWorkerClient(worker_node, shared_worker_token);
+-          }),
++          }},
+       client);
+ }
+ 
+@@ -810,7 +810,7 @@ void WorkerWatcher::ConnectAllServiceWor
+ 
+   for (const auto& kv : it->second) {
+     absl::visit(
+-        base::Overloaded(
++        base::Overloaded{
+             [&, this](content::GlobalRenderFrameHostId render_frame_host_id) {
+               AddFrameClientConnection(service_worker_node,
+                                        render_frame_host_id);
+@@ -822,7 +822,7 @@ void WorkerWatcher::ConnectAllServiceWor
+             [&, this](blink::SharedWorkerToken shared_worker_token) {
+               ConnectSharedWorkerClient(service_worker_node,
+                                         shared_worker_token);
+-            }),
++            }},
+         kv.second);
+   }
+ }
+@@ -837,7 +837,7 @@ void WorkerWatcher::DisconnectAllService
+ 
+   for (const auto& kv : it->second) {
+     absl::visit(
+-        base::Overloaded(
++        base::Overloaded{
+             [&, this](
+                 const content::GlobalRenderFrameHostId& render_frame_host_id) {
+               RemoveFrameClientConnection(service_worker_node,
+@@ -851,7 +851,7 @@ void WorkerWatcher::DisconnectAllService
+             [&, this](const blink::SharedWorkerToken& shared_worker_token) {
+               DisconnectSharedWorkerClient(service_worker_node,
+                                            shared_worker_token);
+-            }),
++            }},
+         kv.second);
+   }
+ }
+diff -up chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc.me chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc
+--- chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc.me	2024-01-21 18:40:52.284389286 +0100
++++ chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc	2024-01-21 18:41:17.276840222 +0100
+@@ -764,7 +764,7 @@ FirstPartySetParser::ParseSetsFromEnterp
+                      context.GetPolicySetsFromList(
+                          policy.FindList(kFirstPartySetPolicyAdditionsField),
+                          PolicySetType::kAddition));
+-    return ParsedPolicySetLists(std::move(replacements), std::move(additions));
++    return ParsedPolicySetLists{std::move(replacements), std::move(additions)};
+   }();
+ 
+   context.PostProcessSetLists(set_lists);
+diff -up chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h.me chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h
+--- chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h.me	2024-01-21 19:30:00.536387844 +0100
++++ chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h	2024-01-21 20:29:50.236287514 +0100
+@@ -133,6 +133,7 @@ class CONTENT_EXPORT HeaderDirectFromSel
+ 
+     // The Ad-Auction-Signals response served by `origin`.
+     std::string response_json;
++    UnprocessedResponse(auto u, auto s) : origin(u), response_json(s) { }
+   };
+ 
+   // Information from ParseAndFind() calls used by ParseAndFindCompleted.
+diff -up chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc.me chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc
+--- chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc.me	2024-01-21 21:58:48.773366301 +0100
++++ chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc	2024-01-21 22:02:17.956086167 +0100
+@@ -360,10 +360,10 @@ ServiceWorkerMainResourceLoaderIntercept
+   }
+   auto* storage_partition = process->GetStoragePartition();
+ 
+-  return absl::visit(base::Overloaded([&, this](auto token) {
++  return absl::visit(base::Overloaded{[&, this](auto token) {
+                        return GetStorageKeyFromWorkerHost(storage_partition,
+                                                           token, origin);
+-                     }),
++                     }},
+                      *worker_token_);
+ }
+ 
+diff -up chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc.me chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc
+--- chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc.me	2024-01-21 22:04:30.446454697 +0100
++++ chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc	2024-01-21 22:05:22.847391481 +0100
+@@ -870,7 +870,7 @@ ServiceWorkerContainerHost::GetClientTyp
+   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+   DCHECK(client_info_);
+   return absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [](GlobalRenderFrameHostId render_frame_host_id) {
+             return blink::mojom::ServiceWorkerClientType::kWindow;
+           },
+@@ -879,7 +879,7 @@ ServiceWorkerContainerHost::GetClientTyp
+           },
+           [](blink::SharedWorkerToken shared_worker_token) {
+             return blink::mojom::ServiceWorkerClientType::kSharedWorker;
+-          }),
++          }},
+       *client_info_);
+ }
+ 
+diff -up chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc.me chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc
+--- chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc.me	2024-01-21 22:37:00.969416148 +0100
++++ chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc	2024-01-21 22:38:07.754528335 +0100
+@@ -251,7 +251,7 @@ void DedicatedWorkerHost::StartScriptLoa
+   RenderFrameHostImpl* creator_render_frame_host = nullptr;
+   DedicatedWorkerHost* creator_worker = nullptr;
+ 
+-  absl::visit(base::Overloaded(
++  absl::visit(base::Overloaded{
+                   [&](const GlobalRenderFrameHostId& render_frame_host_id) {
+                     creator_render_frame_host =
+                         RenderFrameHostImpl::FromID(render_frame_host_id);
+@@ -259,7 +259,7 @@ void DedicatedWorkerHost::StartScriptLoa
+                   [&](blink::DedicatedWorkerToken dedicated_worker_token) {
+                     creator_worker = service_->GetDedicatedWorkerHostFromToken(
+                         dedicated_worker_token);
+-                  }),
++                  }},
+               creator_);
+ 
+   if (!creator_render_frame_host && !creator_worker) {
diff --git a/srcpkgs/chromium/patches/chromium-121-nullptr_t-without-namespace-std.patch b/srcpkgs/chromium/patches/chromium-121-nullptr_t-without-namespace-std.patch
new file mode 100644
index 0000000000000..3defc393c084f
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-nullptr_t-without-namespace-std.patch
@@ -0,0 +1,12 @@
+diff -up chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h.than chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h
+--- chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h.than	2023-12-04 10:20:45.350540897 +0100
++++ chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h	2023-12-04 10:23:17.335339670 +0100
+@@ -21,7 +21,7 @@ class FragmentDataIteratorBase {
+ 
+  public:
+   explicit FragmentDataIteratorBase(Head& head) : fragment_head_(head) {}
+-  explicit FragmentDataIteratorBase(nullptr_t) {}
++  explicit FragmentDataIteratorBase(std::nullptr_t) {}
+ 
+   Data* GetFragmentData() const {
+     return !IsDone() ? &fragment_head_.at(idx_) : nullptr;
diff --git a/srcpkgs/chromium/patches/chromium-121-python3-invalid-escape-sequence.patch b/srcpkgs/chromium/patches/chromium-121-python3-invalid-escape-sequence.patch
new file mode 100644
index 0000000000000..c2bf5b489f7a1
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-python3-invalid-escape-sequence.patch
@@ -0,0 +1,77 @@
+diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py
+--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py.me	2024-01-15 20:48:28.177397102 +0100
++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py	2024-01-15 20:48:46.427768328 +0100
+@@ -18,7 +18,7 @@ class HTMLGenerationController(object):
+ 
+   def GetHTMLForInlineStylesheet(self, contents):
+     if self.current_module is None:
+-      if re.search('url\(.+\)', contents):
++      if re.search(r'url\(.+\)', contents):
+         raise Exception(
+             'Default HTMLGenerationController cannot handle inline style urls')
+       return contents
+diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py
+--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py.me	2024-01-15 20:49:39.363845083 +0100
++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py	2024-01-15 20:49:57.407212098 +0100
+@@ -4,4 +4,4 @@
+ 
+ 
+ def EscapeJSIfNeeded(js):
+-  return js.replace('</script>', '<\/script>')
++  return js.replace(r'</script>', r'<\/script>')
+diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py
+--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py.me	2024-01-15 20:50:11.819505254 +0100
++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py	2024-01-15 20:50:38.611050213 +0100
+@@ -293,6 +293,6 @@ class HTMLModuleParser():
+       html = ''
+     else:
+       if html.find('< /script>') != -1:
+-        raise Exception('Escape script tags with <\/script>')
++        raise Exception(r'Escape script tags with <\/script>')
+ 
+     return HTMLModuleParserResults(html)
+diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py
+--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py.me	2024-01-15 20:48:59.917042709 +0100
++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py	2024-01-15 20:49:24.402540761 +0100
+@@ -60,7 +60,7 @@ class ParsedStyleSheet(object):
+       return 'url(data:image/%s;base64,%s)' % (ext[1:], data.decode('utf-8'))
+ 
+     # I'm assuming we only have url()'s associated with images
+-    return re.sub('url\((?P<quote>"|\'|)(?P<url>[^"\'()]*)(?P=quote)\)',
++    return re.sub(r'url\((?P<quote>"|\'|)(?P<url>[^"\'()]*)(?P=quote)\)',
+                   InlineUrl, self.contents)
+ 
+   def AppendDirectlyDependentFilenamesTo(self, dependent_filenames):
+@@ -72,7 +72,7 @@ class ParsedStyleSheet(object):
+       raise Exception('@imports are not supported')
+ 
+     matches = re.findall(
+-        'url\((?:["|\']?)([^"\'()]*)(?:["|\']?)\)',
++        r'url\((?:["|\']?)([^"\'()]*)(?:["|\']?)\)',
+         self.contents)
+ 
+     def resolve_url(url):
+diff -up chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py.me chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py
+--- chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py.me	2024-01-15 20:50:56.810420400 +0100
++++ chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py	2024-01-15 20:52:33.506387261 +0100
+@@ -28,7 +28,7 @@ import platform
+ import sys
+ 
+ def glob_slash(dirname):
+-    """Like regular glob but replaces \ with / in returned paths."""
++    """Like regular glob but replaces \\ with / in returned paths."""
+     return [s.replace('\\', '/') for s in glob.glob(dirname)]
+ 
+ def main():
+diff -up chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py.me chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py
+--- chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py.me	2024-01-15 20:52:38.016479000 +0100
++++ chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py	2024-01-15 20:52:48.863699640 +0100
+@@ -28,7 +28,7 @@ import platform
+ import sys
+ 
+ def glob_slash(dirname):
+-    """Like regular glob but replaces \ with / in returned paths."""
++    """Like regular glob but replaces \\ with / in returned paths."""
+     return [s.replace('\\', '/') for s in glob.glob(dirname)]
+ 
+ def main():
diff --git a/srcpkgs/chromium/patches/chromium-121-rust-clang_lib.patch b/srcpkgs/chromium/patches/chromium-121-rust-clang_lib.patch
new file mode 100644
index 0000000000000..4014f9a827648
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-rust-clang_lib.patch
@@ -0,0 +1,22 @@
+--- a/build/config/clang/BUILD.gn
++++ b/build/config/clang/BUILD.gn
+@@ -128,14 +128,15 @@
+       } else if (is_apple) {
+         _dir = "darwin"
+       } else if (is_linux || is_chromeos) {
++        _dir = "linux"
+         if (current_cpu == "x64") {
+-          _dir = "x86_64-unknown-linux-gnu"
++          _suffix = "-x86_64"
+         } else if (current_cpu == "x86") {
+-          _dir = "i386-unknown-linux-gnu"
++          _suffix = "-i386"
+         } else if (current_cpu == "arm") {
+-          _dir = "armv7-unknown-linux-gnueabihf"
++          _suffix = "-armhf"
+         } else if (current_cpu == "arm64") {
+-          _dir = "aarch64-unknown-linux-gnu"
++          _suffix = "-aarch64"
+         } else {
+           assert(false)  # Unhandled cpu type
+         }
diff --git a/srcpkgs/chromium/patches/chromium-121-rust-without-profiler_builtins.patch b/srcpkgs/chromium/patches/chromium-121-rust-without-profiler_builtins.patch
new file mode 100644
index 0000000000000..25c3422982933
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-rust-without-profiler_builtins.patch
@@ -0,0 +1,10 @@
+--- a/build/rust/std/BUILD.gn
++++ b/build/rust/std/BUILD.gn
+@@ -100,7 +100,6 @@
+   # don't need to pass to the C++ linker because they're used for specialized
+   # purposes.
+   skip_stdlib_files = [
+-    "profiler_builtins",
+     "rustc_std_workspace_alloc",
+     "rustc_std_workspace_core",
+     "rustc_std_workspace_std",
diff --git a/srcpkgs/chromium/patches/chromium-121-system-libxml.patch b/srcpkgs/chromium/patches/chromium-121-system-libxml.patch
new file mode 100644
index 0000000000000..da463c26d323a
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-system-libxml.patch
@@ -0,0 +1,24 @@
+diff -up chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h.me chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h
+--- chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h.me	2024-02-06 08:22:36.013021582 +0100
++++ chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h	2024-02-06 08:23:08.281607499 +0100
+@@ -77,7 +77,7 @@ class XSLTProcessor final : public Scrip
+ 
+   void reset();
+ 
+-  static void ParseErrorFunc(void* user_data, const xmlError*);
++  static void ParseErrorFunc(void* user_data, xmlError*);
+   static void GenericErrorFunc(void* user_data, const char* msg, ...);
+ 
+   // Only for libXSLT callbacks
+diff -up chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc.me chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc
+--- chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc.me	2024-02-06 08:14:32.368066214 +0100
++++ chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc	2024-02-06 08:23:08.282607518 +0100
+@@ -66,7 +66,7 @@ void XSLTProcessor::GenericErrorFunc(voi
+   // It would be nice to do something with this error message.
+ }
+ 
+-void XSLTProcessor::ParseErrorFunc(void* user_data, const xmlError* error) {
++void XSLTProcessor::ParseErrorFunc(void* user_data, xmlError* error) {
+   FrameConsole* console = static_cast<FrameConsole*>(user_data);
+   if (!console)
+     return;
diff --git a/srcpkgs/chromium/patches/chromium-120-typename.patch b/srcpkgs/chromium/patches/chromium-121-typename.patch
similarity index 78%
rename from srcpkgs/chromium/patches/chromium-120-typename.patch
rename to srcpkgs/chromium/patches/chromium-121-typename.patch
index 9a2d878b12b54..e83e62c60a54e 100644
--- a/srcpkgs/chromium/patches/chromium-120-typename.patch
+++ b/srcpkgs/chromium/patches/chromium-121-typename.patch
@@ -203,3 +203,57 @@ diff -up chromium-120.0.6099.56/third_party/blink/renderer/bindings/core/v8/asyn
        ExceptionState& exception_state) = 0;
  };
  
+diff -up chromium-121.0.6167.57/base/functional/bind_internal.h.me chromium-121.0.6167.57/base/functional/bind_internal.h
+--- chromium-121.0.6167.57/base/functional/bind_internal.h.me	2024-01-21 16:10:09.809037581 +0100
++++ chromium-121.0.6167.57/base/functional/bind_internal.h	2024-01-21 16:46:33.759397303 +0100
+@@ -1533,11 +1533,11 @@ template <int i,
+           typename Param>
+ struct ParamCanBeBound {
+  private:
+-  using UnwrappedParam = BindArgument<i>::template ForwardedAs<
++  using UnwrappedParam = typename BindArgument<i>::template ForwardedAs<
+       Unwrapped>::template ToParamWithType<Param>;
+-  using ParamStorage = BindArgument<i>::template ToParamWithType<
++  using ParamStorage = typename BindArgument<i>::template ToParamWithType<
+       Param>::template StoredAs<Storage>;
+-  using BoundStorage =
++  using BoundStorage = typename
+       BindArgument<i>::template BoundAs<Arg>::template StoredAs<Storage>;
+ 
+   // We forbid callbacks from using raw_ptr as a parameter. However, we allow
+diff -up chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h.me chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h
+--- chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h.me	2024-01-21 17:23:37.786606428 +0100
++++ chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h	2024-01-21 17:23:58.582127103 +0100
+@@ -90,7 +90,7 @@ template <typename Container>
+     { c[i] } -> std::same_as<typename Container::reference>;
+   }
+ struct ArrayTraits<Container> {
+-  using Element = Container::value_type;
++  using Element = typename Container::value_type;
+ 
+   // vector-like containers have no built-in null.
+   static bool IsNull(const Container& c) { return false; }
+diff -up chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h.me chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h
+--- chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h.me	2024-01-21 17:33:40.030897838 +0100
++++ chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h	2024-01-21 17:34:11.518705266 +0100
+@@ -25,7 +25,7 @@ void SetExecutionRequestTemplate(
+ 
+   // Request is set by the feature and should always be typed.
+   auto typed_request =
+-      static_cast<const FeatureType::Request&>(request_metadata);
++      static_cast<const typename FeatureType::Request&>(request_metadata);
+   *(logging_data->mutable_request_data()) = typed_request;
+ }
+ 
+diff -up chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h.me chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h
+--- chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h.me	2024-01-21 17:32:42.367417619 +0100
++++ chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h	2024-01-21 17:33:25.732531198 +0100
+@@ -29,7 +29,7 @@ class ModelQualityLogEntry {
+   }
+ 
+   template <typename FeatureType>
+-  FeatureType::Quality* quality_data() {
++  typename FeatureType::Quality* quality_data() {
+     return FeatureType::GetLoggingData(*log_ai_data_request_)
+         ->mutable_quality_data();
+   }
diff --git a/srcpkgs/chromium/patches/chromium-120-workaround_clang_bug-structured_binding.patch b/srcpkgs/chromium/patches/chromium-121-workaround_clang_bug-structured_binding.patch
similarity index 75%
rename from srcpkgs/chromium/patches/chromium-120-workaround_clang_bug-structured_binding.patch
rename to srcpkgs/chromium/patches/chromium-121-workaround_clang_bug-structured_binding.patch
index b06e29f29047a..192b0692fbf73 100644
--- a/srcpkgs/chromium/patches/chromium-120-workaround_clang_bug-structured_binding.patch
+++ b/srcpkgs/chromium/patches/chromium-121-workaround_clang_bug-structured_binding.patch
@@ -25,27 +25,29 @@ diff -up chromium-115.0.5790.32/content/browser/service_worker/service_worker_co
  
    DCHECK(document_url.is_valid());
    TRACE_EVENT1("ServiceWorker",
-diff -up chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.me chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc
---- chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.me	2023-12-03 22:17:50.922083200 +0100
-+++ chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc	2023-12-03 22:22:55.437484343 +0100
-@@ -3447,7 +3447,8 @@ void GridLayoutAlgorithm::PlaceGridItems
+diff -up chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.than chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc
+--- chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.than	2023-12-19 17:57:56.205197246 +0100
++++ chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc	2023-12-19 18:10:13.778634531 +0100
+@@ -3527,8 +3527,8 @@ void GridLayoutAlgorithm::PlaceGridItems
    DCHECK(out_row_break_between);
  
-   const auto& container_space = ConstraintSpace();
+   const auto& container_space = GetConstraintSpace();
 -  const auto& [grid_items, layout_data, tree_size] = sizing_tree.TreeRootData();
+-
 +  const auto& [grid_items, l_d, tree_size] = sizing_tree.TreeRootData();
 +  const auto& layout_data = l_d;
- 
    const auto* cached_layout_subtree = container_space.GetGridLayoutSubtree();
    const auto container_writing_direction =
-@@ -3611,7 +3612,9 @@ void GridLayoutAlgorithm::PlaceGridItems
+       container_space.GetWritingDirection();
+@@ -3691,8 +3691,9 @@ void GridLayoutAlgorithm::PlaceGridItems
  
    // TODO(ikilpatrick): Update |SetHasSeenAllChildren| and early exit if true.
-   const auto& constraint_space = ConstraintSpace();
+   const auto& constraint_space = GetConstraintSpace();
 -  const auto& [grid_items, layout_data, tree_size] = sizing_tree.TreeRootData();
+-
 +  const auto& [g_i, l_d, tree_size] = sizing_tree.TreeRootData();
 +  const auto& grid_items = g_i;
 +  const auto& layout_data = l_d;
- 
    const auto* cached_layout_subtree = constraint_space.GetGridLayoutSubtree();
    const auto container_writing_direction =
+       constraint_space.GetWritingDirection();
diff --git a/srcpkgs/chromium/patches/gcc13-wnoerror.patch b/srcpkgs/chromium/patches/gcc13-wnoerror.patch
deleted file mode 100644
index c069aa41b2d09..0000000000000
--- a/srcpkgs/chromium/patches/gcc13-wnoerror.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-https://gn.googlesource.com/gn/+/c7b223bfb225ce87a72a244d016ffdfcf227fa5e%5E%21/
-Ignore build warning -Werror=redundant-move
-
-gcc-13 complains with:
-error: redundant move in return statement [-Werror=redundant-move]
-
-We cannot fix the code, because both old versions of gcc and the windows
-toolchain fails to build.
-index adb622a..232e536 100755
---- a/tools/gn/build/gen.py
-+++ b/tools/gn/build/gen.py
-
-@@ -472,6 +472,8 @@
-     # flags not supported by gcc/g++.
-     if cxx == 'clang++':
-       cflags.extend(['-Wrange-loop-analysis', '-Wextra-semi-stmt'])
-+    else:
-+      cflags.append('-Wno-redundant-move')
- 
-     if platform.is_linux() or platform.is_mingw() or platform.is_msys():
-       ldflags.append('-Wl,--as-needed')
diff --git a/srcpkgs/chromium/patches/unbundle-ffmpeg-av_stream_get_first_dts.patch b/srcpkgs/chromium/patches/unbundle-ffmpeg-av_stream_get_first_dts.patch
deleted file mode 100644
index dae1adde0bc66..0000000000000
--- a/srcpkgs/chromium/patches/unbundle-ffmpeg-av_stream_get_first_dts.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/build/linux/unbundle/ffmpeg.gn b/build/linux/unbundle/ffmpeg.gn
-index 16e20744706..6a079b32221 100644
---- a/build/linux/unbundle/ffmpeg.gn
-+++ b/build/linux/unbundle/ffmpeg.gn
-@@ -12,6 +12,7 @@ pkg_config("system_ffmpeg") {
-     "libavformat",
-     "libavutil",
-   ]
-+  defines = [ "av_stream_get_first_dts(stream)=stream->first_dts" ]
- }
- 
- buildflag_header("ffmpeg_features") {
diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template
index 5613fa3813822..995c194d17f6b 100644
--- a/srcpkgs/chromium/template
+++ b/srcpkgs/chromium/template
@@ -1,15 +1,15 @@
 # Template file for 'chromium'
 pkgname=chromium
 # See https://chromiumdash.appspot.com/releases?platform=Linux for the latest version
-version=120.0.6099.129
+version=121.0.6167.160
 revision=1
 archs="i686* x86_64* aarch64* armv7l*"
 hostmakedepends="
- $(vopt_if clang "clang lld llvm15")
+ $(vopt_if clang "clang17 lld17 llvm15")
  bison git gperf hwids ninja nodejs perl pkg-config python3
- libepoxy-devel libevent-devel libglib-devel"
+ libepoxy-devel libevent-devel libglib-devel rust"
 makedepends="
- alsa-lib-devel libdav1d-devel brotli-devel cups-devel elfutils-devel ffmpeg-devel
+ alsa-lib-devel libdav1d-devel brotli-devel cups-devel elfutils-devel
  fontconfig-devel freetype-devel gtk+3-devel libXScrnSaver-devel
  libXcomposite-devel libXcursor-devel libXdamage-devel libXi-devel libXrandr-devel
  libavif-devel libcap-devel libcurl-devel libdrm-devel libevent-devel
@@ -18,6 +18,7 @@ makedepends="
  libxslt-devel minizip-devel mit-krb5-devel nss-devel opus-devel
  pciutils-devel snappy-devel speech-dispatcher-devel speex-devel
  xcb-proto zlib-devel libaom-devel libffi-devel libevdev-devel
+ compiler-rt
  $(vopt_if pipewire pipewire-devel)
  $(vopt_if pulseaudio pulseaudio-devel)
  $(vopt_if sndio sndio-devel)"
@@ -27,7 +28,7 @@ maintainer="Duncaen <duncaen@voidlinux.org>"
 license="BSD-3-Clause"
 homepage="https://www.chromium.org/"
 distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz"
-checksum=be36d5abecfafdc68d9b27b0bee65136316610a295e844b99483a7520b245f85
+checksum=4586673899383d30e9d95fa3a9c5f8160f32a9d5789e40be82abf3e4dd9cc3df
 
 lib32disabled=yes
 
@@ -50,7 +51,7 @@ if [ "$CROSS_BUILD" ]; then
 	hostmakedepends+=" libX11-devel libxcb-devel pciutils-devel libXext-devel libglvnd-devel
 	 libjpeg-turbo-devel libXi-devel nss-devel libpng-devel libwebp-devel
 	 libxml2-devel $(vopt_if pulseaudio pulseaudio-devel) libxslt-devel libxkbcommon-devel
-	 $(vopt_if pipewire pipewire-devel) ffmpeg-devel opus-devel pango-devel libva-devel
+	 $(vopt_if pipewire pipewire-devel) opus-devel pango-devel libva-devel
 	 libcurl-devel snappy-devel libXrandr-devel libXcomposite-devel cups-devel
 	 mit-krb5-devel alsa-lib-devel libXdamage-devel libepoxy-devel libevdev-devel
 	 libavif-devel libaom-devel libdav1d-devel libflac-devel
@@ -133,7 +134,7 @@ _setup_toolchain() {
 }
 
 do_configure() {
-	local system="" conf=()
+	local system=() conf=()
 
 	# compile gn early, so it can be used to generate gni stuff
 	AR="ar" CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD LD=$CXX_FOR_BUILD \
@@ -153,8 +154,9 @@ do_configure() {
 	# XXX: harfbuzz-ng use builtin one until system-wide is updated >=3.0.0
 	# libcxx https://github.com/llvm/llvm-project/issues/61705:
 	# snappy
-	system="
-		ffmpeg
+	# ffmpeg: system ffmpeg is too old and makes the ffmpeg update not require
+	#  rebuilding chromium
+	system=(
 		flac
 		fontconfig
 		freetype
@@ -166,12 +168,12 @@ do_configure() {
 		libxml
 		libxslt
 		opus
-	"
+	)
 
 	# remove build scripts for system provided dependencies - basically does the
 	# same as the bundeled script to remove bundeled libs, but this way we don't
 	# have to list the remaining libs
-	for LIB in ${system} libjpeg_turbo; do
+	for LIB in "${system[@]}" libjpeg_turbo; do
 		find "third_party/$LIB" -type f \
 			\! -path "third_party/$LIB/chromium/*" \
 			\! -path "third_party/$LIB/google/*" \
@@ -182,13 +184,13 @@ do_configure() {
 	done
 
 	# switch to system provided dependencies
-	build/linux/unbundle/replace_gn_files.py --system-libraries ${system}
+	build/linux/unbundle/replace_gn_files.py --system-libraries "${system[@]}"
 
 	third_party/libaddressinput/chromium/tools/update-strings.py
 
+	local clang_version="$(clang -dumpversion)"
 	conf=(
 		'enable_nacl=false'
-		'enable_rust=false'
 
 		'use_sysroot=false'
 
@@ -198,12 +200,15 @@ do_configure() {
 		"use_lld=$(vopt_if clang true false)"
 		'clang_use_chrome_plugins=false'
 		'clang_base_path="/usr"'
+		"clang_version=\"${clang_version%%.*}\""
 
 		"gold_path=\"${XBPS_CROSS_BASE}/usr/bin/ld.gold\""
 		"use_custom_libcxx=$(vopt_if libcxx true false)" # https://github.com/llvm/llvm-project/issues/61705
 		'use_gold=false'
 
+		'enable_rust=true'
 		'rust_sysroot_absolute="/usr"'
+		"rustc_version=\"$(rustc --version)\""
 
 		# is_debug makes the build a debug build, changes some things.
 		# might be useful for real debugging vs just debug symbols.
@@ -293,6 +298,9 @@ do_configure() {
 }
 
 do_build() {
+	# XXX: need for error: the option `Z` is only accepted on the nightly compiler
+	export RUSTC_BOOTSTRAP=1
+
 	_setup_toolchain
 	CCACHE_SLOPPINESS=include_file_mtime ninja -C out/Release ${makejobs} chrome chromedriver.unstripped chrome_crashpad_handler
 }

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PR PATCH] [Updated] chromium: update to 121.0.6167.85.
  2024-01-25 15:39 [PR PATCH] chromium: update to 121.0.6167.85 Duncaen
  2024-02-10 23:38 ` [PR PATCH] [Updated] " Duncaen
  2024-02-11  1:46 ` Duncaen
@ 2024-02-12  0:49 ` Duncaen
  2024-02-12  0:50 ` [PR PATCH] [Closed]: " Duncaen
  3 siblings, 0 replies; 5+ messages in thread
From: Duncaen @ 2024-02-12  0:49 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 411 bytes --]

There is an updated pull request by Duncaen against master on the void-packages repository

https://github.com/Duncaen/void-packages chromium-121
https://github.com/void-linux/void-packages/pull/48367

chromium: update to 121.0.6167.85.
[ci skip]

* [ ] x86_64-glibc
* [ ] x86_64-musl
* [ ] aarch64-musl
* [ ] i686

A patch file from https://github.com/void-linux/void-packages/pull/48367.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-chromium-121-48367.patch --]
[-- Type: text/x-diff, Size: 134344 bytes --]

From a14551296805e31038014e3d9c431994bbe3a23f Mon Sep 17 00:00:00 2001
From: Duncaen <duncaen@voidlinux.org>
Date: Thu, 25 Jan 2024 16:07:07 +0100
Subject: [PATCH] chromium: update to 121.0.6167.85.

---
 ...ERT-roll-src-third_party-ffmpeg-m102.patch | 333 -------------
 ...oll-src-third_party-ffmpeg-m102.patch.args |   1 -
 ...ERT-roll-src-third_party-ffmpeg-m106.patch |  55 ---
 ...oll-src-third_party-ffmpeg-m106.patch.args |   1 -
 .../patches/chromium-119-ffmpeg-4.4.patch     |  20 -
 .../chromium-120-arm64-memory_tagging.patch   |  14 -
 ...romium-120-el7-clang-version-warning.patch |  16 -
 .../chromium-120-gn-workaround-atspi.patch    |  13 -
 .../chromium-120-missing-header-files.patch   | 459 ------------------
 .../patches/chromium-121-constexpr.patch      |  12 +
 ...romium-121-el7-clang-version-warning.patch |  15 +
 ...onstructor-involving-anonymous-union.patch |  12 +
 .../chromium-121-missing-header-files.patch   | 459 ++++++++++++++++++
 .../patches/chromium-121-mnemonic-error.patch |  12 +
 ...hromium-121-no_matching_constructor.patch} | 407 ++++++++++++----
 ...-121-nullptr_t-without-namespace-std.patch |  12 +
 ...-121-python3-invalid-escape-sequence.patch |  77 +++
 .../patches/chromium-121-rust-clang_lib.patch |  22 +
 ...m-121-rust-without-profiler_builtins.patch |  10 +
 .../patches/chromium-121-system-libxml.patch  |  24 +
 ...name.patch => chromium-121-typename.patch} |  54 +++
 ...around_clang_bug-structured_binding.patch} |  20 +-
 srcpkgs/chromium/patches/cross-build.patch    |  11 -
 srcpkgs/chromium/patches/gcc13-wnoerror.patch |  21 -
 ...undle-ffmpeg-av_stream_get_first_dts.patch |  12 -
 srcpkgs/chromium/template                     |  36 +-
 26 files changed, 1047 insertions(+), 1081 deletions(-)
 delete mode 100644 srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch
 delete mode 100644 srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch.args
 delete mode 100644 srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch
 delete mode 100644 srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch.args
 delete mode 100644 srcpkgs/chromium/patches/chromium-119-ffmpeg-4.4.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch
 delete mode 100644 srcpkgs/chromium/patches/chromium-120-missing-header-files.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-constexpr.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-el7-clang-version-warning.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-el7-default-constructor-involving-anonymous-union.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-missing-header-files.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-mnemonic-error.patch
 rename srcpkgs/chromium/patches/{chromium-120-no_matching_constructor.patch => chromium-121-no_matching_constructor.patch} (75%)
 create mode 100644 srcpkgs/chromium/patches/chromium-121-nullptr_t-without-namespace-std.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-python3-invalid-escape-sequence.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-rust-clang_lib.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-rust-without-profiler_builtins.patch
 create mode 100644 srcpkgs/chromium/patches/chromium-121-system-libxml.patch
 rename srcpkgs/chromium/patches/{chromium-120-typename.patch => chromium-121-typename.patch} (78%)
 rename srcpkgs/chromium/patches/{chromium-120-workaround_clang_bug-structured_binding.patch => chromium-121-workaround_clang_bug-structured_binding.patch} (75%)
 delete mode 100644 srcpkgs/chromium/patches/gcc13-wnoerror.patch
 delete mode 100644 srcpkgs/chromium/patches/unbundle-ffmpeg-av_stream_get_first_dts.patch

diff --git a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch b/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch
deleted file mode 100644
index e739b40a2733c..0000000000000
--- a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch
+++ /dev/null
@@ -1,333 +0,0 @@
-From 6e554a30893150793c2638e3689cf208ffc8e375 Mon Sep 17 00:00:00 2001
-From: Dale Curtis <dalecurtis@chromium.org>
-Date: Sat, 2 Apr 2022 05:13:53 +0000
-Subject: [PATCH] Roll src/third_party/ffmpeg/ 574c39cce..32b2d1d526 (1125
- commits)
-
-https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/574c39cce323..32b2d1d526
-
-Created with:
-  roll-dep src/third_party/ffmpeg
-
-Fixed: 1293918
-Cq-Include-Trybots: luci.chromium.try:mac_chromium_asan_rel_ng,linux_chromium_asan_rel_ng,linux_chromium_chromeos_asan_rel_ng
-Change-Id: I41945d0f963e3d1f65940067bac22f63b68e37d2
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3565647
-Auto-Submit: Dale Curtis <dalecurtis@chromium.org>
-Reviewed-by: Dan Sanders <sandersd@chromium.org>
-Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#988253}
----
- .../clear_key_cdm/ffmpeg_cdm_audio_decoder.cc | 29 ++++++++++---------
- media/ffmpeg/ffmpeg_common.cc                 | 11 +++----
- media/filters/audio_file_reader.cc            |  9 +++---
- media/filters/audio_file_reader_unittest.cc   |  6 ++--
- .../filters/audio_video_metadata_extractor.cc | 11 +++++--
- .../filters/ffmpeg_aac_bitstream_converter.cc |  7 +++--
- ...ffmpeg_aac_bitstream_converter_unittest.cc |  2 +-
- media/filters/ffmpeg_audio_decoder.cc         | 13 +++++----
- 8 files changed, 51 insertions(+), 37 deletions(-)
-
-diff --git a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
-index e4fc3f460e2..9b1ad9f7675 100644
---- a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
-+++ b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
-@@ -74,7 +74,7 @@ void CdmAudioDecoderConfigToAVCodecContext(
-       codec_context->sample_fmt = AV_SAMPLE_FMT_NONE;
-   }
- 
--  codec_context->channels = config.channel_count;
-+  codec_context->ch_layout.nb_channels = config.channel_count;
-   codec_context->sample_rate = config.samples_per_second;
- 
-   if (config.extra_data) {
-@@ -124,8 +124,8 @@ void CopySamples(cdm::AudioFormat cdm_format,
-     case cdm::kAudioFormatPlanarS16:
-     case cdm::kAudioFormatPlanarF32: {
-       const int decoded_size_per_channel =
--          decoded_audio_size / av_frame.channels;
--      for (int i = 0; i < av_frame.channels; ++i) {
-+          decoded_audio_size / av_frame.ch_layout.nb_channels;
-+      for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) {
-         memcpy(output_buffer, av_frame.extended_data[i],
-                decoded_size_per_channel);
-         output_buffer += decoded_size_per_channel;
-@@ -185,13 +185,14 @@ bool FFmpegCdmAudioDecoder::Initialize(
-   // Success!
-   decoding_loop_ = std::make_unique<FFmpegDecodingLoop>(codec_context_.get());
-   samples_per_second_ = config.samples_per_second;
--  bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8;
-+  bytes_per_frame_ =
-+      codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8;
-   output_timestamp_helper_ =
-       std::make_unique<AudioTimestampHelper>(config.samples_per_second);
-   is_initialized_ = true;
- 
-   // Store initial values to guard against midstream configuration changes.
--  channels_ = codec_context_->channels;
-+  channels_ = codec_context_->ch_layout.nb_channels;
-   av_sample_format_ = codec_context_->sample_fmt;
- 
-   return true;
-@@ -291,17 +292,19 @@ cdm::Status FFmpegCdmAudioDecoder::DecodeBuffer(
-   for (auto& frame : audio_frames) {
-     int decoded_audio_size = 0;
-     if (frame->sample_rate != samples_per_second_ ||
--        frame->channels != channels_ || frame->format != av_sample_format_) {
-+        frame->ch_layout.nb_channels != channels_ ||
-+        frame->format != av_sample_format_) {
-       DLOG(ERROR) << "Unsupported midstream configuration change!"
-                   << " Sample Rate: " << frame->sample_rate << " vs "
--                  << samples_per_second_ << ", Channels: " << frame->channels
--                  << " vs " << channels_ << ", Sample Format: " << frame->format
--                  << " vs " << av_sample_format_;
-+                  << samples_per_second_
-+                  << ", Channels: " << frame->ch_layout.nb_channels << " vs "
-+                  << channels_ << ", Sample Format: " << frame->format << " vs "
-+                  << av_sample_format_;
-       return cdm::kDecodeError;
-     }
- 
-     decoded_audio_size = av_samples_get_buffer_size(
--        nullptr, codec_context_->channels, frame->nb_samples,
-+        nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
-         codec_context_->sample_fmt, 1);
-     if (!decoded_audio_size)
-       continue;
-@@ -320,9 +323,9 @@ bool FFmpegCdmAudioDecoder::OnNewFrame(
-     size_t* total_size,
-     std::vector<std::unique_ptr<AVFrame, ScopedPtrAVFreeFrame>>* audio_frames,
-     AVFrame* frame) {
--  *total_size += av_samples_get_buffer_size(nullptr, codec_context_->channels,
--                                            frame->nb_samples,
--                                            codec_context_->sample_fmt, 1);
-+  *total_size += av_samples_get_buffer_size(
-+      nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
-+      codec_context_->sample_fmt, 1);
-   audio_frames->emplace_back(av_frame_clone(frame));
-   return true;
- }
-diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc
-index 87ca8969626..76f03d6608e 100644
---- a/media/ffmpeg/ffmpeg_common.cc
-+++ b/media/ffmpeg/ffmpeg_common.cc
-@@ -345,10 +345,11 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
-       codec_context->sample_fmt, codec_context->codec_id);
- 
-   ChannelLayout channel_layout =
--      codec_context->channels > 8
-+      codec_context->ch_layout.nb_channels > 8
-           ? CHANNEL_LAYOUT_DISCRETE
--          : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout,
--                                               codec_context->channels);
-+          : ChannelLayoutToChromeChannelLayout(
-+                codec_context->ch_layout.u.mask,
-+                codec_context->ch_layout.nb_channels);
- 
-   int sample_rate = codec_context->sample_rate;
-   switch (codec) {
-@@ -401,7 +402,7 @@ bool AVCodecContextToAudioDecoderConfig(const AVCodecContext* codec_context,
-                      extra_data, encryption_scheme, seek_preroll,
-                      codec_context->delay);
-   if (channel_layout == CHANNEL_LAYOUT_DISCRETE)
--    config->SetChannelsForDiscrete(codec_context->channels);
-+    config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels);
- 
- #if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO)
-   // These are bitstream formats unknown to ffmpeg, so they don't have
-@@ -470,7 +471,7 @@ void AudioDecoderConfigToAVCodecContext(const AudioDecoderConfig& config,
- 
-   // TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses
-   // said information to decode.
--  codec_context->channels = config.channels();
-+  codec_context->ch_layout.nb_channels = config.channels();
-   codec_context->sample_rate = config.samples_per_second();
- 
-   if (config.extra_data().empty()) {
-diff --git a/media/filters/audio_file_reader.cc b/media/filters/audio_file_reader.cc
-index 5f257bdfaa6..e1be5aa9a5b 100644
---- a/media/filters/audio_file_reader.cc
-+++ b/media/filters/audio_file_reader.cc
-@@ -113,14 +113,15 @@ bool AudioFileReader::OpenDecoder() {
- 
-   // Verify the channel layout is supported by Chrome.  Acts as a sanity check
-   // against invalid files.  See http://crbug.com/171962
--  if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout,
--                                         codec_context_->channels) ==
-+  if (ChannelLayoutToChromeChannelLayout(
-+          codec_context_->ch_layout.u.mask,
-+          codec_context_->ch_layout.nb_channels) ==
-       CHANNEL_LAYOUT_UNSUPPORTED) {
-     return false;
-   }
- 
-   // Store initial values to guard against midstream configuration changes.
--  channels_ = codec_context_->channels;
-+  channels_ = codec_context_->ch_layout.nb_channels;
-   audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id);
-   sample_rate_ = codec_context_->sample_rate;
-   av_sample_format_ = codec_context_->sample_fmt;
-@@ -223,7 +224,7 @@ bool AudioFileReader::OnNewFrame(
-   if (frames_read < 0)
-     return false;
- 
--  const int channels = frame->channels;
-+  const int channels = frame->ch_layout.nb_channels;
-   if (frame->sample_rate != sample_rate_ || channels != channels_ ||
-       frame->format != av_sample_format_) {
-     DLOG(ERROR) << "Unsupported midstream configuration change!"
-diff --git a/media/filters/audio_file_reader_unittest.cc b/media/filters/audio_file_reader_unittest.cc
-index 2aba7927a31..1f45a50cace 100644
---- a/media/filters/audio_file_reader_unittest.cc
-+++ b/media/filters/audio_file_reader_unittest.cc
-@@ -121,11 +121,11 @@ class AudioFileReaderTest : public testing::Test {
-     EXPECT_FALSE(reader_->Open());
-   }
- 
--  void RunTestFailingDecode(const char* fn) {
-+  void RunTestFailingDecode(const char* fn, int expect_read = 0) {
-     Initialize(fn);
-     EXPECT_TRUE(reader_->Open());
-     std::vector<std::unique_ptr<AudioBus>> decoded_audio_packets;
--    EXPECT_EQ(reader_->Read(&decoded_audio_packets), 0);
-+    EXPECT_EQ(reader_->Read(&decoded_audio_packets), expect_read);
-   }
- 
-   void RunTestPartialDecode(const char* fn) {
-@@ -219,7 +219,7 @@ TEST_F(AudioFileReaderTest, AAC_ADTS) {
- }
- 
- TEST_F(AudioFileReaderTest, MidStreamConfigChangesFail) {
--  RunTestFailingDecode("midstream_config_change.mp3");
-+  RunTestFailingDecode("midstream_config_change.mp3", 42624);
- }
- #endif
- 
-diff --git a/media/filters/audio_video_metadata_extractor.cc b/media/filters/audio_video_metadata_extractor.cc
-index 185819eb936..69ff508c221 100644
---- a/media/filters/audio_video_metadata_extractor.cc
-+++ b/media/filters/audio_video_metadata_extractor.cc
-@@ -113,6 +113,15 @@ bool AudioVideoMetadataExtractor::Extract(DataSource* source,
-     if (!stream)
-       continue;
- 
-+    void* display_matrix =
-+        av_stream_get_side_data(stream, AV_PKT_DATA_DISPLAYMATRIX, nullptr);
-+    if (display_matrix) {
-+      rotation_ = VideoTransformation::FromFFmpegDisplayMatrix(
-+                      static_cast<int32_t*>(display_matrix))
-+                      .rotation;
-+      info.tags["rotate"] = base::NumberToString(rotation_);
-+    }
-+
-     // Extract dictionary from streams also. Needed for containers that attach
-     // metadata to contained streams instead the container itself, like OGG.
-     ExtractDictionary(stream->metadata, &info.tags);
-@@ -255,8 +264,6 @@ void AudioVideoMetadataExtractor::ExtractDictionary(AVDictionary* metadata,
-     if (raw_tags->find(tag->key) == raw_tags->end())
-       (*raw_tags)[tag->key] = tag->value;
- 
--    if (ExtractInt(tag, "rotate", &rotation_))
--      continue;
-     if (ExtractString(tag, "album", &album_))
-       continue;
-     if (ExtractString(tag, "artist", &artist_))
-diff --git a/media/filters/ffmpeg_aac_bitstream_converter.cc b/media/filters/ffmpeg_aac_bitstream_converter.cc
-index 6f231c85729..ca5e5fb927d 100644
---- a/media/filters/ffmpeg_aac_bitstream_converter.cc
-+++ b/media/filters/ffmpeg_aac_bitstream_converter.cc
-@@ -195,14 +195,15 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
-   if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id ||
-       audio_profile_ != stream_codec_parameters_->profile ||
-       sample_rate_index_ != sample_rate_index ||
--      channel_configuration_ != stream_codec_parameters_->channels ||
-+      channel_configuration_ !=
-+          stream_codec_parameters_->ch_layout.nb_channels ||
-       frame_length_ != header_plus_packet_size) {
-     header_generated_ =
-         GenerateAdtsHeader(stream_codec_parameters_->codec_id,
-                            0,  // layer
-                            stream_codec_parameters_->profile, sample_rate_index,
-                            0,  // private stream
--                           stream_codec_parameters_->channels,
-+                           stream_codec_parameters_->ch_layout.nb_channels,
-                            0,  // originality
-                            0,  // home
-                            0,  // copyrighted_stream
-@@ -214,7 +215,7 @@ bool FFmpegAACBitstreamConverter::ConvertPacket(AVPacket* packet) {
-     codec_ = stream_codec_parameters_->codec_id;
-     audio_profile_ = stream_codec_parameters_->profile;
-     sample_rate_index_ = sample_rate_index;
--    channel_configuration_ = stream_codec_parameters_->channels;
-+    channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels;
-     frame_length_ = header_plus_packet_size;
-   }
- 
-diff --git a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
-index 1fd4c5ccd7d..f59bcd8fdaf 100644
---- a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
-+++ b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
-@@ -34,7 +34,7 @@ class FFmpegAACBitstreamConverterTest : public testing::Test {
-     memset(&test_parameters_, 0, sizeof(AVCodecParameters));
-     test_parameters_.codec_id = AV_CODEC_ID_AAC;
-     test_parameters_.profile = FF_PROFILE_AAC_MAIN;
--    test_parameters_.channels = 2;
-+    test_parameters_.ch_layout.nb_channels = 2;
-     test_parameters_.extradata = extradata_header_;
-     test_parameters_.extradata_size = sizeof(extradata_header_);
-   }
-diff --git a/media/filters/ffmpeg_audio_decoder.cc b/media/filters/ffmpeg_audio_decoder.cc
-index 6a56c675f7d..4615fdeb3fb 100644
---- a/media/filters/ffmpeg_audio_decoder.cc
-+++ b/media/filters/ffmpeg_audio_decoder.cc
-@@ -28,7 +28,7 @@ namespace media {
- 
- // Return the number of channels from the data in |frame|.
- static inline int DetermineChannels(AVFrame* frame) {
--  return frame->channels;
-+  return frame->ch_layout.nb_channels;
- }
- 
- // Called by FFmpeg's allocation routine to allocate a buffer. Uses
-@@ -231,7 +231,7 @@ bool FFmpegAudioDecoder::OnNewFrame(const DecoderBuffer& buffer,
-   // Translate unsupported into discrete layouts for discrete configurations;
-   // ffmpeg does not have a labeled discrete configuration internally.
-   ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout(
--      codec_context_->channel_layout, codec_context_->channels);
-+      codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels);
-   if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED &&
-       config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) {
-     channel_layout = CHANNEL_LAYOUT_DISCRETE;
-@@ -348,11 +348,11 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) {
-   // Success!
-   av_sample_format_ = codec_context_->sample_fmt;
- 
--  if (codec_context_->channels != config.channels()) {
-+  if (codec_context_->ch_layout.nb_channels != config.channels()) {
-     MEDIA_LOG(ERROR, media_log_)
-         << "Audio configuration specified " << config.channels()
-         << " channels, but FFmpeg thinks the file contains "
--        << codec_context_->channels << " channels";
-+        << codec_context_->ch_layout.nb_channels << " channels";
-     ReleaseFFmpegResources();
-     state_ = DecoderState::kUninitialized;
-     return false;
-@@ -403,7 +403,7 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
-   if (frame->nb_samples <= 0)
-     return AVERROR(EINVAL);
- 
--  if (s->channels != channels) {
-+  if (s->ch_layout.nb_channels != channels) {
-     DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count.";
-     return AVERROR(EINVAL);
-   }
-@@ -436,7 +436,8 @@ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
-   ChannelLayout channel_layout =
-       config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE
-           ? CHANNEL_LAYOUT_DISCRETE
--          : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels);
-+          : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask,
-+                                               s->ch_layout.nb_channels);
- 
-   if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) {
-     DLOG(ERROR) << "Unsupported channel layout.";
diff --git a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch.args b/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch.args
deleted file mode 100644
index 8bbbbe9483632..0000000000000
--- a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m102.patch.args
+++ /dev/null
@@ -1 +0,0 @@
--RNp1
diff --git a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch b/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch
deleted file mode 100644
index b2a113791734c..0000000000000
--- a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From ded379824f5de39357b6b1894578101aba5cdf05 Mon Sep 17 00:00:00 2001
-From: Eugene Zemtsov <eugene@chromium.org>
-Date: Fri, 29 Jul 2022 04:41:04 +0000
-Subject: [PATCH] Roll src/third_party/ffmpeg/ 880df5ede..b71ecd02b (279
- commits)
-
-https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/880df5ede50a..b71ecd02b479
-
-$ git log 880df5ede..b71ecd02b --date=short --no-merges --format='%ad %ae %s'
-2022-07-27 eugene Roll for M106
-2022-07-25 andreas.rheinhardt avcodec/x86/pngdsp: Remove obsolete ff_add_bytes_l2_mmx()
-2022-07-22 andreas.rheinhardt avcodec/hevcdec: Output MD5-message in one piece
-2022-07-24 epirat07 configure: properly require libx264 if enabled
-2022-07-24 zane avformat/argo_cvg: expose loop/reverb/checksum via metadata
-(...)
-2022-05-03 leo.izen avcodec/libjxldec: properly tag output colorspace
-2022-06-25 ffmpeg avfilter/Makefile: always make colorspace.o
-2022-03-02 brad avutil/ppc/cpu: Use proper header for OpenBSD PPC CPU detection
-2022-06-24 jamrial avformat/http: include version.h
-2022-05-16 mbonda-at-nvidia.com AV1 VDPAU hwaccel Decode support
-
-Created with:
-  roll-dep src/third_party/ffmpeg
-
-ffmpeg usage fix:
- Switch from AVFrame::pkt_duration to AVFrame::duration,
- AVFrame::pkt_duration is deprecated
-
-Bug: 1344646
-Change-Id: Iaa3abf48ef81dae6d282bca8f0fa2a8dffeeba25
-Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3788638
-Reviewed-by: Will Cassella <cassew@chromium.org>
-Commit-Queue: Eugene Zemtsov <eugene@chromium.org>
-Cr-Commit-Position: refs/heads/main@{#1029623}
----
- media/filters/audio_file_reader.cc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/media/filters/audio_file_reader.cc b/media/filters/audio_file_reader.cc
-index e1be5aa9a5b..951c003956f 100644
---- a/media/filters/audio_file_reader.cc
-+++ b/media/filters/audio_file_reader.cc
-@@ -243,10 +243,10 @@ bool AudioFileReader::OnNewFrame(
-   // silence from being output. In the case where we are also discarding some
-   // portion of the packet (as indicated by a negative pts), we further want to
-   // adjust the duration downward by however much exists before zero.
--  if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) {
-+  if (audio_codec_ == AudioCodec::kAAC && frame->duration) {
-     const base::TimeDelta pkt_duration = ConvertFromTimeBase(
-         glue_->format_context()->streams[stream_index_]->time_base,
--        frame->pkt_duration + std::min(static_cast<int64_t>(0), frame->pts));
-+        frame->duration + std::min(static_cast<int64_t>(0), frame->pts));
-     const base::TimeDelta frame_duration =
-         base::Seconds(frames_read / static_cast<double>(sample_rate_));
- 
diff --git a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch.args b/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch.args
deleted file mode 100644
index 8bbbbe9483632..0000000000000
--- a/srcpkgs/chromium/patches/REVERT-roll-src-third_party-ffmpeg-m106.patch.args
+++ /dev/null
@@ -1 +0,0 @@
--RNp1
diff --git a/srcpkgs/chromium/patches/chromium-119-ffmpeg-4.4.patch b/srcpkgs/chromium/patches/chromium-119-ffmpeg-4.4.patch
deleted file mode 100644
index 04d04b166ba37..0000000000000
--- a/srcpkgs/chromium/patches/chromium-119-ffmpeg-4.4.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/media/filters/ffmpeg_demuxer.cc.orig
-+++ b/media/filters/ffmpeg_demuxer.cc
-@@ -390,7 +390,7 @@
- 
-   scoped_refptr<DecoderBuffer> buffer;
- 
--    size_t side_data_size = 0;
-+    int side_data_size = 0;
-     uint8_t* side_data = av_packet_get_side_data(
-         packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size);
- 
-@@ -453,7 +453,7 @@
-                                        packet->size - data_offset);
-     }
- 
--    size_t skip_samples_size = 0;
-+    int skip_samples_size = 0;
-     const uint32_t* skip_samples_ptr =
-         reinterpret_cast<const uint32_t*>(av_packet_get_side_data(
-             packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));
diff --git a/srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch b/srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch
deleted file mode 100644
index bb461ef3664a2..0000000000000
--- a/srcpkgs/chromium/patches/chromium-120-arm64-memory_tagging.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- chromium-120.0.6099.35/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h.than	2023-11-26 13:50:07.005519877 +0100
-+++ chromium-120.0.6099.35/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h	2023-11-26 13:50:49.727267240 +0100
-@@ -152,10 +152,7 @@
-   (!BUILDFLAG(PUT_REF_COUNT_IN_PREVIOUS_SLOT) && \
-    defined(ARCH_CPU_LITTLE_ENDIAN))
- 
--#define PA_CONFIG_HAS_MEMORY_TAGGING()              \
--  (defined(ARCH_CPU_ARM64) && defined(__clang__) && \
--   !defined(ADDRESS_SANITIZER) &&                   \
--   (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID)))
-+#define PA_CONFIG_HAS_MEMORY_TAGGING() 0
- 
- #if PA_CONFIG(HAS_MEMORY_TAGGING)
- static_assert(sizeof(void*) == 8);
diff --git a/srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch b/srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch
deleted file mode 100644
index 112da65b4d9b6..0000000000000
--- a/srcpkgs/chromium/patches/chromium-120-el7-clang-version-warning.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff -up chromium-120.0.6099.56/third_party/libc++/src/include/__config.me chromium-120.0.6099.56/third_party/libc++/src/include/__config
---- chromium-120.0.6099.56/third_party/libc++/src/include/__config.me	2023-12-03 00:05:51.254483474 +0100
-+++ chromium-120.0.6099.56/third_party/libc++/src/include/__config	2023-12-03 00:06:05.872863168 +0100
-@@ -32,11 +32,7 @@
- 
- // Warn if a compiler version is used that is not supported anymore
- // LLVM RELEASE Update the minimum compiler versions
--#  if defined(_LIBCPP_CLANG_VER)
--#    if _LIBCPP_CLANG_VER < 1500
--#      warning "Libc++ only supports Clang 15 and later"
--#    endif
--#  elif defined(_LIBCPP_APPLE_CLANG_VER)
-+#  if defined(_LIBCPP_APPLE_CLANG_VER)
- #    if _LIBCPP_APPLE_CLANG_VER < 1500
- #      warning "Libc++ only supports AppleClang 15 and later"
- #    endif
diff --git a/srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch b/srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch
deleted file mode 100644
index 72c7b7ec41c28..0000000000000
--- a/srcpkgs/chromium/patches/chromium-120-gn-workaround-atspi.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn.me chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn
---- chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn.me	2023-11-26 16:14:15.364064126 +0100
-+++ chromium-120.0.6099.35/build/config/linux/atspi2/BUILD.gn	2023-11-26 16:41:16.877321990 +0100
-@@ -21,6 +21,9 @@ if (use_atk) {
-     minor = atspi_version[1]
-     micro = atspi_version[2]
- 
-+    # gn workaround for the error: Assignment had no effect
-+    print("ATSPI Version: $major.$minor.$micro")
-+
-     # ATSPI 2.49.90 now defines these for us and it's an error for us to
-     # redefine them on the compiler command line.
-     # See ATSPI 927344a34cd5bf81fc64da4968241735ecb4f03b
diff --git a/srcpkgs/chromium/patches/chromium-120-missing-header-files.patch b/srcpkgs/chromium/patches/chromium-120-missing-header-files.patch
deleted file mode 100644
index 44f867475b218..0000000000000
--- a/srcpkgs/chromium/patches/chromium-120-missing-header-files.patch
+++ /dev/null
@@ -1,459 +0,0 @@
-diff -up chromium-110.0.5481.177/base/memory/ref_counted.h.me chromium-110.0.5481.177/base/memory/ref_counted.h
---- chromium-110.0.5481.177/base/memory/ref_counted.h.me	2023-02-23 13:34:33.174817255 -0500
-+++ chromium-110.0.5481.177/base/memory/ref_counted.h	2023-02-23 13:42:28.646052469 -0500
-@@ -6,6 +6,7 @@
- #define BASE_MEMORY_REF_COUNTED_H_
- 
- #include <stddef.h>
-+#include <limits>
- 
- #include <utility>
- 
-diff -up chromium-109.0.5414.74/base/check_op.h.me chromium-109.0.5414.74/base/check_op.h
---- chromium-109.0.5414.74/base/check_op.h.me	2023-01-17 17:39:27.620875883 +0100
-+++ chromium-109.0.5414.74/base/check_op.h	2023-01-17 17:39:42.546060957 +0100
-@@ -5,6 +5,7 @@
- #ifndef BASE_CHECK_OP_H_
- #define BASE_CHECK_OP_H_
- 
-+#include <cstdint>
- #include <cstddef>
- #include <string>
- #include <type_traits>
-diff -up chromium-109.0.5414.74/base/debug/profiler.h.me chromium-109.0.5414.74/base/debug/profiler.h
---- chromium-109.0.5414.74/base/debug/profiler.h.me	2023-01-17 16:29:26.368090073 +0100
-+++ chromium-109.0.5414.74/base/debug/profiler.h	2023-01-17 16:59:41.190628679 +0100
-@@ -7,6 +7,7 @@
- 
- #include <stddef.h>
- 
-+#include <cstdint>
- #include <string>
- 
- #include "base/base_export.h"
-diff -up chromium-109.0.5414.74/gpu/config/gpu_feature_info.h.me chromium-109.0.5414.74/gpu/config/gpu_feature_info.h
---- chromium-109.0.5414.74/gpu/config/gpu_feature_info.h.me	2023-01-17 19:06:53.530675129 +0100
-+++ chromium-109.0.5414.74/gpu/config/gpu_feature_info.h	2023-01-17 19:07:08.874849879 +0100
-@@ -5,6 +5,7 @@
- #ifndef GPU_CONFIG_GPU_FEATURE_INFO_H_
- #define GPU_CONFIG_GPU_FEATURE_INFO_H_
- 
-+#include <cstdint>
- #include <string>
- #include <vector>
- 
-diff -up chromium-109.0.5414.74/net/base/net_export.h.me chromium-109.0.5414.74/net/base/net_export.h
---- chromium-109.0.5414.74/net/base/net_export.h.me	2023-01-17 18:16:34.133854615 +0100
-+++ chromium-109.0.5414.74/net/base/net_export.h	2023-01-17 18:16:15.945623153 +0100
-@@ -5,6 +5,8 @@
- #ifndef NET_BASE_NET_EXPORT_H_
- #define NET_BASE_NET_EXPORT_H_
- 
-+#include <cstdint>
-+
- // Defines NET_EXPORT so that functionality implemented by the net module can
- // be exported to consumers, and NET_EXPORT_PRIVATE that allows unit tests to
- // access features not intended to be used directly by real consumers.
-diff -up chromium-109.0.5414.74/sandbox/linux/syscall_broker/broker_file_permission.h.me chromium-109.0.5414.74/sandbox/linux/syscall_broker/broker_file_permission.h
---- chromium-109.0.5414.74/sandbox/linux/syscall_broker/broker_file_permission.h.me	2023-01-17 17:12:34.184686515 +0100
-+++ chromium-109.0.5414.74/sandbox/linux/syscall_broker/broker_file_permission.h	2023-01-17 17:13:16.537162420 +0100
-@@ -5,6 +5,7 @@
- #ifndef SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
- #define SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
- 
-+#include <cstdint>
- #include <bitset>
- #include <string>
- 
-diff -up chromium-109.0.5414.74/third_party/abseil-cpp/absl/strings/string_view.h.me chromium-109.0.5414.74/third_party/abseil-cpp/absl/strings/string_view.h
---- chromium-109.0.5414.74/third_party/abseil-cpp/absl/strings/string_view.h.me	2023-01-17 17:33:20.895717307 +0100
-+++ chromium-109.0.5414.74/third_party/abseil-cpp/absl/strings/string_view.h	2023-01-17 17:34:03.456185365 +0100
-@@ -27,6 +27,7 @@
- #ifndef ABSL_STRINGS_STRING_VIEW_H_
- #define ABSL_STRINGS_STRING_VIEW_H_
- 
-+#include <cstdint>
- #include <algorithm>
- #include <cassert>
- #include <cstddef>
-diff -up chromium-109.0.5414.74/third_party/angle/include/GLSLANG/ShaderVars.h.me chromium-109.0.5414.74/third_party/angle/include/GLSLANG/ShaderVars.h
---- chromium-109.0.5414.74/third_party/angle/include/GLSLANG/ShaderVars.h.me	2023-01-17 17:36:15.017616250 +0100
-+++ chromium-109.0.5414.74/third_party/angle/include/GLSLANG/ShaderVars.h	2023-01-17 17:36:48.960982195 +0100
-@@ -10,6 +10,7 @@
- #ifndef GLSLANG_SHADERVARS_H_
- #define GLSLANG_SHADERVARS_H_
- 
-+#include <cstdint>
- #include <algorithm>
- #include <array>
- #include <string>
-diff -up chromium-109.0.5414.74/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.me chromium-109.0.5414.74/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h
---- chromium-109.0.5414.74/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.me	2023-01-17 19:17:40.480876171 +0100
-+++ chromium-109.0.5414.74/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h	2023-01-17 19:17:46.803958320 +0100
-@@ -5,6 +5,7 @@
- #ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_BLUETOOTH_WEB_BLUETOOTH_DEVICE_ID_H_
- #define THIRD_PARTY_BLINK_PUBLIC_COMMON_BLUETOOTH_WEB_BLUETOOTH_DEVICE_ID_H_
- 
-+#include <cstdint>
- #include <array>
- #include <string>
- 
-diff -up chromium-117.0.5938.48/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.me chromium-117.0.5938.48/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h
---- chromium-117.0.5938.48/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.me	2023-01-17 18:02:44.681538107 +0100
-+++ chromium-117.0.5938.48/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h	2023-01-17 18:02:57.208679140 +0100
-@@ -15,6 +15,7 @@
- #ifndef SRC_TINT_READER_SPIRV_NAMER_H_
- #define SRC_TINT_READER_SPIRV_NAMER_H_
- 
-+#include <cstdint>
- #include <string>
- #include <unordered_map>
- #include <vector>
-diff -up chromium-109.0.5414.74/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.me chromium-109.0.5414.74/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h
---- chromium-109.0.5414.74/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.me	2023-01-18 15:22:38.472940648 +0100
-+++ chromium-109.0.5414.74/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h	2023-01-18 15:23:09.380255101 +0100
-@@ -5,6 +5,7 @@
- #ifndef DISCOVERY_DNSSD_PUBLIC_DNS_SD_TXT_RECORD_H_
- #define DISCOVERY_DNSSD_PUBLIC_DNS_SD_TXT_RECORD_H_
- 
-+#include <cstdint>
- #include <functional>
- #include <map>
- #include <set>
-diff -up chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp.me chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp
---- chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp.me	2023-01-17 15:37:48.530626516 +0100
-+++ chromium-109.0.5414.74/third_party/swiftshader/src/System/LRUCache.hpp	2023-01-17 16:57:46.025548092 +0100
-@@ -17,6 +17,7 @@
- 
- #include "System/Debug.hpp"
- 
-+#include <cstdint>
- #include <cstddef>
- #include <functional>
- #include <unordered_set>
-diff -up chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h.me chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h
---- chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h.me	2023-01-17 18:08:25.745491353 +0100
-+++ chromium-109.0.5414.74/ui/gfx/geometry/linear_gradient.h	2023-01-17 18:08:35.777667632 +0100
-@@ -5,6 +5,7 @@
- #ifndef UI_GFX_LINEAR_GRADIENT_H_
- #define UI_GFX_LINEAR_GRADIENT_H_
- 
-+#include <cstdint>
- #include <array>
- #include <string>
- 
-diff -up chromium-109.0.5414.74/third_party/ruy/src/ruy/profiler/instrumentation.h.me chromium-109.0.5414.74/third_party/ruy/src/ruy/profiler/instrumentation.h
---- chromium-109.0.5414.74/third_party/ruy/src/ruy/profiler/instrumentation.h.me	2023-01-19 10:10:21.287876736 +0100
-+++ chromium-109.0.5414.74/third_party/ruy/src/ruy/profiler/instrumentation.h	2023-01-19 10:11:21.714778896 +0100
-@@ -17,6 +17,7 @@ limitations under the License.
- #define RUY_RUY_PROFILER_INSTRUMENTATION_H_
- 
- #ifdef RUY_PROFILER
-+#include <string>
- #include <cstdio>
- #include <mutex>
- #include <vector>
-diff -up chromium-109.0.5414.74/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.me chromium-109.0.5414.74/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h
---- chromium-109.0.5414.74/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.me	2023-01-19 10:30:27.533861985 +0100
-+++ chromium-109.0.5414.74/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h	2023-01-19 10:31:12.585554183 +0100
-@@ -31,6 +31,7 @@ limitations under the License.
- #ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
- #define TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
- 
-+#include <cstdint>
- #include <complex>
- #include <deque>
- #include <vector>
-diff -up chromium-109.0.5414.74/base/containers/flat_map.h.mee chromium-109.0.5414.74/base/containers/flat_map.h
---- chromium-109.0.5414.74/base/containers/flat_map.h.mee	2023-01-19 10:59:52.214957773 +0100
-+++ chromium-109.0.5414.74/base/containers/flat_map.h	2023-01-19 11:00:06.415215309 +0100
-@@ -5,6 +5,7 @@
- #ifndef BASE_CONTAINERS_FLAT_MAP_H_
- #define BASE_CONTAINERS_FLAT_MAP_H_
- 
-+#include <cstdint>
- #include <functional>
- #include <tuple>
- #include <utility>
-diff -up chromium-109.0.5414.74/components/crash/core/app/crash_reporter_client.h.mee chromium-109.0.5414.74/components/crash/core/app/crash_reporter_client.h
---- chromium-109.0.5414.74/components/crash/core/app/crash_reporter_client.h.mee	2023-01-19 10:36:40.571422826 +0100
-+++ chromium-109.0.5414.74/components/crash/core/app/crash_reporter_client.h	2023-01-19 10:36:49.343565294 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_CRASH_CORE_APP_CRASH_REPORTER_CLIENT_H_
- #define COMPONENTS_CRASH_CORE_APP_CRASH_REPORTER_CLIENT_H_
- 
-+#include <cstdint>
- #include <string>
- 
- #include "build/build_config.h"
-diff -up chromium-109.0.5414.74/ui/base/prediction/kalman_filter.h.mee chromium-109.0.5414.74/ui/base/prediction/kalman_filter.h
---- chromium-109.0.5414.74/ui/base/prediction/kalman_filter.h.mee	2023-01-19 11:45:15.953159755 +0100
-+++ chromium-109.0.5414.74/ui/base/prediction/kalman_filter.h	2023-01-19 11:45:22.320246241 +0100
-@@ -5,6 +5,8 @@
- #ifndef UI_BASE_PREDICTION_KALMAN_FILTER_H_
- #define UI_BASE_PREDICTION_KALMAN_FILTER_H_
- 
-+#include <cstdint>
-+
- #include "base/component_export.h"
- #include "ui/gfx/geometry/matrix3_f.h"
- 
-diff -up chromium-109.0.5414.74/components/password_manager/core/browser/generation/password_generator.h.me chromium-109.0.5414.74/components/password_manager/core/browser/generation/password_generator.h
---- chromium-109.0.5414.74/components/password_manager/core/browser/generation/password_generator.h.me	2023-01-19 15:20:07.620987949 +0100
-+++ chromium-109.0.5414.74/components/password_manager/core/browser/generation/password_generator.h	2023-01-19 15:20:18.324173702 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_GENERATION_PASSWORD_GENERATOR_H_
- #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_GENERATION_PASSWORD_GENERATOR_H_
- 
-+#include <cstdint>
- #include <string>
- 
- 
-diff -up chromium-109.0.5414.74/components/feature_engagement/internal/event_storage_validator.h.me chromium-109.0.5414.74/components/feature_engagement/internal/event_storage_validator.h
---- chromium-109.0.5414.74/components/feature_engagement/internal/event_storage_validator.h.me	2023-01-19 16:00:14.350186515 +0100
-+++ chromium-109.0.5414.74/components/feature_engagement/internal/event_storage_validator.h	2023-01-19 16:00:21.643307993 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_EVENT_STORAGE_VALIDATOR_H_
- #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_EVENT_STORAGE_VALIDATOR_H_
- 
-+#include <cstdint>
- #include <string>
- 
- namespace feature_engagement {
-diff -up chromium-109.0.5414.74/components/feature_engagement/internal/never_event_storage_validator.h.me chromium-109.0.5414.74/components/feature_engagement/internal/never_event_storage_validator.h
---- chromium-109.0.5414.74/components/feature_engagement/internal/never_event_storage_validator.h.me	2023-01-19 15:59:18.210239416 +0100
-+++ chromium-109.0.5414.74/components/feature_engagement/internal/never_event_storage_validator.h	2023-01-19 15:59:34.513515030 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
- #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
- 
-+#include <cstdint>
- #include <string>
- 
- #include "components/feature_engagement/internal/event_storage_validator.h"
-diff -up chromium-109.0.5414.74/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.me chromium-109.0.5414.74/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc
---- chromium-109.0.5414.74/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.me	2023-01-19 16:09:29.216477182 +0100
-+++ chromium-109.0.5414.74/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc	2023-01-19 16:10:05.657089208 +0100
-@@ -45,6 +45,7 @@
- #include "llvm/Support/SaveAndRestore.h"
- #include "llvm/Support/raw_ostream.h"
- #include <algorithm>
-+#include <cstdint>
- #include <string>
- #include <sysexits.h>
- #ifdef HAVE_BACKTRACE
-diff -up chromium-109.0.5414.74/chrome/browser/privacy_budget/encountered_surface_tracker.h.me chromium-109.0.5414.74/chrome/browser/privacy_budget/encountered_surface_tracker.h
---- chromium-109.0.5414.74/chrome/browser/privacy_budget/encountered_surface_tracker.h.me	2023-01-19 16:32:05.338160131 +0100
-+++ chromium-109.0.5414.74/chrome/browser/privacy_budget/encountered_surface_tracker.h	2023-01-19 16:32:16.213326798 +0100
-@@ -5,6 +5,7 @@
- #ifndef CHROME_BROWSER_PRIVACY_BUDGET_ENCOUNTERED_SURFACE_TRACKER_H_
- #define CHROME_BROWSER_PRIVACY_BUDGET_ENCOUNTERED_SURFACE_TRACKER_H_
- 
-+#include <cstdint>
- #include <map>
- 
- #include "base/containers/flat_set.h"
-diff -up chromium-109.0.5414.74/components/autofill/core/browser/autofill_ablation_study.h.me chromium-109.0.5414.74/components/autofill/core/browser/autofill_ablation_study.h
---- chromium-109.0.5414.74/components/autofill/core/browser/autofill_ablation_study.h.me	2023-01-19 16:47:55.548571102 +0100
-+++ chromium-109.0.5414.74/components/autofill/core/browser/autofill_ablation_study.h	2023-01-19 16:48:29.214146529 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ABLATION_STUDY_H_
- #define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_ABLATION_STUDY_H_
- 
-+#include <cstdint>
- #include <string>
- 
- class GURL;
-diff -up chromium-109.0.5414.74/components/omnibox/browser/on_device_head_model.h.me chromium-109.0.5414.74/components/omnibox/browser/on_device_head_model.h
---- chromium-109.0.5414.74/components/omnibox/browser/on_device_head_model.h.me	2023-01-19 16:57:29.525372814 +0100
-+++ chromium-109.0.5414.74/components/omnibox/browser/on_device_head_model.h	2023-01-19 16:58:02.667979288 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_OMNIBOX_BROWSER_ON_DEVICE_HEAD_MODEL_H_
- #define COMPONENTS_OMNIBOX_BROWSER_ON_DEVICE_HEAD_MODEL_H_
- 
-+#include <cstdint>
- #include <string>
- #include <utility>
- #include <vector>
-diff -up chromium-109.0.5414.74/components/payments/content/utility/fingerprint_parser.h.me chromium-109.0.5414.74/components/payments/content/utility/fingerprint_parser.h
---- chromium-109.0.5414.74/components/payments/content/utility/fingerprint_parser.h.me	2023-01-19 17:02:45.258544665 +0100
-+++ chromium-109.0.5414.74/components/payments/content/utility/fingerprint_parser.h	2023-01-19 17:02:52.577611757 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
- #define COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
- 
-+#include <cstdint>
- #include <stddef.h>
- 
- #include <string>
-diff -up chromium-109.0.5414.74/pdf/document_attachment_info.h.me chromium-109.0.5414.74/pdf/document_attachment_info.h
---- chromium-109.0.5414.74/pdf/document_attachment_info.h.me	2023-01-19 17:28:28.552063534 +0100
-+++ chromium-109.0.5414.74/pdf/document_attachment_info.h	2023-01-19 17:28:48.072379953 +0100
-@@ -5,6 +5,7 @@
- #ifndef PDF_DOCUMENT_ATTACHMENT_INFO_H_
- #define PDF_DOCUMENT_ATTACHMENT_INFO_H_
- 
-+#include <cstdint>
- #include <string>
- 
- 
-diff -up chromium-109.0.5414.74/third_party/pdfium/constants/annotation_flags.h.me chromium-109.0.5414.74/third_party/pdfium/constants/annotation_flags.h
---- chromium-109.0.5414.74/third_party/pdfium/constants/annotation_flags.h.me	2023-01-19 18:25:47.648193710 +0100
-+++ chromium-109.0.5414.74/third_party/pdfium/constants/annotation_flags.h	2023-01-19 18:26:11.488593556 +0100
-@@ -5,6 +5,8 @@
- #ifndef CONSTANTS_ANNOTATION_FLAGS_H_
- #define CONSTANTS_ANNOTATION_FLAGS_H_
- 
-+#include <cstdint>
-+
- namespace pdfium {
- namespace annotation_flags {
- 
-diff -up chromium-113.0.5672.24/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.me chromium-113.0.5672.24/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h
---- chromium-113.0.5672.24/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.me	2023-04-15 16:44:55.344305412 +0200
-+++ chromium-113.0.5672.24/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h	2023-04-15 16:47:09.028666995 +0200
-@@ -2854,6 +2854,7 @@ static void vma_aligned_free(void* VMA_N
- 
- // Define this macro to 1 to enable functions: vmaBuildStatsString, vmaFreeStatsString.
- #if VMA_STATS_STRING_ENABLED
-+#include <stdio.h>
-     static inline void VmaUint32ToStr(char* VMA_NOT_NULL outStr, size_t strLen, uint32_t num)
-     {
-         snprintf(outStr, strLen, "%u", static_cast<unsigned int>(num));
-diff -up chromium-113.0.5672.37/chrome/browser/webauthn/authenticator_request_dialog_model.h.me chromium-113.0.5672.37/chrome/browser/webauthn/authenticator_request_dialog_model.h
---- chromium-113.0.5672.37/chrome/browser/webauthn/authenticator_request_dialog_model.h.me	2023-04-18 15:55:44.774916319 +0200
-+++ chromium-113.0.5672.37/chrome/browser/webauthn/authenticator_request_dialog_model.h	2023-04-18 15:55:54.441085882 +0200
-@@ -8,6 +8,7 @@
- #include <memory>
- #include <string>
- #include <vector>
-+#include <variant>
- 
- #include "base/containers/span.h"
- #include "base/functional/callback_forward.h"
-diff -up chromium-113.0.5672.37/gin/time_clamper.h.me chromium-113.0.5672.37/gin/time_clamper.h
---- chromium-113.0.5672.37/gin/time_clamper.h.me	2023-04-18 16:38:41.180437467 +0200
-+++ chromium-113.0.5672.37/gin/time_clamper.h	2023-04-18 16:39:43.857049432 +0200
-@@ -48,7 +48,7 @@ class GIN_EXPORT TimeClamper {
-     const int64_t micros = now_micros % 1000;
-     // abs() is necessary for devices with times before unix-epoch (most likely
-     // configured incorrectly).
--    if (abs(micros) + kResolutionMicros < 1000) {
-+    if (std::abs(micros) + kResolutionMicros < 1000) {
-       return now_micros / 1000;
-     }
-     return ClampTimeResolution(now_micros) / 1000;
-diff -up chromium-113.0.5672.53/chrome/test/chromedriver/chrome/web_view_impl.cc.me chromium-113.0.5672.53/chrome/test/chromedriver/chrome/web_view_impl.cc
---- chromium-113.0.5672.53/chrome/test/chromedriver/chrome/web_view_impl.cc.me	2023-04-21 08:07:55.362714544 +0200
-+++ chromium-113.0.5672.53/chrome/test/chromedriver/chrome/web_view_impl.cc	2023-04-21 08:14:35.424158693 +0200
-@@ -10,6 +10,7 @@
- #include <queue>
- #include <utility>
- #include <vector>
-+#include <cstring>
- 
- #include "base/check.h"
- #include "base/files/file_path.h"
-diff -up chromium-115.0.5790.32/skia/ext/skcolorspace_trfn.cc.me chromium-115.0.5790.32/skia/ext/skcolorspace_trfn.cc
---- chromium-115.0.5790.32/skia/ext/skcolorspace_trfn.cc.me	2023-06-18 12:33:52.387412788 +0200
-+++ chromium-115.0.5790.32/skia/ext/skcolorspace_trfn.cc	2023-06-18 12:35:28.229148935 +0200
-@@ -3,6 +3,7 @@
- // found in the LICENSE file.
- 
- #include "skia/ext/skcolorspace_trfn.h"
-+#include <cmath>
- 
- namespace skia {
- 
-diff -up chromium-96.0.4664.45/third_party/webrtc/common_video/h264/sps_parser.h.missing-cstdint chromium-96.0.4664.45/third_party/webrtc/common_video/h264/sps_parser.h
---- chromium-96.0.4664.45/third_party/webrtc/common_video/h264/sps_parser.h.missing-cstdint	2021-11-19 17:05:31.379750350 -0500
-+++ chromium-96.0.4664.45/third_party/webrtc/common_video/h264/sps_parser.h	2021-11-19 17:07:35.191520127 -0500
-@@ -11,6 +11,7 @@
- #ifndef COMMON_VIDEO_H264_SPS_PARSER_H_
- #define COMMON_VIDEO_H264_SPS_PARSER_H_
- 
-+#include <cstdint>
- #include "absl/types/optional.h"
- #include "rtc_base/bitstream_reader.h"
- 
-diff -up chromium-96.0.4664.45/third_party/webrtc/modules/include/module_common_types_public.h.missing-cstdint chromium-96.0.4664.45/third_party/webrtc/modules/include/module_common_types_public.h
---- chromium-96.0.4664.45/third_party/webrtc/modules/include/module_common_types_public.h.missing-cstdint	2021-11-12 05:28:10.000000000 -0500
-+++ chromium-96.0.4664.45/third_party/webrtc/modules/include/module_common_types_public.h	2021-11-19 17:05:31.379750350 -0500
-@@ -11,6 +11,7 @@
- #ifndef MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
- #define MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
- 
-+#include <cstdint>
- #include <limits>
- 
- #include "absl/types/optional.h"
-diff -up chromium-96.0.4664.45/ui/gfx/linux/drm_util_linux.h.missing-cstdint chromium-96.0.4664.45/ui/gfx/linux/drm_util_linux.h
---- chromium-96.0.4664.45/ui/gfx/linux/drm_util_linux.h.missing-cstdint	2021-11-12 05:25:24.000000000 -0500
-+++ chromium-96.0.4664.45/ui/gfx/linux/drm_util_linux.h	2021-11-19 17:05:31.379750350 -0500
-@@ -9,6 +9,8 @@
- 
- #include "ui/gfx/buffer_types.h"
- 
-+#include <cstdint>
-+
- namespace ui {
- 
- int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format);
-diff -up chromium-96.0.4664.45/third_party/webrtc/audio/utility/channel_mixer.cc.missing-cstring chromium-96.0.4664.45/third_party/webrtc/audio/utility/channel_mixer.cc
---- chromium-96.0.4664.45/third_party/webrtc/audio/utility/channel_mixer.cc.missing-cstring	2021-11-12 05:28:09.000000000 -0500
-+++ chromium-96.0.4664.45/third_party/webrtc/audio/utility/channel_mixer.cc	2021-11-19 17:10:02.927438695 -0500
-@@ -8,6 +8,8 @@
-  *  be found in the AUTHORS file in the root of the source tree.
-  */
- 
-+#include <cstring>
-+
- #include "audio/utility/channel_mixer.h"
- 
- #include "audio/utility/channel_mixing_matrix.h"
-diff -up chromium-96.0.4664.45/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-cstring chromium-96.0.4664.45/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc
---- chromium-96.0.4664.45/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-cstring	2021-11-12 05:28:10.000000000 -0500
-+++ chromium-96.0.4664.45/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc	2021-11-19 17:10:02.928438701 -0500
-@@ -10,6 +10,7 @@
- 
- #include "modules/video_coding/utility/ivf_file_reader.h"
- 
-+#include <cstring>
- #include <string>
- #include <vector>
- 
-diff -up chromium-117.0.5938.48/third_party/ipcz/src/ipcz/router_link.h.me chromium-117.0.5938.48/third_party/ipcz/src/ipcz/router_link.h
---- chromium-117.0.5938.48/third_party/ipcz/src/ipcz/router_link.h.me	2023-09-10 17:53:04.826298351 +0200
-+++ chromium-117.0.5938.48/third_party/ipcz/src/ipcz/router_link.h	2023-09-10 17:53:22.201756894 +0200
-@@ -5,6 +5,7 @@
- #ifndef IPCZ_SRC_IPCZ_ROUTER_LINK_H_
- #define IPCZ_SRC_IPCZ_ROUTER_LINK_H_
- 
-+#include <memory>
- #include <cstddef>
- #include <functional>
- #include <string>
-diff -up chromium-117.0.5938.48/third_party/material_color_utilities/src/cpp/palettes/tones.cc.me chromium-117.0.5938.48/third_party/material_color_utilities/src/cpp/palettes/tones.cc
---- chromium-117.0.5938.48/third_party/material_color_utilities/src/cpp/palettes/tones.cc.me	2023-09-10 17:36:27.199841051 +0200
-+++ chromium-117.0.5938.48/third_party/material_color_utilities/src/cpp/palettes/tones.cc	2023-09-10 17:44:51.870554233 +0200
-@@ -14,6 +14,7 @@
-  * limitations under the License.
-  */
- 
-+#include <cmath>
- #include "cpp/palettes/tones.h"
- 
- #include "cpp/cam/cam.h"
-diff -up chromium-118.0.5993.32/services/device/public/cpp/generic_sensor/sensor_reading.h.me chromium-118.0.5993.32/services/device/public/cpp/generic_sensor/sensor_reading.h
---- chromium-118.0.5993.32/services/device/public/cpp/generic_sensor/sensor_reading.h.me	2023-10-01 13:55:01.913193186 +0200
-+++ chromium-118.0.5993.32/services/device/public/cpp/generic_sensor/sensor_reading.h	2023-10-01 14:05:38.488038429 +0200
-@@ -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 <cstddef>
-+#include <cstdint>
-+
- #include <type_traits>
- 
- namespace device {
diff --git a/srcpkgs/chromium/patches/chromium-121-constexpr.patch b/srcpkgs/chromium/patches/chromium-121-constexpr.patch
new file mode 100644
index 0000000000000..a0b7166a5c8f8
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-constexpr.patch
@@ -0,0 +1,12 @@
+diff -up chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h.me chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h
+--- chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h.me	2024-01-18 17:00:24.791582422 +0100
++++ chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h	2024-01-18 17:22:21.521682845 +0100
+@@ -27,7 +27,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;
+ 
+   // Individual resource contexts to measure.
diff --git a/srcpkgs/chromium/patches/chromium-121-el7-clang-version-warning.patch b/srcpkgs/chromium/patches/chromium-121-el7-clang-version-warning.patch
new file mode 100644
index 0000000000000..bc86eb2355874
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-el7-clang-version-warning.patch
@@ -0,0 +1,15 @@
+--- chromium-121.0.6167.57/third_party/libc++/src/include/__config.orig	2024-01-16 18:38:00.995930774 +0100
++++ chromium-121.0.6167.57/third_party/libc++/src/include/__config	2024-01-16 18:43:47.056517289 +0100
+@@ -32,11 +32,7 @@
+ 
+ // Warn if a compiler version is used that is not supported anymore
+ // LLVM RELEASE Update the minimum compiler versions
+-#  if defined(_LIBCPP_CLANG_VER)
+-#    if _LIBCPP_CLANG_VER < 1600
+-#      warning "Libc++ only supports Clang 16 and later"
+-#    endif
+-#  elif defined(_LIBCPP_APPLE_CLANG_VER)
++#  if defined(_LIBCPP_APPLE_CLANG_VER)
+ #    if _LIBCPP_APPLE_CLANG_VER < 1500
+ #      warning "Libc++ only supports AppleClang 15 and later"
+ #    endif
diff --git a/srcpkgs/chromium/patches/chromium-121-el7-default-constructor-involving-anonymous-union.patch b/srcpkgs/chromium/patches/chromium-121-el7-default-constructor-involving-anonymous-union.patch
new file mode 100644
index 0000000000000..0a2ac1de3561d
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-el7-default-constructor-involving-anonymous-union.patch
@@ -0,0 +1,12 @@
+diff -up chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.cc.me chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.cc
+--- chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.cc.me	2024-01-23 15:13:11.469104694 +0100
++++ chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.cc	2024-01-23 15:11:40.117842015 +0100
+@@ -46,7 +46,7 @@ size_t GetResultSizeBytes(const HeaderDi
+ 
+ }  // namespace
+ 
+-HeaderDirectFromSellerSignals::Result::Result() = default;
++HeaderDirectFromSellerSignals::Result::Result() {}
+ 
+ HeaderDirectFromSellerSignals::Result::Result(
+     absl::optional<std::string> seller_signals,
diff --git a/srcpkgs/chromium/patches/chromium-121-missing-header-files.patch b/srcpkgs/chromium/patches/chromium-121-missing-header-files.patch
new file mode 100644
index 0000000000000..377de0d1140cb
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-missing-header-files.patch
@@ -0,0 +1,459 @@
+diff -up chromium-119.0.6045.105/base/check_op.h.missing-header-files chromium-119.0.6045.105/base/check_op.h
+--- chromium-119.0.6045.105/base/check_op.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
++++ chromium-119.0.6045.105/base/check_op.h	2023-11-06 14:34:01.808868982 +0100
+@@ -5,6 +5,7 @@
+ #ifndef BASE_CHECK_OP_H_
+ #define BASE_CHECK_OP_H_
+ 
++#include <cstdint>
+ #include <cstddef>
+ #include <string>
+ #include <string_view>
+diff -up chromium-119.0.6045.105/base/containers/flat_map.h.missing-header-files chromium-119.0.6045.105/base/containers/flat_map.h
+--- chromium-119.0.6045.105/base/containers/flat_map.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
++++ chromium-119.0.6045.105/base/containers/flat_map.h	2023-11-06 14:34:01.813869089 +0100
+@@ -5,6 +5,7 @@
+ #ifndef BASE_CONTAINERS_FLAT_MAP_H_
+ #define BASE_CONTAINERS_FLAT_MAP_H_
+ 
++#include <cstdint>
+ #include <functional>
+ #include <tuple>
+ #include <type_traits>
+diff -up chromium-119.0.6045.105/base/debug/profiler.h.missing-header-files chromium-119.0.6045.105/base/debug/profiler.h
+--- chromium-119.0.6045.105/base/debug/profiler.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
++++ chromium-119.0.6045.105/base/debug/profiler.h	2023-11-06 14:34:01.809869004 +0100
+@@ -8,6 +8,7 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ #include "base/base_export.h"
+diff -up chromium-119.0.6045.105/base/memory/ref_counted.h.missing-header-files chromium-119.0.6045.105/base/memory/ref_counted.h
+--- chromium-119.0.6045.105/base/memory/ref_counted.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
++++ chromium-119.0.6045.105/base/memory/ref_counted.h	2023-11-06 14:34:01.808868982 +0100
+@@ -6,6 +6,7 @@
+ #define BASE_MEMORY_REF_COUNTED_H_
+ 
+ #include <stddef.h>
++#include <limits>
+ 
+ #include <limits>
+ #include <utility>
+diff -up chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h.missing-header-files chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h
+--- chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h.missing-header-files	2023-11-01 19:10:13.000000000 +0100
++++ chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h	2023-11-06 14:34:01.814869110 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <map>
+ 
+ #include "base/containers/flat_set.h"
+diff -up chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h.missing-header-files chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h
+--- chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h.missing-header-files	2023-11-01 19:10:16.000000000 +0100
++++ chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h	2023-11-06 14:34:01.817869174 +0100
+@@ -8,6 +8,7 @@
+ #include <memory>
+ #include <string>
+ #include <vector>
++#include <variant>
+ 
+ #include "base/containers/span.h"
+ #include "base/functional/callback_forward.h"
+diff -up chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc.missing-header-files chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc
+--- chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc.missing-header-files	2023-11-01 19:10:16.000000000 +0100
++++ chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc	2023-11-06 14:34:01.818869196 +0100
+@@ -11,6 +11,7 @@
+ #include <queue>
+ #include <utility>
+ #include <vector>
++#include <cstring>
+ 
+ #include "base/check.h"
+ #include "base/files/file_path.h"
+diff -up chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h.missing-header-files chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h
+--- chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h.missing-header-files	2023-11-01 19:10:19.000000000 +0100
++++ chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h	2023-11-06 14:34:01.815869132 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ class GURL;
+diff -up chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h.missing-header-files chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h
+--- chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h.missing-header-files	2023-11-01 19:10:20.000000000 +0100
++++ chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h	2023-11-06 14:34:01.813869089 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ #include "build/build_config.h"
+diff -up chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h.missing-header-files chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h
+--- chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h	2023-11-06 14:34:01.814869110 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ namespace feature_engagement {
+diff -up chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h.missing-header-files chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h
+--- chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h	2023-11-06 14:34:01.814869110 +0100
+@@ -5,6 +5,7 @@
+ #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
+ #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
+ 
++#include <cstdint>
+ #include <string>
+ 
+ #include "components/feature_engagement/internal/event_storage_validator.h"
+diff -up chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h.missing-header-files chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h
+--- chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h	2023-11-06 14:34:01.815869132 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ #include <utility>
+ #include <vector>
+diff -up chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h.missing-header-files chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h
+--- chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h	2023-11-06 14:34:01.814869110 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ 
+diff -up chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h.missing-header-files chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h
+--- chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
++++ chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h	2023-11-06 14:34:01.815869132 +0100
+@@ -5,6 +5,7 @@
+ #ifndef COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
+ #define COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
+ 
++#include <cstdint>
+ #include <stddef.h>
+ #include <stdint.h>
+ 
+diff -up chromium-119.0.6045.105/gin/time_clamper.h.missing-header-files chromium-119.0.6045.105/gin/time_clamper.h
+--- chromium-119.0.6045.105/gin/time_clamper.h.missing-header-files	2023-11-01 19:10:28.000000000 +0100
++++ chromium-119.0.6045.105/gin/time_clamper.h	2023-11-06 14:34:01.818869196 +0100
+@@ -48,7 +48,7 @@ class GIN_EXPORT TimeClamper {
+     const int64_t micros = now_micros % 1000;
+     // abs() is necessary for devices with times before unix-epoch (most likely
+     // configured incorrectly).
+-    if (abs(micros) + kResolutionMicros < 1000) {
++    if (std::abs(micros) + kResolutionMicros < 1000) {
+       return now_micros / 1000;
+     }
+     return ClampTimeResolution(now_micros) / 1000;
+diff -up chromium-119.0.6045.105/gpu/config/gpu_feature_info.h.missing-header-files chromium-119.0.6045.105/gpu/config/gpu_feature_info.h
+--- chromium-119.0.6045.105/gpu/config/gpu_feature_info.h.missing-header-files	2023-11-01 19:10:28.000000000 +0100
++++ chromium-119.0.6045.105/gpu/config/gpu_feature_info.h	2023-11-06 14:34:01.809869004 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ #include <vector>
+ 
+diff -up chromium-119.0.6045.105/net/base/net_export.h.missing-header-files chromium-119.0.6045.105/net/base/net_export.h
+--- chromium-119.0.6045.105/net/base/net_export.h.missing-header-files	2023-11-01 19:10:32.000000000 +0100
++++ chromium-119.0.6045.105/net/base/net_export.h	2023-11-06 14:34:01.809869004 +0100
+@@ -5,6 +5,8 @@
+ #ifndef NET_BASE_NET_EXPORT_H_
+ #define NET_BASE_NET_EXPORT_H_
+ 
++#include <cstdint>
++
+ // Defines NET_EXPORT so that functionality implemented by the net module can
+ // be exported to consumers, and NET_EXPORT_PRIVATE that allows unit tests to
+ // access features not intended to be used directly by real consumers.
+diff -up chromium-119.0.6045.105/pdf/document_attachment_info.h.missing-header-files chromium-119.0.6045.105/pdf/document_attachment_info.h
+--- chromium-119.0.6045.105/pdf/document_attachment_info.h.missing-header-files	2023-11-01 19:10:34.000000000 +0100
++++ chromium-119.0.6045.105/pdf/document_attachment_info.h	2023-11-06 14:34:01.815869132 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <string>
+ 
+ 
+diff -up chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h.missing-header-files chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h
+--- chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h.missing-header-files	2023-11-01 19:10:34.000000000 +0100
++++ chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h	2023-11-06 14:34:01.809869004 +0100
+@@ -5,6 +5,7 @@
+ #ifndef SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
+ #define SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
+ 
++#include <cstdint>
+ #include <bitset>
+ #include <cstdint>
+ #include <string>
+diff -up chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h.missing-header-files chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h
+--- chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h.missing-header-files	2023-11-01 19:10:35.000000000 +0100
++++ chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h	2023-11-06 14:34:01.820869238 +0100
+@@ -8,6 +8,9 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ 
++#include <cstddef>
++#include <cstdint>
++
+ #include <type_traits>
+ 
+ namespace device {
+diff -up chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc.missing-header-files chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc
+--- chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc.missing-header-files	2023-11-01 19:10:35.000000000 +0100
++++ chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc	2023-11-06 14:34:01.818869196 +0100
+@@ -3,6 +3,7 @@
+ // found in the LICENSE file.
+ 
+ #include "skia/ext/skcolorspace_trfn.h"
++#include <cmath>
+ 
+ #include <cmath>
+ 
+diff -up chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h.missing-header-files chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h
+--- chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h.missing-header-files	2023-11-01 19:10:36.000000000 +0100
++++ chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h	2023-11-06 14:34:01.809869004 +0100
+@@ -27,6 +27,7 @@
+ #ifndef ABSL_STRINGS_STRING_VIEW_H_
+ #define ABSL_STRINGS_STRING_VIEW_H_
+ 
++#include <cstdint>
+ #include <algorithm>
+ #include <cassert>
+ #include <cstddef>
+diff -up chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h.missing-header-files chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h
+--- chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h.missing-header-files	2023-11-01 19:11:59.000000000 +0100
++++ chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h	2023-11-06 14:34:01.810869025 +0100
+@@ -10,6 +10,7 @@
+ #ifndef GLSLANG_SHADERVARS_H_
+ #define GLSLANG_SHADERVARS_H_
+ 
++#include <cstdint>
+ #include <algorithm>
+ #include <array>
+ #include <cstdint>
+diff -up chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.missing-header-files chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h
+--- chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.missing-header-files	2023-11-01 19:10:37.000000000 +0100
++++ chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h	2023-11-06 14:34:01.810869025 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <array>
+ #include <cstdint>
+ #include <functional>
+diff -up chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.missing-header-files chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h
+--- chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.missing-header-files	2023-11-01 19:13:50.000000000 +0100
++++ chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h	2023-11-06 14:34:01.810869025 +0100
+@@ -15,6 +15,7 @@
+ #ifndef SRC_TINT_LANG_SPIRV_READER_AST_PARSER_NAMER_H_
+ #define SRC_TINT_LANG_SPIRV_READER_AST_PARSER_NAMER_H_
+ 
++#include <cstdint>
+ #include <string>
+ #include <unordered_map>
+ #include <vector>
+diff -up chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h.missing-header-files chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h
+--- chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h.missing-header-files	2023-11-01 19:11:20.000000000 +0100
++++ chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h	2023-11-06 14:34:01.819869217 +0100
+@@ -5,6 +5,7 @@
+ #ifndef IPCZ_SRC_IPCZ_ROUTER_LINK_H_
+ #define IPCZ_SRC_IPCZ_ROUTER_LINK_H_
+ 
++#include <memory>
+ #include <cstddef>
+ #include <functional>
+ #include <memory>
+diff -up chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc.missing-header-files chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc
+--- chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc.missing-header-files	2023-11-01 19:11:53.000000000 +0100
++++ chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc	2023-11-06 14:34:01.819869217 +0100
+@@ -14,6 +14,7 @@
+  * limitations under the License.
+  */
+ 
++#include <cmath>
+ #include "cpp/palettes/tones.h"
+ 
+ #include "cpp/cam/cam.h"
+diff -up chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.missing-header-files chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h
+--- chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.missing-header-files	2023-11-01 19:11:59.000000000 +0100
++++ chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h	2023-11-06 14:34:01.810869025 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <functional>
+ #include <map>
+ #include <set>
+diff -up chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h.missing-header-files chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h
+--- chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h.missing-header-files	2023-11-01 19:14:48.000000000 +0100
++++ chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h	2023-11-06 14:34:01.815869132 +0100
+@@ -7,6 +7,8 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
++
+ namespace pdfium {
+ namespace annotation_flags {
+ 
+diff -up chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h.missing-header-files chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h
+--- chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h.missing-header-files	2023-11-01 19:12:02.000000000 +0100
++++ chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h	2023-11-06 14:34:01.813869089 +0100
+@@ -17,6 +17,7 @@ limitations under the License.
+ #define RUY_RUY_PROFILER_INSTRUMENTATION_H_
+ 
+ #ifdef RUY_PROFILER
++#include <string>
+ #include <cstdio>
+ #include <mutex>
+ #include <vector>
+diff -up chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp.missing-header-files chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp
+--- chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp.missing-header-files	2023-11-01 19:12:15.000000000 +0100
++++ chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp	2023-11-06 14:34:01.810869025 +0100
+@@ -17,6 +17,7 @@
+ 
+ #include "System/Debug.hpp"
+ 
++#include <cstdint>
+ #include <cstddef>
+ #include <cstdint>
+ #include <functional>
+diff -up chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.missing-header-files chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc
+--- chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.missing-header-files	2023-11-01 19:12:42.000000000 +0100
++++ chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc	2023-11-06 14:34:01.814869110 +0100
+@@ -45,6 +45,7 @@
+ #include "llvm/Support/SaveAndRestore.h"
+ #include "llvm/Support/raw_ostream.h"
+ #include <algorithm>
++#include <cstdint>
+ #include <string>
+ #include <sysexits.h>
+ #ifdef HAVE_BACKTRACE
+diff -up chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.missing-header-files chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h
+--- chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.missing-header-files	2023-11-01 19:13:20.000000000 +0100
++++ chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h	2023-11-06 14:34:01.813869089 +0100
+@@ -31,6 +31,7 @@ limitations under the License.
+ #ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
+ #define TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
+ 
++#include <cstdint>
+ #include <complex>
+ #include <deque>
+ #include <vector>
+diff -up chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.missing-header-files chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h
+--- chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.missing-header-files	2023-11-01 19:12:45.000000000 +0100
++++ chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h	2023-11-06 14:34:01.817869174 +0100
+@@ -2884,6 +2884,7 @@ static void vma_aligned_free(void* VMA_N
+ 
+ // Define this macro to 1 to enable functions: vmaBuildStatsString, vmaFreeStatsString.
+ #if VMA_STATS_STRING_ENABLED
++#include <stdio.h>
+     static inline void VmaUint32ToStr(char* VMA_NOT_NULL outStr, size_t strLen, uint32_t num)
+     {
+         snprintf(outStr, strLen, "%u", static_cast<unsigned int>(num));
+diff -up chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc.missing-header-files chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc
+--- chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc.missing-header-files	2023-11-01 19:14:05.000000000 +0100
++++ chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc	2023-11-06 14:34:01.819869217 +0100
+@@ -8,6 +8,8 @@
+  *  be found in the AUTHORS file in the root of the source tree.
+  */
+ 
++#include <cstring>
++
+ #include "audio/utility/channel_mixer.h"
+ 
+ #include "audio/utility/channel_mixing_matrix.h"
+diff -up chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h.missing-header-files chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h
+--- chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h.missing-header-files	2023-11-01 19:14:06.000000000 +0100
++++ chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h	2023-11-06 14:34:01.819869217 +0100
+@@ -11,6 +11,7 @@
+ #ifndef COMMON_VIDEO_H264_SPS_PARSER_H_
+ #define COMMON_VIDEO_H264_SPS_PARSER_H_
+ 
++#include <cstdint>
+ #include "absl/types/optional.h"
+ #include "rtc_base/bitstream_reader.h"
+ 
+diff -up chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h.missing-header-files chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h
+--- chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h.missing-header-files	2023-11-01 19:14:11.000000000 +0100
++++ chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h	2023-11-06 14:34:01.819869217 +0100
+@@ -11,6 +11,7 @@
+ #ifndef MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
+ #define MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
+ 
++#include <cstdint>
+ #include <limits>
+ 
+ #include "absl/types/optional.h"
+diff -up chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-header-files chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc
+--- chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-header-files	2023-11-01 19:14:12.000000000 +0100
++++ chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc	2023-11-06 14:34:01.819869217 +0100
+@@ -10,6 +10,7 @@
+ 
+ #include "modules/video_coding/utility/ivf_file_reader.h"
+ 
++#include <cstring>
+ #include <string>
+ #include <vector>
+ 
+diff -up chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h.missing-header-files chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h
+--- chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h.missing-header-files	2023-11-01 19:11:28.000000000 +0100
++++ chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h	2023-11-06 14:34:01.814869110 +0100
+@@ -7,6 +7,8 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
++
+ #include "base/component_export.h"
+ #include "ui/gfx/geometry/matrix3_f.h"
+ 
+diff -up chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h.missing-header-files chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h
+--- chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h.missing-header-files	2023-11-01 19:11:28.000000000 +0100
++++ chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h	2023-11-06 14:34:01.812869068 +0100
+@@ -7,6 +7,7 @@
+ 
+ #include <stdint.h>
+ 
++#include <cstdint>
+ #include <array>
+ #include <cstddef>
+ #include <cstdint>
+diff -up chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h.missing-header-files chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h
+--- chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h.missing-header-files	2023-11-01 19:11:28.000000000 +0100
++++ chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h	2023-11-06 14:34:01.819869217 +0100
+@@ -9,6 +9,8 @@
+ 
+ #include "ui/gfx/buffer_types.h"
+ 
++#include <cstdint>
++
+ namespace ui {
+ 
+ int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format);
diff --git a/srcpkgs/chromium/patches/chromium-121-mnemonic-error.patch b/srcpkgs/chromium/patches/chromium-121-mnemonic-error.patch
new file mode 100644
index 0000000000000..61239e7f02276
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-mnemonic-error.patch
@@ -0,0 +1,12 @@
+diff -up chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn.mnemonic-error chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn
+--- chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn.mnemonic-error	2023-12-19 18:14:43.027723832 +0100
++++ chromium-121.0.6167.16/third_party/blink/renderer/core/BUILD.gn	2023-12-19 18:39:47.492384620 +0100
+@@ -1731,8 +1731,6 @@ action_foreach("element_locator_test_pro
+   python_path_root = "${root_out_dir}/pyproto"
+   python_path_proto = "${python_path_root}/third_party/blink/renderer/core/lcp_critical_path_predictor"
+ 
+-  mnemonic = "ELOC_PROTO"
+-
+   source_dir = "lcp_critical_path_predictor/test_proto"
+   sources = rebase_path([ "lcp_image_id.asciipb" ], "", source_dir)
+   sources += rebase_path([ "lcp_image_id_b.asciipb" ], "", source_dir)
diff --git a/srcpkgs/chromium/patches/chromium-120-no_matching_constructor.patch b/srcpkgs/chromium/patches/chromium-121-no_matching_constructor.patch
similarity index 75%
rename from srcpkgs/chromium/patches/chromium-120-no_matching_constructor.patch
rename to srcpkgs/chromium/patches/chromium-121-no_matching_constructor.patch
index b1d987adeff8d..332a91ad06b3d 100644
--- a/srcpkgs/chromium/patches/chromium-120-no_matching_constructor.patch
+++ b/srcpkgs/chromium/patches/chromium-121-no_matching_constructor.patch
@@ -114,9 +114,9 @@ diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_per
 +        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal};
    }
 -  buttons.emplace_back(l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
--                       ButtonType::kAllow, ui::ButtonStyle::kTonal);
+-                       ButtonType::kAllow, ui::ButtonStyle::kTonal, kAllowId);
 +  buttons.emplace_back() = {l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
-+                       ButtonType::kAllow, ui::ButtonStyle::kTonal};
++                       ButtonType::kAllow, ui::ButtonStyle::kTonal, kAllowId};
    return buttons;
  }
  
@@ -145,55 +145,6 @@ diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_per
    return buttons;
  }
  
-diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc
---- chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.no_matching_constructor	2023-11-29 22:39:53.000000000 +0100
-+++ chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc	2023-12-03 17:31:25.756420342 +0100
-@@ -63,18 +63,18 @@ EmbeddedPermissionPromptPreviouslyDenied
- std::vector<EmbeddedPermissionPromptPreviouslyDeniedView::ButtonConfiguration>
- EmbeddedPermissionPromptPreviouslyDeniedView::GetButtonsConfiguration() const {
-   std::vector<ButtonConfiguration> buttons;
--  buttons.emplace_back(
-+  buttons.emplace_back() = {
-       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_NOT_ALLOWING),
--      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal);
-+      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal};
- 
-   if (base::FeatureList::IsEnabled(permissions::features::kOneTimePermission)) {
--    buttons.emplace_back(
-+    buttons.emplace_back() = {
-         l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME),
--        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal);
-+        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal};
-   } else {
--    buttons.emplace_back(
-+    buttons.emplace_back() = {
-         l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME),
--        ButtonType::kAllow, ui::ButtonStyle::kTonal);
-+        ButtonType::kAllow, ui::ButtonStyle::kTonal};
-   }
-   return buttons;
- }
-diff -up chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.no_matching_constructor chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc
---- chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.no_matching_constructor	2023-11-29 22:39:53.000000000 +0100
-+++ chromium-120.0.6099.56/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc	2023-12-03 17:31:25.750420227 +0100
-@@ -57,13 +57,13 @@ EmbeddedPermissionPromptPreviouslyGrante
- std::vector<EmbeddedPermissionPromptPreviouslyGrantedView::ButtonConfiguration>
- EmbeddedPermissionPromptPreviouslyGrantedView::GetButtonsConfiguration() const {
-   std::vector<ButtonConfiguration> buttons;
--  buttons.emplace_back(
-+  buttons.emplace_back() = {
-       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_ALLOWING),
--      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal);
-+      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal};
- 
--  buttons.emplace_back(
-+  buttons.emplace_back() = {
-       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_STOP_ALLOWING),
--      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal);
-+      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal};
-   return buttons;
- }
- 
 diff -up chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc.no_matching_constructor chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc
 --- chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc.no_matching_constructor	2023-11-29 22:39:54.000000000 +0100
 +++ chromium-120.0.6099.56/chrome/test/chromedriver/capabilities.cc	2023-12-03 17:31:25.750420227 +0100
@@ -246,18 +197,6 @@ diff -up chromium-120.0.6099.56/components/autofill/core/browser/webdata/autofil
  
      if (type == ADDRESS_HOME_COUNTRY) {
        country_code = base::UTF16ToUTF8(s.ColumnString16(1));
-diff -up chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc.no_matching_constructor chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc
---- chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc.no_matching_constructor	2023-11-29 22:39:58.000000000 +0100
-+++ chromium-120.0.6099.56/components/password_manager/core/browser/password_manager.cc	2023-12-03 17:31:25.751420246 +0100
-@@ -630,7 +630,7 @@ void PasswordManager::OnUserModifiedNonP
-   // |driver| might be empty on iOS or in tests.
-   int driver_id = driver ? driver->GetId() : 0;
-   possible_usernames_.Put(
--      PossibleUsernameFieldIdentifier(driver_id, renderer_id),
-+      PossibleUsernameFieldIdentifier{driver_id, renderer_id},
-       PossibleUsernameData(GetSignonRealm(driver->GetLastCommittedURL()),
-                            renderer_id, value, base::Time::Now(), driver_id,
-                            autocomplete_attribute_has_username, is_likely_otp));
 diff -up chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc.no_matching_constructor chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
 --- chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc.no_matching_constructor	2023-11-29 22:40:01.000000000 +0100
 +++ chromium-120.0.6099.56/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc	2023-12-03 17:31:25.751420246 +0100
@@ -300,45 +239,6 @@ diff -up chromium-120.0.6099.56/content/browser/interest_group/interest_group_st
    }
    if (!interest_group_kanon_query.Succeeded()) {
      return absl::nullopt;
-diff -up chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc.no_matching_constructor chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc
---- chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc.no_matching_constructor	2023-11-29 22:40:01.000000000 +0100
-+++ chromium-120.0.6099.56/content/browser/renderer_host/render_frame_host_impl.cc	2023-12-03 20:49:28.059042672 +0100
-@@ -8685,7 +8685,7 @@ void RenderFrameHostImpl::SendFencedFram
-   for (const blink::FencedFrame::ReportingDestination& destination :
-        destinations) {
-     SendFencedFrameReportingBeaconInternal(
--        DestinationEnumEvent(event_type, event_data), destination,
-+        DestinationEnumEvent{event_type, event_data}, destination,
-         /*from_renderer=*/true, attribution_reporting_runtime_features);
-   }
- }
-@@ -8720,7 +8720,7 @@ void RenderFrameHostImpl::SendFencedFram
-   }
- 
-   SendFencedFrameReportingBeaconInternal(
--      DestinationURLEvent(destination_url),
-+      DestinationURLEvent{destination_url},
-       blink::FencedFrame::ReportingDestination::kBuyer,
-       /*from_renderer=*/true, attribution_reporting_runtime_features);
- }
-@@ -8820,7 +8820,7 @@ void RenderFrameHostImpl::MaybeSendFence
-         data = info->data;
-       }
-       initiator_rfh->SendFencedFrameReportingBeaconInternal(
--          AutomaticBeaconEvent(event_type, data), destination,
-+          AutomaticBeaconEvent{event_type, data}, destination,
-           /*from_renderer=*/false, attribution_reporting_features,
-           navigation_request.GetNavigationId());
-     }
-@@ -8832,7 +8832,7 @@ void RenderFrameHostImpl::MaybeSendFence
-     for (blink::FencedFrame::ReportingDestination destination :
-          info->destinations) {
-       initiator_rfh->SendFencedFrameReportingBeaconInternal(
--          AutomaticBeaconEvent(event_type, info->data), destination,
-+          AutomaticBeaconEvent{event_type, info->data}, destination,
-           /*from_renderer=*/false, info->attribution_reporting_runtime_features,
-           navigation_request.GetNavigationId());
-     }
 diff -up chromium-120.0.6099.56/net/dns/host_resolver_cache.cc.no_matching_constructor chromium-120.0.6099.56/net/dns/host_resolver_cache.cc
 --- chromium-120.0.6099.56/net/dns/host_resolver_cache.cc.no_matching_constructor	2023-11-29 22:40:07.000000000 +0100
 +++ chromium-120.0.6099.56/net/dns/host_resolver_cache.cc	2023-12-03 17:31:25.754420303 +0100
@@ -740,3 +640,306 @@ diff -up chromium-120.0.6099.56/ui/gtk/gtk_ui.cc.no_matching_constructor chromiu
    }
    return config;
  }
+diff -up chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.than chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc
+--- chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc.than	2023-12-19 17:13:15.116949814 +0100
++++ chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_denied_view.cc	2023-12-19 17:27:18.807102716 +0100
+@@ -66,17 +66,17 @@ EmbeddedPermissionPromptPreviouslyDenied
+ std::vector<EmbeddedPermissionPromptPreviouslyDeniedView::ButtonConfiguration>
+ EmbeddedPermissionPromptPreviouslyDeniedView::GetButtonsConfiguration() const {
+   std::vector<ButtonConfiguration> buttons;
+-  buttons.emplace_back(
++  buttons.emplace_back() = {
+       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_NOT_ALLOWING),
+-      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal);
++      ButtonType::kContinueNotAllowing, ui::ButtonStyle::kTonal};
+ 
+   if (base::FeatureList::IsEnabled(permissions::features::kOneTimePermission)) {
+-    buttons.emplace_back(
++    buttons.emplace_back() = {
+         l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW_THIS_TIME),
+-        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal, kAllowThisTimeId);
++        ButtonType::kAllowThisTime, ui::ButtonStyle::kTonal, kAllowThisTimeId};
+   } else {
+-    buttons.emplace_back(l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
+-                         ButtonType::kAllow, ui::ButtonStyle::kTonal);
++    buttons.emplace_back() = {l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW),
++                         ButtonType::kAllow, ui::ButtonStyle::kTonal};
+   }
+   return buttons;
+ }
+diff -up chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.than chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc
+--- chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc.than	2023-12-19 17:39:17.818834020 +0100
++++ chromium-121.0.6167.16/chrome/browser/ui/views/permissions/embedded_permission_prompt_previously_granted_view.cc	2023-12-19 17:44:15.346337876 +0100
+@@ -61,13 +61,13 @@ EmbeddedPermissionPromptPreviouslyGrante
+ std::vector<EmbeddedPermissionPromptPreviouslyGrantedView::ButtonConfiguration>
+ EmbeddedPermissionPromptPreviouslyGrantedView::GetButtonsConfiguration() const {
+   std::vector<ButtonConfiguration> buttons;
+-  buttons.emplace_back(
++  buttons.emplace_back() = {
+       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_CONTINUE_ALLOWING),
+-      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal);
++      ButtonType::kContinueAllowing, ui::ButtonStyle::kTonal};
+ 
+-  buttons.emplace_back(
++  buttons.emplace_back() = {
+       l10n_util::GetStringUTF16(IDS_EMBEDDED_PROMPT_STOP_ALLOWING),
+-      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal, kStopAllowingId);
++      ButtonType::kStopAllowing, ui::ButtonStyle::kTonal, kStopAllowingId};
+   return buttons;
+ }
+ 
+diff -up chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc.than chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc
+--- chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc.than	2023-12-19 17:39:17.819834039 +0100
++++ chromium-121.0.6167.16/components/password_manager/core/browser/password_manager.cc	2023-12-19 17:48:33.144389081 +0100
+@@ -666,7 +666,7 @@ void PasswordManager::OnUserModifiedNonP
+     it->second.last_change = base::Time::Now();
+   } else {
+     possible_usernames_.Put(
+-        PossibleUsernameFieldIdentifier(driver_id, renderer_id),
++        PossibleUsernameFieldIdentifier{driver_id, renderer_id},
+         PossibleUsernameData(GetSignonRealm(driver->GetLastCommittedURL()),
+                              renderer_id, value, base::Time::Now(), driver_id,
+                              autocomplete_attribute_has_username,
+diff -up chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc.than chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc
+--- chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc.than	2023-12-19 17:39:17.825834156 +0100
++++ chromium-121.0.6167.16/content/browser/renderer_host/render_frame_host_impl.cc	2023-12-19 17:53:43.153283847 +0100
+@@ -8561,7 +8561,7 @@ void RenderFrameHostImpl::SendFencedFram
+   for (const blink::FencedFrame::ReportingDestination& destination :
+        destinations) {
+     SendFencedFrameReportingBeaconInternal(
+-        DestinationEnumEvent(event_type, event_data), destination,
++        DestinationEnumEvent{event_type, event_data}, destination,
+         attribution_reporting_runtime_features);
+   }
+ }
+@@ -8593,7 +8593,7 @@ void RenderFrameHostImpl::SendFencedFram
+   }
+ 
+   SendFencedFrameReportingBeaconInternal(
+-      DestinationURLEvent(destination_url),
++      DestinationURLEvent{destination_url},
+       blink::FencedFrame::ReportingDestination::kBuyer,
+       attribution_reporting_runtime_features);
+ }
+@@ -8730,7 +8730,7 @@ void RenderFrameHostImpl::MaybeSendFence
+         data = info->data;
+       }
+       initiator_rfh->SendFencedFrameReportingBeaconInternal(
+-          AutomaticBeaconEvent(event_type, data), destination,
++          AutomaticBeaconEvent{event_type, data}, destination,
+           attribution_reporting_features, navigation_request.GetNavigationId());
+     }
+   } else {
+@@ -8741,7 +8741,7 @@ void RenderFrameHostImpl::MaybeSendFence
+     for (blink::FencedFrame::ReportingDestination destination :
+          info->destinations) {
+       initiator_rfh->SendFencedFrameReportingBeaconInternal(
+-          AutomaticBeaconEvent(event_type, info->data), destination,
++          AutomaticBeaconEvent{event_type, info->data}, destination,
+           info->attribution_reporting_runtime_features,
+           navigation_request.GetNavigationId());
+     }
+diff -up chromium-121.0.6167.57/base/nix/mime_util_xdg.cc.me chromium-121.0.6167.57/base/nix/mime_util_xdg.cc
+--- chromium-121.0.6167.57/base/nix/mime_util_xdg.cc.me	2024-01-21 16:54:15.261844448 +0100
++++ chromium-121.0.6167.57/base/nix/mime_util_xdg.cc	2024-01-21 16:55:48.705577424 +0100
+@@ -56,7 +56,7 @@ void LoadAllMimeCacheFiles(MimeTypeMap&
+   for (const auto& path : GetXDGDataSearchLocations(env.get())) {
+     FilePath mime_cache = path.Append("mime/mime.cache");
+     if (GetFileInfo(mime_cache, &info) && ParseMimeTypes(mime_cache, map)) {
+-      files.emplace_back(mime_cache, info.last_modified);
++      files.emplace_back() = {mime_cache, info.last_modified};
+     }
+   }
+ }
+diff -up chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc.me chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc
+--- chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc.me	2024-01-21 18:11:31.397859608 +0100
++++ chromium-121.0.6167.57/components/performance_manager/worker_watcher.cc	2024-01-21 18:20:07.715415037 +0100
+@@ -239,7 +239,7 @@ void WorkerWatcher::OnWorkerCreated(
+   DCHECK(insertion_result.second);
+ 
+   absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [&,
+            this](const content::GlobalRenderFrameHostId& render_frame_host_id) {
+             AddFrameClientConnection(insertion_result.first->second.get(),
+@@ -248,7 +248,7 @@ void WorkerWatcher::OnWorkerCreated(
+           [&, this](blink::DedicatedWorkerToken dedicated_worker_token) {
+             ConnectDedicatedWorkerClient(insertion_result.first->second.get(),
+                                          dedicated_worker_token);
+-          }),
++          }},
+       creator);
+ }
+ 
+@@ -265,7 +265,7 @@ void WorkerWatcher::OnBeforeWorkerDestro
+   // First disconnect the creator's node from this worker node.
+ 
+   absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [&,
+            this](const content::GlobalRenderFrameHostId& render_frame_host_id) {
+             RemoveFrameClientConnection(worker_node.get(),
+@@ -274,7 +274,7 @@ void WorkerWatcher::OnBeforeWorkerDestro
+           [&, this](blink::DedicatedWorkerToken dedicated_worker_token) {
+             DisconnectDedicatedWorkerClient(worker_node.get(),
+                                             dedicated_worker_token);
+-          }),
++          }},
+       creator);
+ 
+   // Disconnect all child workers before destroying the node.
+@@ -446,7 +446,7 @@ void WorkerWatcher::OnControlleeAdded(
+     const std::string& client_uuid,
+     const content::ServiceWorkerClientInfo& client_info) {
+   absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [&, this](content::GlobalRenderFrameHostId render_frame_host_id) {
+             // For window clients, it is necessary to wait until the navigation
+             // has committed to a RenderFrameHost.
+@@ -484,7 +484,7 @@ void WorkerWatcher::OnControlleeAdded(
+               ConnectSharedWorkerClient(service_worker_node,
+                                         shared_worker_token);
+             }
+-          }),
++          }},
+       client_info);
+ }
+ 
+@@ -524,7 +524,7 @@ void WorkerWatcher::OnControlleeRemoved(
+     return;
+ 
+   absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [&, this](content::GlobalRenderFrameHostId render_frame_host_id) {
+             RemoveFrameClientConnection(worker_node, render_frame_host_id);
+           },
+@@ -534,7 +534,7 @@ void WorkerWatcher::OnControlleeRemoved(
+           },
+           [&, this](blink::SharedWorkerToken shared_worker_token) {
+             DisconnectSharedWorkerClient(worker_node, shared_worker_token);
+-          }),
++          }},
+       client);
+ }
+ 
+@@ -810,7 +810,7 @@ void WorkerWatcher::ConnectAllServiceWor
+ 
+   for (const auto& kv : it->second) {
+     absl::visit(
+-        base::Overloaded(
++        base::Overloaded{
+             [&, this](content::GlobalRenderFrameHostId render_frame_host_id) {
+               AddFrameClientConnection(service_worker_node,
+                                        render_frame_host_id);
+@@ -822,7 +822,7 @@ void WorkerWatcher::ConnectAllServiceWor
+             [&, this](blink::SharedWorkerToken shared_worker_token) {
+               ConnectSharedWorkerClient(service_worker_node,
+                                         shared_worker_token);
+-            }),
++            }},
+         kv.second);
+   }
+ }
+@@ -837,7 +837,7 @@ void WorkerWatcher::DisconnectAllService
+ 
+   for (const auto& kv : it->second) {
+     absl::visit(
+-        base::Overloaded(
++        base::Overloaded{
+             [&, this](
+                 const content::GlobalRenderFrameHostId& render_frame_host_id) {
+               RemoveFrameClientConnection(service_worker_node,
+@@ -851,7 +851,7 @@ void WorkerWatcher::DisconnectAllService
+             [&, this](const blink::SharedWorkerToken& shared_worker_token) {
+               DisconnectSharedWorkerClient(service_worker_node,
+                                            shared_worker_token);
+-            }),
++            }},
+         kv.second);
+   }
+ }
+diff -up chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc.me chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc
+--- chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc.me	2024-01-21 18:40:52.284389286 +0100
++++ chromium-121.0.6167.57/content/browser/first_party_sets/first_party_set_parser.cc	2024-01-21 18:41:17.276840222 +0100
+@@ -764,7 +764,7 @@ FirstPartySetParser::ParseSetsFromEnterp
+                      context.GetPolicySetsFromList(
+                          policy.FindList(kFirstPartySetPolicyAdditionsField),
+                          PolicySetType::kAddition));
+-    return ParsedPolicySetLists(std::move(replacements), std::move(additions));
++    return ParsedPolicySetLists{std::move(replacements), std::move(additions)};
+   }();
+ 
+   context.PostProcessSetLists(set_lists);
+diff -up chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h.me chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h
+--- chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h.me	2024-01-21 19:30:00.536387844 +0100
++++ chromium-121.0.6167.57/content/browser/interest_group/header_direct_from_seller_signals.h	2024-01-21 20:29:50.236287514 +0100
+@@ -133,6 +133,7 @@ class CONTENT_EXPORT HeaderDirectFromSel
+ 
+     // The Ad-Auction-Signals response served by `origin`.
+     std::string response_json;
++    UnprocessedResponse(auto u, auto s) : origin(u), response_json(s) { }
+   };
+ 
+   // Information from ParseAndFind() calls used by ParseAndFindCompleted.
+diff -up chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc.me chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc
+--- chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc.me	2024-01-21 21:58:48.773366301 +0100
++++ chromium-121.0.6167.57/content/browser/service_worker/service_worker_main_resource_loader_interceptor.cc	2024-01-21 22:02:17.956086167 +0100
+@@ -360,10 +360,10 @@ ServiceWorkerMainResourceLoaderIntercept
+   }
+   auto* storage_partition = process->GetStoragePartition();
+ 
+-  return absl::visit(base::Overloaded([&, this](auto token) {
++  return absl::visit(base::Overloaded{[&, this](auto token) {
+                        return GetStorageKeyFromWorkerHost(storage_partition,
+                                                           token, origin);
+-                     }),
++                     }},
+                      *worker_token_);
+ }
+ 
+diff -up chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc.me chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc
+--- chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc.me	2024-01-21 22:04:30.446454697 +0100
++++ chromium-121.0.6167.57/content/browser/service_worker/service_worker_container_host.cc	2024-01-21 22:05:22.847391481 +0100
+@@ -870,7 +870,7 @@ ServiceWorkerContainerHost::GetClientTyp
+   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+   DCHECK(client_info_);
+   return absl::visit(
+-      base::Overloaded(
++      base::Overloaded{
+           [](GlobalRenderFrameHostId render_frame_host_id) {
+             return blink::mojom::ServiceWorkerClientType::kWindow;
+           },
+@@ -879,7 +879,7 @@ ServiceWorkerContainerHost::GetClientTyp
+           },
+           [](blink::SharedWorkerToken shared_worker_token) {
+             return blink::mojom::ServiceWorkerClientType::kSharedWorker;
+-          }),
++          }},
+       *client_info_);
+ }
+ 
+diff -up chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc.me chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc
+--- chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc.me	2024-01-21 22:37:00.969416148 +0100
++++ chromium-121.0.6167.57/content/browser/worker_host/dedicated_worker_host.cc	2024-01-21 22:38:07.754528335 +0100
+@@ -251,7 +251,7 @@ void DedicatedWorkerHost::StartScriptLoa
+   RenderFrameHostImpl* creator_render_frame_host = nullptr;
+   DedicatedWorkerHost* creator_worker = nullptr;
+ 
+-  absl::visit(base::Overloaded(
++  absl::visit(base::Overloaded{
+                   [&](const GlobalRenderFrameHostId& render_frame_host_id) {
+                     creator_render_frame_host =
+                         RenderFrameHostImpl::FromID(render_frame_host_id);
+@@ -259,7 +259,7 @@ void DedicatedWorkerHost::StartScriptLoa
+                   [&](blink::DedicatedWorkerToken dedicated_worker_token) {
+                     creator_worker = service_->GetDedicatedWorkerHostFromToken(
+                         dedicated_worker_token);
+-                  }),
++                  }},
+               creator_);
+ 
+   if (!creator_render_frame_host && !creator_worker) {
diff --git a/srcpkgs/chromium/patches/chromium-121-nullptr_t-without-namespace-std.patch b/srcpkgs/chromium/patches/chromium-121-nullptr_t-without-namespace-std.patch
new file mode 100644
index 0000000000000..3defc393c084f
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-nullptr_t-without-namespace-std.patch
@@ -0,0 +1,12 @@
+diff -up chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h.than chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h
+--- chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h.than	2023-12-04 10:20:45.350540897 +0100
++++ chromium-120.0.6099.56/third_party/blink/renderer/core/paint/fragment_data_iterator.h	2023-12-04 10:23:17.335339670 +0100
+@@ -21,7 +21,7 @@ class FragmentDataIteratorBase {
+ 
+  public:
+   explicit FragmentDataIteratorBase(Head& head) : fragment_head_(head) {}
+-  explicit FragmentDataIteratorBase(nullptr_t) {}
++  explicit FragmentDataIteratorBase(std::nullptr_t) {}
+ 
+   Data* GetFragmentData() const {
+     return !IsDone() ? &fragment_head_.at(idx_) : nullptr;
diff --git a/srcpkgs/chromium/patches/chromium-121-python3-invalid-escape-sequence.patch b/srcpkgs/chromium/patches/chromium-121-python3-invalid-escape-sequence.patch
new file mode 100644
index 0000000000000..c2bf5b489f7a1
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-python3-invalid-escape-sequence.patch
@@ -0,0 +1,77 @@
+diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py
+--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py.me	2024-01-15 20:48:28.177397102 +0100
++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py	2024-01-15 20:48:46.427768328 +0100
+@@ -18,7 +18,7 @@ class HTMLGenerationController(object):
+ 
+   def GetHTMLForInlineStylesheet(self, contents):
+     if self.current_module is None:
+-      if re.search('url\(.+\)', contents):
++      if re.search(r'url\(.+\)', contents):
+         raise Exception(
+             'Default HTMLGenerationController cannot handle inline style urls')
+       return contents
+diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py
+--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py.me	2024-01-15 20:49:39.363845083 +0100
++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py	2024-01-15 20:49:57.407212098 +0100
+@@ -4,4 +4,4 @@
+ 
+ 
+ def EscapeJSIfNeeded(js):
+-  return js.replace('</script>', '<\/script>')
++  return js.replace(r'</script>', r'<\/script>')
+diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py
+--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py.me	2024-01-15 20:50:11.819505254 +0100
++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py	2024-01-15 20:50:38.611050213 +0100
+@@ -293,6 +293,6 @@ class HTMLModuleParser():
+       html = ''
+     else:
+       if html.find('< /script>') != -1:
+-        raise Exception('Escape script tags with <\/script>')
++        raise Exception(r'Escape script tags with <\/script>')
+ 
+     return HTMLModuleParserResults(html)
+diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py
+--- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py.me	2024-01-15 20:48:59.917042709 +0100
++++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py	2024-01-15 20:49:24.402540761 +0100
+@@ -60,7 +60,7 @@ class ParsedStyleSheet(object):
+       return 'url(data:image/%s;base64,%s)' % (ext[1:], data.decode('utf-8'))
+ 
+     # I'm assuming we only have url()'s associated with images
+-    return re.sub('url\((?P<quote>"|\'|)(?P<url>[^"\'()]*)(?P=quote)\)',
++    return re.sub(r'url\((?P<quote>"|\'|)(?P<url>[^"\'()]*)(?P=quote)\)',
+                   InlineUrl, self.contents)
+ 
+   def AppendDirectlyDependentFilenamesTo(self, dependent_filenames):
+@@ -72,7 +72,7 @@ class ParsedStyleSheet(object):
+       raise Exception('@imports are not supported')
+ 
+     matches = re.findall(
+-        'url\((?:["|\']?)([^"\'()]*)(?:["|\']?)\)',
++        r'url\((?:["|\']?)([^"\'()]*)(?:["|\']?)\)',
+         self.contents)
+ 
+     def resolve_url(url):
+diff -up chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py.me chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py
+--- chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py.me	2024-01-15 20:50:56.810420400 +0100
++++ chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py	2024-01-15 20:52:33.506387261 +0100
+@@ -28,7 +28,7 @@ import platform
+ import sys
+ 
+ def glob_slash(dirname):
+-    """Like regular glob but replaces \ with / in returned paths."""
++    """Like regular glob but replaces \\ with / in returned paths."""
+     return [s.replace('\\', '/') for s in glob.glob(dirname)]
+ 
+ def main():
+diff -up chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py.me chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py
+--- chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py.me	2024-01-15 20:52:38.016479000 +0100
++++ chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py	2024-01-15 20:52:48.863699640 +0100
+@@ -28,7 +28,7 @@ import platform
+ import sys
+ 
+ def glob_slash(dirname):
+-    """Like regular glob but replaces \ with / in returned paths."""
++    """Like regular glob but replaces \\ with / in returned paths."""
+     return [s.replace('\\', '/') for s in glob.glob(dirname)]
+ 
+ def main():
diff --git a/srcpkgs/chromium/patches/chromium-121-rust-clang_lib.patch b/srcpkgs/chromium/patches/chromium-121-rust-clang_lib.patch
new file mode 100644
index 0000000000000..4014f9a827648
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-rust-clang_lib.patch
@@ -0,0 +1,22 @@
+--- a/build/config/clang/BUILD.gn
++++ b/build/config/clang/BUILD.gn
+@@ -128,14 +128,15 @@
+       } else if (is_apple) {
+         _dir = "darwin"
+       } else if (is_linux || is_chromeos) {
++        _dir = "linux"
+         if (current_cpu == "x64") {
+-          _dir = "x86_64-unknown-linux-gnu"
++          _suffix = "-x86_64"
+         } else if (current_cpu == "x86") {
+-          _dir = "i386-unknown-linux-gnu"
++          _suffix = "-i386"
+         } else if (current_cpu == "arm") {
+-          _dir = "armv7-unknown-linux-gnueabihf"
++          _suffix = "-armhf"
+         } else if (current_cpu == "arm64") {
+-          _dir = "aarch64-unknown-linux-gnu"
++          _suffix = "-aarch64"
+         } else {
+           assert(false)  # Unhandled cpu type
+         }
diff --git a/srcpkgs/chromium/patches/chromium-121-rust-without-profiler_builtins.patch b/srcpkgs/chromium/patches/chromium-121-rust-without-profiler_builtins.patch
new file mode 100644
index 0000000000000..25c3422982933
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-rust-without-profiler_builtins.patch
@@ -0,0 +1,10 @@
+--- a/build/rust/std/BUILD.gn
++++ b/build/rust/std/BUILD.gn
+@@ -100,7 +100,6 @@
+   # don't need to pass to the C++ linker because they're used for specialized
+   # purposes.
+   skip_stdlib_files = [
+-    "profiler_builtins",
+     "rustc_std_workspace_alloc",
+     "rustc_std_workspace_core",
+     "rustc_std_workspace_std",
diff --git a/srcpkgs/chromium/patches/chromium-121-system-libxml.patch b/srcpkgs/chromium/patches/chromium-121-system-libxml.patch
new file mode 100644
index 0000000000000..da463c26d323a
--- /dev/null
+++ b/srcpkgs/chromium/patches/chromium-121-system-libxml.patch
@@ -0,0 +1,24 @@
+diff -up chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h.me chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h
+--- chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h.me	2024-02-06 08:22:36.013021582 +0100
++++ chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h	2024-02-06 08:23:08.281607499 +0100
+@@ -77,7 +77,7 @@ class XSLTProcessor final : public Scrip
+ 
+   void reset();
+ 
+-  static void ParseErrorFunc(void* user_data, const xmlError*);
++  static void ParseErrorFunc(void* user_data, xmlError*);
+   static void GenericErrorFunc(void* user_data, const char* msg, ...);
+ 
+   // Only for libXSLT callbacks
+diff -up chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc.me chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc
+--- chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc.me	2024-02-06 08:14:32.368066214 +0100
++++ chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc	2024-02-06 08:23:08.282607518 +0100
+@@ -66,7 +66,7 @@ void XSLTProcessor::GenericErrorFunc(voi
+   // It would be nice to do something with this error message.
+ }
+ 
+-void XSLTProcessor::ParseErrorFunc(void* user_data, const xmlError* error) {
++void XSLTProcessor::ParseErrorFunc(void* user_data, xmlError* error) {
+   FrameConsole* console = static_cast<FrameConsole*>(user_data);
+   if (!console)
+     return;
diff --git a/srcpkgs/chromium/patches/chromium-120-typename.patch b/srcpkgs/chromium/patches/chromium-121-typename.patch
similarity index 78%
rename from srcpkgs/chromium/patches/chromium-120-typename.patch
rename to srcpkgs/chromium/patches/chromium-121-typename.patch
index 9a2d878b12b54..e83e62c60a54e 100644
--- a/srcpkgs/chromium/patches/chromium-120-typename.patch
+++ b/srcpkgs/chromium/patches/chromium-121-typename.patch
@@ -203,3 +203,57 @@ diff -up chromium-120.0.6099.56/third_party/blink/renderer/bindings/core/v8/asyn
        ExceptionState& exception_state) = 0;
  };
  
+diff -up chromium-121.0.6167.57/base/functional/bind_internal.h.me chromium-121.0.6167.57/base/functional/bind_internal.h
+--- chromium-121.0.6167.57/base/functional/bind_internal.h.me	2024-01-21 16:10:09.809037581 +0100
++++ chromium-121.0.6167.57/base/functional/bind_internal.h	2024-01-21 16:46:33.759397303 +0100
+@@ -1533,11 +1533,11 @@ template <int i,
+           typename Param>
+ struct ParamCanBeBound {
+  private:
+-  using UnwrappedParam = BindArgument<i>::template ForwardedAs<
++  using UnwrappedParam = typename BindArgument<i>::template ForwardedAs<
+       Unwrapped>::template ToParamWithType<Param>;
+-  using ParamStorage = BindArgument<i>::template ToParamWithType<
++  using ParamStorage = typename BindArgument<i>::template ToParamWithType<
+       Param>::template StoredAs<Storage>;
+-  using BoundStorage =
++  using BoundStorage = typename
+       BindArgument<i>::template BoundAs<Arg>::template StoredAs<Storage>;
+ 
+   // We forbid callbacks from using raw_ptr as a parameter. However, we allow
+diff -up chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h.me chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h
+--- chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h.me	2024-01-21 17:23:37.786606428 +0100
++++ chromium-121.0.6167.57/mojo/public/cpp/bindings/array_traits.h	2024-01-21 17:23:58.582127103 +0100
+@@ -90,7 +90,7 @@ template <typename Container>
+     { c[i] } -> std::same_as<typename Container::reference>;
+   }
+ struct ArrayTraits<Container> {
+-  using Element = Container::value_type;
++  using Element = typename Container::value_type;
+ 
+   // vector-like containers have no built-in null.
+   static bool IsNull(const Container& c) { return false; }
+diff -up chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h.me chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h
+--- chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h.me	2024-01-21 17:33:40.030897838 +0100
++++ chromium-121.0.6167.57/components/optimization_guide/core/model_execution/model_execution_util.h	2024-01-21 17:34:11.518705266 +0100
+@@ -25,7 +25,7 @@ void SetExecutionRequestTemplate(
+ 
+   // Request is set by the feature and should always be typed.
+   auto typed_request =
+-      static_cast<const FeatureType::Request&>(request_metadata);
++      static_cast<const typename FeatureType::Request&>(request_metadata);
+   *(logging_data->mutable_request_data()) = typed_request;
+ }
+ 
+diff -up chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h.me chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h
+--- chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h.me	2024-01-21 17:32:42.367417619 +0100
++++ chromium-121.0.6167.57/components/optimization_guide/core/model_quality/model_quality_log_entry.h	2024-01-21 17:33:25.732531198 +0100
+@@ -29,7 +29,7 @@ class ModelQualityLogEntry {
+   }
+ 
+   template <typename FeatureType>
+-  FeatureType::Quality* quality_data() {
++  typename FeatureType::Quality* quality_data() {
+     return FeatureType::GetLoggingData(*log_ai_data_request_)
+         ->mutable_quality_data();
+   }
diff --git a/srcpkgs/chromium/patches/chromium-120-workaround_clang_bug-structured_binding.patch b/srcpkgs/chromium/patches/chromium-121-workaround_clang_bug-structured_binding.patch
similarity index 75%
rename from srcpkgs/chromium/patches/chromium-120-workaround_clang_bug-structured_binding.patch
rename to srcpkgs/chromium/patches/chromium-121-workaround_clang_bug-structured_binding.patch
index b06e29f29047a..192b0692fbf73 100644
--- a/srcpkgs/chromium/patches/chromium-120-workaround_clang_bug-structured_binding.patch
+++ b/srcpkgs/chromium/patches/chromium-121-workaround_clang_bug-structured_binding.patch
@@ -25,27 +25,29 @@ diff -up chromium-115.0.5790.32/content/browser/service_worker/service_worker_co
  
    DCHECK(document_url.is_valid());
    TRACE_EVENT1("ServiceWorker",
-diff -up chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.me chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc
---- chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.me	2023-12-03 22:17:50.922083200 +0100
-+++ chromium-120.0.6099.56/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc	2023-12-03 22:22:55.437484343 +0100
-@@ -3447,7 +3447,8 @@ void GridLayoutAlgorithm::PlaceGridItems
+diff -up chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.than chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc
+--- chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc.than	2023-12-19 17:57:56.205197246 +0100
++++ chromium-121.0.6167.16/third_party/blink/renderer/core/layout/grid/grid_layout_algorithm.cc	2023-12-19 18:10:13.778634531 +0100
+@@ -3527,8 +3527,8 @@ void GridLayoutAlgorithm::PlaceGridItems
    DCHECK(out_row_break_between);
  
-   const auto& container_space = ConstraintSpace();
+   const auto& container_space = GetConstraintSpace();
 -  const auto& [grid_items, layout_data, tree_size] = sizing_tree.TreeRootData();
+-
 +  const auto& [grid_items, l_d, tree_size] = sizing_tree.TreeRootData();
 +  const auto& layout_data = l_d;
- 
    const auto* cached_layout_subtree = container_space.GetGridLayoutSubtree();
    const auto container_writing_direction =
-@@ -3611,7 +3612,9 @@ void GridLayoutAlgorithm::PlaceGridItems
+       container_space.GetWritingDirection();
+@@ -3691,8 +3691,9 @@ void GridLayoutAlgorithm::PlaceGridItems
  
    // TODO(ikilpatrick): Update |SetHasSeenAllChildren| and early exit if true.
-   const auto& constraint_space = ConstraintSpace();
+   const auto& constraint_space = GetConstraintSpace();
 -  const auto& [grid_items, layout_data, tree_size] = sizing_tree.TreeRootData();
+-
 +  const auto& [g_i, l_d, tree_size] = sizing_tree.TreeRootData();
 +  const auto& grid_items = g_i;
 +  const auto& layout_data = l_d;
- 
    const auto* cached_layout_subtree = constraint_space.GetGridLayoutSubtree();
    const auto container_writing_direction =
+       constraint_space.GetWritingDirection();
diff --git a/srcpkgs/chromium/patches/cross-build.patch b/srcpkgs/chromium/patches/cross-build.patch
index 53df490bac97a..59e1bff61f3ce 100644
--- a/srcpkgs/chromium/patches/cross-build.patch
+++ b/srcpkgs/chromium/patches/cross-build.patch
@@ -1,16 +1,5 @@
 --- a/build/config/compiler/BUILD.gn.orig
 +++ b/build/config/compiler/BUILD.gn
-@@ -55,6 +55,10 @@
- }
- 
- declare_args() {
-+  is_musl = false
-+}
-+
-+declare_args() {
-   # Normally, Android builds are lightly optimized, even for debug builds, to
-   # keep binary size down. Setting this flag to true disables such optimization
-   android_full_debug = false
 @@ -917,8 +917,13 @@
      } else if (current_cpu == "arm64") {
        if (is_clang && !is_android && !is_nacl && !is_fuchsia &&
diff --git a/srcpkgs/chromium/patches/gcc13-wnoerror.patch b/srcpkgs/chromium/patches/gcc13-wnoerror.patch
deleted file mode 100644
index c069aa41b2d09..0000000000000
--- a/srcpkgs/chromium/patches/gcc13-wnoerror.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-https://gn.googlesource.com/gn/+/c7b223bfb225ce87a72a244d016ffdfcf227fa5e%5E%21/
-Ignore build warning -Werror=redundant-move
-
-gcc-13 complains with:
-error: redundant move in return statement [-Werror=redundant-move]
-
-We cannot fix the code, because both old versions of gcc and the windows
-toolchain fails to build.
-index adb622a..232e536 100755
---- a/tools/gn/build/gen.py
-+++ b/tools/gn/build/gen.py
-
-@@ -472,6 +472,8 @@
-     # flags not supported by gcc/g++.
-     if cxx == 'clang++':
-       cflags.extend(['-Wrange-loop-analysis', '-Wextra-semi-stmt'])
-+    else:
-+      cflags.append('-Wno-redundant-move')
- 
-     if platform.is_linux() or platform.is_mingw() or platform.is_msys():
-       ldflags.append('-Wl,--as-needed')
diff --git a/srcpkgs/chromium/patches/unbundle-ffmpeg-av_stream_get_first_dts.patch b/srcpkgs/chromium/patches/unbundle-ffmpeg-av_stream_get_first_dts.patch
deleted file mode 100644
index dae1adde0bc66..0000000000000
--- a/srcpkgs/chromium/patches/unbundle-ffmpeg-av_stream_get_first_dts.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/build/linux/unbundle/ffmpeg.gn b/build/linux/unbundle/ffmpeg.gn
-index 16e20744706..6a079b32221 100644
---- a/build/linux/unbundle/ffmpeg.gn
-+++ b/build/linux/unbundle/ffmpeg.gn
-@@ -12,6 +12,7 @@ pkg_config("system_ffmpeg") {
-     "libavformat",
-     "libavutil",
-   ]
-+  defines = [ "av_stream_get_first_dts(stream)=stream->first_dts" ]
- }
- 
- buildflag_header("ffmpeg_features") {
diff --git a/srcpkgs/chromium/template b/srcpkgs/chromium/template
index 5613fa3813822..22947e83cb52c 100644
--- a/srcpkgs/chromium/template
+++ b/srcpkgs/chromium/template
@@ -1,15 +1,15 @@
 # Template file for 'chromium'
 pkgname=chromium
 # See https://chromiumdash.appspot.com/releases?platform=Linux for the latest version
-version=120.0.6099.129
+version=121.0.6167.160
 revision=1
 archs="i686* x86_64* aarch64* armv7l*"
 hostmakedepends="
- $(vopt_if clang "clang lld llvm15")
+ $(vopt_if clang "clang17 lld17 llvm17 compiler-rt")
  bison git gperf hwids ninja nodejs perl pkg-config python3
- libepoxy-devel libevent-devel libglib-devel"
+ libepoxy-devel libevent-devel libglib-devel rust"
 makedepends="
- alsa-lib-devel libdav1d-devel brotli-devel cups-devel elfutils-devel ffmpeg-devel
+ alsa-lib-devel libdav1d-devel brotli-devel cups-devel elfutils-devel
  fontconfig-devel freetype-devel gtk+3-devel libXScrnSaver-devel
  libXcomposite-devel libXcursor-devel libXdamage-devel libXi-devel libXrandr-devel
  libavif-devel libcap-devel libcurl-devel libdrm-devel libevent-devel
@@ -18,6 +18,7 @@ makedepends="
  libxslt-devel minizip-devel mit-krb5-devel nss-devel opus-devel
  pciutils-devel snappy-devel speech-dispatcher-devel speex-devel
  xcb-proto zlib-devel libaom-devel libffi-devel libevdev-devel
+ compiler-rt
  $(vopt_if pipewire pipewire-devel)
  $(vopt_if pulseaudio pulseaudio-devel)
  $(vopt_if sndio sndio-devel)"
@@ -27,7 +28,7 @@ maintainer="Duncaen <duncaen@voidlinux.org>"
 license="BSD-3-Clause"
 homepage="https://www.chromium.org/"
 distfiles="https://commondatastorage.googleapis.com/chromium-browser-official/${pkgname}-${version}.tar.xz"
-checksum=be36d5abecfafdc68d9b27b0bee65136316610a295e844b99483a7520b245f85
+checksum=4586673899383d30e9d95fa3a9c5f8160f32a9d5789e40be82abf3e4dd9cc3df
 
 lib32disabled=yes
 
@@ -50,7 +51,7 @@ if [ "$CROSS_BUILD" ]; then
 	hostmakedepends+=" libX11-devel libxcb-devel pciutils-devel libXext-devel libglvnd-devel
 	 libjpeg-turbo-devel libXi-devel nss-devel libpng-devel libwebp-devel
 	 libxml2-devel $(vopt_if pulseaudio pulseaudio-devel) libxslt-devel libxkbcommon-devel
-	 $(vopt_if pipewire pipewire-devel) ffmpeg-devel opus-devel pango-devel libva-devel
+	 $(vopt_if pipewire pipewire-devel) opus-devel pango-devel libva-devel
 	 libcurl-devel snappy-devel libXrandr-devel libXcomposite-devel cups-devel
 	 mit-krb5-devel alsa-lib-devel libXdamage-devel libepoxy-devel libevdev-devel
 	 libavif-devel libaom-devel libdav1d-devel libflac-devel
@@ -63,7 +64,7 @@ fi
 
 if [ "$CROSS_BUILD" ]; then
 	case "${XBPS_TARGET_MACHINE}" in
-		aarch64*) ;;
+		# aarch64*) ;;
 		*) nocross="chromium can not be cross compiled for this architecture" ;;
 	esac
 fi
@@ -133,7 +134,7 @@ _setup_toolchain() {
 }
 
 do_configure() {
-	local system="" conf=()
+	local system=() conf=()
 
 	# compile gn early, so it can be used to generate gni stuff
 	AR="ar" CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD LD=$CXX_FOR_BUILD \
@@ -153,8 +154,9 @@ do_configure() {
 	# XXX: harfbuzz-ng use builtin one until system-wide is updated >=3.0.0
 	# libcxx https://github.com/llvm/llvm-project/issues/61705:
 	# snappy
-	system="
-		ffmpeg
+	# ffmpeg: system ffmpeg is too old and makes the ffmpeg update not require
+	#  rebuilding chromium
+	system=(
 		flac
 		fontconfig
 		freetype
@@ -166,12 +168,12 @@ do_configure() {
 		libxml
 		libxslt
 		opus
-	"
+	)
 
 	# remove build scripts for system provided dependencies - basically does the
 	# same as the bundeled script to remove bundeled libs, but this way we don't
 	# have to list the remaining libs
-	for LIB in ${system} libjpeg_turbo; do
+	for LIB in "${system[@]}" libjpeg_turbo; do
 		find "third_party/$LIB" -type f \
 			\! -path "third_party/$LIB/chromium/*" \
 			\! -path "third_party/$LIB/google/*" \
@@ -182,13 +184,13 @@ do_configure() {
 	done
 
 	# switch to system provided dependencies
-	build/linux/unbundle/replace_gn_files.py --system-libraries ${system}
+	build/linux/unbundle/replace_gn_files.py --system-libraries "${system[@]}"
 
 	third_party/libaddressinput/chromium/tools/update-strings.py
 
+	local clang_version="$(clang -dumpversion)"
 	conf=(
 		'enable_nacl=false'
-		'enable_rust=false'
 
 		'use_sysroot=false'
 
@@ -198,12 +200,15 @@ do_configure() {
 		"use_lld=$(vopt_if clang true false)"
 		'clang_use_chrome_plugins=false'
 		'clang_base_path="/usr"'
+		"clang_version=\"${clang_version%%.*}\""
 
 		"gold_path=\"${XBPS_CROSS_BASE}/usr/bin/ld.gold\""
 		"use_custom_libcxx=$(vopt_if libcxx true false)" # https://github.com/llvm/llvm-project/issues/61705
 		'use_gold=false'
 
+		'enable_rust=true'
 		'rust_sysroot_absolute="/usr"'
+		"rustc_version=\"$(rustc --version)\""
 
 		# is_debug makes the build a debug build, changes some things.
 		# might be useful for real debugging vs just debug symbols.
@@ -293,6 +298,9 @@ do_configure() {
 }
 
 do_build() {
+	# XXX: need for error: the option `Z` is only accepted on the nightly compiler
+	export RUSTC_BOOTSTRAP=1
+
 	_setup_toolchain
 	CCACHE_SLOPPINESS=include_file_mtime ninja -C out/Release ${makejobs} chrome chromedriver.unstripped chrome_crashpad_handler
 }

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PR PATCH] [Closed]: chromium: update to 121.0.6167.85.
  2024-01-25 15:39 [PR PATCH] chromium: update to 121.0.6167.85 Duncaen
                   ` (2 preceding siblings ...)
  2024-02-12  0:49 ` Duncaen
@ 2024-02-12  0:50 ` Duncaen
  3 siblings, 0 replies; 5+ messages in thread
From: Duncaen @ 2024-02-12  0:50 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 250 bytes --]

There's a closed pull request on the void-packages repository

chromium: update to 121.0.6167.85.
https://github.com/void-linux/void-packages/pull/48367

Description:
[ci skip]

* [ ] x86_64-glibc
* [ ] x86_64-musl
* [ ] aarch64-musl
* [ ] i686

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-02-12  0:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-25 15:39 [PR PATCH] chromium: update to 121.0.6167.85 Duncaen
2024-02-10 23:38 ` [PR PATCH] [Updated] " Duncaen
2024-02-11  1:46 ` Duncaen
2024-02-12  0:49 ` Duncaen
2024-02-12  0:50 ` [PR PATCH] [Closed]: " Duncaen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).