Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package nodejs-electron for openSUSE:Factory 
checked in at 2024-09-17 18:18:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nodejs-electron (Old)
 and      /work/SRC/openSUSE:Factory/.nodejs-electron.new.29891 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "nodejs-electron"

Tue Sep 17 18:18:07 2024 rev:132 rq:1201467 version:31.6.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/nodejs-electron/nodejs-electron.changes  
2024-09-15 12:41:23.365019306 +0200
+++ 
/work/SRC/openSUSE:Factory/.nodejs-electron.new.29891/nodejs-electron.changes   
    2024-09-17 18:18:53.400721976 +0200
@@ -1,0 +2,52 @@
+Mon Sep 16 17:40:09 UTC 2024 - Bruno Pitrus <brunopit...@hotmail.com>
+
+- Update to 31.6.0
+  * ABI break: NODE_MODULE_VERSION is now 125
+  * Chromium 126.0.6478.234
+  * Node 20.17.0
+  * V8 12.6
+  * Breaking change: Remove WebSQL support
+  * Breaking change: nativeImage.toDataURL will preserve PNG colorspace
+  * Added options parameter to Session.clearData API.
+  * Extended webContents.setWindowOpenHandler to support manual creation of 
BrowserWindow.
+  * clearData method added to Session
+  * Extended WebContentsView to accept pre-existing webContents object.
+  * see https://www.electronjs.org/blog/electron-31-0 and 
https://github.com/electron/electron/releases/tag/v31.0.0 for more
+- Drop no longer needed patches
+  * electron-13-fix-use-thin-lto.patch
+  * remove-openscreen.patch
+  * system-yuv.patch
+  * chromium-122-abseil-shims.patch
+  * electron-16-std-vector-non-const.patch
+  * fake_ssl_socket_client-Wlto-type-mismatch.patch
+  * angle-FramebufferVk-powf.patch
+  * span_reader-missing-optional.patch
+  * bitset-missing-uint8_t-memcpy.patch
+  * temporal_scalability_id_extractor-missing-bitset.patch
+  * gpu_adapter_info-missing-optional.patch
+  * first_party_sets_handler_database_helper-missing-optional.patch
+  * async_iterable-forwarding.patch
+  * script_streamer-atomic-include.patch
+- Add patches to fix build
+  * fix-build-without-safebrowsing.patch
+  * fix-build-without-supervised-users.patch
+  * Cr126-abseil-shims.patch
+  * absl-base-dynamic_annotations.patch
+  * webp-no-sharpyuv.patch
+  * http_auth_ntlm_mechanism-could-not-convert-to-base-span.patch
+  * angle-State-constexpr.patch
+  * color_provider-incomplete-ColorProviderInternal.patch
+  * run_segmenter-missing-optional.patch
+  * page_popup_controller-missing-optional.patch
+  * native_css_paint_definition-expected-unqualified-id.patch
+  * text_decoder-missing-optional.patch
+  * real_time_reporting_bindings-forward-declaration.patch
+  * blink-platform-INSIDE_BLINK-Wodr.patch
+  * quiche-QuicIntervalDeque-no-match-for-operator-mm.patch
+  * ConsumeRadii-linker-error.patch
+- Conditionally revert upstreamed 
ffmpeg-7-ffmpeg_video_decoder-reordered_opaque.patch on old ffmpeg
+- Revert upstream changes to build with system abseil 
(quiche-absl-HexStringToBytes.patch)
+- Refresh bad-font-gc patches from Debian
+- aarch64: disable LTO also on Fedora 39 due to OOM
+
+-------------------------------------------------------------------

Old:
----
  angle-FramebufferVk-powf.patch
  async_iterable-forwarding.patch
  bitset-missing-uint8_t-memcpy.patch
  chromium-122-abseil-shims.patch
  electron-13-fix-use-thin-lto.patch
  electron-16-std-vector-non-const.patch
  electron-30.5.1.tar.zst
  fake_ssl_socket_client-Wlto-type-mismatch.patch
  first_party_sets_handler_database_helper-missing-optional.patch
  gpu_adapter_info-missing-optional.patch
  remove-openscreen.patch
  script_streamer-atomic-include.patch
  span_reader-missing-optional.patch
  system-yuv.patch
  temporal_scalability_id_extractor-missing-bitset.patch

New:
----
  ConsumeRadii-linker-error.patch
  Cr126-abseil-shims.patch
  absl-base-dynamic_annotations.patch
  angle-State-constexpr.patch
  blink-platform-INSIDE_BLINK-Wodr.patch
  color_provider-incomplete-ColorProviderInternal.patch
  electron-31.6.0.tar.zst
  fix-build-without-safebrowsing.patch
  fix-build-without-supervised-users.patch
  http_auth_ntlm_mechanism-could-not-convert-to-base-span.patch
  native_css_paint_definition-expected-unqualified-id.patch
  page_popup_controller-missing-optional.patch
  quiche-QuicIntervalDeque-no-match-for-operator-mm.patch
  quiche-absl-HexStringToBytes.patch
  real_time_reporting_bindings-forward-declaration.patch
  run_segmenter-missing-optional.patch
  text_decoder-missing-optional.patch
  webp-no-sharpyuv.patch

BETA DEBUG BEGIN:
  Old:  * fake_ssl_socket_client-Wlto-type-mismatch.patch
  * angle-FramebufferVk-powf.patch
  * span_reader-missing-optional.patch
  Old:  * first_party_sets_handler_database_helper-missing-optional.patch
  * async_iterable-forwarding.patch
  * script_streamer-atomic-include.patch
  Old:  * span_reader-missing-optional.patch
  * bitset-missing-uint8_t-memcpy.patch
  * temporal_scalability_id_extractor-missing-bitset.patch
  Old:  * system-yuv.patch
  * chromium-122-abseil-shims.patch
  * electron-16-std-vector-non-const.patch
  Old:- Drop no longer needed patches
  * electron-13-fix-use-thin-lto.patch
  * remove-openscreen.patch
  Old:  * chromium-122-abseil-shims.patch
  * electron-16-std-vector-non-const.patch
  * fake_ssl_socket_client-Wlto-type-mismatch.patch
  Old:  * electron-16-std-vector-non-const.patch
  * fake_ssl_socket_client-Wlto-type-mismatch.patch
  * angle-FramebufferVk-powf.patch
  Old:  * gpu_adapter_info-missing-optional.patch
  * first_party_sets_handler_database_helper-missing-optional.patch
  * async_iterable-forwarding.patch
  Old:  * temporal_scalability_id_extractor-missing-bitset.patch
  * gpu_adapter_info-missing-optional.patch
  * first_party_sets_handler_database_helper-missing-optional.patch
  Old:  * electron-13-fix-use-thin-lto.patch
  * remove-openscreen.patch
  * system-yuv.patch
  Old:  * async_iterable-forwarding.patch
  * script_streamer-atomic-include.patch
- Add patches to fix build
  Old:  * angle-FramebufferVk-powf.patch
  * span_reader-missing-optional.patch
  * bitset-missing-uint8_t-memcpy.patch
  Old:  * remove-openscreen.patch
  * system-yuv.patch
  * chromium-122-abseil-shims.patch
  Old:  * bitset-missing-uint8_t-memcpy.patch
  * temporal_scalability_id_extractor-missing-bitset.patch
  * gpu_adapter_info-missing-optional.patch
BETA DEBUG END:

BETA DEBUG BEGIN:
  New:  * quiche-QuicIntervalDeque-no-match-for-operator-mm.patch
  * ConsumeRadii-linker-error.patch
- Conditionally revert upstreamed 
ffmpeg-7-ffmpeg_video_decoder-reordered_opaque.patch on old ffmpeg
  New:  * fix-build-without-supervised-users.patch
  * Cr126-abseil-shims.patch
  * absl-base-dynamic_annotations.patch
  New:  * Cr126-abseil-shims.patch
  * absl-base-dynamic_annotations.patch
  * webp-no-sharpyuv.patch
  New:  * http_auth_ntlm_mechanism-could-not-convert-to-base-span.patch
  * angle-State-constexpr.patch
  * color_provider-incomplete-ColorProviderInternal.patch
  New:  * real_time_reporting_bindings-forward-declaration.patch
  * blink-platform-INSIDE_BLINK-Wodr.patch
  * quiche-QuicIntervalDeque-no-match-for-operator-mm.patch
  New:  * angle-State-constexpr.patch
  * color_provider-incomplete-ColorProviderInternal.patch
  * run_segmenter-missing-optional.patch
  New:- Add patches to fix build
  * fix-build-without-safebrowsing.patch
  * fix-build-without-supervised-users.patch
  New:  * fix-build-without-safebrowsing.patch
  * fix-build-without-supervised-users.patch
  * Cr126-abseil-shims.patch
  New:  * webp-no-sharpyuv.patch
  * http_auth_ntlm_mechanism-could-not-convert-to-base-span.patch
  * angle-State-constexpr.patch
  New:  * page_popup_controller-missing-optional.patch
  * native_css_paint_definition-expected-unqualified-id.patch
  * text_decoder-missing-optional.patch
  New:  * run_segmenter-missing-optional.patch
  * page_popup_controller-missing-optional.patch
  * native_css_paint_definition-expected-unqualified-id.patch
  New:  * blink-platform-INSIDE_BLINK-Wodr.patch
  * quiche-QuicIntervalDeque-no-match-for-operator-mm.patch
  * ConsumeRadii-linker-error.patch
  New:- Conditionally revert upstreamed 
ffmpeg-7-ffmpeg_video_decoder-reordered_opaque.patch on old ffmpeg
- Revert upstream changes to build with system abseil 
(quiche-absl-HexStringToBytes.patch)
- Refresh bad-font-gc patches from Debian
  New:  * text_decoder-missing-optional.patch
  * real_time_reporting_bindings-forward-declaration.patch
  * blink-platform-INSIDE_BLINK-Wodr.patch
  New:  * color_provider-incomplete-ColorProviderInternal.patch
  * run_segmenter-missing-optional.patch
  * page_popup_controller-missing-optional.patch
  New:  * native_css_paint_definition-expected-unqualified-id.patch
  * text_decoder-missing-optional.patch
  * real_time_reporting_bindings-forward-declaration.patch
  New:  * absl-base-dynamic_annotations.patch
  * webp-no-sharpyuv.patch
  * http_auth_ntlm_mechanism-could-not-convert-to-base-span.patch
BETA DEBUG END:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ nodejs-electron.spec ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:06.589272334 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:06.593272501 +0200
@@ -22,7 +22,7 @@
 
 %define mod_name electron
 # https://github.com/nodejs/node/blob/main/doc/abi_version_registry.json
-%define abi_version 123
+%define abi_version 125
 
 # Do not provide libEGL.so, etc…
 %define __provides_exclude ^lib.*\\.so.*$
@@ -95,11 +95,7 @@
 %endif
 
 %ifarch aarch64
-%if 0%{?suse_version} || 0%{?fedora} >= 40
 %bcond_with lto
-%else
-%bcond_without lto
-%endif
 %endif
 
 %ifarch aarch64
@@ -233,7 +229,7 @@
 
 
 Name:           nodejs-electron
-Version:        30.5.1
+Version:        31.6.0
 %global tag_version %version
 Release:        0
 Summary:        Build cross platform desktop apps with JavaScript, HTML, and 
CSS
@@ -250,11 +246,15 @@
 Source400:      ffmpeg-new-channel-layout.patch
 Source401:      audio_file_reader-ffmpeg-AVFrame-duration.patch
 Source402:      Cr122-ffmpeg-new-channel-layout.patch
+Source403:      ffmpeg-7-ffmpeg_video_decoder-reordered_opaque.patch
 # and against harfbuzz 4
 Source415:      harfbuzz-replace-chromium-scoped-type.patch
 Source416:      harfbuzz-replace-HbScopedPointer.patch
 # and wayland 1.31
 Source450:      wayland-proto-31-cursor-shape.patch
+# and abseil 2401
+Source460:      quiche-absl-HexStringToBytes.patch
+
 
 
 # PATCHES for openSUSE-specific things (compiler flags, paths, etc.)
@@ -263,8 +263,6 @@
 Patch2:         common.gypi-compiler.patch
 Patch3:         gcc-enable-lto.patch
 Patch7:         chromium-91-java-only-allowed-in-android-builds.patch
-# Always disable use_thin_lto which is an lld feature
-Patch21:        electron-13-fix-use-thin-lto.patch
 # Fix common.gypi to include /usr/include/electron
 Patch25:        electron-16-system-node-headers.patch
 # 
https://sources.debian.org/patches/chromium/102.0.5005.115-1/debianization/support-i386.patch/
@@ -295,10 +293,11 @@
 Patch583:       remove-rust.patch
 Patch585:       remove-dawn.patch
 Patch586:       aom-vpx-no-thread-wrapper.patch
-Patch587:       remove-openscreen.patch
 Patch588:       remove-password-manager-and-policy.patch
 Patch589:       remove-puffin.patch
 Patch590:       remove-sync.patch
+Patch591:       fix-build-without-safebrowsing.patch
+Patch592:       fix-build-without-supervised-users.patch
 
 
 
@@ -328,9 +327,10 @@
 Patch1077:      system-wayland.patch
 Patch1078:      system-simdutf.patch
 Patch1079:      system-libm.patch
-Patch1080:      system-yuv.patch
-Patch1081:      chromium-122-abseil-shims.patch
 Patch1082:      chromium-124-shims.patch
+Patch1083:      Cr126-abseil-shims.patch
+Patch1084:      absl-base-dynamic_annotations.patch
+Patch1085:      webp-no-sharpyuv.patch
 
 
 # PATCHES to fix interaction with third-party software
@@ -348,7 +348,7 @@
 # See https://reviews.llvm.org/D92800
 Patch2022:      electron-13-fix-base-check-nomerge.patch
 # Fix electron patched code
-Patch2024:      electron-16-std-vector-non-const.patch
+#Patch2024:      electron-16-std-vector-non-const.patch
 Patch2029:      electron-16-webpack-fix-openssl-3.patch
 Patch2031:      partition_alloc-no-lto.patch
 Patch2032:      seccomp_bpf-no-lto.patch
@@ -402,19 +402,20 @@
 Patch3144:      mt21_util-flax-vector-conversions.patch
 Patch3149:      boringssl-internal-addc-cxx.patch
 Patch3151:      distributed_point_functions-evaluate_prg_hwy-signature.patch
-Patch3152:      fake_ssl_socket_client-Wlto-type-mismatch.patch
-Patch3153:      angle-FramebufferVk-powf.patch
 Patch3154:      licenses.py-FileNotFoundError.patch
-Patch3155:      span_reader-missing-optional.patch
-Patch3156:      bitset-missing-uint8_t-memcpy.patch
-Patch3157:      temporal_scalability_id_extractor-missing-bitset.patch
-Patch3158:      gpu_adapter_info-missing-optional.patch
-Patch3159:      first_party_sets_handler_database_helper-missing-optional.patch
-Patch3160:      async_iterable-forwarding.patch
 Patch3161:      preview_cancel_reason-missing-string.patch
-Patch3162:      script_streamer-atomic-include.patch
 Patch3163:      DesktopNativeWidgetAura-HandleActivationChanged-crash.patch
-Patch3164:      ffmpeg-7-ffmpeg_video_decoder-reordered_opaque.patch
+Patch3165:      http_auth_ntlm_mechanism-could-not-convert-to-base-span.patch
+Patch3166:      angle-State-constexpr.patch
+Patch3167:      color_provider-incomplete-ColorProviderInternal.patch
+Patch3168:      run_segmenter-missing-optional.patch
+Patch3169:      page_popup_controller-missing-optional.patch
+Patch3170:      native_css_paint_definition-expected-unqualified-id.patch
+Patch3171:      text_decoder-missing-optional.patch
+Patch3172:      real_time_reporting_bindings-forward-declaration.patch
+Patch3173:      blink-platform-INSIDE_BLINK-Wodr.patch
+Patch3174:      quiche-QuicIntervalDeque-no-match-for-operator-mm.patch
+Patch3175:      ConsumeRadii-linker-error.patch
 
 # Patches to re-enable upstream force disabled features.
 # There's no sense in submitting them but they may be reused as-is by other 
packagers.
@@ -762,7 +763,6 @@
 
 
 
-
 # Sanity check if macro corresponds to the actual ABI
 test $(grep ^node_module_version electron/build/args/all.gn | sed 's/.* = //') 
= %abi_version
 
@@ -774,7 +774,7 @@
 %if %{with ffmpeg_6}
 patch -R -p1 < %PATCH2012
 %else
-patch -R -p1 < %PATCH3164
+patch -R -p1 < %SOURCE403
 patch -R -p1 < %SOURCE402
 patch -R -p1 < %SOURCE400
 patch -R -p1 < %SOURCE401
@@ -795,6 +795,9 @@
 
 
 
+# This one depends on an abseil nightly, reverting unconditionally.
+patch -R -p1 < %SOURCE460
+
 # Link system wayland-protocols-devel into where chrome expects them
 mkdir -p third_party/wayland/src
 mkdir -p third_party/wayland-protocols/kde/src
@@ -1039,7 +1042,7 @@
 %ifarch %ix86 %arm
 #try to reduce memory
 
-export LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory"
+export LDFLAGS="${LDFLAGS} -Wl,--no-keep-memory -Wl,--reduce-memory-overheads"
 %endif #ifarch ix86 arm
 
 
@@ -1174,9 +1177,7 @@
 myconf_gn+=" enable_pdf_viewer=false"
 myconf_gn+=" enable_print_preview=false"
 myconf_gn+=" enable_printing=false"
-myconf_gn+=" enable_basic_printing=false"
 myconf_gn+=' use_cups=false'
-myconf_gn+=' enable_print_content_analysis=false'
 #we don't build PDF support, so disabling the below:
 #myconf_gn+=" use_system_lcms2=true"
 #myconf_gn+=" use_system_libopenjpeg2=true"
@@ -1269,21 +1270,23 @@
 myconf_gn+=' enable_compose=false'
 myconf_gn+=' enterprise_cloud_content_analysis=false'
 myconf_gn+=' enterprise_local_content_analysis=false'
-myconf_gn+=' enterprise_data_controls=false'
 myconf_gn+=' enterprise_watermark=false'
-myconf_gn+=' enterprise_content_analysis=false'
+myconf_gn+=' enterprise_content_analysis=true'
 myconf_gn+=' enable_video_effects=false'
 myconf_gn+=' use_fake_screen_ai=true'
 myconf_gn+=' webnn_use_tflite=false'
+myconf_gn+=' structured_metrics_enabled=false'
+myconf_gn+=' structured_metrics_debug_enabled=false'
 
 
 #FIXME: possibly enable this when skia gets built with rust code by default.
 #Need to patch in optflags and possibly FFI LTO hacks (see signal-desktop 
package for how it's done)
 myconf_gn+=' enable_rust=false'
 myconf_gn+=' enable_chromium_prelude=false'
-
+myconf_gn+=' enable_cxx=false'
 
 myconf_gn+=' chrome_certificate_policies_supported=false'
+myconf_gn+=' chrome_root_store_cert_management_ui=false'
 myconf_gn+=' use_kerberos=false'
 
 myconf_gn+=' disable_histogram_support=true'

++++++ ConsumeRadii-linker-error.patch ++++++
--- src/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc.orig
+++ src/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc
@@ -7654,6 +7654,12 @@ template bool ConsumeRadii(CSSValue* hor
                            const CSSParserContext& context,
                            bool use_legacy_parsing);
 
+template bool ConsumeRadii(CSSValue* horizontal_radii[4],
+                           CSSValue* vertical_radii[4],
+                           CSSParserTokenRange& stream,
+                           const CSSParserContext& context,
+                           bool use_legacy_parsing);
+
 template <class T = CSSParserTokenRange>
   requires std::is_same_v<T, CSSParserTokenStream> ||
            std::is_same_v<T, CSSParserTokenRange>

