File opensuse-upstream-changes-from-mozilla_firefox142.patch of Package LibreWolf

diff --git a/mozilla-bmo1504834-part1.patch b/mozilla-bmo1504834-part1.patch
index 099951b..e188d88 100644
--- a/mozilla-bmo1504834-part1.patch
+++ b/mozilla-bmo1504834-part1.patch
@@ -1,11 +1,11 @@
 # HG changeset patch
-# Parent  125a78208d2cef58191a0328ffe894dd14c6b146
+# Parent  e31f5228a09ed69d7ac3c84e54f0faa6a5910ae0
 Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1504834
 
 diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp
 --- a/gfx/2d/DrawTargetSkia.cpp
 +++ b/gfx/2d/DrawTargetSkia.cpp
-@@ -151,17 +151,18 @@ static IntRect CalculateSurfaceBounds(co
+@@ -155,17 +155,18 @@ static IntRect CalculateSurfaceBounds(co
    if (!sampledBounds.ToIntRect(&bounds)) {
      return surfaceBounds;
    }
@@ -28,8 +28,8 @@ diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp
 diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h
 --- a/gfx/2d/Types.h
 +++ b/gfx/2d/Types.h
-@@ -84,28 +84,21 @@ enum class SurfaceFormat : int8_t {
-   YUV422,  // Single plane YUV 4:2:2 interleaved as Y`0 Cb Y`1 Cr.
+@@ -94,28 +94,21 @@ enum class SurfaceFormat : int8_t {
+               // this format.
    HSV,
    Lab,
    Depth,
diff --git a/mozilla-bmo1746799.patch b/mozilla-bmo1746799.patch
index f5f2c12..6680045 100644
--- a/mozilla-bmo1746799.patch
+++ b/mozilla-bmo1746799.patch
@@ -7,18 +7,22 @@ Fixes incorrect volume mapping.
 
 Rebased to current SUSE sources and updated checksums Wed Sep 04 00:00:00 2024
 
-diff -urN a/third_party/rust/cubeb-pulse/.cargo-checksum.json b/third_party/rust/cubeb-pulse/.cargo-checksum.json
---- a/third_party/rust/cubeb-pulse/.cargo-checksum.json	2024-08-12 22:48:46.000000000 +1000
-+++ b/third_party/rust/cubeb-pulse/.cargo-checksum.json	2024-09-04 01:47:13.620986547 +1000
-@@ -1 +1 @@
--{"files":{".editorconfig":"bf047bd1da10cabb99eea666d1e57c321eba4716dccb3e4ed0e2c5fe3ca53858",".github/workflows/build.yml":"477366d58c9dc059dbe4a158a6e910f23a3e9ecac7411f73616e06375583b764","AUTHORS":"0e0ac930a68ce2f6b876126b195add177f0d3886facb9260f4d9b69f1988f0cc","Cargo.toml":"8a0a450ae4990e1df322464867212e48587b474dfdc7f8c270fac06980be176a","LICENSE":"44c6b5ae5ec3fe2fbc608b00e6f4896f4d2d5c7e525fcbaa3eaa3cf2f3d5a983","README.md":"0079450bb4b013bac065ed1750851e461a3710ebad1f323817da1cb82db0bc4f","src/backend/context.rs":"c0db5f2447de1d6df5aa2812fa342a085e73156a072c221c7379b9a6a9b86786","src/backend/cork_state.rs":"4a0f1afc7d9f333dac89218cc56d7d32fbffb487cd48c1c9a4e03d79cb3b5e28","src/backend/intern.rs":"11ca424e4eb77f8eb9fd5a6717d1e791facf9743156a8534f0016fcf64d57b0f","src/backend/mod.rs":"dfb30ec497d6215e4535e936fea8fe3a407ef24dc1cec43b52c0ffa923d9229c","src/backend/stream.rs":"dfe5b747e100cae4aeae36cf2ebb9dc4715b411b4116721a40eec2944eb0ec23","src/capi.rs":"fa0fa020f0d0efe55aa0fc3596405e8407bbe2cbe6c7a558345304e6da87994e","src/lib.rs":"b41bbdc562cbfb130ed7c1e53fe69944774f515705341d8ce48a2f82c8c0c2c5"},"package":null}
+diff --git a/third_party/rust/cubeb-pulse/.cargo-checksum.json b/third_party/rust/cubeb-pulse/.cargo-checksum.json
+--- a/third_party/rust/cubeb-pulse/.cargo-checksum.json
++++ b/third_party/rust/cubeb-pulse/.cargo-checksum.json
+@@ -1,1 +1,1 @@
+-{"files":{".editorconfig":"bf047bd1da10cabb99eea666d1e57c321eba4716dccb3e4ed0e2c5fe3ca53858",".github/workflows/build.yml":"477366d58c9dc059dbe4a158a6e910f23a3e9ecac7411f73616e06375583b764","AUTHORS":"0e0ac930a68ce2f6b876126b195add177f0d3886facb9260f4d9b69f1988f0cc","Cargo.toml":"37491c1b911bcedf99e624fbfb100aa6ecaa357d0d048dc9ff0da341d35f687c","LICENSE":"44c6b5ae5ec3fe2fbc608b00e6f4896f4d2d5c7e525fcbaa3eaa3cf2f3d5a983","README.md":"0079450bb4b013bac065ed1750851e461a3710ebad1f323817da1cb82db0bc4f","src/backend/context.rs":"c0db5f2447de1d6df5aa2812fa342a085e73156a072c221c7379b9a6a9b86786","src/backend/cork_state.rs":"4a0f1afc7d9f333dac89218cc56d7d32fbffb487cd48c1c9a4e03d79cb3b5e28","src/backend/intern.rs":"11ca424e4eb77f8eb9fd5a6717d1e791facf9743156a8534f0016fcf64d57b0f","src/backend/mod.rs":"dfb30ec497d6215e4535e936fea8fe3a407ef24dc1cec43b52c0ffa923d9229c","src/backend/stream.rs":"dfe5b747e100cae4aeae36cf2ebb9dc4715b411b4116721a40eec2944eb0ec23","src/capi.rs":"fa0fa020f0d0efe55aa0fc3596405e8407bbe2cbe6c7a558345304e6da87994e","src/lib.rs":"b41bbdc562cbfb130ed7c1e53fe69944774f515705341d8ce48a2f82c8c0c2c5"},"package":null}
 \ No newline at end of file
-+{"files":{".editorconfig":"bf047bd1da10cabb99eea666d1e57c321eba4716dccb3e4ed0e2c5fe3ca53858",".github/workflows/build.yml":"477366d58c9dc059dbe4a158a6e910f23a3e9ecac7411f73616e06375583b764","AUTHORS":"0e0ac930a68ce2f6b876126b195add177f0d3886facb9260f4d9b69f1988f0cc","Cargo.toml":"8a0a450ae4990e1df322464867212e48587b474dfdc7f8c270fac06980be176a","LICENSE":"44c6b5ae5ec3fe2fbc608b00e6f4896f4d2d5c7e525fcbaa3eaa3cf2f3d5a983","README.md":"0079450bb4b013bac065ed1750851e461a3710ebad1f323817da1cb82db0bc4f","src/backend/context.rs":"c0db5f2447de1d6df5aa2812fa342a085e73156a072c221c7379b9a6a9b86786","src/backend/cork_state.rs":"4a0f1afc7d9f333dac89218cc56d7d32fbffb487cd48c1c9a4e03d79cb3b5e28","src/backend/intern.rs":"11ca424e4eb77f8eb9fd5a6717d1e791facf9743156a8534f0016fcf64d57b0f","src/backend/mod.rs":"dfb30ec497d6215e4535e936fea8fe3a407ef24dc1cec43b52c0ffa923d9229c","src/backend/stream.rs":"2dfc61c4eac69624558756d87283496d01f56f44bf311119eff0f1d124cd88f3","src/capi.rs":"fa0fa020f0d0efe55aa0fc3596405e8407bbe2cbe6c7a558345304e6da87994e","src/lib.rs":"b41bbdc562cbfb130ed7c1e53fe69944774f515705341d8ce48a2f82c8c0c2c5"},"package":null}
-\ No newline at end of file
-diff -urN a/third_party/rust/cubeb-pulse/src/backend/stream.rs b/third_party/rust/cubeb-pulse/src/backend/stream.rs
---- a/third_party/rust/cubeb-pulse/src/backend/stream.rs	2024-08-12 22:48:47.000000000 +1000
-+++ b/third_party/rust/cubeb-pulse/src/backend/stream.rs	2024-09-04 01:10:52.556622261 +1000
-@@ -765,8 +765,8 @@
++{"files":{".editorconfig":"bf047bd1da10cabb99eea666d1e57c321eba4716dccb3e4ed0e2c5fe3ca53858",".github/workflows/build.yml":"477366d58c9dc059dbe4a158a6e910f23a3e9ecac7411f73616e06375583b764","AUTHORS":"0e0ac930a68ce2f6b876126b195add177f0d3886facb9260f4d9b69f1988f0cc","Cargo.toml":"37491c1b911bcedf99e624fbfb100aa6ecaa357d0d048dc9ff0da341d35f687c","LICENSE":"44c6b5ae5ec3fe2fbc608b00e6f4896f4d2d5c7e525fcbaa3eaa3cf2f3d5a983","README.md":"0079450bb4b013bac065ed1750851e461a3710ebad1f323817da1cb82db0bc4f","src/backend/context.rs":"c0db5f2447de1d6df5aa2812fa342a085e73156a072c221c7379b9a6a9b86786","src/backend/cork_state.rs":"4a0f1afc7d9f333dac89218cc56d7d32fbffb487cd48c1c9a4e03d79cb3b5e28","src/backend/intern.rs":"11ca424e4eb77f8eb9fd5a6717d1e791facf9743156a8534f0016fcf64d57b0f","src/backend/mod.rs":"dfb30ec497d6215e4535e936fea8fe3a407ef24dc1cec43b52c0ffa923d9229c","src/backend/stream.rs":"2dfc61c4eac69624558756d87283496d01f56f44bf311119eff0f1d124cd88f3","src/capi.rs":"fa0fa020f0d0efe55aa0fc3596405e8407bbe2cbe6c7a558345304e6da87994e","src/lib.rs":"b41bbdc562cbfb130ed7c1e53fe69944774f515705341d8ce48a2f82c8c0c2c5"},"package":null}
+diff --git a/third_party/rust/cubeb-pulse/src/backend/stream.rs b/third_party/rust/cubeb-pulse/src/backend/stream.rs
+--- a/third_party/rust/cubeb-pulse/src/backend/stream.rs
++++ b/third_party/rust/cubeb-pulse/src/backend/stream.rs
+@@ -760,18 +760,18 @@ impl<'ctx> StreamOps for PulseStream<'ct
+                             _ => pulse::SinkFlags::empty(),
+                         }
+                     };
+ 
+                     if flags.contains(pulse::SinkFlags::FLAT_VOLUME) {
                          self.volume = volume;
                      } else {
                          let channels = stm.get_sample_spec().channels;
@@ -29,18 +33,27 @@ diff -urN a/third_party/rust/cubeb-pulse/src/backend/stream.rs b/third_party/rus
  
                          let index = stm.get_index();
  
-diff -urN a/third_party/rust/pulse-ffi/.cargo-checksum.json b/third_party/rust/pulse-ffi/.cargo-checksum.json
---- a/third_party/rust/pulse-ffi/.cargo-checksum.json	2024-08-12 22:48:46.000000000 +1000
-+++ b/third_party/rust/pulse-ffi/.cargo-checksum.json	2024-09-04 01:47:20.311044993 +1000
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"96983752046f2988087a836546a02aba746cdd1fc3ccd16f4170460465de5e63","src/ffi_funcs.rs":"a16646c5e7c49e94b907a7a404cfcadf3007688005c689cca936f0c2ee2e28e6","src/ffi_types.rs":"2ca56bc3638a40d331e53117a5dd175d0a6e102b1e0eccb9c2adc565c6861a33","src/lib.rs":"6aff308de11954a067d0f6ef95bf3126aabb6d928a5191e91d9a38ebadba91c2"},"package":null}
+                         let context_ptr = self.context as *const _ as *mut _;
+                         if let Ok(o) = context.set_sink_input_volume(
+                             index,
+                             &cvol,
+                             context_success,
+diff --git a/third_party/rust/pulse-ffi/.cargo-checksum.json b/third_party/rust/pulse-ffi/.cargo-checksum.json
+--- a/third_party/rust/pulse-ffi/.cargo-checksum.json
++++ b/third_party/rust/pulse-ffi/.cargo-checksum.json
+@@ -1,1 +1,1 @@
+-{"files":{"Cargo.toml":"f8cc9775a76c5fa246bb44a6a603bd0e7b2f0f068b4d9f40b68bac9ba777dd83","src/ffi_funcs.rs":"a16646c5e7c49e94b907a7a404cfcadf3007688005c689cca936f0c2ee2e28e6","src/ffi_types.rs":"2ca56bc3638a40d331e53117a5dd175d0a6e102b1e0eccb9c2adc565c6861a33","src/lib.rs":"6aff308de11954a067d0f6ef95bf3126aabb6d928a5191e91d9a38ebadba91c2"},"package":null}
 \ No newline at end of file
-+{"files":{"Cargo.toml":"96983752046f2988087a836546a02aba746cdd1fc3ccd16f4170460465de5e63","src/ffi_funcs.rs":"a16646c5e7c49e94b907a7a404cfcadf3007688005c689cca936f0c2ee2e28e6","src/ffi_types.rs":"f39a27712b17256583331f7ce5722413d0c7b51d73d8def8f50e839e23dfb411","src/lib.rs":"6aff308de11954a067d0f6ef95bf3126aabb6d928a5191e91d9a38ebadba91c2"},"package":null}
-\ No newline at end of file
-diff -urN a/third_party/rust/pulse-ffi/src/ffi_types.rs b/third_party/rust/pulse-ffi/src/ffi_types.rs
---- a/third_party/rust/pulse-ffi/src/ffi_types.rs	2024-08-12 22:48:46.000000000 +1000
-+++ b/third_party/rust/pulse-ffi/src/ffi_types.rs	2024-09-04 01:07:53.408269333 +1000
-@@ -22,6 +22,11 @@
++{"files":{"Cargo.toml":"f8cc9775a76c5fa246bb44a6a603bd0e7b2f0f068b4d9f40b68bac9ba777dd83","src/ffi_funcs.rs":"a16646c5e7c49e94b907a7a404cfcadf3007688005c689cca936f0c2ee2e28e6","src/ffi_types.rs":"f39a27712b17256583331f7ce5722413d0c7b51d73d8def8f50e839e23dfb411","src/lib.rs":"6aff308de11954a067d0f6ef95bf3126aabb6d928a5191e91d9a38ebadba91c2"},"package":null}
+diff --git a/third_party/rust/pulse-ffi/src/ffi_types.rs b/third_party/rust/pulse-ffi/src/ffi_types.rs
+--- a/third_party/rust/pulse-ffi/src/ffi_types.rs
++++ b/third_party/rust/pulse-ffi/src/ffi_types.rs
+@@ -17,16 +17,21 @@ pub const PA_SAMPLE_S32BE: c_int = 8;
+ pub const PA_SAMPLE_S24LE: c_int = 9;
+ pub const PA_SAMPLE_S24BE: c_int = 10;
+ pub const PA_SAMPLE_S24_32LE: c_int = 11;
+ pub const PA_SAMPLE_S24_32BE: c_int = 12;
+ pub const PA_SAMPLE_MAX: c_int = 13;
  pub const PA_SAMPLE_INVALID: c_int = -1;
  pub type pa_sample_format_t = c_int;
  
@@ -52,3 +65,8 @@ diff -urN a/third_party/rust/pulse-ffi/src/ffi_types.rs b/third_party/rust/pulse
  #[repr(C)]
  #[derive(Copy, Clone, Debug)]
  pub struct Struct_pa_sample_spec {
+     pub format: pa_sample_format_t,
+     pub rate: u32,
+     pub channels: u8,
+ }
+ 
diff --git a/mozilla-ntlm-full-path.patch b/mozilla-ntlm-full-path.patch
index af4bac1..3665810 100644
--- a/mozilla-ntlm-full-path.patch
+++ b/mozilla-ntlm-full-path.patch
@@ -1,18 +1,28 @@
 # HG changeset patch
 # User Petr Cerny <pcerny@novell.com>
 # Parent 7308e4a7c1f769f4bbbc90870b849cadd99495a6
-# Parent  1c6a565013e4c5f3494f964269783939cd5ed0b8
+# Parent  3399aced682c232525633755ff79b37a0be75548
 Bug 634334 - call to the ntlm_auth helper fails
 
 diff --git a/extensions/auth/nsAuthSambaNTLM.cpp b/extensions/auth/nsAuthSambaNTLM.cpp
 --- a/extensions/auth/nsAuthSambaNTLM.cpp
 +++ b/extensions/auth/nsAuthSambaNTLM.cpp
-@@ -160,7 +160,7 @@ nsresult nsAuthSambaNTLM::SpawnNTLMAuthH
-   const char* username = PR_GetEnv("USER");
-   if (!username) return NS_ERROR_FAILURE;
+@@ -148,17 +148,17 @@ nsresult nsAuthSambaNTLM::SpawnNTLMAuthH
+     }
+ 
+     base::LaunchOptions options;
+     options.fds_to_remap.push_back(
+         std::pair{toChildPipeRead.get(), STDIN_FILENO});
+     options.fds_to_remap.push_back(
+         std::pair{fromChildPipeWrite.get(), STDOUT_FILENO});
+ 
+-    std::vector<std::string> argvVec{"ntlm_auth",        "--helper-protocol",
++    std::vector<std::string> argvVec{"/usr/bin/ntlm_auth",        "--helper-protocol",
+                                      "ntlmssp-client-1", "--use-cached-creds",
+                                      "--username",       username};
+ 
+     auto result = base::LaunchApp(argvVec, std::move(options), &mChildPID);
+     if (result.isErr()) {
+       return NS_ERROR_FAILURE;
+     }
  
--  const char* const args[] = {"ntlm_auth",
-+  const char* const args[] = {"/usr/bin/ntlm_auth",
-                               "--helper-protocol",
-                               "ntlmssp-client-1",
-                               "--use-cached-creds",
diff --git a/mozilla-pgo.patch b/mozilla-pgo.patch
index 9d28ff5..dbac416 100644
--- a/mozilla-pgo.patch
+++ b/mozilla-pgo.patch
@@ -30,16 +30,16 @@ Index: firefox-115.0/build/pgo/profileserver.py
 ===================================================================
 --- firefox-115.0.orig/build/pgo/profileserver.py
 +++ firefox-115.0/build/pgo/profileserver.py
-@@ -11,7 +11,7 @@ import subprocess
+@@ -10,7 +10,7 @@ import subprocess
  import sys
  
  import mozcrash
 -from mozbuild.base import BinaryNotFoundException, MozbuildObject
 +from mozbuild.base import BinaryNotFoundException, MozbuildObject, BuildEnvironmentNotFoundException
- from mozfile import TemporaryDirectory
+ from mozfile import TemporaryDirectory, json
  from mozhttpd import MozHttpd
  from mozprofile import FirefoxProfile, Preferences
-@@ -87,9 +87,22 @@ if __name__ == "__main__":
+@@ -96,9 +96,22 @@ if __name__ == "__main__":
      locations = ServerLocations()
      locations.add_host(host="127.0.0.1", port=PORT, options="primary,privileged")
  
@@ -65,7 +65,7 @@ Index: firefox-115.0/build/pgo/profileserver.py
  
      with TemporaryDirectory() as profilePath:
          # TODO: refactor this into mozprofile
-@@ -213,6 +226,10 @@ if __name__ == "__main__":
+@@ -228,6 +241,10 @@ if __name__ == "__main__":
              print("Firefox exited successfully, but produced a crashreport")
              sys.exit(1)
  
diff --git a/mozilla-silence-no-return-type.patch b/mozilla-silence-no-return-type.patch
index 5bdefad..c72106d 100644
--- a/mozilla-silence-no-return-type.patch
+++ b/mozilla-silence-no-return-type.patch
@@ -1,5 +1,5 @@
 # HG changeset patch
-# Parent  1bc018c4fee525f3a9dfafdb9550e53b6d82fd65
+# Parent  df83073d2834936ee6a66cdb875fca6f63767297
 
 diff --git a/gfx/skia/skia/include/codec/SkEncodedOrigin.h b/gfx/skia/skia/include/codec/SkEncodedOrigin.h
 --- a/gfx/skia/skia/include/codec/SkEncodedOrigin.h
@@ -67,7 +67,7 @@ diff --git a/gfx/skia/skia/src/core/SkDescriptor.cpp b/gfx/skia/skia/src/core/Sk
 diff --git a/gfx/skia/skia/src/core/SkGeometry.h b/gfx/skia/skia/src/core/SkGeometry.h
 --- a/gfx/skia/skia/src/core/SkGeometry.h
 +++ b/gfx/skia/skia/src/core/SkGeometry.h
-@@ -276,28 +276,30 @@ static inline bool SkCubicIsDegenerate(S
+@@ -277,28 +277,30 @@ static inline bool SkCubicIsDegenerate(S
          case SkCubicType::kLocalCusp:
          case SkCubicType::kCuspAtInfinity:
              return false;
@@ -178,7 +178,7 @@ diff --git a/gfx/skia/skia/src/core/SkTypeface_remote.h b/gfx/skia/skia/src/core
          const SkScalerContextEffects& effects, const SkDescriptor* desc) const override
      {
          return std::make_unique<SkScalerContextProxy>(
-                 sk_ref_sp(const_cast<SkTypefaceProxy*>(this)), effects, desc, fDiscardableManager);
+                 *const_cast<SkTypefaceProxy*>(this), effects, desc, fDiscardableManager);
      }
      void onFilterRec(SkScalerContextRec* rec) const override {
          // The rec filtering is already applied by the server when generating
@@ -221,48 +221,6 @@ diff --git a/gfx/skia/skia/src/core/SkTypeface_remote.h b/gfx/skia/skia/src/core
      const bool                                      fIsLogging;
      const bool                                      fGlyphMaskNeedsCurrentColor;
      sk_sp<SkStrikeClient::DiscardableHandleManager> fDiscardableManager;
-diff --git a/gfx/skia/skia/src/effects/imagefilters/SkBlurImageFilter.cpp b/gfx/skia/skia/src/effects/imagefilters/SkBlurImageFilter.cpp
---- a/gfx/skia/skia/src/effects/imagefilters/SkBlurImageFilter.cpp
-+++ b/gfx/skia/skia/src/effects/imagefilters/SkBlurImageFilter.cpp
-@@ -794,16 +794,17 @@ sk_sp<SkSpecialImage> cpu_blur(const ski
-         SkASSERT(0 <= sigma && sigma <= 2183); // should be guaranteed after map_sigma
-         if (PassMaker* maker = GaussPass::MakeMaker(sigma, &alloc)) {
-             return maker;
-         }
-         if (PassMaker* maker = TentPass::MakeMaker(sigma, &alloc)) {
-             return maker;
-         }
-         SK_ABORT("Sigma is out of range.");
-+        SkUNREACHABLE;
-     };
- 
-     PassMaker* makerX = makeMaker(sigma.width());
-     PassMaker* makerY = makeMaker(sigma.height());
-     // A no-op blur should have been caught earlier in onFilterImage().
-     SkASSERT(makerX->window() > 1 || makerY->window() > 1);
- 
-     SkBitmap src;
-diff --git a/gfx/skia/skia/src/fonts/SkFontMgr_indirect.cpp b/gfx/skia/skia/src/fonts/SkFontMgr_indirect.cpp
---- a/gfx/skia/skia/src/fonts/SkFontMgr_indirect.cpp
-+++ b/gfx/skia/skia/src/fonts/SkFontMgr_indirect.cpp
-@@ -64,16 +64,17 @@ int SkFontMgr_Indirect::onCountFamilies(
- }
- 
- void SkFontMgr_Indirect::onGetFamilyName(int index, SkString* familyName) const {
-     SK_ABORT("Not implemented");
- }
- 
- sk_sp<SkFontStyleSet> SkFontMgr_Indirect::onCreateStyleSet(int index) const {
-     SK_ABORT("Not implemented");
-+    SkUNREACHABLE;
- }
- 
- sk_sp<SkFontStyleSet> SkFontMgr_Indirect::onMatchFamily(const char familyName[]) const {
-     return sk_sp<SkFontStyleSet>(new SkStyleSet_Indirect(this, -1, fProxy->matchName(familyName)));
- }
- 
- sk_sp<SkTypeface> SkFontMgr_Indirect::createTypefaceFromFontId(const SkFontIdentity& id) const {
-     if (id.fDataId == SkFontIdentity::kInvalidDataId) {
 diff --git a/gfx/skia/skia/src/sksl/SkSLOperator.cpp b/gfx/skia/skia/src/sksl/SkSLOperator.cpp
 --- a/gfx/skia/skia/src/sksl/SkSLOperator.cpp
 +++ b/gfx/skia/skia/src/sksl/SkSLOperator.cpp
@@ -309,7 +267,7 @@ diff --git a/gfx/skia/skia/src/sksl/ir/SkSLType.h b/gfx/skia/skia/src/sksl/ir/Sk
 diff --git a/gfx/skia/skia/src/utils/SkShadowUtils.cpp b/gfx/skia/skia/src/utils/SkShadowUtils.cpp
 --- a/gfx/skia/skia/src/utils/SkShadowUtils.cpp
 +++ b/gfx/skia/skia/src/utils/SkShadowUtils.cpp
-@@ -135,16 +135,17 @@ struct SpotVerticesFactory {
+@@ -137,16 +137,17 @@ struct SpotVerticesFactory {
                  }
                  return false;
              case OccluderType::kDirectional:
@@ -334,25 +292,25 @@ diff --git a/intl/icu/source/i18n/number_rounding.cpp b/intl/icu/source/i18n/num
  }
  
  FractionPrecision Precision::constructFraction(int32_t minFrac, int32_t maxFrac) {
-     FractionSignificantSettings settings;
+     FractionSignificantSettings settings{};
      settings.fMinFrac = static_cast<digits_t>(minFrac);
      settings.fMaxFrac = static_cast<digits_t>(maxFrac);
      settings.fMinSig = -1;
      settings.fMaxSig = -1;
 +    settings.fPriority = UNUM_ROUNDING_PRIORITY_RELAXED;
-     PrecisionUnion union_;
+     PrecisionUnion union_{};
      union_.fracSig = settings;
      return {RND_FRACTION, union_};
  }
  
  Precision Precision::constructSignificant(int32_t minSig, int32_t maxSig) {
-     FractionSignificantSettings settings;
+     FractionSignificantSettings settings{};
      settings.fMinFrac = -1;
      settings.fMaxFrac = -1;
      settings.fMinSig = static_cast<digits_t>(minSig);
      settings.fMaxSig = static_cast<digits_t>(maxSig);
 +    settings.fPriority = UNUM_ROUNDING_PRIORITY_RELAXED;
-     PrecisionUnion union_;
+     PrecisionUnion union_{};
      union_.fracSig = settings;
      return {RND_SIGNIFICANT, union_};
  }
@@ -363,7 +321,7 @@ diff --git a/intl/icu/source/i18n/number_rounding.cpp b/intl/icu/source/i18n/num
 diff --git a/js/src/irregexp/imported/regexp-parser.cc b/js/src/irregexp/imported/regexp-parser.cc
 --- a/js/src/irregexp/imported/regexp-parser.cc
 +++ b/js/src/irregexp/imported/regexp-parser.cc
-@@ -2776,16 +2776,17 @@ bool MayContainStrings(ClassSetOperandTy
+@@ -2785,16 +2785,17 @@ bool MayContainStrings(ClassSetOperandTy
        return false;
      case ClassSetOperandType::kCharacterClassEscape:
      case ClassSetOperandType::kClassStringDisjunction:
@@ -405,7 +363,7 @@ diff --git a/third_party/libwebrtc/api/adaptation/resource.cc b/third_party/libw
 diff --git a/third_party/libwebrtc/api/rtp_parameters.cc b/third_party/libwebrtc/api/rtp_parameters.cc
 --- a/third_party/libwebrtc/api/rtp_parameters.cc
 +++ b/third_party/libwebrtc/api/rtp_parameters.cc
-@@ -28,16 +28,17 @@ const char* DegradationPreferenceToStrin
+@@ -32,16 +32,17 @@ const char* DegradationPreferenceToStrin
      case DegradationPreference::MAINTAIN_FRAMERATE:
        return "maintain-framerate";
      case DegradationPreference::MAINTAIN_RESOLUTION:
@@ -426,7 +384,7 @@ diff --git a/third_party/libwebrtc/api/rtp_parameters.cc b/third_party/libwebrtc
 diff --git a/third_party/libwebrtc/api/video/video_frame_buffer.cc b/third_party/libwebrtc/api/video/video_frame_buffer.cc
 --- a/third_party/libwebrtc/api/video/video_frame_buffer.cc
 +++ b/third_party/libwebrtc/api/video/video_frame_buffer.cc
-@@ -107,16 +107,18 @@ const char* VideoFrameBufferTypeToString
+@@ -109,16 +109,18 @@ const char* VideoFrameBufferTypeToString
        return "kI210";
      case VideoFrameBuffer::Type::kI410:
        return "kI410";
@@ -448,7 +406,7 @@ diff --git a/third_party/libwebrtc/api/video/video_frame_buffer.cc b/third_party
 diff --git a/third_party/libwebrtc/api/video_codecs/video_codec.cc b/third_party/libwebrtc/api/video_codecs/video_codec.cc
 --- a/third_party/libwebrtc/api/video_codecs/video_codec.cc
 +++ b/third_party/libwebrtc/api/video_codecs/video_codec.cc
-@@ -157,16 +157,17 @@ const char* CodecTypeToPayloadString(Vid
+@@ -153,16 +153,17 @@ const char* CodecTypeToPayloadString(Vid
      case kVideoCodecH264:
        return kPayloadNameH264;
      case kVideoCodecGeneric:
@@ -469,7 +427,7 @@ diff --git a/third_party/libwebrtc/api/video_codecs/video_codec.cc b/third_party
 diff --git a/third_party/libwebrtc/api/video_codecs/video_encoder_software_fallback_wrapper.cc b/third_party/libwebrtc/api/video_codecs/video_encoder_software_fallback_wrapper.cc
 --- a/third_party/libwebrtc/api/video_codecs/video_encoder_software_fallback_wrapper.cc
 +++ b/third_party/libwebrtc/api/video_codecs/video_encoder_software_fallback_wrapper.cc
-@@ -186,16 +186,17 @@ class VideoEncoderSoftwareFallbackWrappe
+@@ -189,16 +189,17 @@ class VideoEncoderSoftwareFallbackWrappe
          [[fallthrough]];
        case EncoderState::kMainEncoderUsed:
          return encoder_.get();
@@ -487,7 +445,7 @@ diff --git a/third_party/libwebrtc/api/video_codecs/video_encoder_software_fallb
  
    // Settings used in the last InitEncode call and used if a dynamic fallback to
    // software is required.
-@@ -381,16 +382,17 @@ int32_t VideoEncoderSoftwareFallbackWrap
+@@ -387,16 +388,17 @@ int32_t VideoEncoderSoftwareFallbackWrap
      case EncoderState::kMainEncoderUsed: {
        return EncodeWithMainEncoder(frame, frame_types);
      }
@@ -508,7 +466,7 @@ diff --git a/third_party/libwebrtc/api/video_codecs/video_encoder_software_fallb
 diff --git a/third_party/libwebrtc/call/adaptation/video_stream_adapter.cc b/third_party/libwebrtc/call/adaptation/video_stream_adapter.cc
 --- a/third_party/libwebrtc/call/adaptation/video_stream_adapter.cc
 +++ b/third_party/libwebrtc/call/adaptation/video_stream_adapter.cc
-@@ -164,16 +164,17 @@ const char* Adaptation::StatusToString(A
+@@ -172,16 +172,17 @@ const char* Adaptation::StatusToString(A
      case Status::kInsufficientInput:
        return "kInsufficientInput";
      case Status::kAdaptationDisabled:
@@ -526,7 +484,7 @@ diff --git a/third_party/libwebrtc/call/adaptation/video_stream_adapter.cc b/thi
                         VideoStreamInputState input_state)
      : validation_id_(validation_id),
        status_(Status::kValid),
-@@ -386,16 +387,17 @@ VideoStreamAdapter::RestrictionsOrState 
+@@ -394,16 +395,17 @@ VideoStreamAdapter::RestrictionsOrState 
      case DegradationPreference::MAINTAIN_RESOLUTION: {
        // Scale up framerate.
        return IncreaseFramerate(input_state, current_restrictions_);
@@ -544,7 +502,7 @@ diff --git a/third_party/libwebrtc/call/adaptation/video_stream_adapter.cc b/thi
    ++adaptation_validation_id_;
    RestrictionsOrState restrictions_or_state =
        GetAdaptationDownStep(input_state, current_restrictions_);
-@@ -468,16 +470,17 @@ VideoStreamAdapter::GetAdaptationDownSte
+@@ -474,16 +476,17 @@ VideoStreamAdapter::GetAdaptationDownSte
      }
      case DegradationPreference::MAINTAIN_RESOLUTION: {
        return DecreaseFramerate(input_state, current_restrictions);
@@ -562,7 +520,7 @@ diff --git a/third_party/libwebrtc/call/adaptation/video_stream_adapter.cc b/thi
    int target_pixels =
        GetLowerResolutionThan(input_state.frame_size_pixels().value());
    // Use single active stream if set, this stream could be lower than the input.
-@@ -621,16 +624,18 @@ Adaptation VideoStreamAdapter::GetAdaptD
+@@ -627,16 +630,18 @@ Adaptation VideoStreamAdapter::GetAdaptD
      case DegradationPreference::MAINTAIN_FRAMERATE:
        return GetAdaptationDown();
      case DegradationPreference::BALANCED: {
@@ -580,20 +538,21 @@ diff --git a/third_party/libwebrtc/call/adaptation/video_stream_adapter.cc b/thi
      const VideoStreamInputState& input_state) const {
    // Adapt twice if the first adaptation did not decrease resolution.
    auto first_step = GetAdaptationDownStep(input_state, current_restrictions_);
-   if (!absl::holds_alternative<RestrictionsWithCounters>(first_step)) {
+   if (!std::holds_alternative<RestrictionsWithCounters>(first_step)) {
 diff --git a/third_party/libwebrtc/call/rtp_payload_params.cc b/third_party/libwebrtc/call/rtp_payload_params.cc
 --- a/third_party/libwebrtc/call/rtp_payload_params.cc
 +++ b/third_party/libwebrtc/call/rtp_payload_params.cc
-@@ -408,17 +408,17 @@ absl::optional<FrameDependencyStructure>
-       }
-       return structure;
-     }
-     case VideoCodecType::kVideoCodecAV1:
+@@ -425,17 +425,18 @@ std::optional<FrameDependencyStructure> 
      case VideoCodecType::kVideoCodecH264:
+       return MinimalisticStructure(
+           /*num_spatial_layers=*/1,
+           /*num_temporal_layers=*/kMaxTemporalStreams);
+     case VideoCodecType::kVideoCodecAV1:
      case VideoCodecType::kVideoCodecH265:
-       return absl::nullopt;
+       return std::nullopt;
    }
 -  RTC_DCHECK_NOTREACHED() << "Unsupported codec.";
++  //RTC_DCHECK_NOTREACHED() << "Unsupported codec.";
 +  RTC_CHECK_NOTREACHED();
  }
  
@@ -606,7 +565,7 @@ diff --git a/third_party/libwebrtc/call/rtp_payload_params.cc b/third_party/libw
 diff --git a/third_party/libwebrtc/call/video_send_stream.cc b/third_party/libwebrtc/call/video_send_stream.cc
 --- a/third_party/libwebrtc/call/video_send_stream.cc
 +++ b/third_party/libwebrtc/call/video_send_stream.cc
-@@ -25,16 +25,17 @@ const char* StreamTypeToString(VideoSend
+@@ -29,16 +29,17 @@ const char* StreamTypeToString(VideoSend
      case VideoSendStream::StreamStats::StreamType::kMedia:
        return "media";
      case VideoSendStream::StreamStats::StreamType::kRtx:
@@ -624,27 +583,27 @@ diff --git a/third_party/libwebrtc/call/video_send_stream.cc b/third_party/libwe
  VideoSendStream::StreamStats::~StreamStats() = default;
  
  std::string VideoSendStream::StreamStats::ToString() const {
-diff --git a/third_party/libwebrtc/media/base/codec.cc b/third_party/libwebrtc/media/base/codec.cc
---- a/third_party/libwebrtc/media/base/codec.cc
-+++ b/third_party/libwebrtc/media/base/codec.cc
-@@ -257,16 +257,17 @@ bool Codec::Matches(const Codec& codec) 
-                (codec.bitrate == 0 || bitrate <= 0 ||
-                 bitrate == codec.bitrate) &&
-                ((codec.channels < 2 && channels < 2) ||
-                 channels == codec.channels);
- 
-       case Type::kVideo:
-         return IsSameCodecSpecific(name, params, codec.name, codec.params);
-     }
-+    return false; // unreached
+diff --git a/third_party/libwebrtc/media/base/codec_comparators.cc b/third_party/libwebrtc/media/base/codec_comparators.cc
+--- a/third_party/libwebrtc/media/base/codec_comparators.cc
++++ b/third_party/libwebrtc/media/base/codec_comparators.cc
+@@ -334,16 +334,17 @@ bool MatchesWithCodecRules(const Codec& 
+                 left_codec.bitrate == right_codec.bitrate) &&
+                ((right_codec.channels < 2 && left_codec.channels < 2) ||
+                 left_codec.channels == right_codec.channels);
+ 
+       case Codec::Type::kVideo:
+         return IsSameCodecSpecific(left_codec.name, left_codec.params,
+                                    right_codec.name, right_codec.params);
+     }
++    return false;
    };
  
    return matches_id && matches_type_specific();
  }
  
- bool Codec::MatchesRtpCodec(const webrtc::RtpCodec& codec_capability) const {
-   webrtc::RtpCodecParameters codec_parameters = ToCodecParameters();
- 
+ bool MatchesWithReferenceAttributes(const Codec& codec1, const Codec& codec2) {
+   return MatchesWithReferenceAttributesAndComparator(
+       codec1, codec2, [](int a, int b) { return a == b; });
 diff --git a/third_party/libwebrtc/modules/audio_processing/agc2/clipping_predictor.cc b/third_party/libwebrtc/modules/audio_processing/agc2/clipping_predictor.cc
 --- a/third_party/libwebrtc/modules/audio_processing/agc2/clipping_predictor.cc
 +++ b/third_party/libwebrtc/modules/audio_processing/agc2/clipping_predictor.cc
@@ -679,7 +638,7 @@ diff --git a/third_party/libwebrtc/modules/audio_processing/agc2/input_volume_st
  
  metrics::Histogram* CreateVolumeHistogram(InputVolumeType input_volume_type) {
    char buffer[64];
-   rtc::SimpleStringBuilder builder(buffer);
+   SimpleStringBuilder builder(buffer);
    builder << MetricNamePrefix(input_volume_type) << "OnChange";
    return metrics::HistogramFactoryGetCountsLinear(/*name=*/builder.str(),
                                                    /*min=*/1,
@@ -687,7 +646,7 @@ diff --git a/third_party/libwebrtc/modules/audio_processing/agc2/rnn_vad/rnn_fc.
 --- a/third_party/libwebrtc/modules/audio_processing/agc2/rnn_vad/rnn_fc.cc
 +++ b/third_party/libwebrtc/modules/audio_processing/agc2/rnn_vad/rnn_fc.cc
 @@ -55,16 +55,18 @@ std::vector<float> PreprocessWeights(rtc
- rtc::FunctionView<float(float)> GetActivationFunction(
+ FunctionView<float(float)> GetActivationFunction(
      ActivationFunction activation_function) {
    switch (activation_function) {
      case ActivationFunction::kTansigApproximated:
@@ -708,7 +667,7 @@ diff --git a/third_party/libwebrtc/modules/audio_processing/agc2/rnn_vad/rnn_fc.
 diff --git a/third_party/libwebrtc/modules/audio_processing/audio_processing_impl.cc b/third_party/libwebrtc/modules/audio_processing/audio_processing_impl.cc
 --- a/third_party/libwebrtc/modules/audio_processing/audio_processing_impl.cc
 +++ b/third_party/libwebrtc/modules/audio_processing/audio_processing_impl.cc
-@@ -96,16 +96,17 @@ GainControl::Mode Agc1ConfigModeToInterf
+@@ -94,16 +94,17 @@ GainControl::Mode Agc1ConfigModeToInterf
      case Agc1Config::kAdaptiveAnalog:
        return GainControl::kAdaptiveAnalog;
      case Agc1Config::kAdaptiveDigital:
@@ -720,13 +679,13 @@ diff --git a/third_party/libwebrtc/modules/audio_processing/audio_processing_imp
 +  return GainControl::kAdaptiveAnalog;
  }
  
- bool MinimizeProcessingForUnusedOutput() {
-   return !field_trial::IsEnabled("WebRTC-MutedStateKillSwitch");
+ bool MinimizeProcessingForUnusedOutput(const FieldTrialsView& field_trials) {
+   return !field_trials.IsEnabled("WebRTC-MutedStateKillSwitch");
  }
  
  // Maximum lengths that frame of samples being passed from the render side to
  // the capture side can have (does not apply to AEC3).
-@@ -163,17 +164,17 @@ int AudioFormatValidityToErrorCode(Audio
+@@ -161,17 +162,17 @@ int AudioFormatValidityToErrorCode(Audio
      case AudioFormatValidity::kValidAndSupported:
        return AudioProcessing::kNoError;
      case AudioFormatValidity::kValidButUnsupportedSampleRate:  // fall-through
@@ -745,7 +704,7 @@ diff --git a/third_party/libwebrtc/modules/audio_processing/audio_processing_imp
      const StreamConfig& input_config,
      const StreamConfig& output_config) {
    AudioFormatValidity input_validity = ValidateAudioFormat(input_config);
-@@ -2420,16 +2421,17 @@ void AudioProcessingImpl::InitializeNois
+@@ -2062,16 +2063,17 @@ void AudioProcessingImpl::InitializeNois
              case NoiseSuppresionConfig::kModerate:
                return NsConfig::SuppressionLevel::k12dB;
              case NoiseSuppresionConfig::kHigh:
@@ -763,31 +722,10 @@ diff --git a/third_party/libwebrtc/modules/audio_processing/audio_processing_imp
          cfg, proc_sample_rate_hz(), num_proc_channels());
    }
  }
-diff --git a/third_party/libwebrtc/modules/audio_processing/transient/transient_suppressor_impl.cc b/third_party/libwebrtc/modules/audio_processing/transient/transient_suppressor_impl.cc
---- a/third_party/libwebrtc/modules/audio_processing/transient/transient_suppressor_impl.cc
-+++ b/third_party/libwebrtc/modules/audio_processing/transient/transient_suppressor_impl.cc
-@@ -48,16 +48,17 @@ std::string GetVadModeLabel(TransientSup
-   switch (vad_mode) {
-     case TransientSuppressor::VadMode::kDefault:
-       return "default";
-     case TransientSuppressor::VadMode::kRnnVad:
-       return "RNN VAD";
-     case TransientSuppressor::VadMode::kNoVad:
-       return "no VAD";
-   }
-+  RTC_CHECK_NOTREACHED();
- }
- 
- }  // namespace
- 
- TransientSuppressorImpl::TransientSuppressorImpl(VadMode vad_mode,
-                                                  int sample_rate_hz,
-                                                  int detector_rate_hz,
-                                                  int num_channels)
 diff --git a/third_party/libwebrtc/modules/congestion_controller/goog_cc/goog_cc_network_control.cc b/third_party/libwebrtc/modules/congestion_controller/goog_cc/goog_cc_network_control.cc
 --- a/third_party/libwebrtc/modules/congestion_controller/goog_cc/goog_cc_network_control.cc
 +++ b/third_party/libwebrtc/modules/congestion_controller/goog_cc/goog_cc_network_control.cc
-@@ -82,16 +82,18 @@ BandwidthLimitedCause GetBandwidthLimite
+@@ -81,16 +81,18 @@ BandwidthLimitedCause GetBandwidthLimite
        // Probes may not be sent in this state.
        return BandwidthLimitedCause::kLossLimitedBwe;
      case LossBasedState::kIncreasing:
@@ -804,8 +742,8 @@ diff --git a/third_party/libwebrtc/modules/congestion_controller/goog_cc/goog_cc
  
  GoogCcNetworkController::GoogCcNetworkController(NetworkControllerConfig config,
                                                   GoogCcConfig goog_cc_config)
-     : key_value_config_(config.key_value_config ? config.key_value_config
-                                                 : &trial_based_config_),
+     : env_(config.env),
+       packet_feedback_only_(goog_cc_config.feedback_only),
 diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_portal.cc b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_portal.cc
 --- a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_portal.cc
 +++ b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_portal.cc
@@ -830,7 +768,7 @@ diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screenc
 diff --git a/third_party/libwebrtc/modules/pacing/bitrate_prober.cc b/third_party/libwebrtc/modules/pacing/bitrate_prober.cc
 --- a/third_party/libwebrtc/modules/pacing/bitrate_prober.cc
 +++ b/third_party/libwebrtc/modules/pacing/bitrate_prober.cc
-@@ -79,16 +79,17 @@ bool BitrateProber::ReadyToSetActiveStat
+@@ -86,16 +86,17 @@ bool BitrateProber::ReadyToSetActiveStat
          return true;
        }
        // If config_.min_packet_size > 0, a "large enough" packet must be
@@ -867,7 +805,7 @@ diff --git a/third_party/libwebrtc/modules/rtp_rtcp/source/create_video_rtp_depa
 diff --git a/third_party/libwebrtc/modules/rtp_rtcp/source/rtcp_packet/congestion_control_feedback.cc b/third_party/libwebrtc/modules/rtp_rtcp/source/rtcp_packet/congestion_control_feedback.cc
 --- a/third_party/libwebrtc/modules/rtp_rtcp/source/rtcp_packet/congestion_control_feedback.cc
 +++ b/third_party/libwebrtc/modules/rtp_rtcp/source/rtcp_packet/congestion_control_feedback.cc
-@@ -105,16 +105,17 @@ uint16_t To2BitEcn(rtc::EcnMarking ecn_m
+@@ -108,16 +108,17 @@ uint16_t To2BitEcn(rtc::EcnMarking ecn_m
        return 0;
      case rtc::EcnMarking::kEct1:
        return kEcnEct1 << 13;
@@ -888,7 +826,7 @@ diff --git a/third_party/libwebrtc/modules/rtp_rtcp/source/rtcp_packet/congestio
 diff --git a/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_sender.cc b/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_sender.cc
 --- a/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_sender.cc
 +++ b/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_sender.cc
-@@ -133,16 +133,17 @@ bool IsNonVolatile(RTPExtensionType type
+@@ -145,16 +145,17 @@ bool IsNonVolatile(RTPExtensionType type
  #if defined(WEBRTC_MOZILLA_BUILD)
      case kRtpExtensionCsrcAudioLevel:
        // TODO: Mozilla implement for CsrcAudioLevel
@@ -951,7 +889,7 @@ diff --git a/third_party/libwebrtc/modules/video_coding/codecs/vp8/temporal_laye
 diff --git a/third_party/libwebrtc/modules/video_coding/h26x_packet_buffer.cc b/third_party/libwebrtc/modules/video_coding/h26x_packet_buffer.cc
 --- a/third_party/libwebrtc/modules/video_coding/h26x_packet_buffer.cc
 +++ b/third_party/libwebrtc/modules/video_coding/h26x_packet_buffer.cc
-@@ -66,16 +66,17 @@ bool BeginningOfIdr(const H26xPacketBuff
+@@ -58,16 +58,17 @@ bool BeginningOfIdr(const H26xPacketBuff
      case kH264StapA:
      case kH264SingleNalu: {
        return contains_idr_nalu;
@@ -965,10 +903,166 @@ diff --git a/third_party/libwebrtc/modules/video_coding/h26x_packet_buffer.cc b/
  
  bool HasSps(const H26xPacketBuffer::Packet& packet) {
    auto& h264_header =
-       absl::get<RTPVideoHeaderH264>(packet.video_header.video_type_header);
-   return absl::c_any_of(GetNaluInfos(h264_header), [](const auto& nalu_info) {
+       std::get<RTPVideoHeaderH264>(packet.video_header.video_type_header);
+   return absl::c_any_of(h264_header.nalus, [](const auto& nalu_info) {
      return nalu_info.type == H264::NaluType::kSps;
    });
+diff --git a/third_party/libwebrtc/net/dcsctp/packet/parameter/reconfiguration_response_parameter.cc b/third_party/libwebrtc/net/dcsctp/packet/parameter/reconfiguration_response_parameter.cc
+--- a/third_party/libwebrtc/net/dcsctp/packet/parameter/reconfiguration_response_parameter.cc
++++ b/third_party/libwebrtc/net/dcsctp/packet/parameter/reconfiguration_response_parameter.cc
+@@ -57,16 +57,17 @@ absl::string_view ToString(Reconfigurati
+     case ReconfigurationResponseParameter::Result::
+         kErrorRequestAlreadyInProgress:
+       return "Error: request already in progress";
+     case ReconfigurationResponseParameter::Result::kErrorBadSequenceNumber:
+       return "Error: bad sequence number";
+     case ReconfigurationResponseParameter::Result::kInProgress:
+       return "In progress";
+   }
++  return "Should never be reached";
+ }
+ 
+ std::optional<ReconfigurationResponseParameter>
+ ReconfigurationResponseParameter::Parse(rtc::ArrayView<const uint8_t> data) {
+   std::optional<BoundedByteReader<kHeaderSize>> reader = ParseTLV(data);
+   if (!reader.has_value()) {
+     return std::nullopt;
+   }
+diff --git a/third_party/libwebrtc/net/dcsctp/public/dcsctp_handover_state.cc b/third_party/libwebrtc/net/dcsctp/public/dcsctp_handover_state.cc
+--- a/third_party/libwebrtc/net/dcsctp/public/dcsctp_handover_state.cc
++++ b/third_party/libwebrtc/net/dcsctp/public/dcsctp_handover_state.cc
+@@ -38,16 +38,17 @@ constexpr absl::string_view HandoverUnre
+       return "RETRANSMISSION_QUEUE_FAST_RECOVERY";
+     case HandoverUnreadinessReason::kRetransmissionQueueNotEmpty:
+       return "RETRANSMISSION_QUEUE_NOT_EMPTY";
+     case HandoverUnreadinessReason::kPendingStreamReset:
+       return "PENDING_STREAM_RESET";
+     case HandoverUnreadinessReason::kPendingStreamResetRequest:
+       return "PENDING_STREAM_RESET_REQUEST";
+   }
++  return "NOTREACHED";
+ }
+ }  // namespace
+ 
+ std::string HandoverReadinessStatus::ToString() const {
+   std::string result;
+   for (uint32_t bit = 1;
+        bit <= static_cast<uint32_t>(HandoverUnreadinessReason::kMax);
+        bit *= 2) {
+diff --git a/third_party/libwebrtc/net/dcsctp/rx/data_tracker.cc b/third_party/libwebrtc/net/dcsctp/rx/data_tracker.cc
+--- a/third_party/libwebrtc/net/dcsctp/rx/data_tracker.cc
++++ b/third_party/libwebrtc/net/dcsctp/rx/data_tracker.cc
+@@ -354,16 +354,17 @@ absl::string_view DataTracker::ToString(
+       return "IDLE";
+     case AckState::kBecomingDelayed:
+       return "BECOMING_DELAYED";
+     case AckState::kDelayed:
+       return "DELAYED";
+     case AckState::kImmediate:
+       return "IMMEDIATE";
+   }
++  return "NOTREACHED";
+ }
+ 
+ HandoverReadinessStatus DataTracker::GetHandoverReadiness() const {
+   HandoverReadinessStatus status;
+   if (!additional_tsn_blocks_.empty()) {
+     status.Add(HandoverUnreadinessReason::kDataTrackerTsnBlocksPending);
+   }
+   return status;
+diff --git a/third_party/libwebrtc/net/dcsctp/socket/dcsctp_socket.cc b/third_party/libwebrtc/net/dcsctp/socket/dcsctp_socket.cc
+--- a/third_party/libwebrtc/net/dcsctp/socket/dcsctp_socket.cc
++++ b/third_party/libwebrtc/net/dcsctp/socket/dcsctp_socket.cc
+@@ -249,16 +249,17 @@ bool DcSctpSocket::IsConsistent() const 
+               !t1_cookie_->is_running() && t2_shutdown_->is_running());
+     case State::kShutdownReceived:
+       return (tcb_ != nullptr && !t1_init_->is_running() &&
+               !t1_cookie_->is_running() && !t2_shutdown_->is_running());
+     case State::kShutdownAckSent:
+       return (tcb_ != nullptr && !t1_init_->is_running() &&
+               !t1_cookie_->is_running() && t2_shutdown_->is_running());
+   }
++  return false; // notreached
+ }
+ 
+ constexpr absl::string_view DcSctpSocket::ToString(DcSctpSocket::State state) {
+   switch (state) {
+     case DcSctpSocket::State::kClosed:
+       return "CLOSED";
+     case DcSctpSocket::State::kCookieWait:
+       return "COOKIE_WAIT";
+@@ -270,16 +271,17 @@ constexpr absl::string_view DcSctpSocket
+       return "SHUTDOWN_PENDING";
+     case DcSctpSocket::State::kShutdownSent:
+       return "SHUTDOWN_SENT";
+     case DcSctpSocket::State::kShutdownReceived:
+       return "SHUTDOWN_RECEIVED";
+     case DcSctpSocket::State::kShutdownAckSent:
+       return "SHUTDOWN_ACK_SENT";
+   }
++  return "NOTREACHED";
+ }
+ 
+ void DcSctpSocket::SetState(State state, absl::string_view reason) {
+   if (state_ != state) {
+     RTC_DLOG(LS_VERBOSE) << log_prefix_ << "Socket state changed from "
+                          << ToString(state_) << " to " << ToString(state)
+                          << " due to " << reason;
+     state_ = state;
+@@ -588,16 +590,17 @@ SocketState DcSctpSocket::state() const 
+     case State::kEstablished:
+       return SocketState::kConnected;
+     case State::kShutdownPending:
+     case State::kShutdownSent:
+     case State::kShutdownReceived:
+     case State::kShutdownAckSent:
+       return SocketState::kShuttingDown;
+   }
++  return SocketState::kShuttingDown; // notreached
+ }
+ 
+ void DcSctpSocket::SetMaxMessageSize(size_t max_message_size) {
+   options_.max_message_size = max_message_size;
+ }
+ 
+ size_t DcSctpSocket::buffered_amount(StreamID stream_id) const {
+   return send_queue_.buffered_amount(stream_id);
+diff --git a/third_party/libwebrtc/net/dcsctp/socket/packet_sender.cc b/third_party/libwebrtc/net/dcsctp/socket/packet_sender.cc
+--- a/third_party/libwebrtc/net/dcsctp/socket/packet_sender.cc
++++ b/third_party/libwebrtc/net/dcsctp/socket/packet_sender.cc
+@@ -39,10 +39,11 @@ bool PacketSender::Send(SctpPacket::Buil
+       return false;
+     }
+ 
+     case SendPacketStatus::kError: {
+       // Nothing that can be done.
+       return false;
+     }
+   }
++  return false; // not reached
+ }
+ }  // namespace dcsctp
+diff --git a/third_party/libwebrtc/net/dcsctp/timer/timer.cc b/third_party/libwebrtc/net/dcsctp/timer/timer.cc
+--- a/third_party/libwebrtc/net/dcsctp/timer/timer.cc
++++ b/third_party/libwebrtc/net/dcsctp/timer/timer.cc
+@@ -44,16 +44,17 @@ TimeDelta GetBackoffDuration(const Timer
+         if (duration > options.max_backoff_duration) {
+           return options.max_backoff_duration;
+         }
+       }
+ 
+       return TimeDelta(std::min(duration, Timer::kMaxTimerDuration));
+     }
+   }
++  return base_duration; // fake nonreached
+ }
+ }  // namespace
+ 
+ constexpr TimeDelta Timer::kMaxTimerDuration;
+ 
+ Timer::Timer(TimerID id,
+              absl::string_view name,
+              OnExpired on_expired,
 diff --git a/third_party/libwebrtc/video/adaptation/video_stream_encoder_resource_manager.cc b/third_party/libwebrtc/video/adaptation/video_stream_encoder_resource_manager.cc
 --- a/third_party/libwebrtc/video/adaptation/video_stream_encoder_resource_manager.cc
 +++ b/third_party/libwebrtc/video/adaptation/video_stream_encoder_resource_manager.cc
@@ -990,3 +1084,24 @@ diff --git a/third_party/libwebrtc/video/adaptation/video_stream_encoder_resourc
      flags.resize(codec.VP9().numberOfSpatialLayers);
      for (size_t i = 0; i < flags.size(); ++i) {
        flags[i] = codec.spatialLayers[i].active;
+diff --git a/third_party/libwebrtc/video/config/encoder_stream_factory.cc b/third_party/libwebrtc/video/config/encoder_stream_factory.cc
+--- a/third_party/libwebrtc/video/config/encoder_stream_factory.cc
++++ b/third_party/libwebrtc/video/config/encoder_stream_factory.cc
+@@ -105,16 +105,17 @@ int GetDefaultMaxQp(VideoCodecType codec
+       return cricket::kDefaultVideoMaxQpH26x;
+     case webrtc::kVideoCodecVP8:
+     case webrtc::kVideoCodecVP9:
+     case webrtc::kVideoCodecGeneric:
+       return cricket::kDefaultVideoMaxQpVpx;
+     case webrtc::kVideoCodecAV1:
+       return cricket::kDefaultVideoMaxQpAv1;
+   }
++  return cricket::kDefaultVideoMaxQpAv1; // fake return for hopefully not reached
+ }
+ 
+ // Round size to nearest simulcast-friendly size.
+ // Simulcast stream width and height must both be dividable by
+ // |2 ^ (simulcast_layers - 1)|.
+ int NormalizeSimulcastSize(const FieldTrialsView& field_trials,
+                            int size,
+                            size_t simulcast_layers) {
openSUSE Build Service is sponsored by