diff --git a/MozillaFirefox.changes b/MozillaFirefox.changes index 8fbc392..6dfad61 100644 --- a/MozillaFirefox.changes +++ b/MozillaFirefox.changes @@ -1,3 +1,48 @@ +------------------------------------------------------------------- +Thu Aug 8 06:06:13 UTC 2024 - Wolfgang Rosenauer + +- Mozilla Firefox 129.0 + https://www.mozilla.org/en-US/firefox/129.0/releasenotes + MFSA 2024-33 (bsc#1228648)) + * CVE-2024-7518 (bmo#1875354) + Fullscreen notification dialog can be obscured by document content + * CVE-2024-7519 (bmo#1902307) + Out of bounds memory access in graphics shared memory handling + * CVE-2024-7520 (bmo#1903041) + Type confusion in WebAssembly + * CVE-2024-7521 (bmo#1904644) + Incomplete WebAssembly exception handing + * CVE-2024-7522 (bmo#1906727) + Out of bounds read in editor component + * CVE-2024-7523 (bmo#1908344) + Document content could partially obscure security prompts + * CVE-2024-7524 (bmo#1909241) + CSP strict-dynamic bypass using web-compatibility shims + * CVE-2024-7525 (bmo#1909298) + Missing permission check when creating a StreamFilter + * CVE-2024-7526 (bmo#1910306) + Uninitialized memory used by WebGL + * CVE-2024-7527 (bmo#1871303) + Use-after-free in JavaScript garbage collection + * CVE-2024-7528 (bmo#1895951) + Use-after-free in IndexedDB + * CVE-2024-7529 (bmo#1903187) + Document content could partially obscure security prompts + * CVE-2024-7530 (bmo#1904011) + Use-after-free in JavaScript code coverage collection + * CVE-2024-7531 (bmo#1905691) + PK11_Encrypt using CKM_CHACHA20 can reveal plaintext on Intel + Sandy Bridge machines +- removed obsolete patches + mozilla-bmo1905018.patch + mozilla-bmo1504834-part3.patch + mozilla-bmo1512162.patch + mozilla-bmo1822730.patch + mozilla-fix-aarch64-libopus.patch + mozilla-partial-revert-1768632.patch +- requires NSS 3.102.1 +- extended mozilla-silence-no-return-type.patch + ------------------------------------------------------------------ Sun Jul 28 18:08:39 UTC 2024 - Manfred Hollstein diff --git a/MozillaFirefox.spec b/MozillaFirefox.spec index bdc67ea..295efbc 100644 --- a/MozillaFirefox.spec +++ b/MozillaFirefox.spec @@ -28,9 +28,9 @@ # orig_suffix b3 # major 69 # mainver %%major.99 -%define major 128 -%define mainver %major.0.3 -%define orig_version 128.0.3 +%define major 129 +%define mainver %major.0 +%define orig_version 129.0 %define orig_suffix %{nil} %define update_channel release %define branding 1 @@ -114,7 +114,7 @@ BuildRequires: libiw-devel BuildRequires: libproxy-devel BuildRequires: makeinfo BuildRequires: mozilla-nspr-devel >= 4.35 -BuildRequires: mozilla-nss-devel >= 3.101.1 +BuildRequires: mozilla-nss-devel >= 3.102.1 BuildRequires: nasm >= 2.14 BuildRequires: nodejs >= 12.22.12 %if 0%{?sle_version} >= 120000 && 0%{?sle_version} < 150000 @@ -211,13 +211,10 @@ Patch1: mozilla-nongnome-proxies.patch Patch2: mozilla-kde.patch Patch3: mozilla-ntlm-full-path.patch Patch4: mozilla-aarch64-startup-crash.patch -Patch5: mozilla-fix-aarch64-libopus.patch Patch6: mozilla-s390-context.patch Patch7: mozilla-pgo.patch Patch8: mozilla-reduce-rust-debuginfo.patch Patch10: mozilla-bmo1504834-part1.patch -Patch11: mozilla-bmo1504834-part3.patch -Patch12: mozilla-bmo1512162.patch Patch14: mozilla-bmo849632.patch Patch15: mozilla-bmo998749.patch Patch17: mozilla-libavcodec58_91.patch @@ -225,12 +222,9 @@ Patch18: mozilla-silence-no-return-type.patch Patch19: mozilla-bmo531915.patch Patch20: one_swizzle_to_rule_them_all.patch Patch21: svg-rendering.patch -Patch22: mozilla-partial-revert-1768632.patch Patch23: mozilla-rust-disable-future-incompat.patch -Patch24: mozilla-bmo1822730.patch Patch25: mozilla-bmo1898476.patch Patch26: mozilla-bmo1907511.patch -Patch27: mozilla-bmo1905018.patch # Firefox/browser Patch101: firefox-kde.patch Patch102: firefox-branded-icons.patch diff --git a/firefox-128.0.3.source.tar.xz b/firefox-128.0.3.source.tar.xz deleted file mode 100644 index a556814..0000000 --- a/firefox-128.0.3.source.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:326454cd5c93ce974d5d27d414e9d59206bc248cca303a2069ae0f713faededc -size 563698520 diff --git a/firefox-128.0.3.source.tar.xz.asc b/firefox-128.0.3.source.tar.xz.asc deleted file mode 100644 index 7f891c0..0000000 --- a/firefox-128.0.3.source.tar.xz.asc +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCgAdFiEErdcHlHlwDcrf3VM34207E/PZMnQFAmaiuIMACgkQ4207E/PZ -MnRxNg/+KtjlFDuHpbInmkxgBgSo2fUSWsY83wcqZmcWAmBYwFzKz1V4NeDl0dmQ -6663KvZCx1hjhmGPsTACDLyiLTr+9HTgxE3pCcAp0iN0Pqxlppv4mTHsBHUBIVRd -6SJoQxAvNQWIfcLrb+UJ/lpT/X/Ez7LMh5M8QWKKszxbMD6O/kvKrmsAfPRmowxl -juGgOS3WRu7nuL+8CxjtlWzSNrfrcaoNe2j+O/JxcNI6/fyNOLHiLmkDf3j4+XfU -QiK0pMUAbJzY5o8ea5ScId+wjT9ONF81lJLTaVVx126EO15LAlUS0RyOwClW+Zc7 -eWGu+b8YYhvIGQBLmcV6mXqZ6kk9yrjCjpevIY3IGkKcdf54IH/t6/7GTTT0I69v -R1p+uW2x+VlXNcBvLOtwS/I155T0mgoYQ7BNJCu74H+BdeqLNEN/OG2+d+duqovR -BlSrcdXKs6GILpAfEv1gtAZzzvBaCybP6uaHP2lheKjIx4h8+5Y1gh1zRHnq87vt -7U5Ze2HUbR1wiwx6oQq6BI2/7b1z+CLBI0kUuH8E3jpSkPyvz4/dhYYG7+6mRhOT -ZlM3o0fNCGChrdTrRQAI96+yU+MCsRfAd8AmgqCjA/BeF5cSLYmVf1e5q/7cQPv7 -3KvDfBkuS68HAbj6Me0s4hm2iNKTKB/CvI8k2xq1uhJfanIKbmU= -=RI8S ------END PGP SIGNATURE----- diff --git a/firefox-129.0.source.tar.xz b/firefox-129.0.source.tar.xz new file mode 100644 index 0000000..3d93ba3 --- /dev/null +++ b/firefox-129.0.source.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b9ff955de7099f09aa1f00985e34695fa1a911e56c2d46cb4d60c3bff3d9174 +size 568302640 diff --git a/firefox-129.0.source.tar.xz.asc b/firefox-129.0.source.tar.xz.asc new file mode 100644 index 0000000..b420dcd --- /dev/null +++ b/firefox-129.0.source.tar.xz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEErdcHlHlwDcrf3VM34207E/PZMnQFAmarx8kACgkQ4207E/PZ +MnT1pA/+K26+19PBGPWnbeHx5c1ORX5s7SY/MqhZfdLIY8+Cd61fVA8W14SC1B80 +b1BJ4/HWYGEH7X072e5P9i9Va7XfOI///hkCgy/cYFB7OOPwFCNCWEnU5lj6BV8r +9URI02jeAT/LvS/ciRYML6/3qQ5PvCHeubAWg7o4+g4Snxpy3sosNnGvEo6/c9eS +c/0Sa9bJC8TSO9B9DIcRyczkq3bPwj3zeEiuXXBhJvAvU7axmpLc6J6LCQ/jjDkU +PodWc9CPAlMJQW3kcmZaaAL1k/z0dowgu8dPRrGY23nRk3uhBP4Bhc9lTVl3picZ +XbzoT/3WFEus7bA/7/uXKgTq3ITxbyl6wHcFChu4ZcW7o+W4cKn/pe4eoqa8KxT3 +eP7iNszdFG2lZxdqLDmB8J0H5DF6yhhp6bKe1U2Poit83p8J+yAw67/ogilxj3ug +tgvXr/GQheiUnp7Seh5tW+iTpeeesODtD0U0x7QWrGbjWRqJspNP8GynlkBd9p03 +6SzsuXdrc2quN2l9AIxxWbMzPWnClmZkCaUdXzymrnfj+Bu1KPHXE9pt0qGuHtep +233SuXfD6kXnX+vVL8T5S8k96mLctIz2IcmPDvzOujZLXft/pI0ZiGwsikjMqRrS +nQxSsWYN/r+5DrXuUSTOmcS4SXGTW3ijWtpr873jIhFmeACLSUg= +=Y8VP +-----END PGP SIGNATURE----- diff --git a/firefox-branded-icons.patch b/firefox-branded-icons.patch index ddefcc6..31f916c 100644 --- a/firefox-branded-icons.patch +++ b/firefox-branded-icons.patch @@ -1,6 +1,6 @@ # HG changeset patch # Parent e0751ad74e835e80041a61ea00c2a63bf6fbe2de -# Parent ebf6598a9309200fcea0cedb08e39161b82a73f9 +# Parent ad547c5985d362e88a47ccbba0cc5fa07bd24e8b diff --git a/browser/branding/branding-common.mozbuild b/browser/branding/branding-common.mozbuild --- a/browser/branding/branding-common.mozbuild @@ -24,11 +24,11 @@ diff --git a/browser/branding/branding-common.mozbuild b/browser/branding/brandi diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in -@@ -216,20 +216,23 @@ +@@ -208,20 +208,23 @@ + ; [Browser Chrome Files] + @RESPATH@/browser/chrome.manifest @RESPATH@/browser/chrome/browser@JAREXT@ @RESPATH@/browser/chrome/browser.manifest - @RESPATH@/chrome/pdfjs.manifest - @RESPATH@/chrome/pdfjs/* @RESPATH@/chrome/toolkit@JAREXT@ @RESPATH@/chrome/toolkit.manifest #ifdef MOZ_GTK diff --git a/l10n-128.0.3.tar.xz b/l10n-128.0.3.tar.xz deleted file mode 100644 index 3d83f6b..0000000 --- a/l10n-128.0.3.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:15433a1a7fa0d8890878423ac75f101225b0ee291c4e424671afc8ff91f634b5 -size 32692840 diff --git a/l10n-129.0.tar.xz b/l10n-129.0.tar.xz new file mode 100644 index 0000000..4ae741c --- /dev/null +++ b/l10n-129.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eeaffb7ee1447376e76ea12095541e6ec4e8d6148207c260da4da947b56d3ef6 +size 34484384 diff --git a/mozilla-bmo1504834-part3.patch b/mozilla-bmo1504834-part3.patch deleted file mode 100644 index 18e9106..0000000 --- a/mozilla-bmo1504834-part3.patch +++ /dev/null @@ -1,17 +0,0 @@ -# HG changeset patch -# Parent 09cd4ac2cc607e85aa572425b824fbab386af607 -For FF68, AntiAliasing of XULTexts seem to be broken on big endian (s390x). Text and icons of the sandwich-menu to the -right of the address bar, as well as plugin-windows appears transparant, which usually means unreadable (white on white). - -diff --git a/gfx/skia/skia/src/opts/SkBlitMask_opts.h b/gfx/skia/skia/src/opts/SkBlitMask_opts.h ---- a/gfx/skia/skia/src/opts/SkBlitMask_opts.h -+++ b/gfx/skia/skia/src/opts/SkBlitMask_opts.h -@@ -210,6 +210,8 @@ namespace SK_OPTS_NS { - // ~~~> - // a = 1*aa + d(1-1*aa) = aa + d(1-aa) - // c = 0*aa + d(1-1*aa) = d(1-aa) -+ // TODO: Check this for endian-issues! -+ // Do we need to switch 255 to the front for all of those tuples? - return (aa & Sk4px(skvx::byte16{0,0,0,255, 0,0,0,255, 0,0,0,255, 0,0,0,255})) - + d.approxMulDiv255(aa.inv()); - }; diff --git a/mozilla-bmo1512162.patch b/mozilla-bmo1512162.patch deleted file mode 100644 index 3ca46d4..0000000 --- a/mozilla-bmo1512162.patch +++ /dev/null @@ -1,35 +0,0 @@ -# HG changeset patch -# Parent f9f5af4c88f2f3172a4f30d7e42bd2131bf24146 -This fixes a broken build for gcc < 9 on ppc64le. -This patch can be removed for newer gcc-versions. - -Index: firefox-115.0/js/xpconnect/src/XPCWrappedNative.cpp -=================================================================== ---- firefox-115.0.orig/js/xpconnect/src/XPCWrappedNative.cpp -+++ firefox-115.0/js/xpconnect/src/XPCWrappedNative.cpp -@@ -1061,7 +1061,11 @@ class MOZ_STACK_CLASS CallMethodHelper f - MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex, - MutableHandleValue srcp) const; - -- MOZ_ALWAYS_INLINE bool GatherAndConvertResults(); -+#if !(__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN) -+// Work around a compiler bug on ppc64le (bug 1512162). -+ MOZ_ALWAYS_INLINE -+#endif -+ bool GatherAndConvertResults(); - - MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath(); - -@@ -1108,7 +1112,11 @@ class MOZ_STACK_CLASS CallMethodHelper f - - ~CallMethodHelper(); - -- MOZ_ALWAYS_INLINE bool Call(); -+#if !(__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN) -+// Work around a compiler bug on ppc64le (bug 1512162). -+ MOZ_ALWAYS_INLINE -+#endif -+ bool Call(); - - // Trace implementation so we can put our CallMethodHelper in a Rooted. - void trace(JSTracer* aTrc); diff --git a/mozilla-bmo1822730.patch b/mozilla-bmo1822730.patch deleted file mode 100644 index 2728965..0000000 --- a/mozilla-bmo1822730.patch +++ /dev/null @@ -1,63 +0,0 @@ -# HG changeset patch -# User Rob Krum -# Date 1695432215 25200 -# Fri Sep 22 18:23:35 2023 -0700 -# Node ID e6a8a9f0956d124e8de34eb4bcf09d8e17077d9d -# Parent 5dbbabbfaca21d2c5994f95ed095313284611c44 -Bug 1822730 - Add basic blob protocol handling for blob URIs that contain parsable http/s protocols - -diff --git a/toolkit/mozapps/downloads/DownloadLastDir.sys.mjs b/toolkit/mozapps/downloads/DownloadLastDir.sys.mjs ---- a/toolkit/mozapps/downloads/DownloadLastDir.sys.mjs -+++ b/toolkit/mozapps/downloads/DownloadLastDir.sys.mjs -@@ -216,38 +216,49 @@ export class DownloadLastDir { - Services.prefs.setComplexValue(LAST_DIR_PREF, nsIFile, aFile); - } else if (Services.prefs.prefHasUserValue(LAST_DIR_PREF)) { - Services.prefs.clearUserPref(LAST_DIR_PREF); - } - } - - /** - * Pre-processor to extract a domain name to be used with the content-prefs -- * service. This specially handles data and file URIs so that the download -- * dirs are recalled in a more consistent way: -+ * service. This specially handles data, file and blob URIs so that the -+ * download dirs are recalled in a more consistent way: - * - all file:/// URIs share the same folder - * - data: URIs share a folder per mime-type. If a mime-type is not - * specified text/plain is assumed. - * - blob: URIs share the same folder as their origin. This is done by - * ContentPrefs already, so we just let the url fall-through. - * In any other case the original URL is returned as a string and ContentPrefs - * will do its usual parsing. - * - * @param {string|nsIURI|URL} url The URL to parse - * @returns {string} the domain name to use, or the original url. - */ - #cpsGroupFromURL(url) { - if (typeof url == "string") { -+ if (url.startsWith("blob:http://") || url.startsWith("blob:https://")) { -+ url = url.replace("blob:", ""); -+ } - url = new URL(url); - } else if (url instanceof Ci.nsIURI) { - url = URL.fromURI(url); - } - if (!URL.isInstance(url)) { - return url; - } -+ if (url.protocol == "blob:") { -+ if ( -+ url.href.startsWith("blob:http://") || -+ url.href.startsWith("blob:https://") -+ ) { -+ return url.href.replace("blob:", ""); -+ } -+ } - if (url.protocol == "data:") { - return url.href.match(/^data:[^;,]*/i)[0].replace(/:$/, ":text/plain"); - } - if (url.protocol == "file:") { - return "file:///"; - } - return url.href; - } diff --git a/mozilla-bmo1905018.patch b/mozilla-bmo1905018.patch deleted file mode 100644 index 9932e72..0000000 --- a/mozilla-bmo1905018.patch +++ /dev/null @@ -1,33 +0,0 @@ - -# HG changeset patch -# User Paul Adenot -# Date 1721290421 0 -# Node ID 3781e311770684d79c1c8112d18abce258e29e7f -# Parent fd4c60ac71c20d0cac519b517f32fc4956e0cfe3 -Bug 1905018 - Fix logctx type in dovi_rpu stub. r=media-playback-reviewers,alwu - -Differential Revision: https://phabricator.services.mozilla.com/D216832 - -diff --git a/media/ffvpx/libavcodec/dovi_rpu.h b/media/ffvpx/libavcodec/dovi_rpu.h ---- a/media/ffvpx/libavcodec/dovi_rpu.h -+++ b/media/ffvpx/libavcodec/dovi_rpu.h -@@ -5,17 +5,17 @@ - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - - /* Stubs for dovi_rpu.{c,h} */ - - typedef struct AVCtx AVContext; - - typedef struct DOVICtx { - int dv_profile; -- AVContext* logctx; -+ void* logctx; - int operating_point; - } DOVIContext; - - typedef struct AVDOVICConfRecord { - } AVDOVIDecoderConfigurationRecord; - - static void ff_dovi_ctx_unref(DOVIContext* ctx) {} - static void ff_dovi_update_cfg(DOVIContext* ctx, - diff --git a/mozilla-fix-aarch64-libopus.patch b/mozilla-fix-aarch64-libopus.patch deleted file mode 100644 index ded3d2c..0000000 --- a/mozilla-fix-aarch64-libopus.patch +++ /dev/null @@ -1,15 +0,0 @@ -# HG changeset patch -# Parent af2c24874d79cbebb444727ae96f2fefa3f22b47 - -diff --git a/media/libopus/silk/arm/arm_silk_map.c b/media/libopus/silk/arm/arm_silk_map.c ---- a/media/libopus/silk/arm/arm_silk_map.c -+++ b/media/libopus/silk/arm/arm_silk_map.c -@@ -28,7 +28,7 @@ POSSIBILITY OF SUCH DAMAGE. - # include "config.h" - #endif - --#include "main_FIX.h" -+#include "../fixed/main_FIX.h" - #include "NSQ.h" - #include "SigProc_FIX.h" - diff --git a/mozilla-kde.patch b/mozilla-kde.patch index b5b9b92..45b040e 100644 --- a/mozilla-kde.patch +++ b/mozilla-kde.patch @@ -71,7 +71,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build --- a/modules/libpref/moz.build +++ b/modules/libpref/moz.build -@@ -121,16 +121,20 @@ EXPORTS.mozilla += [ +@@ -122,16 +122,20 @@ EXPORTS.mozilla += [ ] EXPORTS.mozilla += sorted(["!" + g for g in gen_h]) @@ -1303,7 +1303,7 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp GtkFileChooserAction action = GetGtkFileChooserAction(mMode); const gchar* accept_button; -@@ -707,16 +734,215 @@ void nsFilePicker::Done(void* file_choos +@@ -697,16 +724,215 @@ void nsFilePicker::Done(void* file_choos mCallback->Done(result); mCallback = nullptr; } else { @@ -1522,7 +1522,7 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h --- a/widget/gtk/nsFilePicker.h +++ b/widget/gtk/nsFilePicker.h -@@ -71,16 +71,22 @@ class nsFilePicker : public nsBaseFilePi +@@ -70,16 +70,22 @@ class nsFilePicker : public nsBaseFilePi nsString mDefaultExtension; nsTArray mFilters; @@ -1699,7 +1699,7 @@ diff --git a/xpcom/components/moz.build b/xpcom/components/moz.build diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp --- a/xpcom/io/nsLocalFileUnix.cpp +++ b/xpcom/io/nsLocalFileUnix.cpp -@@ -46,16 +46,17 @@ +@@ -47,16 +47,17 @@ #include "nsString.h" #include "nsIDirectoryEnumerator.h" #include "nsSimpleEnumerator.h" @@ -1709,15 +1709,15 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp #ifdef MOZ_WIDGET_GTK # include "nsIGIOService.h" +# include "nsKDEUtils.h" + # ifdef MOZ_ENABLE_DBUS + # include "mozilla/widget/AsyncDBus.h" + # include "mozilla/WidgetUtilsGtk.h" + # include + # endif #endif #ifdef MOZ_WIDGET_COCOA - # include - # include "CocoaFileUtils.h" - # include "prmem.h" - # include "plbase64.h" - -@@ -2205,20 +2206,28 @@ nsLocalFile::SetPersistentDescriptor(con +@@ -2366,20 +2367,28 @@ nsLocalFile::SetPersistentDescriptor(con NS_IMETHODIMP nsLocalFile::Reveal() { @@ -1748,7 +1748,7 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp ::CFRelease(url); return rv; } -@@ -2230,16 +2239,23 @@ nsLocalFile::Reveal() { +@@ -2391,16 +2400,23 @@ nsLocalFile::Reveal() { NS_IMETHODIMP nsLocalFile::Launch() { diff --git a/mozilla-partial-revert-1768632.patch b/mozilla-partial-revert-1768632.patch deleted file mode 100644 index c4e63d5..0000000 --- a/mozilla-partial-revert-1768632.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: firefox-102.4.0/mfbt/EnumSet.h -=================================================================== ---- firefox-102.4.0.orig/mfbt/EnumSet.h -+++ firefox-102.4.0/mfbt/EnumSet.h -@@ -326,7 +326,7 @@ class EnumSet { - } - } - -- static constexpr size_t kMaxBits = MaxBits(); -+ static constexpr size_t kMaxBits = EnumSet().MaxBits(); - - Serialized mBitField; - diff --git a/mozilla-silence-no-return-type.patch b/mozilla-silence-no-return-type.patch index 6bbf5d1..4ccf627 100644 --- a/mozilla-silence-no-return-type.patch +++ b/mozilla-silence-no-return-type.patch @@ -1,11 +1,15 @@ # HG changeset patch -# Parent af0655f894a27ef60aa8438af7939a5ebc498df0 +# Parent ed4bafa3b0d1f1da83e0a81545a0144602530a80 -Index: firefox-128.0/gfx/skia/skia/include/codec/SkEncodedOrigin.h -=================================================================== ---- firefox-128.0.orig/gfx/skia/skia/include/codec/SkEncodedOrigin.h -+++ firefox-128.0/gfx/skia/skia/include/codec/SkEncodedOrigin.h -@@ -41,6 +41,7 @@ static inline SkMatrix SkEncodedOriginTo +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 ++++ b/gfx/skia/skia/include/codec/SkEncodedOrigin.h +@@ -36,16 +36,17 @@ static inline SkMatrix SkEncodedOriginTo + case kBottomRight_SkEncodedOrigin: return SkMatrix::MakeAll(-1, 0, w, 0, -1, h, 0, 0, 1); + case kBottomLeft_SkEncodedOrigin: return SkMatrix::MakeAll( 1, 0, 0, 0, -1, h, 0, 0, 1); + case kLeftTop_SkEncodedOrigin: return SkMatrix::MakeAll( 0, 1, 0, 1, 0, 0, 0, 0, 1); + case kRightTop_SkEncodedOrigin: return SkMatrix::MakeAll( 0, -1, w, 1, 0, 0, 0, 0, 1); + case kRightBottom_SkEncodedOrigin: return SkMatrix::MakeAll( 0, -1, w, -1, 0, h, 0, 0, 1); case kLeftBottom_SkEncodedOrigin: return SkMatrix::MakeAll( 0, 1, 0, -1, 0, h, 0, 0, 1); } SK_ABORT("Unexpected origin"); @@ -13,11 +17,20 @@ Index: firefox-128.0/gfx/skia/skia/include/codec/SkEncodedOrigin.h } /** -Index: firefox-128.0/gfx/skia/skia/include/private/gpu/ganesh/GrTypesPriv.h -=================================================================== ---- firefox-128.0.orig/gfx/skia/skia/include/private/gpu/ganesh/GrTypesPriv.h -+++ firefox-128.0/gfx/skia/skia/include/private/gpu/ganesh/GrTypesPriv.h -@@ -301,6 +301,7 @@ static inline bool GrTextureTypeHasRestr + * Return true if the encoded origin includes a 90 degree rotation, in which case the width + * and height of the source data are swapped relative to a correctly oriented destination. + */ + static inline bool SkEncodedOriginSwapsWidthHeight(SkEncodedOrigin origin) { + return origin >= kLeftTop_SkEncodedOrigin; +diff --git a/gfx/skia/skia/include/private/gpu/ganesh/GrTypesPriv.h b/gfx/skia/skia/include/private/gpu/ganesh/GrTypesPriv.h +--- a/gfx/skia/skia/include/private/gpu/ganesh/GrTypesPriv.h ++++ b/gfx/skia/skia/include/private/gpu/ganesh/GrTypesPriv.h +@@ -296,16 +296,17 @@ static inline bool GrTextureTypeHasRestr + return false; + case GrTextureType::kRectangle: + return true; + case GrTextureType::kExternal: + return true; default: SK_ABORT("Unexpected texture type"); } @@ -25,11 +38,20 @@ Index: firefox-128.0/gfx/skia/skia/include/private/gpu/ganesh/GrTypesPriv.h } ////////////////////////////////////////////////////////////////////////////// -Index: firefox-128.0/gfx/skia/skia/src/core/SkDescriptor.cpp -=================================================================== ---- firefox-128.0.orig/gfx/skia/skia/src/core/SkDescriptor.cpp -+++ firefox-128.0/gfx/skia/skia/src/core/SkDescriptor.cpp -@@ -26,6 +26,7 @@ std::unique_ptr SkDescript + + /** + * Types used to describe format of vertices in arrays. + */ + enum GrVertexAttribType { +diff --git a/gfx/skia/skia/src/core/SkDescriptor.cpp b/gfx/skia/skia/src/core/SkDescriptor.cpp +--- a/gfx/skia/skia/src/core/SkDescriptor.cpp ++++ b/gfx/skia/skia/src/core/SkDescriptor.cpp +@@ -21,16 +21,17 @@ std::unique_ptr SkDescript + SkASSERT(length >= sizeof(SkDescriptor) && SkAlign4(length) == length); + void* allocation = ::operator new(length); + return std::unique_ptr(new (allocation) SkDescriptor{}); + } + void SkDescriptor::operator delete(void* p) { ::operator delete(p); } void* SkDescriptor::operator new(size_t) { SK_ABORT("Descriptors are created with placement new."); @@ -37,11 +59,20 @@ Index: firefox-128.0/gfx/skia/skia/src/core/SkDescriptor.cpp } void SkDescriptor::flatten(SkWriteBuffer& buffer) const { -Index: firefox-128.0/gfx/skia/skia/src/core/SkGeometry.h -=================================================================== ---- firefox-128.0.orig/gfx/skia/skia/src/core/SkGeometry.h -+++ firefox-128.0/gfx/skia/skia/src/core/SkGeometry.h -@@ -281,6 +281,7 @@ static inline bool SkCubicIsDegenerate(S + buffer.writePad32(static_cast(this), this->fLength); + } + + void* SkDescriptor::addEntry(uint32_t tag, size_t length, const void* data) { + SkASSERT(tag); +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 + case SkCubicType::kLocalCusp: + case SkCubicType::kCuspAtInfinity: + return false; + case SkCubicType::kQuadratic: + case SkCubicType::kLineOrPoint: return true; } SK_ABORT("Invalid SkCubicType"); @@ -49,7 +80,12 @@ Index: firefox-128.0/gfx/skia/skia/src/core/SkGeometry.h } static inline const char* SkCubicTypeName(SkCubicType type) { -@@ -293,6 +294,7 @@ static inline const char* SkCubicTypeNam + switch (type) { + case SkCubicType::kSerpentine: return "kSerpentine"; + case SkCubicType::kLoop: return "kLoop"; + case SkCubicType::kLocalCusp: return "kLocalCusp"; + case SkCubicType::kCuspAtInfinity: return "kCuspAtInfinity"; + case SkCubicType::kQuadratic: return "kQuadratic"; case SkCubicType::kLineOrPoint: return "kLineOrPoint"; } SK_ABORT("Invalid SkCubicType"); @@ -57,11 +93,20 @@ Index: firefox-128.0/gfx/skia/skia/src/core/SkGeometry.h } /** Returns the cubic classification. -Index: firefox-128.0/gfx/skia/skia/src/core/SkTextBlob.cpp -=================================================================== ---- firefox-128.0.orig/gfx/skia/skia/src/core/SkTextBlob.cpp -+++ firefox-128.0/gfx/skia/skia/src/core/SkTextBlob.cpp -@@ -213,6 +213,7 @@ void SkTextBlob::operator delete(void* p + + t[],s[] are set to the two homogeneous parameter values at which points the lines L & M + intersect with K, sorted from smallest to largest and oriented so positive values of the + implicit are on the "left" side. For a serpentine curve they are the inflection points. For a + loop they are the double point. For a local cusp, they are both equal and denote the cusp point. +diff --git a/gfx/skia/skia/src/core/SkTextBlob.cpp b/gfx/skia/skia/src/core/SkTextBlob.cpp +--- a/gfx/skia/skia/src/core/SkTextBlob.cpp ++++ b/gfx/skia/skia/src/core/SkTextBlob.cpp +@@ -208,16 +208,17 @@ unsigned SkTextBlob::ScalarsPerGlyph(Gly + } + + void SkTextBlob::operator delete(void* p) { + sk_free(p); + } void* SkTextBlob::operator new(size_t) { SK_ABORT("All blobs are created by placement new."); @@ -69,11 +114,20 @@ Index: firefox-128.0/gfx/skia/skia/src/core/SkTextBlob.cpp } void* SkTextBlob::operator new(size_t, void* p) { -Index: firefox-128.0/gfx/skia/skia/src/core/SkTypeface_remote.h -=================================================================== ---- firefox-128.0.orig/gfx/skia/skia/src/core/SkTypeface_remote.h -+++ firefox-128.0/gfx/skia/skia/src/core/SkTypeface_remote.h -@@ -108,12 +108,14 @@ public: + return p; + } + + SkTextBlobRunIterator::SkTextBlobRunIterator(const SkTextBlob* blob) + : fCurrentRun(SkTextBlob::RunRecord::First(blob)) { +diff --git a/gfx/skia/skia/src/core/SkTypeface_remote.h b/gfx/skia/skia/src/core/SkTypeface_remote.h +--- a/gfx/skia/skia/src/core/SkTypeface_remote.h ++++ b/gfx/skia/skia/src/core/SkTypeface_remote.h +@@ -103,83 +103,97 @@ public: + + SkTypefaceID remoteTypefaceID() const {return fTypefaceID;} + + int glyphCount() const {return fGlyphCount;} + bool isLogging() const {return fIsLogging;} protected: @@ -89,7 +143,7 @@ Index: firefox-128.0/gfx/skia/skia/src/core/SkTypeface_remote.h } bool onGlyphMaskNeedsCurrentColor() const override { return fGlyphMaskNeedsCurrentColor; -@@ -121,10 +123,12 @@ protected: + } int onGetVariationDesignPosition(SkFontArguments::VariationPosition::Coordinate coordinates[], int coordinateCount) const override { SK_ABORT("Should never be called."); @@ -102,7 +156,7 @@ Index: firefox-128.0/gfx/skia/skia/src/core/SkTypeface_remote.h } void onGetFamilyName(SkString* familyName) const override { // Used by SkStrikeCache::DumpMemoryStatistics. -@@ -132,15 +136,19 @@ protected: + *familyName = ""; } bool onGetPostScriptName(SkString*) const override { SK_ABORT("Should never be called."); @@ -122,7 +176,13 @@ Index: firefox-128.0/gfx/skia/skia/src/core/SkTypeface_remote.h } std::unique_ptr onCreateScalerContext( const SkScalerContextEffects& effects, const SkDescriptor* desc) const override -@@ -154,20 +162,25 @@ protected: + { + return std::make_unique( + sk_ref_sp(const_cast(this)), effects, desc, fDiscardableManager); + } + void onFilterRec(SkScalerContextRec* rec) const override { + // The rec filtering is already applied by the server when generating + // the glyphs. } void onGetFontDescriptor(SkFontDescriptor*, bool*) const override { SK_ABORT("Should never be called."); @@ -148,7 +208,7 @@ Index: firefox-128.0/gfx/skia/skia/src/core/SkTypeface_remote.h } int onCountGlyphs() const override { return this->glyphCount(); -@@ -175,6 +188,7 @@ protected: + } void* onGetCTFontRef() const override { SK_ABORT("Should never be called."); @@ -156,11 +216,20 @@ Index: firefox-128.0/gfx/skia/skia/src/core/SkTypeface_remote.h } private: -Index: firefox-128.0/gfx/skia/skia/src/effects/imagefilters/SkBlurImageFilter.cpp -=================================================================== ---- firefox-128.0.orig/gfx/skia/skia/src/effects/imagefilters/SkBlurImageFilter.cpp -+++ firefox-128.0/gfx/skia/skia/src/effects/imagefilters/SkBlurImageFilter.cpp -@@ -799,6 +799,7 @@ sk_sp cpu_blur(const ski + const SkTypefaceID fTypefaceID; + const int fGlyphCount; + const bool fIsLogging; + const bool fGlyphMaskNeedsCurrentColor; + sk_sp 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 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."); @@ -168,11 +237,20 @@ Index: firefox-128.0/gfx/skia/skia/src/effects/imagefilters/SkBlurImageFilter.cp }; PassMaker* makerX = makeMaker(sigma.width()); -Index: firefox-128.0/gfx/skia/skia/src/fonts/SkFontMgr_indirect.cpp -=================================================================== ---- firefox-128.0.orig/gfx/skia/skia/src/fonts/SkFontMgr_indirect.cpp -+++ firefox-128.0/gfx/skia/skia/src/fonts/SkFontMgr_indirect.cpp -@@ -69,6 +69,7 @@ void SkFontMgr_Indirect::onGetFamilyName + 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 SkFontMgr_Indirect::onCreateStyleSet(int index) const { SK_ABORT("Not implemented"); @@ -180,11 +258,20 @@ Index: firefox-128.0/gfx/skia/skia/src/fonts/SkFontMgr_indirect.cpp } sk_sp SkFontMgr_Indirect::onMatchFamily(const char familyName[]) const { -Index: firefox-128.0/gfx/skia/skia/src/sksl/SkSLOperator.cpp -=================================================================== ---- firefox-128.0.orig/gfx/skia/skia/src/sksl/SkSLOperator.cpp -+++ firefox-128.0/gfx/skia/skia/src/sksl/SkSLOperator.cpp -@@ -51,7 +51,7 @@ OperatorPrecedence Operator::getBinaryPr + return sk_sp(new SkStyleSet_Indirect(this, -1, fProxy->matchName(familyName))); + } + + sk_sp 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 +@@ -46,17 +46,17 @@ OperatorPrecedence Operator::getBinaryPr + case Kind::SLASHEQ: // fall through + case Kind::PERCENTEQ: // fall through + case Kind::SHLEQ: // fall through + case Kind::SHREQ: // fall through + case Kind::BITWISEANDEQ: // fall through case Kind::BITWISEXOREQ: // fall through case Kind::BITWISEOREQ: return OperatorPrecedence::kAssignment; case Kind::COMMA: return OperatorPrecedence::kSequence; @@ -193,11 +280,20 @@ Index: firefox-128.0/gfx/skia/skia/src/sksl/SkSLOperator.cpp } } -Index: firefox-128.0/gfx/skia/skia/src/sksl/ir/SkSLType.h -=================================================================== ---- firefox-128.0.orig/gfx/skia/skia/src/sksl/ir/SkSLType.h -+++ firefox-128.0/gfx/skia/skia/src/sksl/ir/SkSLType.h -@@ -468,6 +468,7 @@ public: + const char* Operator::operatorName() const { + switch (this->kind()) { + case Kind::PLUS: return " + "; + case Kind::MINUS: return " - "; + case Kind::STAR: return " * "; +diff --git a/gfx/skia/skia/src/sksl/ir/SkSLType.h b/gfx/skia/skia/src/sksl/ir/SkSLType.h +--- a/gfx/skia/skia/src/sksl/ir/SkSLType.h ++++ b/gfx/skia/skia/src/sksl/ir/SkSLType.h +@@ -463,16 +463,17 @@ public: + * always match `componentType()`. + */ + virtual const Type& slotType(size_t) const { + return *this; + } virtual SkSpan fields() const { SK_ABORT("Internal error: not a struct"); @@ -205,11 +301,20 @@ Index: firefox-128.0/gfx/skia/skia/src/sksl/ir/SkSLType.h } /** -Index: firefox-128.0/gfx/skia/skia/src/utils/SkShadowUtils.cpp -=================================================================== ---- firefox-128.0.orig/gfx/skia/skia/src/utils/SkShadowUtils.cpp -+++ firefox-128.0/gfx/skia/skia/src/utils/SkShadowUtils.cpp -@@ -140,6 +140,7 @@ struct SpotVerticesFactory { + * For generic types, returns the types that this generic type can substitute for. + */ + virtual SkSpan coercibleTypes() const { + SkDEBUGFAIL("Internal error: not a generic type"); + return {}; +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 { + } + return false; + case OccluderType::kDirectional: + case OccluderType::kDirectionalTransparent: + *translate = that.fOffset - fOffset; return true; } SK_ABORT("Uninitialized occluder type?"); @@ -217,11 +322,20 @@ Index: firefox-128.0/gfx/skia/skia/src/utils/SkShadowUtils.cpp } sk_sp makeVertices(const SkPath& path, const SkMatrix& ctm, -Index: firefox-128.0/intl/icu/source/i18n/number_rounding.cpp -=================================================================== ---- firefox-128.0.orig/intl/icu/source/i18n/number_rounding.cpp -+++ firefox-128.0/intl/icu/source/i18n/number_rounding.cpp -@@ -287,6 +287,7 @@ FractionPrecision Precision::constructFr + SkVector* translate) const { + bool transparent = fOccluderType == OccluderType::kPointTransparent || + fOccluderType == OccluderType::kDirectionalTransparent; + bool directional = fOccluderType == OccluderType::kDirectional || + fOccluderType == OccluderType::kDirectionalTransparent; +diff --git a/intl/icu/source/i18n/number_rounding.cpp b/intl/icu/source/i18n/number_rounding.cpp +--- a/intl/icu/source/i18n/number_rounding.cpp ++++ b/intl/icu/source/i18n/number_rounding.cpp +@@ -282,27 +282,29 @@ Precision IncrementPrecision::withMinFra + } + + FractionPrecision Precision::constructFraction(int32_t minFrac, int32_t maxFrac) { + FractionSignificantSettings settings; + settings.fMinFrac = static_cast(minFrac); settings.fMaxFrac = static_cast(maxFrac); settings.fMinSig = -1; settings.fMaxSig = -1; @@ -229,7 +343,11 @@ Index: firefox-128.0/intl/icu/source/i18n/number_rounding.cpp PrecisionUnion union_; union_.fracSig = settings; return {RND_FRACTION, union_}; -@@ -298,6 +299,7 @@ Precision Precision::constructSignifican + } + + Precision Precision::constructSignificant(int32_t minSig, int32_t maxSig) { + FractionSignificantSettings settings; + settings.fMinFrac = -1; settings.fMaxFrac = -1; settings.fMinSig = static_cast(minSig); settings.fMaxSig = static_cast(maxSig); @@ -237,11 +355,20 @@ Index: firefox-128.0/intl/icu/source/i18n/number_rounding.cpp PrecisionUnion union_; union_.fracSig = settings; return {RND_SIGNIFICANT, union_}; -Index: firefox-128.0/js/src/irregexp/imported/regexp-parser.cc -=================================================================== ---- firefox-128.0.orig/js/src/irregexp/imported/regexp-parser.cc -+++ firefox-128.0/js/src/irregexp/imported/regexp-parser.cc -@@ -2781,6 +2781,7 @@ bool MayContainStrings(ClassSetOperandTy + } + + Precision + Precision::constructFractionSignificant( + const FractionPrecision &base, +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 + return false; + case ClassSetOperandType::kCharacterClassEscape: + case ClassSetOperandType::kClassStringDisjunction: + return operand->AsClassSetOperand()->has_strings(); + case ClassSetOperandType::kNestedClass: if (operand->IsClassRanges()) return false; return operand->AsClassSetExpression()->may_contain_strings(); } @@ -249,11 +376,20 @@ Index: firefox-128.0/js/src/irregexp/imported/regexp-parser.cc } } // namespace -Index: firefox-128.0/third_party/libwebrtc/api/adaptation/resource.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/api/adaptation/resource.cc -+++ firefox-128.0/third_party/libwebrtc/api/adaptation/resource.cc -@@ -22,6 +22,7 @@ const char* ResourceUsageStateToString(R + + template + void RegExpParserImpl::AddMaybeSimpleCaseFoldedRange( + ZoneList* ranges, CharacterRange new_range) { + DCHECK(unicode_sets()); +diff --git a/third_party/libwebrtc/api/adaptation/resource.cc b/third_party/libwebrtc/api/adaptation/resource.cc +--- a/third_party/libwebrtc/api/adaptation/resource.cc ++++ b/third_party/libwebrtc/api/adaptation/resource.cc +@@ -17,16 +17,17 @@ namespace webrtc { + const char* ResourceUsageStateToString(ResourceUsageState usage_state) { + switch (usage_state) { + case ResourceUsageState::kOveruse: + return "kOveruse"; + case ResourceUsageState::kUnderuse: return "kUnderuse"; } RTC_CHECK_NOTREACHED(); @@ -261,11 +397,20 @@ Index: firefox-128.0/third_party/libwebrtc/api/adaptation/resource.cc } ResourceListener::~ResourceListener() {} -Index: firefox-128.0/third_party/libwebrtc/api/rtp_parameters.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/api/rtp_parameters.cc -+++ firefox-128.0/third_party/libwebrtc/api/rtp_parameters.cc -@@ -33,6 +33,7 @@ const char* DegradationPreferenceToStrin + + Resource::Resource() {} + + Resource::~Resource() {} + +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 + case DegradationPreference::MAINTAIN_FRAMERATE: + return "maintain-framerate"; + case DegradationPreference::MAINTAIN_RESOLUTION: + return "maintain-resolution"; + case DegradationPreference::BALANCED: return "balanced"; } RTC_CHECK_NOTREACHED(); @@ -273,11 +418,20 @@ Index: firefox-128.0/third_party/libwebrtc/api/rtp_parameters.cc } const double kDefaultBitratePriority = 1.0; -Index: firefox-128.0/third_party/libwebrtc/api/video/video_frame_buffer.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/api/video/video_frame_buffer.cc -+++ firefox-128.0/third_party/libwebrtc/api/video/video_frame_buffer.cc -@@ -106,6 +106,8 @@ const char* VideoFrameBufferTypeToString + + RtcpFeedback::RtcpFeedback() = default; + RtcpFeedback::RtcpFeedback(RtcpFeedbackType type) : type(type) {} + RtcpFeedback::RtcpFeedback(RtcpFeedbackType type, + RtcpFeedbackMessageType message_type) +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 +@@ -101,16 +101,18 @@ const char* VideoFrameBufferTypeToString + return "kI210"; + case VideoFrameBuffer::Type::kI410: + return "kI410"; + case VideoFrameBuffer::Type::kNV12: + return "kNV12"; default: RTC_DCHECK_NOTREACHED(); } @@ -286,11 +440,20 @@ Index: firefox-128.0/third_party/libwebrtc/api/video/video_frame_buffer.cc } int I420BufferInterface::ChromaWidth() const { -Index: firefox-128.0/third_party/libwebrtc/api/video_codecs/video_codec.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/api/video_codecs/video_codec.cc -+++ firefox-128.0/third_party/libwebrtc/api/video_codecs/video_codec.cc -@@ -162,6 +162,7 @@ const char* CodecTypeToPayloadString(Vid + return (width() + 1) / 2; + } + + int I420BufferInterface::ChromaHeight() const { + return (height() + 1) / 2; +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 + case kVideoCodecH264: + return kPayloadNameH264; + case kVideoCodecGeneric: + return kPayloadNameGeneric; + case kVideoCodecH265: return kPayloadNameH265; } RTC_CHECK_NOTREACHED(); @@ -298,11 +461,20 @@ Index: firefox-128.0/third_party/libwebrtc/api/video_codecs/video_codec.cc } VideoCodecType PayloadStringToCodecType(const std::string& name) { -Index: firefox-128.0/third_party/libwebrtc/api/video_codecs/video_encoder_software_fallback_wrapper.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/api/video_codecs/video_encoder_software_fallback_wrapper.cc -+++ firefox-128.0/third_party/libwebrtc/api/video_codecs/video_encoder_software_fallback_wrapper.cc -@@ -189,6 +189,7 @@ class VideoEncoderSoftwareFallbackWrappe + if (absl::EqualsIgnoreCase(name, kPayloadNameVp8)) + return kVideoCodecVP8; + if (absl::EqualsIgnoreCase(name, kPayloadNameVp9)) + return kVideoCodecVP9; + if (absl::EqualsIgnoreCase(name, kPayloadNameAv1) || +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 +@@ -187,16 +187,17 @@ class VideoEncoderSoftwareFallbackWrappe + [[fallthrough]]; + case EncoderState::kMainEncoderUsed: + return encoder_.get(); + case EncoderState::kFallbackDueToFailure: + case EncoderState::kForcedFallback: return fallback_encoder_.get(); } RTC_CHECK_NOTREACHED(); @@ -310,7 +482,17 @@ Index: firefox-128.0/third_party/libwebrtc/api/video_codecs/video_encoder_softwa } // Updates encoder with last observed parameters, such as callbacks, rates, -@@ -382,6 +383,7 @@ int32_t VideoEncoderSoftwareFallbackWrap + // etc. + void PrimeEncoder(VideoEncoder* encoder) const; + + // Settings used in the last InitEncode call and used if a dynamic fallback to + // software is required. +@@ -382,16 +383,17 @@ int32_t VideoEncoderSoftwareFallbackWrap + case EncoderState::kMainEncoderUsed: { + return EncodeWithMainEncoder(frame, frame_types); + } + case EncoderState::kFallbackDueToFailure: + case EncoderState::kForcedFallback: return fallback_encoder_->Encode(frame, frame_types); } RTC_CHECK_NOTREACHED(); @@ -318,11 +500,20 @@ Index: firefox-128.0/third_party/libwebrtc/api/video_codecs/video_encoder_softwa } int32_t VideoEncoderSoftwareFallbackWrapper::EncodeWithMainEncoder( -Index: firefox-128.0/third_party/libwebrtc/call/adaptation/video_stream_adapter.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/call/adaptation/video_stream_adapter.cc -+++ firefox-128.0/third_party/libwebrtc/call/adaptation/video_stream_adapter.cc -@@ -169,6 +169,7 @@ const char* Adaptation::StatusToString(A + const VideoFrame& frame, + const std::vector* frame_types) { + int32_t ret = encoder_->Encode(frame, frame_types); + // If requested, try a software fallback. + bool fallback_requested = (ret == WEBRTC_VIDEO_CODEC_FALLBACK_SOFTWARE); +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 + case Status::kInsufficientInput: + return "kInsufficientInput"; + case Status::kAdaptationDisabled: + return "kAdaptationDisabled"; + case Status::kRejectedByConstraint: return "kRejectedByConstraint"; } RTC_CHECK_NOTREACHED(); @@ -330,7 +521,17 @@ Index: firefox-128.0/third_party/libwebrtc/call/adaptation/video_stream_adapter. } Adaptation::Adaptation(int validation_id, -@@ -391,6 +392,7 @@ VideoStreamAdapter::RestrictionsOrState + VideoSourceRestrictions restrictions, + VideoAdaptationCounters counters, + VideoStreamInputState input_state) + : validation_id_(validation_id), + status_(Status::kValid), +@@ -386,16 +387,17 @@ VideoStreamAdapter::RestrictionsOrState + case DegradationPreference::MAINTAIN_RESOLUTION: { + // Scale up framerate. + return IncreaseFramerate(input_state, current_restrictions_); + } + case DegradationPreference::DISABLED: return Adaptation::Status::kAdaptationDisabled; } RTC_CHECK_NOTREACHED(); @@ -338,7 +539,17 @@ Index: firefox-128.0/third_party/libwebrtc/call/adaptation/video_stream_adapter. } Adaptation VideoStreamAdapter::GetAdaptationDown() { -@@ -473,6 +475,7 @@ VideoStreamAdapter::GetAdaptationDownSte + RTC_DCHECK_RUN_ON(&sequence_checker_); + VideoStreamInputState input_state = input_state_provider_->InputState(); + ++adaptation_validation_id_; + RestrictionsOrState restrictions_or_state = + GetAdaptationDownStep(input_state, current_restrictions_); +@@ -468,16 +470,17 @@ VideoStreamAdapter::GetAdaptationDownSte + } + case DegradationPreference::MAINTAIN_RESOLUTION: { + return DecreaseFramerate(input_state, current_restrictions); + } + case DegradationPreference::DISABLED: return Adaptation::Status::kAdaptationDisabled; } RTC_CHECK_NOTREACHED(); @@ -346,7 +557,17 @@ Index: firefox-128.0/third_party/libwebrtc/call/adaptation/video_stream_adapter. } VideoStreamAdapter::RestrictionsOrState VideoStreamAdapter::DecreaseResolution( -@@ -626,6 +629,8 @@ Adaptation VideoStreamAdapter::GetAdaptD + const VideoStreamInputState& input_state, + const RestrictionsWithCounters& current_restrictions) { + 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 + case DegradationPreference::MAINTAIN_FRAMERATE: + return GetAdaptationDown(); + case DegradationPreference::BALANCED: { + return RestrictionsOrStateToAdaptation( + GetAdaptDownResolutionStepForBalanced(input_state), input_state); } } RTC_CHECK_NOTREACHED(); @@ -355,11 +576,20 @@ Index: firefox-128.0/third_party/libwebrtc/call/adaptation/video_stream_adapter. } VideoStreamAdapter::RestrictionsOrState -Index: firefox-128.0/third_party/libwebrtc/call/rtp_payload_params.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/call/rtp_payload_params.cc -+++ firefox-128.0/third_party/libwebrtc/call/rtp_payload_params.cc -@@ -406,7 +406,7 @@ absl::optional + VideoStreamAdapter::GetAdaptDownResolutionStepForBalanced( + 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(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 + } + return structure; + } + case VideoCodecType::kVideoCodecAV1: + case VideoCodecType::kVideoCodecH264: case VideoCodecType::kVideoCodecH265: return absl::nullopt; } @@ -367,12 +597,21 @@ Index: firefox-128.0/third_party/libwebrtc/call/rtp_payload_params.cc + RTC_CHECK_NOTREACHED(); } - void RtpPayloadParams::GenericToGeneric(int64_t shared_frame_id, -Index: firefox-128.0/third_party/libwebrtc/call/video_send_stream.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/call/video_send_stream.cc -+++ firefox-128.0/third_party/libwebrtc/call/video_send_stream.cc -@@ -30,6 +30,7 @@ const char* StreamTypeToString(VideoSend + void RtpPayloadParams::GenericToGeneric(int64_t frame_id, + bool is_keyframe, + RTPVideoHeader* rtp_video_header) { + RTPVideoHeader::GenericDescriptorInfo& generic = + rtp_video_header->generic.emplace(); + +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 + case VideoSendStream::StreamStats::StreamType::kMedia: + return "media"; + case VideoSendStream::StreamStats::StreamType::kRtx: + return "rtx"; + case VideoSendStream::StreamStats::StreamType::kFlexfec: return "flexfec"; } RTC_CHECK_NOTREACHED(); @@ -380,11 +619,20 @@ Index: firefox-128.0/third_party/libwebrtc/call/video_send_stream.cc } } // namespace -Index: firefox-128.0/third_party/libwebrtc/media/base/codec.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/media/base/codec.cc -+++ firefox-128.0/third_party/libwebrtc/media/base/codec.cc -@@ -262,6 +262,7 @@ bool Codec::Matches(const Codec& codec) + + VideoSendStream::StreamStats::StreamStats() = default; + 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); } @@ -392,11 +640,20 @@ Index: firefox-128.0/third_party/libwebrtc/media/base/codec.cc }; return matches_id && matches_type_specific(); -Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/agc2/clipping_predictor.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/modules/audio_processing/agc2/clipping_predictor.cc -+++ firefox-128.0/third_party/libwebrtc/modules/audio_processing/agc2/clipping_predictor.cc -@@ -378,7 +378,7 @@ std::unique_ptr Creat + } + + bool Codec::MatchesRtpCodec(const webrtc::RtpCodec& codec_capability) const { + webrtc::RtpCodecParameters codec_parameters = ToCodecParameters(); + +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 +@@ -373,12 +373,12 @@ std::unique_ptr Creat + config.reference_window_delay, config.clipping_threshold, + /*adaptive_step_estimation=*/true); + case ClippingPredictorMode::kFixedStepClippingPeakPrediction: + return std::make_unique( + num_channels, config.window_length, config.reference_window_length, config.reference_window_delay, config.clipping_threshold, /*adaptive_step_estimation=*/false); } @@ -405,11 +662,15 @@ Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/agc2/clippin } } // namespace webrtc -Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/agc2/input_volume_stats_reporter.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/modules/audio_processing/agc2/input_volume_stats_reporter.cc -+++ firefox-128.0/third_party/libwebrtc/modules/audio_processing/agc2/input_volume_stats_reporter.cc -@@ -48,6 +48,7 @@ constexpr absl::string_view MetricNamePr +diff --git a/third_party/libwebrtc/modules/audio_processing/agc2/input_volume_stats_reporter.cc b/third_party/libwebrtc/modules/audio_processing/agc2/input_volume_stats_reporter.cc +--- a/third_party/libwebrtc/modules/audio_processing/agc2/input_volume_stats_reporter.cc ++++ b/third_party/libwebrtc/modules/audio_processing/agc2/input_volume_stats_reporter.cc +@@ -43,16 +43,17 @@ int ComputeAverageUpdate(int sum_updates + constexpr absl::string_view MetricNamePrefix( + InputVolumeType input_volume_type) { + switch (input_volume_type) { + case InputVolumeType::kApplied: + return "WebRTC.Audio.Apm.AppliedInputVolume."; case InputVolumeType::kRecommended: return "WebRTC.Audio.Apm.RecommendedInputVolume."; } @@ -417,11 +678,20 @@ Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/agc2/input_v } metrics::Histogram* CreateVolumeHistogram(InputVolumeType input_volume_type) { -Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/agc2/rnn_vad/rnn_fc.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/modules/audio_processing/agc2/rnn_vad/rnn_fc.cc -+++ firefox-128.0/third_party/libwebrtc/modules/audio_processing/agc2/rnn_vad/rnn_fc.cc -@@ -60,6 +60,8 @@ rtc::FunctionView GetActiv + char buffer[64]; + rtc::SimpleStringBuilder builder(buffer); + builder << MetricNamePrefix(input_volume_type) << "OnChange"; + return metrics::HistogramFactoryGetCountsLinear(/*name=*/builder.str(), + /*min=*/1, +diff --git 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 +--- 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 PreprocessWeights(rtc + rtc::FunctionView GetActivationFunction( + ActivationFunction activation_function) { + switch (activation_function) { + case ActivationFunction::kTansigApproximated: + return ::rnnoise::TansigApproximated; case ActivationFunction::kSigmoidApproximated: return ::rnnoise::SigmoidApproximated; } @@ -430,11 +700,20 @@ Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/agc2/rnn_vad } } // namespace -Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/audio_processing_impl.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/modules/audio_processing/audio_processing_impl.cc -+++ firefox-128.0/third_party/libwebrtc/modules/audio_processing/audio_processing_impl.cc -@@ -101,6 +101,7 @@ GainControl::Mode Agc1ConfigModeToInterf + + FullyConnectedLayer::FullyConnectedLayer( + const int input_size, + const int output_size, + const rtc::ArrayView bias, +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 + case Agc1Config::kAdaptiveAnalog: + return GainControl::kAdaptiveAnalog; + case Agc1Config::kAdaptiveDigital: + return GainControl::kAdaptiveDigital; + case Agc1Config::kFixedDigital: return GainControl::kFixedDigital; } RTC_CHECK_NOTREACHED(); @@ -442,7 +721,17 @@ Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/audio_proces } bool MinimizeProcessingForUnusedOutput() { -@@ -168,7 +169,7 @@ int AudioFormatValidityToErrorCode(Audio + return !field_trial::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 + case AudioFormatValidity::kValidAndSupported: + return AudioProcessing::kNoError; + case AudioFormatValidity::kValidButUnsupportedSampleRate: // fall-through + case AudioFormatValidity::kInvalidSampleRate: + return AudioProcessing::kBadSampleRateError; case AudioFormatValidity::kInvalidChannelCount: return AudioProcessing::kBadNumberChannelsError; } @@ -451,7 +740,17 @@ Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/audio_proces } // Returns an AudioProcessing::Error together with the best possible option for -@@ -2425,6 +2426,7 @@ void AudioProcessingImpl::InitializeNois + // output audio content. + std::pair ChooseErrorOutputOption( + const StreamConfig& input_config, + const StreamConfig& output_config) { + AudioFormatValidity input_validity = ValidateAudioFormat(input_config); +@@ -2420,16 +2421,17 @@ void AudioProcessingImpl::InitializeNois + case NoiseSuppresionConfig::kModerate: + return NsConfig::SuppressionLevel::k12dB; + case NoiseSuppresionConfig::kHigh: + return NsConfig::SuppressionLevel::k18dB; + case NoiseSuppresionConfig::kVeryHigh: return NsConfig::SuppressionLevel::k21dB; } RTC_CHECK_NOTREACHED(); @@ -459,11 +758,20 @@ Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/audio_proces }; NsConfig cfg; -Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/include/audio_processing.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/modules/audio_processing/include/audio_processing.cc -+++ firefox-128.0/third_party/libwebrtc/modules/audio_processing/include/audio_processing.cc -@@ -32,6 +32,7 @@ std::string NoiseSuppressionLevelToStrin + cfg.target_level = map_level(config_.noise_suppression.level); + submodules_.noise_suppressor = std::make_unique( + cfg, proc_sample_rate_hz(), num_proc_channels()); + } + } +diff --git a/third_party/libwebrtc/modules/audio_processing/include/audio_processing.cc b/third_party/libwebrtc/modules/audio_processing/include/audio_processing.cc +--- a/third_party/libwebrtc/modules/audio_processing/include/audio_processing.cc ++++ b/third_party/libwebrtc/modules/audio_processing/include/audio_processing.cc +@@ -27,28 +27,30 @@ std::string NoiseSuppressionLevelToStrin + case AudioProcessing::Config::NoiseSuppression::Level::kModerate: + return "Moderate"; + case AudioProcessing::Config::NoiseSuppression::Level::kHigh: + return "High"; + case AudioProcessing::Config::NoiseSuppression::Level::kVeryHigh: return "VeryHigh"; } RTC_CHECK_NOTREACHED(); @@ -471,7 +779,12 @@ Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/include/audi } std::string GainController1ModeToString(const Agc1Config::Mode& mode) { -@@ -44,6 +45,7 @@ std::string GainController1ModeToString( + switch (mode) { + case Agc1Config::Mode::kAdaptiveAnalog: + return "AdaptiveAnalog"; + case Agc1Config::Mode::kAdaptiveDigital: + return "AdaptiveDigital"; + case Agc1Config::Mode::kFixedDigital: return "FixedDigital"; } RTC_CHECK_NOTREACHED(); @@ -479,11 +792,20 @@ Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/include/audi } } // namespace -Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/transient/transient_suppressor_impl.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/modules/audio_processing/transient/transient_suppressor_impl.cc -+++ firefox-128.0/third_party/libwebrtc/modules/audio_processing/transient/transient_suppressor_impl.cc -@@ -53,6 +53,7 @@ std::string GetVadModeLabel(TransientSup + + constexpr int AudioProcessing::kNativeSampleRatesHz[]; + + void CustomProcessing::SetRuntimeSetting( + AudioProcessing::RuntimeSetting setting) {} +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"; } @@ -491,11 +813,20 @@ Index: firefox-128.0/third_party/libwebrtc/modules/audio_processing/transient/tr } } // namespace -Index: firefox-128.0/third_party/libwebrtc/modules/congestion_controller/goog_cc/goog_cc_network_control.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/modules/congestion_controller/goog_cc/goog_cc_network_control.cc -+++ firefox-128.0/third_party/libwebrtc/modules/congestion_controller/goog_cc/goog_cc_network_control.cc -@@ -95,6 +95,8 @@ BandwidthLimitedCause GetBandwidthLimite + + 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 +@@ -90,16 +90,18 @@ BandwidthLimitedCause GetBandwidthLimite + // Probes may not be sent in this state. + return BandwidthLimitedCause::kLossLimitedBwe; + case LossBasedState::kIncreasing: + // Probes may be sent in this state. + return BandwidthLimitedCause::kLossLimitedBweIncreasing; case LossBasedState::kDelayBasedEstimate: return BandwidthLimitedCause::kDelayBasedLimited; } @@ -504,11 +835,20 @@ Index: firefox-128.0/third_party/libwebrtc/modules/congestion_controller/goog_cc } } // namespace -Index: firefox-128.0/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_portal.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_portal.cc -+++ firefox-128.0/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_portal.cc -@@ -44,6 +44,7 @@ ScreenCastPortal::CaptureSourceType Scre + + GoogCcNetworkController::GoogCcNetworkController(NetworkControllerConfig config, + GoogCcConfig goog_cc_config) + : key_value_config_(config.key_value_config ? config.key_value_config + : &trial_based_config_), +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 +@@ -39,16 +39,17 @@ ScreenCastPortal::CaptureSourceType Scre + switch (type) { + case CaptureType::kScreen: + return ScreenCastPortal::CaptureSourceType::kScreen; + case CaptureType::kWindow: + return ScreenCastPortal::CaptureSourceType::kWindow; case CaptureType::kAnyScreenContent: return ScreenCastPortal::CaptureSourceType::kAnyScreenContent; } @@ -516,11 +856,20 @@ Index: firefox-128.0/third_party/libwebrtc/modules/desktop_capture/linux/wayland } ScreenCastPortal::ScreenCastPortal(CaptureType type, PortalNotifier* notifier) -Index: firefox-128.0/third_party/libwebrtc/modules/pacing/bitrate_prober.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/modules/pacing/bitrate_prober.cc -+++ firefox-128.0/third_party/libwebrtc/modules/pacing/bitrate_prober.cc -@@ -84,6 +84,7 @@ bool BitrateProber::ReadyToSetActiveStat + : ScreenCastPortal(type, + notifier, + OnProxyRequested, + OnSourcesRequestResponseSignal, + this) {} +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 + return true; + } + // If config_.min_packet_size > 0, a "large enough" packet must be + // sent first, before a probe can be generated and sent. Otherwise, + // send the probe asap. return packet_size >= std::min(RecommendedMinProbeSize(), config_.min_packet_size.Get()); } @@ -528,11 +877,20 @@ Index: firefox-128.0/third_party/libwebrtc/modules/pacing/bitrate_prober.cc } void BitrateProber::OnIncomingPacket(DataSize packet_size) { -Index: firefox-128.0/third_party/libwebrtc/modules/rtp_rtcp/source/create_video_rtp_depacketizer.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/modules/rtp_rtcp/source/create_video_rtp_depacketizer.cc -+++ firefox-128.0/third_party/libwebrtc/modules/rtp_rtcp/source/create_video_rtp_depacketizer.cc -@@ -46,6 +46,7 @@ std::unique_ptr Cr + MaybeSetActiveState(packet_size); + } + + void BitrateProber::CreateProbeCluster( + const ProbeClusterConfig& cluster_config) { +diff --git a/third_party/libwebrtc/modules/rtp_rtcp/source/create_video_rtp_depacketizer.cc b/third_party/libwebrtc/modules/rtp_rtcp/source/create_video_rtp_depacketizer.cc +--- a/third_party/libwebrtc/modules/rtp_rtcp/source/create_video_rtp_depacketizer.cc ++++ b/third_party/libwebrtc/modules/rtp_rtcp/source/create_video_rtp_depacketizer.cc +@@ -41,11 +41,12 @@ std::unique_ptr Cr + return std::make_unique(); + #else + return nullptr; + #endif + case kVideoCodecGeneric: return std::make_unique(); } RTC_CHECK_NOTREACHED(); @@ -540,11 +898,15 @@ Index: firefox-128.0/third_party/libwebrtc/modules/rtp_rtcp/source/create_video_ } } // namespace webrtc -Index: firefox-128.0/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_sender.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_sender.cc -+++ firefox-128.0/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_sender.cc -@@ -138,6 +138,7 @@ bool IsNonVolatile(RTPExtensionType type +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 + #if defined(WEBRTC_MOZILLA_BUILD) + case kRtpExtensionCsrcAudioLevel: + // TODO: Mozilla implement for CsrcAudioLevel + RTC_CHECK(false); + return false; #endif } RTC_CHECK_NOTREACHED(); @@ -552,11 +914,20 @@ Index: firefox-128.0/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_sender.cc } bool HasBweExtension(const RtpHeaderExtensionMap& extensions_map) { -Index: firefox-128.0/third_party/libwebrtc/modules/video_coding/codecs/vp8/default_temporal_layers.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/modules/video_coding/codecs/vp8/default_temporal_layers.cc -+++ firefox-128.0/third_party/libwebrtc/modules/video_coding/codecs/vp8/default_temporal_layers.cc -@@ -110,6 +110,7 @@ size_t BufferToIndex(Vp8BufferReference + return extensions_map.IsRegistered(kRtpExtensionTransportSequenceNumber) || + extensions_map.IsRegistered(kRtpExtensionTransportSequenceNumber02) || + extensions_map.IsRegistered(kRtpExtensionAbsoluteSendTime) || + extensions_map.IsRegistered(kRtpExtensionTransmissionTimeOffset); + } +diff --git a/third_party/libwebrtc/modules/video_coding/codecs/vp8/default_temporal_layers.cc b/third_party/libwebrtc/modules/video_coding/codecs/vp8/default_temporal_layers.cc +--- a/third_party/libwebrtc/modules/video_coding/codecs/vp8/default_temporal_layers.cc ++++ b/third_party/libwebrtc/modules/video_coding/codecs/vp8/default_temporal_layers.cc +@@ -105,16 +105,17 @@ size_t BufferToIndex(Vp8BufferReference + return 0; + case Vp8FrameConfig::Vp8BufferReference::kGolden: + return 1; + case Vp8FrameConfig::Vp8BufferReference::kAltref: + return 2; case Vp8FrameConfig::Vp8BufferReference::kNone: RTC_CHECK_NOTREACHED(); } @@ -564,11 +935,20 @@ Index: firefox-128.0/third_party/libwebrtc/modules/video_coding/codecs/vp8/defau } } // namespace -Index: firefox-128.0/third_party/libwebrtc/modules/video_coding/codecs/vp8/temporal_layers_checker.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/modules/video_coding/codecs/vp8/temporal_layers_checker.cc -+++ firefox-128.0/third_party/libwebrtc/modules/video_coding/codecs/vp8/temporal_layers_checker.cc -@@ -30,6 +30,7 @@ TemporalLayersChecker::CreateTemporalLay + + constexpr size_t DefaultTemporalLayers::kNumReferenceBuffers; + + std::vector + DefaultTemporalLayers::GetDependencyInfo(size_t num_layers) { +diff --git a/third_party/libwebrtc/modules/video_coding/codecs/vp8/temporal_layers_checker.cc b/third_party/libwebrtc/modules/video_coding/codecs/vp8/temporal_layers_checker.cc +--- a/third_party/libwebrtc/modules/video_coding/codecs/vp8/temporal_layers_checker.cc ++++ b/third_party/libwebrtc/modules/video_coding/codecs/vp8/temporal_layers_checker.cc +@@ -25,16 +25,17 @@ TemporalLayersChecker::CreateTemporalLay + case Vp8TemporalLayersType::kFixedPattern: + return std::make_unique( + num_temporal_layers); + case Vp8TemporalLayersType::kBitrateDynamic: + // Conference mode temporal layering for screen content in base stream. return std::make_unique(num_temporal_layers); } RTC_CHECK_NOTREACHED(); @@ -576,11 +956,41 @@ Index: firefox-128.0/third_party/libwebrtc/modules/video_coding/codecs/vp8/tempo } TemporalLayersChecker::TemporalLayersChecker(int num_temporal_layers) -Index: firefox-128.0/third_party/libwebrtc/video/adaptation/video_stream_encoder_resource_manager.cc -=================================================================== ---- firefox-128.0.orig/third_party/libwebrtc/video/adaptation/video_stream_encoder_resource_manager.cc -+++ firefox-128.0/third_party/libwebrtc/video/adaptation/video_stream_encoder_resource_manager.cc -@@ -64,6 +64,7 @@ std::string ToString(VideoAdaptationReas + : num_temporal_layers_(num_temporal_layers), + sequence_number_(0), + last_sync_sequence_number_(0), + last_tl0_sequence_number_(0) {} + +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 + case kH264StapA: + case kH264SingleNalu: { + return contains_idr_nalu; + } + case kH264FuA: { + return contains_idr_nalu && IsFirstPacketOfFragment(h264_header); + } + } ++ return false; + } + + bool HasSps(const H26xPacketBuffer::Packet& packet) { + auto& h264_header = + absl::get(packet.video_header.video_type_header); + return absl::c_any_of(GetNaluInfos(h264_header), [](const auto& nalu_info) { + return nalu_info.type == H264::NaluType::kSps; + }); +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 +@@ -59,16 +59,17 @@ bool IsFramerateScalingEnabled(Degradati + std::string ToString(VideoAdaptationReason reason) { + switch (reason) { + case VideoAdaptationReason::kQuality: + return "quality"; + case VideoAdaptationReason::kCpu: return "cpu"; } RTC_CHECK_NOTREACHED(); @@ -588,3 +998,8 @@ Index: firefox-128.0/third_party/libwebrtc/video/adaptation/video_stream_encoder } std::vector GetActiveLayersFlags(const VideoCodec& codec) { + std::vector flags; + if (codec.codecType == VideoCodecType::kVideoCodecVP9) { + flags.resize(codec.VP9().numberOfSpatialLayers); + for (size_t i = 0; i < flags.size(); ++i) { + flags[i] = codec.spatialLayers[i].active; diff --git a/tar_stamps b/tar_stamps index 4d44d13..2edd0bb 100644 --- a/tar_stamps +++ b/tar_stamps @@ -1,10 +1,10 @@ PRODUCT="firefox" CHANNEL="release" -VERSION="128.0.3" +VERSION="129.0" VERSION_SUFFIX="" -PREV_VERSION="128.0" +PREV_VERSION="128.0.3" PREV_VERSION_SUFFIX="" #SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation RELEASE_REPO="https://hg.mozilla.org/releases/mozilla-release" -RELEASE_TAG="38b9888273f81488e7b45457790717820815e1d2" -RELEASE_TIMESTAMP="20240725162350" +RELEASE_TAG="2d113ed75bf04980277ea9af4cd1da31e1d31a01" +RELEASE_TIMESTAMP="20240801122119"