++++++ Cr122-ffmpeg-new-channel-layout.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:06.685276340 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:06.689276507 +0200
@@ -178,7 +178,7 @@
 -            smpte_st_2086.luminance_min = av_q2d(mdcv->min_luminance);
 -          }
 -
--          // TODO(https://crbug.com/1446302): Consider rejecting metadata that
+-          // TODO(crbug.com/40268540): Consider rejecting metadata that
 -          // does not specify all values.
 -          if (mdcv->has_primaries || mdcv->has_luminance) {
 -            hdr_metadata.smpte_st_2086 = smpte_st_2086;
@@ -221,7 +221,7 @@
 +          smpte_st_2086.luminance_min = av_q2d(mdcv->min_luminance);
 +        }
 +
-+        // TODO(https://crbug.com/1446302): Consider rejecting metadata that
++        // TODO(crbug.com/40268540): Consider rejecting metadata that
 +        // does not specify all values.
 +        if (mdcv->has_primaries || mdcv->has_luminance) {
 +          hdr_metadata.smpte_st_2086 = smpte_st_2086;

++++++ Cr126-abseil-shims.patch ++++++
>From b90d7410221d30c40a0d5ac1ff0041667fd8db0e Mon Sep 17 00:00:00 2001
From: "lauren n. liberda" <lauren@selfisekai.rocks>
Date: Wed, 26 Jun 2024 00:56:57 +0000
Subject: [PATCH] unbundle: update absl shims

Change-Id: I6fca3a8fd333c027fe48d8871073c79e7d8c3cd6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5657110
Reviewed-by: Lei Zhang <thes...@chromium.org>
Reviewed-by: Thomas Anderson <thomasander...@chromium.org>
Commit-Queue: Thomas Anderson <thomasander...@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1319524}
---
 build/linux/unbundle/absl_debugging.gn | 2 ++
 build/linux/unbundle/absl_random.gn    | 5 +++++
 build/linux/unbundle/absl_status.gn    | 2 ++
 build/linux/unbundle/absl_types.gn     | 2 ++
 4 files changed, 11 insertions(+)

diff --git a/build/linux/unbundle/absl_debugging.gn 
b/build/linux/unbundle/absl_debugging.gn
index 5fbd34abbc96ae..b59a45b0913116 100644
--- a/build/linux/unbundle/absl_debugging.gn
+++ b/build/linux/unbundle/absl_debugging.gn
@@ -46,5 +46,7 @@ source_set("symbolize") {
   public_configs = [ ":system_absl_symbolize" ]
 }
 
+source_set("demangle_rust_test") {
+}
 source_set("stacktrace_test") {
 }
diff --git a/build/linux/unbundle/absl_random.gn 
b/build/linux/unbundle/absl_random.gn
index 7bb70241ad1f8d..eae95345e491d1 100644
--- a/build/linux/unbundle/absl_random.gn
+++ b/build/linux/unbundle/absl_random.gn
@@ -57,3 +57,8 @@ source_set("random") {
   deps = [ ":random_shim" ]
   public_configs = [ ":system_absl_random_random" ]
 }
+
+group("distributions_test") {
+}
+group("mock_distributions_test") {
+}
diff --git a/build/linux/unbundle/absl_status.gn 
b/build/linux/unbundle/absl_status.gn
index 5f1e73a6d4d133..1905485814986e 100644
--- a/build/linux/unbundle/absl_status.gn
+++ b/build/linux/unbundle/absl_status.gn
@@ -38,3 +38,5 @@ source_set("status_test") {
 }
 source_set("statusor_test") {
 }
+source_set("status_matchers_test") {
+}
diff --git a/build/linux/unbundle/absl_types.gn 
b/build/linux/unbundle/absl_types.gn
index 4bb77f1b631cbd..8d2b1314558f2c 100644
--- a/build/linux/unbundle/absl_types.gn
+++ b/build/linux/unbundle/absl_types.gn
@@ -93,5 +93,7 @@ source_set("variant") {
 
 source_set("optional_test") {
 }
+source_set("span_test") {
+}
 source_set("variant_test") {
 }

++++++ RenderFrameHostImpl-use-after-free.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:06.733278343 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:06.737278510 +0200
@@ -6,8 +6,8 @@
  #include <memory>
 +#include <new>
  #include <optional>
+ #include <string_view>
  #include <tuple>
- #include <unordered_map>
 @@ -1818,7 +1819,12 @@ RenderFrameHostImpl::~RenderFrameHostImp
    // `DocumentService` and `RenderFrameHostUserData` subclasses are still 
valid
    // when their destructors run.

++++++ absl-base-dynamic_annotations.patch ++++++
>From 91a8dd6bff0c3965ab324b5c2a3c19c0a2931831 Mon Sep 17 00:00:00 2001
From: "lauren n. liberda" <lauren@selfisekai.rocks>
Date: Sat, 29 Jun 2024 00:26:40 +0000
Subject: [PATCH] unbundle: add missing absl_base header

Change-Id: Ie4edda0ec8661437652b2c4c324ac82137bfcfed
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5659519
Reviewed-by: Thomas Anderson <thomasander...@chromium.org>
Reviewed-by: Lei Zhang <thes...@chromium.org>
Commit-Queue: Thomas Anderson <thomasander...@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1321266}
---
 build/linux/unbundle/absl_base.gn | 1 +
 1 file changed, 1 insertion(+)

diff --git a/build/linux/unbundle/absl_base.gn 
b/build/linux/unbundle/absl_base.gn
index 7da86e46147bdd..b5ce0863e6fde7 100644
--- a/build/linux/unbundle/absl_base.gn
+++ b/build/linux/unbundle/absl_base.gn
@@ -27,6 +27,7 @@ shim_headers("base_shim") {
   headers = [
     "call_once.h",
     "casts.h",
+    "dynamic_annotations.h",
   ]
 }
 

++++++ angle-State-constexpr.patch ++++++
>From 0508fc9b920b001115f80790e4942ff69d3f5de1 Mon Sep 17 00:00:00 2001
From: Roman Lavrov <rom...@google.com>
Date: Tue, 23 Apr 2024 15:32:52 -0400
Subject: [PATCH] Reland "Cleanup: replace DirtyObjectType check with constexpr
 generator"

Avoid using lambdas with member function pointers which caused issues
on MSVC C++17.

This is a reland of commit 89caa0e1d99e45f3d6f355f6e14c147f8de3e0e5

Original change's description:
> Cleanup: replace DirtyObjectType check with constexpr generator
>
> Static assert was meant to avoid kDirtyObjectHandlers getting out of
> sync, but it doesn't achieve that goal as it's just comparing values
> with ints which is confusing.
>
> Replacing with constexpr generated std::array. C++20 allows to easily
> validate that all values are set by _not_ default-initializing
> `handlers`. C++17 makes it trickier, addeded static_assert on an
> additional static constexpr bool (silly but I can't find a more concise
> way)
>
> Bug: angleproject:8666
> Bug: b/335295728
> Change-Id: Idf9bbd087d09d5ba253a7587ce0503cae3fcf3a7
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5478231
> Reviewed-by: Shahbaz Youssefi <syouss...@chromium.org>
> Commit-Queue: Roman Lavrov <rom...@google.com>

Bug: angleproject:8666
Bug: b/335295728
Change-Id: I62e66b700512e072ef10cc57a17e8837a534c0d5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5589285
Commit-Queue: Roman Lavrov <rom...@google.com>
Reviewed-by: Shahbaz Youssefi <syouss...@chromium.org>
---
 src/libANGLE/State.cpp |  2 --
 src/libANGLE/State.h   | 67 +++++++++++++++++++++++++-----------------
 2 files changed, 40 insertions(+), 29 deletions(-)

diff --git a/src/libANGLE/State.h b/src/libANGLE/State.h
index b2aa6749060..38a219f489d 100644
--- src/third_party/angle/src/libANGLE/State.h.orig     2024-07-24 
12:51:20.205804675 +0200
+++ src/third_party/angle/src/libANGLE/State.h  2024-07-26 14:11:54.188991370 
+0200
@@ -1447,41 +1447,46 @@ class State : angle::NonCopyable
     angle::Result syncProgramPipelineObject(const Context *context, Command 
command);
 
     using DirtyObjectHandler = angle::Result (State::*)(const Context 
*context, Command command);
+    using DirtyObjectHandlerArray = std::array<DirtyObjectHandler, 
state::DIRTY_OBJECT_MAX>;
 
-    static constexpr std::array<DirtyObjectHandler, state::DIRTY_OBJECT_MAX> 
kDirtyObjectHandlers =
-        []() {
-            // Work around C++'s lack of array element support in designated 
initializers
-            std::array<DirtyObjectHandler, state::DIRTY_OBJECT_MAX> handlers{};
-
-            handlers[state::DIRTY_OBJECT_ACTIVE_TEXTURES]  = 
&State::syncActiveTextures;
-            handlers[state::DIRTY_OBJECT_TEXTURES_INIT]    = 
&State::syncTexturesInit;
-            handlers[state::DIRTY_OBJECT_IMAGES_INIT]      = 
&State::syncImagesInit;
-            handlers[state::DIRTY_OBJECT_READ_ATTACHMENTS] = 
&State::syncReadAttachments;
-            handlers[state::DIRTY_OBJECT_DRAW_ATTACHMENTS] = 
&State::syncDrawAttachments;
-            handlers[state::DIRTY_OBJECT_READ_FRAMEBUFFER] = 
&State::syncReadFramebuffer;
-            handlers[state::DIRTY_OBJECT_DRAW_FRAMEBUFFER] = 
&State::syncDrawFramebuffer;
-            handlers[state::DIRTY_OBJECT_VERTEX_ARRAY]     = 
&State::syncVertexArray;
-            handlers[state::DIRTY_OBJECT_TEXTURES]         = 
&State::syncTextures;
-            handlers[state::DIRTY_OBJECT_IMAGES]           = 
&State::syncImages;
-            handlers[state::DIRTY_OBJECT_SAMPLERS]         = 
&State::syncSamplers;
-            handlers[state::DIRTY_OBJECT_PROGRAM_PIPELINE_OBJECT] =
-                &State::syncProgramPipelineObject;
-
-            return handlers;
-        }();
-
-    static_assert(
-        []() {
-            for (auto handler : kDirtyObjectHandlers)
+    static constexpr DirtyObjectHandlerArray MakeDirtyObjectHandlers()
+    {
+        // Work around C++'s lack of array element support in designated 
initializers
+        // This function cannot be a lambda due to MSVC C++17 limitations 
b/330910097#comment5
+        DirtyObjectHandlerArray handlers{};
+
+        handlers[state::DIRTY_OBJECT_ACTIVE_TEXTURES]         = 
&State::syncActiveTextures;
+        handlers[state::DIRTY_OBJECT_TEXTURES_INIT]           = 
&State::syncTexturesInit;
+        handlers[state::DIRTY_OBJECT_IMAGES_INIT]             = 
&State::syncImagesInit;
+        handlers[state::DIRTY_OBJECT_READ_ATTACHMENTS]        = 
&State::syncReadAttachments;
+        handlers[state::DIRTY_OBJECT_DRAW_ATTACHMENTS]        = 
&State::syncDrawAttachments;
+        handlers[state::DIRTY_OBJECT_READ_FRAMEBUFFER]        = 
&State::syncReadFramebuffer;
+        handlers[state::DIRTY_OBJECT_DRAW_FRAMEBUFFER]        = 
&State::syncDrawFramebuffer;
+        handlers[state::DIRTY_OBJECT_VERTEX_ARRAY]            = 
&State::syncVertexArray;
+        handlers[state::DIRTY_OBJECT_TEXTURES]                = 
&State::syncTextures;
+        handlers[state::DIRTY_OBJECT_IMAGES]                  = 
&State::syncImages;
+        handlers[state::DIRTY_OBJECT_SAMPLERS]                = 
&State::syncSamplers;
+        handlers[state::DIRTY_OBJECT_PROGRAM_PIPELINE_OBJECT] = 
&State::syncProgramPipelineObject;
+
+        // If a handler is missing, reset everything for ease of static_assert
+        for (auto handler : handlers)
+        {
+            if (handler == nullptr)
             {
-                if (handler == nullptr)
-                {
-                    return false;
-                }
+                return DirtyObjectHandlerArray();
             }
-            return true;
-        }(),
-        "kDirtyObjectHandlers missing a handler");
+        }
+
+        return handlers;
+    }
+
+    angle::Result dirtyObjectHandler(size_t dirtyObject, const Context 
*context, Command command)
+    {
+        static constexpr DirtyObjectHandlerArray handlers = 
MakeDirtyObjectHandlers();
+        static_assert(handlers[0] != nullptr, "MakeDirtyObjectHandlers missing 
a handler");
+
+        return (this->*handlers[dirtyObject])(context, command);
+    }
 
     // Robust init must happen before Framebuffer init for the Vulkan back-end.
     static_assert(state::DIRTY_OBJECT_ACTIVE_TEXTURES < 
state::DIRTY_OBJECT_TEXTURES_INIT,
@@ -1606,7 +1611,7 @@ ANGLE_INLINE angle::Result State::syncDi
 
     for (size_t dirtyObject : dirtyObjects)
     {
-        ANGLE_TRY((this->*kDirtyObjectHandlers[dirtyObject])(context, 
command));
+        ANGLE_TRY(dirtyObjectHandler(dirtyObject, context, command));
     }
 
     mDirtyObjects &= ~dirtyObjects;

++++++ angle-system-xxhash.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:06.785280513 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:06.789280680 +0200
@@ -11,8 +11,8 @@
      "src/common/base",
 -    "src/common/third_party/xxhash",
    ]
+   libs = []
    if (is_android) {
-     libs = [ "log" ]
 @@ -431,18 +432,12 @@
    }
  }

++++++ bad-font-gc00.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:06.817281849 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:06.821282016 +0200
@@ -92,17 +92,17 @@
  
 --- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc
 +++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc
-@@ -167,7 +167,8 @@ static hb_bool_t HarfBuzzGetGlyphVertica
+@@ -202,7 +202,8 @@
                                                  void* user_data) {
    HarfBuzzFontData* hb_font_data =
        reinterpret_cast<HarfBuzzFontData*>(font_data);
 -  OpenTypeVerticalData* vertical_data = hb_font_data->VerticalData();
 +  scoped_refptr<OpenTypeVerticalData> vertical_data =
-+      hb_font_data->VerticalData();
-   if (!vertical_data)
++        hb_font_data->VerticalData();
+   if (!vertical_data) {
      return false;
- 
-@@ -186,7 +187,8 @@ static hb_position_t HarfBuzzGetGlyphVer
+   }
+@@ -223,7 +223,8 @@ static hb_position_t HarfBuzzGetGlyphVer
                                                       void* user_data) {
    HarfBuzzFontData* hb_font_data =
        reinterpret_cast<HarfBuzzFontData*>(font_data);

++++++ bad-font-gc11.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:06.845283017 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:06.849283184 +0200
@@ -21,8 +21,10 @@
     Commit-Queue: Ian Kilpatrick <ikilpatr...@chromium.org>
     Cr-Commit-Position: refs/heads/main@{#1262752}
 
---- a/third_party/blink/renderer/platform/fonts/font_global_context.cc
-+++ b/third_party/blink/renderer/platform/fonts/font_global_context.cc
+Index: 
chromium-126.0.6478.8/third_party/blink/renderer/platform/fonts/font_global_context.cc
+===================================================================
+--- 
chromium-126.0.6478.8.orig/third_party/blink/renderer/platform/fonts/font_global_context.cc
++++ 
chromium-126.0.6478.8/third_party/blink/renderer/platform/fonts/font_global_context.cc
 @@ -8,6 +8,7 @@
  #include "third_party/blink/renderer/platform/fonts/font_cache.h"
  #include "third_party/blink/renderer/platform/fonts/font_unique_name_lookup.h"
@@ -47,8 +49,10 @@
  IdentifiableToken FontGlobalContext::GetOrComputeTypefaceDigest(
      const FontPlatformData& source) {
    SkTypeface* typeface = source.Typeface();
---- a/third_party/blink/renderer/platform/fonts/font_global_context.h
-+++ b/third_party/blink/renderer/platform/fonts/font_global_context.h
+Index: 
chromium-126.0.6478.8/third_party/blink/renderer/platform/fonts/font_global_context.h
+===================================================================
+--- 
chromium-126.0.6478.8.orig/third_party/blink/renderer/platform/fonts/font_global_context.h
++++ 
chromium-126.0.6478.8/third_party/blink/renderer/platform/fonts/font_global_context.h
 @@ -9,7 +9,6 @@
  #include "base/types/pass_key.h"
  #include "third_party/blink/public/common/privacy_budget/identifiable_token.h"
@@ -88,9 +92,11 @@
    std::unique_ptr<FontUniqueNameLookup> font_unique_name_lookup_;
    base::HashingLRUCache<SkTypefaceID, IdentifiableToken> 
typeface_digest_cache_;
    base::HashingLRUCache<SkTypefaceID, IdentifiableToken>
---- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc
-+++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc
-@@ -64,14 +64,20 @@ namespace blink {
+Index: 
chromium-126.0.6478.8/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc
+===================================================================
+--- 
chromium-126.0.6478.8.orig/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc
++++ 
chromium-126.0.6478.8/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc
+@@ -67,14 +67,20 @@ namespace blink {
  
  HarfBuzzFace::HarfBuzzFace(const FontPlatformData* platform_data,
                             uint64_t unique_id)
@@ -115,8 +121,8 @@
 -  visitor->Trace(harfbuzz_font_data_);
  }
  
- static hb_bool_t HarfBuzzGetGlyph(hb_font_t* hb_font,
-@@ -234,17 +240,14 @@ bool HarfBuzzFace::HasSpaceInLigaturesOr
+ bool& GetIgnoreVariationSelectors() {
+@@ -287,17 +293,14 @@ bool HarfBuzzFace::HasSpaceInLigaturesOr
  
    hb::unique_ptr<hb_set_t> glyphs(hb_set_create());
  
@@ -136,7 +142,7 @@
      DCHECK(face);
      harfbuzz_font_data_->space_in_gpos_ =
          hb_ot_layout_has_positioning(face) &&
-@@ -258,11 +261,10 @@ bool HarfBuzzFace::HasSpaceInLigaturesOr
+@@ -311,11 +314,10 @@ bool HarfBuzzFace::HasSpaceInLigaturesOr
    if (features & kLigatures &&
        harfbuzz_font_data_->space_in_gsub_ ==
            HarfBuzzFontData::SpaceGlyphInOpenTypeTables::kUnknown) {
@@ -150,7 +156,7 @@
      DCHECK(face);
      harfbuzz_font_data_->space_in_gsub_ =
          hb_ot_layout_has_substitution(face) &&
-@@ -280,14 +282,14 @@ bool HarfBuzzFace::HasSpaceInLigaturesOr
+@@ -333,14 +335,14 @@ bool HarfBuzzFace::HasSpaceInLigaturesOr
  }
  
  unsigned HarfBuzzFace::UnitsPerEmFromHeadTable() {
@@ -168,7 +174,16 @@
    return glyph;
  }
  
-@@ -444,10 +446,9 @@ static hb::unique_ptr<hb_face_t> CreateF
+@@ -349,7 +351,7 @@ hb_codepoint_t HarfBuzzFace::HarfBuzzGet
+     UChar32 variation_selector) {
+   DCHECK(RuntimeEnabledFeatures::FontVariationSequencesEnabled());
+   hb_codepoint_t glyph = 0;
+-  HarfBuzzGetGlyph(harfbuzz_font_data_->unscaled_font_.get(),
++  HarfBuzzGetGlyph(unscaled_font_,
+                    harfbuzz_font_data_, character, variation_selector, &glyph,
+                    nullptr);
+   return glyph;
+@@ -511,10 +513,9 @@ static hb::unique_ptr<hb_face_t> CreateF
    return face;
  }
  
@@ -182,7 +197,7 @@
    hb::unique_ptr<hb_font_t> ot_font(hb_font_create(face));
    hb_ot_font_set_funcs(ot_font.get());
  
-@@ -466,26 +467,25 @@ HarfBuzzFontData* CreateHarfBuzzFontData
+@@ -533,26 +534,25 @@ HarfBuzzFontData* CreateHarfBuzzFontData
    // Creating a sub font means that non-available functions
    // are found from the parent.
    hb_font_t* const unscaled_font = hb_font_create_sub_font(ot_font.get());
@@ -218,7 +233,7 @@
  }
  
  static_assert(
-@@ -516,18 +516,17 @@ hb_font_t* HarfBuzzFace::GetScaledFont(s
+@@ -583,18 +583,17 @@ hb_font_t* HarfBuzzFace::GetScaledFont(s
                                                       vertical_layout);
  
    int scale = SkiaScalarToHarfBuzzPosition(platform_data_->size());
@@ -241,9 +256,11 @@
  }
  
  hb_font_t* HarfBuzzFace::GetScaledFont() const {
---- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h
-+++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h
-@@ -55,6 +55,7 @@ class HarfBuzzFace final : public Garbag
+Index: 
chromium-126.0.6478.8/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h
+===================================================================
+--- 
chromium-126.0.6478.8.orig/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h
++++ 
chromium-126.0.6478.8/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h
+@@ -58,6 +58,7 @@ class PLATFORM_EXPORT HarfBuzzFace final
    HarfBuzzFace(const FontPlatformData* platform_data, uint64_t);
    HarfBuzzFace(const HarfBuzzFace&) = delete;
    HarfBuzzFace& operator=(const HarfBuzzFace&) = delete;
@@ -251,7 +268,7 @@
  
    void Trace(Visitor*) const;
  
-@@ -90,7 +91,11 @@ class HarfBuzzFace final : public Garbag
+@@ -100,7 +101,11 @@ class PLATFORM_EXPORT HarfBuzzFace final
    void PrepareHarfBuzzFontData();
  
    Member<const FontPlatformData> platform_data_;
@@ -263,9 +280,11 @@
 +  HarfBuzzFontData* harfbuzz_font_data_;
  };
  
- }  // namespace blink
---- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.cc
-+++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.cc
+ inline constexpr hb_codepoint_t kUnmatchedVSGlyphId =
+Index: 
chromium-126.0.6478.8/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.cc
+===================================================================
+--- 
chromium-126.0.6478.8.orig/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.cc
++++ 
chromium-126.0.6478.8/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.cc
 @@ -8,8 +8,38 @@
  
  namespace blink {
@@ -307,8 +326,10 @@
  }
  
  }  // namespace blink
---- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.h
-+++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.h
+Index: 
chromium-126.0.6478.8/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.h
+===================================================================
+--- 
chromium-126.0.6478.8.orig/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.h
++++ 
chromium-126.0.6478.8/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_cache.h
 @@ -6,9 +6,12 @@
  #define 
THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_SHAPING_HARFBUZZ_FONT_CACHE_H_
  
@@ -376,8 +397,10 @@
  };
  
  }  // namespace blink
---- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h
-+++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h
+Index: 
chromium-126.0.6478.8/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h
+===================================================================
+--- 
chromium-126.0.6478.8.orig/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h
++++ 
chromium-126.0.6478.8/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_font_data.h
 @@ -22,18 +22,15 @@ const unsigned kInvalidFallbackMetricsVa
  // The HarfBuzzFontData struct carries user-pointer data for
  // |hb_font_t| callback functions/operations. It contains metrics and OpenType

++++++ bad-font-gc2.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:06.865283852 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:06.869284019 +0200
@@ -1061,7 +1061,7 @@
  
  namespace blink {
  
-@@ -169,8 +168,7 @@ void InlineBoxState::EnsureTextMetrics(c
+@@ -174,8 +173,7 @@ void InlineBoxState::EnsureTextMetrics(c
  
  void InlineBoxState::AccumulateUsedFonts(const ShapeResultView* shape_result) 
{
    const auto baseline_type = style->GetFontBaseline();
@@ -1073,7 +1073,7 @@
      FontHeight fallback_metrics =
 --- a/third_party/blink/renderer/core/layout/inline/ruby_utils.cc
 +++ b/third_party/blink/renderer/core/layout/inline/ruby_utils.cc
-@@ -12,7 +12,6 @@
+@@ -17,7 +17,6 @@
  #include "third_party/blink/renderer/core/layout/layout_object_inlines.h"
  #include "third_party/blink/renderer/core/layout/physical_box_fragment.h"
  #include "third_party/blink/renderer/platform/fonts/font_height.h"
@@ -1081,7 +1081,7 @@
  
  namespace blink {
  
-@@ -33,10 +32,11 @@ std::tuple<LayoutUnit, LayoutUnit> Adjus
+@@ -38,10 +37,11 @@ std::tuple<LayoutUnit, LayoutUnit> Adjus
        primary_font_data->GetFontMetrics().FixedAscent(font_baseline);
    const LayoutUnit primary_descent = line_height - primary_ascent;
  
@@ -1095,7 +1095,7 @@
    shape_view.GetRunFontData(&run_fonts);
    const LayoutUnit kNoDiff = LayoutUnit::Max();
    LayoutUnit over_diff = kNoDiff;
-@@ -60,6 +60,7 @@ std::tuple<LayoutUnit, LayoutUnit> Adjus
+@@ -65,6 +65,7 @@ std::tuple<LayoutUnit, LayoutUnit> Adjus
      over_diff = std::min(over_diff, current_over_diff);
      under_diff = std::min(under_diff, current_under_diff);
    }
@@ -1103,6 +1103,16 @@
    if (over_diff == kNoDiff)
      over_diff = LayoutUnit();
    if (under_diff == kNoDiff)
+@@ -85,8 +86,7 @@ FontHeight ComputeEmHeight(const Logical
+     FontHeight result_height;
+     // We don't use ShapeResultView::FallbackFonts() because we can't know if
+     // the primary font is actually used with FallbackFonts().
+-    HeapVector<ShapeResult::RunFontData> run_fonts;
+-    ClearCollectionScope clear_scope(&run_fonts);
++    Vector<ShapeResult::RunFontData> run_fonts;
+     shape_result_view->GetRunFontData(&run_fonts);
+     for (const auto& run_font : run_fonts) {
+       const SimpleFontData* font_data = run_font.font_data_;
 --- a/third_party/blink/renderer/core/layout/layout_font_accessor_win.cc
 +++ b/third_party/blink/renderer/core/layout/layout_font_accessor_win.cc
 @@ -16,7 +16,6 @@
@@ -1125,7 +1135,7 @@
            
result.font_names.insert(font_data->PlatformData().FontFamilyName());
 --- a/third_party/blink/renderer/modules/font_access/font_metadata.cc
 +++ b/third_party/blink/renderer/modules/font_access/font_metadata.cc
-@@ -77,7 +77,7 @@ void FontMetadata::BlobImpl(ScriptPromis
+@@ -75,7 +75,7 @@ void FontMetadata::BlobImpl(ScriptPromis
    SetUpFontUniqueLookupIfNecessary();
  
    FontDescription description;
@@ -1136,7 +1146,7 @@
    if (!font_data) {
 --- a/third_party/blink/renderer/platform/BUILD.gn
 +++ b/third_party/blink/renderer/platform/BUILD.gn
-@@ -621,6 +621,7 @@ component("platform") {
+@@ -634,6 +634,7 @@ component("platform") {
      "fonts/font_cache_memory_dump_provider.h",
      "fonts/font_custom_platform_data.cc",
      "fonts/font_custom_platform_data.h",
@@ -1964,7 +1974,7 @@
  #endif  // 
THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_FONT_DATA_FOR_RANGE_SET_H_
 --- a/third_party/blink/renderer/platform/fonts/font_fallback_iterator.cc
 +++ b/third_party/blink/renderer/platform/fonts/font_fallback_iterator.cc
-@@ -60,8 +60,8 @@ void FontFallbackIterator::WillUseRange(
+@@ -73,8 +73,8 @@ void FontFallbackIterator::WillUseRange(
    selector->WillUseRange(font_description_, family, range_set);
  }
  
@@ -1972,16 +1982,15 @@
 -    FontDataForRangeSet* candidate,
 +scoped_refptr<FontDataForRangeSet> FontFallbackIterator::UniqueOrNext(
 +    scoped_refptr<FontDataForRangeSet> candidate,
-     const Vector<UChar32>& hint_list) {
+     const HintCharList& hint_list) {
    if (!candidate->HasFontData())
      return Next(hint_list);
-@@ -104,18 +104,18 @@ bool FontFallbackIterator::NeedsHintList
+@@ -117,17 +117,17 @@ bool FontFallbackIterator::NeedsHintList
    return font_data->IsSegmented();
  }
  
--FontDataForRangeSet* FontFallbackIterator::Next(
-+scoped_refptr<FontDataForRangeSet> FontFallbackIterator::Next(
-     const Vector<UChar32>& hint_list) {
+-FontDataForRangeSet* FontFallbackIterator::Next(const HintCharList& 
hint_list) {
++scoped_refptr<FontDataForRangeSet> FontFallbackIterator::Next(const 
HintCharList& hint_list) {
    if (fallback_stage_ == kOutOfLuck)
 -    return MakeGarbageCollected<FontDataForRangeSet>();
 +    return base::AdoptRef(new FontDataForRangeSet());
@@ -1999,7 +2008,7 @@
      if (fallback_priority_font_range->HasFontData())
        return UniqueOrNext(std::move(fallback_priority_font_range), hint_list);
      return Next(hint_list);
-@@ -123,11 +123,11 @@ FontDataForRangeSet* FontFallbackIterato
+@@ -135,11 +135,11 @@ FontDataForRangeSet* FontFallbackIterato
  
    if (fallback_stage_ == kSystemFonts) {
      // We've reached pref + system fallback.
@@ -2014,7 +2023,7 @@
      }
  
      // If we don't have options from the system fallback anymore or had
-@@ -137,16 +137,18 @@ FontDataForRangeSet* FontFallbackIterato
+@@ -149,16 +149,18 @@ FontDataForRangeSet* FontFallbackIterato
      // LastResort font, not just Times or Arial.
      FontCache& font_cache = FontCache::Get();
      fallback_stage_ = kFirstCandidateForNotdefGlyph;
@@ -2039,7 +2048,7 @@
    }
  
    if (fallback_stage_ == kFirstCandidateForNotdefGlyph) {
-@@ -177,13 +179,13 @@ FontDataForRangeSet* FontFallbackIterato
+@@ -189,13 +191,13 @@ FontDataForRangeSet* FontFallbackIterato
      // Skip forward to the next font family for the next call to next().
      current_font_data_index_++;
      if (!font_data->IsLoading()) {
@@ -2055,7 +2064,7 @@
      }
      return Next(hint_list);
    }
-@@ -197,7 +199,7 @@ FontDataForRangeSet* FontFallbackIterato
+@@ -209,7 +211,7 @@ FontDataForRangeSet* FontFallbackIterato
    }
  
    DCHECK_LT(segmented_face_index_, segmented->NumFaces());
@@ -2064,7 +2073,7 @@
        segmented->FaceAt(segmented_face_index_);
    segmented_face_index_++;
  
-@@ -208,7 +210,7 @@ FontDataForRangeSet* FontFallbackIterato
+@@ -220,7 +222,7 @@ FontDataForRangeSet* FontFallbackIterato
      current_font_data_index_++;
    }
  
@@ -2073,7 +2082,7 @@
      const SimpleFontData* current_segmented_face_font_data =
          current_segmented_face->FontData();
      if (const CustomFontData* current_segmented_face_custom_font_data =
-@@ -222,15 +224,17 @@ FontDataForRangeSet* FontFallbackIterato
+@@ -234,15 +236,17 @@ FontDataForRangeSet* FontFallbackIterato
    return Next(hint_list);
  }
  
@@ -2097,16 +2106,16 @@
    }
    return font_data;
  }
-@@ -255,7 +259,7 @@ static inline unsigned ChooseHintIndex(c
+@@ -268,7 +272,7 @@ static inline unsigned ChooseHintIndex(
    return 0;
  }
  
 -const SimpleFontData* FontFallbackIterator::UniqueSystemFontForHintList(
 +scoped_refptr<SimpleFontData> 
FontFallbackIterator::UniqueSystemFontForHintList(
-     const Vector<UChar32>& hint_list) {
+     const HintCharList& hint_list) {
    // When we're asked for a fallback for the same characters again, we give up
    // because the shaper must have previously tried shaping with the font
-@@ -270,13 +274,13 @@ const SimpleFontData* FontFallbackIterat
+@@ -283,13 +287,13 @@ const SimpleFontData* FontFallbackIterat
      return nullptr;
    previously_asked_for_hint_.insert(hint);
  
@@ -2140,33 +2149,33 @@
  
  namespace blink {
  
-@@ -42,7 +43,7 @@ class FontFallbackIterator {
+@@ -49,7 +50,7 @@ class PLATFORM_EXPORT FontFallbackIterat
    // Some system fallback APIs (Windows, Android) require a character, or a
    // portion of the string to be passed.  On Mac and Linux, we get a list of
    // fonts without passing in characters.
--  FontDataForRangeSet* Next(const Vector<UChar32>& hint_list);
-+  scoped_refptr<FontDataForRangeSet> Next(const Vector<UChar32>& hint_list);
+-  FontDataForRangeSet* Next(const HintCharList& hint_list);
++  scoped_refptr<FontDataForRangeSet> Next(const HintCharList& hint_list);
  
-  private:
-   bool RangeSetContributesForHint(const Vector<UChar32>& hint_list,
-@@ -50,11 +51,12 @@ class FontFallbackIterator {
+   void Reset();
+ 
+@@ -59,11 +60,12 @@ class PLATFORM_EXPORT FontFallbackIterat
    bool AlreadyLoadingRangeForHintChar(UChar32 hint_char);
    void WillUseRange(const AtomicString& family, const FontDataForRangeSet&);
  
 -  FontDataForRangeSet* UniqueOrNext(FontDataForRangeSet* candidate,
--                                    const Vector<UChar32>& hint_list);
+-                                    const HintCharList& hint_list);
 +  scoped_refptr<FontDataForRangeSet> UniqueOrNext(
 +      scoped_refptr<FontDataForRangeSet> candidate,
-+      const Vector<UChar32>& hint_list);
++      const HintCharList& hint_list);
  
 -  const SimpleFontData* FallbackPriorityFont(UChar32 hint);
 -  const SimpleFontData* UniqueSystemFontForHintList(
 +  scoped_refptr<SimpleFontData> FallbackPriorityFont(UChar32 hint);
 +  scoped_refptr<SimpleFontData> UniqueSystemFontForHintList(
-       const Vector<UChar32>& hint_list);
+       const HintCharList& hint_list);
  
    const FontDescription& font_description_;
-@@ -82,8 +84,8 @@ class FontFallbackIterator {
+@@ -91,8 +93,8 @@ class PLATFORM_EXPORT FontFallbackIterat
    // candidate to be used for rendering the .notdef glyph, and set HasNext() 
to
    // false.
    HashSet<uint32_t> unique_font_data_for_range_sets_returned_;
@@ -2327,7 +2336,7 @@
    const uint16_t generation_;
 --- a/third_party/blink/renderer/platform/fonts/font_platform_data.cc
 +++ b/third_party/blink/renderer/platform/fonts/font_platform_data.cc
-@@ -158,10 +158,6 @@ FontPlatformData::FontPlatformData(sk_sp
+@@ -159,10 +159,6 @@ FontPlatformData::FontPlatformData(sk_sp
  
  FontPlatformData::~FontPlatformData() = default;
  
@@ -2338,7 +2347,7 @@
  #if BUILDFLAG(IS_MAC)
  CTFontRef FontPlatformData::CtFont() const {
    return SkTypeface_GetCTFontRef(typeface_.get());
-@@ -213,10 +209,11 @@ SkTypeface* FontPlatformData::Typeface()
+@@ -214,10 +210,11 @@ SkTypeface* FontPlatformData::Typeface()
  
  HarfBuzzFace* FontPlatformData::GetHarfBuzzFace() const {
    if (!harfbuzz_face_) {
@@ -2352,7 +2361,7 @@
  }
  
  bool FontPlatformData::HasSpaceInLigaturesOrKerning(
-@@ -246,7 +243,7 @@ unsigned FontPlatformData::GetHash() con
+@@ -247,7 +244,7 @@ unsigned FontPlatformData::GetHash() con
  }
  
  #if !BUILDFLAG(IS_MAC)
@@ -2393,7 +2402,7 @@
  #if BUILDFLAG(IS_MAC)
    // Returns nullptr for FreeType backed SkTypefaces, compare
    // FontCustomPlatformData, which are used for variable fonts on Mac OS
-@@ -129,7 +126,7 @@ class PLATFORM_EXPORT FontPlatformData
+@@ -130,7 +127,7 @@ class PLATFORM_EXPORT FontPlatformData
  
    bool IsHashTableDeletedValue() const { return is_hash_table_deleted_value_; 
}
  #if !BUILDFLAG(IS_MAC)
@@ -2402,7 +2411,7 @@
  #endif
  
  #if !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_MAC)
-@@ -185,7 +182,7 @@ class PLATFORM_EXPORT FontPlatformData
+@@ -186,7 +183,7 @@ class PLATFORM_EXPORT FontPlatformData
    WebFontRenderStyle style_;
  #endif
  
@@ -2756,7 +2765,7 @@
  
 --- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc
 +++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.cc
-@@ -62,8 +62,7 @@
+@@ -65,8 +65,7 @@
  
  namespace blink {
  
@@ -2766,18 +2775,17 @@
      : platform_data_(platform_data), unique_id_(unique_id) {
    HbFontCacheEntry* const cache_entry =
        FontGlobalContext::GetHarfBuzzFontCache().RefOrNew(unique_id_,
-@@ -76,10 +75,6 @@ HarfBuzzFace::~HarfBuzzFace() {
+@@ -79,9 +78,6 @@ HarfBuzzFace::~HarfBuzzFace() {
    FontGlobalContext::GetHarfBuzzFontCache().Remove(unique_id_);
  }
  
 -void HarfBuzzFace::Trace(Visitor* visitor) const {
 -  visitor->Trace(platform_data_);
 -}
--
- static hb_bool_t HarfBuzzGetGlyph(hb_font_t* hb_font,
-                                   void* font_data,
-                                   hb_codepoint_t unicode,
-@@ -426,8 +421,7 @@ static hb_blob_t* HarfBuzzSkiaGetTable(h
+ 
+ bool& GetIgnoreVariationSelectors() {
+   DEFINE_THREAD_SAFE_STATIC_LOCAL(WTF::ThreadSpecific<bool>,
+@@ -486,8 +482,7 @@ static hb_blob_t* HarfBuzzSkiaGetTable(h
  }
  
  // TODO(yosin): We should move |CreateFace()| to "harfbuzz_font_cache.cc".
@@ -2787,7 +2795,7 @@
    hb::unique_ptr<hb_face_t> face;
  
    sk_sp<SkTypeface> typeface = sk_ref_sp(platform_data->Typeface());
-@@ -475,9 +469,8 @@ static scoped_refptr<HbFontCacheEntry> C
+@@ -535,9 +530,8 @@ static scoped_refptr<HbFontCacheEntry> C
    return cache_entry;
  }
  
@@ -2801,25 +2809,27 @@
      hb::unique_ptr<hb_face_t> face = CreateFace(platform_data);
 --- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h
 +++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_face.h
-@@ -34,9 +34,8 @@
+@@ -34,11 +34,10 @@
  #include "third_party/blink/renderer/platform/fonts/glyph.h"
  #include "third_party/blink/renderer/platform/fonts/typesetting_features.h"
  #include "third_party/blink/renderer/platform/fonts/unicode_range_set.h"
 -#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
 -#include "third_party/blink/renderer/platform/heap/member.h"
+ #include "third_party/blink/renderer/platform/platform_export.h"
+ #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
  #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
 +#include "third_party/blink/renderer/platform/wtf/ref_counted.h"
  #include "third_party/blink/renderer/platform/wtf/text/character_names.h"
  
  #include <hb.h>
-@@ -50,15 +49,19 @@ struct HarfBuzzFontData;
+@@ -52,16 +51,18 @@ struct HarfBuzzFontData;
  
  // |HarfBuzzFace| is a thread specific data associated to |FontPlatformData|,
  // hold by |HarfBuzzFontCache|.
--class HarfBuzzFace final : public GarbageCollected<HarfBuzzFace> {
-+class HarfBuzzFace final : public RefCounted<HarfBuzzFace> {
+-class PLATFORM_EXPORT HarfBuzzFace final
+-    : public GarbageCollected<HarfBuzzFace> {
++class PLATFORM_EXPORT HarfBuzzFace final : public RefCounted<HarfBuzzFace> {
 +  USING_FAST_MALLOC(HarfBuzzFace);
-+
   public:
 -  HarfBuzzFace(const FontPlatformData* platform_data, uint64_t);
 +  static scoped_refptr<HarfBuzzFace> Create(FontPlatformData* platform_data,
@@ -2836,8 +2846,8 @@
    enum VerticalLayoutCallbacks { kPrepareForVerticalLayout, kNoVerticalLayout 
};
  
    // In order to support the restricting effect of unicode-range optionally a
-@@ -87,10 +90,11 @@ class HarfBuzzFace final : public Garbag
-   static void Init();
+@@ -97,10 +98,11 @@ class PLATFORM_EXPORT HarfBuzzFace final
+   static void SetIgnoreVariationSelectors(bool value);
  
   private:
 +  HarfBuzzFace(FontPlatformData* platform_data, uint64_t);
@@ -2862,24 +2872,24 @@
   private:
 --- a/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_shaper.cc
 +++ b/third_party/blink/renderer/platform/fonts/shaping/harfbuzz_shaper.cc
-@@ -784,7 +784,7 @@ void HarfBuzzShaper::ShapeSegment(
+@@ -853,7 +853,7 @@ void HarfBuzzShaper::ShapeSegment(
      fallback_chars_hint.ReserveInitialCapacity(range_data->end -
                                                 range_data->start);
    }
 -  FontDataForRangeSet* current_font_data_for_range_set = nullptr;
 +  scoped_refptr<FontDataForRangeSet> current_font_data_for_range_set;
+   FallbackFontStage fallback_stage = kIntermediate;
    while (!range_data->reshape_queue.empty()) {
      ReshapeQueueItem current_queue_item = 
range_data->reshape_queue.TakeFirst();
- 
-@@ -847,7 +847,7 @@ void HarfBuzzShaper::ShapeSegment(
+@@ -934,7 +934,7 @@ void HarfBuzzShaper::ShapeSegment(
      if (needs_caps_handling) {
        case_map_intend = caps_support.NeedsCaseChange(small_caps_behavior);
-       if (caps_support.NeedsSyntheticFont(small_caps_behavior))
+       if (caps_support.NeedsSyntheticFont(small_caps_behavior)) {
 -        adjusted_font = font_data->SmallCapsFontData(font_description);
 +        adjusted_font = font_data->SmallCapsFontData(font_description).get();
+       }
      }
  
-     CaseMappingHarfBuzzBufferFiller(
 --- a/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc
 +++ b/third_party/blink/renderer/platform/fonts/shaping/shape_result.cc
 @@ -79,10 +79,9 @@ ASSERT_SIZE(ShapeResult::RunInfo, SameSi
@@ -2905,7 +2915,7 @@
                           unsigned start_index,
                           unsigned num_characters,
                           TextDirection direction)
-@@ -436,7 +435,6 @@ void ShapeResult::Trace(Visitor* visitor
+@@ -432,7 +431,6 @@ void ShapeResult::Trace(Visitor* visitor
    visitor->Trace(deprecated_ink_bounds_);
    visitor->Trace(runs_);
    visitor->Trace(character_position_);
@@ -2913,7 +2923,7 @@
  }
  
  size_t ShapeResult::ByteSize() const {
-@@ -736,10 +734,10 @@ bool ShapeResult::HasFallbackFonts(const
+@@ -732,10 +730,10 @@ bool ShapeResult::HasFallbackFonts(const
    return false;
  }
  
@@ -2926,7 +2936,7 @@
    }
  }
  
-@@ -754,7 +752,7 @@ float ShapeResult::ForEachGlyphImpl(floa
+@@ -750,7 +748,7 @@ float ShapeResult::ForEachGlyphImpl(floa
    for (const auto& glyph_data : run.glyph_data_) {
      glyph_callback(context, run.start_index_ + glyph_data.character_index,
                     glyph_data.glyph, *glyph_offsets, total_advance,
@@ -2935,7 +2945,7 @@
      total_advance += glyph_data.advance;
      ++glyph_offsets;
    }
-@@ -789,7 +787,7 @@ float ShapeResult::ForEachGlyphImpl(floa
+@@ -785,7 +783,7 @@ float ShapeResult::ForEachGlyphImpl(floa
    auto total_advance = initial_advance;
    unsigned run_start = run.start_index_ + index_offset;
    bool is_horizontal = HB_DIRECTION_IS_HORIZONTAL(run.direction_);
@@ -2944,7 +2954,7 @@
  
    if (run.IsLtr()) {  // Left-to-right
      for (const auto& glyph_data : run.glyph_data_) {
-@@ -1679,7 +1677,7 @@ unsigned ShapeResult::CopyRangeInternal(
+@@ -1738,7 +1736,7 @@ unsigned ShapeResult::CopyRangeInternal(
  ShapeResult* ShapeResult::SubRange(unsigned start_offset,
                                     unsigned end_offset) const {
    ShapeResult* sub_range =
@@ -2955,7 +2965,7 @@
  }
 --- a/third_party/blink/renderer/platform/fonts/shaping/shape_result.h
 +++ b/third_party/blink/renderer/platform/fonts/shaping/shape_result.h
-@@ -139,7 +139,7 @@ typedef void (*GraphemeClusterCallback)(
+@@ -136,7 +136,7 @@ typedef void (*GraphemeClusterCallback)(
  
  class PLATFORM_EXPORT ShapeResult : public GarbageCollected<ShapeResult> {
   public:
@@ -2964,7 +2974,7 @@
                unsigned start_index,
                unsigned num_characters,
                TextDirection);
-@@ -152,7 +152,7 @@ class PLATFORM_EXPORT ShapeResult : publ
+@@ -149,7 +149,7 @@ class PLATFORM_EXPORT ShapeResult : publ
    void Trace(Visitor*) const;
  
    static ShapeResult* CreateEmpty(const ShapeResult& other) {
@@ -2973,7 +2983,7 @@
                                               other.Direction());
    }
    static const ShapeResult* CreateForTabulationCharacters(
-@@ -184,7 +184,7 @@ class PLATFORM_EXPORT ShapeResult : publ
+@@ -181,7 +181,7 @@ class PLATFORM_EXPORT ShapeResult : publ
    LayoutUnit SnappedWidth() const { return LayoutUnit::FromFloatCeil(width_); 
}
    unsigned NumCharacters() const { return num_characters_; }
    unsigned NumGlyphs() const { return num_glyphs_; }
@@ -2982,7 +2992,7 @@
    bool HasFallbackFonts(const SimpleFontData* primary_font) const;
  
    // TODO(eae): Remove start_x and return value once ShapeResultBuffer has 
been
-@@ -350,12 +350,10 @@ class PLATFORM_EXPORT ShapeResult : publ
+@@ -352,12 +352,10 @@ class PLATFORM_EXPORT ShapeResult : publ
  
    // Computes the list of fonts along with the number of glyphs for each font.
    struct RunFontData {
@@ -2997,16 +3007,16 @@
  
    // Iterates over, and calls the specified callback function, for all the
    // glyphs. Also tracks (and returns) a seeded total advance.
-@@ -515,7 +513,7 @@ class PLATFORM_EXPORT ShapeResult : publ
+@@ -517,7 +515,7 @@ class PLATFORM_EXPORT ShapeResult : publ
    // index to x-position and O(log n) time, using binary search, from
    // x-position to character index.
    mutable HeapVector<ShapeResultCharacterData> character_position_;
 -  Member<const SimpleFontData> primary_font_;
 +  scoped_refptr<const SimpleFontData> primary_font_;
  
-   unsigned start_index_;
-   unsigned num_characters_;
-@@ -570,6 +568,5 @@ PLATFORM_EXPORT std::ostream& operator<<
+   unsigned start_index_ = 0;
+   unsigned num_characters_ = 0;
+@@ -572,6 +570,5 @@ PLATFORM_EXPORT std::ostream& operator<<
  }  // namespace blink
  
  
WTF_ALLOW_CLEAR_UNUSED_SLOTS_WITH_MEM_FUNCTIONS(blink::ShapeResult::ShapeRange)
@@ -3359,7 +3369,7 @@
  }
  
  // Internal leadings can be distributed to ascent and descent.
-@@ -346,7 +352,7 @@ static std::pair<int16_t, int16_t> TypoA
+@@ -347,7 +353,7 @@ static std::pair<int16_t, int16_t> TypoA
  
  void SimpleFontData::ComputeNormalizedTypoAscentAndDescent() const {
    // Compute em height metrics from OS/2 sTypoAscender and sTypoDescender.
@@ -3368,7 +3378,7 @@
    auto [typo_ascender, typo_descender] = TypoAscenderAndDescender(typeface);
    if (typo_ascender > 0 &&
        TrySetNormalizedTypoAscentAndDescent(typo_ascender, typo_descender)) {
-@@ -433,7 +439,7 @@ const std::optional<float>& SimpleFontDa
+@@ -434,7 +440,7 @@ const std::optional<float>& SimpleFontDa
      }
  
      // Compute vertical advance if the orientation is `kVerticalUpright`.
@@ -3377,7 +3387,7 @@
      const OpenTypeVerticalData& vertical_data = hb_face->VerticalData();
      ideographic_inline_size_ = vertical_data.AdvanceHeight(cjk_water_glyph);
    });
-@@ -461,9 +467,8 @@ const HanKerning::FontData& SimpleFontDa
+@@ -462,9 +468,8 @@ const HanKerning::FontData& SimpleFontDa
  }
  
  gfx::RectF SimpleFontData::PlatformBoundsForGlyph(Glyph glyph) const {
@@ -3388,7 +3398,7 @@
  
    static_assert(sizeof(glyph) == 2, "Glyph id should not be truncated.");
  
-@@ -476,18 +481,16 @@ void SimpleFontData::BoundsForGlyphs(con
+@@ -477,18 +482,16 @@ void SimpleFontData::BoundsForGlyphs(con
                                       Vector<SkRect, 256>* bounds) const {
    DCHECK_EQ(glyphs.size(), bounds->size());
  

++++++ blink-platform-INSIDE_BLINK-Wodr.patch ++++++
--- src/third_party/blink/public/platform/web_crypto_algorithm.h.orig   
2024-07-24 12:50:54.735798500 +0200
+++ src/third_party/blink/public/platform/web_crypto_algorithm.h        
2024-08-04 16:11:13.938867200 +0200
@@ -74,18 +74,14 @@ enum WebCryptoAlgorithmId {
   kWebCryptoAlgorithmIdPbkdf2,
   kWebCryptoAlgorithmIdEd25519,
   kWebCryptoAlgorithmIdX25519,
-#if INSIDE_BLINK
   kWebCryptoAlgorithmIdLast = kWebCryptoAlgorithmIdX25519,
-#endif
 };
 
 enum WebCryptoNamedCurve {
   kWebCryptoNamedCurveP256,
   kWebCryptoNamedCurveP384,
   kWebCryptoNamedCurveP521,
-#if INSIDE_BLINK
   kWebCryptoNamedCurveLast = kWebCryptoNamedCurveP521,
-#endif
 };
 
 enum WebCryptoAlgorithmParamsType {
@@ -153,11 +149,9 @@ class WebCryptoAlgorithmPrivate;
 // methods on it (other than destruction, assignment, or IsNull()).
 class BLINK_PLATFORM_EXPORT WebCryptoAlgorithm {
  public:
-#if INSIDE_BLINK
   WebCryptoAlgorithm() = default;
   WebCryptoAlgorithm(WebCryptoAlgorithmId,
                      std::unique_ptr<WebCryptoAlgorithmParams>);
-#endif
 
   static WebCryptoAlgorithm CreateNull();
   static WebCryptoAlgorithm AdoptParamsAndCreate(WebCryptoAlgorithmId,
--- src/third_party/blink/public/platform/web_crypto_key.h.orig 2024-07-24 
12:50:54.735798500 +0200
+++ src/third_party/blink/public/platform/web_crypto_key.h      2024-08-04 
16:11:34.638017900 +0200
@@ -51,9 +51,7 @@ enum WebCryptoKeyUsage {
   kWebCryptoKeyUsageWrapKey = 1 << 5,
   kWebCryptoKeyUsageUnwrapKey = 1 << 6,
   kWebCryptoKeyUsageDeriveBits = 1 << 7,
-#if INSIDE_BLINK
   kEndOfWebCryptoKeyUsage,
-#endif
 };
 
 // A bitfield of WebCryptoKeyUsage

++++++ brotli-remove-shared-dictionary.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:06.901285354 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:06.905285521 +0200
@@ -2,9 +2,9 @@
 and disable dependent code. This removes `brs` from Accept-Encoding list.
 This feature does not build with brotli < 1.1
 
---- src/net/filter/brotli_source_stream.cc.orig        2023-10-12 
17:25:42.094020700 +0200
-+++ src/net/filter/brotli_source_stream.cc     2023-10-12 22:43:53.790708700 
+0200
-@@ -13,7 +11,6 @@
+--- src/net/filter/brotli_source_stream.cc.orig        2024-07-24 
12:50:53.542464800 +0200
++++ src/net/filter/brotli_source_stream.cc     2024-08-04 21:07:52.674333900 
+0200
+@@ -12,7 +12,6 @@
  #include "base/metrics/histogram_macros.h"
  #include "net/base/io_buffer.h"
  #include "third_party/brotli/include/brotli/decode.h"
@@ -12,7 +12,7 @@
  
  namespace net {
  
-@@ -25,21 +22,11 @@ const char kBrotli[] = "BROTLI";
+@@ -24,21 +23,11 @@ const char kBrotli[] = "BROTLI";
  // Brotli format specification: 
http://www.ietf.org/id/draft-alakuijala-brotli.
  class BrotliSourceStream : public FilterSourceStream {
   public:
@@ -36,17 +36,17 @@
    }
  
    BrotliSourceStream(const BrotliSourceStream&) = delete;
-@@ -176,9 +163,6 @@ class BrotliSourceStream : public Filter
+@@ -174,9 +163,6 @@ class BrotliSourceStream : public Filter
      free(&array[-1]);
    }
  
 -  const scoped_refptr<IOBuffer> dictionary_;
 -  const size_t dictionary_size_;
 -
-   raw_ptr<BrotliDecoderState, DanglingUntriaged> brotli_state_;
+   raw_ptr<BrotliDecoderState> brotli_state_;
  
    DecodingStatus decoding_status_ = DecodingStatus::DECODING_IN_PROGRESS;
-@@ -200,8 +184,7 @@ std::unique_ptr<FilterSourceStream> Crea
+@@ -198,8 +184,7 @@ std::unique_ptr<FilterSourceStream> Crea
      std::unique_ptr<SourceStream> previous,
      scoped_refptr<IOBuffer> dictionary,
      size_t dictionary_size) {

++++++ chromium-102-compiler.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:06.929286523 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:06.933286689 +0200
@@ -25,7 +25,7 @@
 index d40843b..b92f03b 100644
 --- a/build/config/compiler/BUILD.gn
 +++ b/build/config/compiler/BUILD.gn
-@@ -322,9 +322,7 @@ config("compiler") {
+@@ -305,9 +305,7 @@ config("compiler") {
  
    configs += [
      # See the definitions below.
@@ -35,7 +35,7 @@
      ":compiler_codegen",
      ":compiler_deterministic",
    ]
-@@ -353,7 +351,12 @@ config("compiler") {
+@@ -337,7 +335,12 @@ config("compiler") {
    if (!is_win) {
      # Common POSIX compiler flags setup.
      # --------------------------------
@@ -49,7 +49,7 @@
  
      # Stack protection. ShadowCallStack and Stack protector address the same
      # problems. Therefore, we only enable one or the other. Clang advertises 
SCS as
-@@ -494,10 +497,6 @@ config("compiler") {
+@@ -478,10 +481,6 @@ config("compiler") {
    # Linux/Android/Fuchsia common flags setup.
    # ---------------------------------
    if (is_linux || is_chromeos || is_android || is_fuchsia) {
@@ -60,7 +60,7 @@
  
      if (!is_clang) {
        # Use pipes for communicating between sub-processes. Faster.
-@@ -590,55 +589,6 @@ config("compiler") {
+@@ -545,55 +544,6 @@ config("compiler") {
      ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
    }
  
@@ -87,9 +87,9 @@
 -      }
 -    }
 -
--    # TODO(crbug.com/1488374): This causes binary size growth and potentially
+-    # TODO(crbug.com/40283598): This causes binary size growth and potentially
 -    # other problems.
--    # TODO(crbug.com/1491036): This isn't supported by Cronet's mainline llvm 
version.
+-    # TODO(crbug.com/40284925): This isn't supported by Cronet's mainline 
llvm version.
 -    if (default_toolchain != "//build/toolchain/cros:target" &&
 -        !llvm_android_mainline) {
 -      cflags += [
@@ -105,7 +105,7 @@
 -      }
 -    }
 -
--    # TODO(crbug.com/1235145): Investigate why/if this should be needed.
+-    # TODO(crbug.com/40192287): Investigate why/if this should be needed.
 -    if (is_win) {
 -      cflags += [ "/clang:-ffp-contract=off" ]
 -    } else {
@@ -116,7 +116,7 @@
    # C11/C++11 compiler flags setup.
    # ---------------------------
    if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) ||
-@@ -1070,11 +1020,6 @@ config("compiler") {
+@@ -1063,11 +1013,6 @@ config("compiler") {
      defines += [ "_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_NONE" ]
    }
  
@@ -128,7 +128,7 @@
  }
  
  # The BUILDCONFIG file sets this config on targets by default, which means 
when
-@@ -1140,7 +1085,8 @@ config("thinlto_optimize_max") {
+@@ -1133,7 +1078,8 @@ config("thinlto_optimize_max") {
  # without using everything that "compiler" brings in.  Options that
  # tweak code generation for a particular CPU do not belong here!
  # See "compiler_codegen", below.
@@ -138,7 +138,7 @@
    cflags = []
    ldflags = []
    defines = []
-@@ -1523,46 +1469,6 @@ config("compiler_deterministic") {
+@@ -1516,46 +1462,6 @@ config("compiler_deterministic") {
      }
    }
  
@@ -184,8 +184,8 @@
 -
    # Tells the compiler not to use absolute paths when passing the default
    # paths to the tools it invokes. We don't want this because we don't
-   # really need it and it can mess up the goma cache entries.
-@@ -1739,7 +1645,8 @@ config("treat_warnings_as_errors") {
+   # really need it and it can mess up the RBE cache entries.
+@@ -1732,7 +1638,8 @@ config("treat_warnings_as_errors") {
  # Collects all warning flags that are used by default.  This is used as a
  # subconfig of both chromium_code and no_chromium_code.  This way these
  # flags are guaranteed to appear on the compile command line after -Wall.
@@ -195,7 +195,7 @@
    cflags = []
    cflags_c = []
    cflags_cc = []
-@@ -1983,11 +1890,7 @@ config("chromium_code") {
+@@ -1982,11 +1889,7 @@ config("chromium_code") {
        defines = [ "_HAS_NODISCARD" ]
      }
    } else {
@@ -208,7 +208,7 @@
  
      # In Chromium code, we define __STDC_foo_MACROS in order to get the
      # C99 macros on Mac and Linux.
-@@ -1996,24 +1899,6 @@ config("chromium_code") {
+@@ -1995,24 +1898,6 @@ config("chromium_code") {
        "__STDC_FORMAT_MACROS",
      ]
  
@@ -233,15 +233,15 @@
      if (is_apple) {
        cflags_objc = [ "-Wimplicit-retain-self" ]
        cflags_objcc = [ "-Wimplicit-retain-self" ]
-@@ -2159,7 +2044,6 @@ config("no_rtti") {
+@@ -2158,7 +2043,6 @@ config("no_rtti") {
  config("export_dynamic") {
-   # TODO(crbug.com/1052397): Revisit after target_os flip is completed.
+   # TODO(crbug.com/40118868): Revisit after target_os flip is completed.
    if (is_linux || is_chromeos_lacros || export_libcxxabi_from_executables) {
 -    ldflags = [ "-rdynamic" ]
    }
  }
  
-@@ -2247,7 +2131,8 @@ config("wexit_time_destructors") {
+@@ -2246,7 +2130,8 @@ config("wexit_time_destructors") {
  # gcc 4.9 and earlier had no way of suppressing this warning without
  # suppressing the rest of them.  Here we centralize the identification of
  # the gcc 4.9 toolchains.
@@ -251,7 +251,7 @@
    cflags = []
    if (is_clang) {
      cflags += [ "-Wno-incompatible-pointer-types" ]
-@@ -2362,7 +2247,8 @@ if (is_win) {
+@@ -2364,7 +2249,8 @@ if (is_win) {
    common_optimize_on_cflags += [ "-fno-math-errno" ]
  }
  
@@ -261,17 +261,17 @@
    if (!is_win) {
      if (enable_frame_pointers) {
        cflags = [ "-fno-omit-frame-pointer" ]
-@@ -2389,7 +2275,8 @@ config("default_stack_frames") {
- }
- 
- # Default "optimization on" config.
+@@ -2405,7 +2291,8 @@ config("default_stack_frames") {
+ # [0]: https://pinpoint-dot-chromeperf.appspot.com/job/147634a8be0000
+ # [1]: https://pinpoint-dot-chromeperf.appspot.com/job/132bc772be0000
+ # [2]: https://crrev.com/c/5447532
 -config("optimize") {
 +config("optimize") { }
 +config("xoptimize") {
    if (is_win) {
      cflags = [ "/O2" ] + common_optimize_on_cflags
  
-@@ -2430,7 +2317,8 @@ config("optimize") {
+@@ -2446,7 +2333,8 @@ config("optimize") {
  }
  
  # Turn off optimizations.
@@ -281,19 +281,19 @@
    if (is_win) {
      cflags = [
        "/Od",  # Disable optimization.
-@@ -2470,7 +2358,8 @@ config("no_optimize") {
- # Turns up the optimization level. On Windows, this implies whole program
- # optimization and link-time code generation which is very expensive and 
should
- # be used sparingly.
+@@ -2486,7 +2374,8 @@ config("no_optimize") {
+ # Turns up the optimization level. Used to explicitly enable -O2 instead of
+ # -Os for select targets on platforms that use optimize_for_size. No-op
+ # elsewhere.
 -config("optimize_max") {
 +config("optimize_max") { }
 +config("xoptimize_max") {
    if (is_nacl && is_nacl_irt) {
      # The NaCl IRT is a special case and always wants its own config.
      # Various components do:
-@@ -2503,7 +2392,8 @@ config("optimize_max") {
+@@ -2519,7 +2408,8 @@ config("optimize_max") {
  #
- # TODO(crbug.com/621335) - rework how all of these configs are related
+ # TODO(crbug.com/41259697) - rework how all of these configs are related
  # so that we don't need this disclaimer.
 -config("optimize_speed") {
 +config("optimize_speed") { }
@@ -301,7 +301,7 @@
    if (is_nacl && is_nacl_irt) {
      # The NaCl IRT is a special case and always wants its own config.
      # Various components do:
-@@ -2529,7 +2419,8 @@ config("optimize_speed") {
+@@ -2548,7 +2438,8 @@ config("optimize_speed") {
    }
  }
  
@@ -311,7 +311,7 @@
    cflags = [ "-O1" ] + common_optimize_on_cflags
    rustflags = [ "-Copt-level=1" ]
    ldflags = common_optimize_on_ldflags
-@@ -2662,7 +2553,8 @@ config("win_pdbaltpath") {
+@@ -2681,7 +2572,8 @@ config("win_pdbaltpath") {
  }
  
  # Full symbols.
@@ -321,7 +321,7 @@
    rustflags = []
    if (is_win) {
      if (is_clang) {
-@@ -2811,7 +2703,8 @@ config("symbols") {
+@@ -2831,7 +2723,8 @@ config("symbols") {
  # Minimal symbols.
  # This config guarantees to hold symbol for stack trace which are shown to 
user
  # when crash happens in unittests running on buildbot.
@@ -331,7 +331,7 @@
    rustflags = []
    if (is_win) {
      # Functions, files, and line tables only.
-@@ -2896,7 +2789,8 @@ config("minimal_symbols") {
+@@ -2916,7 +2809,8 @@ config("minimal_symbols") {
  # This configuration contains function names only. That is, the compiler is
  # told to not generate debug information and the linker then just puts 
function
  # names in the final debug information.

++++++ chromium-124-shims.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:06.949287357 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:06.953287524 +0200
@@ -125,17 +125,6 @@
  shim_headers("log_shim") {
    root_path = "."
    prefix = "absl/log/"
-diff '--color=auto' -urp src/build/linux/unbundle.orig/libwebp.gn 
src/build/linux/unbundle/libwebp.gn
---- src/build/linux/unbundle.orig/libwebp.gn
-+++ src/build/linux/unbundle/libwebp.gn
-@@ -33,3 +33,7 @@ source_set("libwebp_webp") {
- group("libwebp") {
-   deps = [ ":libwebp_webp" ]
- }
-+
-+source_set("libwebp_sharpyuv") {
-+  # Unused in Chromium. Empty to enable building with old webp which does not 
have sharpyuv
-+}
 diff '--color=auto' -urp src/build/linux/unbundle.orig/re2.gn 
src/build/linux/unbundle/re2.gn
 --- src/build/linux/unbundle.orig/re2.gn
 +++ src/build/linux/unbundle/re2.gn
@@ -188,7 +177,7 @@
  
 --- /dev/null
 +++ src/build/linux/unbundle/zstd.gn
-@@ -0,0 +1,24 @@
+@@ -0,0 +1,28 @@
 +import("//build/config/linux/pkg_config.gni")
 +import("//build/shim_headers.gni")
 +
@@ -204,6 +193,10 @@
 +  ]
 +}
 +
++source_set("compress") {
++  deps = [ ":zstd_shim" ]
++  public_configs = [ ":system_zstd" ]
++}
 +source_set("decompress") {
 +  deps = [ ":zstd_shim" ]
 +  public_configs = [ ":system_zstd" ]

++++++ chromium-93-ffmpeg-4.4.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:06.965288025 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:06.969288192 +0200
@@ -54,7 +54,7 @@
          packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size);
  
 @@ -461,7 +465,11 @@ void FFmpegDemuxerStream::EnqueuePacket(
-                                        packet->size - data_offset);
+                                                    side_data + 
side_data_size);
      }
  
 +#if LIBAVUTIL_VERSION_MAJOR < 57

++++++ color_provider-incomplete-ColorProviderInternal.patch ++++++
>From ef8e6beaebcfc3e143b249ba76c177fbabd3b4ea Mon Sep 17 00:00:00 2001
From: Yichen <yich...@chromium.org>
Date: Thu, 23 May 2024 23:44:41 +0000
Subject: [PATCH] ui: fix gcc/libstdc++ build break

Bug: 340815321
Change-Id: Ibf443f9f16dfff164e1f4d49a58582fb7a6aca1d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5565320
Reviewed-by: Xiyuan Xia <xiy...@chromium.org>
Commit-Queue: Yichen Zhou <yich...@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1305426}
---
 ui/color/color_provider.cc | 3 ++-
 ui/color/color_provider.h  | 3 +--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/ui/color/color_provider.cc b/ui/color/color_provider.cc
index 1597715de1f63c..3e0ffed9f4d4c4 100644
--- a/ui/color/color_provider.cc
+++ b/ui/color/color_provider.cc
@@ -118,7 +118,8 @@ class ColorProvider::ColorProviderInternal {
 
////////////////////////////////////////////////////////////////////////////////
 // ColorProvider:
 
-ColorProvider::ColorProvider() = default;
+ColorProvider::ColorProvider()
+    : internal_(std::make_unique<ColorProviderInternal>()) {}
 
 ColorProvider::ColorProvider(ColorProvider&&) = default;
 
diff --git a/ui/color/color_provider.h b/ui/color/color_provider.h
index 50fff33ae6ab6d..6ac6ed6938cf24 100644
--- a/ui/color/color_provider.h
+++ b/ui/color/color_provider.h
@@ -65,8 +65,7 @@ class COMPONENT_EXPORT(COLOR) ColorProvider {
   // bind to it.
   class ColorProviderInternal;
 
-  std::unique_ptr<ColorProviderInternal> internal_ =
-      std::make_unique<ColorProviderInternal>();
+  std::unique_ptr<ColorProviderInternal> internal_;
 };
 
 }  // namespace ui

++++++ create_tarball.sh ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:07.029290696 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:07.033290863 +0200
@@ -166,7 +166,6 @@
 keeplibs=(
     base/third_party/cityhash #Derived code, not vendored dependency.
     base/third_party/cityhash_v103 #Derived code, not vendored dep
-    base/third_party/dynamic_annotations #Derived code, not vendored 
dependency.
     base/third_party/icu #Derived code, not vendored dependency.
     base/third_party/superfasthash #Not a shared library.
     base/third_party/symbolize #Derived code, not vendored dependency.
@@ -336,6 +335,8 @@
 ln -srv v8/tools -t third_party/electron_node/deps/v8/
 find third_party/electron_node/deps/zlib -type f ! -name "*.gn" -a ! -name 
"*.gni" -a ! -name "*.gyp" -a ! -name "*.gypi" -delete
 
+# vendored system headers
+rm -rf build/linux/debian*sysroot
 
 #Some more chonkers
 rm -rf components/test/data #21MB

++++++ disable-catapult.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:07.049291530 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:07.053291697 +0200
@@ -166,9 +166,9 @@
        "//components/vector_icons",
        "//components/webauthn/json",
 -      "//content/browser/tracing:resources",
+       "//media/mojo/mojom:speech_recognition",
+       "//ui/base",
      ]
-   }
- 
 --- a/chrome/chrome_paks.gni
 +++ b/chrome/chrome_paks.gni
 @@ -190,8 +190,6 @@ template("chrome_extra_paks") {
@@ -181,7 +181,7 @@
        deps += [
          "//chrome/browser/resources:component_extension_resources",
 @@ -199,7 +197,6 @@ template("chrome_extra_paks") {
-         "//chrome/browser/resources/lens/overlay:resources",
+         "//chrome/browser/resources/lens/overlay/search_bubble:resources",
          "//chrome/browser/resources/search_engine_choice:resources",
          "//content/browser/devtools:devtools_resources",
 -        "//content/browser/tracing:resources",

++++++ disable-webspeech.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:07.081292866 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:07.081292866 +0200
@@ -26,7 +26,7 @@
 index 19b45dc1268..67dcd7752d0 100644
 --- a/content/browser/BUILD.gn
 +++ b/content/browser/BUILD.gn
-@@ -1909,11 +1909,6 @@ source_set("browser") {
+@@ -1909,13 +1909,6 @@ source_set("browser") {
      "sms/user_consent_handler.h",
      "sms/webotp_service.cc",
      "sms/webotp_service.h",
@@ -34,6 +34,8 @@
 -    "speech/speech_recognition_dispatcher_host.h",
 -    "speech/speech_recognition_manager_impl.cc",
 -    "speech/speech_recognition_manager_impl.h",
+-    "speech/speech_recognition_session.cc",
+-    "speech/speech_recognition_session.h",
 -    "speech/speech_recognizer.h",
      "speech/speech_synthesis_impl.cc",
      "speech/speech_synthesis_impl.h",
@@ -58,14 +60,17 @@
        "tracing/tracing_ui.cc",
        "tracing/tracing_ui.h",
  
-@@ -2995,7 +2975,6 @@ source_set("browser") {
-     ]
- 
-     deps += [
+@@ -2995,10 +2975,8 @@ source_set("browser") {
+       "//components/soda:constants",
+       "//components/soda:soda",
+       "//components/soda:utils",
 -      "//components/speech:speech",
        "//components/vector_icons",
        "//components/webauthn/json",
+-      "//media/mojo/mojom:speech_recognition",
+       "//ui/base",
      ]
+   }
 @@ -3108,6 +3083,37 @@ source_set("browser") {
      deps += [ "//ui/compositor" ]
    }

++++++ electron-30.5.1.tar.zst -> electron-31.6.0.tar.zst ++++++
/work/SRC/openSUSE:Factory/nodejs-electron/electron-30.5.1.tar.zst 
/work/SRC/openSUSE:Factory/.nodejs-electron.new.29891/electron-31.6.0.tar.zst 
differ: char 7, line 1

++++++ ffmpeg-new-channel-layout.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:07.165296371 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:07.165296371 +0200
@@ -176,33 +176,6 @@
    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

++++++ fix-build-without-safebrowsing.patch ++++++
--- src/chrome/browser/ui/exclusive_access/fullscreen_controller.cc.orig        
2024-07-24 13:00:13.565994500 +0200
+++ src/chrome/browser/ui/exclusive_access/fullscreen_controller.cc     
2024-08-03 23:06:56.231653700 +0200
@@ -19,7 +19,6 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/history/history_service_factory.h"
 #include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/safe_browsing/safe_browsing_service.h"
 #if 0
 #include "chrome/browser/ui/blocked_content/popunder_preventer.h"
 #endif
@@ -116,20 +115,6 @@ void RecordWebsiteStateAtApiRequest(hist
 void CheckUrlForAllowlistAndRecordMetric(
     const GURL& url,
     history::HistoryLastVisitResult result) {
-  if (!g_browser_process->safe_browsing_service() ||
-      !g_browser_process->safe_browsing_service()->database_manager()) {
-    RecordWebsiteStateAtApiRequest(result, std::nullopt);
-    return;
-  }
-  g_browser_process->safe_browsing_service()
-      ->database_manager()
-      ->CheckUrlForHighConfidenceAllowlist(
-          url, "RT" /*realtime*/,
-          base::BindOnce(
-              [](history::HistoryLastVisitResult result, bool on_allowlist) {
-                RecordWebsiteStateAtApiRequest(result, on_allowlist);
-              },
-              result));
 }
 
 }  // namespace

++++++ fix-build-without-supervised-users.patch ++++++
--- src/chrome/test/BUILD.gn.orig       2024-09-12 13:54:44.642624995 +0200
+++ src/chrome/test/BUILD.gn    2024-09-12 15:25:29.792388388 +0200
@@ -56,7 +56,6 @@ import("//v8/gni/v8.gni")
 
 assert(!is_ios, "Chromium/iOS shouldn't use anything in //chrome")
 assert(!is_fuchsia, "Fuchsia shouldn't use anything in //chrome")
-assert(enable_supervised_users)
 
 if (is_android) {
   import("//build/config/android/rules.gni")
--- src/chrome/common/BUILD.gn.orig     2024-09-12 13:46:51.785984196 +0200
+++ src/chrome/common/BUILD.gn  2024-09-12 15:27:58.398867501 +0200
@@ -22,7 +22,6 @@ import("//testing/libfuzzer/fuzzer_test.
 import("//third_party/widevine/cdm/widevine.gni")
 import("//tools/grit/grit_rule.gni")
 
-assert(enable_supervised_users)
 assert(!is_fuchsia, "Fuchsia shouldn't use anything in //chrome")
 
 fuzzer_test("ini_parser_fuzzer") {
--- src/chrome/renderer/BUILD.gn.orig   2024-09-12 13:46:51.849317526 +0200
+++ src/chrome/renderer/BUILD.gn        2024-09-12 15:29:17.915843739 +0200
@@ -18,7 +18,6 @@ import("//testing/libfuzzer/fuzzer_test.
 import("//third_party/widevine/cdm/widevine.gni")
 import("//tools/grit/grit_rule.gni")
 
-assert(enable_supervised_users)
 
 grit("resources") {
   source = "resources/renderer_resources.grd"
--- src/chrome/browser/BUILD.gn.orig    2024-09-12 13:54:44.639291662 +0200
+++ src/chrome/browser/BUILD.gn 2024-09-12 15:30:42.759505691 +0200
@@ -45,7 +45,6 @@ import("//third_party/widevine/cdm/widev
 import("//tools/grit/grit_rule.gni")
 import("//ui/base/ui_features.gni")
 
-assert(enable_supervised_users)
 
 # //build/config/android/rules.gni imports //tools/grit/grit_rule.gni, which
 # produces a conflict for the "grit" template so we have to only include one.
--- src/chrome/browser/ui/BUILD.gn.orig 2024-09-12 13:46:51.212650894 +0200
+++ src/chrome/browser/ui/BUILD.gn      2024-09-12 15:32:36.489733448 +0200
@@ -32,7 +32,6 @@ import("//third_party/protobuf/proto_lib
 import("//ui/base/ui_features.gni")
 import("//ui/views/features.gni")
 
-assert(enable_supervised_users)
 assert(!is_fuchsia, "Fuchsia shouldn't use anything in //chrome")
 
 generate_histograms_variants_allowlist("webui_name_variants") {
--- src/chrome/browser/extensions/BUILD.gn.orig 2024-09-12 13:46:50.369317607 
+0200
+++ src/chrome/browser/extensions/BUILD.gn      2024-09-12 15:33:39.046452725 
+0200
@@ -20,7 +20,6 @@ import("//testing/libfuzzer/fuzzer_test.
 import("//third_party/protobuf/proto_library.gni")
 
 assert(enable_extensions)
-assert(enable_supervised_users)
 assert(!is_fuchsia, "Fuchsia shouldn't use anything in //chrome")
 
 static_library("extensions") {

++++++ harfbuzz-replace-chromium-scoped-type.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:07.217298541 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:07.221298708 +0200
@@ -110,13 +110,14 @@
 index 7c7057b..d43668f1 100644
 --- a/third_party/blink/renderer/platform/fonts/opentype/font_format_check.cc
 +++ b/third_party/blink/renderer/platform/fonts/opentype/font_format_check.cc
-@@ -7,10 +7,10 @@
- // Include HarfBuzz to have a cross-platform way to retrieve table tags 
without
+@@ -7,11 +7,11 @@
  // having to rely on the platform being able to instantiate this font format.
  #include <hb.h>
+ 
 +#include <hb-cplusplus.hh>
  
- #include "base/sys_byteorder.h"
+ #include "base/containers/span.h"
+ #include "base/numerics/byte_conversions.h"
  #include "third_party/blink/renderer/platform/wtf/vector.h"
 -#include "third_party/harfbuzz-ng/utils/hb_scoped.h"
  #include "third_party/skia/include/core/SkTypeface.h"
@@ -254,9 +255,9 @@
  // clang-format on
  
 @@ -52,7 +53,6 @@
- #include "third_party/blink/renderer/platform/wtf/hash_map.h"
- #include "third_party/blink/renderer/platform/wtf/math_extras.h"
  #include "third_party/blink/renderer/platform/wtf/text/character_names.h"
+ #include "third_party/blink/renderer/platform/wtf/thread_specific.h"
+ #include "third_party/blink/renderer/platform/wtf/wtf.h"
 -#include "third_party/harfbuzz-ng/utils/hb_scoped.h"
  #include "third_party/skia/include/core/SkPaint.h"
  #include "third_party/skia/include/core/SkPath.h"

++++++ http_auth_ntlm_mechanism-could-not-convert-to-base-span.patch ++++++
>From d8985805ba3c963d9aabbd2c77d15dbd8d7290c5 Mon Sep 17 00:00:00 2001
From: Jose Dapena Paz <jdap...@igalia.com>
Date: Wed, 15 May 2024 18:46:03 +0000
Subject: [PATCH] GCC: explicitly use base::span constructor in
 HttpAuthNtlmMechanism
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

base::span requires explicit construction for several of the
constructors. Theoretically the constructor used here should not
require that but GCC complains.

Bug: 40565911
Change-Id: I452f31ee0862c3e986e15207f89baa043b016da8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5540995
Reviewed-by: Maks Orlovich <morlov...@chromium.org>
Commit-Queue: José Dapena Paz <jdap...@igalia.com>
Cr-Commit-Position: refs/heads/main@{#1301466}
---
 net/http/http_auth_ntlm_mechanism.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/http/http_auth_ntlm_mechanism.cc 
b/net/http/http_auth_ntlm_mechanism.cc
index ddab00151cda9c..0b103303df56f7 100644
--- a/net/http/http_auth_ntlm_mechanism.cc
+++ b/net/http/http_auth_ntlm_mechanism.cc
@@ -149,7 +149,7 @@ int HttpAuthNtlmMechanism::GenerateAuthToken(
     return ERR_UNEXPECTED;
 
   uint8_t client_challenge[8];
-  g_generate_random_proc(client_challenge);
+  g_generate_random_proc(base::span<uint8_t>(client_challenge));
 
   auto next_token = ntlm_client_.GenerateAuthenticateMessage(
       domain, user, credentials->password(), hostname, channel_bindings, spn,

++++++ native_css_paint_definition-expected-unqualified-id.patch ++++++
>From bf5355ac24399cd37a7d210b1ce9586d70829ed5 Mon Sep 17 00:00:00 2001
From: Jose Dapena Paz <jdap...@igalia.com>
Date: Fri, 17 May 2024 09:39:14 +0000
Subject: [PATCH] GCC: do not add template parameter in constructor of
 BaseKeyframe
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

GCC rejects adding redundantly the template parameter in the
constructor.

Bug: 40565911
Change-Id: Ie827f1dba5488893cb76e0e52e9c26866dff701c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5539114
Reviewed-by: Jean-Philippe Gravel <jpgra...@chromium.org>
Commit-Queue: José Dapena Paz <jdap...@igalia.com>
Cr-Commit-Position: refs/heads/main@{#1302481}
---
 .../csspaint/nativepaint/native_css_paint_definition.h        | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git 
a/third_party/blink/renderer/modules/csspaint/nativepaint/native_css_paint_definition.h
 
b/third_party/blink/renderer/modules/csspaint/nativepaint/native_css_paint_definition.h
index 34d37ea466c632..24a676543895ac 100644
--- 
a/third_party/blink/renderer/modules/csspaint/nativepaint/native_css_paint_definition.h
+++ 
b/third_party/blink/renderer/modules/csspaint/nativepaint/native_css_paint_definition.h
@@ -51,9 +51,7 @@ class MODULES_EXPORT NativeCssPaintDefinition : public 
NativePaintDefinition {
 
   template <typename T>
   struct TypedKeyframe : public BaseKeyframe {
-    TypedKeyframe<T>(double offset,
-                     std::unique_ptr<gfx::TimingFunction>& tf,
-                     T v)
+    TypedKeyframe(double offset, std::unique_ptr<gfx::TimingFunction>& tf, T v)
         : BaseKeyframe(offset, tf), value(v) {}
     T value;
   };

++++++ page_popup_controller-missing-optional.patch ++++++
>From f3fce92b27296068b4c304321b53bd1c7c4beb61 Mon Sep 17 00:00:00 2001
From: "lauren n. liberda" <lauren@selfisekai.rocks>
Date: Tue, 28 May 2024 17:54:26 +0000
Subject: [PATCH] iwyu: missing <optional> in page_popup_controller.h

Bug: 41455655
Change-Id: I6483b9ec9d3c4acc08fb2bce8cac409c32a06dc4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5569043
Reviewed-by: Lei Zhang <thes...@chromium.org>
Commit-Queue: Lei Zhang <thes...@chromium.org>
Reviewed-by: Khushal Sagar <khushalsa...@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1306871}
---
 AUTHORS                                                      | 1 +
 third_party/blink/renderer/core/page/page_popup_controller.h | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/AUTHORS b/AUTHORS
index eba1dc976d8fa0..715e108aca1c3d 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -818,6 +818,7 @@ Lalit Chandivade <lalit.chandiv...@einfochips.com>
 Lam Lu <la...@amazon.com>
 Laszlo Gombos <l.gom...@samsung.com>
 Laszlo Radanyi <bek...@gmail.com>
+lauren n. liberda <lauren@selfisekai.rocks>
 Lauren Yeun Kim <lauren.yeun....@gmail.com>
 Lauri Oherd <lauri.oh...@gmail.com>
 Lavar Askew <open.hyper...@gmail.com>
diff --git a/third_party/blink/renderer/core/page/page_popup_controller.h 
b/third_party/blink/renderer/core/page/page_popup_controller.h
index 5da38d0b9ab26f..c4e8e865fa96d3 100644
--- a/third_party/blink/renderer/core/page/page_popup_controller.h
+++ b/third_party/blink/renderer/core/page/page_popup_controller.h
@@ -31,6 +31,8 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_PAGE_PAGE_POPUP_CONTROLLER_H_
 #define THIRD_PARTY_BLINK_RENDERER_CORE_PAGE_PAGE_POPUP_CONTROLLER_H_
 
+#include <optional>
+
 #include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
 #include 
"third_party/blink/renderer/platform/heap/collection_support/heap_vector.h"
 #include "third_party/blink/renderer/platform/heap/garbage_collected.h"

++++++ partition_alloc-no-lto.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:07.309302381 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:07.313302548 +0200
@@ -1,73 +1,70 @@
 Compile files which declare functions in inline assembly without LTO due to 
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57703
 
---- src/base/allocator/partition_allocator/src/partition_alloc/BUILD.gn.old    
2022-10-01 13:53:03.367797474 +0200
-+++ src/base/allocator/partition_allocator/src/partition_alloc/BUILD.gn        
2022-10-05 14:23:53.999860356 +0200
-@@ -90,6 +90,33 @@ if (!is_debug || partition_alloc_optimiz
-   _add_configs += [ "//build/config/compiler:no_optimize" ]
+--- src/base/allocator/partition_allocator/src/partition_alloc/BUILD.gn.orig   
2024-07-24 12:50:43.409128966 +0200
++++ src/base/allocator/partition_allocator/src/partition_alloc/BUILD.gn        
2024-07-26 13:37:20.891041131 +0200
+@@ -107,6 +107,31 @@ source_set("build_config") {
+   ]
  }
  
-+if (use_starscan) {
-+ static_library("partition_alloc_asm") {
-+  if (gcc_lto) {
-+    configs -= [ "//build/config/compiler:gcc_lto" ]
-+  }
-+  if (current_cpu == "x64") {
-+    assert(pcscan_stack_supported)
-+    sources = [ "starscan/stack/asm/x64/push_registers_asm.cc" ]
-+  } else if (current_cpu == "x86") {
-+    assert(pcscan_stack_supported)
-+    sources = [ "starscan/stack/asm/x86/push_registers_asm.cc" ]
-+  } else if (current_cpu == "arm") {
-+    assert(pcscan_stack_supported)
-+    sources = [ "starscan/stack/asm/arm/push_registers_asm.cc" ]
-+  } else if (current_cpu == "arm64") {
-+    assert(pcscan_stack_supported)
-+    sources = [ "starscan/stack/asm/arm64/push_registers_asm.cc" ]
-+  } else if (current_cpu == "riscv64") {
-+    assert(pcscan_stack_supported)
-+    sources = [ "starscan/stack/asm/riscv64/push_registers_asm.cc" ]
-+  } else {
-+    assert(!pcscan_stack_supported)
-+    # To support a trampoline for another arch, please refer to 
v8/src/heap/base.
-+  }
-+ }
++static_library("allocator_core_asm") {
++    if (gcc_lto) {
++      configs -= [ "//build/config/compiler:gcc_lto" ]
++    }
++    if (current_cpu == "x64") {
++      assert(stack_scan_supported)
++      sources = [ "stack/asm/x64/push_registers_asm.cc" ]
++    } else if (current_cpu == "x86") {
++      assert(stack_scan_supported)
++      sources = [ "stack/asm/x86/push_registers_asm.cc" ]
++    } else if (current_cpu == "arm") {
++      assert(stack_scan_supported)
++      sources = [ "stack/asm/arm/push_registers_asm.cc" ]
++    } else if (current_cpu == "arm64") {
++      assert(stack_scan_supported)
++      sources = [ "stack/asm/arm64/push_registers_asm.cc" ]
++    } else if (current_cpu == "riscv64") {
++      assert(stack_scan_supported)
++      sources = [ "stack/asm/riscv64/push_registers_asm.cc" ]
++    } else {
++      # To support a trampoline for another arch, please refer to 
v8/src/heap/base.
++      assert(!stack_scan_supported)
++    }
 +}
 +
  component("raw_ptr") {
    # `gn check` is unhappy with most `#includes` when PA isn't
    # actually built.
-@@ -497,25 +524,10 @@ if (is_clang_or_gcc) {
+@@ -522,24 +547,9 @@ if (is_clang_or_gcc) {
        # The Android NDK supports PR_MTE_* macros as of NDK r23.
        defines += [ "HAS_PR_MTE_MACROS" ]
      }
+-    if (current_cpu == "x64") {
+-      assert(stack_scan_supported)
+-      sources += [ "stack/asm/x64/push_registers_asm.cc" ]
+-    } else if (current_cpu == "x86") {
+-      assert(stack_scan_supported)
+-      sources += [ "stack/asm/x86/push_registers_asm.cc" ]
+-    } else if (current_cpu == "arm") {
+-      assert(stack_scan_supported)
+-      sources += [ "stack/asm/arm/push_registers_asm.cc" ]
+-    } else if (current_cpu == "arm64") {
+-      assert(stack_scan_supported)
+-      sources += [ "stack/asm/arm64/push_registers_asm.cc" ]
+-    } else if (current_cpu == "riscv64") {
+-      assert(stack_scan_supported)
+-      sources += [ "stack/asm/riscv64/push_registers_asm.cc" ]
+-    } else {
+-      # To support a trampoline for another arch, please refer to 
v8/src/heap/base.
+-      assert(!stack_scan_supported)
 +    deps = [ ":allocator_base" ]
-     if (use_starscan) {
--      if (current_cpu == "x64") {
--        assert(pcscan_stack_supported)
--        sources += [ "starscan/stack/asm/x64/push_registers_asm.cc" ]
--      } else if (current_cpu == "x86") {
--        assert(pcscan_stack_supported)
--        sources += [ "starscan/stack/asm/x86/push_registers_asm.cc" ]
--      } else if (current_cpu == "arm") {
--        assert(pcscan_stack_supported)
--        sources += [ "starscan/stack/asm/arm/push_registers_asm.cc" ]
--      } else if (current_cpu == "arm64") {
--        assert(pcscan_stack_supported)
--        sources += [ "starscan/stack/asm/arm64/push_registers_asm.cc" ]
--      } else if (current_cpu == "riscv64") {
--        assert(pcscan_stack_supported)
--        sources += [ "starscan/stack/asm/riscv64/push_registers_asm.cc" ]
--      } else {
--        # To support a trampoline for another arch, please refer to 
v8/src/heap/base.
--        assert(!pcscan_stack_supported)
-+      if (current_cpu == "x64" || current_cpu == "x86" || current_cpu == 
"arm" || current_cpu == "arm64" || current_cpu == "riscv64") {
-+        deps += [ ":partition_alloc_asm" ]
-       }
++    if (current_cpu == "x64" || current_cpu == "x86" || current_cpu == "arm" 
|| current_cpu == "arm64" || current_cpu == "riscv64") {
++        deps += [ ":allocator_core_asm" ]
      }
-     if (use_freelist_pool_offsets) {
-@@ -536,7 +548,6 @@ if (is_clang_or_gcc) {
+ 
+     # TODO(crbug.com/40274683): once we evaluate pool offset freelists,
+@@ -563,7 +573,6 @@ if (is_clang_or_gcc) {
        ":memory_tagging",
-       "//build/config/compiler:wexit_time_destructors",
+       ":wexit_time_destructors",
      ]
 -    deps = [ ":allocator_base" ]
      public_configs = []

++++++ quiche-QuicIntervalDeque-no-match-for-operator-mm.patch ++++++
>From d3bc5ffc929b0895ae9e16774069a04ae6fe3c58 Mon Sep 17 00:00:00 2001
From: bnc <b...@google.com>
Date: Mon, 13 May 2024 12:28:35 -0700
Subject: [PATCH] Add some QuicIntervalDeque::Iterator methods.

GCC requires operator-=() and operator--() to be defined for std::advance for
random access iterators.

Also, `QUICHE_DCHECK_LE(0u, index_)` is always true as `index_` is unsigned,
causing a warning that is promoted to an error in some environments. This CL
verifies that the addition does not result in underflow before the it is
performed, not after.

PiperOrigin-RevId: 633296228
---
 quiche/quic/core/quic_interval_deque.h       | 19 +++++++++--
 quiche/quic/core/quic_interval_deque_test.cc | 33 ++++++++++++++++++++
 2 files changed, 50 insertions(+), 2 deletions(-)

diff --git a/quiche/quic/core/quic_interval_deque.h 
b/quiche/quic/core/quic_interval_deque.h
index db7b2b0ac..1c6cd71a5 100644
--- a/net/third_party/quiche/src/quiche/quic/core/quic_interval_deque.h
+++ b/net/third_party/quiche/src/quiche/quic/core/quic_interval_deque.h
@@ -158,7 +158,7 @@ class QUICHE_NO_EXPORT QuicIntervalDeque {
     Iterator(std::size_t index, QuicIntervalDeque* deque)
         : index_(index), deque_(deque) {}
     // Only the ++ operator attempts to update the cached index. Other 
operators
-    // are used by |lower_bound| to binary search and are thus private.
+    // are used by |lower_bound| to binary search.
     Iterator& operator++() {
       // Don't increment when we are at the end.
       const std::size_t container_size = deque_->container_.size();
@@ -186,6 +186,19 @@ class QUICHE_NO_EXPORT QuicIntervalDeque {
       ++(*this);
       return copy;
     }
+    Iterator& operator--() {
+      if (index_ == 0) {
+        QUIC_BUG(quic_bug_10862_4) << "Iterator out of bounds.";
+        return *this;
+      }
+      index_--;
+      return *this;
+    }
+    Iterator operator--(int) {
+      Iterator copy = *this;
+      --(*this);
+      return copy;
+    }
     reference operator*() { return deque_->container_[index_]; }
     reference operator*() const { return deque_->container_[index_]; }
     pointer operator->() { return &deque_->container_[index_]; }
@@ -194,11 +207,13 @@ class QUICHE_NO_EXPORT QuicIntervalDeque {
     }
     bool operator!=(const Iterator& rhs) const { return !(*this == rhs); }
     Iterator& operator+=(difference_type amount) {
+      // `amount` might be negative, check for underflow.
+      QUICHE_DCHECK_GE(static_cast<difference_type>(index_), -amount);
       index_ += amount;
-      QUICHE_DCHECK_LE(0u, index_);
       QUICHE_DCHECK_LT(index_, deque_->Size());
       return *this;
     }
+    Iterator& operator-=(difference_type amount) { return operator+=(-amount); 
}
     difference_type operator-(const Iterator& rhs) const {
       return static_cast<difference_type>(index_) -
              static_cast<difference_type>(rhs.index_);

++++++ quiche-absl-HexStringToBytes.patch ++++++
>From a484a561d3d36beca0d4dc9f5d4a2c083be03e1f Mon Sep 17 00:00:00 2001
From: awillia <awil...@google.com>
Date: Tue, 19 Mar 2024 17:22:54 -0700
Subject: [PATCH] Replace deprecated version of absl::HexStringToBytes in test
 programs and remaining quic/ tests

Replaces the deprecated version of absl::HexStringToBytes that returns 
std::string with the version that returns bool and populates a passed in 
std::string. This CL isn't expected to change the behavior of any code used in 
production.

This allows the Chrome build of QUICHE to build without the 
`-Wno-deprecated-declarations` clang flag.

PiperOrigin-RevId: 617342915
---
 .../web_transport_fingerprint_proof_verifier.cc | 12 ++++++++++--
 quiche/quic/masque/masque_client_bin.cc         |  7 ++++++-
 quiche/quic/masque/masque_server_backend.cc     |  5 ++++-
 quiche/quic/tools/crypto_message_printer_bin.cc |  6 +++++-
 quiche/quic/tools/quic_packet_printer_bin.cc    |  6 +++++-
 quiche/quic/tools/quic_toy_client.cc            | 17 +++++++++--------
 6 files changed, 39 insertions(+), 14 deletions(-)

diff --git 
a/quiche/quic/core/crypto/web_transport_fingerprint_proof_verifier.cc 
b/quiche/quic/core/crypto/web_transport_fingerprint_proof_verifier.cc
index 167e4efc4..fc8cffd40 100644
--- 
a/net/third_party/quiche/src/quiche/quic/core/crypto/web_transport_fingerprint_proof_verifier.cc
+++ 
b/net/third_party/quiche/src/quiche/quic/core/crypto/web_transport_fingerprint_proof_verifier.cc
@@ -6,6 +6,8 @@
 
 #include <cstdint>
 #include <memory>
+#include <string>
+#include <utility>
 
 #include "absl/strings/escaping.h"
 #include "absl/strings/match.h"
@@ -18,6 +20,7 @@
 #include "quiche/quic/core/quic_types.h"
 #include "quiche/quic/core/quic_utils.h"
 #include "quiche/quic/platform/api/quic_bug_tracker.h"
+#include "quiche/quic/platform/api/quic_logging.h"
 #include "quiche/common/quiche_text_utils.h"
 
 namespace quic {
@@ -83,8 +86,13 @@ bool WebTransportFingerprintProofVerifier::AddFingerprint(
 
   std::string normalized =
       absl::StrReplaceAll(fingerprint.fingerprint, {{":", ""}});
-  hashes_.push_back(WebTransportHash{fingerprint.algorithm,
-                                     absl::HexStringToBytes(normalized)});
+  std::string normalized_bytes;
+  if (!absl::HexStringToBytes(normalized, &normalized_bytes)) {
+    QUIC_DLOG(WARNING) << "Fingerprint hexadecimal is invalid";
+    return false;
+  }
+  hashes_.push_back(
+      WebTransportHash{fingerprint.algorithm, std::move(normalized_bytes)});
   return true;
 }
 
diff --git a/quiche/quic/masque/masque_client_bin.cc 
b/quiche/quic/masque/masque_client_bin.cc
index eefd002dc..06e6ed2b7 100644
--- a/net/third_party/quiche/src/quiche/quic/masque/masque_client_bin.cc
+++ b/net/third_party/quiche/src/quiche/quic/masque/masque_client_bin.cc
@@ -281,7 +281,12 @@ int RunMasqueClient(int argc, char* argv[]) {
         QUIC_LOG(ERROR) << "Signature authentication key ID cannot be empty";
         return 1;
       }
-      private_key_seed = absl::HexStringToBytes(signature_auth_param_split[1]);
+      if (!absl::HexStringToBytes(signature_auth_param_split[1],
+                                  &private_key_seed)) {
+        QUIC_LOG(ERROR) << "Signature authentication key hex value is invalid";
+        return 1;
+      }
+
       if (private_key_seed.size() != kEd25519Rfc8032PrivateKeySize) {
         QUIC_LOG(ERROR)
             << "Invalid signature authentication private key length "
diff --git a/quiche/quic/masque/masque_server_backend.cc 
b/quiche/quic/masque/masque_server_backend.cc
index f4ff2e0ed..66ca13c96 100644
--- a/net/third_party/quiche/src/quiche/quic/masque/masque_server_backend.cc
+++ b/net/third_party/quiche/src/quiche/quic/masque/masque_server_backend.cc
@@ -193,7 +193,10 @@ void 
MasqueServerBackend::SetSignatureAuth(absl::string_view signature_auth) {
     quiche::QuicheTextUtils::RemoveLeadingAndTrailingWhitespace(&kv[1]);
     SignatureAuthCredential credential;
     credential.key_id = std::string(kv[0]);
-    std::string public_key = absl::HexStringToBytes(kv[1]);
+    std::string public_key;
+    if (!absl::HexStringToBytes(kv[1], &public_key)) {
+      QUIC_LOG(FATAL) << "Invalid signature auth public key hex " << kv[1];
+    }
     if (public_key.size() != sizeof(credential.public_key)) {
       QUIC_LOG(FATAL) << "Invalid signature auth public key length "
                       << public_key.size();
diff --git a/quiche/quic/tools/crypto_message_printer_bin.cc 
b/quiche/quic/tools/crypto_message_printer_bin.cc
index eb7393d54..82850d94a 100644
--- a/net/third_party/quiche/src/quiche/quic/tools/crypto_message_printer_bin.cc
+++ b/net/third_party/quiche/src/quiche/quic/tools/crypto_message_printer_bin.cc
@@ -48,7 +48,11 @@ int main(int argc, char* argv[]) {
   quic::CryptoFramer framer;
   framer.set_visitor(&printer);
   framer.set_process_truncated_messages(true);
-  std::string input = absl::HexStringToBytes(messages[0]);
+  std::string input;
+  if (!absl::HexStringToBytes(messages[0], &input)) {
+    cerr << "Invalid hex string provided" << endl;
+    return 1;
+  }
   if (!framer.ProcessInput(input)) {
     return 1;
   }
diff --git a/quiche/quic/tools/quic_packet_printer_bin.cc 
b/quiche/quic/tools/quic_packet_printer_bin.cc
index 5ed77010a..314cc20ea 100644
--- a/net/third_party/quiche/src/quiche/quic/tools/quic_packet_printer_bin.cc
+++ b/net/third_party/quiche/src/quiche/quic/tools/quic_packet_printer_bin.cc
@@ -270,7 +270,11 @@ int main(int argc, char* argv[]) {
     quiche::QuichePrintCommandLineFlagHelp(usage);
     return 1;
   }
-  std::string hex = absl::HexStringToBytes(args[1]);
+  std::string hex;
+  if (!absl::HexStringToBytes(args[1], &hex)) {
+    std::cerr << "Invalid hex string" << std::endl;
+    return 1;
+  }
   quic::ParsedQuicVersionVector versions = quic::AllSupportedVersions();
   // Fake a time since we're not actually generating acks.
   quic::QuicTime start(quic::QuicTime::Zero());

++++++ real_time_reporting_bindings-forward-declaration.patch ++++++
>From fb3678b0d1084b49c5ca795200131a7c0ac01ffe Mon Sep 17 00:00:00 2001
From: Jose Dapena Paz <jdap...@igalia.com>
Date: Wed, 15 May 2024 13:59:56 +0000
Subject: [PATCH] libstdc++: real time reporting bindings vector requires full
 declaration
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

libstdc++ implementation of std::vector requires the full declaration
of the type and not a forward declaration. This breaks compilation of
RealTimeReportingBindings, as it has an std::vector of
RealTimeReportingContributionPtr.

Bug: 41455655
Change-Id: I9ee70fbb58af36f4cfc43a5d4b1e99799f4c760c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5541055
Reviewed-by: Russ Hamilton <behamil...@google.com>
Commit-Queue: José Dapena Paz <jdap...@igalia.com>
Cr-Commit-Position: refs/heads/main@{#1301266}
---
 content/services/auction_worklet/real_time_reporting_bindings.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/content/services/auction_worklet/real_time_reporting_bindings.h 
b/content/services/auction_worklet/real_time_reporting_bindings.h
index c755d5cab041ec..da4d05e96f788c 100644
--- a/content/services/auction_worklet/real_time_reporting_bindings.h
+++ b/content/services/auction_worklet/real_time_reporting_bindings.h
@@ -12,7 +12,7 @@
 #include "content/common/content_export.h"
 #include "content/services/auction_worklet/auction_v8_helper.h"
 #include "content/services/auction_worklet/context_recycler.h"
-#include 
"content/services/auction_worklet/public/mojom/real_time_reporting.mojom-forward.h"
+#include 
"content/services/auction_worklet/public/mojom/real_time_reporting.mojom.h"
 #include "v8/include/v8-forward.h"
 
 namespace auction_worklet {

++++++ remove-dawn.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:07.377305218 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:07.381305385 +0200
@@ -46,8 +46,8 @@
  
  #if BUILDFLAG(GOOGLE_CHROME_BRANDING) && BUILDFLAG(IS_CHROMEOS)
    services.Add(RunShapeDetectionService);
---- src/content/utility/utility_main.cc.old    2024-04-02 09:53:16.050958400 
+0000
-+++ src/content/utility/utility_main.cc        2024-04-07 17:41:04.823696600 
+0000
+--- src/content/utility/utility_main.cc.orig   2024-07-24 12:50:51.439131000 
+0200
++++ src/content/utility/utility_main.cc        2024-08-03 00:11:18.255682100 
+0200
 @@ -32,7 +32,6 @@
  #include "sandbox/policy/mojom/sandbox.mojom.h"
  #include "sandbox/policy/sandbox.h"
@@ -56,18 +56,17 @@
  #include "services/screen_ai/buildflags/buildflags.h"
  #include "services/tracing/public/cpp/trace_startup.h"
  #include "third_party/icu/source/common/unicode/unistr.h"
-@@ -202,10 +201,6 @@ int UtilityMain(MainFunctionParams param
-           ? base::MessagePumpType::UI
-           : base::MessagePumpType::DEFAULT;
+@@ -246,9 +245,6 @@ int UtilityMain(MainFunctionParams param
+     }
+   }
  
--  if (parameters.command_line->GetSwitchValueASCII(switches::kUtilitySubType) 
==
--      on_device_model::mojom::OnDeviceModelService::Name_) {
+-  if (utility_sub_type == 
on_device_model::mojom::OnDeviceModelService::Name_) {
 -    CHECK(on_device_model::OnDeviceModelService::PreSandboxInit());
 -  }
  
- #if BUILDFLAG(IS_MAC)
-   auto sandbox_type =
-@@ -283,11 +278,6 @@ int UtilityMain(MainFunctionParams param
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+   // Thread type delegate of the process should be registered before first
+@@ -283,11 +279,6 @@ int UtilityMain(MainFunctionParams param
      case sandbox::mojom::Sandbox::kAudio:
        pre_sandbox_hook = base::BindOnce(&audio::AudioPreSandboxHook);
        break;
@@ -79,4 +78,14 @@
      case sandbox::mojom::Sandbox::kSpeechRecognition:
        pre_sandbox_hook =
            base::BindOnce(&speech::SpeechRecognitionPreSandboxHook);
+@@ -437,9 +428,6 @@ int UtilityMain(MainFunctionParams param
+ 
+   run_loop.Run();
+ 
+-  if (utility_sub_type == 
on_device_model::mojom::OnDeviceModelService::Name_) {
+-    CHECK(on_device_model::OnDeviceModelService::Shutdown());
+-  }
+ 
+ #if defined(LEAK_SANITIZER)
+   // Invoke LeakSanitizer before shutting down the utility thread, to avoid
 

++++++ remove-password-manager-and-policy.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:07.397306053 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:07.401306220 +0200
@@ -22,9 +22,9 @@
 --- a/components/embedder_support/user_agent_utils.cc
 +++ b/components/embedder_support/user_agent_utils.cc
 @@ -446,12 +446,14 @@ blink::UserAgentMetadata GetUserAgentMetadata(const 
PrefService* pref_service,
-   blink::UserAgentMetadata metadata;
- 
    bool enable_updated_grease_by_policy = true;
+   // TODO(crbug.com/40838057): Remove this after M126 which deprecates the
+   // policy.
 +#if 0
    if (pref_service) {
      if (pref_service->HasPrefPath(
@@ -78,13 +78,14 @@
    if (build_with_tflite_lib) {
 --- src/components/embedder_support/BUILD.gn.old
 +++ src/components/embedder_support/BUILD.gn
-@@ -24,11 +24,8 @@ static_library("browser_util") {
+@@ -24,12 +24,8 @@ static_library("browser_util") {
    deps = [
      ":embedder_support",
      "//build:branding_buildflags",
 -    "//components/background_sync",
 -    "//components/content_settings/browser",
      "//components/content_settings/core/browser",
+-    "//components/content_settings/core/browser:cookie_settings",
      "//components/permissions",
 -    "//components/policy/core/common",
      "//components/prefs",
@@ -92,15 +93,17 @@
      "//content/public/browser",
 --- src/components/permissions/BUILD.gn.old
 +++ src/components/permissions/BUILD.gn
-@@ -109,8 +109,6 @@ source_set("permissions") {
+@@ -109,10 +109,7 @@ source_set("permissions") {
    deps = [
      "//base",
      "//build:chromeos_buildflags",
 -    "//components/back_forward_cache",
 -    "//components/content_settings/browser",
      "//components/content_settings/core/browser",
+-    "//components/content_settings/core/browser:cookie_settings",
      "//components/favicon/core:core",
      "//components/keyed_service/content",
+     "//components/permissions/prediction_service",
 --- src/components/proxy_config/BUILD.gn.old
 +++ src/components/proxy_config/BUILD.gn
 @@ -23,9 +23,6 @@ component("proxy_config") {
@@ -122,26 +125,35 @@
      sources += [
        "proxy_policy_handler.cc",
        "proxy_policy_handler.h",
---- src/components/content_settings/core/browser/BUILD.gn.old
+--- src/components/content_settings/core/browser/BUILD.gn.orig
 +++ src/components/content_settings/core/browser/BUILD.gn
-@@ -70,7 +70,7 @@ static_library("browser") {
+@@ -69,7 +69,7 @@ static_library("browser") {
      "//url",
    ]
  
 -  if (!is_ios) {
 +  if (false) {
      sources += [
-       "cookie_settings_policy_handler.cc",
-       "cookie_settings_policy_handler.h",
-@@ -82,8 +82,6 @@ static_library("browser") {
+       "insecure_private_network_policy_handler.cc",
+       "insecure_private_network_policy_handler.h",
+@@ -78,8 +78,6 @@ static_library("browser") {
+ 
    if (use_blink) {
      deps += [
-       "//components/permissions:permissions_common",
 -      "//components/policy:generated",
 -      "//components/policy/core/browser",
        "//components/privacy_sandbox:privacy_sandbox_prefs",
      ]
    }
+@@ -93,7 +91,7 @@ source_set("cookie_settings") {
+     "cookie_settings.h",
+   ]
+ 
+-  if (!is_ios) {
++  if (false) {
+     sources += [
+       "cookie_settings_policy_handler.cc",
+       "cookie_settings_policy_handler.h",
 --- src/electron/chromium_src/BUILD.gn.orig
 +++ src/electron/chromium_src/BUILD.gn
 @@ -466,7 +466,7 @@ source_set("chrome_spellchecker") {
@@ -179,7 +191,7 @@
      "//device/vr/buildflags",
    ]
  }
---- src/components/search_engines/BUILD.gn.old
+--- src/components/search_engines/BUILD.gn.orig
 +++ src/components/search_engines/BUILD.gn
 @@ -15,45 +15,23 @@ static_library("search_engines") {
      "choice_made_location.h",
@@ -196,8 +208,8 @@
      "keyword_web_data_service.h",
 -    "search_engine_choice/search_engine_choice_service.cc",
 -    "search_engine_choice/search_engine_choice_service.h",
--    "search_engine_choice_utils.cc",
--    "search_engine_choice_utils.h",
+-    "search_engine_choice/search_engine_choice_utils.cc",
+-    "search_engine_choice/search_engine_choice_utils.h",
      "search_engines_pref_names.h",
 -    "search_host_to_urls_map.cc",
 -    "search_host_to_urls_map.h",
@@ -227,7 +239,7 @@
    ]
  
    public_deps = [
-@@ -69,20 +47,14 @@ static_library("search_engines") {
+@@ -68,21 +46,14 @@ static_library("search_engines") {
      "//components/sync",
      "//components/webdata/common",
      "//third_party/metrics_proto",
@@ -240,6 +252,7 @@
      "//components/database_utils",
 -    "//components/infobars/core",
 -    "//components/lens:lens",
+-    "//components/lens/proto/server:proto",
      "//components/omnibox/common",
 -    "//components/policy:generated",
 -    "//components/policy/core/browser",
@@ -248,7 +261,7 @@
      "//components/signin/public/base",
      "//components/strings",
      "//components/url_formatter",
-@@ -94,7 +66,6 @@ static_library("search_engines") {
+@@ -94,7 +65,6 @@ static_library("search_engines") {
      "//services/network/public/mojom",
      "//sql",
      "//third_party/metrics_proto",
@@ -256,7 +269,16 @@
      "//ui/base",
      "//ui/gfx",
      "//ui/gfx/geometry",
-@@ -120,7 +91,7 @@ static_library("search_engines") {
+@@ -112,7 +82,7 @@ static_library("search_engines") {
+     deps += [ "//components/search_engines/android:jni_headers" ]
+   }
+ 
+-  if (!is_android) {
++  if (false) {
+     sources += [ "search_engine_choice/generated_marketing_snippets.cc" ]
+     deps += [
+       ":generate_search_engine_icons",
+@@ -121,7 +91,7 @@ static_library("search_engines") {
      ]
    }
  
@@ -278,4 +300,51 @@
    ]
  
    deps = [
+--- src/extensions/common/BUILD.gn.orig
++++ src/extensions/common/BUILD.gn
+@@ -301,8 +301,6 @@ static_library("common") {
+     "extension_set.cc",
+     "extension_set.h",
+     "extension_updater_uma.h",
+-    "extension_urls.cc",
+-    "extension_urls.h",
+     "extension_utility_types.h",
+     "extensions_client.cc",
+     "extensions_client.h",
+@@ -498,8 +496,6 @@ static_library("common") {
+     "//components/crash/core/common",
+     "//components/crx_file",
+     "//components/nacl/common:buildflags",
+-    "//components/safe_browsing/core/common",
+-    
"//components/safe_browsing/core/common/hashprefix_realtime:hash_realtime_utils",
+     "//components/url_formatter",
+     "//components/url_matcher",
+     "//components/version_info",
+--- 
src/components/password_manager/core/browser/password_manager_switches.cc.orig  
   2024-07-24 12:50:49.362463800 +0200
++++ src/components/password_manager/core/browser/password_manager_switches.cc  
2024-08-04 16:04:17.829459300 +0200
+@@ -10,11 +10,9 @@ namespace password_manager {
+ // Specifies which encryption storage backend to use. Possible values are
+ // kwallet, kwallet5, kwallet6, gnome-libsecret, basic.
+ // Any other value will lead to Chrome detecting the best backend 
automatically.
+-const char kPasswordStore[] = "password-store";
+ 
+ // Enables the feature of allowing the user to disable the backend via a
+ // setting.
+-const char kEnableEncryptionSelection[] = "enable-encryption-selection";
+ #endif  // BUILDFLAG(IS_LINUX)
+ 
+ }  // namespace password_manager
+--- 
src/components/password_manager/core/browser/password_manager_switches.h.orig   
   2024-07-24 12:50:49.362463800 +0200
++++ src/components/password_manager/core/browser/password_manager_switches.h   
2024-08-04 16:03:48.687376900 +0200
+@@ -11,8 +11,8 @@
+ namespace password_manager {
+ 
+ #if BUILDFLAG(IS_LINUX)
+-extern const char kPasswordStore[];
+-extern const char kEnableEncryptionSelection[];
++inline constexpr const char kPasswordStore[] = "password-store";
++inline constexpr const char kEnableEncryptionSelection[] = 
"enable-encryption-selection";
+ #endif
+ 
+ }  // namespace password_manager
 

++++++ remove-rust.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:07.417306888 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:07.421307055 +0200
@@ -15,7 +15,7 @@
 @@ -1972,7 +1972,6 @@ static_library("browser") {
      "//chrome/browser/profiling_host",
  
-     # TODO(crbug.com/1335199): break this dep when favicon is in its own 
target
+     # TODO(crbug.com/40228447): break this dep when favicon is in its own 
target
 -    "//chrome/browser/share",
      "//chrome/browser/ui",
      "//chrome/browser/storage_access_api",
@@ -35,7 +35,7 @@
 -      "//chrome/browser/share/proto:proto",
        "//chrome/browser/smart_card",
        "//chrome/browser/support_tool:support_tool_proto",
-       "//chrome/browser/ui/actions:actions_headers",
+       "//chrome/browser/themes",
 @@ -8407,7 +8404,6 @@ static_library("test_support") {
      "//build:chromeos_buildflags",
      "//chrome/app/theme:theme_resources",
@@ -52,8 +52,8 @@
      "//chrome/browser/safe_browsing",
 -    "//chrome/browser/share",
      "//chrome/browser/storage_access_api",
+     "//chrome/browser/themes",
      "//chrome/browser/ui/side_panel:side_panel_enums",
-     "//chrome/browser/ui/webui/location_internals:mojo_bindings",
 @@ -591,7 +590,6 @@ static_library("ui") {
      "//components/privacy_sandbox:tracking_protection_settings",
      "//components/profile_metrics",
@@ -62,9 +62,20 @@
      "//components/query_parser",
      "//components/reading_list/core",
      "//components/reading_list/features:flags",
+--- src/build/rust/rust_target.gni.orig
++++ src/build/rust/rust_target.gni
+@@ -7,7 +7,7 @@ import("//build/rust/rust_unit_test.gni"
+ 
+ # The //build directory is re-used for non-Chromium products. We do not 
support
+ # cxx bindings in such contexts, because //third_party may be missing.
+-if (build_with_chromium) {
++if (false) {
+   import("//third_party/rust/cxx/chromium_integration/rust_cxx.gni")
+ }
+ 
 --- src/chrome/test/BUILD.gn.orig
 +++ src/chrome/test/BUILD.gn
-@@ -1923,7 +1923,6 @@ if (!is_android) {
+@@ -1942,7 +1942,6 @@ if (!is_android) {
        
"//components/privacy_sandbox/privacy_sandbox_attestations:test_support",
        "//components/privacy_sandbox/privacy_sandbox_attestations/proto:proto",
        "//components/proxy_config",
@@ -72,15 +83,23 @@
        "//components/reading_list/core",
        "//components/reading_list/features:flags",
        "//components/resources",
-@@ -6774,7 +6773,6 @@ test("unit_tests") {
+@@ -5593,7 +5592,6 @@ if (!is_android) {
+     if (!is_chromeos) {
+       sources += [ "../browser/webauthn/enclave_authenticator_browsertest.cc" 
]
+       deps += [
+-        "//chrome/browser/webauthn:test_support",
+         "//components/os_crypt/sync:test_support",
+       ]
+     }
+@@ -6867,7 +6865,6 @@ test("unit_tests") {
      "//chrome/browser/safe_browsing:metrics_collector",
      "//chrome/browser/safe_browsing:verdict_cache_manager_factory",
      "//chrome/browser/segmentation_platform:test_utils",
 -    "//chrome/browser/share",
      "//chrome/browser/sharing/proto",
      "//chrome/browser/storage_access_api",
-     
"//chrome/browser/sync_file_system/drive_backend:sync_file_system_drive_proto",
-@@ -6927,7 +6925,6 @@ test("unit_tests") {
+     "//chrome/browser/supervised_user:test_support",
+@@ -7028,7 +7025,6 @@ test("unit_tests") {
      "//components/privacy_sandbox/privacy_sandbox_attestations:test_support",
      "//components/privacy_sandbox/privacy_sandbox_attestations/proto:proto",
      "//components/proxy_config",
@@ -88,16 +107,21 @@
      "//components/query_parser",
      "//components/query_tiles:unit_tests",
      "//components/reading_list/core",
-@@ -8360,11 +8357,6 @@ test("unit_tests") {
- 
-     data += [ "//ash/components/arc/test/data/icons/" ]
- 
--    data_deps += [
--      # enclave_manager_unittest.cc runs this binary as part of its testing
--      # process.
--      
"//third_party/cloud_authenticator/test/local_service:cloud_authenticator_test_service",
--    ]
- 
-     if (include_js2gtest_tests && is_chromeos_ash) {
-       data += js2gtest_js_libraries
+@@ -7193,7 +7189,6 @@ test("unit_tests") {
+     "//third_party/metrics_proto",
+     "//third_party/microsoft_webauthn",
+     "//third_party/re2",
+-    "//third_party/rust/fend_core/v1/wrapper:unit_tests",
+     "//third_party/webrtc_overrides:webrtc_component",
+     "//third_party/widevine/cdm:headers",
+     "//third_party/zlib/google:compression_utils",
+@@ -8443,8 +8438,6 @@ test("unit_tests") {
+       
"//chrome/browser/ui/webui/side_panel/performance_controls:mojo_bindings",
+       "//chrome/browser/ui/webui/side_panel/user_notes:mojo_bindings",
+       "//chrome/browser/web_applications:web_applications_test_support",
+-      "//chrome/browser/webauthn:test_support",
+-      "//chrome/browser/webauthn/proto",
+       "//chrome/common/accessibility:mojo_bindings",
+       "//components/app_constants",
+       "//components/color",
 

++++++ remove-sync.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:07.437307722 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:07.441307889 +0200
@@ -180,38 +180,51 @@
    bool is_loaded_;
 --- src/device/fido/BUILD.gn.orig
 +++ src/device/fido/BUILD.gn
-@@ -148,20 +148,6 @@ component("fido") {
-       "device_operation.h",
-       "device_response_converter.cc",
-       "device_response_converter.h",
--      "enclave/constants.cc",
--      "enclave/constants.h",
--      "enclave/enclave_authenticator.cc",
--      "enclave/enclave_authenticator.h",
--      "enclave/enclave_discovery.cc",
--      "enclave/enclave_discovery.h",
--      "enclave/enclave_protocol_utils.cc",
--      "enclave/enclave_protocol_utils.h",
--      "enclave/enclave_websocket_client.cc",
--      "enclave/enclave_websocket_client.h",
--      "enclave/transact.cc",
--      "enclave/transact.h",
--      "enclave/types.cc",
--      "enclave/types.h",
-       "fido_authenticator.cc",
-       "fido_authenticator.h",
-       "fido_device.cc",
-@@ -229,7 +215,6 @@ component("fido") {
-     ]
- 
-     deps += [
--      "//components/sync/protocol:protocol",
-       "//services/device/public/cpp/hid",
-       "//services/device/public/cpp/usb",
-       "//services/device/public/mojom",
+@@ -163,33 +163,6 @@ component("fido") {
+         "device_operation.h",
+         "device_response_converter.cc",
+         "device_response_converter.h",
+-        "enclave/constants.cc",
+-        "enclave/constants.h",
+-        "enclave/enclave_authenticator.cc",
+-        "enclave/enclave_authenticator.h",
+-        "enclave/enclave_discovery.cc",
+-        "enclave/enclave_discovery.h",
+-        "enclave/enclave_protocol_utils.cc",
+-        "enclave/enclave_protocol_utils.h",
+-        "enclave/enclave_websocket_client.cc",
+-        "enclave/enclave_websocket_client.h",
+-        "enclave/metrics.cc",
+-        "enclave/metrics.h",
+-        "enclave/transact.cc",
+-        "enclave/transact.h",
+-        "enclave/types.cc",
+-        "enclave/types.h",
+-        "enclave/verify/claim.cc",
+-        "enclave/verify/claim.h",
+-        "enclave/verify/endorsement.cc",
+-        "enclave/verify/endorsement.h",
+-        "enclave/verify/hash.cc",
+-        "enclave/verify/hash.h",
+-        "enclave/verify/rekor.cc",
+-        "enclave/verify/rekor.h",
+-        "enclave/verify/utils.cc",
+-        "enclave/verify/utils.h",
+-        "enclave/verify/verify.h",
+         "fido_authenticator.cc",
+         "fido_authenticator.h",
+         "fido_device.cc",
+@@ -256,7 +229,6 @@ component("fido") {
+       ]
+ 
+       deps += [
+-        "//components/sync/protocol:protocol",
+         "//services/device/public/cpp/hid",
+         "//services/device/public/cpp/usb",
+         "//services/device/public/mojom",
 --- src/device/fido/fido_discovery_factory.cc.orig
 +++ src/device/fido/fido_discovery_factory.cc
-@@ -37,7 +37,7 @@
+@@ -38,7 +38,7 @@
  #include "device/fido/cros/discovery.h"
  #endif  // BUILDFLAG(IS_CHROMEOS)
  
@@ -220,38 +233,15 @@
  #include "device/fido/enclave/enclave_discovery.h"
  #endif
  
-@@ -108,7 +108,7 @@ std::vector<std::unique_ptr<FidoDiscover
- #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS)
-       discoveries = MaybeCreatePlatformDiscovery();
- #endif
--#if !BUILDFLAG(IS_CHROMEOS)
-+#if 0
-       MaybeCreateEnclaveDiscovery(discoveries);
- #endif
-       return discoveries;
-@@ -183,11 +183,13 @@ void FidoDiscoveryFactory::set_hid_ignor
-   hid_ignore_list_ = std::move(hid_ignore_list);
- }
+@@ -127,7 +127,7 @@ std::vector<std::unique_ptr<FidoDiscover
  
+ std::optional<std::unique_ptr<FidoDiscoveryBase>>
+ FidoDiscoveryFactory::MaybeCreateEnclaveDiscovery() {
+-#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
 +#if 0
- void FidoDiscoveryFactory::set_enclave_passkey_creation_callback(
-     base::RepeatingCallback<void(sync_pb::WebauthnCredentialSpecifics)>
-         callback) {
-   enclave_passkey_creation_callback_ = callback;
- }
-+#endif
- 
- void FidoDiscoveryFactory::set_enclave_ui_request_stream(
-     std::unique_ptr<FidoDiscoveryBase::EventStream<
-@@ -266,7 +268,7 @@ void FidoDiscoveryFactory::
- }
- #endif
- 
--#if !BUILDFLAG(IS_CHROMEOS)
-+#if 0
- void FidoDiscoveryFactory::MaybeCreateEnclaveDiscovery(
-     std::vector<std::unique_ptr<FidoDiscoveryBase>>& discoveries) {
    if (!base::FeatureList::IsEnabled(kWebAuthnEnclaveAuthenticator) ||
+       !enclave_ui_request_stream_ || !network_context_factory_) {
+     return std::nullopt;
 --- src/device/fido/fido_discovery_factory.h.orig
 +++ src/device/fido/fido_discovery_factory.h
 @@ -15,7 +15,6 @@
@@ -262,23 +252,4 @@
  #include "device/fido/cable/cable_discovery_data.h"
  #include "device/fido/cable/v2_constants.h"
  #include "device/fido/ctap_get_assertion_request.h"
-@@ -99,9 +98,6 @@ class COMPONENT_EXPORT(DEVICE_FIDO) Fido
- 
-   // Provides a callback that will be called when a passkey is created with
-   // the enclave authenticator in order to save the new passkey to sync data.
--  void set_enclave_passkey_creation_callback(
--      base::RepeatingCallback<void(sync_pb::WebauthnCredentialSpecifics)>
--          callback);
- 
-   void set_enclave_ui_request_stream(
-       std::unique_ptr<FidoDiscoveryBase::EventStream<
-@@ -192,8 +188,6 @@ class COMPONENT_EXPORT(DEVICE_FIDO) Fido
-       get_assertion_request_for_legacy_credential_check_;
- #endif  // BUILDFLAG(IS_CHROMEOS)
-   base::flat_set<VidPid> hid_ignore_list_;
--  base::RepeatingCallback<void(sync_pb::WebauthnCredentialSpecifics)>
--      enclave_passkey_creation_callback_;
-   std::unique_ptr<FidoDiscoveryBase::EventStream<
-       std::unique_ptr<enclave::CredentialRequest>>>
-       enclave_ui_request_stream_;
 

++++++ run_segmenter-missing-optional.patch ++++++
>From 42fc562599d784a8a646703ce3b7c158ce1a8466 Mon Sep 17 00:00:00 2001
From: Jose Dapena Paz <jdap...@igalia.com>
Date: Wed, 15 May 2024 14:01:03 +0000
Subject: [PATCH] IWYU: missing include for usage of std::optional in
 run_segmenter.h
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Bug: 41455655
Change-Id: If28c13730926447b1d362ecfe08ae0bc44112876
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5539811
Commit-Queue: José Dapena Paz <jdap...@igalia.com>
Reviewed-by: Florin Malita <fmal...@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1301267}
---
 .../blink/renderer/platform/fonts/shaping/run_segmenter.h      | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/third_party/blink/renderer/platform/fonts/shaping/run_segmenter.h 
b/third_party/blink/renderer/platform/fonts/shaping/run_segmenter.h
index 406c4070e91489..116f17dae944a7 100644
--- a/third_party/blink/renderer/platform/fonts/shaping/run_segmenter.h
+++ b/third_party/blink/renderer/platform/fonts/shaping/run_segmenter.h
@@ -6,7 +6,10 @@
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_FONTS_SHAPING_RUN_SEGMENTER_H_
 
 #include <unicode/uscript.h>
+
 #include <memory>
+#include <optional>
+
 #include "third_party/blink/renderer/platform/fonts/font_orientation.h"
 #include "third_party/blink/renderer/platform/fonts/orientation_iterator.h"
 #include "third_party/blink/renderer/platform/fonts/script_run_iterator.h"

++++++ system-six.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:07.513310894 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:07.517311061 +0200
@@ -8,7 +8,7 @@
 @@ -156,7 +156,8 @@
    def Run(self):
      parser = optparse.OptionParser()
-     # TODO(crbug.com/614082): Remove this once the bug is fixed.
+     # TODO(crbug.com/41255210): Remove this once the bug is fixed.
 -    parser.add_option('-w', '--wrap', action="store_true", default=False,
 +    parser.add_option('-w', '--fake-option', action="store_true", 
default=False)
 +    parser.add_option('--wrap', action="store_true", default=False,

++++++ text_decoder-missing-optional.patch ++++++
>From d852bf71654ae63d5e8e6624652584a9adf1df6f Mon Sep 17 00:00:00 2001
From: Jose Dapena Paz <jdap...@igalia.com>
Date: Wed, 15 May 2024 17:35:08 +0000
Subject: [PATCH] IWYU: missing include for usage of std::optional in
 text_decoder.h

Bug: 41455655
Change-Id: I8902831e823760d455ca274bfe45b44be9e947f5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5541275
Reviewed-by: Joshua Bell <jsb...@chromium.org>
Commit-Queue: Joshua Bell <jsb...@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1301397}
---
 third_party/blink/renderer/modules/encoding/text_decoder.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/third_party/blink/renderer/modules/encoding/text_decoder.h 
b/third_party/blink/renderer/modules/encoding/text_decoder.h
index 02452acb7306b6..9a947aab21b255 100644
--- a/third_party/blink/renderer/modules/encoding/text_decoder.h
+++ b/third_party/blink/renderer/modules/encoding/text_decoder.h
@@ -32,6 +32,7 @@
 #define THIRD_PARTY_BLINK_RENDERER_MODULES_ENCODING_TEXT_DECODER_H_
 
 #include <memory>
+#include <optional>
 
 #include "third_party/blink/renderer/bindings/core/v8/v8_typedefs.h"
 #include 
"third_party/blink/renderer/bindings/modules/v8/v8_text_decode_options.h"

++++++ wayland-proto-31-cursor-shape.patch ++++++
--- /var/tmp/diff_new_pack.ToR7Q6/_old  2024-09-17 18:19:07.553312563 +0200
+++ /var/tmp/diff_new_pack.ToR7Q6/_new  2024-09-17 18:19:07.557312730 +0200
@@ -431,121 +431,6 @@
      // Translate physical pixels to DIPs.
      gfx::Point hotspot_in_dips = gfx::ScaleToRoundedPoint(
          cursor->hotspot(), 1.0f / cursor->cursor_image_scale_factor());
-diff --git a/ui/ozone/platform/wayland/host/wayland_window_unittest.cc 
b/ui/ozone/platform/wayland/host/wayland_window_unittest.cc
-index 49dcdfed360fe..7a1640bc6f045 100644
---- a/ui/ozone/platform/wayland/host/wayland_window_unittest.cc
-+++ b/ui/ozone/platform/wayland/host/wayland_window_unittest.cc
-@@ -11,6 +11,7 @@
- #include <utility>
- #include <vector>
- 
-+#include <cursor-shape-v1-client-protocol.h>
- #include <cursor-shapes-unstable-v1-client-protocol.h>
- #include <linux/input.h>
- #include <wayland-server-core.h>
-@@ -51,6 +52,7 @@
- #include "ui/ozone/platform/wayland/common/wayland_util.h"
- #include "ui/ozone/platform/wayland/host/wayland_buffer_manager_host.h"
- #include "ui/ozone/platform/wayland/host/wayland_connection_test_api.h"
-+#include "ui/ozone/platform/wayland/host/wayland_cursor_shape.h"
- #include "ui/ozone/platform/wayland/host/wayland_event_source.h"
- #include "ui/ozone/platform/wayland/host/wayland_output.h"
- #include "ui/ozone/platform/wayland/host/wayland_output_manager.h"
-@@ -146,6 +148,16 @@ wl::ScopedWlArray MakeStateArray(const 
std::vector<int32_t> states) {
-   return wl::ScopedWlArray(states);
- }
- 
-+class MockCursorShape : public WaylandCursorShape {
-+ public:
-+  MockCursorShape() : WaylandCursorShape(nullptr, nullptr) {}
-+  MockCursorShape(const MockCursorShape&) = delete;
-+  MockCursorShape& operator=(const MockCursorShape&) = delete;
-+  ~MockCursorShape() override = default;
-+
-+  MOCK_METHOD(void, SetCursorShape, (uint32_t), (override));
-+};
-+
- class MockZcrCursorShapes : public WaylandZcrCursorShapes {
-  public:
-   MockZcrCursorShapes() : WaylandZcrCursorShapes(nullptr, nullptr) {}
-@@ -264,6 +276,14 @@ class WaylandWindowTest : public WaylandTest {
-     hit_tests->push_back(static_cast<int>(HTTOPRIGHT));
-   }
- 
-+  MockCursorShape* InstallMockCursorShape() {
-+    auto zcr_cursor_shapes = std::make_unique<MockCursorShape>();
-+    MockCursorShape* mock_cursor_shapes = zcr_cursor_shapes.get();
-+    WaylandConnectionTestApi test_api(connection_.get());
-+    test_api.SetCursorShape(std::move(zcr_cursor_shapes));
-+    return mock_cursor_shapes;
-+  }
-+
-   MockZcrCursorShapes* InstallMockZcrCursorShapes() {
-     auto zcr_cursor_shapes = std::make_unique<MockZcrCursorShapes>();
-     MockZcrCursorShapes* mock_cursor_shapes = zcr_cursor_shapes.get();
-@@ -1692,6 +1712,62 @@ TEST_P(WaylandWindowTest, CanDispatchMouseEventFocus) {
-   EXPECT_TRUE(window_->CanDispatchEvent(&test_mouse_event_));
- }
- 
-+TEST_P(WaylandWindowTest, SetCursorUsesCursorShapeForCommonTypes) {
-+  SetPointerFocusedWindow(window_.get());
-+  MockCursorShape* mock_cursor_shape = InstallMockCursorShape();
-+
-+  // Verify some commonly-used cursors.
-+  EXPECT_CALL(*mock_cursor_shape,
-+              SetCursorShape(WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_DEFAULT));
-+  auto pointer_cursor = AsPlatformCursor(
-+      base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kPointer));
-+  window_->SetCursor(pointer_cursor.get());
-+
-+  EXPECT_CALL(*mock_cursor_shape,
-+              SetCursorShape(WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_POINTER));
-+  auto hand_cursor = AsPlatformCursor(
-+      base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kHand));
-+  window_->SetCursor(hand_cursor.get());
-+
-+  EXPECT_CALL(*mock_cursor_shape,
-+              SetCursorShape(WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_TEXT));
-+  auto ibeam_cursor = AsPlatformCursor(
-+      base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kIBeam));
-+  window_->SetCursor(ibeam_cursor.get());
-+}
-+
-+TEST_P(WaylandWindowTest, SetCursorCallsCursorShapeOncePerCursor) {
-+  SetPointerFocusedWindow(window_.get());
-+  MockCursorShape* mock_cursor_shape = InstallMockCursorShape();
-+  auto hand_cursor = AsPlatformCursor(
-+      base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kHand));
-+  // Setting the same cursor twice on the client only calls the server once.
-+  EXPECT_CALL(*mock_cursor_shape, SetCursorShape(_)).Times(1);
-+  window_->SetCursor(hand_cursor.get());
-+  window_->SetCursor(hand_cursor.get());
-+}
-+
-+TEST_P(WaylandWindowTest, SetCursorDoesNotUseCursorShapeForNoneCursor) {
-+  SetPointerFocusedWindow(window_.get());
-+  MockCursorShape* mock_cursor_shape = InstallMockCursorShape();
-+  EXPECT_CALL(*mock_cursor_shape, SetCursorShape(_)).Times(0);
-+  auto none_cursor = AsPlatformCursor(
-+      base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kNone));
-+  window_->SetCursor(none_cursor.get());
-+}
-+
-+TEST_P(WaylandWindowTest, SetCursorDoesNotUseCursorShapeForCustomCursors) {
-+  SetPointerFocusedWindow(window_.get());
-+  MockCursorShape* mock_cursor_shape = InstallMockCursorShape();
-+
-+  // Custom cursors require bitmaps, so they do not use server-side cursors.
-+  EXPECT_CALL(*mock_cursor_shape, SetCursorShape(_)).Times(0);
-+  auto custom_cursor = AsPlatformCursor(
-+      base::MakeRefCounted<BitmapCursor>(mojom::CursorType::kCustom, 
SkBitmap(),
-+                                         gfx::Point(), kDefaultCursorScale));
-+  window_->SetCursor(custom_cursor.get());
-+}
-+
- TEST_P(WaylandWindowTest, SetCursorUsesZcrCursorShapesForCommonTypes) {
-   SetPointerFocusedWindow(window_.get());
-   MockZcrCursorShapes* mock_cursor_shapes = InstallMockZcrCursorShapes();
 diff --git a/ui/ozone/platform/wayland/host/wayland_zcr_cursor_shapes.cc 
b/ui/ozone/platform/wayland/host/wayland_zcr_cursor_shapes.cc
 index 9e3243dceea20..297c48e614087 100644
 --- a/ui/ozone/platform/wayland/host/wayland_zcr_cursor_shapes.cc

++++++ webp-no-sharpyuv.patch ++++++
Electron does not actually use sharpyuv. This enables buillding it on Leap 
which has old webp

--- src/build/linux/unbundle/libwebp.gn.orig    2024-07-24 12:50:43.685795800 
+0200
+++ src/build/linux/unbundle/libwebp.gn 2024-08-04 21:34:09.357750400 +0200
@@ -13,10 +13,6 @@ pkg_config("system_libwebp") {
   ]
 }
 
-pkg_config("system_libsharpyuv") {
-  packages = [ "libsharpyuv" ]
-}
-
 shim_headers("libwebp_shim") {
   root_path = "src/src"
   headers = [
@@ -44,7 +40,6 @@ source_set("libwebp_webp") {
 
 source_set("libwebp_sharpyuv") {
   deps = [ ":libsharpyuv_shim" ]
-  public_configs = [ ":system_libsharpyuv" ]
 }
 
 group("libwebp") {

Reply via email to