From d5a7f057123adf807e6629eb007ed242c6cbc3cb Mon Sep 17 00:00:00 2001 From: Jan Horak Date: Wed, 10 Sep 2025 15:03:53 +0200 Subject: [PATCH] Rebase to 140.3.0 ESR Following changes were made during rebase: Use gcc toolset 14 instead of 13 Fixed annocheck workaround and backported ensure kiosk mode Removed disable-vsync-for-kiosk.patch Update to 140 esr Update bundled package list Cleanup patches: - remove unused patches - fix patch versioning - rename webrtc-128.0.patch to D225034.xxxx based on the merge request Use system libraries for drm/gbm/pipewire Update patch disabling PipeWire support Backported fips patches Enable system nss Update nss versions Added fixes for rhel9 from SE Fix the system pipewire build Update to 140.1.0 Cleanup and incorporating of SE changes Fixing spec file adding av1-else-condition-add.patch fixing av1 disable patch Fixed exceptionHandler patch Update to 140.2.0 Removed bundled(cups) as long as it is not bundled Changes related to rebase-140 of rhel-9.x(9.0, 9.2, 9.4) streams owned by SE 1.Added updated nss-3.112 in the Sources and .gitignore and updated its reference inside specfile 2.Add condition to not enable system_gbm, drm, pipewire as build was failing 3.Added handling for setting bundled_nss=1 for these streams,so that it used nss bundled nspr changes related to rhel 8.x(2,4,6,8) and 7.9 version Added fixes for missing translation and gnome kiosk Update to 140.3.0 esr Resolves: RHEL-114034 --- .gitignore | 5 + ...when-goes-off-screen-or-is-invisible.patch | 116 ---- ...onal-formats-and-fix-rgb-bgr-mapping.patch | 87 --- ...ter-out-devices-without-capabilities.patch | 231 ------- ...nformation-about-camera-availability.patch | 52 -- ...eedback-for-newly-created-deviceinfo.patch | 293 --------- ...ariable-with-pipewire-status-updated.patch | 36 -- ...port-for-device-change-notifications.patch | 190 ------ ...r-each-format-when-specified-as-list.patch | 52 -- ...m-parameters-specified-by-capability.patch | 172 ----- ...nique-device-name-for-camera-devices.patch | 61 -- D224588.1728128098.diff | 56 +- D245908.clear-lang-bundles.diff | 16 + D249071.restoreWinState.diff | 53 ++ av1-else-condition-add.patch | 14 + build-ffvpx.patch | 24 +- build-libaom.patch | 7 +- build-rhel7-lower-node-min-version.patch | 9 +- build-rhel7-nasm-dwarf.patch | 16 +- build-system-nss.patch | 20 + disable-pipewire.patch | 274 -------- disable-vsync-for-kiosk.patch | 18 - firefox-fix-build-with-system-pipewire.patch | 12 + ...-system-nss-replace-xyber-with-mlkem.patch | 507 --------------- firefox.spec | 611 ++++++++++-------- gen_cbindgen-vendor.sh | 2 +- mozilla-bmo1170092.patch | 34 +- mozilla-bmo1636168-fscreen.patch | 39 +- mozilla-bmo1670333.patch | 32 +- mozilla-bmo1789216-disable-av1.patch | 51 +- rhbz-1173156.patch | 22 +- sources | 12 +- wasi.patch | 2 +- ...tc-128.0.patch.patch => webrtc-128.0.patch | 505 +++++++-------- 34 files changed, 860 insertions(+), 2771 deletions(-) delete mode 100644 001-libwebrtc-pipewire-screencast-hide-cursor-when-goes-off-screen-or-is-invisible.patch delete mode 100644 002-libwebrtc-pipewire-camera-support-additional-formats-and-fix-rgb-bgr-mapping.patch delete mode 100644 003-libwebrtc-pipewire-camera-filter-out-devices-without-capabilities.patch delete mode 100644 004-firefox-always-query-information-about-camera-availability.patch delete mode 100644 005-firefox-always-register-video-input-feedback-for-newly-created-deviceinfo.patch delete mode 100644 006-libwebrtc-pipewire-camera-make-member-variable-with-pipewire-status-updated.patch delete mode 100644 007-firefox-add-missing-support-for-device-change-notifications.patch delete mode 100644 008-libwebrtc-pipewire-camera-get-max-fps-for-each-format-when-specified-as-list.patch delete mode 100644 009-libwebrtc-pipewire-camera-use-exact-stream-parameters-specified-by-capability.patch delete mode 100644 010-libwebrtc-pipewire-camera-use-better-unique-device-name-for-camera-devices.patch create mode 100644 D245908.clear-lang-bundles.diff create mode 100644 D249071.restoreWinState.diff create mode 100644 av1-else-condition-add.patch create mode 100644 build-system-nss.patch delete mode 100644 disable-pipewire.patch delete mode 100644 disable-vsync-for-kiosk.patch create mode 100644 firefox-fix-build-with-system-pipewire.patch delete mode 100644 firefox-system-nss-replace-xyber-with-mlkem.patch rename webrtc-128.0.patch.patch => webrtc-128.0.patch (85%) diff --git a/.gitignore b/.gitignore index 2614808..ff904ed 100644 --- a/.gitignore +++ b/.gitignore @@ -113,3 +113,8 @@ SOURCES/nss-3.79.0-6.el8_1.src.rpm /firefox-128.14.0esr.processed-source.tar.xz /firefox-langpacks-128.14.0esr-20250812.tar.xz /firefox-langpacks-128.14.0esr-20250815.tar.xz +/nss-3.112.0-1.el9_4.src.rpm +/nss-3.112.0-4.el8_2.src.rpm +/nspr-4.36.0-2.el8_2.src.rpm +/firefox-140.3.0esr.processed-source.tar.xz +/firefox-langpacks-140.3.0esr-20250909.tar.xz diff --git a/001-libwebrtc-pipewire-screencast-hide-cursor-when-goes-off-screen-or-is-invisible.patch b/001-libwebrtc-pipewire-screencast-hide-cursor-when-goes-off-screen-or-is-invisible.patch deleted file mode 100644 index c16dc91..0000000 --- a/001-libwebrtc-pipewire-screencast-hide-cursor-when-goes-off-screen-or-is-invisible.patch +++ /dev/null @@ -1,116 +0,0 @@ -From 92643d686bed8f3e4f2c1aae194925b6dc9dea86 Mon Sep 17 00:00:00 2001 -From: Jan Grulich -Date: Fri, 28 Jun 2024 18:13:15 +0000 -Subject: [PATCH] Bug 1905335 - WebRTC backport: PipeWire capture: hide cursor - when it goes off screen or is not visible r=pehrsons,webrtc-reviewers - -This is a simple backport of an WebRTC upstream change. - -Upstream commit: e6ad337d633c145c48a5a4ae54968c14c16081c7 - -Differential Revision: https://phabricator.services.mozilla.com/D215197 ---- - .../wayland/mouse_cursor_monitor_pipewire.cc | 14 +++-- - .../linux/wayland/shared_screencast_stream.cc | 52 +++++++++++-------- - .../e6ad337d63.no-op-cherry-pick-msg | 1 + - 3 files changed, 39 insertions(+), 28 deletions(-) - create mode 100644 third_party/libwebrtc/moz-patch-stack/e6ad337d63.no-op-cherry-pick-msg - -diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/mouse_cursor_monitor_pipewire.cc b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/mouse_cursor_monitor_pipewire.cc -index 3d33b0fbb8e6e..00b07f341b16a 100644 ---- a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/mouse_cursor_monitor_pipewire.cc -+++ b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/mouse_cursor_monitor_pipewire.cc -@@ -40,6 +40,14 @@ void MouseCursorMonitorPipeWire::Capture() { - RTC_DCHECK_RUN_ON(&sequence_checker_); - RTC_DCHECK(callback_); - -+ absl::optional mouse_cursor_position = -+ options_.screencast_stream()->CaptureCursorPosition(); -+ // Invalid cursor or position -+ if (!mouse_cursor_position) { -+ callback_->OnMouseCursor(nullptr); -+ return; -+ } -+ - std::unique_ptr mouse_cursor = - options_.screencast_stream()->CaptureCursor(); - -@@ -48,11 +56,7 @@ void MouseCursorMonitorPipeWire::Capture() { - } - - if (mode_ == SHAPE_AND_POSITION) { -- absl::optional mouse_cursor_position = -- options_.screencast_stream()->CaptureCursorPosition(); -- if (mouse_cursor_position) { -- callback_->OnMouseCursorPosition(mouse_cursor_position.value()); -- } -+ callback_->OnMouseCursorPosition(mouse_cursor_position.value()); - } - } - -diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc -index ab9054f1a1676..b8cac318ffeb9 100644 ---- a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc -+++ b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc -@@ -690,32 +690,38 @@ void SharedScreenCastStreamPrivate::ProcessBuffer(pw_buffer* buffer) { - const struct spa_meta_cursor* cursor = - static_cast(spa_buffer_find_meta_data( - spa_buffer, SPA_META_Cursor, sizeof(*cursor))); -- if (cursor && spa_meta_cursor_is_valid(cursor)) { -- struct spa_meta_bitmap* bitmap = nullptr; -- -- if (cursor->bitmap_offset) -- bitmap = -- SPA_MEMBER(cursor, cursor->bitmap_offset, struct spa_meta_bitmap); -- -- if (bitmap && bitmap->size.width > 0 && bitmap->size.height > 0) { -- const uint8_t* bitmap_data = -- SPA_MEMBER(bitmap, bitmap->offset, uint8_t); -- BasicDesktopFrame* mouse_frame = new BasicDesktopFrame( -- DesktopSize(bitmap->size.width, bitmap->size.height)); -- mouse_frame->CopyPixelsFrom( -- bitmap_data, bitmap->stride, -- DesktopRect::MakeWH(bitmap->size.width, bitmap->size.height)); -- mouse_cursor_ = std::make_unique( -- mouse_frame, DesktopVector(cursor->hotspot.x, cursor->hotspot.y)); - -- if (observer_) { -- observer_->OnCursorShapeChanged(); -+ if (cursor) { -+ if (spa_meta_cursor_is_valid(cursor)) { -+ struct spa_meta_bitmap* bitmap = nullptr; -+ -+ if (cursor->bitmap_offset) -+ bitmap = -+ SPA_MEMBER(cursor, cursor->bitmap_offset, struct spa_meta_bitmap); -+ -+ if (bitmap && bitmap->size.width > 0 && bitmap->size.height > 0) { -+ const uint8_t* bitmap_data = -+ SPA_MEMBER(bitmap, bitmap->offset, uint8_t); -+ BasicDesktopFrame* mouse_frame = new BasicDesktopFrame( -+ DesktopSize(bitmap->size.width, bitmap->size.height)); -+ mouse_frame->CopyPixelsFrom( -+ bitmap_data, bitmap->stride, -+ DesktopRect::MakeWH(bitmap->size.width, bitmap->size.height)); -+ mouse_cursor_ = std::make_unique( -+ mouse_frame, DesktopVector(cursor->hotspot.x, cursor->hotspot.y)); -+ -+ if (observer_) { -+ observer_->OnCursorShapeChanged(); -+ } - } -- } -- mouse_cursor_position_.set(cursor->position.x, cursor->position.y); -+ mouse_cursor_position_.set(cursor->position.x, cursor->position.y); - -- if (observer_) { -- observer_->OnCursorPositionChanged(); -+ if (observer_) { -+ observer_->OnCursorPositionChanged(); -+ } -+ } else { -+ // Indicate an invalid cursor -+ mouse_cursor_position_.set(-1, -1); - } - } - } diff --git a/002-libwebrtc-pipewire-camera-support-additional-formats-and-fix-rgb-bgr-mapping.patch b/002-libwebrtc-pipewire-camera-support-additional-formats-and-fix-rgb-bgr-mapping.patch deleted file mode 100644 index f6a2766..0000000 --- a/002-libwebrtc-pipewire-camera-support-additional-formats-and-fix-rgb-bgr-mapping.patch +++ /dev/null @@ -1,87 +0,0 @@ -From fef1904f95dc592deef7044debe71a02c5d7046c Mon Sep 17 00:00:00 2001 -From: Jan Grulich -Date: Sat, 20 Jul 2024 07:04:27 +0000 -Subject: [PATCH] Bug 1907013 - WebRTC backport: PipeWire camera: support - additional formats and fix RGB/BGR mapping r=jib,webrtc-reviewers - -This is a simple backprot of an WebRTC upstream change. - -Upstream commit: b1ebcfbfd6afb57f314b6689ca001aca1b13a5b4 - -Differential Revision: https://phabricator.services.mozilla.com/D216138 ---- - .../modules/video_capture/linux/pipewire_session.cc | 6 ++++++ - .../video_capture/linux/video_capture_pipewire.cc | 12 ++++++++++-- - .../moz-patch-stack/b1ebcfbfd6.no-op-cherry-pick-msg | 1 + - 3 files changed, 17 insertions(+), 2 deletions(-) - create mode 100644 third_party/libwebrtc/moz-patch-stack/b1ebcfbfd6.no-op-cherry-pick-msg - -diff --git a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -index d52d6aacc8005..107ea3dfbd954 100644 ---- a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -+++ b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -@@ -35,12 +35,18 @@ VideoType PipeWireRawFormatToVideoType(uint32_t id) { - return VideoType::kYUY2; - case SPA_VIDEO_FORMAT_UYVY: - return VideoType::kUYVY; -+ case SPA_VIDEO_FORMAT_RGB16: -+ return VideoType::kRGB565; - case SPA_VIDEO_FORMAT_RGB: -+ return VideoType::kBGR24; -+ case SPA_VIDEO_FORMAT_BGR: - return VideoType::kRGB24; - case SPA_VIDEO_FORMAT_BGRA: - return VideoType::kARGB; - case SPA_VIDEO_FORMAT_RGBA: - return VideoType::kABGR; -+ case SPA_VIDEO_FORMAT_ARGB: -+ return VideoType::kBGRA; - default: - return VideoType::kUnknown; - } -diff --git a/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.cc b/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.cc -index 9ff4fdb9b1c98..1672b7583f582 100644 ---- a/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.cc -+++ b/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.cc -@@ -34,10 +34,15 @@ struct { - {SPA_VIDEO_FORMAT_YUY2, VideoType::kYUY2}, - {SPA_VIDEO_FORMAT_UYVY, VideoType::kUYVY}, - // PipeWire is big-endian for the formats, while libyuv is little-endian -- // This means that BGRA == ARGB and RGBA == ABGR -+ // This means that BGRA == ARGB, RGBA == ABGR and similar -+ // This follows mapping in libcamera PipeWire plugin: -+ // https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/master/spa/plugins/libcamera/libcamera-utils.cpp - {SPA_VIDEO_FORMAT_BGRA, VideoType::kARGB}, - {SPA_VIDEO_FORMAT_RGBA, VideoType::kABGR}, -- {SPA_VIDEO_FORMAT_RGB, VideoType::kRGB24}, -+ {SPA_VIDEO_FORMAT_ARGB, VideoType::kBGRA}, -+ {SPA_VIDEO_FORMAT_RGB, VideoType::kBGR24}, -+ {SPA_VIDEO_FORMAT_BGR, VideoType::kRGB24}, -+ {SPA_VIDEO_FORMAT_RGB16, VideoType::kRGB565}, - }; - - VideoType VideoCaptureModulePipeWire::PipeWireRawFormatToVideoType( -@@ -302,13 +307,16 @@ void VideoCaptureModulePipeWire::OnFormatChanged(const struct spa_pod* format) { - break; - case VideoType::kYUY2: - case VideoType::kUYVY: -+ case VideoType::kRGB565: - stride = configured_capability_.width * 2; - break; - case VideoType::kRGB24: -+ case VideoType::kBGR24: - stride = configured_capability_.width * 3; - break; - case VideoType::kARGB: - case VideoType::kABGR: -+ case VideoType::kBGRA: - stride = configured_capability_.width * 4; - break; - default: -diff --git a/third_party/libwebrtc/moz-patch-stack/b1ebcfbfd6.no-op-cherry-pick-msg b/third_party/libwebrtc/moz-patch-stack/b1ebcfbfd6.no-op-cherry-pick-msg -new file mode 100644 -index 0000000000000..e795b816b1382 ---- /dev/null -+++ b/third_party/libwebrtc/moz-patch-stack/b1ebcfbfd6.no-op-cherry-pick-msg -@@ -0,0 +1 @@ -+We cherry-picked this in bug 1907013. diff --git a/003-libwebrtc-pipewire-camera-filter-out-devices-without-capabilities.patch b/003-libwebrtc-pipewire-camera-filter-out-devices-without-capabilities.patch deleted file mode 100644 index 5c3c524..0000000 --- a/003-libwebrtc-pipewire-camera-filter-out-devices-without-capabilities.patch +++ /dev/null @@ -1,231 +0,0 @@ -From 286575b387cff9b3ec318d3cf90cf20d2f3c2ce4 Mon Sep 17 00:00:00 2001 -From: Jan Grulich -Date: Mon, 2 Sep 2024 11:07:20 +0000 -Subject: [PATCH] Bug 1913286 - WebRTC backport: PipeWire camera: filter out - devices with no capabilities r=pehrsons,webrtc-reviewers - -Filter out devices that do not support any format supported by WebRTC. -This will for example be IR cameras that show as duplicated in the list -of cameras, but support only GRAY8 format and for that reason do not -work at all. - -This is a simple backport of an WebRTC upstream change. - -Upstream commit: b4aba7834e6c94adace1cb4c20e2e1ee70eb9cc5 - -Differential Revision: https://phabricator.services.mozilla.com/D219224 ---- - .../linux/device_info_pipewire.cc | 20 ++++----- - .../video_capture/linux/pipewire_session.cc | 43 +++++++++++++------ - .../video_capture/linux/pipewire_session.h | 21 ++++++--- - .../b4aba7834e.no-op-cherry-pick-msg | 1 + - 4 files changed, 58 insertions(+), 27 deletions(-) - create mode 100644 third_party/libwebrtc/moz-patch-stack/b4aba7834e.no-op-cherry-pick-msg - -diff --git a/third_party/libwebrtc/modules/video_capture/linux/device_info_pipewire.cc b/third_party/libwebrtc/modules/video_capture/linux/device_info_pipewire.cc -index 31d922035b3f8..db2a3c7099169 100644 ---- a/third_party/libwebrtc/modules/video_capture/linux/device_info_pipewire.cc -+++ b/third_party/libwebrtc/modules/video_capture/linux/device_info_pipewire.cc -@@ -57,31 +57,31 @@ int32_t DeviceInfoPipeWire::GetDeviceName(uint32_t deviceNumber, - if (deviceNumber >= NumberOfDevices()) - return -1; - -- const PipeWireNode& node = pipewire_session_->nodes().at(deviceNumber); -+ const auto& node = pipewire_session_->nodes().at(deviceNumber); - -- if (deviceNameLength <= node.display_name().length()) { -+ if (deviceNameLength <= node->display_name().length()) { - RTC_LOG(LS_INFO) << "deviceNameUTF8 buffer passed is too small"; - return -1; - } -- if (deviceUniqueIdUTF8Length <= node.unique_id().length()) { -+ if (deviceUniqueIdUTF8Length <= node->unique_id().length()) { - RTC_LOG(LS_INFO) << "deviceUniqueIdUTF8 buffer passed is too small"; - return -1; - } - if (productUniqueIdUTF8 && -- productUniqueIdUTF8Length <= node.model_id().length()) { -+ productUniqueIdUTF8Length <= node->model_id().length()) { - RTC_LOG(LS_INFO) << "productUniqueIdUTF8 buffer passed is too small"; - return -1; - } - - memset(deviceNameUTF8, 0, deviceNameLength); -- node.display_name().copy(deviceNameUTF8, deviceNameLength); -+ node->display_name().copy(deviceNameUTF8, deviceNameLength); - - memset(deviceUniqueIdUTF8, 0, deviceUniqueIdUTF8Length); -- node.unique_id().copy(deviceUniqueIdUTF8, deviceUniqueIdUTF8Length); -+ node->unique_id().copy(deviceUniqueIdUTF8, deviceUniqueIdUTF8Length); - - if (productUniqueIdUTF8) { - memset(productUniqueIdUTF8, 0, productUniqueIdUTF8Length); -- node.model_id().copy(productUniqueIdUTF8, productUniqueIdUTF8Length); -+ node->model_id().copy(productUniqueIdUTF8, productUniqueIdUTF8Length); - } - - return 0; -@@ -92,11 +92,11 @@ int32_t DeviceInfoPipeWire::CreateCapabilityMap( - RTC_CHECK(pipewire_session_); - - for (auto& node : pipewire_session_->nodes()) { -- if (node.unique_id().compare(deviceUniqueIdUTF8) != 0) -+ if (node->unique_id().compare(deviceUniqueIdUTF8) != 0) - continue; - -- _captureCapabilities = node.capabilities(); -- _lastUsedDeviceNameLength = node.unique_id().length(); -+ _captureCapabilities = node->capabilities(); -+ _lastUsedDeviceNameLength = node->unique_id().length(); - _lastUsedDeviceName = static_cast( - realloc(_lastUsedDeviceName, _lastUsedDeviceNameLength + 1)); - memcpy(_lastUsedDeviceName, deviceUniqueIdUTF8, -diff --git a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -index 107ea3dfbd954..dbac09274bb31 100644 ---- a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -+++ b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -@@ -52,6 +52,19 @@ VideoType PipeWireRawFormatToVideoType(uint32_t id) { - } - } - -+void PipeWireNode::PipeWireNodeDeleter::operator()( -+ PipeWireNode* node) const noexcept { -+ pw_proxy_destroy(node->proxy_); -+ spa_hook_remove(&node->node_listener_); -+} -+ -+// static -+PipeWireNode::PipeWireNodePtr PipeWireNode::Create(PipeWireSession* session, -+ uint32_t id, -+ const spa_dict* props) { -+ return PipeWireNodePtr(new PipeWireNode(session, id, props)); -+} -+ - PipeWireNode::PipeWireNode(PipeWireSession* session, - uint32_t id, - const spa_dict* props) -@@ -73,11 +86,6 @@ PipeWireNode::PipeWireNode(PipeWireSession* session, - pw_node_add_listener(proxy_, &node_listener_, &node_events, this); - } - --PipeWireNode::~PipeWireNode() { -- spa_hook_remove(&node_listener_); -- pw_proxy_destroy(proxy_); --} -- - // static - void PipeWireNode::OnNodeInfo(void* data, const pw_node_info* info) { - PipeWireNode* that = static_cast(data); -@@ -99,7 +107,9 @@ void PipeWireNode::OnNodeInfo(void* data, const pw_node_info* info) { - pid.value()); - that->model_id_ = model_str; - } -- } else if (info->change_mask & PW_NODE_CHANGE_MASK_PARAMS) { -+ } -+ -+ if (info->change_mask & PW_NODE_CHANGE_MASK_PARAMS) { - for (uint32_t i = 0; i < info->n_params; i++) { - uint32_t id = info->params[i].id; - if (id == SPA_PARAM_EnumFormat && -@@ -350,6 +360,14 @@ void PipeWireSession::OnCoreDone(void* data, uint32_t id, int seq) { - if (id == PW_ID_CORE) { - if (seq == that->sync_seq_) { - RTC_LOG(LS_VERBOSE) << "Enumerating PipeWire camera devices complete."; -+ -+ // Remove camera devices with no capabilities -+ auto it = std::remove_if(that->nodes_.begin(), that->nodes_.end(), -+ [](const PipeWireNode::PipeWireNodePtr& node) { -+ return node->capabilities().empty(); -+ }); -+ that->nodes_.erase(it, that->nodes_.end()); -+ - that->Finish(VideoCaptureOptions::Status::SUCCESS); - } - } -@@ -366,8 +384,8 @@ void PipeWireSession::OnRegistryGlobal(void* data, - - // Skip already added nodes to avoid duplicate camera entries - if (std::find_if(that->nodes_.begin(), that->nodes_.end(), -- [id](const PipeWireNode& node) { -- return node.id() == id; -+ [id](const PipeWireNode::PipeWireNodePtr& node) { -+ return node->id() == id; - }) != that->nodes_.end()) - return; - -@@ -381,7 +399,7 @@ void PipeWireSession::OnRegistryGlobal(void* data, - if (!node_role || strcmp(node_role, "Camera")) - return; - -- that->nodes_.emplace_back(that, id, props); -+ that->nodes_.push_back(PipeWireNode::Create(that, id, props)); - that->PipeWireSync(); - } - -@@ -389,9 +407,10 @@ void PipeWireSession::OnRegistryGlobal(void* data, - void PipeWireSession::OnRegistryGlobalRemove(void* data, uint32_t id) { - PipeWireSession* that = static_cast(data); - -- auto it = std::remove_if( -- that->nodes_.begin(), that->nodes_.end(), -- [id](const PipeWireNode& node) { return node.id() == id; }); -+ auto it = std::remove_if(that->nodes_.begin(), that->nodes_.end(), -+ [id](const PipeWireNode::PipeWireNodePtr& node) { -+ return node->id() == id; -+ }); - that->nodes_.erase(it, that->nodes_.end()); - } - -diff --git a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.h b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.h -index fdc06a6b2a27a..84273ea695277 100644 ---- a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.h -+++ b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.h -@@ -37,8 +37,15 @@ class VideoCaptureModulePipeWire; - // So they all represent one camera that is available via PipeWire. - class PipeWireNode { - public: -- PipeWireNode(PipeWireSession* session, uint32_t id, const spa_dict* props); -- ~PipeWireNode(); -+ struct PipeWireNodeDeleter { -+ void operator()(PipeWireNode* node) const noexcept; -+ }; -+ -+ using PipeWireNodePtr = -+ std::unique_ptr; -+ static PipeWireNodePtr Create(PipeWireSession* session, -+ uint32_t id, -+ const spa_dict* props); - - uint32_t id() const { return id_; } - std::string display_name() const { return display_name_; } -@@ -48,6 +55,9 @@ class PipeWireNode { - return capabilities_; - } - -+ protected: -+ PipeWireNode(PipeWireSession* session, uint32_t id, const spa_dict* props); -+ - private: - static void OnNodeInfo(void* data, const pw_node_info* info); - static void OnNodeParam(void* data, -@@ -87,8 +97,9 @@ class PipeWireSession : public rtc::RefCountedNonVirtual { - - void Init(VideoCaptureOptions::Callback* callback, - int fd = kInvalidPipeWireFd); -- -- const std::deque& nodes() const { return nodes_; } -+ const std::deque& nodes() const { -+ return nodes_; -+ } - - friend class CameraPortalNotifier; - friend class PipeWireNode; -@@ -134,7 +145,7 @@ class PipeWireSession : public rtc::RefCountedNonVirtual { - - int sync_seq_ = 0; - -- std::deque nodes_; -+ std::deque nodes_; - std::unique_ptr portal_; - std::unique_ptr portal_notifier_; - }; diff --git a/004-firefox-always-query-information-about-camera-availability.patch b/004-firefox-always-query-information-about-camera-availability.patch deleted file mode 100644 index e0b0ecd..0000000 --- a/004-firefox-always-query-information-about-camera-availability.patch +++ /dev/null @@ -1,52 +0,0 @@ -From b10c1d09729794c46f9c04d04c07c18d514d396e Mon Sep 17 00:00:00 2001 -From: Jan Grulich -Date: Wed, 4 Sep 2024 13:43:29 +0000 -Subject: [PATCH] Bug 1912785 - Always query information about camera - availability r=pehrsons - -We have to always update camera availability information, even when we -don't request cameras, because the WebRTC backend automatically creates -camera video engine and not having this information we might hitting an -assert later, where we assume the status of camera availability is not -unknown. - -Differential Revision: https://phabricator.services.mozilla.com/D219062 ---- - dom/media/MediaManager.cpp | 17 ++++++++++++----- - 1 file changed, 12 insertions(+), 5 deletions(-) - -diff --git a/dom/media/MediaManager.cpp b/dom/media/MediaManager.cpp -index 2ade297d31e84..3cc716e6836ac 100644 ---- a/dom/media/MediaManager.cpp -+++ b/dom/media/MediaManager.cpp -@@ -2153,9 +2153,15 @@ MediaManager::MaybeRequestPermissionAndEnumerateRawDevices( - } - - if (!deviceAccessPromise) { -- // No device access request needed. Proceed directly. -- deviceAccessPromise = -- NativePromise::CreateAndResolve(CamerasAccessStatus::Granted, __func__); -+ // No device access request needed. We can proceed directly, but we still -+ // need to update camera availability, because the camera engine is always -+ // created together with the WebRTC backend, which is done because -+ // devicechange events must work before prompting in cases where persistent -+ // permission has already been given. Making a request to camera access not -+ // allowing a permission request does exactly what we need in this case. -+ ipc::PBackgroundChild* backgroundChild = -+ ipc::BackgroundChild::GetOrCreateForCurrentThread(); -+ deviceAccessPromise = backgroundChild->SendRequestCameraAccess(false); - } - - return deviceAccessPromise->Then( -@@ -2190,8 +2196,9 @@ MediaManager::MaybeRequestPermissionAndEnumerateRawDevices( - "rejected"); - } - -- if (aParams.mFlags.contains(EnumerationFlag::AllowPermissionRequest)) { -- MOZ_ASSERT(aValue.ResolveValue() == CamerasAccessStatus::Granted); -+ if (aParams.VideoInputType() == MediaSourceEnum::Camera && -+ aParams.mFlags.contains(EnumerationFlag::AllowPermissionRequest) && -+ aValue.ResolveValue() == CamerasAccessStatus::Granted) { - EnsureNoPlaceholdersInDeviceCache(); - } - diff --git a/005-firefox-always-register-video-input-feedback-for-newly-created-deviceinfo.patch b/005-firefox-always-register-video-input-feedback-for-newly-created-deviceinfo.patch deleted file mode 100644 index 836342e..0000000 --- a/005-firefox-always-register-video-input-feedback-for-newly-created-deviceinfo.patch +++ /dev/null @@ -1,293 +0,0 @@ -From df57b21200c7cde7ac34705e8fceab2fbe933bc5 Mon Sep 17 00:00:00 2001 -From: Jan Grulich -Date: Tue, 3 Sep 2024 07:56:39 +0000 -Subject: [PATCH] Bug 1912778 - Always register video input feedback for newly - created DeviceInfo r=pehrsons - -Make sure to always register video input feedback when a new DeviceInfo -is created. We always destroy DeviceInfo once request to camera access -is resolved, making it to be created again, but this time skipping the -part where video input feedback is registered as we use already existing -VideoEngine. There is now just one place where DeviceInfo gets created -and the logic for video input feedback registration has been moved to -VideoEngine as it's the only place where we know when new DeviceInfo is -created. - -Differential Revision: https://phabricator.services.mozilla.com/D219060 ---- - dom/media/systemservices/CamerasParent.cpp | 164 ++++++++++----------- - dom/media/systemservices/CamerasParent.h | 5 + - dom/media/systemservices/VideoEngine.cpp | 7 +- - dom/media/systemservices/VideoEngine.h | 2 +- - 4 files changed, 91 insertions(+), 87 deletions(-) - -diff --git a/dom/media/systemservices/CamerasParent.cpp b/dom/media/systemservices/CamerasParent.cpp -index 048d07b7fa..d6fe5986da 100644 ---- a/dom/media/systemservices/CamerasParent.cpp -+++ b/dom/media/systemservices/CamerasParent.cpp -@@ -405,15 +405,25 @@ void CamerasParent::CloseEngines() { - Unused << ReleaseCapture(capEngine, streamNum); - } - -- if (VideoEngine* engine = mEngines->ElementAt(CameraEngine); engine) { -- auto device_info = engine->GetOrCreateVideoCaptureDeviceInfo(); -- MOZ_ASSERT(device_info); -- if (device_info) { -- device_info->DeRegisterVideoInputFeedBack(this); -- } -+ auto device_info = GetDeviceInfo(CameraEngine); -+ MOZ_ASSERT(device_info); -+ if (device_info) { -+ device_info->DeRegisterVideoInputFeedBack(this); - } - } - -+std::shared_ptr -+CamerasParent::GetDeviceInfo(int aEngine) { -+ MOZ_ASSERT(mVideoCaptureThread->IsOnCurrentThread()); -+ LOG_VERBOSE("CamerasParent(%p)::%s", this, __func__); -+ -+ auto* engine = EnsureInitialized(aEngine); -+ if (!engine) { -+ return nullptr; -+ } -+ return engine->GetOrCreateVideoCaptureDeviceInfo(this); -+} -+ - VideoEngine* CamerasParent::EnsureInitialized(int aEngine) { - MOZ_ASSERT(mVideoCaptureThread->IsOnCurrentThread()); - LOG_VERBOSE("CamerasParent(%p)::%s", this, __func__); -@@ -449,14 +459,6 @@ VideoEngine* CamerasParent::EnsureInitialized(int aEngine) { - return nullptr; - } - -- if (capEngine == CameraEngine) { -- auto device_info = engine->GetOrCreateVideoCaptureDeviceInfo(); -- MOZ_ASSERT(device_info); -- if (device_info) { -- device_info->RegisterVideoInputFeedBack(this); -- } -- } -- - return mEngines->ElementAt(capEngine) = std::move(engine); - } - -@@ -474,19 +476,16 @@ ipc::IPCResult CamerasParent::RecvNumberOfCaptureDevices( - LOG("CaptureEngine=%d", aCapEngine); - - using Promise = MozPromise; -- InvokeAsync( -- mVideoCaptureThread, __func__, -- [this, self = RefPtr(this), aCapEngine] { -- int num = -1; -- if (auto* engine = EnsureInitialized(aCapEngine)) { -- if (auto devInfo = engine->GetOrCreateVideoCaptureDeviceInfo()) { -- num = static_cast(devInfo->NumberOfDevices()); -- } -- } -+ InvokeAsync(mVideoCaptureThread, __func__, -+ [this, self = RefPtr(this), aCapEngine] { -+ int num = -1; -+ if (auto devInfo = GetDeviceInfo(aCapEngine)) { -+ num = static_cast(devInfo->NumberOfDevices()); -+ } - -- return Promise::CreateAndResolve( -- num, "CamerasParent::RecvNumberOfCaptureDevices"); -- }) -+ return Promise::CreateAndResolve( -+ num, "CamerasParent::RecvNumberOfCaptureDevices"); -+ }) - ->Then( - mPBackgroundEventTarget, __func__, - [this, self = RefPtr(this)](Promise::ResolveOrRejectValue&& aValue) { -@@ -558,10 +557,8 @@ ipc::IPCResult CamerasParent::RecvNumberOfCapabilities( - mVideoCaptureThread, __func__, - [this, self = RefPtr(this), id = nsCString(aUniqueId), aCapEngine]() { - int num = -1; -- if (auto* engine = EnsureInitialized(aCapEngine)) { -- if (auto devInfo = engine->GetOrCreateVideoCaptureDeviceInfo()) { -- num = devInfo->NumberOfCapabilities(id.get()); -- } -+ if (auto devInfo = GetDeviceInfo(aCapEngine)) { -+ num = devInfo->NumberOfCapabilities(id.get()); - } - return Promise::CreateAndResolve( - num, "CamerasParent::RecvNumberOfCapabilities"); -@@ -599,36 +596,34 @@ ipc::IPCResult CamerasParent::RecvGetCaptureCapability( - aIndex); - - using Promise = MozPromise; -- InvokeAsync( -- mVideoCaptureThread, __func__, -- [this, self = RefPtr(this), id = nsCString(aUniqueId), aCapEngine, -- aIndex] { -- webrtc::VideoCaptureCapability webrtcCaps; -- int error = -1; -- if (auto* engine = EnsureInitialized(aCapEngine)) { -- if (auto devInfo = engine->GetOrCreateVideoCaptureDeviceInfo()) { -- error = devInfo->GetCapability(id.get(), aIndex, webrtcCaps); -- } -- } -+ InvokeAsync(mVideoCaptureThread, __func__, -+ [this, self = RefPtr(this), id = nsCString(aUniqueId), aCapEngine, -+ aIndex] { -+ webrtc::VideoCaptureCapability webrtcCaps; -+ int error = -1; -+ if (auto devInfo = GetDeviceInfo(aCapEngine)) { -+ error = devInfo->GetCapability(id.get(), aIndex, webrtcCaps); -+ } - -- if (!error && aCapEngine == CameraEngine) { -- auto iter = mAllCandidateCapabilities.find(id); -- if (iter == mAllCandidateCapabilities.end()) { -- std::map -- candidateCapabilities; -- candidateCapabilities.emplace(aIndex, webrtcCaps); -- mAllCandidateCapabilities.emplace(id, candidateCapabilities); -- } else { -- (iter->second).emplace(aIndex, webrtcCaps); -- } -- } -- if (error) { -- return Promise::CreateAndReject( -- error, "CamerasParent::RecvGetCaptureCapability"); -- } -- return Promise::CreateAndResolve( -- webrtcCaps, "CamerasParent::RecvGetCaptureCapability"); -- }) -+ if (!error && aCapEngine == CameraEngine) { -+ auto iter = mAllCandidateCapabilities.find(id); -+ if (iter == mAllCandidateCapabilities.end()) { -+ std::map -+ candidateCapabilities; -+ candidateCapabilities.emplace(aIndex, webrtcCaps); -+ mAllCandidateCapabilities.emplace(id, -+ candidateCapabilities); -+ } else { -+ (iter->second).emplace(aIndex, webrtcCaps); -+ } -+ } -+ if (error) { -+ return Promise::CreateAndReject( -+ error, "CamerasParent::RecvGetCaptureCapability"); -+ } -+ return Promise::CreateAndResolve( -+ webrtcCaps, "CamerasParent::RecvGetCaptureCapability"); -+ }) - ->Then( - mPBackgroundEventTarget, __func__, - [this, self = RefPtr(this)](Promise::ResolveOrRejectValue&& aValue) { -@@ -664,33 +659,32 @@ ipc::IPCResult CamerasParent::RecvGetCaptureDevice( - - using Data = std::tuple; - using Promise = MozPromise; -- InvokeAsync( -- mVideoCaptureThread, __func__, -- [this, self = RefPtr(this), aCapEngine, aDeviceIndex] { -- char deviceName[MediaEngineSource::kMaxDeviceNameLength]; -- char deviceUniqueId[MediaEngineSource::kMaxUniqueIdLength]; -- nsCString name; -- nsCString uniqueId; -- pid_t devicePid = 0; -- bool placeholder = false; -- int error = -1; -- if (auto* engine = EnsureInitialized(aCapEngine)) { -- if (auto devInfo = engine->GetOrCreateVideoCaptureDeviceInfo()) { -- error = devInfo->GetDeviceName( -- aDeviceIndex, deviceName, sizeof(deviceName), deviceUniqueId, -- sizeof(deviceUniqueId), nullptr, 0, &devicePid, &placeholder); -- } -- } -- if (error == 0) { -- name.Assign(deviceName); -- uniqueId.Assign(deviceUniqueId); -- } -+ InvokeAsync(mVideoCaptureThread, __func__, -+ [this, self = RefPtr(this), aCapEngine, aDeviceIndex] { -+ char deviceName[MediaEngineSource::kMaxDeviceNameLength]; -+ char deviceUniqueId[MediaEngineSource::kMaxUniqueIdLength]; -+ nsCString name; -+ nsCString uniqueId; -+ pid_t devicePid = 0; -+ bool placeholder = false; -+ int error = -1; -+ if (auto devInfo = GetDeviceInfo(aCapEngine)) { -+ error = devInfo->GetDeviceName( -+ aDeviceIndex, deviceName, sizeof(deviceName), -+ deviceUniqueId, sizeof(deviceUniqueId), nullptr, 0, -+ &devicePid, &placeholder); -+ } - -- return Promise::CreateAndResolve( -- std::make_tuple(std::move(name), std::move(uniqueId), devicePid, -- placeholder, error), -- "CamerasParent::RecvGetCaptureDevice"); -- }) -+ if (error == 0) { -+ name.Assign(deviceName); -+ uniqueId.Assign(deviceUniqueId); -+ } -+ -+ return Promise::CreateAndResolve( -+ std::make_tuple(std::move(name), std::move(uniqueId), -+ devicePid, placeholder, error), -+ "CamerasParent::RecvGetCaptureDevice"); -+ }) - ->Then( - mPBackgroundEventTarget, __func__, - [this, self = RefPtr(this)](Promise::ResolveOrRejectValue&& aValue) { -diff --git a/dom/media/systemservices/CamerasParent.h b/dom/media/systemservices/CamerasParent.h -index 9d6a6f2f35..11a5229629 100644 ---- a/dom/media/systemservices/CamerasParent.h -+++ b/dom/media/systemservices/CamerasParent.h -@@ -144,6 +144,11 @@ class CamerasParent final : public PCamerasParent, - // VideoInputFeedBack - void OnDeviceChange() override; - -+ // Creates a new DeviceInfo or returns an existing DeviceInfo for given -+ // capture engine. Returns a nullptr in case capture engine failed to be -+ // initialized. Video capture thread only. -+ std::shared_ptr GetDeviceInfo( -+ int aEngine); - VideoEngine* EnsureInitialized(int aEngine); - - // Stops any ongoing capturing and releases resources. Called on -diff --git a/dom/media/systemservices/VideoEngine.cpp b/dom/media/systemservices/VideoEngine.cpp -index d03149e3ac..ec4657d755 100644 ---- a/dom/media/systemservices/VideoEngine.cpp -+++ b/dom/media/systemservices/VideoEngine.cpp -@@ -112,7 +112,8 @@ int VideoEngine::ReleaseVideoCapture(const int32_t aId) { - } - - std::shared_ptr --VideoEngine::GetOrCreateVideoCaptureDeviceInfo() { -+VideoEngine::GetOrCreateVideoCaptureDeviceInfo( -+ webrtc::VideoInputFeedBack* callBack) { - LOG(("%s", __PRETTY_FUNCTION__)); - webrtc::Timestamp currentTime = webrtc::Timestamp::Micros(0); - -@@ -157,6 +158,10 @@ VideoEngine::GetOrCreateVideoCaptureDeviceInfo() { - mDeviceInfo = - mVideoCaptureFactory->CreateDeviceInfo(mId, mCaptureDevInfo.type); - -+ if (mDeviceInfo && mCaptureDevInfo.type == CaptureDeviceType::Camera) { -+ mDeviceInfo->RegisterVideoInputFeedBack(callBack); -+ } -+ - LOG(("EXIT %s", __PRETTY_FUNCTION__)); - return mDeviceInfo; - } -diff --git a/dom/media/systemservices/VideoEngine.h b/dom/media/systemservices/VideoEngine.h -index 588be92c27..289a1ab181 100644 ---- a/dom/media/systemservices/VideoEngine.h -+++ b/dom/media/systemservices/VideoEngine.h -@@ -88,7 +88,7 @@ class VideoEngine { - * @see bug 1305212 https://bugzilla.mozilla.org/show_bug.cgi?id=1305212 - */ - std::shared_ptr -- GetOrCreateVideoCaptureDeviceInfo(); -+ GetOrCreateVideoCaptureDeviceInfo(webrtc::VideoInputFeedBack* callBack); - - /** - * Destroys existing DeviceInfo. diff --git a/006-libwebrtc-pipewire-camera-make-member-variable-with-pipewire-status-updated.patch b/006-libwebrtc-pipewire-camera-make-member-variable-with-pipewire-status-updated.patch deleted file mode 100644 index e4e2b84..0000000 --- a/006-libwebrtc-pipewire-camera-make-member-variable-with-pipewire-status-updated.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 7dd135852be020d5755af42fa45470df259ba945 Mon Sep 17 00:00:00 2001 -From: Jan Grulich -Date: Wed, 4 Sep 2024 13:43:40 +0000 -Subject: [PATCH] Bug 1830275 - WebRTC backport: PipeWire camera: make member - variable with the PipeWire status updated r=pehrsons,webrtc-reviewers - -We keep information about the PipeWire camera status as a member of the -PipeWire session, but it's never updated and remains in uninitialized -state. Make sure it gets updated once PipeWire is initialized or when it -fails. There is currently no use for this member variable, but there is -a plan to use it so I'm rather keeping it instead of removing it. - -This is a simple backport of an WebRTC upstream change. - -Upstream commit: 3881cb65cfcec90b6f0a56ce7223a471aa0115f2 - -Differential Revision: https://phabricator.services.mozilla.com/D220895 ---- - .../libwebrtc/modules/video_capture/linux/pipewire_session.cc | 2 ++ - .../libwebrtc/moz-patch-stack/3881cb65cf.no-op-cherry-pick-msg | 1 + - 2 files changed, 3 insertions(+) - create mode 100644 third_party/libwebrtc/moz-patch-stack/3881cb65cf.no-op-cherry-pick-msg - -diff --git a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -index dbac09274bb31..ac12d0437290e 100644 ---- a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -+++ b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -@@ -415,6 +415,8 @@ void PipeWireSession::OnRegistryGlobalRemove(void* data, uint32_t id) { - } - - void PipeWireSession::Finish(VideoCaptureOptions::Status status) { -+ status_ = status; -+ - webrtc::MutexLock lock(&callback_lock_); - - if (callback_) { diff --git a/007-firefox-add-missing-support-for-device-change-notifications.patch b/007-firefox-add-missing-support-for-device-change-notifications.patch deleted file mode 100644 index 651068b..0000000 --- a/007-firefox-add-missing-support-for-device-change-notifications.patch +++ /dev/null @@ -1,190 +0,0 @@ -From a4eb4517f2bdeb6591c05a09109b4b543b83fef1 Mon Sep 17 00:00:00 2001 -From: Jan Grulich -Date: Thu, 5 Sep 2024 16:04:48 +0000 -Subject: [PATCH] Bug 1830275 - Add missing support for device change - notifications r=pehrsons,webrtc-reviewers - -Registers each DeviceInfoPipeWire in PipeWireSession we use and calls -DeviceChange() for each once there is a new camera added or removed to -invoke OnDeviceChange() for every registered VideoInputFeedback. - -Differential Revision: https://phabricator.services.mozilla.com/D219218 ---- - .../linux/device_info_pipewire.cc | 10 +++- - .../video_capture/linux/pipewire_session.cc | 47 ++++++++++++++++++- - .../video_capture/linux/pipewire_session.h | 26 +++++++++- - 3 files changed, 79 insertions(+), 4 deletions(-) - -diff --git a/third_party/libwebrtc/modules/video_capture/linux/device_info_pipewire.cc b/third_party/libwebrtc/modules/video_capture/linux/device_info_pipewire.cc -index db2a3c7099..a0607b4aba 100644 ---- a/third_party/libwebrtc/modules/video_capture/linux/device_info_pipewire.cc -+++ b/third_party/libwebrtc/modules/video_capture/linux/device_info_pipewire.cc -@@ -29,13 +29,19 @@ - namespace webrtc { - namespace videocapturemodule { - DeviceInfoPipeWire::DeviceInfoPipeWire(VideoCaptureOptions* options) -- : DeviceInfoImpl(), pipewire_session_(options->pipewire_session()) {} -+ : DeviceInfoImpl(), pipewire_session_(options->pipewire_session()) { -+ const bool ret = pipewire_session_->RegisterDeviceInfo(this); -+ RTC_CHECK(ret); -+} - - int32_t DeviceInfoPipeWire::Init() { - return 0; - } - --DeviceInfoPipeWire::~DeviceInfoPipeWire() = default; -+DeviceInfoPipeWire::~DeviceInfoPipeWire() { -+ const bool ret = pipewire_session_->DeRegisterDeviceInfo(this); -+ RTC_CHECK(ret); -+} - - uint32_t DeviceInfoPipeWire::NumberOfDevices() { - RTC_CHECK(pipewire_session_); -diff --git a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -index ac12d04372..0b78c16df2 100644 ---- a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -+++ b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -@@ -9,6 +9,7 @@ - */ - - #include "modules/video_capture/linux/pipewire_session.h" -+#include "modules/video_capture/linux/device_info_pipewire.h" - - #include - #include -@@ -274,6 +275,28 @@ void PipeWireSession::InitPipeWire(int fd) { - Finish(VideoCaptureOptions::Status::ERROR); - } - -+bool PipeWireSession::RegisterDeviceInfo(DeviceInfoPipeWire* device_info) { -+ RTC_CHECK(device_info); -+ MutexLock lock(&device_info_lock_); -+ auto it = std::find(device_info_list_.begin(), device_info_list_.end(), device_info); -+ if (it == device_info_list_.end()) { -+ device_info_list_.push_back(device_info); -+ return true; -+ } -+ return false; -+} -+ -+bool PipeWireSession::DeRegisterDeviceInfo(DeviceInfoPipeWire* device_info) { -+ RTC_CHECK(device_info); -+ MutexLock lock(&device_info_lock_); -+ auto it = std::find(device_info_list_.begin(), device_info_list_.end(), device_info); -+ if (it != device_info_list_.end()) { -+ device_info_list_.erase(it); -+ return true; -+ } -+ return false; -+} -+ - bool PipeWireSession::StartPipeWire(int fd) { - pw_init(/*argc=*/nullptr, /*argv=*/nullptr); - -@@ -344,6 +367,21 @@ void PipeWireSession::PipeWireSync() { - sync_seq_ = pw_core_sync(pw_core_, PW_ID_CORE, sync_seq_); - } - -+void PipeWireSession::NotifyDeviceChange() { -+ RTC_LOG(LS_INFO) << "Notify about device list changes"; -+ MutexLock lock(&device_info_lock_); -+ -+ // It makes sense to notify about device changes only once we are -+ // properly initialized. -+ if (status_ != VideoCaptureOptions::Status::SUCCESS) { -+ return; -+ } -+ -+ for (auto* deviceInfo : device_info_list_) { -+ deviceInfo->DeviceChange(); -+ } -+} -+ - // static - void PipeWireSession::OnCoreError(void* data, - uint32_t id, -@@ -401,6 +439,8 @@ void PipeWireSession::OnRegistryGlobal(void* data, - - that->nodes_.push_back(PipeWireNode::Create(that, id, props)); - that->PipeWireSync(); -+ -+ that->NotifyDeviceChange(); - } - - // static -@@ -412,10 +452,15 @@ void PipeWireSession::OnRegistryGlobalRemove(void* data, uint32_t id) { - return node->id() == id; - }); - that->nodes_.erase(it, that->nodes_.end()); -+ -+ that->NotifyDeviceChange(); - } - - void PipeWireSession::Finish(VideoCaptureOptions::Status status) { -- status_ = status; -+ { -+ MutexLock lock(&device_info_lock_); -+ status_ = status; -+ } - - webrtc::MutexLock lock(&callback_lock_); - -diff --git a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.h b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.h -index 84273ea695..1f3a00614f 100644 ---- a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.h -+++ b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.h -@@ -29,6 +29,7 @@ - namespace webrtc { - namespace videocapturemodule { - -+class DeviceInfoPipeWire; - class PipeWireSession; - class VideoCaptureModulePipeWire; - -@@ -97,6 +98,21 @@ class PipeWireSession : public rtc::RefCountedNonVirtual { - - void Init(VideoCaptureOptions::Callback* callback, - int fd = kInvalidPipeWireFd); -+ -+ // [De]Register DeviceInfo for device change updates -+ // These methods will add or remove references to DeviceInfo -+ // objects that we want to notify about device changes. -+ // NOTE: We do not take ownership of these objects and -+ // they should never be released by us. All the instances -+ // of DeviceInfoPipeWire must outlive their registration. -+ -+ // Returns true when DeviceInfo was successfuly registered -+ // or false otherwise, when it was already registered before. -+ bool RegisterDeviceInfo(DeviceInfoPipeWire* device_info); -+ // Returns true when DeviceInfo was successfuly unregistered -+ // or false otherwise, when it was not previously registered. -+ bool DeRegisterDeviceInfo(DeviceInfoPipeWire* device_info); -+ - const std::deque& nodes() const { - return nodes_; - } -@@ -111,6 +127,8 @@ class PipeWireSession : public rtc::RefCountedNonVirtual { - void StopPipeWire(); - void PipeWireSync(); - -+ void NotifyDeviceChange(); -+ - static void OnCoreError(void* data, - uint32_t id, - int seq, -@@ -133,7 +151,13 @@ class PipeWireSession : public rtc::RefCountedNonVirtual { - VideoCaptureOptions::Callback* callback_ RTC_GUARDED_BY(&callback_lock_) = - nullptr; - -- VideoCaptureOptions::Status status_; -+ webrtc::Mutex device_info_lock_; -+ std::vector device_info_list_ -+ RTC_GUARDED_BY(device_info_lock_); -+ // Guard with device_info_lock, because currently it's the only place where -+ // we use this status information. -+ VideoCaptureOptions::Status status_ -+ RTC_GUARDED_BY(device_info_lock_); - - struct pw_thread_loop* pw_main_loop_ = nullptr; - struct pw_context* pw_context_ = nullptr; diff --git a/008-libwebrtc-pipewire-camera-get-max-fps-for-each-format-when-specified-as-list.patch b/008-libwebrtc-pipewire-camera-get-max-fps-for-each-format-when-specified-as-list.patch deleted file mode 100644 index 306b46e..0000000 --- a/008-libwebrtc-pipewire-camera-get-max-fps-for-each-format-when-specified-as-list.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 9d035f728745f13311ed13d057565ca3b45523aa Mon Sep 17 00:00:00 2001 -From: Jan Grulich -Date: Tue, 24 Sep 2024 11:20:02 +0000 -Subject: [PATCH] Bug 1920460 - WebRTC backport: PipeWire camera: get max FPS - for each format when specified as list r=pehrsons,webrtc-reviewers - -In many cases, the framerate can be specified as list of possible values -and in that case, we would end up with max FPS to be set to 0 as this -case was not handled. - -This is a simple backport of an WebRTC upstream change. - -Upstream commit: 3aa47cfd30dc965446cf1405bb062b756a62e6d1 - -Differential Revision: https://phabricator.services.mozilla.com/D223112 ---- - .../modules/video_capture/linux/pipewire_session.cc | 12 ++++++++++-- - .../moz-patch-stack/3aa47cfd30.no-op-cherry-pick-msg | 1 + - 2 files changed, 11 insertions(+), 2 deletions(-) - create mode 100644 third_party/libwebrtc/moz-patch-stack/3aa47cfd30.no-op-cherry-pick-msg - -diff --git a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -index d9bc49d521b03..e5db278ff6a99 100644 ---- a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -+++ b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -@@ -17,6 +17,8 @@ - #include - #include - -+#include -+ - #include "common_video/libyuv/include/webrtc_libyuv.h" - #include "modules/video_capture/device_info_impl.h" - #include "rtc_base/logging.h" -@@ -152,9 +154,15 @@ void PipeWireNode::OnNodeParam(void* data, - - fract = static_cast(SPA_POD_BODY(val)); - -- if (choice == SPA_CHOICE_None) -+ if (choice == SPA_CHOICE_None) { - cap.maxFPS = 1.0 * fract[0].num / fract[0].denom; -- else if (choice == SPA_CHOICE_Range && fract[1].num > 0) -+ } else if (choice == SPA_CHOICE_Enum) { -+ for (uint32_t i = 1; i < n_items; i++) { -+ cap.maxFPS = std::max( -+ static_cast(1.0 * fract[i].num / fract[i].denom), -+ cap.maxFPS); -+ } -+ } else if (choice == SPA_CHOICE_Range && fract[1].num > 0) - cap.maxFPS = 1.0 * fract[1].num / fract[1].denom; - } - } diff --git a/009-libwebrtc-pipewire-camera-use-exact-stream-parameters-specified-by-capability.patch b/009-libwebrtc-pipewire-camera-use-exact-stream-parameters-specified-by-capability.patch deleted file mode 100644 index fd85b01..0000000 --- a/009-libwebrtc-pipewire-camera-use-exact-stream-parameters-specified-by-capability.patch +++ /dev/null @@ -1,172 +0,0 @@ -From ca88b4994e140370ca5795c60f46559301458a98 Mon Sep 17 00:00:00 2001 -From: Jan Grulich -Date: Wed, 25 Sep 2024 06:52:35 +0000 -Subject: [PATCH] Bug 1920472 - WebRTC backport: PipeWire camera: use exact - stream parameters specified by capability r=pehrsons,webrtc-reviewers - -We currently specify stream parameters to be a range for both framerate -and resolution, where preferred value is specified. The preferred value -doesn't seem to be taken into account and we end up accepting resolution -from 1x1 to MAX_INTxMAX_INT. In case the other side tries to first match -with lower resolution than requested, we will happily match it and start -streaming low quality video. We should instead request the exact stream -parameters as specified by requested capability. This capability always -come from what has been originally reported as supported so it shouldn't -happen we don't find a matching stream. This also applies to requested -video format. We previously requested mjpg for streams with resolution -higher than 640x480, but it doesn't necessarily mean the camera supports -mjpg for the requested resolution. Again, refer to requested capability -in this case as it should indicate what is supported and we know we can -request exactly the same video format. It can happen that framerate is -set to 0 as unspecified. In that case keep using a range as before, but -with more sane values. - -This is a simple backport of an WebRTC upstream change. - -Upstream commit: 9703f8474f156e08e4a96dc36253f1cdccd549e1 - -Differential Revision: https://phabricator.services.mozilla.com/D223119 ---- - .../linux/video_capture_pipewire.cc | 85 +++++++++++-------- - .../linux/video_capture_pipewire.h | 1 + - .../9703f8474f.no-op-cherry-pick-msg | 1 + - 3 files changed, 52 insertions(+), 35 deletions(-) - create mode 100644 third_party/libwebrtc/moz-patch-stack/9703f8474f.no-op-cherry-pick-msg - -diff --git a/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.cc b/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.cc -index 1672b7583f..2338fa6d87 100644 ---- a/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.cc -+++ b/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.cc -@@ -51,10 +51,20 @@ VideoType VideoCaptureModulePipeWire::PipeWireRawFormatToVideoType( - if (spa_and_pixel_format.spa_format == spa_format) - return spa_and_pixel_format.video_type; - } -- RTC_LOG(LS_INFO) << "Unsupported pixel format: " << spa_format; -+ RTC_LOG(LS_WARNING) << "Unsupported pixel format: " << spa_format; - return VideoType::kUnknown; - } - -+uint32_t VideoCaptureModulePipeWire::VideoTypeToPipeWireRawFormat( -+ VideoType type) { -+ for (const auto& spa_and_pixel_format : kSupportedFormats) { -+ if (spa_and_pixel_format.video_type == type) -+ return spa_and_pixel_format.spa_format; -+ } -+ RTC_LOG(LS_WARNING) << "Unsupported video type: " << static_cast(type); -+ return SPA_VIDEO_FORMAT_UNKNOWN; -+} -+ - VideoCaptureModulePipeWire::VideoCaptureModulePipeWire( - VideoCaptureOptions* options) - : VideoCaptureImpl(), -@@ -87,45 +97,53 @@ int32_t VideoCaptureModulePipeWire::Init(const char* deviceUniqueId) { - } - - static spa_pod* BuildFormat(spa_pod_builder* builder, -- uint32_t format, -+ VideoType video_type, - uint32_t width, - uint32_t height, - float frame_rate) { -- spa_pod_frame frames[2]; -+ spa_pod_frame frame; -+ -+ const uint32_t media_subtype = video_type == VideoType::kMJPEG -+ ? SPA_MEDIA_SUBTYPE_mjpg -+ : SPA_MEDIA_SUBTYPE_raw; - -- spa_pod_builder_push_object(builder, &frames[0], SPA_TYPE_OBJECT_Format, -+ spa_pod_builder_push_object(builder, &frame, SPA_TYPE_OBJECT_Format, - SPA_PARAM_EnumFormat); - spa_pod_builder_add(builder, SPA_FORMAT_mediaType, - SPA_POD_Id(SPA_MEDIA_TYPE_video), SPA_FORMAT_mediaSubtype, -- SPA_POD_Id(format), 0); -- -- if (format == SPA_MEDIA_SUBTYPE_raw) { -- spa_pod_builder_prop(builder, SPA_FORMAT_VIDEO_format, 0); -- spa_pod_builder_push_choice(builder, &frames[1], SPA_CHOICE_Enum, 0); -- spa_pod_builder_id(builder, kSupportedFormats[0].spa_format); -- for (const auto& spa_and_pixel_format : kSupportedFormats) -- spa_pod_builder_id(builder, spa_and_pixel_format.spa_format); -- spa_pod_builder_pop(builder, &frames[1]); -- } -+ SPA_POD_Id(media_subtype), 0); - -- spa_rectangle preferred_size = spa_rectangle{width, height}; -- spa_rectangle min_size = spa_rectangle{1, 1}; -- spa_rectangle max_size = spa_rectangle{4096, 4096}; -- spa_pod_builder_add( -- builder, SPA_FORMAT_VIDEO_size, -- SPA_POD_CHOICE_RANGE_Rectangle(&preferred_size, &min_size, &max_size), 0); -+ if (media_subtype == SPA_MEDIA_SUBTYPE_raw) { -+ const uint32_t format = -+ VideoCaptureModulePipeWire::VideoTypeToPipeWireRawFormat(video_type); -+ RTC_CHECK(format != SPA_VIDEO_FORMAT_UNKNOWN); -+ spa_pod_builder_add(builder, SPA_FORMAT_VIDEO_format, SPA_POD_Id(format), -+ 0); -+ } - -- spa_fraction preferred_frame_rate = -- spa_fraction{static_cast(frame_rate), 1}; -- spa_fraction min_frame_rate = spa_fraction{0, 1}; -- spa_fraction max_frame_rate = spa_fraction{INT32_MAX, 1}; -- spa_pod_builder_add( -- builder, SPA_FORMAT_VIDEO_framerate, -- SPA_POD_CHOICE_RANGE_Fraction(&preferred_frame_rate, &min_frame_rate, -- &max_frame_rate), -- 0); -+ spa_rectangle resolution = spa_rectangle{width, height}; -+ spa_pod_builder_add(builder, SPA_FORMAT_VIDEO_size, -+ SPA_POD_Rectangle(&resolution), 0); -+ -+ // Framerate can be also set to 0 to be unspecified -+ if (frame_rate) { -+ spa_fraction framerate = spa_fraction{static_cast(frame_rate), 1}; -+ spa_pod_builder_add(builder, SPA_FORMAT_VIDEO_framerate, -+ SPA_POD_Fraction(&framerate), 0); -+ } else { -+ // Default to some reasonable values -+ spa_fraction preferred_frame_rate = -+ spa_fraction{static_cast(30), 1}; -+ spa_fraction min_frame_rate = spa_fraction{1, 1}; -+ spa_fraction max_frame_rate = spa_fraction{30, 1}; -+ spa_pod_builder_add( -+ builder, SPA_FORMAT_VIDEO_framerate, -+ SPA_POD_CHOICE_RANGE_Fraction(&preferred_frame_rate, &min_frame_rate, -+ &max_frame_rate), -+ 0); -+ } - -- return static_cast(spa_pod_builder_pop(builder, &frames[0])); -+ return static_cast(spa_pod_builder_pop(builder, &frame)); - } - - int32_t VideoCaptureModulePipeWire::StartCapture( -@@ -176,13 +194,10 @@ int32_t VideoCaptureModulePipeWire::StartCapture( - uint32_t width = capability.width; - uint32_t height = capability.height; - uint32_t frame_rate = capability.maxFPS; -- bool prefer_jpeg = (width > 640) || (height > 480); -+ VideoType video_type = capability.videoType; - - params.push_back( -- BuildFormat(&builder, SPA_MEDIA_SUBTYPE_raw, width, height, frame_rate)); -- params.insert( -- prefer_jpeg ? params.begin() : params.end(), -- BuildFormat(&builder, SPA_MEDIA_SUBTYPE_mjpg, width, height, frame_rate)); -+ BuildFormat(&builder, video_type, width, height, frame_rate)); - - int res = pw_stream_connect( - stream_, PW_DIRECTION_INPUT, node_id_, -diff --git a/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.h b/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.h -index eeb3b9497c..789f2034d3 100644 ---- a/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.h -+++ b/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.h -@@ -28,6 +28,7 @@ class VideoCaptureModulePipeWire : public VideoCaptureImpl { - int32_t CaptureSettings(VideoCaptureCapability& settings) override; - - static VideoType PipeWireRawFormatToVideoType(uint32_t format); -+ static uint32_t VideoTypeToPipeWireRawFormat(VideoType type); - - private: - static void OnStreamParamChanged(void* data, diff --git a/010-libwebrtc-pipewire-camera-use-better-unique-device-name-for-camera-devices.patch b/010-libwebrtc-pipewire-camera-use-better-unique-device-name-for-camera-devices.patch deleted file mode 100644 index 4cff2c5..0000000 --- a/010-libwebrtc-pipewire-camera-use-better-unique-device-name-for-camera-devices.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 12b7d28d858fdcfa80795a2af49a71d3b5142733 Mon Sep 17 00:00:00 2001 -From: Jan Grulich -Date: Tue, 12 Nov 2024 12:28:19 +0000 -Subject: [PATCH] Bug 1930598 - WebRTC backport: PipeWire camera: use better - unique device name for camera devices r=pehrsons,webrtc-reviewers - -Originally we used node id from PipeWire as an unique device name and -while this works, it will change everytime PipeWire is restarted. This -has an impact on default camera selection, where for example Firefox can -automatically request a camera device that was used before, but this can -break with the next PipeWire restart. - -This is a simple backport of an WebRTC upstream change. - -Upstream commit: a5d71009ac1dce7da23813dc9413c03073cfa8ca - -Differential Revision: https://phabricator.services.mozilla.com/D228635 ---- - .../modules/video_capture/linux/pipewire_session.cc | 2 +- - .../video_capture/linux/video_capture_pipewire.cc | 11 +++++++---- - .../moz-patch-stack/a5d71009ac.no-op-cherry-pick-msg | 1 + - 3 files changed, 9 insertions(+), 5 deletions(-) - create mode 100644 third_party/libwebrtc/moz-patch-stack/a5d71009ac.no-op-cherry-pick-msg - -diff --git a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -index 641e5238ea..dd187c0358 100644 ---- a/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -+++ b/third_party/libwebrtc/modules/video_capture/linux/pipewire_session.cc -@@ -74,7 +74,7 @@ PipeWireNode::PipeWireNode(PipeWireSession* session, - : session_(session), - id_(id), - display_name_(spa_dict_lookup(props, PW_KEY_NODE_DESCRIPTION)), -- unique_id_(rtc::ToString(id)) { -+ unique_id_(spa_dict_lookup(props, PW_KEY_NODE_NAME)) { - RTC_LOG(LS_VERBOSE) << "Found Camera: " << display_name_; - - proxy_ = static_cast(pw_registry_bind( -diff --git a/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.cc b/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.cc -index 2338fa6d87..888b8f386f 100644 ---- a/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.cc -+++ b/third_party/libwebrtc/modules/video_capture/linux/video_capture_pipewire.cc -@@ -82,12 +82,15 @@ int32_t VideoCaptureModulePipeWire::Init(const char* deviceUniqueId) { - RTC_CHECK_RUNS_SERIALIZED(&capture_checker_); - RTC_DCHECK_RUN_ON(&api_checker_); - -- absl::optional id; -- id = rtc::StringToNumber(deviceUniqueId); -- if (id == absl::nullopt) -+ auto node = -+ std::find_if(session_->nodes_.begin(), session_->nodes_.end(), -+ [deviceUniqueId](const PipeWireNode::PipeWireNodePtr& node) { -+ return node->unique_id() == deviceUniqueId; -+ }); -+ if (node == session_->nodes_.end()) - return -1; - -- node_id_ = id.value(); -+ node_id_ = (*node)->id(); - - const int len = strlen(deviceUniqueId); - _deviceUniqueId = new (std::nothrow) char[len + 1]; diff --git a/D224588.1728128098.diff b/D224588.1728128098.diff index 29d717f..4ee1bd2 100644 --- a/D224588.1728128098.diff +++ b/D224588.1728128098.diff @@ -1,9 +1,7 @@ -diff --git a/third_party/libsrtp/src/crypto/cipher/aes_gcm_nss.c b/third_party/libsrtp/src/crypto/cipher/aes_gcm_nss.c ---- a/third_party/libsrtp/src/crypto/cipher/aes_gcm_nss.c -+++ b/third_party/libsrtp/src/crypto/cipher/aes_gcm_nss.c -@@ -54,10 +54,11 @@ - #include "crypto_types.h" - #include "cipher_types.h" +diff -up firefox-140.0/third_party/libsrtp/src/crypto/cipher/aes_gcm_nss.c.D224588 firefox-140.0/third_party/libsrtp/src/crypto/cipher/aes_gcm_nss.c +--- firefox-140.0/third_party/libsrtp/src/crypto/cipher/aes_gcm_nss.c.D224588 2025-06-25 11:50:45.852066851 +0200 ++++ firefox-140.0/third_party/libsrtp/src/crypto/cipher/aes_gcm_nss.c 2025-06-25 11:50:45.908794290 +0200 +@@ -56,6 +56,7 @@ #include "cipher_test_cases.h" #include #include @@ -11,14 +9,10 @@ diff --git a/third_party/libsrtp/src/crypto/cipher/aes_gcm_nss.c b/third_party/l srtp_debug_module_t srtp_mod_aes_gcm = { 0, /* debugging is off by default */ - "aes gcm nss" /* printable module name */ - }; -@@ -211,12 +212,17 @@ - if (!slot) { - return (srtp_err_status_cipher_fail); - } - - SECItem key_item = { siBuffer, (unsigned char *)key, c->key_size }; +@@ -215,8 +216,13 @@ static srtp_err_status_t srtp_aes_gcm_ns + /* explicitly cast away const of key */ + SECItem key_item = { siBuffer, (unsigned char *)(uintptr_t)key, + c->key_size }; - c->key = PK11_ImportSymKey(slot, CKM_AES_GCM, PK11_OriginUnwrap, - CKA_ENCRYPT, &key_item, NULL); + if (PK11_IsFIPS()) { @@ -31,14 +25,10 @@ diff --git a/third_party/libsrtp/src/crypto/cipher/aes_gcm_nss.c b/third_party/l PK11_FreeSlot(slot); if (!c->key) { - return (srtp_err_status_cipher_fail); - } -diff --git a/third_party/libsrtp/src/crypto/cipher/aes_icm_nss.c b/third_party/libsrtp/src/crypto/cipher/aes_icm_nss.c ---- a/third_party/libsrtp/src/crypto/cipher/aes_icm_nss.c -+++ b/third_party/libsrtp/src/crypto/cipher/aes_icm_nss.c -@@ -51,10 +51,11 @@ - #include "crypto_types.h" - #include "err.h" /* for srtp_debug */ +diff -up firefox-140.0/third_party/libsrtp/src/crypto/cipher/aes_icm_nss.c.D224588 firefox-140.0/third_party/libsrtp/src/crypto/cipher/aes_icm_nss.c +--- firefox-140.0/third_party/libsrtp/src/crypto/cipher/aes_icm_nss.c.D224588 2025-06-17 18:15:28.000000000 +0200 ++++ firefox-140.0/third_party/libsrtp/src/crypto/cipher/aes_icm_nss.c 2025-06-25 11:50:45.909171218 +0200 +@@ -53,6 +53,7 @@ #include "alloc.h" #include "cipher_types.h" #include "cipher_test_cases.h" @@ -46,14 +36,10 @@ diff --git a/third_party/libsrtp/src/crypto/cipher/aes_icm_nss.c b/third_party/l srtp_debug_module_t srtp_mod_aes_icm = { 0, /* debugging is off by default */ - "aes icm nss" /* printable module name */ - }; -@@ -252,12 +253,17 @@ - if (!slot) { - return srtp_err_status_bad_param; - } - - SECItem keyItem = { siBuffer, (unsigned char *)key, c->key_size }; +@@ -257,8 +258,13 @@ static srtp_err_status_t srtp_aes_icm_ns + /* explicitly cast away const of key */ + SECItem keyItem = { siBuffer, (unsigned char *)(uintptr_t)key, + c->key_size }; - c->key = PK11_ImportSymKey(slot, CKM_AES_CTR, PK11_OriginUnwrap, - CKA_ENCRYPT, &keyItem, NULL); + if (PK11_IsFIPS()) { @@ -66,12 +52,9 @@ diff --git a/third_party/libsrtp/src/crypto/cipher/aes_icm_nss.c b/third_party/l PK11_FreeSlot(slot); if (!c->key) { - return srtp_err_status_cipher_fail; - } -diff --git a/third_party/libsrtp/src/crypto/include/nss_fips.h b/third_party/libsrtp/src/crypto/include/nss_fips.h -new file mode 100644 ---- /dev/null -+++ b/third_party/libsrtp/src/crypto/include/nss_fips.h +diff -up firefox-140.0/third_party/libsrtp/src/crypto/include/nss_fips.h.D224588 firefox-140.0/third_party/libsrtp/src/crypto/include/nss_fips.h +--- firefox-140.0/third_party/libsrtp/src/crypto/include/nss_fips.h.D224588 2025-06-25 11:50:45.909524312 +0200 ++++ firefox-140.0/third_party/libsrtp/src/crypto/include/nss_fips.h 2025-06-25 11:50:45.909524312 +0200 @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2024, Red Hat, Inc. @@ -221,4 +204,3 @@ new file mode 100644 + } + +#endif // NSS_FIPS_H - diff --git a/D245908.clear-lang-bundles.diff b/D245908.clear-lang-bundles.diff new file mode 100644 index 0000000..f03399b --- /dev/null +++ b/D245908.clear-lang-bundles.diff @@ -0,0 +1,16 @@ +diff --git a/intl/strres/nsStringBundle.cpp b/intl/strres/nsStringBundle.cpp +--- a/intl/strres/nsStringBundle.cpp ++++ b/intl/strres/nsStringBundle.cpp +@@ -753,10 +753,11 @@ + const char16_t* aSomeData) { + if (strcmp("profile-do-change", aTopic) == 0 || + strcmp("chrome-flush-caches", aTopic) == 0 || + strcmp("intl:app-locales-changed", aTopic) == 0) { + flushBundleCache(/* ignoreShared = */ false); ++ mBundleMap.Clear(); + } else if (strcmp("memory-pressure", aTopic) == 0) { + flushBundleCache(/* ignoreShared = */ true); + } + + return NS_OK; + diff --git a/D249071.restoreWinState.diff b/D249071.restoreWinState.diff new file mode 100644 index 0000000..d089634 --- /dev/null +++ b/D249071.restoreWinState.diff @@ -0,0 +1,53 @@ +diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml +--- a/modules/libpref/init/StaticPrefList.yaml ++++ b/modules/libpref/init/StaticPrefList.yaml +@@ -1762,10 +1762,16 @@ + - name: browser.privatebrowsing.forceMediaMemoryCache + type: bool + value: false + mirror: always + ++# Disable state restoration, allowing the kiosk desktop environment to manage state and position. ++- name: browser.restoreWindowState.disabled ++ type: bool ++ value: false ++ mirror: always ++ + # Communicates the toolbar color to platform (for e.g., prefers-color-scheme). + # + # Returns whether the toolbar is dark (0), light (1), or system (2). The + # theming code overrides it if appropriate. + - name: browser.theme.toolbar-theme +diff --git a/xpfe/appshell/AppWindow.cpp b/xpfe/appshell/AppWindow.cpp +--- a/xpfe/appshell/AppWindow.cpp ++++ b/xpfe/appshell/AppWindow.cpp +@@ -58,10 +58,11 @@ + #include "mozilla/AutoRestore.h" + #include "mozilla/Preferences.h" + #include "mozilla/PresShell.h" + #include "mozilla/Services.h" + #include "mozilla/SpinEventLoopUntil.h" ++#include "mozilla/StaticPrefs_browser.h" + #include "mozilla/dom/BarProps.h" + #include "mozilla/dom/DOMRect.h" + #include "mozilla/dom/Element.h" + #include "mozilla/dom/Event.h" + #include "mozilla/dom/ScriptSettings.h" +@@ -2393,10 +2394,16 @@ + nsCOMPtr docShellElement = GetWindowDOMElement(); + if (!docShellElement) { + return; + } + ++ // Disable state restoration, allowing the kiosk desktop environment ++ // to manage state and position. ++ if (StaticPrefs::browser_restoreWindowState_disabled()) { ++ return; ++ } ++ + // Check if the window wants to persist anything. + nsAutoString persist; + docShellElement->GetAttr(nsGkAtoms::persist, persist); + if (persist.IsEmpty()) { + return; + diff --git a/av1-else-condition-add.patch b/av1-else-condition-add.patch new file mode 100644 index 0000000..4dc7763 --- /dev/null +++ b/av1-else-condition-add.patch @@ -0,0 +1,14 @@ +diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml +index acadd3a2cc..11b217174d 100644 +--- a/modules/libpref/init/StaticPrefList.yaml ++++ b/modules/libpref/init/StaticPrefList.yaml +@@ -12561,6 +12561,8 @@ + type: RelaxedAtomicBool + #if defined(MOZ_AV1) + value: true ++#else ++ value: false + #endif + mirror: always + + diff --git a/build-ffvpx.patch b/build-ffvpx.patch index 09e60bb..6172b9b 100644 --- a/build-ffvpx.patch +++ b/build-ffvpx.patch @@ -1,24 +1,24 @@ -diff -up thunderbird-128.0/media/ffvpx/libavcodec/av1dec.c.build-ffvpx thunderbird-128.0/media/ffvpx/libavcodec/av1dec.c ---- thunderbird-128.0/media/ffvpx/libavcodec/av1dec.c.build-ffvpx 2024-06-24 22:43:40.000000000 +0200 -+++ thunderbird-128.0/media/ffvpx/libavcodec/av1dec.c 2024-07-10 11:20:23.200948767 +0200 -@@ -887,7 +887,7 @@ static av_cold int av1_decode_init(AVCod +diff -up firefox-140.1.0/media/ffvpx/libavcodec/av1dec.c.build-ffvpx firefox-140.1.0/media/ffvpx/libavcodec/av1dec.c +--- firefox-140.1.0/media/ffvpx/libavcodec/av1dec.c.build-ffvpx 2025-07-14 19:14:53.000000000 +0200 ++++ firefox-140.1.0/media/ffvpx/libavcodec/av1dec.c 2025-07-31 13:02:48.131126439 +0200 +@@ -904,7 +904,7 @@ static av_cold int av1_decode_init(AVCod ff_cbs_fragment_reset(&s->current_obu); } - s->dovi.logctx = avctx; + s->dovi.logctx = (AVContext *) avctx; - s->dovi.dv_profile = 10; // default for AV1 + s->dovi.cfg.dv_profile = 10; // default for AV1 sd = ff_get_coded_side_data(avctx, AV_PKT_DATA_DOVI_CONF); - if (sd && sd->size > 0) -diff -up thunderbird-128.0/media/ffvpx/libavcodec/libdav1d.c.build-ffvpx thunderbird-128.0/media/ffvpx/libavcodec/libdav1d.c ---- thunderbird-128.0/media/ffvpx/libavcodec/libdav1d.c.build-ffvpx 2024-07-10 12:46:57.005539959 +0200 -+++ thunderbird-128.0/media/ffvpx/libavcodec/libdav1d.c 2024-07-10 12:47:19.067507705 +0200 -@@ -289,7 +289,7 @@ static av_cold int libdav1d_init(AVCodec + if (sd && sd->size >= sizeof(s->dovi.cfg)) +diff -up firefox-140.1.0/media/ffvpx/libavcodec/libdav1d.c.build-ffvpx firefox-140.1.0/media/ffvpx/libavcodec/libdav1d.c +--- firefox-140.1.0/media/ffvpx/libavcodec/libdav1d.c.build-ffvpx 2025-07-14 19:14:54.000000000 +0200 ++++ firefox-140.1.0/media/ffvpx/libavcodec/libdav1d.c 2025-07-31 13:03:08.395175190 +0200 +@@ -293,7 +293,7 @@ static av_cold int libdav1d_init(AVCodec c->delay = res > 1 ? res : 0; #endif - dav1d->dovi.logctx = c; + dav1d->dovi.logctx = (AVContext *) c; - dav1d->dovi.dv_profile = 10; // default for AV1 + dav1d->dovi.cfg.dv_profile = 10; // default for AV1 sd = ff_get_coded_side_data(c, AV_PKT_DATA_DOVI_CONF); - if (sd && sd->size > 0) + if (sd && sd->size >= sizeof(dav1d->dovi.cfg)) diff --git a/build-libaom.patch b/build-libaom.patch index cab71b5..09ffdbb 100644 --- a/build-libaom.patch +++ b/build-libaom.patch @@ -1,12 +1,13 @@ diff -up firefox-128.0/config/external/moz.build.libaom firefox-128.0/config/external/moz.build --- firefox-128.0/config/external/moz.build.libaom 2024-07-31 15:32:39.460374047 +0200 +++ firefox-128.0/config/external/moz.build 2024-07-31 15:34:41.646064796 +0200 -@@ -39,8 +39,8 @@ if CONFIG["MOZ_VORBIS"]: +@@ -39,9 +39,9 @@ if CONFIG["MOZ_VORBIS"]: + if not CONFIG["MOZ_SYSTEM_LIBVPX"]: external_dirs += ["media/libvpx"] - +external_dirs += ["media/libaom"] - if CONFIG["MOZ_AV1"]: + + if not CONFIG["MOZ_SYSTEM_AV1"]: - external_dirs += ["media/libaom"] external_dirs += ["media/libdav1d"] diff --git a/build-rhel7-lower-node-min-version.patch b/build-rhel7-lower-node-min-version.patch index 398cbc3..a167271 100644 --- a/build-rhel7-lower-node-min-version.patch +++ b/build-rhel7-lower-node-min-version.patch @@ -1,8 +1,9 @@ ---- firefox-115.8.0/python/mozbuild/mozbuild/nodeutil.py.lower-node-min-version 2024-02-12 21:53:56.000000000 +0200 -+++ firefox-115.8.0/python/mozbuild/mozbuild/nodeutil.py 2024-02-14 16:48:12.476182627 +0200 -@@ -13,7 +13,7 @@ from mozboot.util import get_tools_dir +diff -up firefox-140.0/python/mozbuild/mozbuild/nodeutil.py.build-rhel7-lower-node-min-version firefox-140.0/python/mozbuild/mozbuild/nodeutil.py +--- firefox-140.0/python/mozbuild/mozbuild/nodeutil.py.build-rhel7-lower-node-min-version 2025-06-02 15:26:51.000000000 +0200 ++++ firefox-140.0/python/mozbuild/mozbuild/nodeutil.py 2025-06-12 11:54:37.075505124 +0200 +@@ -10,7 +10,7 @@ from mozboot.util import get_tools_dir + from mozfile import which from packaging.version import Version - from six import PY3 -NODE_MIN_VERSION = Version("12.22.12") +NODE_MIN_VERSION = Version("10.24.0") diff --git a/build-rhel7-nasm-dwarf.patch b/build-rhel7-nasm-dwarf.patch index 5e2ba4a..e8b48e0 100644 --- a/build-rhel7-nasm-dwarf.patch +++ b/build-rhel7-nasm-dwarf.patch @@ -1,12 +1,12 @@ -diff -up firefox-91.0.1/python/mozbuild/mozbuild/frontend/context.py.rhel7-nasm firefox-91.0.1/python/mozbuild/mozbuild/frontend/context.py ---- firefox-91.0.1/python/mozbuild/mozbuild/frontend/context.py.rhel7-nasm 2021-08-31 08:02:10.814740774 +0200 -+++ firefox-91.0.1/python/mozbuild/mozbuild/frontend/context.py 2021-08-31 08:04:03.967146994 +0200 -@@ -420,7 +420,7 @@ class AsmFlags(BaseCompileFlags): +diff -up firefox-140.0/python/mozbuild/mozbuild/frontend/context.py.build-rhel7-nasm-dwarf firefox-140.0/python/mozbuild/mozbuild/frontend/context.py +--- firefox-140.0/python/mozbuild/mozbuild/frontend/context.py.build-rhel7-nasm-dwarf 2025-06-02 15:26:51.000000000 +0200 ++++ firefox-140.0/python/mozbuild/mozbuild/frontend/context.py 2025-06-12 12:09:56.398728745 +0200 +@@ -417,7 +417,7 @@ class AsmFlags(BaseCompileFlags): if self._context.config.substs.get("OS_ARCH") == "WINNT": debug_flags += ["-F", "cv8"] elif self._context.config.substs.get("OS_ARCH") != "Darwin": - debug_flags += ["-F", "dwarf"] -+ debug_flags += ["-f", "elf32"] - elif ( - self._context.config.substs.get("OS_ARCH") == "WINNT" - and self._context.config.substs.get("CPU_ARCH") == "aarch64" ++ debug_flags += ["-F", "elf32"] + elif self._context.config.substs.get("CC_TYPE") == "clang-cl": + if self._context.config.substs.get("TARGET_CPU") == "aarch64": + # armasm64 accepts a paucity of options compared to ml/ml64. diff --git a/build-system-nss.patch b/build-system-nss.patch new file mode 100644 index 0000000..ce3ec4e --- /dev/null +++ b/build-system-nss.patch @@ -0,0 +1,20 @@ +diff -up firefox-140.0/third_party/rust/neqo-crypto/.cargo-checksum.json.system-nss firefox-140.0/third_party/rust/neqo-crypto/.cargo-checksum.json +--- firefox-140.0/third_party/rust/neqo-crypto/.cargo-checksum.json.system-nss 2025-07-25 10:17:19.112202464 +0200 ++++ firefox-140.0/third_party/rust/neqo-crypto/.cargo-checksum.json 2025-07-25 10:17:55.824333955 +0200 +@@ -1 +1 @@ +-{"files":{"Cargo.toml":"a57adef48614a58209447e8bd115a2de3d8a42917a0b9a2ae9a97cabc3400c6a","bindings/bindings.toml":"e7e4b75736cfcf4d52febacb99a6f6c6c7b1d648ed8bdc424648be876c850e91","bindings/nspr_err.h":"2d5205d017b536c2d838bcf9bc4ec79f96dd50e7bb9b73892328781f1ee6629d","bindings/nspr_error.h":"e41c03c77b8c22046f8618832c9569fbcc7b26d8b9bbc35eea7168f35e346889","bindings/nspr_io.h":"085b289849ef0e77f88512a27b4d9bdc28252bd4d39c6a17303204e46ef45f72","bindings/nspr_time.h":"2e637fd338a5cf0fd3fb0070a47f474a34c2a7f4447f31b6875f5a9928d0a261","bindings/nss_ciphers.h":"95ec6344a607558b3c5ba8510f463b6295f3a2fb3f538a01410531045a5f62d1","bindings/nss_init.h":"ef49045063782fb612aff459172cc6a89340f15005808608ade5320ca9974310","bindings/nss_p11.h":"0b81e64fe6db49b2ecff94edd850be111ef99ec11220e88ceb1c67be90143a78","bindings/nss_secerr.h":"713e8368bdae5159af7893cfa517dabfe5103cede051dee9c9557c850a2defc6","bindings/nss_ssl.h":"af222fb957b989e392e762fa2125c82608a0053aff4fb97e556691646c88c335","bindings/nss_sslerr.h":"24b97f092183d8486f774cdaef5030d0249221c78343570d83a4ee5b594210ae","bindings/nss_sslopt.h":"b7807eb7abdad14db6ad7bc51048a46b065a0ea65a4508c95a12ce90e59d1eea","build.rs":"2f54f79958878ed7988441955344dd1a2a079b1bb409e8f12a70284fd7e351ef","min_version.txt":"0f9ddf9ddaeb5137a5ab3d238d06286822f9579b1f46ba76312a8c6d76176500","src/aead.rs":"08d7cad82e3bec32661cfd1689e6611b30ae328ec88481cb32201dd255777365","src/aead_null.rs":"a766e2f71fd8b77a8f81bc60aaaafcffb6aef1f0a1f39ea07fef45b3696718ce","src/agent.rs":"ec90d7556231c57da3a191f508eaf1f820f22d6b7912ee45d1a594eb0fea7a82","src/agentio.rs":"1baecfb725b54717a6a74bb4664692d187f62747cc5e0495f59b06729f96dea2","src/auth.rs":"7a1524bef0a0c71616f5ee8b3976d66201210b809271bcf5d06c0e560ae482af","src/cert.rs":"4fdaa3834d8a72f41198449010fd5c3f6be6a54e429427c37bde5aab9421585c","src/constants.rs":"83606aeb646b2833a8094f9d980c266ecc3e8cb40c93a4820da221988319dd1a","src/ech.rs":"19d16af5a30e2060a8942a72487bd820c0d9c62ff1d3c490871752c56781c44b","src/err.rs":"4c7d0b46955b58aa9375210c2c5d24012056c3ad8a856b72d2c7c9542cc97046","src/exp.rs":"cd864fb5a61cd1472baa5b1d0951fc712753c22d21af83ebed09a01585f33b48","src/ext.rs":"a5676f8b9815cc7f6ed1da6fea091cf8754d8b80e90d37b726e905abe18930f8","src/hkdf.rs":"76c5abc8b2d6ee12d8a86cd730af2cf47a59b2fbfd3b8a635a1826636156794d","src/hp.rs":"6adf4ad78b5a065ab7310c69ad239eec156256043e2c185bf60b9d1f12ab1be4","src/lib.rs":"3ab979c264a909e663c5ef140cd57013180745b99937671c73a9003ca6347f41","src/min_version.rs":"c6e1f98b9f56db0622ac38c1be131c55acf4a0f09ed0d6283f4d6308e2d1301a","src/p11.rs":"49bcde067e55228dab483bd11b70dc29d40dc3c59fa60136daccb205dc468df0","src/prio.rs":"1858088afd2668e8fbff56959765b7d4df09342371b9282ade27bb4d7bd6ce69","src/replay.rs":"594ce92f368cbc5fb71ebfb62214f07d1e86df8e5ce94255d5593ffabb91cd03","src/result.rs":"5a76688787741de7a935dbbab4bcb917d481d1c9c50a34df7e510036feb3da17","src/secrets.rs":"5d85b1e15f47cd267fe70fa8ea7e4ebc4b07eab7713f451afeefcf15f146f8a5","src/selfencrypt.rs":"4f106465f582c38d3bb04cb5cbcbf65a349e3186784726d9f2bf511a4a4a35ee","src/ssl.rs":"04950bb534b5304eb417909a3a39ebaa9be234c7c13eacdc41c00a8edab1b09f","src/time.rs":"22989caf3dab85cfe955cc279fcca98a6df02d14fcd0e93cac7b39374b8b5763","tests/aead.rs":"e36ae77802df1ea6d17cfd1bd2178a3706089577d6fd1554ca86e748b8b235b9","tests/agent.rs":"fb95a2d5c86ce3fafcb127cd0a2a163e5ee70baf09b2c8483e4d1fb25644cee2","tests/ext.rs":"57af4e2df211fa8afdb73125d4344ef5c70c1ea4579107c3e6f5746308ee3e7b","tests/handshake.rs":"df8a901048268a390785e05e28cbc97b82e41e47d7eab2d5c0a57e434ca1adcf","tests/hkdf.rs":"1d2098dc8398395864baf13e4886cfd1da6d36118727c3b264f457ee3da6b048","tests/hp.rs":"7ee5d7290a3f61af67ad2c94670cba376027136370d9784948db655b7e00fe54","tests/init.rs":"3cfe8411ca31ad7dfb23822bb1570e1a5b2b334857173bdd7df086b65b81d95a","tests/selfencrypt.rs":"b65aed70e83dce660017159fc8a956d3b52e0807b590ad8d0a3a4265caa8c1fa"},"package":null} +\ No newline at end of file ++{"files":{"Cargo.toml":"a57adef48614a58209447e8bd115a2de3d8a42917a0b9a2ae9a97cabc3400c6a","bindings/bindings.toml":"e7e4b75736cfcf4d52febacb99a6f6c6c7b1d648ed8bdc424648be876c850e91","bindings/nspr_err.h":"2d5205d017b536c2d838bcf9bc4ec79f96dd50e7bb9b73892328781f1ee6629d","bindings/nspr_error.h":"e41c03c77b8c22046f8618832c9569fbcc7b26d8b9bbc35eea7168f35e346889","bindings/nspr_io.h":"085b289849ef0e77f88512a27b4d9bdc28252bd4d39c6a17303204e46ef45f72","bindings/nspr_time.h":"2e637fd338a5cf0fd3fb0070a47f474a34c2a7f4447f31b6875f5a9928d0a261","bindings/nss_ciphers.h":"95ec6344a607558b3c5ba8510f463b6295f3a2fb3f538a01410531045a5f62d1","bindings/nss_init.h":"ef49045063782fb612aff459172cc6a89340f15005808608ade5320ca9974310","bindings/nss_p11.h":"0b81e64fe6db49b2ecff94edd850be111ef99ec11220e88ceb1c67be90143a78","bindings/nss_secerr.h":"713e8368bdae5159af7893cfa517dabfe5103cede051dee9c9557c850a2defc6","bindings/nss_ssl.h":"af222fb957b989e392e762fa2125c82608a0053aff4fb97e556691646c88c335","bindings/nss_sslerr.h":"24b97f092183d8486f774cdaef5030d0249221c78343570d83a4ee5b594210ae","bindings/nss_sslopt.h":"b7807eb7abdad14db6ad7bc51048a46b065a0ea65a4508c95a12ce90e59d1eea","build.rs":"2f54f79958878ed7988441955344dd1a2a079b1bb409e8f12a70284fd7e351ef","min_version.txt":"0f9ddf9ddaeb5137a5ab3d238d06286822f9579b1f46ba76312a8c6d76176500","src/aead.rs":"08d7cad82e3bec32661cfd1689e6611b30ae328ec88481cb32201dd255777365","src/aead_null.rs":"a766e2f71fd8b77a8f81bc60aaaafcffb6aef1f0a1f39ea07fef45b3696718ce","src/agent.rs":"ec90d7556231c57da3a191f508eaf1f820f22d6b7912ee45d1a594eb0fea7a82","src/agentio.rs":"1baecfb725b54717a6a74bb4664692d187f62747cc5e0495f59b06729f96dea2","src/auth.rs":"7a1524bef0a0c71616f5ee8b3976d66201210b809271bcf5d06c0e560ae482af","src/cert.rs":"4fdaa3834d8a72f41198449010fd5c3f6be6a54e429427c37bde5aab9421585c","src/constants.rs":"50c1b84e06cd9a71bb9199f2518947a4d4ad3e5c33c1b86c585486dc43e872a0","src/ech.rs":"19d16af5a30e2060a8942a72487bd820c0d9c62ff1d3c490871752c56781c44b","src/err.rs":"4c7d0b46955b58aa9375210c2c5d24012056c3ad8a856b72d2c7c9542cc97046","src/exp.rs":"cd864fb5a61cd1472baa5b1d0951fc712753c22d21af83ebed09a01585f33b48","src/ext.rs":"a5676f8b9815cc7f6ed1da6fea091cf8754d8b80e90d37b726e905abe18930f8","src/hkdf.rs":"76c5abc8b2d6ee12d8a86cd730af2cf47a59b2fbfd3b8a635a1826636156794d","src/hp.rs":"6adf4ad78b5a065ab7310c69ad239eec156256043e2c185bf60b9d1f12ab1be4","src/lib.rs":"3ab979c264a909e663c5ef140cd57013180745b99937671c73a9003ca6347f41","src/min_version.rs":"c6e1f98b9f56db0622ac38c1be131c55acf4a0f09ed0d6283f4d6308e2d1301a","src/p11.rs":"49bcde067e55228dab483bd11b70dc29d40dc3c59fa60136daccb205dc468df0","src/prio.rs":"1858088afd2668e8fbff56959765b7d4df09342371b9282ade27bb4d7bd6ce69","src/replay.rs":"594ce92f368cbc5fb71ebfb62214f07d1e86df8e5ce94255d5593ffabb91cd03","src/result.rs":"5a76688787741de7a935dbbab4bcb917d481d1c9c50a34df7e510036feb3da17","src/secrets.rs":"5d85b1e15f47cd267fe70fa8ea7e4ebc4b07eab7713f451afeefcf15f146f8a5","src/selfencrypt.rs":"4f106465f582c38d3bb04cb5cbcbf65a349e3186784726d9f2bf511a4a4a35ee","src/ssl.rs":"04950bb534b5304eb417909a3a39ebaa9be234c7c13eacdc41c00a8edab1b09f","src/time.rs":"22989caf3dab85cfe955cc279fcca98a6df02d14fcd0e93cac7b39374b8b5763","tests/aead.rs":"e36ae77802df1ea6d17cfd1bd2178a3706089577d6fd1554ca86e748b8b235b9","tests/agent.rs":"fb95a2d5c86ce3fafcb127cd0a2a163e5ee70baf09b2c8483e4d1fb25644cee2","tests/ext.rs":"57af4e2df211fa8afdb73125d4344ef5c70c1ea4579107c3e6f5746308ee3e7b","tests/handshake.rs":"df8a901048268a390785e05e28cbc97b82e41e47d7eab2d5c0a57e434ca1adcf","tests/hkdf.rs":"1d2098dc8398395864baf13e4886cfd1da6d36118727c3b264f457ee3da6b048","tests/hp.rs":"7ee5d7290a3f61af67ad2c94670cba376027136370d9784948db655b7e00fe54","tests/init.rs":"3cfe8411ca31ad7dfb23822bb1570e1a5b2b334857173bdd7df086b65b81d95a","tests/selfencrypt.rs":"b65aed70e83dce660017159fc8a956d3b52e0807b590ad8d0a3a4265caa8c1fa"},"package":null} +\ No newline at end of file +diff -up firefox-140.0/third_party/rust/neqo-crypto/src/constants.rs.system-nss firefox-140.0/third_party/rust/neqo-crypto/src/constants.rs +--- firefox-140.0/third_party/rust/neqo-crypto/src/constants.rs.system-nss 2025-07-25 10:16:27.299270237 +0200 ++++ firefox-140.0/third_party/rust/neqo-crypto/src/constants.rs 2025-07-25 10:16:39.698529915 +0200 +@@ -83,7 +83,7 @@ remap_enum! { + TLS_GRP_EC_SECP521R1 = ssl_grp_ec_secp521r1, + TLS_GRP_EC_X25519 = ssl_grp_ec_curve25519, + TLS_GRP_KEM_XYBER768D00 = ssl_grp_kem_xyber768d00, +- TLS_GRP_KEM_MLKEM768X25519 = ssl_grp_kem_mlkem768x25519, ++ TLS_GRP_KEM_MLKEM768X25519 = ssl_grp_kem_x25519mlkem768, + } + } + diff --git a/disable-pipewire.patch b/disable-pipewire.patch deleted file mode 100644 index 84017de..0000000 --- a/disable-pipewire.patch +++ /dev/null @@ -1,274 +0,0 @@ -diff -up firefox-128.0/dom/media/webrtc/third_party_build/webrtc.mozbuild.disable-pipewire firefox-128.0/dom/media/webrtc/third_party_build/webrtc.mozbuild ---- firefox-128.0/dom/media/webrtc/third_party_build/webrtc.mozbuild.disable-pipewire 2024-07-17 14:01:36.290603114 +0200 -+++ firefox-128.0/dom/media/webrtc/third_party_build/webrtc.mozbuild 2024-07-17 14:52:02.039208338 +0200 -@@ -31,7 +31,7 @@ if CONFIG["MOZ_WEBRTC"]: - and CONFIG["TARGET_CPU"].startswith("mips") - ) - ): -- DEFINES["WEBRTC_USE_PIPEWIRE"] = True -+ DEFINES["WEBRTC_USE_PIPEWIRE"] = False - elif CONFIG["OS_TARGET"] == "Darwin": - DEFINES["WEBRTC_MAC"] = True - elif CONFIG["OS_TARGET"] == "WINNT": -diff -up firefox-128.0/third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn/moz.build.disable-pipewire firefox-128.0/third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn/moz.build ---- firefox-128.0/third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn/moz.build.disable-pipewire 2024-07-17 14:01:36.291603109 +0200 -+++ firefox-128.0/third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn/moz.build 2024-07-17 14:56:35.419826494 +0200 -@@ -241,102 +241,6 @@ if CONFIG["TARGET_CPU"] == "aarch64": - DEFINES["WEBRTC_ARCH_ARM64"] = True - DEFINES["WEBRTC_HAS_NEON"] = True - --if CONFIG["TARGET_CPU"] == "arm": -- -- CXXFLAGS += [ -- "-mfpu=neon" -- ] -- -- DEFINES["WEBRTC_ARCH_ARM"] = True -- DEFINES["WEBRTC_ARCH_ARM_V7"] = True -- DEFINES["WEBRTC_HAS_NEON"] = True -- DEFINES["WEBRTC_USE_PIPEWIRE"] = True -- DEFINES["_GNU_SOURCE"] = True -- -- LOCAL_INCLUDES += [ -- "/gfx/angle/checkout/include/", -- "/third_party/drm/drm/", -- "/third_party/drm/drm/include/", -- "/third_party/drm/drm/include/libdrm/", -- "/third_party/gbm/gbm/", -- "/third_party/libepoxy/libepoxy/include/", -- "/third_party/pipewire/" -- ] -- -- SOURCES += [ -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc" -- ] -- -- UNIFIED_SOURCES += [ -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/mouse_cursor_monitor_pipewire.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/restore_token_manager.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screen_capture_portal_interface.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_portal.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_stream_utils.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc" -- ] -- --if CONFIG["TARGET_CPU"] == "mips32": -- -- DEFINES["MIPS32_LE"] = True -- DEFINES["MIPS_FPU_LE"] = True -- DEFINES["WEBRTC_USE_PIPEWIRE"] = True -- DEFINES["_GNU_SOURCE"] = True -- -- LOCAL_INCLUDES += [ -- "/gfx/angle/checkout/include/", -- "/third_party/drm/drm/", -- "/third_party/drm/drm/include/", -- "/third_party/drm/drm/include/libdrm/", -- "/third_party/gbm/gbm/", -- "/third_party/libepoxy/libepoxy/include/", -- "/third_party/pipewire/" -- ] -- -- SOURCES += [ -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc" -- ] -- -- UNIFIED_SOURCES += [ -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/mouse_cursor_monitor_pipewire.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/restore_token_manager.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screen_capture_portal_interface.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_portal.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_stream_utils.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc" -- ] -- --if CONFIG["TARGET_CPU"] == "mips64": -- -- DEFINES["WEBRTC_USE_PIPEWIRE"] = True -- DEFINES["_GNU_SOURCE"] = True -- -- LOCAL_INCLUDES += [ -- "/gfx/angle/checkout/include/", -- "/third_party/drm/drm/", -- "/third_party/drm/drm/include/", -- "/third_party/drm/drm/include/libdrm/", -- "/third_party/gbm/gbm/", -- "/third_party/libepoxy/libepoxy/include/", -- "/third_party/pipewire/" -- ] -- -- SOURCES += [ -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc" -- ] -- -- UNIFIED_SOURCES += [ -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/mouse_cursor_monitor_pipewire.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/restore_token_manager.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screen_capture_portal_interface.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_portal.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_stream_utils.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc" -- ] -- - if CONFIG["TARGET_CPU"] == "ppc64": - - DEFINES["USE_X11"] = "1" -@@ -389,35 +293,6 @@ if CONFIG["MOZ_DEBUG"] == "1" and CONFIG - - DEFINES["_HAS_ITERATOR_DEBUGGING"] = "0" - --if CONFIG["OS_TARGET"] == "Linux" and CONFIG["TARGET_CPU"] == "aarch64": -- -- DEFINES["WEBRTC_USE_PIPEWIRE"] = True -- DEFINES["_GNU_SOURCE"] = True -- -- LOCAL_INCLUDES += [ -- "/gfx/angle/checkout/include/", -- "/third_party/drm/drm/", -- "/third_party/drm/drm/include/", -- "/third_party/drm/drm/include/libdrm/", -- "/third_party/gbm/gbm/", -- "/third_party/libepoxy/libepoxy/include/", -- "/third_party/pipewire/" -- ] -- -- SOURCES += [ -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc" -- ] -- -- UNIFIED_SOURCES += [ -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/mouse_cursor_monitor_pipewire.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/restore_token_manager.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screen_capture_portal_interface.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_portal.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_stream_utils.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc" -- ] -- - if CONFIG["OS_TARGET"] == "Linux" and CONFIG["TARGET_CPU"] == "riscv64": - - DEFINES["USE_X11"] = "1" -@@ -446,95 +321,6 @@ if CONFIG["OS_TARGET"] == "Linux" and CO - "/third_party/libwebrtc/modules/desktop_capture/linux/x11/x_window_property.cc" - ] - --if CONFIG["OS_TARGET"] == "Linux" and CONFIG["TARGET_CPU"] == "x86": -- -- CXXFLAGS += [ -- "-msse2" -- ] -- -- DEFINES["WEBRTC_USE_PIPEWIRE"] = True -- DEFINES["_GNU_SOURCE"] = True -- -- LOCAL_INCLUDES += [ -- "/gfx/angle/checkout/include/", -- "/third_party/drm/drm/", -- "/third_party/drm/drm/include/", -- "/third_party/drm/drm/include/libdrm/", -- "/third_party/gbm/gbm/", -- "/third_party/libepoxy/libepoxy/include/", -- "/third_party/pipewire/" -- ] -- -- SOURCES += [ -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc" -- ] -- -- UNIFIED_SOURCES += [ -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/mouse_cursor_monitor_pipewire.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/restore_token_manager.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screen_capture_portal_interface.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_portal.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_stream_utils.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc" -- ] -- --if CONFIG["OS_TARGET"] == "Linux" and CONFIG["TARGET_CPU"] == "x86_64": -- -- DEFINES["WEBRTC_USE_PIPEWIRE"] = True -- DEFINES["_GNU_SOURCE"] = True -- -- LOCAL_INCLUDES += [ -- "/gfx/angle/checkout/include/", -- "/third_party/drm/drm/", -- "/third_party/drm/drm/include/", -- "/third_party/drm/drm/include/libdrm/", -- "/third_party/gbm/gbm/", -- "/third_party/libepoxy/libepoxy/include/", -- "/third_party/pipewire/" -- ] -- -- SOURCES += [ -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc" -- ] -- -- UNIFIED_SOURCES += [ -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/mouse_cursor_monitor_pipewire.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/restore_token_manager.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screen_capture_portal_interface.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_portal.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/screencast_stream_utils.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc" -- ] -- --if CONFIG["MOZ_X11"] == "1" and CONFIG["OS_TARGET"] == "Linux" and CONFIG["TARGET_CPU"] == "aarch64": -- -- DEFINES["USE_X11"] = "1" -- DEFINES["WEBRTC_USE_X11"] = True -- -- OS_LIBS += [ -- "X11", -- "Xcomposite", -- "Xdamage", -- "Xext", -- "Xfixes", -- "Xrandr", -- "Xrender" -- ] -- -- UNIFIED_SOURCES += [ -- "/third_party/libwebrtc/modules/desktop_capture/linux/x11/mouse_cursor_monitor_x11.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/x11/screen_capturer_x11.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/x11/shared_x_display.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/x11/window_capturer_x11.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/x11/window_finder_x11.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/x11/window_list_utils.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/x11/x_atom_cache.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/x11/x_error_trap.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/x11/x_server_pixel_buffer.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/x11/x_window_property.cc" -- ] - - if CONFIG["MOZ_X11"] == "1" and CONFIG["OS_TARGET"] == "Linux" and CONFIG["TARGET_CPU"] == "arm": - -diff -up firefox-128.0/third_party/libwebrtc/modules/portal/portal_gn/moz.build.disable-pipewire firefox-128.0/third_party/libwebrtc/modules/portal/portal_gn/moz.build ---- firefox-128.0/third_party/libwebrtc/modules/portal/portal_gn/moz.build.disable-pipewire 2024-07-04 18:20:41.000000000 +0200 -+++ firefox-128.0/third_party/libwebrtc/modules/portal/portal_gn/moz.build 2024-07-17 14:01:36.291603109 +0200 -@@ -27,7 +27,7 @@ DEFINES["WEBRTC_MOZILLA_BUILD"] = True - DEFINES["WEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS"] = "0" - DEFINES["WEBRTC_POSIX"] = True - DEFINES["WEBRTC_STRICT_FIELD_TRIALS"] = "0" --DEFINES["WEBRTC_USE_PIPEWIRE"] = True -+DEFINES["WEBRTC_USE_PIPEWIRE"] = False - DEFINES["_FILE_OFFSET_BITS"] = "64" - DEFINES["_GNU_SOURCE"] = True - DEFINES["_LARGEFILE64_SOURCE"] = True -diff -up firefox-128.0/third_party/libwebrtc/third_party/pipewire/pipewire_gn/moz.build.disable-pipewire firefox-128.0/third_party/libwebrtc/third_party/pipewire/pipewire_gn/moz.build ---- firefox-128.0/third_party/libwebrtc/third_party/pipewire/pipewire_gn/moz.build.disable-pipewire 2024-07-04 18:20:41.000000000 +0200 -+++ firefox-128.0/third_party/libwebrtc/third_party/pipewire/pipewire_gn/moz.build 2024-07-17 14:01:36.291603109 +0200 -@@ -25,7 +25,7 @@ DEFINES["WEBRTC_MOZILLA_BUILD"] = True - DEFINES["WEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS"] = "0" - DEFINES["WEBRTC_POSIX"] = True - DEFINES["WEBRTC_STRICT_FIELD_TRIALS"] = "0" --DEFINES["WEBRTC_USE_PIPEWIRE"] = True -+DEFINES["WEBRTC_USE_PIPEWIRE"] = False - DEFINES["_FILE_OFFSET_BITS"] = "64" - DEFINES["_GNU_SOURCE"] = True - DEFINES["_LARGEFILE64_SOURCE"] = True diff --git a/disable-vsync-for-kiosk.patch b/disable-vsync-for-kiosk.patch deleted file mode 100644 index 8e6225b..0000000 --- a/disable-vsync-for-kiosk.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff -up firefox-128.8.0/widget/gtk/nsWindow.cpp.kiosk-vsync firefox-128.8.0/widget/gtk/nsWindow.cpp ---- firefox-128.8.0/widget/gtk/nsWindow.cpp.kiosk-vsync 2025-03-13 13:04:03.112498669 +0100 -+++ firefox-128.8.0/widget/gtk/nsWindow.cpp 2025-03-13 13:06:13.227823446 +0100 -@@ -6348,9 +6348,13 @@ nsresult nsWindow::Create(nsIWidget* aPa - // Initialize the window specific VsyncSource early in order to avoid races - // with BrowserParent::UpdateVsyncParentVsyncDispatcher(). - // Only use for toplevel windows for now, see bug 1619246. -+ // -+ // Disable vsync for the kiosk mode - it cause the black screen -+ // This will be fixed in Firefox 140 - if (GdkIsWaylandDisplay() && - StaticPrefs::widget_wayland_vsync_enabled_AtStartup() && -- IsTopLevelWindowType()) { -+ IsTopLevelWindowType() && -+ !gKioskMode ) { - mWaylandVsyncSource = new WaylandVsyncSource(this); - mWaylandVsyncDispatcher = new VsyncDispatcher(mWaylandVsyncSource); - LOG_VSYNC(" created WaylandVsyncSource"); diff --git a/firefox-fix-build-with-system-pipewire.patch b/firefox-fix-build-with-system-pipewire.patch new file mode 100644 index 0000000..6e77c51 --- /dev/null +++ b/firefox-fix-build-with-system-pipewire.patch @@ -0,0 +1,12 @@ +diff --git a/config/system-headers.mozbuild b/config/system-headers.mozbuild +index 028002a1d0..9dcb50fe5e 100644 +--- a/config/system-headers.mozbuild ++++ b/config/system-headers.mozbuild +@@ -310,6 +310,7 @@ system_headers = [ + "getopt.h", + "gio/gdesktopappinfo.h", + "gio/gio.h", ++ "gio/gunixfdlist.h", + "glibconfig.h", + "glib.h", + "glib-object.h", diff --git a/firefox-system-nss-replace-xyber-with-mlkem.patch b/firefox-system-nss-replace-xyber-with-mlkem.patch deleted file mode 100644 index 655c3f5..0000000 --- a/firefox-system-nss-replace-xyber-with-mlkem.patch +++ /dev/null @@ -1,507 +0,0 @@ -diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml -index 031ed0344d..4c652235d2 100644 ---- a/modules/libpref/init/StaticPrefList.yaml -+++ b/modules/libpref/init/StaticPrefList.yaml -@@ -13380,7 +13380,7 @@ - mirror: always - rust: true - --# Whether to send a Xyber768 key share in HTTP/3 TLS handshakes. -+# Whether to send an mlkem768x25519 key share in HTTP/3 TLS handshakes. - # Has no effect unless security.tls.enable_kyber is true. - - name: network.http.http3.enable_kyber - type: RelaxedAtomicBool -diff --git a/netwerk/socket/neqo_glue/src/lib.rs b/netwerk/socket/neqo_glue/src/lib.rs -index 9d1fa68ed2..216a95553c 100644 ---- a/netwerk/socket/neqo_glue/src/lib.rs -+++ b/netwerk/socket/neqo_glue/src/lib.rs -@@ -202,7 +202,7 @@ impl NeqoHttp3Conn { - { - // These operations are infallible when conn.state == State::Init. - let _ = conn.set_groups(&[ -- neqo_crypto::TLS_GRP_KEM_XYBER768D00, -+ neqo_crypto::TLS_GRP_KEM_MLKEM768X25519, - neqo_crypto::TLS_GRP_EC_X25519, - neqo_crypto::TLS_GRP_EC_SECP256R1, - neqo_crypto::TLS_GRP_EC_SECP384R1, -diff --git a/netwerk/test/unit/test_http3_kyber.js b/netwerk/test/unit/test_http3_kyber.js -index 4b3f1cbc50..e3b77cce9b 100644 ---- a/netwerk/test/unit/test_http3_kyber.js -+++ b/netwerk/test/unit/test_http3_kyber.js -@@ -62,7 +62,11 @@ function makeChan(uri) { - - add_task(async function test_kyber_success() { - let listener = new Http3Listener(); -- listener.expectedKeaGroup = "xyber768d00"; -+ // Bug 1918532: change this from x25519 to mlkem768x25519. -+ // neqo_glue currently tries to negotiate xyber768d00, which is -+ // disabled by NSS policy. As such we expect to receive x25519 -+ // here. -+ listener.expectedKeaGroup = "x25519"; - let chan = makeChan("https://foo.example.com"); - await chanPromise(chan, listener); - }); -diff --git a/security/manager/ssl/NSSSocketControl.cpp b/security/manager/ssl/NSSSocketControl.cpp -index 64c999701a..c7abe78da8 100644 ---- a/security/manager/ssl/NSSSocketControl.cpp -+++ b/security/manager/ssl/NSSSocketControl.cpp -@@ -39,7 +39,7 @@ NSSSocketControl::NSSSocketControl(const nsCString& aHostName, int32_t aPort, - mIsFullHandshake(false), - mNotedTimeUntilReady(false), - mEchExtensionStatus(EchExtensionStatus::kNotPresent), -- mSentXyberShare(false), -+ mSentMlkemShare(false), - mHasTls13HandshakeSecrets(false), - mIsShortWritePending(false), - mShortWritePendingByte(0), -diff --git a/security/manager/ssl/NSSSocketControl.h b/security/manager/ssl/NSSSocketControl.h -index 9afae1926c..2701b7346e 100644 ---- a/security/manager/ssl/NSSSocketControl.h -+++ b/security/manager/ssl/NSSSocketControl.h -@@ -117,14 +117,14 @@ class NSSSocketControl final : public CommonSocketControl { - return mEchExtensionStatus; - } - -- void WillSendXyberShare() { -+ void WillSendMlkemShare() { - COMMON_SOCKET_CONTROL_ASSERT_ON_OWNING_THREAD(); -- mSentXyberShare = true; -+ mSentMlkemShare = true; - } - -- bool SentXyberShare() { -+ bool SentMlkemShare() { - COMMON_SOCKET_CONTROL_ASSERT_ON_OWNING_THREAD(); -- return mSentXyberShare; -+ return mSentMlkemShare; - } - - void SetHasTls13HandshakeSecrets() { -@@ -307,7 +307,7 @@ class NSSSocketControl final : public CommonSocketControl { - bool mIsFullHandshake; - bool mNotedTimeUntilReady; - EchExtensionStatus mEchExtensionStatus; // Currently only used for telemetry. -- bool mSentXyberShare; -+ bool mSentMlkemShare; - bool mHasTls13HandshakeSecrets; - - // True when SSL layer has indicated an "SSL short write", i.e. need -diff --git a/security/manager/ssl/metrics.yaml b/security/manager/ssl/metrics.yaml -index e25ab6a7e5..ce0177b384 100644 ---- a/security/manager/ssl/metrics.yaml -+++ b/security/manager/ssl/metrics.yaml -@@ -68,7 +68,7 @@ tls: - xyber_intolerance_reason: - type: labeled_counter - description: > -- The error that was returned from a failed TLS 1.3 handshake in which the client sent a Xyber key share (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp). -+ The error that was returned from a failed TLS 1.3 handshake in which the client sent a mlkem768x25519 key share (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp). - data_sensitivity: - - technical - bugs: -diff --git a/security/manager/ssl/nsNSSCallbacks.cpp b/security/manager/ssl/nsNSSCallbacks.cpp -index c3a23213c5..cb37603782 100644 ---- a/security/manager/ssl/nsNSSCallbacks.cpp -+++ b/security/manager/ssl/nsNSSCallbacks.cpp -@@ -656,8 +656,8 @@ nsCString getKeaGroupName(uint32_t aKeaGroup) { - case ssl_grp_ec_curve25519: - groupName = "x25519"_ns; - break; -- case ssl_grp_kem_xyber768d00: -- groupName = "xyber768d00"_ns; -+ case ssl_grp_kem_mlkem768x25519: -+ groupName = "mlkem768x25519"_ns; - break; - case ssl_grp_ffdhe_2048: - groupName = "FF 2048"_ns; -@@ -1045,7 +1045,6 @@ void HandshakeCallback(PRFileDesc* fd, void* client_data) { - channelInfo.keaKeyBits); - break; - case ssl_kea_ecdh_hybrid: -- // Bug 1874963: Add probes for Xyber768d00 - break; - default: - MOZ_CRASH("impossible KEA"); -@@ -1146,7 +1145,8 @@ void SecretCallback(PRFileDesc* fd, PRUint16 epoch, SSLSecretDirection dir, - if (epoch == 2 && dir == ssl_secret_read) { - // |secret| is the server_handshake_traffic_secret. Set a flag to indicate - // that the Server Hello has been processed successfully. We use this when -- // deciding whether to retry a connection in which a Xyber share was sent. -+ // deciding whether to retry a connection in which an mlkem768x25519 share -+ // was sent. - infoObject->SetHasTls13HandshakeSecrets(); - } - } -diff --git a/security/manager/ssl/nsNSSComponent.cpp b/security/manager/ssl/nsNSSComponent.cpp -index 5f3792fd52..1fff6de2d6 100644 ---- a/security/manager/ssl/nsNSSComponent.cpp -+++ b/security/manager/ssl/nsNSSComponent.cpp -@@ -1084,9 +1084,9 @@ void SetDeprecatedTLS1CipherPrefs() { - // static - void SetKyberPolicy() { - if (StaticPrefs::security_tls_enable_kyber()) { -- NSS_SetAlgorithmPolicy(SEC_OID_XYBER768D00, NSS_USE_ALG_IN_SSL_KX, 0); -+ NSS_SetAlgorithmPolicy(SEC_OID_MLKEM768X25519, NSS_USE_ALG_IN_SSL_KX, 0); - } else { -- NSS_SetAlgorithmPolicy(SEC_OID_XYBER768D00, 0, NSS_USE_ALG_IN_SSL_KX); -+ NSS_SetAlgorithmPolicy(SEC_OID_MLKEM768X25519, 0, NSS_USE_ALG_IN_SSL_KX); - } - } - -diff --git a/security/manager/ssl/nsNSSIOLayer.cpp b/security/manager/ssl/nsNSSIOLayer.cpp -index c31f3064ee..24ca99d0f4 100644 ---- a/security/manager/ssl/nsNSSIOLayer.cpp -+++ b/security/manager/ssl/nsNSSIOLayer.cpp -@@ -448,14 +448,15 @@ bool retryDueToTLSIntolerance(PRErrorCode err, NSSSocketControl* socketInfo) { - } - - if (!socketInfo->IsPreliminaryHandshakeDone() && -- !socketInfo->HasTls13HandshakeSecrets() && socketInfo->SentXyberShare()) { -+ !socketInfo->HasTls13HandshakeSecrets() && socketInfo->SentMlkemShare()) { - nsAutoCString errorName; - const char* prErrorName = PR_ErrorToName(err); - if (prErrorName) { - errorName.AppendASCII(prErrorName); - } - mozilla::glean::tls::xyber_intolerance_reason.Get(errorName).Add(1); -- // Don't record version intolerance if we sent Xyber, just force a retry. -+ // Don't record version intolerance if we sent mlkem768x25519, just force a -+ // retry. - return true; - } - -@@ -1561,7 +1562,7 @@ static nsresult nsSSLIOLayerSetOptions(PRFileDesc* fd, bool forSTARTTLS, - !(infoObject->GetProviderFlags() & - (nsISocketProvider::BE_CONSERVATIVE | nsISocketProvider::IS_RETRY))) { - const SSLNamedGroup namedGroups[] = { -- ssl_grp_kem_xyber768d00, ssl_grp_ec_curve25519, ssl_grp_ec_secp256r1, -+ ssl_grp_kem_mlkem768x25519, ssl_grp_ec_curve25519, ssl_grp_ec_secp256r1, - ssl_grp_ec_secp384r1, ssl_grp_ec_secp521r1, ssl_grp_ffdhe_2048, - ssl_grp_ffdhe_3072}; - if (SECSuccess != SSL_NamedGroupConfig(fd, namedGroups, -@@ -1573,12 +1574,12 @@ static nsresult nsSSLIOLayerSetOptions(PRFileDesc* fd, bool forSTARTTLS, - if (SECSuccess != SSL_SendAdditionalKeyShares(fd, 2)) { - return NS_ERROR_FAILURE; - } -- infoObject->WillSendXyberShare(); -+ infoObject->WillSendMlkemShare(); - } else { - const SSLNamedGroup namedGroups[] = { - ssl_grp_ec_curve25519, ssl_grp_ec_secp256r1, ssl_grp_ec_secp384r1, - ssl_grp_ec_secp521r1, ssl_grp_ffdhe_2048, ssl_grp_ffdhe_3072}; -- // Skip the |ssl_grp_kem_xyber768d00| entry. -+ // Skip the |ssl_grp_kem_mlkem768x25519| entry. - if (SECSuccess != SSL_NamedGroupConfig(fd, namedGroups, - mozilla::ArrayLength(namedGroups))) { - return NS_ERROR_FAILURE; -diff --git a/security/manager/ssl/tests/unit/test_faulty_server.js b/security/manager/ssl/tests/unit/test_faulty_server.js -index f617908e28..7e476a9688 100644 ---- a/security/manager/ssl/tests/unit/test_faulty_server.js -+++ b/security/manager/ssl/tests/unit/test_faulty_server.js -@@ -72,28 +72,28 @@ add_task( - { - skip_if: () => AppConstants.MOZ_SYSTEM_NSS, - }, -- async function testRetryXyber() { -- const retryDomain = "xyber-net-interrupt.example.com"; -+ async function testRetryMlkem768x25519() { -+ const retryDomain = "mlkem768x25519-net-interrupt.example.com"; - - Services.prefs.setBoolPref("security.tls.enable_kyber", true); - Services.prefs.setCharPref("network.dns.localDomains", [retryDomain]); - Services.prefs.setIntPref("network.http.speculative-parallel-limit", 0); - -- // Get the number of xyber / x25519 callbacks prior to making the request -- // ssl_grp_kem_xyber768d00 = 25497 -+ // Get the number of mlkem768x25519 and x25519 callbacks prior to making the request -+ // ssl_grp_kem_mlkem768x25519 = 4588 - // ssl_grp_ec_curve25519 = 29 -- let countOfXyber = handlerCount("/callback/25497"); -+ let countOfMlkem = handlerCount("/callback/4588"); - let countOfX25519 = handlerCount("/callback/29"); - let chan = makeChan(`https://${retryDomain}:8443`); - let [, buf] = await channelOpenPromise(chan, CL_ALLOW_UNKNOWN_CL); - ok(buf); -- // The server will make a xyber768d00 callback for the initial request, and -+ // The server will make a mlkem768x25519 callback for the initial request, and - // then an x25519 callback for the retry. Both callback counts should - // increment by one. - equal( -- handlerCount("/callback/25497"), -- countOfXyber + 1, -- "negotiated xyber768d00" -+ handlerCount("/callback/4588"), -+ countOfMlkem + 1, -+ "negotiated mlkem768x25519" - ); - equal(handlerCount("/callback/29"), countOfX25519 + 1, "negotiated x25519"); - if (!mozinfo.socketprocess_networking) { -@@ -111,27 +111,28 @@ add_task( - { - skip_if: () => AppConstants.MOZ_SYSTEM_NSS, - }, -- async function testNoRetryXyber() { -- const retryDomain = "xyber-alert-after-server-hello.example.com"; -+ async function testNoRetryMlkem768x25519() { -+ const retryDomain = "mlkem768x25519-alert-after-server-hello.example.com"; - - Services.prefs.setBoolPref("security.tls.enable_kyber", true); - Services.prefs.setCharPref("network.dns.localDomains", [retryDomain]); - Services.prefs.setIntPref("network.http.speculative-parallel-limit", 0); - -- // Get the number of xyber / x25519 / p256 callbacks prior to making the request -- // ssl_grp_kem_xyber768d00 = 25497 -+ // Get the number of mlkem768x25519 and x25519 callbacks prior to making -+ // the request -+ // ssl_grp_kem_mlkem768x25519 = 4588 - // ssl_grp_ec_curve25519 = 29 -- let countOfXyber = handlerCount("/callback/25497"); -+ let countOfMlkem = handlerCount("/callback/4588"); - let countOfX25519 = handlerCount("/callback/29"); - let chan = makeChan(`https://${retryDomain}:8443`); - let [req] = await channelOpenPromise(chan, CL_EXPECT_FAILURE); - equal(req.status, 0x805a2f4d); // psm::GetXPCOMFromNSSError(SSL_ERROR_HANDSHAKE_FAILED) -- // The server will make a xyber768d00 callback for the initial request and -+ // The server will make a mlkem768x25519 callback for the initial request and - // the client should not retry. - equal( -- handlerCount("/callback/25497"), -- countOfXyber + 1, -- "negotiated xyber768d00" -+ handlerCount("/callback/4588"), -+ countOfMlkem + 1, -+ "negotiated mlkem768x25519" - ); - equal( - handlerCount("/callback/29"), -diff --git a/security/manager/ssl/tests/unit/tlsserver/cmd/FaultyServer.cpp b/security/manager/ssl/tests/unit/tlsserver/cmd/FaultyServer.cpp -index 4764ed921d..ba48016f58 100644 ---- a/security/manager/ssl/tests/unit/tlsserver/cmd/FaultyServer.cpp -+++ b/security/manager/ssl/tests/unit/tlsserver/cmd/FaultyServer.cpp -@@ -21,7 +21,7 @@ enum FaultType { - None = 0, - ZeroRtt, - UnknownSNI, -- Xyber, -+ Mlkem768x25519, - }; - - struct FaultyServerHost { -@@ -38,9 +38,10 @@ const char* kHostZeroRttAlertVersion = - const char* kHostZeroRttAlertUnexpected = "0rtt-alert-unexpected.example.com"; - const char* kHostZeroRttAlertDowngrade = "0rtt-alert-downgrade.example.com"; - --const char* kHostXyberNetInterrupt = "xyber-net-interrupt.example.com"; --const char* kHostXyberAlertAfterServerHello = -- "xyber-alert-after-server-hello.example.com"; -+const char* kHostMlkem768x25519NetInterrupt = -+ "mlkem768x25519-net-interrupt.example.com"; -+const char* kHostMlkem768x25519AlertAfterServerHello = -+ "mlkem768x25519-alert-after-server-hello.example.com"; - - const char* kCertWildcard = "default-ee"; - -@@ -55,8 +56,8 @@ const FaultyServerHost sFaultyServerHosts[]{ - {kHostZeroRttAlertVersion, kCertWildcard, ZeroRtt}, - {kHostZeroRttAlertUnexpected, kCertWildcard, ZeroRtt}, - {kHostZeroRttAlertDowngrade, kCertWildcard, ZeroRtt}, -- {kHostXyberNetInterrupt, kCertWildcard, Xyber}, -- {kHostXyberAlertAfterServerHello, kCertWildcard, Xyber}, -+ {kHostMlkem768x25519NetInterrupt, kCertWildcard, Mlkem768x25519}, -+ {kHostMlkem768x25519AlertAfterServerHello, kCertWildcard, Mlkem768x25519}, - {nullptr, nullptr}, - }; - -@@ -168,21 +169,22 @@ SECStatus FailingWriteCallback(PRFileDesc* fd, PRUint16 epoch, - return SECFailure; - } - --void SecretCallbackFailXyber(PRFileDesc* fd, PRUint16 epoch, -- SSLSecretDirection dir, PK11SymKey* secret, -- void* arg) { -- fprintf(stderr, "Xyber handler epoch=%d dir=%d\n", epoch, (uint32_t)dir); -+void SecretCallbackFailMlkem768x25519(PRFileDesc* fd, PRUint16 epoch, -+ SSLSecretDirection dir, -+ PK11SymKey* secret, void* arg) { -+ fprintf(stderr, "Mlkem768x25519 handler epoch=%d dir=%d\n", epoch, -+ (uint32_t)dir); - FaultyServerHost* host = static_cast(arg); - - if (epoch == 2 && dir == ssl_secret_write) { - sslSocket* ss = ssl_FindSocket(fd); - if (!ss) { -- fprintf(stderr, "Xyber handler, no ss!\n"); -+ fprintf(stderr, "Mlkem768x25519 handler, no ss!\n"); - return; - } - - if (!ss->sec.keaGroup) { -- fprintf(stderr, "Xyber handler, no ss->sec.keaGroup!\n"); -+ fprintf(stderr, "Mlkem768x25519 handler, no ss->sec.keaGroup!\n"); - return; - } - -@@ -190,17 +192,18 @@ void SecretCallbackFailXyber(PRFileDesc* fd, PRUint16 epoch, - SprintfLiteral(path, "/callback/%u", ss->sec.keaGroup->name); - DoCallback(path); - -- if (ss->sec.keaGroup->name != ssl_grp_kem_xyber768d00) { -+ if (ss->sec.keaGroup->name != ssl_grp_kem_mlkem768x25519) { - return; - } - -- fprintf(stderr, "Xyber handler, configuring alert\n"); -- if (strcmp(host->mHostName, kHostXyberNetInterrupt) == 0) { -+ fprintf(stderr, "Mlkem768x25519 handler, configuring alert\n"); -+ if (strcmp(host->mHostName, kHostMlkem768x25519NetInterrupt) == 0) { - // Install a record write callback that causes the next write to fail. - // The client will see this as a PR_END_OF_FILE / NS_ERROR_NET_INTERRUPT - // error. - ss->recordWriteCallback = FailingWriteCallback; -- } else if (!strcmp(host->mHostName, kHostXyberAlertAfterServerHello)) { -+ } else if (!strcmp(host->mHostName, -+ kHostMlkem768x25519AlertAfterServerHello)) { - SSL3_SendAlert(ss, alert_fatal, close_notify); - } - } -@@ -219,17 +222,17 @@ int32_t DoSNISocketConfig(PRFileDesc* aFd, const SECItem* aSrvNameArr, - fprintf(stderr, "found pre-defined host '%s'\n", host->mHostName); - } - -- const SSLNamedGroup xyberTestNamedGroups[] = {ssl_grp_kem_xyber768d00, -+ const SSLNamedGroup mlkemTestNamedGroups[] = {ssl_grp_kem_mlkem768x25519, - ssl_grp_ec_curve25519}; - - switch (host->mFaultType) { - case ZeroRtt: - SSL_SecretCallback(aFd, &SecretCallbackFailZeroRtt, (void*)host); - break; -- case Xyber: -- SSL_SecretCallback(aFd, &SecretCallbackFailXyber, (void*)host); -- SSL_NamedGroupConfig(aFd, xyberTestNamedGroups, -- mozilla::ArrayLength(xyberTestNamedGroups)); -+ case Mlkem768x25519: -+ SSL_SecretCallback(aFd, &SecretCallbackFailMlkem768x25519, (void*)host); -+ SSL_NamedGroupConfig(aFd, mlkemTestNamedGroups, -+ mozilla::ArrayLength(mlkemTestNamedGroups)); - break; - case None: - break; -diff --git a/security/manager/ssl/tests/unit/tlsserver/lib/TLSServer.cpp b/security/manager/ssl/tests/unit/tlsserver/lib/TLSServer.cpp -index e4aeda0e82..401b982346 100644 ---- a/security/manager/ssl/tests/unit/tlsserver/lib/TLSServer.cpp -+++ b/security/manager/ssl/tests/unit/tlsserver/lib/TLSServer.cpp -@@ -553,8 +553,6 @@ int StartServer(int argc, char* argv[], SSLSNISocketConfig sniSocketConfig, - return 1; - } - -- NSS_SetAlgorithmPolicy(SEC_OID_XYBER768D00, NSS_USE_ALG_IN_SSL_KX, 0); -- - if (SSL_ConfigServerSessionIDCache(0, 0, 0, nullptr) != SECSuccess) { - PrintPRError("SSL_ConfigServerSessionIDCache failed"); - return 1; -diff --git a/third_party/rust/neqo-crypto/.cargo-checksum.json b/third_party/rust/neqo-crypto/.cargo-checksum.json -index 188160d135..bea265565f 100644 ---- a/third_party/rust/neqo-crypto/.cargo-checksum.json -+++ b/third_party/rust/neqo-crypto/.cargo-checksum.json -@@ -1 +1 @@ --{"files":{"Cargo.toml":"fa915d4cac0a051c77107dd6f74514915fe2924fe3eecaad10e995062767fbbb","bindings/bindings.toml":"56921b753535f899b8095df3e8af04b1dc2213c4808dfb39734a3c554454d01d","bindings/nspr_err.h":"2d5205d017b536c2d838bcf9bc4ec79f96dd50e7bb9b73892328781f1ee6629d","bindings/nspr_error.h":"e41c03c77b8c22046f8618832c9569fbcc7b26d8b9bbc35eea7168f35e346889","bindings/nspr_io.h":"085b289849ef0e77f88512a27b4d9bdc28252bd4d39c6a17303204e46ef45f72","bindings/nspr_time.h":"2e637fd338a5cf0fd3fb0070a47f474a34c2a7f4447f31b6875f5a9928d0a261","bindings/nss_ciphers.h":"95ec6344a607558b3c5ba8510f463b6295f3a2fb3f538a01410531045a5f62d1","bindings/nss_init.h":"ef49045063782fb612aff459172cc6a89340f15005808608ade5320ca9974310","bindings/nss_p11.h":"0b81e64fe6db49b2ecff94edd850be111ef99ec11220e88ceb1c67be90143a78","bindings/nss_secerr.h":"713e8368bdae5159af7893cfa517dabfe5103cede051dee9c9557c850a2defc6","bindings/nss_ssl.h":"af222fb957b989e392e762fa2125c82608a0053aff4fb97e556691646c88c335","bindings/nss_sslerr.h":"24b97f092183d8486f774cdaef5030d0249221c78343570d83a4ee5b594210ae","bindings/nss_sslopt.h":"b7807eb7abdad14db6ad7bc51048a46b065a0ea65a4508c95a12ce90e59d1eea","build.rs":"6c3e94359395cce5cb29bc0063ff930ffcd7edd50c040cb459acce6c80aa4ef4","min_version.txt":"7e98f86c69cddb4f65cf96a6de1f4297e3ce224a4c4628609e29042b6c4dcfb9","src/aead.rs":"fc42bc20b84d2e5ccfd56271ae2d2db082e55586ea2926470c102da177f22296","src/aead_null.rs":"3a553f21126c9ca0116c2be81e5a777011b33c159fd88c4f384614bbdb06bb2e","src/agent.rs":"0ef7b488480d12c01a122050e82809bc784443ef6277d75fce21d706fbf5eaaf","src/agentio.rs":"415f70b95312d3ee6d74ba6f28094246101ab6d535aa9df880c38d8bb5a9279e","src/auth.rs":"ced1a18f691894984244088020ea25dc1ee678603317f0c7dfc8b8842fa750b4","src/cert.rs":"8942cb3ce25a61f92b6ffc30fb286052ed6f56eeda3be12fd46ea76ceba6c1cf","src/constants.rs":"f5c779db128a8b0607841ca18c376971017eb327e102e5e6959a7d8effe4b3a6","src/ech.rs":"9d322fcc01c0886f1dfe9bb6273cb9f88a746452ac9a802761b1816a05930c1f","src/err.rs":"ae979f334604aba89640c4491262641910033f0bd790d58671f649f5039b291c","src/exp.rs":"cec59d61fc95914f9703d2fb6490a8507af993c9db710dde894f2f8fd38123c7","src/ext.rs":"cbf7d9f5ecabf4b8c9efd6c334637ab1596ec5266d38ab8d2d6ceae305283deb","src/hkdf.rs":"ef32f20e30a9bd7f094199536d19c87c4231b7fbbe4a9c54c70e84ca9c6575be","src/hp.rs":"644f1bed67f1c6189a67c8d02ab3358aaa7f63af4b913dd7395becbc01a84291","src/lib.rs":"1f2c171e76f353c99cebe66f9812d3021ab2914eb015fed6a07409b7cfa426e6","src/min_version.rs":"89b7ef6f9d2301db4f689f4d963b58375d577f705b92003a804048441e00cfd1","src/p11.rs":"704c5f164c4f195c8051c5bf1e69a912c34b613a8cf6bed5f577dc5674eea34e","src/prio.rs":"e5e169296c0ac69919c59fb6c1f8bd6bf079452eaa13d75da0edd41d435d3f6f","src/replay.rs":"96b7af8eff9e14313e79303092018b12e8834f780c96b8e247c497fdc680c696","src/result.rs":"0587cbb6aace71a7f9765ef7c01dcd9f73a49dcc6331e1d8fe4de2aef6ca65b6","src/secrets.rs":"4ffaa66f25df47dadf042063bff5953effa7bf2f4920cafe827757d6a659cb58","src/selfencrypt.rs":"b7cc1c896c7661c37461fc3a8bcbfdf2589433b907fa5f968ae4f6907704b441","src/ssl.rs":"c83baa5518b81dd06f2e4072ea3c2d666ccdeb8b1ff6e3746eea9f1af47023a6","src/time.rs":"c71a01ff8aa2c0e97fb16ad620df4ed6b7cc1819ff93f46634e2f1c9551627ec","tests/aead.rs":"e36ae77802df1ea6d17cfd1bd2178a3706089577d6fd1554ca86e748b8b235b9","tests/agent.rs":"824735f88e487a3748200844e9481e81a72163ad74d82faa9aa16594d9b9bb25","tests/ext.rs":"1b047d23d9b224ad06eb65d8f3a7b351e263774e404c79bbcbe8f43790e29c18","tests/handshake.rs":"e892a2839b31414be16e96cdf3b1a65978716094700c1a4989229f7edbf578a0","tests/hkdf.rs":"1d2098dc8398395864baf13e4886cfd1da6d36118727c3b264f457ee3da6b048","tests/hp.rs":"b24fec53771c169be788772532d2617a5349196cf87d6444dc74214f7c73e92c","tests/init.rs":"616313cb38eac44b8c71a1d23a52a7d7b4c7c07d4c20dc9ea6600c3317f92613","tests/selfencrypt.rs":"8d10840b41629bf449a6b3a551377315e8a05ca26c6b041548748196652c5909"},"package":null} -\ No newline at end of file -+{"files":{"Cargo.toml":"fa915d4cac0a051c77107dd6f74514915fe2924fe3eecaad10e995062767fbbb","bindings/bindings.toml":"56921b753535f899b8095df3e8af04b1dc2213c4808dfb39734a3c554454d01d","bindings/nspr_err.h":"2d5205d017b536c2d838bcf9bc4ec79f96dd50e7bb9b73892328781f1ee6629d","bindings/nspr_error.h":"e41c03c77b8c22046f8618832c9569fbcc7b26d8b9bbc35eea7168f35e346889","bindings/nspr_io.h":"085b289849ef0e77f88512a27b4d9bdc28252bd4d39c6a17303204e46ef45f72","bindings/nspr_time.h":"2e637fd338a5cf0fd3fb0070a47f474a34c2a7f4447f31b6875f5a9928d0a261","bindings/nss_ciphers.h":"95ec6344a607558b3c5ba8510f463b6295f3a2fb3f538a01410531045a5f62d1","bindings/nss_init.h":"ef49045063782fb612aff459172cc6a89340f15005808608ade5320ca9974310","bindings/nss_p11.h":"0b81e64fe6db49b2ecff94edd850be111ef99ec11220e88ceb1c67be90143a78","bindings/nss_secerr.h":"713e8368bdae5159af7893cfa517dabfe5103cede051dee9c9557c850a2defc6","bindings/nss_ssl.h":"af222fb957b989e392e762fa2125c82608a0053aff4fb97e556691646c88c335","bindings/nss_sslerr.h":"24b97f092183d8486f774cdaef5030d0249221c78343570d83a4ee5b594210ae","bindings/nss_sslopt.h":"b7807eb7abdad14db6ad7bc51048a46b065a0ea65a4508c95a12ce90e59d1eea","build.rs":"6c3e94359395cce5cb29bc0063ff930ffcd7edd50c040cb459acce6c80aa4ef4","min_version.txt":"7e98f86c69cddb4f65cf96a6de1f4297e3ce224a4c4628609e29042b6c4dcfb9","src/aead.rs":"fc42bc20b84d2e5ccfd56271ae2d2db082e55586ea2926470c102da177f22296","src/aead_null.rs":"3a553f21126c9ca0116c2be81e5a777011b33c159fd88c4f384614bbdb06bb2e","src/agent.rs":"0ef7b488480d12c01a122050e82809bc784443ef6277d75fce21d706fbf5eaaf","src/agentio.rs":"415f70b95312d3ee6d74ba6f28094246101ab6d535aa9df880c38d8bb5a9279e","src/auth.rs":"ced1a18f691894984244088020ea25dc1ee678603317f0c7dfc8b8842fa750b4","src/cert.rs":"8942cb3ce25a61f92b6ffc30fb286052ed6f56eeda3be12fd46ea76ceba6c1cf","src/constants.rs":"78df03f9209ff36279b75f88f6d3d15fed4a0fdd1f6edc8ea8100ed9ae34320f","src/ech.rs":"9d322fcc01c0886f1dfe9bb6273cb9f88a746452ac9a802761b1816a05930c1f","src/err.rs":"ae979f334604aba89640c4491262641910033f0bd790d58671f649f5039b291c","src/exp.rs":"cec59d61fc95914f9703d2fb6490a8507af993c9db710dde894f2f8fd38123c7","src/ext.rs":"cbf7d9f5ecabf4b8c9efd6c334637ab1596ec5266d38ab8d2d6ceae305283deb","src/hkdf.rs":"ef32f20e30a9bd7f094199536d19c87c4231b7fbbe4a9c54c70e84ca9c6575be","src/hp.rs":"644f1bed67f1c6189a67c8d02ab3358aaa7f63af4b913dd7395becbc01a84291","src/lib.rs":"f0d0b14c7330fa4040166953c4a428918ce78967fe500bfeaa5f2c10b64567b3","src/min_version.rs":"89b7ef6f9d2301db4f689f4d963b58375d577f705b92003a804048441e00cfd1","src/p11.rs":"704c5f164c4f195c8051c5bf1e69a912c34b613a8cf6bed5f577dc5674eea34e","src/prio.rs":"e5e169296c0ac69919c59fb6c1f8bd6bf079452eaa13d75da0edd41d435d3f6f","src/replay.rs":"96b7af8eff9e14313e79303092018b12e8834f780c96b8e247c497fdc680c696","src/result.rs":"0587cbb6aace71a7f9765ef7c01dcd9f73a49dcc6331e1d8fe4de2aef6ca65b6","src/secrets.rs":"4ffaa66f25df47dadf042063bff5953effa7bf2f4920cafe827757d6a659cb58","src/selfencrypt.rs":"b7cc1c896c7661c37461fc3a8bcbfdf2589433b907fa5f968ae4f6907704b441","src/ssl.rs":"c83baa5518b81dd06f2e4072ea3c2d666ccdeb8b1ff6e3746eea9f1af47023a6","src/time.rs":"c71a01ff8aa2c0e97fb16ad620df4ed6b7cc1819ff93f46634e2f1c9551627ec","tests/aead.rs":"e36ae77802df1ea6d17cfd1bd2178a3706089577d6fd1554ca86e748b8b235b9","tests/agent.rs":"824735f88e487a3748200844e9481e81a72163ad74d82faa9aa16594d9b9bb25","tests/ext.rs":"1b047d23d9b224ad06eb65d8f3a7b351e263774e404c79bbcbe8f43790e29c18","tests/handshake.rs":"e892a2839b31414be16e96cdf3b1a65978716094700c1a4989229f7edbf578a0","tests/hkdf.rs":"1d2098dc8398395864baf13e4886cfd1da6d36118727c3b264f457ee3da6b048","tests/hp.rs":"b24fec53771c169be788772532d2617a5349196cf87d6444dc74214f7c73e92c","tests/init.rs":"616313cb38eac44b8c71a1d23a52a7d7b4c7c07d4c20dc9ea6600c3317f92613","tests/selfencrypt.rs":"8d10840b41629bf449a6b3a551377315e8a05ca26c6b041548748196652c5909"},"package":null} -diff --git a/third_party/rust/neqo-crypto/src/constants.rs b/third_party/rust/neqo-crypto/src/constants.rs -index daef3d3c56..7e6823fd01 100644 ---- a/third_party/rust/neqo-crypto/src/constants.rs -+++ b/third_party/rust/neqo-crypto/src/constants.rs -@@ -62,7 +62,7 @@ remap_enum! { - TLS_GRP_EC_SECP384R1 = ssl_grp_ec_secp384r1, - TLS_GRP_EC_SECP521R1 = ssl_grp_ec_secp521r1, - TLS_GRP_EC_X25519 = ssl_grp_ec_curve25519, -- TLS_GRP_KEM_XYBER768D00 = ssl_grp_kem_xyber768d00, -+ TLS_GRP_KEM_MLKEM768X25519 = ssl_grp_kem_mlkem768x25519, - } - } - -diff --git a/third_party/rust/neqo-crypto/src/lib.rs b/third_party/rust/neqo-crypto/src/lib.rs -index 9b8a478294..cb94d1f32b 100644 ---- a/third_party/rust/neqo-crypto/src/lib.rs -+++ b/third_party/rust/neqo-crypto/src/lib.rs -@@ -122,13 +122,6 @@ pub fn init() -> Res<()> { - - secstatus_to_res(unsafe { nss::NSS_NoDB_Init(null()) })?; - secstatus_to_res(unsafe { nss::NSS_SetDomesticPolicy() })?; -- secstatus_to_res(unsafe { -- p11::NSS_SetAlgorithmPolicy( -- p11::SECOidTag::SEC_OID_XYBER768D00, -- p11::NSS_USE_ALG_IN_SSL_KX, -- 0, -- ) -- })?; - - Ok(NssLoaded::NoDb) - }); -diff --git a/third_party/rust/neqo-transport/.cargo-checksum.json b/third_party/rust/neqo-transport/.cargo-checksum.json -index 79d2126b4a..a67d56971b 100644 ---- a/third_party/rust/neqo-transport/.cargo-checksum.json -+++ b/third_party/rust/neqo-transport/.cargo-checksum.json -@@ -1 +1 @@ --{"files":{"Cargo.toml":"2c18e43bca0b6e963cd3c169ed4b1dbf21de7e420b71be1d9cf1bf1bfcaa8d01","benches/range_tracker.rs":"590dd1f81c92e89ce28af1efdda583d85240438bd9c4c68767286d22a299ad4b","benches/rx_stream_orderer.rs":"53a008357703251a18100521a12d8fa9443c5601ddc3cbd1b3c2899074da4c4f","benches/transfer.rs":"94eb0ec1a0a7d0a4863ddc1c6d006521e52c1f2e7f03c69428b18f7eb827d33f","build.rs":"78ec79c93bf13c3a40ceef8bba1ea2eada61c8f2dfc15ea7bf117958d367949c","src/ackrate.rs":"4bb882e1069a0707dc85338b75327e2910c93ee5f36575767a0d58c4c41c9d4f","src/addr_valid.rs":"03c0b2ff85254179c5d425b12acfdcc6b1ea5735aeb0f604b9b3603451b3ef0a","src/cc/classic_cc.rs":"bd4999f21b6b7d754c8694345f40d0e99c1c3caba3d23a90bd9eb12798ef4979","src/cc/cubic.rs":"24c6913cc6346e5361007221c26e8096ece51583431fc3ab9c99e4ce4b0a9f5d","src/cc/mod.rs":"8031ed3d37bf780dd1364114149b1a1327656e7f481768548ad77db7006daf60","src/cc/new_reno.rs":"25d0921005688e0f0666efd0a4931b4f8cd44363587d98e5b6404818c5d05dd4","src/cc/tests/cubic.rs":"25ee2c60549bb8b3c1e9a915f148928a26b3f1c51e5f7fe6b646a437f520954c","src/cc/tests/mod.rs":"44f8df551e742ae1037cd1cdb85b2c1334c2e5ab3c23ed63d856dbc6b8743afc","src/cc/tests/new_reno.rs":"3cd7373063a3afecb6dfae7894edf959641d87d3de55d4abfa7742cd115fa358","src/cid.rs":"9686a3070c593cfca846d7549863728e31211b304b9fa876220f79bff5e24173","src/connection/dump.rs":"bd4fb55785fe42f5c94f7bcc14ccf4ae377d28b691fb55dbf1139ae9412b0ea9","src/connection/idle.rs":"6f588bab950620df322033abea5f8a731f5b6d88cbe68694b69ab8acea0745ae","src/connection/mod.rs":"72ab734a8d368b2f2d430899a65f5a8c64a21d797a0c3e6d3e53666ef8e0e740","src/connection/params.rs":"38e0b47c8cc5fbe602e3174d7a70df410829bc240b42f21cebd10818e606ef7c","src/connection/saved.rs":"97eb19792be3c4d721057021a43ea50a52f89a3cfa583d3d3dcf5d9144b332f5","src/connection/state.rs":"b1d4bdda3479e7957d1949a969281ecd8a3d88f4fbaff6dcf7ebbb576759339c","src/connection/test_internal.rs":"f3ebfe97b25c9c716d41406066295e5aff4e96a3051ef4e2b5fb258282bbc14c","src/connection/tests/ackrate.rs":"4a2b835575850ae4a14209d3e51883ecb1e69afb44ef91b5e13a5e6cb7174fab","src/connection/tests/cc.rs":"d9a0f00a8f439c4ea8d4b6fa689fbde8bd283256afdd68ec4a27f6638b729704","src/connection/tests/close.rs":"5f245fd134bc0759ef0c83a6d53e0a8d5a8e58dcdf203c750ec9121940272461","src/connection/tests/datagram.rs":"7d89e5293d5b50c7a54c9b48949c2c4c8ef5dc08f3e7e5f51654586578d65602","src/connection/tests/ecn.rs":"3ff05893154fb6a895fe4453db7cc54684ba3bdf268a36b69c36c4070768d7b4","src/connection/tests/handshake.rs":"67a6f090ed89ef6c63129f7e662dc1cfff3f291711a866dff3d779caa40e51c7","src/connection/tests/idle.rs":"2d588bd6570172ca08974931273b6c4645af3edca9ccac78499d7d2d5ecec86c","src/connection/tests/keys.rs":"7c58b255e9732711e13f2a3e1daa13ac9481d8c919a32ca62e70c850845a6b38","src/connection/tests/migration.rs":"40d4feba9957de7eef7391009996016af1a3052fabc7659680b64796cf9fb8bf","src/connection/tests/mod.rs":"43b7745e9722333f7bc851c70ccdfdd1dc4da3991a4b821fac677664719e760f","src/connection/tests/null.rs":"38f76a4ea15e6b11634d4374cb0f2a68bd250e5d35831edfce0fa48deeaa420d","src/connection/tests/priority.rs":"dd3504f52d3fce7a96441624bc1c82c733e6bb556b9b79d24d0f4fb4efaf5a9e","src/connection/tests/recovery.rs":"7f28767f3cca2ff60e3dcfa803e12ef043486a222f54681a8faf2ea2fee564a1","src/connection/tests/resumption.rs":"1a0de0993cd325224fc79a3c094d22636d5b122ab1123d16265d4fafb23574bd","src/connection/tests/stream.rs":"3a6b23be63e1901ea479749d8132db86959279329121fe5d51b34c3fef4d4d05","src/connection/tests/vn.rs":"92f61cfe4ccbb88f4f7c14f0e791bdece5368012922714d3dbd6a75bedb1b5a1","src/connection/tests/zerortt.rs":"139f25b992ee6f7e3cc31448f81e511386bb3b0e6691180c7f616b70c4864883","src/crypto.rs":"a0ff9053a13350e34aec02241eb2ae3e86d9f5af21065d5b8d71b7b229e00ced","src/ecn.rs":"2e54e0a57842070a80da61315b601085876351ef0272eaf65b8a59e32ecc4db8","src/events.rs":"3cdd7d5496b2745626db4ceb863b5a91ae943090a43a5816a1f9bcf873fba2be","src/fc.rs":"c8d10909912b6770e644aaec02cff6f89f557d5f40a246aa86654cf88c91d26e","src/frame.rs":"4262717662f155e62bb29c9f0cac295bbae96076eb2d92c27052a35f979aa196","src/lib.rs":"a8ab9b2204d50a3b6f6c1250ed0d47daafaef00c040b93dfa3c60195eeb07624","src/pace.rs":"86a674ac4d086148ea297214910458c3705918bd627b996ba8bbb12f2c4bf99e","src/packet/mod.rs":"16385a097363d3af6452c6dcb7f14fbd86e410dd42fa59435c5beea1699f77e9","src/packet/retry.rs":"d5f999485f21b388a7383cd011fc6e96109c1a9fb5aef79b19017df6844271ff","src/path.rs":"6a49a8a1cad609873f2cacca6489ba1a7a18cf238f7b8f6df2d0b0923edde3fd","src/qlog.rs":"07ea3a3e31ebf3819d40ff0dc4e4a88861db59f761542e9bc2e9e773eb555242","src/quic_datagrams.rs":"3d33ecb9e6e80c77b812e8260fc807352300fb2305a29b797259ae34c52b67c5","src/recovery/mod.rs":"4b1e45db1793785cda67fe804d1e6bc99b5f1a3ed3ff0f82e8164bc0aab11f8e","src/recovery/sent.rs":"959b70ed80b1061acf36bdd007f2b1baefbc8647c3a315d6fbd317884757beca","src/recovery/token.rs":"c1e4190c6733afd2bf5e60060d8ba3ab9fb136e02252e2480b281871a54d6066","src/recv_stream.rs":"f21ae0bb786901bb7d726a94cb3352607b0057128beaa331808137f2f57a330b","src/rtt.rs":"4635dc0c401b78a1fd9d34da6f9bf7f6e7f5be3a57ed9716e0efc8f0f94f1e47","src/send_stream.rs":"5b12a5543dd55d0d506eb64f828883b9761722a1558f16ecb90ce5a43587a2ff","src/sender.rs":"043be47e97d050532f12a564e78605cff7ff23e07639ea06059ebd85e0748f2f","src/server.rs":"3ededa0afd5e6b6888fc5ac9ce48e35e12974c338c7985f2b840e9dc76af0062","src/stats.rs":"257ab1242ea2e6bfac0900e6c4bdad794bc67b666930323d24e022e46b9be82b","src/stream_id.rs":"fd07cbb81709a54bdb0659f676ef851cd145c004b817044ede5b21e54fdb60e4","src/streams.rs":"f2e393dc73cc85c8339cb94daf6a09d3bde4d33d820fd6623ddd6b3d727d5fd5","src/tparams.rs":"592f29c9e2d2a63ff68b024ce23274896ed8ae83192b76b91f5e2991246682cd","src/tracking.rs":"c8581318cd7be3ca94ef4482341cfc1fdb70f934966c63a69335cb0bf5bd292a","src/version.rs":"182484ed9ecc2e17cab73cc61914a86a2d206936cab313825ae76fd37eeade77","tests/common/mod.rs":"7f9437d5efc38f4b9cabfece575e9168580e78e8638f46e538de58607f46ebb8","tests/conn_vectors.rs":"997702f4d8b8fa3b987b33077a0eb325e968b25b61fb4703532f8d97e1d4c98c","tests/connection.rs":"1c14853d61dad5f228a3e1a0becebb0c6826405de59ff601f43d5cb2fdb3f8ea","tests/network.rs":"04921aa5af583e842e6d2176a898fbfea747e831bbe292b5ef8441eaf546b93a","tests/retry.rs":"ace4a0baa36f7218c9942abc2b45b58f8c2dbd2b6004b469751e41b50f6f99d0","tests/server.rs":"9724460d7ac2f9d6af94baf6b3cf950900ae489412edc55d62609bacfcf02b09"},"package":null} -\ No newline at end of file -+{"files":{"Cargo.toml":"2c18e43bca0b6e963cd3c169ed4b1dbf21de7e420b71be1d9cf1bf1bfcaa8d01","benches/range_tracker.rs":"590dd1f81c92e89ce28af1efdda583d85240438bd9c4c68767286d22a299ad4b","benches/rx_stream_orderer.rs":"53a008357703251a18100521a12d8fa9443c5601ddc3cbd1b3c2899074da4c4f","benches/transfer.rs":"94eb0ec1a0a7d0a4863ddc1c6d006521e52c1f2e7f03c69428b18f7eb827d33f","build.rs":"78ec79c93bf13c3a40ceef8bba1ea2eada61c8f2dfc15ea7bf117958d367949c","src/ackrate.rs":"4bb882e1069a0707dc85338b75327e2910c93ee5f36575767a0d58c4c41c9d4f","src/addr_valid.rs":"03c0b2ff85254179c5d425b12acfdcc6b1ea5735aeb0f604b9b3603451b3ef0a","src/cc/classic_cc.rs":"bd4999f21b6b7d754c8694345f40d0e99c1c3caba3d23a90bd9eb12798ef4979","src/cc/cubic.rs":"24c6913cc6346e5361007221c26e8096ece51583431fc3ab9c99e4ce4b0a9f5d","src/cc/mod.rs":"8031ed3d37bf780dd1364114149b1a1327656e7f481768548ad77db7006daf60","src/cc/new_reno.rs":"25d0921005688e0f0666efd0a4931b4f8cd44363587d98e5b6404818c5d05dd4","src/cc/tests/cubic.rs":"25ee2c60549bb8b3c1e9a915f148928a26b3f1c51e5f7fe6b646a437f520954c","src/cc/tests/mod.rs":"44f8df551e742ae1037cd1cdb85b2c1334c2e5ab3c23ed63d856dbc6b8743afc","src/cc/tests/new_reno.rs":"3cd7373063a3afecb6dfae7894edf959641d87d3de55d4abfa7742cd115fa358","src/cid.rs":"9686a3070c593cfca846d7549863728e31211b304b9fa876220f79bff5e24173","src/connection/dump.rs":"bd4fb55785fe42f5c94f7bcc14ccf4ae377d28b691fb55dbf1139ae9412b0ea9","src/connection/idle.rs":"6f588bab950620df322033abea5f8a731f5b6d88cbe68694b69ab8acea0745ae","src/connection/mod.rs":"72ab734a8d368b2f2d430899a65f5a8c64a21d797a0c3e6d3e53666ef8e0e740","src/connection/params.rs":"38e0b47c8cc5fbe602e3174d7a70df410829bc240b42f21cebd10818e606ef7c","src/connection/saved.rs":"97eb19792be3c4d721057021a43ea50a52f89a3cfa583d3d3dcf5d9144b332f5","src/connection/state.rs":"b1d4bdda3479e7957d1949a969281ecd8a3d88f4fbaff6dcf7ebbb576759339c","src/connection/test_internal.rs":"f3ebfe97b25c9c716d41406066295e5aff4e96a3051ef4e2b5fb258282bbc14c","src/connection/tests/ackrate.rs":"4a2b835575850ae4a14209d3e51883ecb1e69afb44ef91b5e13a5e6cb7174fab","src/connection/tests/cc.rs":"d9a0f00a8f439c4ea8d4b6fa689fbde8bd283256afdd68ec4a27f6638b729704","src/connection/tests/close.rs":"5f245fd134bc0759ef0c83a6d53e0a8d5a8e58dcdf203c750ec9121940272461","src/connection/tests/datagram.rs":"7d89e5293d5b50c7a54c9b48949c2c4c8ef5dc08f3e7e5f51654586578d65602","src/connection/tests/ecn.rs":"3ff05893154fb6a895fe4453db7cc54684ba3bdf268a36b69c36c4070768d7b4","src/connection/tests/handshake.rs":"67a6f090ed89ef6c63129f7e662dc1cfff3f291711a866dff3d779caa40e51c7","src/connection/tests/idle.rs":"2d588bd6570172ca08974931273b6c4645af3edca9ccac78499d7d2d5ecec86c","src/connection/tests/keys.rs":"7c58b255e9732711e13f2a3e1daa13ac9481d8c919a32ca62e70c850845a6b38","src/connection/tests/migration.rs":"40d4feba9957de7eef7391009996016af1a3052fabc7659680b64796cf9fb8bf","src/connection/tests/mod.rs":"43b7745e9722333f7bc851c70ccdfdd1dc4da3991a4b821fac677664719e760f","src/connection/tests/null.rs":"38f76a4ea15e6b11634d4374cb0f2a68bd250e5d35831edfce0fa48deeaa420d","src/connection/tests/priority.rs":"dd3504f52d3fce7a96441624bc1c82c733e6bb556b9b79d24d0f4fb4efaf5a9e","src/connection/tests/recovery.rs":"7f28767f3cca2ff60e3dcfa803e12ef043486a222f54681a8faf2ea2fee564a1","src/connection/tests/resumption.rs":"1a0de0993cd325224fc79a3c094d22636d5b122ab1123d16265d4fafb23574bd","src/connection/tests/stream.rs":"3a6b23be63e1901ea479749d8132db86959279329121fe5d51b34c3fef4d4d05","src/connection/tests/vn.rs":"92f61cfe4ccbb88f4f7c14f0e791bdece5368012922714d3dbd6a75bedb1b5a1","src/connection/tests/zerortt.rs":"139f25b992ee6f7e3cc31448f81e511386bb3b0e6691180c7f616b70c4864883","src/crypto.rs":"033db48824fa541db728b43f25d5852d4c4de735c35d89151336649dd8d2429a","src/ecn.rs":"2e54e0a57842070a80da61315b601085876351ef0272eaf65b8a59e32ecc4db8","src/events.rs":"3cdd7d5496b2745626db4ceb863b5a91ae943090a43a5816a1f9bcf873fba2be","src/fc.rs":"c8d10909912b6770e644aaec02cff6f89f557d5f40a246aa86654cf88c91d26e","src/frame.rs":"4262717662f155e62bb29c9f0cac295bbae96076eb2d92c27052a35f979aa196","src/lib.rs":"a8ab9b2204d50a3b6f6c1250ed0d47daafaef00c040b93dfa3c60195eeb07624","src/pace.rs":"86a674ac4d086148ea297214910458c3705918bd627b996ba8bbb12f2c4bf99e","src/packet/mod.rs":"16385a097363d3af6452c6dcb7f14fbd86e410dd42fa59435c5beea1699f77e9","src/packet/retry.rs":"d5f999485f21b388a7383cd011fc6e96109c1a9fb5aef79b19017df6844271ff","src/path.rs":"6a49a8a1cad609873f2cacca6489ba1a7a18cf238f7b8f6df2d0b0923edde3fd","src/qlog.rs":"07ea3a3e31ebf3819d40ff0dc4e4a88861db59f761542e9bc2e9e773eb555242","src/quic_datagrams.rs":"3d33ecb9e6e80c77b812e8260fc807352300fb2305a29b797259ae34c52b67c5","src/recovery/mod.rs":"4b1e45db1793785cda67fe804d1e6bc99b5f1a3ed3ff0f82e8164bc0aab11f8e","src/recovery/sent.rs":"959b70ed80b1061acf36bdd007f2b1baefbc8647c3a315d6fbd317884757beca","src/recovery/token.rs":"c1e4190c6733afd2bf5e60060d8ba3ab9fb136e02252e2480b281871a54d6066","src/recv_stream.rs":"f21ae0bb786901bb7d726a94cb3352607b0057128beaa331808137f2f57a330b","src/rtt.rs":"4635dc0c401b78a1fd9d34da6f9bf7f6e7f5be3a57ed9716e0efc8f0f94f1e47","src/send_stream.rs":"5b12a5543dd55d0d506eb64f828883b9761722a1558f16ecb90ce5a43587a2ff","src/sender.rs":"043be47e97d050532f12a564e78605cff7ff23e07639ea06059ebd85e0748f2f","src/server.rs":"3ededa0afd5e6b6888fc5ac9ce48e35e12974c338c7985f2b840e9dc76af0062","src/stats.rs":"257ab1242ea2e6bfac0900e6c4bdad794bc67b666930323d24e022e46b9be82b","src/stream_id.rs":"fd07cbb81709a54bdb0659f676ef851cd145c004b817044ede5b21e54fdb60e4","src/streams.rs":"f2e393dc73cc85c8339cb94daf6a09d3bde4d33d820fd6623ddd6b3d727d5fd5","src/tparams.rs":"592f29c9e2d2a63ff68b024ce23274896ed8ae83192b76b91f5e2991246682cd","src/tracking.rs":"c8581318cd7be3ca94ef4482341cfc1fdb70f934966c63a69335cb0bf5bd292a","src/version.rs":"182484ed9ecc2e17cab73cc61914a86a2d206936cab313825ae76fd37eeade77","tests/common/mod.rs":"7f9437d5efc38f4b9cabfece575e9168580e78e8638f46e538de58607f46ebb8","tests/conn_vectors.rs":"997702f4d8b8fa3b987b33077a0eb325e968b25b61fb4703532f8d97e1d4c98c","tests/connection.rs":"c6755968255fb68795d9f1ae4ece73d7b674d8616d3512757309efd2c42c39d1","tests/network.rs":"04921aa5af583e842e6d2176a898fbfea747e831bbe292b5ef8441eaf546b93a","tests/retry.rs":"ace4a0baa36f7218c9942abc2b45b58f8c2dbd2b6004b469751e41b50f6f99d0","tests/server.rs":"9724460d7ac2f9d6af94baf6b3cf950900ae489412edc55d62609bacfcf02b09"},"package":null} -diff --git a/third_party/rust/neqo-transport/src/crypto.rs b/third_party/rust/neqo-transport/src/crypto.rs -index aca76b8bb9..3bfe7057bc 100644 ---- a/third_party/rust/neqo-transport/src/crypto.rs -+++ b/third_party/rust/neqo-transport/src/crypto.rs -@@ -21,7 +21,7 @@ use neqo_crypto::{ - TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_CT_HANDSHAKE, - TLS_EPOCH_APPLICATION_DATA, TLS_EPOCH_HANDSHAKE, TLS_EPOCH_INITIAL, TLS_EPOCH_ZERO_RTT, - TLS_GRP_EC_SECP256R1, TLS_GRP_EC_SECP384R1, TLS_GRP_EC_SECP521R1, TLS_GRP_EC_X25519, -- TLS_GRP_KEM_XYBER768D00, TLS_VERSION_1_3, -+ TLS_GRP_KEM_MLKEM768X25519, TLS_VERSION_1_3, - }; - - use crate::{ -@@ -78,9 +78,10 @@ impl Crypto { - ])?; - match &mut agent { - Agent::Server(c) => { -- // Clients do not send xyber shares by default, but servers should accept them. -+ // Clients do not send mlkem768x25519 shares by default, but servers should accept -+ // them. - c.set_groups(&[ -- TLS_GRP_KEM_XYBER768D00, -+ TLS_GRP_KEM_MLKEM768X25519, - TLS_GRP_EC_X25519, - TLS_GRP_EC_SECP256R1, - TLS_GRP_EC_SECP384R1, -diff --git a/third_party/rust/neqo-transport/tests/connection.rs b/third_party/rust/neqo-transport/tests/connection.rs -index 35167d0abd..7f9304e9c8 100644 ---- a/third_party/rust/neqo-transport/tests/connection.rs -+++ b/third_party/rust/neqo-transport/tests/connection.rs -@@ -279,12 +279,12 @@ fn overflow_crypto() { - } - - #[test] --fn test_handshake_xyber() { -+fn handshake_mlkem768x25519() { - let mut client = default_client(); - let mut server = default_server(); - - client -- .set_groups(&[neqo_crypto::TLS_GRP_KEM_XYBER768D00]) -+ .set_groups(&[neqo_crypto::TLS_GRP_KEM_MLKEM768X25519]) - .ok(); - client.send_additional_key_shares(0).ok(); - -@@ -293,10 +293,10 @@ fn test_handshake_xyber() { - assert_eq!(*server.state(), State::Confirmed); - assert_eq!( - client.tls_info().unwrap().key_exchange(), -- neqo_crypto::TLS_GRP_KEM_XYBER768D00 -+ neqo_crypto::TLS_GRP_KEM_MLKEM768X25519 - ); - assert_eq!( - server.tls_info().unwrap().key_exchange(), -- neqo_crypto::TLS_GRP_KEM_XYBER768D00 -+ neqo_crypto::TLS_GRP_KEM_MLKEM768X25519 - ); - } diff --git a/firefox.spec b/firefox.spec index 1f7fcc5..6b335e3 100644 --- a/firefox.spec +++ b/firefox.spec @@ -71,7 +71,7 @@ end} %endif %if 0%{?rhel} == 8 - %if %{rhel_minor_version} < 8 + %if %{rhel_minor_version} <= 8 %global bundle_nss 1 %global system_nss 1 %endif @@ -83,7 +83,7 @@ end} %endif %if 0%{?rhel} == 9 - %if %{rhel_minor_version} < 2 + %if %{rhel_minor_version} < 6 %global bundle_nss 1 %global system_nss 1 %endif @@ -97,15 +97,24 @@ end} %global dts_version 11 %global llvm_version 7.0 -%global nspr_version 4.35 -%global nspr_version_max 4.36 -%global nss_version 3.101 -%global nss_version_max 3.102 -%global rust_version 1.66 +%global nspr_version 4.36 +%global nspr_version_max 4.37 +%global nss_version 3.112 +%global nss_version_max 3.113 +%global rust_version 1.84 %global system_libvpx 0 +%if 0%{?rhel} >= 9 && %{rhel_minor_version} > 5 +%global system_drm 1 +%global system_gbm 1 +%global system_pipewire 1 +%else +%global system_drm 0 +%global system_gbm 0 +%global system_pipewire 0 +%endif # Workaround for missing httpd24 libs in rust %if 0%{?rhel} == 7 -%global ___build_pre %{___build_pre}; source scl_source enable httpd24 || : +%global ___build_pre %{___build_pre}; source scl_source enable httpd24 || : %endif # Toolsets setup @@ -122,7 +131,7 @@ end} # clang depends on gcc-toolset-14-gcc-c++ %global gts_version 14 %else - %global gts_version 13 + %global gts_version 14 %endif %endif @@ -166,8 +175,8 @@ end} Summary: Mozilla Firefox Web browser Name: firefox -Version: 128.14.0 -Release: 2%{?dist} +Version: 140.3.0 +Release: 1%{?dist} URL: https://www.mozilla.org/firefox/ License: MPLv1.1 or GPLv2+ or LGPLv2+ @@ -197,7 +206,7 @@ ExcludeArch: aarch64 s390 ppc # Link to original tarball: https://archive.mozilla.org/pub/firefox/releases/%%{version}%%{?pre_version}/source/firefox-%%{version}%%{?pre_version}.source.tar.xz Source0: firefox-%{version}%{?pre_version}%{?buildnum}.processed-source.tar.xz %if %{with langpacks} -Source1: firefox-langpacks-%{version}%{?pre_version}-20250815.tar.xz +Source1: firefox-langpacks-%{version}%{?pre_version}-20250909.tar.xz %endif Source2: cbindgen-vendor.tar.xz Source3: process-official-tarball @@ -226,32 +235,31 @@ Source50: wasi-sdk-20.tar.gz # Bundled libraries Source401: nss-setup-flags-env.inc -Source402: nspr-4.35.0-1.el8_1.src.rpm -Source403: nss-3.101.0-7.el8_2.src.rpm -Source404: nss-3.101.0-7.el9_2.src.rpm +Source402: nspr-4.36.0-2.el8_2.src.rpm +Source403: nss-3.112.0-4.el8_2.src.rpm +Source404: nss-3.112.0-1.el9_4.src.rpm # ---- RHEL specific patches --- # -- Downstream only -- Patch01: build-disable-elfhack.patch Patch02: firefox-gcc-build.patch Patch03: build-big-endian-errors.patch -Patch05: build-rhel7-lower-node-min-version.patch -Patch06: build-ppc64-abiv2.patch -Patch07: build-rhel7-nasm-dwarf.patch +Patch04: build-rhel7-lower-node-min-version.patch +Patch05: build-ppc64-abiv2.patch +Patch06: build-rhel7-nasm-dwarf.patch # Disable PipeWire support for PipeWire 0.2 -Patch08: disable-pipewire.patch -Patch09: rhbz-2131158-webrtc-nss-fix.patch -Patch10: build-ffvpx.patch -Patch11: build-disable-gamepad.patch -Patch12: firefox-system-nss-replace-xyber-with-mlkem.patch -# Enabled vsync cause the black screen when running in Kiosk mode -# This will be fixed in Firefox 140 -Patch13: disable-vsync-for-kiosk.patch -Patch14: rhbz-71999-fips-youtube.patch +Patch08: rhbz-2131158-webrtc-nss-fix.patch +Patch09: build-ffvpx.patch +Patch10: build-disable-gamepad.patch +Patch11: rhbz-71999-fips-youtube.patch +Patch13: firefox-fix-build-with-system-pipewire.patch +Patch14: build-system-nss.patch # -- Upstreamed patches -- Patch51: mozilla-bmo1170092.patch Patch52: exceptionHandled-for-IO-error-processhandler.patch +Patch53: D245908.clear-lang-bundles.diff +Patch54: D249071.restoreWinState.diff # -- Submitted upstream, not merged -- Patch101: mozilla-bmo1636168-fscreen.patch @@ -268,42 +276,22 @@ Patch107: mozilla-bmo1716707-swizzle.patch Patch108: mozilla-bmo1716707-svg.patch Patch109: mozilla-bmo1789216-disable-av1.patch Patch110: build-libaom.patch +Patch111: av1-else-condition-add.patch # ---- Fedora specific patches ---- Patch151: firefox-enable-addons.patch Patch152: rhbz-1173156.patch -Patch154: firefox-nss-addon-hack.patch +Patch153: firefox-nss-addon-hack.patch + # ARM run-time patch -Patch155: rhbz-1354671.patch +Patch154: rhbz-1354671.patch # --- fips webrtc fix -Patch200: webrtc-128.0.patch.patch +Patch200: webrtc-128.0.patch Patch201: D224587.1728128070.diff Patch202: D224588.1728128098.diff Patch203: wasi.patch -# --- Upstream PipeWire camera and screencast fixes ---- -# https://phabricator.services.mozilla.com/D215197 -Patch250: 001-libwebrtc-pipewire-screencast-hide-cursor-when-goes-off-screen-or-is-invisible.patch -# https://phabricator.services.mozilla.com/D216138 -Patch251: 002-libwebrtc-pipewire-camera-support-additional-formats-and-fix-rgb-bgr-mapping.patch -# https://phabricator.services.mozilla.com/D219224 -Patch252: 003-libwebrtc-pipewire-camera-filter-out-devices-without-capabilities.patch -# https://phabricator.services.mozilla.com/D219062 -Patch253: 004-firefox-always-query-information-about-camera-availability.patch -# https://phabricator.services.mozilla.com/D219060 -Patch254: 005-firefox-always-register-video-input-feedback-for-newly-created-deviceinfo.patch -# https://phabricator.services.mozilla.com/D220895 -Patch255: 006-libwebrtc-pipewire-camera-make-member-variable-with-pipewire-status-updated.patch -# https://phabricator.services.mozilla.com/D219218 -Patch256: 007-firefox-add-missing-support-for-device-change-notifications.patch -# https://phabricator.services.mozilla.com/D223112 -Patch257: 008-libwebrtc-pipewire-camera-get-max-fps-for-each-format-when-specified-as-list.patch -# https://phabricator.services.mozilla.com/D223119 -Patch258: 009-libwebrtc-pipewire-camera-use-exact-stream-parameters-specified-by-capability.patch -# https://phabricator.services.mozilla.com/D228635 -Patch259: 010-libwebrtc-pipewire-camera-use-better-unique-device-name-for-camera-devices.patch - # ---- Test patches ---- # Generate without context by # GENDIFF_DIFF_ARGS=-U0 gendiff firefox-xxxx .firefox-tests-xpcshell @@ -325,6 +313,9 @@ BuildRequires: nss-static < %{nss_version_max} BuildRequires: libvpx-devel >= 1.8.2 %endif +%if 0%{?rhel} == 7 +BuildRequires: devtoolset-11-elfutils +%endif BuildRequires: bzip2-devel BuildRequires: desktop-file-utils BuildRequires: libappstream-glib @@ -399,8 +390,10 @@ BuildRequires: gcc-c++ BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: rust +%ifnarch ppc64 BuildRequires: httpd24-curl %endif +%endif %if 0%{?use_dts} BuildRequires: devtoolset-%{dts_version}-gcc @@ -426,6 +419,18 @@ BuildRequires: lld BuildRequires: clang cmake ninja-build %endif +%if %{?system_drm} +BuildRequires: libdrm-devel +%endif + +%if %{?system_gbm} +BuildRequires: mesa-libgbm-devel +%endif + +%if %{?system_pipewire} +BuildRequires: pipewire-devel +%endif + %if !0%{?flatpak} #TODO BuildRequires: system-bookmarks @@ -504,6 +509,7 @@ Provides: webclient # Bundled libraries #Provides: bundled(libjxl) it's used only on nightly builds +Provides: bundled(abseil-cpp) Provides: bundled(angle) Provides: bundled(aom) Provides: bundled(audioipc-2) @@ -516,17 +522,17 @@ Provides: bundled(cfworker) Provides: bundled(cld2) Provides: bundled(content) Provides: bundled(content_analysis_sdk) +Provides: bundled(cts) Provides: bundled(cubeb) -Provides: bundled(cups) Provides: bundled(d3) -Provides: bundled(d3.js) +Provides: bundled(dav1d) Provides: bundled(double-conversion) Provides: bundled(drm) Provides: bundled(expat) -Provides: bundled(fastText) Provides: bundled(fathom) Provides: bundled(fdlibm) Provides: bundled(ffvpx) +Provides: bundled(fmt) Provides: bundled(function2) Provides: bundled(gbm) Provides: bundled(gemmology) @@ -537,8 +543,9 @@ Provides: bundled(highway) Provides: bundled(hunspell) Provides: bundled(intgemm) Provides: bundled(irregexp) +Provides: bundled(java) Provides: bundled(jpeg-xl) -Provides: bundled(kissfft) +Provides: bundled(js) Provides: bundled(libaom) Provides: bundled(libcubeb) Provides: bundled(libdav1d) @@ -554,12 +561,9 @@ Provides: bundled(libnestegg) Provides: bundled(libogg) Provides: bundled(libopus) Provides: bundled(libpng) -Provides: bundled(libprio) Provides: bundled(libsoundtouch) Provides: bundled(libspeex_resampler) Provides: bundled(libsrtp) -Provides: bundled(libtheora) -Provides: bundled(libtremor) Provides: bundled(libvorbis) Provides: bundled(libvpx) Provides: bundled(libwebp) @@ -569,12 +573,9 @@ Provides: bundled(lit) Provides: bundled(MotionMark) Provides: bundled(mp4parse-rust) Provides: bundled(msgpack) -Provides: bundled(msgpack-c) -Provides: bundled(mtransport) -Provides: bundled(nestegg) Provides: bundled(nICEr) -Provides: bundled(nimbus) -Provides: bundled(openmax_dl) +Provides: bundled(nss) +Provides: bundled(opentelemetry-cpp) Provides: bundled(openmax_il) Provides: bundled(openvr) Provides: bundled(ots) @@ -582,38 +583,37 @@ Provides: bundled(pdf.js) Provides: bundled(pdfjs) Provides: bundled(perfetto) Provides: bundled(picosha2) -Provides: bundled(PKI) +Provides: bundled(pipewire) Provides: bundled(PKI.js) Provides: bundled(puppeteer) +Provides: bundled(python) Provides: bundled(pywebsocket3) Provides: bundled(qcms) Provides: bundled(reader) Provides: bundled(rlbox) -Provides: bundled(rlbox_sandboxing_api) Provides: bundled(rlbox_wasm2c_sandbox) Provides: bundled(schemas) -Provides: bundled(sfntly) Provides: bundled(simde) Provides: bundled(sipcc) Provides: bundled(skia) -Provides: bundled(soundtouch) Provides: bundled(source-map) Provides: bundled(Speedometer3) Provides: bundled(sqlite3) +Provides: bundled(sqlite-vec) Provides: bundled(src) +Provides: bundled(transformers) Provides: bundled(thebes) -Provides: bundled(theora) -Provides: bundled(usrsctp) Provides: bundled(vendor) Provides: bundled(vsdownload) -Provides: bundled(wabt) Provides: bundled(wasm2c) Provides: bundled(wasm2c_sandbox_compiler) +Provides: bundled(wayland-proxy) Provides: bundled(webaudio) Provides: bundled(webgl-conf) Provides: bundled(WebRender) -Provides: bundled(wgpu) Provides: bundled(wgpu_bindings) +Provides: bundled(widevine-adapter) +Provides: bundled(wllama) Provides: bundled(woff2) Provides: bundled(xsimd) Provides: bundled(xz-embedded) @@ -631,85 +631,97 @@ Provides: bundled(nspr) = %{nspr_version} # List obtained by `get_rust_bundled_provides.sh build.log` script:: Provides: bundled(crate(aa-stroke)) = 0.1.0 Provides: bundled(crate(adler)) = 1.0.2 -Provides: bundled(crate(ahash)) = 0.8.11 Provides: bundled(crate(aho-corasick)) = 1.1.0 +Provides: bundled(crate(allocator-api2)) = 0.2.999 Provides: bundled(crate(alsa)) = 0.8.1 Provides: bundled(crate(alsa-sys)) = 0.3.1 +Provides: bundled(crate(anstream)) = 0.6.19 +Provides: bundled(crate(anstyle)) = 1.0.11 +Provides: bundled(crate(anstyle-parse)) = 0.2.7 +Provides: bundled(crate(anstyle-query)) = 1.1.3 Provides: bundled(crate(anyhow)) = 1.0.69 Provides: bundled(crate(app_services_logger)) = 0.1.0 -Provides: bundled(crate(app_units)) = 0.7.3 +Provides: bundled(crate(app_units)) = 0.7.8 Provides: bundled(crate(arrayref)) = 0.3.6 -Provides: bundled(crate(arrayvec)) = 0.7.2 +Provides: bundled(crate(arraystring)) = 0.3.0 +Provides: bundled(crate(arrayvec)) = 0.7.6 Provides: bundled(crate(ash)) = 0.38.0+1.3.281 -Provides: bundled(crate(askama)) = 0.12.0 -Provides: bundled(crate(askama_derive)) = 0.12.1 -Provides: bundled(crate(askama_escape)) = 0.10.3 +Provides: bundled(crate(askama)) = 0.13.1 +Provides: bundled(crate(askama_derive)) = 0.13.1 +Provides: bundled(crate(askama_parser)) = 0.13.0 Provides: bundled(crate(async-task)) = 4.3.0 Provides: bundled(crate(async-trait)) = 0.1.68 Provides: bundled(crate(atomic_refcell)) = 0.1.9 -Provides: bundled(crate(atty)) = 0.2.14 Provides: bundled(crate(audioipc2)) = 0.6.0 Provides: bundled(crate(audioipc2-client)) = 0.6.0 Provides: bundled(crate(audioipc2-server)) = 0.6.0 Provides: bundled(crate(audio_thread_priority)) = 0.32.0 -Provides: bundled(crate(authenticator)) = 0.4.0-alpha.24 +Provides: bundled(crate(authenticator)) = 0.4.1 Provides: bundled(crate(authrs_bridge)) = 0.1.0 Provides: bundled(crate(autocfg)) = 1.1.0 -Provides: bundled(crate(autocfg)) = 1.1.0 -Provides: bundled(crate(base64)) = 0.21.3 +Provides: bundled(crate(base64)) = 0.21.999 +Provides: bundled(crate(base64)) = 0.22.1 Provides: bundled(crate(basic-toml)) = 0.1.2 Provides: bundled(crate(bhttp)) = 0.3.1 Provides: bundled(crate(binary_http)) = 0.1.0 Provides: bundled(crate(bincode)) = 1.3.3 -Provides: bundled(crate(bindgen)) = 0.63.999 +Provides: bundled(crate(bindgen)) = 0.64.999 Provides: bundled(crate(bindgen)) = 0.69.4 Provides: bundled(crate(bitflags)) = 1.3.2 Provides: bundled(crate(bitflags)) = 1.999.999 -Provides: bundled(crate(bitflags)) = 2.5.0 +Provides: bundled(crate(bitflags)) = 2.9.0 Provides: bundled(crate(bitreader)) = 0.3.6 -Provides: bundled(crate(bit-set)) = 0.5.3 -Provides: bundled(crate(bit-vec)) = 0.6.3 +Provides: bundled(crate(bit-set)) = 0.8.0 +Provides: bundled(crate(bit-vec)) = 0.8.0 Provides: bundled(crate(block-buffer)) = 0.10.3 Provides: bundled(crate(bookmark_sync)) = 0.1.0 Provides: bundled(crate(buildid_reader)) = 0.1.0 +Provides: bundled(crate(buildid_reader_ffi)) = 0.1.0 Provides: bundled(crate(build-parallel)) = 0.1.2 -Provides: bundled(crate(builtins-static)) = 0.1.0 Provides: bundled(crate(bumpalo)) = 3.15.4 +Provides: bundled(crate(bytemuck)) = 1.22.0 +Provides: bundled(crate(bytemuck_derive)) = 1.9.3 Provides: bundled(crate(byteorder)) = 1.5.0 Provides: bundled(crate(bytes)) = 1.4.0 Provides: bundled(crate(cache-padded)) = 1.2.0 +Provides: bundled(crate(calendrical_calculations)) = 0.1.1 Provides: bundled(crate(camino)) = 1.1.2 -Provides: bundled(crate(cargo_metadata)) = 0.15.3 +Provides: bundled(crate(cargo_metadata)) = 0.19.2 Provides: bundled(crate(cargo-platform)) = 0.1.2 Provides: bundled(crate(cascade_bloom_filter)) = 0.1.0 -Provides: bundled(crate(cbindgen)) = 0.26.0 -Provides: bundled(crate(cc)) = 1.0.89 +Provides: bundled(crate(cbindgen)) = 0.27.0 +Provides: bundled(crate(cc)) = 1.2.12 Provides: bundled(crate(cert_storage)) = 0.0.1 Provides: bundled(crate(cexpr)) = 0.6.0 -Provides: bundled(crate(cfg_aliases)) = 0.1.1 +Provides: bundled(crate(cfg_aliases)) = 0.2.1 Provides: bundled(crate(cfg-if)) = 1.0.0 Provides: bundled(crate(chardetng)) = 0.1.9 Provides: bundled(crate(chardetng_c)) = 0.1.2 -Provides: bundled(crate(chrono)) = 0.4.19 +Provides: bundled(crate(chrono)) = 0.4.40 Provides: bundled(crate(chunky-vec)) = 0.1.0 Provides: bundled(crate(clang-sys)) = 1.7.0 -Provides: bundled(crate(clap)) = 3.2.25 -Provides: bundled(crate(clap_lex)) = 0.2.4 +Provides: bundled(crate(clap)) = 4.5.39 +Provides: bundled(crate(clap_builder)) = 4.5.39 +Provides: bundled(crate(clap_lex)) = 0.7.4 +Provides: bundled(crate(clubcard)) = 0.3.2 +Provides: bundled(crate(clubcard-crlite)) = 0.3.0 Provides: bundled(crate(cmake)) = 0.1.999 -Provides: bundled(crate(codespan-reporting)) = 0.11.1 +Provides: bundled(crate(codespan-reporting)) = 0.12.0 +Provides: bundled(crate(colorchoice)) = 1.0.4 +Provides: bundled(crate(context_id)) = 0.1.0 Provides: bundled(crate(core_maths)) = 0.1.0 Provides: bundled(crate(cose)) = 0.1.4 Provides: bundled(crate(cose-c)) = 0.1.5 Provides: bundled(crate(cpufeatures)) = 0.2.8 -Provides: bundled(crate(crc32fast)) = 1.3.2 -Provides: bundled(crate(crossbeam-channel)) = 0.5.6 +Provides: bundled(crate(crc32fast)) = 1.4.2 +Provides: bundled(crate(crossbeam-channel)) = 0.5.13 Provides: bundled(crate(crossbeam-deque)) = 0.8.2 Provides: bundled(crate(crossbeam-epoch)) = 0.9.14 Provides: bundled(crate(crossbeam-queue)) = 0.3.8 -Provides: bundled(crate(crossbeam-utils)) = 0.8.14 +Provides: bundled(crate(crossbeam-utils)) = 0.8.20 Provides: bundled(crate(crypto-common)) = 0.1.6 Provides: bundled(crate(crypto_hash)) = 0.1.0 -Provides: bundled(crate(cssparser)) = 0.34.0 +Provides: bundled(crate(cssparser)) = 0.34.1 Provides: bundled(crate(cssparser-macros)) = 0.6.1 Provides: bundled(crate(cstr)) = 0.2.11 Provides: bundled(crate(cubeb)) = 0.13.0 @@ -718,27 +730,27 @@ Provides: bundled(crate(cubeb-core)) = 0.13.0 Provides: bundled(crate(cubeb-pulse)) = 0.5.0 Provides: bundled(crate(cubeb-sys)) = 0.13.0 Provides: bundled(crate(dap_ffi)) = 0.1.0 -Provides: bundled(crate(darling)) = 0.20.1 -Provides: bundled(crate(darling_core)) = 0.20.1 -Provides: bundled(crate(darling_macro)) = 0.20.1 +Provides: bundled(crate(darling)) = 0.20.10 +Provides: bundled(crate(darling_core)) = 0.20.10 +Provides: bundled(crate(darling_macro)) = 0.20.10 Provides: bundled(crate(data-encoding)) = 2.3.3 Provides: bundled(crate(data-encoding-ffi)) = 0.1.0 Provides: bundled(crate(data_storage)) = 0.0.1 Provides: bundled(crate(dbus)) = 0.6.5 +Provides: bundled(crate(debug_tree)) = 0.4.0 Provides: bundled(crate(deranged)) = 0.3.11 -Provides: bundled(crate(derive_common)) = 0.0.1 Provides: bundled(crate(derive_more)) = 0.99.999 Provides: bundled(crate(derive_more)) = 1.0.0-beta.2 Provides: bundled(crate(derive_more-impl)) = 1.0.0-beta.2 -Provides: bundled(crate(digest)) = 0.10.6 -Provides: bundled(crate(diplomat)) = 0.7.0 -Provides: bundled(crate(diplomat_core)) = 0.7.0 -Provides: bundled(crate(diplomat-runtime)) = 0.7.0 +Provides: bundled(crate(digest)) = 0.10.7 +Provides: bundled(crate(diplomat)) = 0.8.0 +Provides: bundled(crate(diplomat_core)) = 0.8.0 +Provides: bundled(crate(diplomat-runtime)) = 0.8.0 Provides: bundled(crate(dirs)) = 4.0.0 Provides: bundled(crate(dirs-sys)) = 0.3.7 Provides: bundled(crate(displaydoc)) = 0.2.4 Provides: bundled(crate(dns-parser)) = 0.8.0 -Provides: bundled(crate(document-features)) = 0.2.8 +Provides: bundled(crate(document-features)) = 0.2.11 Provides: bundled(crate(dogear)) = 0.5.0 Provides: bundled(crate(dom)) = 0.1.0 Provides: bundled(crate(dom_fragmentdirectives)) = 0.1.0 @@ -748,26 +760,29 @@ Provides: bundled(crate(either)) = 1.8.1 Provides: bundled(crate(encoding_c)) = 0.9.8 Provides: bundled(crate(encoding_c_mem)) = 0.2.6 Provides: bundled(crate(encoding_glue)) = 0.1.0 -Provides: bundled(crate(encoding_rs)) = 0.8.34 +Provides: bundled(crate(encoding_rs)) = 0.8.35 Provides: bundled(crate(enum-map)) = 2.7.3 Provides: bundled(crate(enum-map-derive)) = 0.17.0 Provides: bundled(crate(enumset)) = 1.1.2 Provides: bundled(crate(enumset_derive)) = 0.8.1 Provides: bundled(crate(env_logger)) = 0.10.0 Provides: bundled(crate(equivalent)) = 1.0.1 +Provides: bundled(crate(equivalent)) = 1.0.2 Provides: bundled(crate(error-chain)) = 0.12.4 Provides: bundled(crate(error-support)) = 0.1.0 Provides: bundled(crate(error-support-macros)) = 0.1.0 -Provides: bundled(crate(etagere)) = 0.2.7 +Provides: bundled(crate(etagere)) = 0.2.13 Provides: bundled(crate(euclid)) = 0.22.10 +Provides: bundled(crate(extend)) = 1.2.0 Provides: bundled(crate(fallible_collections)) = 0.4.9 Provides: bundled(crate(fallible-iterator)) = 0.3.0 Provides: bundled(crate(fallible-streaming-iterator)) = 0.1.9 Provides: bundled(crate(fastrand)) = 1.9.0 -Provides: bundled(crate(fastrand)) = 2.0.0 +Provides: bundled(crate(fastrand)) = 2.1.1 Provides: bundled(crate(ffi-support)) = 0.4.4 Provides: bundled(crate(firefox-on-glean)) = 0.1.0 -Provides: bundled(crate(flate2)) = 1.0.26 +Provides: bundled(crate(firefox-versioning)) = 0.1.0 +Provides: bundled(crate(flate2)) = 1.0.30 Provides: bundled(crate(fluent)) = 0.16.0 Provides: bundled(crate(fluent-bundle)) = 0.15.2 Provides: bundled(crate(fluent-fallback)) = 0.7.0 @@ -778,6 +793,7 @@ Provides: bundled(crate(fluent-pseudo)) = 0.3.1 Provides: bundled(crate(fluent-syntax)) = 0.11.0 Provides: bundled(crate(fnv)) = 1.0.7 Provides: bundled(crate(fog_control)) = 0.1.0 +Provides: bundled(crate(foldhash)) = 0.1.5 Provides: bundled(crate(form_urlencoded)) = 1.2.1 Provides: bundled(crate(freetype)) = 0.7.0 Provides: bundled(crate(fs-err)) = 2.9.0 @@ -795,61 +811,79 @@ Provides: bundled(crate(gecko_logger)) = 0.1.0 Provides: bundled(crate(gecko-profiler)) = 0.1.0 Provides: bundled(crate(geckoservo)) = 0.0.1 Provides: bundled(crate(generic-array)) = 0.14.6 -Provides: bundled(crate(getrandom)) = 0.2.14 +Provides: bundled(crate(getrandom)) = 0.2.999 +Provides: bundled(crate(getrandom)) = 0.3.3 Provides: bundled(crate(gkrust)) = 0.1.0 Provides: bundled(crate(gkrust-shared)) = 0.1.0 +Provides: bundled(crate(gkrust-uniffi-components)) = 0.1.0 Provides: bundled(crate(gkrust_utils)) = 0.1.0 Provides: bundled(crate(gleam)) = 0.15.0 -Provides: bundled(crate(glean)) = 60.1.1 -Provides: bundled(crate(glean-core)) = 60.1.1 +Provides: bundled(crate(glean)) = 64.3.1 +Provides: bundled(crate(glean-core)) = 64.3.1 Provides: bundled(crate(gl_generator)) = 0.14.0 Provides: bundled(crate(glob)) = 0.3.1 Provides: bundled(crate(glsl)) = 6.0.2 -Provides: bundled(crate(glslopt)) = 0.1.10 +Provides: bundled(crate(glslopt)) = 0.1.11 Provides: bundled(crate(glsl-to-cxx)) = 0.1.0 -Provides: bundled(crate(goblin)) = 0.8.1 +Provides: bundled(crate(goblin)) = 0.8.999 +Provides: bundled(crate(goblin)) = 0.9.2 Provides: bundled(crate(golden_gate)) = 0.1.0 Provides: bundled(crate(gpu-alloc)) = 0.6.0 Provides: bundled(crate(gpu-alloc-types)) = 0.3.0 Provides: bundled(crate(gpu-descriptor)) = 0.3.0 Provides: bundled(crate(gpu-descriptor-types)) = 0.2.0 -Provides: bundled(crate(half)) = 1.8.2 -Provides: bundled(crate(hashbrown)) = 0.12.3 +Provides: bundled(crate(half)) = 1.999.999 +Provides: bundled(crate(half)) = 2.5.0 Provides: bundled(crate(hashbrown)) = 0.13.999 -Provides: bundled(crate(hashbrown)) = 0.14.5 -Provides: bundled(crate(hashlink)) = 0.9.1 +Provides: bundled(crate(hashbrown)) = 0.14.999 +Provides: bundled(crate(hashbrown)) = 0.15.2 +Provides: bundled(crate(hashbrown)) = 0.15.3 +Provides: bundled(crate(hashlink)) = 0.10.0 Provides: bundled(crate(heck)) = 0.4.1 +Provides: bundled(crate(heck)) = 0.5.0 Provides: bundled(crate(hex)) = 0.4.3 Provides: bundled(crate(hexf-parse)) = 0.2.1 Provides: bundled(crate(http_sfv)) = 0.1.0 -Provides: bundled(crate(icu_capi)) = 1.4.0 -Provides: bundled(crate(icu_collections)) = 1.4.0 -Provides: bundled(crate(icu_locid)) = 1.4.0 -Provides: bundled(crate(icu_locid_transform)) = 1.4.0 -Provides: bundled(crate(icu_locid_transform_data)) = 1.4.0 -Provides: bundled(crate(icu_properties)) = 1.4.0 -Provides: bundled(crate(icu_properties_data)) = 1.4.0 -Provides: bundled(crate(icu_provider)) = 1.4.0 -Provides: bundled(crate(icu_provider_adapters)) = 1.4.0 -Provides: bundled(crate(icu_provider_macros)) = 1.4.0 -Provides: bundled(crate(icu_segmenter)) = 1.4.0 -Provides: bundled(crate(icu_segmenter_data)) = 1.4.0 +Provides: bundled(crate(iana-time-zone)) = 0.1.63 +Provides: bundled(crate(icu_calendar)) = 1.5.2 +Provides: bundled(crate(icu_calendar_data)) = 1.5.0 +Provides: bundled(crate(icu_capi)) = 1.5.0 +Provides: bundled(crate(icu_collections)) = 1.5.0 +Provides: bundled(crate(icu_locid)) = 1.5.0 +Provides: bundled(crate(icu_locid_transform)) = 1.5.0 +Provides: bundled(crate(icu_locid_transform_data)) = 1.5.0 +Provides: bundled(crate(icu_normalizer)) = 1.5.0 +Provides: bundled(crate(icu_normalizer_data)) = 1.5.0 +Provides: bundled(crate(icu_properties)) = 1.5.0 +Provides: bundled(crate(icu_properties_data)) = 1.5.0 +Provides: bundled(crate(icu_provider)) = 1.5.0 +Provides: bundled(crate(icu_provider_adapters)) = 1.5.0 +Provides: bundled(crate(icu_provider_macros)) = 1.5.0 +Provides: bundled(crate(icu_segmenter)) = 1.5.0 +Provides: bundled(crate(icu_segmenter_data)) = 1.5.0 Provides: bundled(crate(id-arena)) = 2.2.1 Provides: bundled(crate(ident_case)) = 1.0.1 -Provides: bundled(crate(idna)) = 0.5.0 -Provides: bundled(crate(indexmap)) = 1.9.3 -Provides: bundled(crate(indexmap)) = 2.2.6 +Provides: bundled(crate(idna)) = 1.0.3 +Provides: bundled(crate(idna_adapter)) = 1.2.0 +Provides: bundled(crate(idna_glue)) = 0.1.0 +Provides: bundled(crate(indexmap)) = 2.8.0 +Provides: bundled(crate(indexmap)) = 2.9.0 Provides: bundled(crate(inherent)) = 1.0.7 Provides: bundled(crate(interrupt-support)) = 0.1.0 Provides: bundled(crate(intl-memoizer)) = 0.5.1 Provides: bundled(crate(intl_pluralrules)) = 7.0.2 Provides: bundled(crate(io-lifetimes)) = 1.0.10 Provides: bundled(crate(iovec)) = 0.1.4 -Provides: bundled(crate(ipcclientcerts-static)) = 0.1.0 -Provides: bundled(crate(itertools)) = 0.10.5 -Provides: bundled(crate(itoa)) = 1.0.5 +Provides: bundled(crate(ipcclientcerts)) = 0.1.0 +Provides: bundled(crate(ipdl_utils)) = 0.1.0 +Provides: bundled(crate(is_terminal_polyfill)) = 1.70.1 +Provides: bundled(crate(itertools)) = 0.10.999 +Provides: bundled(crate(itertools)) = 0.14.0 +Provides: bundled(crate(itoa)) = 1.0.15 Provides: bundled(crate(itoa)) = 1.0.6 -Provides: bundled(crate(jobserver)) = 0.1.25 +Provides: bundled(crate(jexl-eval)) = 0.3.0 +Provides: bundled(crate(jexl-parser)) = 0.3.0 +Provides: bundled(crate(jobserver)) = 0.1.33 Provides: bundled(crate(jog)) = 0.1.0 Provides: bundled(crate(jsrust)) = 0.1.0 Provides: bundled(crate(jsrust_shared)) = 0.1.0 @@ -858,37 +892,36 @@ Provides: bundled(crate(khronos_api)) = 3.1.0 Provides: bundled(crate(kvstore)) = 0.1.0 Provides: bundled(crate(l10nregistry)) = 0.3.0 Provides: bundled(crate(l10nregistry-ffi)) = 0.1.0 +Provides: bundled(crate(lalrpop-util)) = 0.19.12 Provides: bundled(crate(lazycell)) = 1.3.0 Provides: bundled(crate(lazy_static)) = 1.4.0 Provides: bundled(crate(leb128)) = 0.2.5 Provides: bundled(crate(libc)) = 0.2.144 -Provides: bundled(crate(libc)) = 0.2.153 +Provides: bundled(crate(libc)) = 0.2.171 Provides: bundled(crate(libdbus-sys)) = 0.2.2 -Provides: bundled(crate(libloading)) = 0.8.3 +Provides: bundled(crate(libloading)) = 0.8.6 Provides: bundled(crate(libm)) = 0.2.6 -Provides: bundled(crate(libsqlite3-sys)) = 0.28.0 +Provides: bundled(crate(libsqlite3-sys)) = 0.31.0 Provides: bundled(crate(libudev)) = 0.2.0 Provides: bundled(crate(libudev-sys)) = 0.1.3 Provides: bundled(crate(linux-raw-sys)) = 0.3.7 -Provides: bundled(crate(linux-raw-sys)) = 0.4.12 -Provides: bundled(crate(litemap)) = 0.7.2 +Provides: bundled(crate(linux-raw-sys)) = 0.4.14 +Provides: bundled(crate(litemap)) = 0.7.3 Provides: bundled(crate(litrs)) = 0.4.1 -Provides: bundled(crate(lmdb-rkv)) = 0.14.0 Provides: bundled(crate(lmdb-rkv-sys)) = 0.11.2 Provides: bundled(crate(localization-ffi)) = 0.1.0 Provides: bundled(crate(lock_api)) = 0.4.9 Provides: bundled(crate(log)) = 0.4.17 -Provides: bundled(crate(log)) = 0.4.20 +Provides: bundled(crate(log)) = 0.4.26 Provides: bundled(crate(malloc_size_of)) = 0.0.1 Provides: bundled(crate(malloc_size_of_derive)) = 0.1.3 Provides: bundled(crate(mapped_hyph)) = 0.4.3 Provides: bundled(crate(matches)) = 0.1.10 +Provides: bundled(crate(maybe-async)) = 0.2.10 Provides: bundled(crate(md-5)) = 0.10.5 Provides: bundled(crate(mdns_service)) = 0.1.1 Provides: bundled(crate(memalloc)) = 0.1.0 -Provides: bundled(crate(memchr)) = 2.5.0 -Provides: bundled(crate(memmap2)) = 0.5.999 -Provides: bundled(crate(memmap2)) = 0.8.999 +Provides: bundled(crate(memchr)) = 2.7.4 Provides: bundled(crate(memmap2)) = 0.9.3 Provides: bundled(crate(memoffset)) = 0.8.999 Provides: bundled(crate(memoffset)) = 0.9.0 @@ -899,7 +932,18 @@ Provides: bundled(crate(mime_guess)) = 2.0.4 Provides: bundled(crate(mime-guess-ffi)) = 0.1.0 Provides: bundled(crate(minimal-lexical)) = 0.2.1 Provides: bundled(crate(miniz_oxide)) = 0.7.1 -Provides: bundled(crate(mio)) = 0.8.8 +Provides: bundled(crate(mio)) = 1.0.1 +Provides: bundled(crate(mls_gk)) = 0.1.0 +Provides: bundled(crate(mls-platform-api)) = 0.1.0 +Provides: bundled(crate(mls-rs)) = 0.45.0 +Provides: bundled(crate(mls-rs-codec)) = 0.6.0 +Provides: bundled(crate(mls-rs-codec-derive)) = 0.2.0 +Provides: bundled(crate(mls-rs-core)) = 0.21.0 +Provides: bundled(crate(mls-rs-crypto-hpke)) = 0.14.0 +Provides: bundled(crate(mls-rs-crypto-nss)) = 0.1.0 +Provides: bundled(crate(mls-rs-crypto-traits)) = 0.15.0 +Provides: bundled(crate(mls-rs-identity-x509)) = 0.15.0 +Provides: bundled(crate(mls-rs-provider-sqlite)) = 0.15.0 Provides: bundled(crate(moz_asserts)) = 0.1.0 Provides: bundled(crate(mozbuild)) = 0.1.0 Provides: bundled(crate(moz_cbor)) = 0.1.2 @@ -909,42 +953,42 @@ Provides: bundled(crate(moz_task)) = 0.1.0 Provides: bundled(crate(mozurl)) = 0.0.1 Provides: bundled(crate(mp4parse)) = 0.17.0 Provides: bundled(crate(mp4parse_capi)) = 0.17.0 +Provides: bundled(crate(mtu)) = 0.2.6 Provides: bundled(crate(murmurhash3)) = 0.0.5 -Provides: bundled(crate(naga)) = 0.20.0 -Provides: bundled(crate(neqo-common)) = 0.7.9 -Provides: bundled(crate(neqo-crypto)) = 0.7.9 +Provides: bundled(crate(naga)) = 25.0.0 +Provides: bundled(crate(neqo-common)) = 0.13.4 +Provides: bundled(crate(neqo-crypto)) = 0.13.4 Provides: bundled(crate(neqo_glue)) = 0.1.0 -Provides: bundled(crate(neqo-http3)) = 0.7.9 -Provides: bundled(crate(neqo-qpack)) = 0.7.9 -Provides: bundled(crate(neqo-transport)) = 0.7.9 +Provides: bundled(crate(neqo-http3)) = 0.13.4 +Provides: bundled(crate(neqo-qpack)) = 0.13.4 +Provides: bundled(crate(neqo-transport)) = 0.13.4 +Provides: bundled(crate(neqo-udp)) = 0.13.4 Provides: bundled(crate(netwerk_helper)) = 0.0.1 Provides: bundled(crate(new_debug_unreachable)) = 1.0.4 Provides: bundled(crate(nix)) = 0.26.99 -Provides: bundled(crate(nix)) = 0.28.0 +Provides: bundled(crate(nix)) = 0.29.0 Provides: bundled(crate(nom)) = 7.1.3 Provides: bundled(crate(nserror)) = 0.1.0 -Provides: bundled(crate(nss_build_common)) = 0.1.0 Provides: bundled(crate(nss-gk-api)) = 0.3.0 Provides: bundled(crate(nsstring)) = 0.1.0 Provides: bundled(crate(num-conv)) = 0.1.0 -Provides: bundled(crate(num_cpus)) = 1.15.0 +Provides: bundled(crate(num_cpus)) = 1.16.0 Provides: bundled(crate(num-derive)) = 0.4.2 Provides: bundled(crate(num-integer)) = 0.1.45 -Provides: bundled(crate(num-traits)) = 0.2.15 -Provides: bundled(crate(object)) = 0.32.0 +Provides: bundled(crate(num-traits)) = 0.2.19 +Provides: bundled(crate(object)) = 0.36.4 Provides: bundled(crate(oblivious_http)) = 0.1.0 -Provides: bundled(crate(ohttp)) = 0.3.1 -Provides: bundled(crate(once_cell)) = 1.19.0 -Provides: bundled(crate(oneshot-uniffi)) = 0.1.6 +Provides: bundled(crate(ohttp)) = 0.5.1 +Provides: bundled(crate(once_cell)) = 1.21.3 Provides: bundled(crate(ordered-float)) = 3.4.0 Provides: bundled(crate(origin-trials-ffi)) = 0.1.0 Provides: bundled(crate(origin-trial-token)) = 0.1.1 -Provides: bundled(crate(os_str_bytes)) = 6.5.0 Provides: bundled(crate(oxilangtag)) = 0.1.3 Provides: bundled(crate(oxilangtag-ffi)) = 0.1.0 -Provides: bundled(crate(parking_lot)) = 0.12.1 -Provides: bundled(crate(parking_lot_core)) = 0.9.9 +Provides: bundled(crate(parking_lot)) = 0.12.3 +Provides: bundled(crate(parking_lot_core)) = 0.9.10 Provides: bundled(crate(paste)) = 1.0.11 +Provides: bundled(crate(payload-support)) = 0.1.0 Provides: bundled(crate(peek-poke)) = 0.3.0 Provides: bundled(crate(peek-poke-derive)) = 0.3.0 Provides: bundled(crate(percent-encoding)) = 2.3.1 @@ -953,7 +997,7 @@ Provides: bundled(crate(phf_codegen)) = 0.11.2 Provides: bundled(crate(phf_generator)) = 0.11.2 Provides: bundled(crate(phf_macros)) = 0.11.2 Provides: bundled(crate(phf_shared)) = 0.11.2 -Provides: bundled(crate(pin-project-lite)) = 0.2.9 +Provides: bundled(crate(pin-project-lite)) = 0.2.14 Provides: bundled(crate(pin-utils)) = 0.1.0 Provides: bundled(crate(pkcs11-bindings)) = 0.1.5 Provides: bundled(crate(pkg-config)) = 0.3.26 @@ -965,8 +1009,8 @@ Provides: bundled(crate(precomputed-hash)) = 0.1.1 Provides: bundled(crate(prefs_parser)) = 0.0.1 Provides: bundled(crate(prio)) = 0.16.2 Provides: bundled(crate(processtools)) = 0.1.0 -Provides: bundled(crate(proc-macro2)) = 1.0.74 Provides: bundled(crate(proc-macro2)) = 1.0.85 +Provides: bundled(crate(proc-macro2)) = 1.0.86 Provides: bundled(crate(profiler_helper)) = 0.1.0 Provides: bundled(crate(profiler-macros)) = 0.1.0 Provides: bundled(crate(profiling)) = 1.0.7 @@ -975,64 +1019,73 @@ Provides: bundled(crate(prost-derive)) = 0.12.1 Provides: bundled(crate(pulse)) = 0.3.0 Provides: bundled(crate(pulse-ffi)) = 0.1.0 Provides: bundled(crate(qcms)) = 0.3.0 -Provides: bundled(crate(qlog)) = 0.13.0 +Provides: bundled(crate(qlog)) = 0.15.2 Provides: bundled(crate(quick-error)) = 1.2.3 -Provides: bundled(crate(quote)) = 1.0.27 +Provides: bundled(crate(quinn-udp)) = 0.5.12 Provides: bundled(crate(quote)) = 1.0.35 +Provides: bundled(crate(quote)) = 1.0.40 Provides: bundled(crate(rand)) = 0.8.5 Provides: bundled(crate(rand_chacha)) = 0.3.1 Provides: bundled(crate(rand_core)) = 0.6.4 -Provides: bundled(crate(raw-window-handle)) = 0.6.0 -Provides: bundled(crate(rayon)) = 1.6.1 -Provides: bundled(crate(rayon-core)) = 1.12.0 +Provides: bundled(crate(rand_distr)) = 0.4.3 +Provides: bundled(crate(raw-window-handle)) = 0.6.2 +Provides: bundled(crate(rayon)) = 1.10.0 +Provides: bundled(crate(rayon-core)) = 1.12.1 Provides: bundled(crate(regex)) = 1.9.4 Provides: bundled(crate(regex-automata)) = 0.3.7 Provides: bundled(crate(regex-syntax)) = 0.7.5 Provides: bundled(crate(relevancy)) = 0.1.0 Provides: bundled(crate(remote_settings)) = 0.1.0 -Provides: bundled(crate(remove_dir_all)) = 0.5.3 Provides: bundled(crate(replace_with)) = 0.1.7 Provides: bundled(crate(ringbuf)) = 0.2.8 Provides: bundled(crate(rkv)) = 0.19.0 -Provides: bundled(crate(ron)) = 0.8.1 +Provides: bundled(crate(rmp)) = 0.8.14 +Provides: bundled(crate(rmp-serde)) = 1.3.0 +Provides: bundled(crate(ron)) = 0.10.1 Provides: bundled(crate(rsclientcerts)) = 0.1.0 Provides: bundled(crate(rsdparsa_capi)) = 0.1.0 Provides: bundled(crate(runloop)) = 0.1.0 Provides: bundled(crate(rure)) = 0.2.2 -Provides: bundled(crate(rusqlite)) = 0.31.0 +Provides: bundled(crate(rusqlite)) = 0.31.999 +Provides: bundled(crate(rusqlite)) = 0.33.0 Provides: bundled(crate(rust_cascade)) = 1.5.0 Provides: bundled(crate(rustc-demangle)) = 0.1.21 -Provides: bundled(crate(rustc-hash)) = 1.1.0 +Provides: bundled(crate(rustc-hash)) = 1.999.999 +Provides: bundled(crate(rustc-hash)) = 2.1.1 Provides: bundled(crate(rustc_version)) = 0.4.0 Provides: bundled(crate(rust_decimal)) = 1.28.1 Provides: bundled(crate(rustix)) = 0.37.19 -Provides: bundled(crate(rustix)) = 0.38.28 +Provides: bundled(crate(rustix)) = 0.38.39 +Provides: bundled(crate(rustversion)) = 1.0.19 Provides: bundled(crate(ryu)) = 1.0.12 Provides: bundled(crate(ryu)) = 1.0.13 Provides: bundled(crate(same-file)) = 1.0.6 Provides: bundled(crate(scopeguard)) = 1.1.0 Provides: bundled(crate(scroll)) = 0.12.0 Provides: bundled(crate(scroll_derive)) = 0.12.0 -Provides: bundled(crate(selectors)) = 0.22.0 +Provides: bundled(crate(search)) = 0.1.0 +Provides: bundled(crate(selectors)) = 0.26.0 Provides: bundled(crate(self_cell)) = 0.10.2 Provides: bundled(crate(semver)) = 1.0.16 Provides: bundled(crate(serde)) = 1.0.163 -Provides: bundled(crate(serde)) = 1.0.203 +Provides: bundled(crate(serde)) = 1.0.219 Provides: bundled(crate(serde_bytes)) = 0.11.9 Provides: bundled(crate(serde_cbor)) = 0.11.2 Provides: bundled(crate(serde_derive)) = 1.0.163 -Provides: bundled(crate(serde_derive)) = 1.0.203 -Provides: bundled(crate(serde_json)) = 1.0.116 +Provides: bundled(crate(serde_derive)) = 1.0.219 +Provides: bundled(crate(serde_json)) = 1.0.140 Provides: bundled(crate(serde_json)) = 1.0.96 Provides: bundled(crate(serde_path_to_error)) = 0.1.11 -Provides: bundled(crate(serde_with)) = 3.0.0 -Provides: bundled(crate(serde_with_macros)) = 3.0.0 -Provides: bundled(crate(servo_arc)) = 0.1.1 +Provides: bundled(crate(serde_spanned)) = 0.6.8 +Provides: bundled(crate(serde_with)) = 3.12.0 +Provides: bundled(crate(serde_with_macros)) = 3.12.0 +Provides: bundled(crate(servo_arc)) = 0.4.0 Provides: bundled(crate(sfv)) = 0.9.4 Provides: bundled(crate(sha1)) = 0.10.5 -Provides: bundled(crate(sha2)) = 0.10.6 +Provides: bundled(crate(sha2)) = 0.10.8 Provides: bundled(crate(sha3)) = 0.10.8 -Provides: bundled(crate(shlex)) = 1.1.0 +Provides: bundled(crate(shlex)) = 1.3.0 +Provides: bundled(crate(signature_cache)) = 0.1.0 Provides: bundled(crate(siphasher)) = 0.3.10 Provides: bundled(crate(slab)) = 0.4.8 Provides: bundled(crate(smallbitvec)) = 2.5.1 @@ -1049,7 +1102,9 @@ Provides: bundled(crate(storage)) = 0.1.0 Provides: bundled(crate(storage_variant)) = 0.1.0 Provides: bundled(crate(strck)) = 0.1.2 Provides: bundled(crate(strck_ident)) = 0.1.2 -Provides: bundled(crate(strsim)) = 0.10.0 +Provides: bundled(crate(strsim)) = 0.11.1 +Provides: bundled(crate(strum)) = 0.27.1 +Provides: bundled(crate(strum_macros)) = 0.27.1 Provides: bundled(crate(style)) = 0.0.1 Provides: bundled(crate(style_derive)) = 0.0.1 Provides: bundled(crate(style_traits)) = 0.0.1 @@ -1057,34 +1112,37 @@ Provides: bundled(crate(subtle)) = 2.5.0 Provides: bundled(crate(suggest)) = 0.1.0 Provides: bundled(crate(svg_fmt)) = 0.4.1 Provides: bundled(crate(swgl)) = 0.1.0 -Provides: bundled(crate(syn)) = 1.0.109 -Provides: bundled(crate(syn)) = 2.0.16 -Provides: bundled(crate(syn)) = 2.0.46 +Provides: bundled(crate(syn)) = 2.0.87 Provides: bundled(crate(sync15)) = 0.1.0 Provides: bundled(crate(sync-guid)) = 0.1.0 Provides: bundled(crate(synstructure)) = 0.13.1 Provides: bundled(crate(tabs)) = 0.1.0 +Provides: bundled(crate(tempfile)) = 3.16.0 Provides: bundled(crate(tempfile)) = 3.5.0 -Provides: bundled(crate(tempfile)) = 3.9.0 -Provides: bundled(crate(termcolor)) = 1.2.0 Provides: bundled(crate(termcolor)) = 1.4.1 -Provides: bundled(crate(textwrap)) = 0.16.0 Provides: bundled(crate(textwrap)) = 0.16.1 Provides: bundled(crate(thin-vec)) = 0.2.12 -Provides: bundled(crate(thiserror)) = 1.0.61 -Provides: bundled(crate(thiserror-impl)) = 1.0.61 +Provides: bundled(crate(thiserror)) = 1.999.999 +Provides: bundled(crate(thiserror)) = 2.0.9 +Provides: bundled(crate(thiserror-impl)) = 2.0.9 Provides: bundled(crate(threadbound)) = 0.1.5 Provides: bundled(crate(time)) = 0.1.45 Provides: bundled(crate(time)) = 0.3.36 Provides: bundled(crate(time-core)) = 0.1.2 Provides: bundled(crate(time-macros)) = 0.2.18 -Provides: bundled(crate(tinystr)) = 0.7.4 -Provides: bundled(crate(tinyvec)) = 1.999.999 +Provides: bundled(crate(tinystr)) = 0.7.6 +Provides: bundled(crate(tinyvec)) = 1.9.0 +Provides: bundled(crate(tinyvec_macros)) = 0.1.1 Provides: bundled(crate(toml)) = 0.5.11 +Provides: bundled(crate(toml)) = 0.8.22 +Provides: bundled(crate(toml_datetime)) = 0.6.9 +Provides: bundled(crate(toml_edit)) = 0.22.26 +Provides: bundled(crate(toml_write)) = 0.1.1 Provides: bundled(crate(topological-sort)) = 0.1.0 -Provides: bundled(crate(to_shmem)) = 0.0.1 -Provides: bundled(crate(to_shmem_derive)) = 0.0.1 +Provides: bundled(crate(to_shmem)) = 0.1.0 +Provides: bundled(crate(to_shmem_derive)) = 0.1.0 Provides: bundled(crate(tracy-rs)) = 0.1.2 +Provides: bundled(crate(trust-anchors)) = 0.1.0 Provides: bundled(crate(typed-arena-nomut)) = 0.1.0 Provides: bundled(crate(type-map)) = 0.4.0 Provides: bundled(crate(typenum)) = 1.16.0 @@ -1098,58 +1156,64 @@ Provides: bundled(crate(unicode-bidi)) = 0.3.15 Provides: bundled(crate(unicode-bidi-ffi)) = 0.1.0 Provides: bundled(crate(unicode-ident)) = 1.0.6 Provides: bundled(crate(unicode-ident)) = 1.0.8 -Provides: bundled(crate(unicode-linebreak)) = 0.1.5 -Provides: bundled(crate(unicode-normalization)) = 0.1.22 -Provides: bundled(crate(unicode-width)) = 0.1.10 -Provides: bundled(crate(unicode-xid)) = 0.2.4 -Provides: bundled(crate(uniffi)) = 0.27.1 -Provides: bundled(crate(uniffi_bindgen)) = 0.27.1 -Provides: bundled(crate(uniffi_build)) = 0.27.1 -Provides: bundled(crate(uniffi_checksum_derive)) = 0.27.1 -Provides: bundled(crate(uniffi_core)) = 0.27.1 -Provides: bundled(crate(uniffi_macros)) = 0.27.1 -Provides: bundled(crate(uniffi_meta)) = 0.27.1 -Provides: bundled(crate(uniffi_testing)) = 0.27.1 -Provides: bundled(crate(uniffi_udl)) = 0.27.1 -Provides: bundled(crate(url)) = 2.5.0 -Provides: bundled(crate(utf8_iter)) = 1.0.3 +Provides: bundled(crate(unicode-normalization)) = 0.1.24 +Provides: bundled(crate(unicode-width)) = 0.1.999 +Provides: bundled(crate(unicode-width)) = 0.2.0 +Provides: bundled(crate(uniffi)) = 0.29.2 +Provides: bundled(crate(uniffi_bindgen)) = 0.29.2 +Provides: bundled(crate(uniffi_build)) = 0.29.2 +Provides: bundled(crate(uniffi_core)) = 0.29.2 +Provides: bundled(crate(uniffi_internal_macros)) = 0.29.2 +Provides: bundled(crate(uniffi_macros)) = 0.29.2 +Provides: bundled(crate(uniffi_meta)) = 0.29.2 +Provides: bundled(crate(uniffi_pipeline)) = 0.29.2 +Provides: bundled(crate(uniffi_udl)) = 0.29.2 +Provides: bundled(crate(url)) = 2.5.4 +Provides: bundled(crate(utf16_iter)) = 1.0.5 +Provides: bundled(crate(utf8_iter)) = 1.0.4 +Provides: bundled(crate(utf8parse)) = 0.2.2 Provides: bundled(crate(uuid)) = 1.3.0 Provides: bundled(crate(vcpkg)) = 0.2.999 Provides: bundled(crate(version_check)) = 0.9.4 Provides: bundled(crate(viaduct)) = 0.1.0 Provides: bundled(crate(void)) = 1.0.2 Provides: bundled(crate(walkdir)) = 2.3.2 -Provides: bundled(crate(wasm-encoder)) = 0.205.0 -Provides: bundled(crate(wast)) = 205.0.0 +Provides: bundled(crate(wasm-encoder)) = 0.219.1 +Provides: bundled(crate(wast)) = 219.0.1 Provides: bundled(crate(webext-storage)) = 0.1.0 -Provides: bundled(crate(webext_storage_bridge)) = 0.1.0 Provides: bundled(crate(webrender)) = 0.62.0 Provides: bundled(crate(webrender_api)) = 0.62.0 Provides: bundled(crate(webrender_bindings)) = 0.1.0 Provides: bundled(crate(webrender_build)) = 0.0.2 -Provides: bundled(crate(webrtc-sdp)) = 0.3.11 +Provides: bundled(crate(webrtc-sdp)) = 0.3.13 Provides: bundled(crate(weedle2)) = 5.0.0 Provides: bundled(crate(wgpu_bindings)) = 0.1.0 -Provides: bundled(crate(wgpu-core)) = 0.20.0 -Provides: bundled(crate(wgpu-hal)) = 0.20.0 -Provides: bundled(crate(wgpu-types)) = 0.20.0 +Provides: bundled(crate(wgpu-core)) = 25.0.0 +Provides: bundled(crate(wgpu-core-deps-windows-linux-android)) = 25.0.0 +Provides: bundled(crate(wgpu-hal)) = 25.0.0 +Provides: bundled(crate(wgpu-types)) = 25.0.0 Provides: bundled(crate(whatsys)) = 0.3.1 +Provides: bundled(crate(winnow)) = 0.7.10 +Provides: bundled(crate(winnow)) = 0.7.9 Provides: bundled(crate(wpf-gpu-raster)) = 0.1.0 Provides: bundled(crate(wr_glyph_rasterizer)) = 0.1.0 -Provides: bundled(crate(writeable)) = 0.5.4 -Provides: bundled(crate(wr_malloc_size_of)) = 0.0.2 +Provides: bundled(crate(write16)) = 1.0.0 +Provides: bundled(crate(writeable)) = 0.5.5 +Provides: bundled(crate(wr_malloc_size_of)) = 0.2.1 Provides: bundled(crate(xmldecl)) = 0.2.0 Provides: bundled(crate(xml-rs)) = 0.8.4 Provides: bundled(crate(xpcom)) = 0.1.0 Provides: bundled(crate(xpcom_macros)) = 0.1.0 -Provides: bundled(crate(yoke)) = 0.7.3 -Provides: bundled(crate(yoke-derive)) = 0.7.3 +Provides: bundled(crate(yoke)) = 0.7.4 +Provides: bundled(crate(yoke-derive)) = 0.7.4 Provides: bundled(crate(zeitstempel)) = 0.1.1 Provides: bundled(crate(zerocopy)) = 0.7.32 -Provides: bundled(crate(zerofrom)) = 0.1.2 +Provides: bundled(crate(zerofrom)) = 0.1.4 Provides: bundled(crate(zerofrom-derive)) = 0.1.3 -Provides: bundled(crate(zerovec)) = 0.10.1 -Provides: bundled(crate(zerovec-derive)) = 0.10.1 +Provides: bundled(crate(zeroize)) = 1.8.1 +Provides: bundled(crate(zeroize_derive)) = 1.4.2 +Provides: bundled(crate(zerovec)) = 0.10.4 +Provides: bundled(crate(zerovec-derive)) = 0.10.3 %description Mozilla Firefox is an open-source web browser, designed for standards @@ -1192,6 +1256,7 @@ echo "use_dts %{?use_dts}" echo "use_nodejs_scl %{?use_nodejs_scl}" echo "use_python3_scl %{?use_python3_scl}" echo "with_wasi_sdk %{?with_wasi_sdk}" +echo "use_gcc_ts %{?use_gcc_ts}" echo "--------------------------------------------" #clang -print-search-dirs %setup -q -n %{name}-%{version} @@ -1205,30 +1270,31 @@ echo "--------------------------------------------" %patch -P1 -p1 -b .disable-elfhack %patch -P2 -p1 -b .firefox-gcc-build %patch -P3 -p1 -b .build-big-endian-errors + %if 0%{?rhel} == 7 -%patch -P5 -p1 -b .build-rhel7-lower-node-min-version +%patch -P4 -p1 -b .build-rhel7-lower-node-min-version # Disable gamepad due to old kernel -%patch -P11 -p1 -b .gamepad +%patch -P10 -p1 -b .gamepad %ifarch ppc64 # abiv2 version not available in RHEL7 ppc # TODO most likely not needed with system nss -%patch -P6 -p1 -b .ppc64-abiv2 +%patch -P5 -p1 -b .ppc64-abiv2 %endif %ifarch %{ix86} # -F dwarf not available in RHEL7's nasm -%patch -P7 -p1 -b .build-rhel7-nasm-dwarf +%patch -P6 -p1 -b .build-rhel7-nasm-dwarf %endif %endif -%if 0%{?rhel} == 7 || (0%{?rhel} == 8 && %{rhel_minor_version} <= 2) -%patch -P8 -p1 -b .disable-pipewire +%patch -P8 -p1 -b .rhbz-2131158-webrtc-nss-fix +%patch -P9 -p1 -b .build-ffvpx +%patch -P11 -p1 -b .rhbz-71999-fips-youtube + +%if %{?system_pipewire} +%patch -P13 -p1 -b .fix-build-with-system-pipewire %endif -%patch -P9 -p1 -b .rhbz-2131158-webrtc-nss-fix -%patch -P10 -p1 -b .build-ffvpx -%if 0%{?rhel} == 10 -%patch -P12 -p1 -b .system-nss-replace-xyber-with-mlkem +%if %{?system_nss} +%patch -P14 -p1 -b .system-nss %endif -%patch -P13 -p1 -b .kiosk-vsync -%patch -P14 -p1 -b .rhbz-71999-fips-youtube # We need to create the wasi.patch with the correct path to the wasm libclang_rt. %if %{with_wasi_sdk} @@ -1239,6 +1305,8 @@ export LIBCLANG_RT=`pwd`/wasi-sdk-20/build/compiler-rt/lib/wasi/libclang_rt.buil # -- Upstreamed patches -- %patch -P51 -p1 -b .mozilla-bmo1170092 %patch -P52 -p1 -b .exceptionHandled-for-IO-error-processhandler +%patch -P53 -p1 -b .clear-lang-bundles +%patch -P54 -p1 -b .restoreWinState # -- Submitted upstream, not merged -- %patch -P101 -p1 -b .mozilla-bmo1636168-fscreen @@ -1249,39 +1317,29 @@ export LIBCLANG_RT=`pwd`/wasi-sdk-20/build/compiler-rt/lib/wasi/libclang_rt.buil %patch -P106 -p1 -b .mozilla-bmo998749 %patch -P107 -p1 -b .mozilla-bmo1716707-swizzle %patch -P108 -p1 -b .mozilla-bmo1716707-svg + +%if 0%{?rhel} == 7 || (0%{?rhel} == 8 && %{rhel_minor_version} < 4) %patch -P109 -p1 -b .mozilla-bmo1789216-disable-av1 +%endif %patch -P110 -p1 -b .libaom +%patch -P111 -p1 -b .av1-else-condition-add # ---- Fedora specific patches ---- %patch -P151 -p1 -b .addons %patch -P152 -p1 -b .rhbz-1173156 -%patch -P154 -p1 -b .addons-nss-hack +%patch -P153 -p1 -b .addons-nss-hack # ARM run-time patch %ifarch aarch64 -%patch -P155 -p1 -b .rhbz-1354671 +%patch -P154 -p1 -b .rhbz-1354671 %endif # Fips webrtc patch %ifnarch ppc64 ppc64le s390x -%patch -P200 -p1 -b .webrtc-128.0 +%patch -P200 -p1 -b .D225034.1750779491 %patch -P201 -p1 -b .D224587 %patch -P202 -p1 -b .D224588 %endif -# --- Upstream PipeWire camera and screencast fixes ---- -%if %{?use_pipewire_camera} -%patch -P250 -p1 -b .pipewire-screencast-hide-cursor-when-goes-off-screen-or-is-invisible -%patch -P251 -p1 -b .pipewire-camera-support-additional-formats-and-fix-rgb-bgr-mapping -%patch -P252 -p1 -b .pipewire-camera-filter-out-devices-without-capabilities -%patch -P253 -p1 -b .always-query-information-about-camera-availability -%patch -P254 -p1 -b .always-register-video-input-feedback-for-newly-created-deviceinfo -%patch -P255 -p1 -b .pipewire-camera-make-member-variable-with-pipewire-status-updated -%patch -P256 -p1 -b .add-missing-support-for-device-change-notifications -%patch -P257 -p1 -b .pipewire-camera-get-max-fps-for-each-format-when-specified-as-list -%patch -P258 -p1 -b .pipewire-camera-use-exact-stream-parameters-specified-by-capability -%patch -P259 -p1 -b .pipewire-camera-use-better-unique-device-name-for-camera-devices -%endif - # ---- Security patches ---- %{__rm} -f .mozconfig @@ -1301,6 +1359,24 @@ echo "ac_add_options --without-system-nspr" >> .mozconfig echo "ac_add_options --without-system-nss" >> .mozconfig %endif +%if %{?system_drm} +echo "ac_add_options --with-system-libdrm" >> .mozconfig +%else +echo "ac_add_options --without-system-libdrm" >> .mozconfig +%endif + +%if %{?system_gbm} +echo "ac_add_options --with-system-gbm" >> .mozconfig +%else +echo "ac_add_options --without-system-gbm" >> .mozconfig +%endif + +%if %{?system_pipewire} +echo "ac_add_options --with-system-pipewire" >> .mozconfig +%else +echo "ac_add_options --without-system-pipewire" >> .mozconfig +%endif + %if %{?debug_build} echo "ac_add_options --enable-debug" >> .mozconfig echo "ac_add_options --disable-optimize" >> .mozconfig @@ -1377,6 +1453,9 @@ chmod a-x third_party/rust/ash/src/extensions/ext/*.rs chmod a-x third_party/rust/ash/src/extensions/khr/*.rs chmod a-x third_party/rust/ash/src/extensions/nv/*.rs +mkdir %{_buildrootdir}/bin || : +cp %{SOURCE32} %{_buildrootdir}/bin || : + #--------------------------------------------------------------------- %build @@ -1395,7 +1474,7 @@ popd export PATH="%{_buildrootdir}/bin:$PATH" # Cleanup buildroot for existing rpms from bundled nss/nspr and other packages -rm -rf %{_buildrootdir}/* +rm -rf %{_buildrootdir}/* FIXME? function install_rpms_to_current_dir() { PACKAGE_RPM=$(eval echo $1) @@ -1633,6 +1712,9 @@ cp %{SOURCE36} . #--------------------------------------------------------------------- %install +%if 0%{?rhel} == 7 +source scl_source enable devtoolset-11 || : +%endif export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system function install_rpms_to_current_dir() { PACKAGE_RPM=$(eval echo $1) @@ -1943,7 +2025,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{mozappdir}/browser/chrome %{mozappdir}/defaults/preferences/* %{mozappdir}/browser/defaults/preferences -%{mozappdir}/browser/features/*.xpi +#%{mozappdir}/browser/features/*.xpi %{mozappdir}/distribution/distribution.ini # That's Windows only %ghost %{mozappdir}/browser/features/aushelper@mozilla.org.xpi @@ -1980,7 +2062,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %endif %if !%{?system_nss} -%exclude %{mozappdir}/libnssckbi.so +#%exclude %{mozappdir}/libnssckbi.so %endif %if 0%{?bundle_nss} @@ -1997,6 +2079,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #--------------------------------------------------------------------- %changelog +* Wed Sep 10 2025 Jan Horak - 140.3.0-1 +- Update to 140.3.0 + * Fri Aug 15 2025 Jan Grulich - 128.14.0-2 - Add missing translations diff --git a/gen_cbindgen-vendor.sh b/gen_cbindgen-vendor.sh index 4e8aded..f3dffcd 100755 --- a/gen_cbindgen-vendor.sh +++ b/gen_cbindgen-vendor.sh @@ -12,7 +12,7 @@ to be used with 'cargo vendor' commmand. """ [dependencies] -cbindgen = "0.26.0" +cbindgen = "0.27.0" [[bin]] name = "dummy" diff --git a/mozilla-bmo1170092.patch b/mozilla-bmo1170092.patch index 36d2b00..66dacbf 100644 --- a/mozilla-bmo1170092.patch +++ b/mozilla-bmo1170092.patch @@ -1,6 +1,6 @@ -diff -up firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp ---- firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2023-07-10 21:08:53.000000000 +0200 -+++ firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp 2023-07-17 10:33:23.443355156 +0200 +diff -up firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.mozilla-bmo1170092 firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp +--- firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.mozilla-bmo1170092 2025-06-02 15:26:44.000000000 +0200 ++++ firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp 2025-06-04 13:24:00.344728697 +0200 @@ -263,8 +263,20 @@ nsresult nsReadConfig::openAndEvaluateJS if (NS_FAILED(rv)) return rv; @@ -23,10 +23,10 @@ diff -up firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 } else { nsAutoCString location("resource://gre/defaults/autoconfig/"); location += aFileName; -diff -up firefox-115.0.2/modules/libpref/Preferences.cpp.1170092 firefox-115.0.2/modules/libpref/Preferences.cpp ---- firefox-115.0.2/modules/libpref/Preferences.cpp.1170092 2023-07-10 21:09:00.000000000 +0200 -+++ firefox-115.0.2/modules/libpref/Preferences.cpp 2023-07-17 10:33:23.444355156 +0200 -@@ -4825,6 +4825,9 @@ nsresult Preferences::InitInitialObjects +diff -up firefox-140.0/modules/libpref/Preferences.cpp.mozilla-bmo1170092 firefox-140.0/modules/libpref/Preferences.cpp +--- firefox-140.0/modules/libpref/Preferences.cpp.mozilla-bmo1170092 2025-06-02 15:26:51.000000000 +0200 ++++ firefox-140.0/modules/libpref/Preferences.cpp 2025-06-04 13:24:00.345430064 +0200 +@@ -4914,6 +4914,9 @@ nsresult Preferences::InitInitialObjects // // Thus, in the omni.jar case, we always load app-specific default // preferences from omni.jar, whether or not `$app == $gre`. @@ -36,10 +36,10 @@ diff -up firefox-115.0.2/modules/libpref/Preferences.cpp.1170092 firefox-115.0.2 nsresult rv = NS_ERROR_FAILURE; UniquePtr find; -diff -up firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp ---- firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 2023-07-10 22:57:20.000000000 +0200 -+++ firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp 2023-07-17 10:56:25.309692121 +0200 -@@ -72,6 +72,7 @@ +diff -up firefox-140.0/toolkit/xre/nsXREDirProvider.cpp.mozilla-bmo1170092 firefox-140.0/toolkit/xre/nsXREDirProvider.cpp +--- firefox-140.0/toolkit/xre/nsXREDirProvider.cpp.mozilla-bmo1170092 2025-06-02 15:27:00.000000000 +0200 ++++ firefox-140.0/toolkit/xre/nsXREDirProvider.cpp 2025-06-04 15:44:09.413562326 +0200 +@@ -76,6 +76,7 @@ #endif #ifdef XP_UNIX # include @@ -47,7 +47,7 @@ diff -up firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0. #endif #ifdef XP_IOS # include "UIKitDirProvider.h" -@@ -478,6 +479,17 @@ nsXREDirProvider::GetFile(const char* aP +@@ -462,6 +463,17 @@ nsXREDirProvider::GetFile(const char* aP rv = file->AppendNative(nsLiteralCString(PREF_OVERRIDE_DIRNAME)); NS_ENSURE_SUCCESS(rv, rv); rv = EnsureDirectoryExists(file); @@ -60,12 +60,12 @@ diff -up firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0. + appInfo->GetName(appName); + ToLowerCase(appName); + sysConfigDir.Append(appName); -+ NS_NewNativeLocalFile(sysConfigDir, false, getter_AddRefs(file)); ++ NS_NewNativeLocalFile(sysConfigDir, getter_AddRefs(file)); + rv = EnsureDirectoryExists(file); } else { // We don't know anything about this property. Fail without warning, because // otherwise we'll get too much warning spam due to -@@ -694,6 +706,16 @@ nsXREDirProvider::GetFiles(const char* a +@@ -518,6 +530,16 @@ nsXREDirProvider::GetFiles(const char* a } #endif @@ -82,9 +82,9 @@ diff -up firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0. rv = NS_NewArrayEnumerator(aResult, directories, NS_GET_IID(nsIFile)); } else if (!strcmp(aProperty, NS_APP_CHROME_DIR_LIST)) { // NS_APP_CHROME_DIR_LIST is only used to get default (native) icons -diff -up firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h ---- firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2023-07-10 21:09:13.000000000 +0200 -+++ firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h 2023-07-17 10:33:23.444355156 +0200 +diff -up firefox-140.0/xpcom/io/nsAppDirectoryServiceDefs.h.mozilla-bmo1170092 firefox-140.0/xpcom/io/nsAppDirectoryServiceDefs.h +--- firefox-140.0/xpcom/io/nsAppDirectoryServiceDefs.h.mozilla-bmo1170092 2025-06-02 15:27:01.000000000 +0200 ++++ firefox-140.0/xpcom/io/nsAppDirectoryServiceDefs.h 2025-06-04 13:24:00.346423861 +0200 @@ -58,6 +58,7 @@ #define NS_APP_PREFS_DEFAULTS_DIR_LIST "PrefDL" #define NS_APP_PREFS_OVERRIDE_DIR \ diff --git a/mozilla-bmo1636168-fscreen.patch b/mozilla-bmo1636168-fscreen.patch index 6ee70ad..fb5ec23 100644 --- a/mozilla-bmo1636168-fscreen.patch +++ b/mozilla-bmo1636168-fscreen.patch @@ -1,29 +1,28 @@ -diff -up firefox-128.0/widget/gtk/nsWindow.cpp.mozilla-bmo1636168-fscreen firefox-128.0/widget/gtk/nsWindow.cpp ---- firefox-128.0/widget/gtk/nsWindow.cpp.mozilla-bmo1636168-fscreen 2024-07-04 18:20:43.000000000 +0200 -+++ firefox-128.0/widget/gtk/nsWindow.cpp 2024-07-16 14:54:21.026716936 +0200 -@@ -174,7 +174,8 @@ const gint kEvents = GDK_TOUCHPAD_GESTUR - GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | - GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | - GDK_SMOOTH_SCROLL_MASK | GDK_TOUCH_MASK | GDK_SCROLL_MASK | -- GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK; -+ GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK | -+ GDK_FOCUS_CHANGE_MASK; +diff -up firefox-140.0/widget/gtk/nsWindow.cpp.mozilla-bmo1636168-fscreen firefox-140.0/widget/gtk/nsWindow.cpp +--- firefox-140.0/widget/gtk/nsWindow.cpp.mozilla-bmo1636168-fscreen 2025-06-02 15:27:00.000000000 +0200 ++++ firefox-140.0/widget/gtk/nsWindow.cpp 2025-06-12 10:23:04.789578675 +0200 +@@ -196,7 +196,7 @@ constexpr gint kEvents = + GDK_VISIBILITY_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | + GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_SMOOTH_SCROLL_MASK | + GDK_TOUCH_MASK | GDK_SCROLL_MASK | GDK_POINTER_MOTION_MASK | +- GDK_PROPERTY_CHANGE_MASK; ++ GDK_PROPERTY_CHANGE_MASK | GDK_FOCUS_CHANGE_MASK; /* utility functions */ static bool is_mouse_in_window(GdkWindow* aWindow, gdouble aMouseX, -@@ -430,7 +431,8 @@ nsWindow::nsWindow() +@@ -454,7 +454,8 @@ nsWindow::nsWindow() mResizedAfterMoveToRect(false), mConfiguredClearColor(false), mGotNonBlankPaint(false), - mNeedsToRetryCapturingMouse(false) { + mNeedsToRetryCapturingMouse(false), + mPendingFullscreen(false) { - mWindowType = WindowType::Child; mSizeConstraints.mMaxSize = GetSafeWindowSize(mSizeConstraints.mMaxSize); -@@ -5374,6 +5376,19 @@ void nsWindow::OnWindowStateEvent(GtkWid - ClearTransparencyBitmap(); - } + if (!gGlobalsInitialized) { +@@ -5424,6 +5425,19 @@ void nsWindow::OnWindowStateEvent(GtkWid + if (mSizeMode != oldSizeMode && mWidgetListener) { + mWidgetListener->SizeModeChanged(mSizeMode); } + + // Hack to ensure window switched to fullscreen - avoid to fail when starting @@ -41,7 +40,7 @@ diff -up firefox-128.0/widget/gtk/nsWindow.cpp.mozilla-bmo1636168-fscreen firefo } void nsWindow::OnDPIChanged() { -@@ -7526,6 +7541,7 @@ nsresult nsWindow::MakeFullScreen(bool a +@@ -7239,6 +7253,7 @@ nsresult nsWindow::MakeFullScreen(bool a if (mKioskMonitor.isSome()) { KioskLockOnMonitor(); @@ -49,10 +48,10 @@ diff -up firefox-128.0/widget/gtk/nsWindow.cpp.mozilla-bmo1636168-fscreen firefo } else { gtk_window_fullscreen(GTK_WINDOW(mShell)); } -diff -up firefox-128.0/widget/gtk/nsWindow.h.mozilla-bmo1636168-fscreen firefox-128.0/widget/gtk/nsWindow.h ---- firefox-128.0/widget/gtk/nsWindow.h.mozilla-bmo1636168-fscreen 2024-07-04 18:20:43.000000000 +0200 -+++ firefox-128.0/widget/gtk/nsWindow.h 2024-07-16 14:25:51.636952919 +0200 -@@ -758,6 +758,7 @@ class nsWindow final : public nsBaseWidg +diff -up firefox-140.0/widget/gtk/nsWindow.h.mozilla-bmo1636168-fscreen firefox-140.0/widget/gtk/nsWindow.h +--- firefox-140.0/widget/gtk/nsWindow.h.mozilla-bmo1636168-fscreen 2025-06-02 15:27:00.000000000 +0200 ++++ firefox-140.0/widget/gtk/nsWindow.h 2025-06-12 10:18:42.354025723 +0200 +@@ -786,6 +786,7 @@ class nsWindow final : public nsBaseWidg * move-to-rect callback we set mMovedAfterMoveToRect/mResizedAfterMoveToRect. */ bool mWaitingForMoveToRectCallback : 1; diff --git a/mozilla-bmo1670333.patch b/mozilla-bmo1670333.patch index 4d29f5d..3b6bfb6 100644 --- a/mozilla-bmo1670333.patch +++ b/mozilla-bmo1670333.patch @@ -1,7 +1,7 @@ -diff -up firefox-128.0/dom/media/mp4/MP4Demuxer.cpp.mozilla-bmo1670333 firefox-128.0/dom/media/mp4/MP4Demuxer.cpp ---- firefox-128.0/dom/media/mp4/MP4Demuxer.cpp.mozilla-bmo1670333 2024-07-04 18:20:27.000000000 +0200 -+++ firefox-128.0/dom/media/mp4/MP4Demuxer.cpp 2024-07-16 13:49:10.475630426 +0200 -@@ -33,6 +33,8 @@ mozilla::LogModule* GetDemuxerLog() { re +diff -up firefox-140.0/dom/media/mp4/MP4Demuxer.cpp.mozilla-bmo1670333 firefox-140.0/dom/media/mp4/MP4Demuxer.cpp +--- firefox-140.0/dom/media/mp4/MP4Demuxer.cpp.mozilla-bmo1670333 2025-06-17 18:15:13.000000000 +0200 ++++ firefox-140.0/dom/media/mp4/MP4Demuxer.cpp 2025-06-18 10:17:47.394794429 +0200 +@@ -32,6 +32,8 @@ mozilla::LogModule* GetDemuxerLog() { re DDMOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug, "::%s: " arg, \ __func__, ##__VA_ARGS__) @@ -11,9 +11,9 @@ diff -up firefox-128.0/dom/media/mp4/MP4Demuxer.cpp.mozilla-bmo1670333 firefox-1 using TimeUnit = media::TimeUnit; @@ -419,6 +421,12 @@ already_AddRefed MP4TrackD - [[fallthrough]]; case H264::FrameType::OTHER: { - bool keyframe = type == H264::FrameType::I_FRAME; + bool keyframe = type == H264::FrameType::I_FRAME_OTHER || + type == H264::FrameType::I_FRAME_IDR; + if (gUseKeyframeFromContainer) { + if (sample->mKeyframe && sample->mKeyframe != keyframe) { + sample->mKeyframe = keyframe; @@ -23,10 +23,10 @@ diff -up firefox-128.0/dom/media/mp4/MP4Demuxer.cpp.mozilla-bmo1670333 firefox-1 if (sample->mKeyframe != keyframe) { NS_WARNING(nsPrintfCString("Frame incorrectly marked as %skeyframe " "@ pts:%" PRId64 " dur:%" PRId64 -diff -up firefox-128.0/dom/media/platforms/PDMFactory.cpp.mozilla-bmo1670333 firefox-128.0/dom/media/platforms/PDMFactory.cpp ---- firefox-128.0/dom/media/platforms/PDMFactory.cpp.mozilla-bmo1670333 2024-07-04 18:20:26.000000000 +0200 -+++ firefox-128.0/dom/media/platforms/PDMFactory.cpp 2024-07-16 14:16:04.635809901 +0200 -@@ -62,6 +62,8 @@ +diff -up firefox-140.0/dom/media/platforms/PDMFactory.cpp.mozilla-bmo1670333 firefox-140.0/dom/media/platforms/PDMFactory.cpp +--- firefox-140.0/dom/media/platforms/PDMFactory.cpp.mozilla-bmo1670333 2025-06-17 18:15:13.000000000 +0200 ++++ firefox-140.0/dom/media/platforms/PDMFactory.cpp 2025-06-18 10:10:29.209789856 +0200 +@@ -61,6 +61,8 @@ #include @@ -35,7 +35,7 @@ diff -up firefox-128.0/dom/media/platforms/PDMFactory.cpp.mozilla-bmo1670333 fir using DecodeSupport = mozilla::media::DecodeSupport; using DecodeSupportSet = mozilla::media::DecodeSupportSet; using MediaCodec = mozilla::media::MediaCodec; -@@ -543,7 +545,7 @@ void PDMFactory::CreateRddPDMs() { +@@ -573,7 +575,7 @@ void PDMFactory::CreateRddPDMs() { #ifdef MOZ_FFMPEG if (StaticPrefs::media_ffmpeg_enabled() && StaticPrefs::media_rdd_ffmpeg_enabled() && @@ -44,7 +44,7 @@ diff -up firefox-128.0/dom/media/platforms/PDMFactory.cpp.mozilla-bmo1670333 fir mFailureFlags += GetFailureFlagBasedOnFFmpegStatus( FFmpegRuntimeLinker::LinkStatusCode()); } -@@ -719,7 +721,7 @@ void PDMFactory::CreateDefaultPDMs() { +@@ -749,7 +751,7 @@ void PDMFactory::CreateDefaultPDMs() { StartupPDM(AgnosticDecoderModule::Create(), StaticPrefs::media_prefer_non_ffvpx()); @@ -53,10 +53,10 @@ diff -up firefox-128.0/dom/media/platforms/PDMFactory.cpp.mozilla-bmo1670333 fir !StartupPDM(GMPDecoderModule::Create(), StaticPrefs::media_gmp_decoder_preferred())) { mFailureFlags += DecoderDoctorDiagnostics::Flags::GMPPDMFailedToStartup; -diff -up firefox-128.0/dom/media/platforms/PDMFactory.h.mozilla-bmo1670333 firefox-128.0/dom/media/platforms/PDMFactory.h ---- firefox-128.0/dom/media/platforms/PDMFactory.h.mozilla-bmo1670333 2024-07-04 18:20:26.000000000 +0200 -+++ firefox-128.0/dom/media/platforms/PDMFactory.h 2024-07-16 13:49:10.476630421 +0200 -@@ -98,6 +98,7 @@ class PDMFactory final { +diff -up firefox-140.0/dom/media/platforms/PDMFactory.h.mozilla-bmo1670333 firefox-140.0/dom/media/platforms/PDMFactory.h +--- firefox-140.0/dom/media/platforms/PDMFactory.h.mozilla-bmo1670333 2025-06-17 18:15:13.000000000 +0200 ++++ firefox-140.0/dom/media/platforms/PDMFactory.h 2025-06-18 10:10:29.210054963 +0200 +@@ -105,6 +105,7 @@ class PDMFactory final { RefPtr mNullPDM; DecoderDoctorDiagnostics::FlagsSet mFailureFlags; diff --git a/mozilla-bmo1789216-disable-av1.patch b/mozilla-bmo1789216-disable-av1.patch index c7fe0c3..bcaa8d9 100644 --- a/mozilla-bmo1789216-disable-av1.patch +++ b/mozilla-bmo1789216-disable-av1.patch @@ -1,7 +1,7 @@ -diff -up firefox-128.0/media/ffvpx/libavcodec/allcodecs.c.mozilla-bmo1789216-disable-av1 firefox-128.0/media/ffvpx/libavcodec/allcodecs.c ---- firefox-128.0/media/ffvpx/libavcodec/allcodecs.c.mozilla-bmo1789216-disable-av1 2024-06-12 15:03:01.000000000 +0200 -+++ firefox-128.0/media/ffvpx/libavcodec/allcodecs.c 2024-06-13 11:44:10.637215674 +0200 -@@ -764,8 +764,11 @@ extern const FFCodec ff_libaribb24_decod +diff -up firefox-140.1.0/media/ffvpx/libavcodec/allcodecs.c.mozilla-bmo1789216-disable-av1 firefox-140.1.0/media/ffvpx/libavcodec/allcodecs.c +--- firefox-140.1.0/media/ffvpx/libavcodec/allcodecs.c.mozilla-bmo1789216-disable-av1 2025-07-14 19:14:53.000000000 +0200 ++++ firefox-140.1.0/media/ffvpx/libavcodec/allcodecs.c 2025-07-31 15:12:56.818469857 +0200 +@@ -769,8 +769,11 @@ extern const FFCodec ff_libaribb24_decod extern const FFCodec ff_libcelt_decoder; extern const FFCodec ff_libcodec2_encoder; extern const FFCodec ff_libcodec2_decoder; @@ -13,7 +13,7 @@ diff -up firefox-128.0/media/ffvpx/libavcodec/allcodecs.c.mozilla-bmo1789216-dis extern const FFCodec ff_libfdk_aac_encoder; extern const FFCodec ff_libfdk_aac_decoder; extern const FFCodec ff_libgsm_encoder; -@@ -793,7 +796,6 @@ extern const FFCodec ff_libspeex_decoder +@@ -800,7 +803,6 @@ extern const FFCodec ff_libspeex_decoder extern const FFCodec ff_libsvtav1_encoder; extern const FFCodec ff_libtheora_encoder; extern const FFCodec ff_libtwolame_encoder; @@ -21,9 +21,9 @@ diff -up firefox-128.0/media/ffvpx/libavcodec/allcodecs.c.mozilla-bmo1789216-dis extern const FFCodec ff_libvo_amrwbenc_encoder; extern const FFCodec ff_libvorbis_encoder; extern const FFCodec ff_libvorbis_decoder; -diff -up firefox-128.0/media/ffvpx/libavcodec/codec_list.c.mozilla-bmo1789216-disable-av1 firefox-128.0/media/ffvpx/libavcodec/codec_list.c ---- firefox-128.0/media/ffvpx/libavcodec/codec_list.c.mozilla-bmo1789216-disable-av1 2024-06-13 11:40:12.668924117 +0200 -+++ firefox-128.0/media/ffvpx/libavcodec/codec_list.c 2024-06-13 11:44:41.411253372 +0200 +diff -up firefox-140.1.0/media/ffvpx/libavcodec/codec_list.c.mozilla-bmo1789216-disable-av1 firefox-140.1.0/media/ffvpx/libavcodec/codec_list.c +--- firefox-140.1.0/media/ffvpx/libavcodec/codec_list.c.mozilla-bmo1789216-disable-av1 2025-07-14 19:14:53.000000000 +0200 ++++ firefox-140.1.0/media/ffvpx/libavcodec/codec_list.c 2025-07-31 15:12:56.820214239 +0200 @@ -11,12 +11,14 @@ static const FFCodec * const codec_list[ #if CONFIG_MP3_DECODER &ff_mp3_decoder, @@ -35,13 +35,13 @@ diff -up firefox-128.0/media/ffvpx/libavcodec/codec_list.c.mozilla-bmo1789216-di #if CONFIG_AV1_DECODER &ff_av1_decoder, #endif -+#endif ++#endif #if CONFIG_LIBVORBIS_DECODER &ff_libvorbis_decoder, #endif -diff -up firefox-128.0/media/ffvpx/libavcodec/moz.build.mozilla-bmo1789216-disable-av1 firefox-128.0/media/ffvpx/libavcodec/moz.build ---- firefox-128.0/media/ffvpx/libavcodec/moz.build.mozilla-bmo1789216-disable-av1 2024-06-13 11:40:12.669924118 +0200 -+++ firefox-128.0/media/ffvpx/libavcodec/moz.build 2024-06-13 11:45:22.867304151 +0200 +diff -up firefox-140.1.0/media/ffvpx/libavcodec/moz.build.mozilla-bmo1789216-disable-av1 firefox-140.1.0/media/ffvpx/libavcodec/moz.build +--- firefox-140.1.0/media/ffvpx/libavcodec/moz.build.mozilla-bmo1789216-disable-av1 2025-07-14 19:14:53.000000000 +0200 ++++ firefox-140.1.0/media/ffvpx/libavcodec/moz.build 2025-08-01 12:40:58.374987298 +0200 @@ -94,7 +94,6 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']: 'imgconvert.c', 'libaom.c', @@ -50,24 +50,25 @@ diff -up firefox-128.0/media/ffvpx/libavcodec/moz.build.mozilla-bmo1789216-disab 'libvpxdec.c', 'libvpxenc.c', 'mathtables.c', -@@ -119,10 +118,16 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']: - 'vp9recon.c', +@@ -120,16 +119,15 @@ if not CONFIG['MOZ_FFVPX_AUDIOONLY']: 'vpx_rac.c', ] -- USE_LIBS += [ -- 'dav1d', -- 'media_libdav1d_asm', -- ] -+ if CONFIG['MOZ_AV1']: -+ USE_LIBS += [ -+ 'dav1d', -+ 'media_libdav1d_asm', -+ ] + +- if CONFIG["MOZ_SYSTEM_AV1"]: +- CFLAGS += CONFIG['MOZ_SYSTEM_LIBDAV1D_CFLAGS'] +- CFLAGS += CONFIG['MOZ_SYSTEM_LIBAOM_CFLAGS'] +- OS_LIBS += CONFIG['MOZ_SYSTEM_LIBDAV1D_LIBS'] +- OS_LIBS += CONFIG['MOZ_SYSTEM_LIBAOM_LIBS'] +- else: ++ if CONFIG["MOZ_AV1"]: + USE_LIBS += [ + 'dav1d', + 'media_libdav1d_asm', + ] + SOURCES += [ + 'libdav1d.c', + ] + -+ + if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk": LOCAL_INCLUDES += ['/media/mozva'] - SOURCES += [ diff --git a/rhbz-1173156.patch b/rhbz-1173156.patch index c35d901..abd2efe 100644 --- a/rhbz-1173156.patch +++ b/rhbz-1173156.patch @@ -1,12 +1,12 @@ -diff -up firefox-60.5.0/extensions/auth/nsAuthSambaNTLM.cpp.rhbz-1173156 firefox-60.5.0/extensions/auth/nsAuthSambaNTLM.cpp ---- firefox-60.5.0/extensions/auth/nsAuthSambaNTLM.cpp.rhbz-1173156 2019-01-22 10:36:09.284069020 +0100 -+++ firefox-60.5.0/extensions/auth/nsAuthSambaNTLM.cpp 2019-01-22 10:37:12.669757744 +0100 -@@ -161,7 +161,7 @@ nsresult nsAuthSambaNTLM::SpawnNTLMAuthH - const char* username = PR_GetEnv("USER"); - if (!username) return NS_ERROR_FAILURE; +diff -up firefox-140.0/extensions/auth/nsAuthSambaNTLM.cpp.rhbz-1173156 firefox-140.0/extensions/auth/nsAuthSambaNTLM.cpp +--- firefox-140.0/extensions/auth/nsAuthSambaNTLM.cpp.rhbz-1173156 2025-06-02 15:26:45.000000000 +0200 ++++ firefox-140.0/extensions/auth/nsAuthSambaNTLM.cpp 2025-06-12 11:02:37.183715940 +0200 +@@ -153,7 +153,7 @@ nsresult nsAuthSambaNTLM::SpawnNTLMAuthH + options.fds_to_remap.push_back( + std::pair{fromChildPipeWrite.get(), STDOUT_FILENO}); + +- std::vector argvVec{"ntlm_auth", "--helper-protocol", ++ std::vector argvVec{"/usr/bin/ntlm_auth", "--helper-protocol", + "ntlmssp-client-1", "--use-cached-creds", + "--username", username}; -- 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/sources b/sources index 1168695..3107a75 100644 --- a/sources +++ b/sources @@ -1,8 +1,8 @@ SHA512 (mochitest-python.tar.gz) = 089b1593068b76f4572af0086eaccf52a6a1299bfffb58593206d19bf021ae381f2380bbfeb4371586cd53706ff6dde3d240238b2caf19b96c57dfc2f4524e36 -SHA512 (cbindgen-vendor.tar.xz) = 0c7a40033ccd38dadd30ad064feef390444af4562be07d3dfd0c4cccc55821b01b5228ddee367d0af3bd1b4ef9b1552cdd104506579b020ac1940a7c536b8b68 -SHA512 (nspr-4.35.0-1.el8_1.src.rpm) = 5123a443fcc42602e31104999be339ae899eb7b1f1e2f1ea87ba4f283eb894d08ab568e421dba1df4770f23be91ff88aa6a0748bce7feef31ed88bee5bdecb2c -SHA512 (nss-3.101.0-7.el9_2.src.rpm) = 7c325e0e437c1266031af02b3a026d20b789548ae435be6c39d710aa9d19c967ac0a79097fd50dd8ab878bf0d72c19e937d54863aa8cd0654ef2ef288e3102ec -SHA512 (nss-3.101.0-7.el8_2.src.rpm) = c25551b06cf9239bb54aaf3edaea2c60804b449de4e06af4f5192bc181b5c6468ea8a69ddeff9de1b11bfc123e894b1ce8fc5d6deddfd5062f8736b75db56f8d SHA512 (wasi-sdk-20.tar.gz) = 95be9d9b41ed1f7884e9cd68bad22abbb355b049fd09731c89b9e36666d0205b1a16ec9c21820adf0c5a34e2048015cbfbef0542170d466fa3336c636873c405 -SHA512 (firefox-128.14.0esr.processed-source.tar.xz) = ee07f081d9aa8042fb2893ed41a8df518781128a405acdbb0a3826140e3cbfac72f5053a167aaa5a35fb8f8ccf7bebb323006f27cd3fddf2935aed2002016534 -SHA512 (firefox-langpacks-128.14.0esr-20250815.tar.xz) = e787e9342affe264f1f27c8b0be5f3fada0f80e13d06fb45e7e601dd18efebe794a6474a9dfac2f51743c8e35f46eb3be12c86135ce770d08a7b74d5e3a6ad8d +SHA512 (nss-3.112.0-1.el9_4.src.rpm) = 6386239e79f8095b05270b3c8b76ac9203b0df196921b64b779f832f0c04fc8c86624a98d85d39372b07e361278c400f52ef653e14ebeab9db49429e69153ff2 +SHA512 (nss-3.112.0-4.el8_2.src.rpm) = 59cca3df7a0ec6a731f4a36f8f560d496d240da0c16650f047ae686e683b883dc2630aedbe46a8b2cb21662c15f03f1efbe99da42055cc3a5418da4839e28da2 +SHA512 (nspr-4.36.0-2.el8_2.src.rpm) = fcc720afd2453a5110975fac9dd06f636491234780b62cbfcc235a485b4935e97c4f438292c686d27d9dc86b56f43399c024bee4fffcdff5f27c62d105310645 +SHA512 (firefox-140.3.0esr.processed-source.tar.xz) = b473b5e8bb292fd94c63804b742324ec3959d4c804f4bdcf2652736b03d5549cf61c574ac19e627e38da0ac67137f5e95093770ef3cd9f665e202564f00476cf +SHA512 (firefox-langpacks-140.3.0esr-20250909.tar.xz) = 7b2e64b77b7333f84b3b7d89d4a46dfa95c1b7e16d2db8d6a15586356f7b0505d8136855b765550e5de8da8aa5785d2911e0b96fc971fe53b85cad38c1d2b816 +SHA512 (cbindgen-vendor.tar.xz) = 2b8db32c0bca2fa27304ee4fd3a5cc38bc43a11500b23842747813d221e55719c51cf4c0e027e41857f58ce1e283ce97b69c2c7d1eae93ecbb08c2f729e2bf55 diff --git a/wasi.patch b/wasi.patch index b47b496..51ada87 100644 --- a/wasi.patch +++ b/wasi.patch @@ -6,7 +6,7 @@ diff -up firefox-121.0.1/toolkit/moz.configure.wasi firefox-121.0.1/toolkit/moz. if wasi_sysroot: log.info("Using wasi sysroot in %s", wasi_sysroot) - return ["--sysroot=%s" % wasi_sysroot] -+ return ["--sysroot=%s" % wasi_sysroot, "-nodefaultlibs", "-lc", "-lwasi-emulated-process-clocks", "-lc++", "-lc++abi", "/home/jhorak/rpmbuild/BUILDROOT/usr/share/wasi-sysroot/lib/libclang_rt.builtins-wasm32.a"] ++ return ["--sysroot=%s" % wasi_sysroot, "-nodefaultlibs", "-lc", "-lwasi-emulated-process-clocks", "-lc++", "-lc++abi", "/home/jhorak/r/firefox/firefox-140.2.0-build/firefox-140.2.0/wasi-sdk-20/build/compiler-rt/lib/wasi/libclang_rt.builtins-wasm32.a"] return [] set_config("WASI_SYSROOT", wasi_sysroot) diff --git a/webrtc-128.0.patch.patch b/webrtc-128.0.patch similarity index 85% rename from webrtc-128.0.patch.patch rename to webrtc-128.0.patch index 6bd7f7c..c436e3b 100644 --- a/webrtc-128.0.patch.patch +++ b/webrtc-128.0.patch @@ -1,7 +1,7 @@ -diff -up firefox-128.2.0/dom/crypto/WebCryptoTask.cpp.webrtc firefox-128.2.0/dom/crypto/WebCryptoTask.cpp ---- firefox-128.2.0/dom/crypto/WebCryptoTask.cpp.webrtc 2024-08-26 16:23:34.000000000 +0200 -+++ firefox-128.2.0/dom/crypto/WebCryptoTask.cpp 2024-09-30 21:42:30.750124316 +0200 -@@ -118,60 +118,6 @@ enum TelemetryAlgorithm { +diff -up firefox-140.0/dom/crypto/WebCryptoTask.cpp.D225034.1750779491 firefox-140.0/dom/crypto/WebCryptoTask.cpp +--- firefox-140.0/dom/crypto/WebCryptoTask.cpp.D225034.1750779491 2025-06-17 18:15:13.000000000 +0200 ++++ firefox-140.0/dom/crypto/WebCryptoTask.cpp 2025-06-26 12:19:09.532341457 +0200 +@@ -120,60 +120,6 @@ enum TelemetryAlgorithm { } \ } @@ -30,7 +30,7 @@ diff -up firefox-128.2.0/dom/crypto/WebCryptoTask.cpp.webrtc firefox-128.2.0/dom - Algorithm alg; - - if (!alg.Init(aCx, value)) { -- return NS_ERROR_DOM_SYNTAX_ERR; +- return NS_ERROR_DOM_TYPE_MISMATCH_ERR; - } - - aName = alg.mName; @@ -62,7 +62,7 @@ diff -up firefox-128.2.0/dom/crypto/WebCryptoTask.cpp.webrtc firefox-128.2.0/dom inline size_t MapHashAlgorithmNameToBlockSize(const nsString& aName) { if (aName.EqualsLiteral(WEBCRYPTO_ALG_SHA1) || aName.EqualsLiteral(WEBCRYPTO_ALG_SHA256)) { -@@ -2198,6 +2144,30 @@ class GenerateSymmetricKeyTask : public +@@ -2488,6 +2434,30 @@ class GenerateSymmetricKeyTask : public virtual void Cleanup() override { mKey = nullptr; } }; @@ -90,13 +90,13 @@ diff -up firefox-128.2.0/dom/crypto/WebCryptoTask.cpp.webrtc firefox-128.2.0/dom + UniqueSECKEYPrivateKey mPrivateKey; +}; + - GenerateAsymmetricKeyTask::GenerateAsymmetricKeyTask( - nsIGlobalObject* aGlobal, JSContext* aCx, const ObjectOrString& aAlgorithm, - bool aExtractable, const Sequence& aKeyUsages) -diff -up firefox-128.2.0/dom/crypto/WebCryptoTask.h.webrtc firefox-128.2.0/dom/crypto/WebCryptoTask.h ---- firefox-128.2.0/dom/crypto/WebCryptoTask.h.webrtc 2024-08-26 16:23:34.000000000 +0200 -+++ firefox-128.2.0/dom/crypto/WebCryptoTask.h 2024-09-30 21:41:07.648369048 +0200 -@@ -175,31 +175,60 @@ class WebCryptoTask : public CancelableR + class DeriveX25519BitsTask : public ReturnArrayBufferViewTask { + public: + DeriveX25519BitsTask(JSContext* aCx, const ObjectOrString& aAlgorithm, +diff -up firefox-140.0/dom/crypto/WebCryptoTask.h.D225034.1750779491 firefox-140.0/dom/crypto/WebCryptoTask.h +--- firefox-140.0/dom/crypto/WebCryptoTask.h.D225034.1750779491 2025-06-17 18:15:13.000000000 +0200 ++++ firefox-140.0/dom/crypto/WebCryptoTask.h 2025-06-26 12:14:42.300401357 +0200 +@@ -176,31 +176,60 @@ class WebCryptoTask : public CancelableR nsresult mRv; }; @@ -177,9 +177,9 @@ diff -up firefox-128.2.0/dom/crypto/WebCryptoTask.h.webrtc firefox-128.2.0/dom/c } // namespace mozilla::dom #endif // mozilla_dom_WebCryptoTask_h -diff -up firefox-128.2.0/dom/media/webrtc/components.conf.webrtc firefox-128.2.0/dom/media/webrtc/components.conf ---- firefox-128.2.0/dom/media/webrtc/components.conf.webrtc 2024-09-30 21:41:07.649369081 +0200 -+++ firefox-128.2.0/dom/media/webrtc/components.conf 2024-09-30 21:41:07.649369081 +0200 +diff -up firefox-140.0/dom/media/webrtc/components.conf.D225034.1750779491 firefox-140.0/dom/media/webrtc/components.conf +--- firefox-140.0/dom/media/webrtc/components.conf.D225034.1750779491 2025-06-26 12:14:42.300775330 +0200 ++++ firefox-140.0/dom/media/webrtc/components.conf 2025-06-26 12:14:42.300775330 +0200 @@ -0,0 +1,14 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: @@ -195,9 +195,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/components.conf.webrtc firefox-128.2.0 + 'constructor': 'mozilla::dom::NewRTCCertService', + }, +] -diff -up firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandler.cpp.webrtc firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandler.cpp ---- firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandler.cpp.webrtc 2024-08-26 16:23:34.000000000 +0200 -+++ firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandler.cpp 2024-09-30 21:41:07.649369081 +0200 +diff -up firefox-140.0/dom/media/webrtc/jsapi/MediaTransportHandler.cpp.D225034.1750779491 firefox-140.0/dom/media/webrtc/jsapi/MediaTransportHandler.cpp +--- firefox-140.0/dom/media/webrtc/jsapi/MediaTransportHandler.cpp.D225034.1750779491 2025-06-17 18:15:13.000000000 +0200 ++++ firefox-140.0/dom/media/webrtc/jsapi/MediaTransportHandler.cpp 2025-06-26 12:14:42.301060154 +0200 @@ -104,13 +104,15 @@ class MediaTransportHandlerSTS : public // via IPC anymore const nsTArray& aStunAddrs) override; @@ -221,7 +221,7 @@ diff -up firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandler.cpp.webrtc void RemoveTransportsExcept( const std::set& aTransportIds) override; -@@ -799,14 +801,13 @@ void MediaTransportHandlerSTS::ActivateT +@@ -804,14 +806,13 @@ void MediaTransportHandlerSTS::ActivateT const std::string& aTransportId, const std::string& aLocalUfrag, const std::string& aLocalPwd, size_t aComponentCount, const std::string& aUfrag, const std::string& aPassword, @@ -239,7 +239,7 @@ diff -up firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandler.cpp.webrtc self = RefPtr(this)]() { if (!mIceCtx) { return; // Probably due to XPCOM shutdown -@@ -814,7 +815,7 @@ void MediaTransportHandlerSTS::ActivateT +@@ -819,7 +820,7 @@ void MediaTransportHandlerSTS::ActivateT MOZ_ASSERT(aComponentCount); RefPtr dtlsIdentity( @@ -248,9 +248,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandler.cpp.webrtc if (!dtlsIdentity) { MOZ_ASSERT(false); return; -diff -up firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandler.h.webrtc firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandler.h ---- firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandler.h.webrtc 2024-08-26 16:23:34.000000000 +0200 -+++ firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandler.h 2024-09-30 21:41:07.650369114 +0200 +diff -up firefox-140.0/dom/media/webrtc/jsapi/MediaTransportHandler.h.D225034.1750779491 firefox-140.0/dom/media/webrtc/jsapi/MediaTransportHandler.h +--- firefox-140.0/dom/media/webrtc/jsapi/MediaTransportHandler.h.D225034.1750779491 2025-06-17 18:15:13.000000000 +0200 ++++ firefox-140.0/dom/media/webrtc/jsapi/MediaTransportHandler.h 2025-06-26 12:14:42.301442663 +0200 @@ -98,8 +98,8 @@ class MediaTransportHandler { const std::string& aTransportId, const std::string& aLocalUfrag, const std::string& aLocalPwd, size_t aComponentCount, @@ -262,9 +262,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandler.h.webrtc f bool aPrivacyRequested) = 0; virtual void RemoveTransportsExcept( -diff -up firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.cpp.webrtc firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.cpp ---- firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.cpp.webrtc 2024-08-26 16:23:34.000000000 +0200 -+++ firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.cpp 2024-09-30 21:41:07.650369114 +0200 +diff -up firefox-140.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.cpp.D225034.1750779491 firefox-140.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.cpp +--- firefox-140.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.cpp.D225034.1750779491 2025-06-17 18:15:13.000000000 +0200 ++++ firefox-140.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.cpp 2025-06-26 12:14:42.301675179 +0200 @@ -269,17 +269,16 @@ void MediaTransportHandlerIPC::ActivateT const std::string& aTransportId, const std::string& aLocalUfrag, const std::string& aLocalPwd, size_t aComponentCount, @@ -287,9 +287,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.cpp.web aDigests, aPrivacyRequested); } }, -diff -up firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.h.webrtc firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.h ---- firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.h.webrtc 2024-08-26 16:23:34.000000000 +0200 -+++ firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.h 2024-09-30 21:41:07.650369114 +0200 +diff -up firefox-140.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.h.D225034.1750779491 firefox-140.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.h +--- firefox-140.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.h.D225034.1750779491 2025-06-17 18:15:13.000000000 +0200 ++++ firefox-140.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.h 2025-06-26 12:14:42.301923105 +0200 @@ -49,13 +49,15 @@ class MediaTransportHandlerIPC final : p // this up internally const nsTArray& aStunAddrs) override; @@ -313,9 +313,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.h.webrt void RemoveTransportsExcept( const std::set& aTransportIds) override; -diff -up firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportParent.cpp.webrtc firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportParent.cpp ---- firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportParent.cpp.webrtc 2024-08-26 16:23:34.000000000 +0200 -+++ firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportParent.cpp 2024-09-30 21:41:07.650369114 +0200 +diff -up firefox-140.0/dom/media/webrtc/jsapi/MediaTransportParent.cpp.D225034.1750779491 firefox-140.0/dom/media/webrtc/jsapi/MediaTransportParent.cpp +--- firefox-140.0/dom/media/webrtc/jsapi/MediaTransportParent.cpp.D225034.1750779491 2025-06-17 18:15:13.000000000 +0200 ++++ firefox-140.0/dom/media/webrtc/jsapi/MediaTransportParent.cpp 2025-06-26 12:14:42.302133961 +0200 @@ -174,12 +174,12 @@ mozilla::ipc::IPCResult MediaTransportPa mozilla::ipc::IPCResult MediaTransportParent::RecvActivateTransport( const string& transportId, const string& localUfrag, const string& localPwd, @@ -333,10 +333,10 @@ diff -up firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportParent.cpp.webrtc privacyRequested); return ipc::IPCResult::Ok(); } -diff -up firefox-128.2.0/dom/media/webrtc/jsapi/PeerConnectionImpl.cpp.webrtc firefox-128.2.0/dom/media/webrtc/jsapi/PeerConnectionImpl.cpp ---- firefox-128.2.0/dom/media/webrtc/jsapi/PeerConnectionImpl.cpp.webrtc 2024-08-26 16:23:35.000000000 +0200 -+++ firefox-128.2.0/dom/media/webrtc/jsapi/PeerConnectionImpl.cpp 2024-09-30 21:41:07.650369114 +0200 -@@ -4353,9 +4353,8 @@ void PeerConnectionImpl::UpdateTransport +diff -up firefox-140.0/dom/media/webrtc/jsapi/PeerConnectionImpl.cpp.D225034.1750779491 firefox-140.0/dom/media/webrtc/jsapi/PeerConnectionImpl.cpp +--- firefox-140.0/dom/media/webrtc/jsapi/PeerConnectionImpl.cpp.D225034.1750779491 2025-06-17 18:15:13.000000000 +0200 ++++ firefox-140.0/dom/media/webrtc/jsapi/PeerConnectionImpl.cpp 2025-06-26 12:14:42.302823315 +0200 +@@ -4320,9 +4320,8 @@ void PeerConnectionImpl::UpdateTransport candidates.end()); } @@ -348,7 +348,7 @@ diff -up firefox-128.2.0/dom/media/webrtc/jsapi/PeerConnectionImpl.cpp.webrtc fi if (NS_FAILED(rv)) { CSFLogError(LOGTAG, "%s: Failed to serialize DTLS identity: %d", __FUNCTION__, (int)rv); -@@ -4371,7 +4370,7 @@ void PeerConnectionImpl::UpdateTransport +@@ -4338,7 +4337,7 @@ void PeerConnectionImpl::UpdateTransport mTransportHandler->ActivateTransport( transport.mTransportId, transport.mLocalUfrag, transport.mLocalPwd, @@ -357,9 +357,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/jsapi/PeerConnectionImpl.cpp.webrtc fi transport.mDtls->GetRole() == JsepDtlsTransport::kJsepDtlsClient, digests, PrivacyRequested()); -diff -up firefox-128.2.0/dom/media/webrtc/MediaTransportParent.h.webrtc firefox-128.2.0/dom/media/webrtc/MediaTransportParent.h ---- firefox-128.2.0/dom/media/webrtc/MediaTransportParent.h.webrtc 2024-08-26 16:23:34.000000000 +0200 -+++ firefox-128.2.0/dom/media/webrtc/MediaTransportParent.h 2024-09-30 21:41:07.648369048 +0200 +diff -up firefox-140.0/dom/media/webrtc/MediaTransportParent.h.D225034.1750779491 firefox-140.0/dom/media/webrtc/MediaTransportParent.h +--- firefox-140.0/dom/media/webrtc/MediaTransportParent.h.D225034.1750779491 2025-06-17 18:15:13.000000000 +0200 ++++ firefox-140.0/dom/media/webrtc/MediaTransportParent.h 2025-06-26 12:14:42.303449191 +0200 @@ -40,9 +40,9 @@ class MediaTransportParent : public dom: const string& transportId, const string& localUfrag, const string& localPwd, const int& componentCount, @@ -373,9 +373,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/MediaTransportParent.h.webrtc firefox- mozilla::ipc::IPCResult RecvRemoveTransportsExcept( const StringVector& transportIds); mozilla::ipc::IPCResult RecvStartIceChecks(const bool& isControlling, -diff -up firefox-128.2.0/dom/media/webrtc/moz.build.webrtc firefox-128.2.0/dom/media/webrtc/moz.build ---- firefox-128.2.0/dom/media/webrtc/moz.build.webrtc 2024-08-26 16:23:34.000000000 +0200 -+++ firefox-128.2.0/dom/media/webrtc/moz.build 2024-09-30 21:41:07.650369114 +0200 +diff -up firefox-140.0/dom/media/webrtc/moz.build.D225034.1750779491 firefox-140.0/dom/media/webrtc/moz.build +--- firefox-140.0/dom/media/webrtc/moz.build.D225034.1750779491 2025-06-17 18:15:14.000000000 +0200 ++++ firefox-140.0/dom/media/webrtc/moz.build 2025-06-26 12:14:42.303672821 +0200 @@ -41,6 +41,18 @@ SOURCES += [ "CubebDeviceEnumerator.cpp", ] @@ -407,7 +407,7 @@ diff -up firefox-128.2.0/dom/media/webrtc/moz.build.webrtc firefox-128.2.0/dom/m "RTCIdentityProviderRegistrar.cpp", ] # MediaEngineWebRTC.cpp needs to be built separately. -@@ -113,7 +129,11 @@ EXPORTS.mozilla += [ +@@ -111,7 +127,11 @@ EXPORTS.mozilla += [ "PeerIdentity.h", ] EXPORTS.mozilla.dom += [ @@ -419,9 +419,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/moz.build.webrtc firefox-128.2.0/dom/m ] include("/ipc/chromium/chromium-config.mozbuild") -diff -up firefox-128.2.0/dom/media/webrtc/nsIRTCCertService.idl.webrtc firefox-128.2.0/dom/media/webrtc/nsIRTCCertService.idl ---- firefox-128.2.0/dom/media/webrtc/nsIRTCCertService.idl.webrtc 2024-09-30 21:41:07.651369147 +0200 -+++ firefox-128.2.0/dom/media/webrtc/nsIRTCCertService.idl 2024-09-30 21:41:07.650369114 +0200 +diff -up firefox-140.0/dom/media/webrtc/nsIRTCCertService.idl.D225034.1750779491 firefox-140.0/dom/media/webrtc/nsIRTCCertService.idl +--- firefox-140.0/dom/media/webrtc/nsIRTCCertService.idl.D225034.1750779491 2025-06-26 12:14:42.303932017 +0200 ++++ firefox-140.0/dom/media/webrtc/nsIRTCCertService.idl 2025-06-26 12:14:42.303932017 +0200 @@ -0,0 +1,34 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public @@ -457,9 +457,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/nsIRTCCertService.idl.webrtc firefox-1 + // Get cert + [notxpcom, nostdcall] RTCCertificatePromise getCertificate([const] in CertFingerprint aCertFingerprint); +}; -diff -up firefox-128.2.0/dom/media/webrtc/PMediaTransport.ipdl.webrtc firefox-128.2.0/dom/media/webrtc/PMediaTransport.ipdl ---- firefox-128.2.0/dom/media/webrtc/PMediaTransport.ipdl.webrtc 2024-08-26 16:23:35.000000000 +0200 -+++ firefox-128.2.0/dom/media/webrtc/PMediaTransport.ipdl 2024-09-30 21:41:07.648369048 +0200 +diff -up firefox-140.0/dom/media/webrtc/PMediaTransport.ipdl.D225034.1750779491 firefox-140.0/dom/media/webrtc/PMediaTransport.ipdl +--- firefox-140.0/dom/media/webrtc/PMediaTransport.ipdl.D225034.1750779491 2025-06-17 18:15:13.000000000 +0200 ++++ firefox-140.0/dom/media/webrtc/PMediaTransport.ipdl 2025-06-26 12:14:42.304154235 +0200 @@ -62,8 +62,7 @@ parent: int componentCount, string remoteUfrag, @@ -470,9 +470,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/PMediaTransport.ipdl.webrtc firefox-12 int authType, bool dtlsClient, DtlsDigestList digests, -diff -up firefox-128.2.0/dom/media/webrtc/PRTCCertServiceTransaction.ipdl.webrtc firefox-128.2.0/dom/media/webrtc/PRTCCertServiceTransaction.ipdl ---- firefox-128.2.0/dom/media/webrtc/PRTCCertServiceTransaction.ipdl.webrtc 2024-09-30 21:41:07.648369048 +0200 -+++ firefox-128.2.0/dom/media/webrtc/PRTCCertServiceTransaction.ipdl 2024-09-30 21:41:07.648369048 +0200 +diff -up firefox-140.0/dom/media/webrtc/PRTCCertServiceTransaction.ipdl.D225034.1750779491 firefox-140.0/dom/media/webrtc/PRTCCertServiceTransaction.ipdl +--- firefox-140.0/dom/media/webrtc/PRTCCertServiceTransaction.ipdl.D225034.1750779491 2025-06-26 12:14:42.304369078 +0200 ++++ firefox-140.0/dom/media/webrtc/PRTCCertServiceTransaction.ipdl 2025-06-26 12:14:42.304369078 +0200 @@ -0,0 +1,33 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, @@ -507,9 +507,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/PRTCCertServiceTransaction.ipdl.webrtc + +} +} -diff -up firefox-128.2.0/dom/media/webrtc/RTCCertCache.cpp.webrtc firefox-128.2.0/dom/media/webrtc/RTCCertCache.cpp ---- firefox-128.2.0/dom/media/webrtc/RTCCertCache.cpp.webrtc 2024-09-30 21:41:07.648369048 +0200 -+++ firefox-128.2.0/dom/media/webrtc/RTCCertCache.cpp 2024-09-30 21:41:07.648369048 +0200 +diff -up firefox-140.0/dom/media/webrtc/RTCCertCache.cpp.D225034.1750779491 firefox-140.0/dom/media/webrtc/RTCCertCache.cpp +--- firefox-140.0/dom/media/webrtc/RTCCertCache.cpp.D225034.1750779491 2025-06-26 12:14:42.304591095 +0200 ++++ firefox-140.0/dom/media/webrtc/RTCCertCache.cpp 2025-06-26 12:14:42.304591095 +0200 @@ -0,0 +1,48 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ @@ -559,9 +559,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertCache.cpp.webrtc firefox-128.2. +} + +} // namespace mozilla::dom -diff -up firefox-128.2.0/dom/media/webrtc/RTCCertCache.h.webrtc firefox-128.2.0/dom/media/webrtc/RTCCertCache.h ---- firefox-128.2.0/dom/media/webrtc/RTCCertCache.h.webrtc 2024-09-30 21:41:07.648369048 +0200 -+++ firefox-128.2.0/dom/media/webrtc/RTCCertCache.h 2024-09-30 21:41:07.648369048 +0200 +diff -up firefox-140.0/dom/media/webrtc/RTCCertCache.h.D225034.1750779491 firefox-140.0/dom/media/webrtc/RTCCertCache.h +--- firefox-140.0/dom/media/webrtc/RTCCertCache.h.D225034.1750779491 2025-06-26 12:14:42.304801480 +0200 ++++ firefox-140.0/dom/media/webrtc/RTCCertCache.h 2025-06-26 12:14:42.304801480 +0200 @@ -0,0 +1,36 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ @@ -599,9 +599,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertCache.h.webrtc firefox-128.2.0/ +} // namespace mozilla::dom + +#endif // mozilla_dom_CertCache_h -diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp ---- firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc 2024-08-26 16:23:35.000000000 +0200 -+++ firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp 2024-09-30 21:41:07.649369081 +0200 +diff -up firefox-140.0/dom/media/webrtc/RTCCertificate.cpp.D225034.1750779491 firefox-140.0/dom/media/webrtc/RTCCertificate.cpp +--- firefox-140.0/dom/media/webrtc/RTCCertificate.cpp.D225034.1750779491 2025-06-17 18:15:14.000000000 +0200 ++++ firefox-140.0/dom/media/webrtc/RTCCertificate.cpp 2025-06-26 12:38:54.418795430 +0200 @@ -25,13 +25,12 @@ #include "mozilla/UniquePtr.h" #include "mozilla/dom/BindingDeclarations.h" @@ -624,8 +624,8 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc firefox-128. +#include "nsServiceManagerUtils.h" #include "pk11pub.h" #include "plarena.h" - #include "secasn1.h" -@@ -71,271 +71,203 @@ NS_INTERFACE_MAP_END + #include "sdp/SdpAttribute.h" +@@ -72,196 +72,10 @@ NS_INTERFACE_MAP_END PRTime(PR_USEC_PER_SEC) * PRTime(60) /*sec*/ \ * PRTime(60) /*min*/ * PRTime(24) /*hours*/ #define EXPIRATION_DEFAULT ONE_DAY* PRTime(30) @@ -652,15 +652,7 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc firefox-128. - // certificate". This catches these cases. - mEarlyRv = NS_ERROR_DOM_NOT_SUPPORTED_ERR; - } -+static PRTime ReadExpires(JSContext* aCx, const ObjectOrString& aOptions, -+ ErrorResult& aRv) { -+ // This conversion might fail, but we don't really care; use the default. -+ // If this isn't an object, or it doesn't coerce into the right type, -+ // then we won't get the |expires| value. Either will be caught later. -+ RTCCertificateExpiration expiration; -+ if (!aOptions.IsObject()) { -+ return EXPIRATION_DEFAULT; - } +- } - - private: - PRTime mExpires; @@ -684,12 +676,8 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc firefox-128. - buf[sizeof(buf) - 1] = '\0'; - - return CERT_AsciiToName(buf); -+ JS::Rooted value(aCx, JS::ObjectValue(*aOptions.GetAsObject())); -+ if (!expiration.Init(aCx, value)) { -+ aRv.NoteJSContextException(aCx); -+ return 0; - } - +- } +- - nsresult GenerateCertificate() { - UniquePK11SlotInfo slot(PK11_GetInternalSlot()); - MOZ_ASSERT(slot.get()); @@ -698,77 +686,38 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc firefox-128. - if (!subjectName) { - return NS_ERROR_DOM_UNKNOWN_ERR; - } -+ if (!expiration.mExpires.WasPassed()) { -+ return EXPIRATION_DEFAULT; -+ } -+ static const uint64_t max = -+ static_cast(EXPIRATION_MAX / PR_USEC_PER_MSEC); -+ if (expiration.mExpires.Value() > max) { -+ return EXPIRATION_MAX; -+ } -+ return static_cast(expiration.mExpires.Value() * PR_USEC_PER_MSEC); -+} - +- - UniqueSECKEYPublicKey publicKey(mKeyPair->mPublicKey->GetPublicKey()); - UniqueCERTSubjectPublicKeyInfo spki( - SECKEY_CreateSubjectPublicKeyInfo(publicKey.get())); - if (!spki) { - return NS_ERROR_DOM_UNKNOWN_ERR; - } -+RTCCertificateMetadata::RTCCertificateMetadata() -+ : mExpires(0), -+ mSignatureAlg(SEC_OID_UNKNOWN), -+ mMechanism(CKM_INVALID_MECHANISM), -+ mRsaParams() {} -+ -+nsresult RTCCertificateMetadata::Init(JSContext* aCx, -+ const ObjectOrString& aAlgorithm, -+ SSLKEAType* aAuthType, ErrorResult& aRv) { -+ mExpires = ReadExpires(aCx, aAlgorithm, aRv); -+ if (aRv.Failed()) { -+ return NS_ERROR_DOM_UNKNOWN_ERR; -+ } - +- - UniqueCERTCertificateRequest certreq( - CERT_CreateCertificateRequest(subjectName.get(), spki.get(), nullptr)); - if (!certreq) { - return NS_ERROR_DOM_UNKNOWN_ERR; - } -+ mArena = UniquePLArenaPool(PORT_NewArena(DER_DEFAULT_CHUNKSIZE)); -+ if (!mArena) { -+ return NS_ERROR_DOM_UNKNOWN_ERR; -+ } - +- - PRTime now = PR_Now(); - PRTime notBefore = now - EXPIRATION_SLACK; - mExpires += now; -+ // Extract algorithm name -+ nsresult rv = GetAlgorithmName(aCx, aAlgorithm, mAlgName); -+ NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_NOT_SUPPORTED_ERR); - +- - UniqueCERTValidity validity(CERT_CreateValidity(notBefore, mExpires)); - if (!validity) { - return NS_ERROR_DOM_UNKNOWN_ERR; - } -+ // Construct an appropriate KeyAlorithm -+ if (mAlgName.EqualsLiteral(WEBCRYPTO_ALG_RSASSA_PKCS1)) { -+ RootedDictionary params(aCx); -+ rv = Coerce(aCx, params, aAlgorithm); -+ NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_SYNTAX_ERR); - +- - unsigned long serial; - // Note: This serial in principle could collide, but it's unlikely, and we - // don't expect anyone to be validating certificates anyway. - SECStatus rv = PK11_GenerateRandomOnSlot( - slot.get(), reinterpret_cast(&serial), sizeof(serial)); - if (rv != SECSuccess) { -+ // Pull relevant info -+ uint32_t modulusLength = params.mModulusLength; -+ CryptoBuffer publicExponent; -+ if (!publicExponent.Assign(params.mPublicExponent)) { - return NS_ERROR_DOM_UNKNOWN_ERR; - } - +- return NS_ERROR_DOM_UNKNOWN_ERR; +- } +- - // NB: CERTCertificates created with CERT_CreateCertificate are not safe to - // use with other NSS functions like CERT_DupCertificate. The strategy - // here is to create a tbsCertificate ("to-be-signed certificate"), encode @@ -778,28 +727,17 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc firefox-128. - serial, subjectName.get(), validity.get(), certreq.get())); - if (!tbsCertificate) { - return NS_ERROR_DOM_UNKNOWN_ERR; -+ nsString hashName; -+ rv = GetAlgorithmName(aCx, params.mHash, hashName); -+ NS_ENSURE_SUCCESS(rv, rv); -+ if (!hashName.EqualsLiteral(WEBCRYPTO_ALG_SHA256)) { -+ return NS_ERROR_DOM_NOT_SUPPORTED_ERR; - } - +- } +- - MOZ_ASSERT(mSignatureAlg != SEC_OID_UNKNOWN); - PLArenaPool* arena = tbsCertificate->arena; -+ mMechanism = CKM_RSA_PKCS_KEY_PAIR_GEN; - +- - rv = SECOID_SetAlgorithmID(arena, &tbsCertificate->signature, mSignatureAlg, - nullptr); - if (rv != SECSuccess) { - return NS_ERROR_DOM_UNKNOWN_ERR; -+ // Set up params struct -+ mRsaParams.keySizeInBits = modulusLength; -+ bool converted = publicExponent.GetBigIntValue(mRsaParams.pe); -+ if (!converted) { -+ return NS_ERROR_DOM_INVALID_ACCESS_ERR; - } - +- } +- - // Set version to X509v3. - *(tbsCertificate->version.data) = SEC_CERTIFICATE_VERSION_3; - tbsCertificate->version.len = 1; @@ -808,37 +746,25 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc firefox-128. - if (!SEC_ASN1EncodeItem(arena, &innerDER, tbsCertificate.get(), - SEC_ASN1_GET(CERT_CertificateTemplate))) { - return NS_ERROR_DOM_UNKNOWN_ERR; -+ auto sz = static_cast(mRsaParams.keySizeInBits); -+ if (sz < RTCCertificateMinRsaSize) { -+ return NS_ERROR_DOM_NOT_SUPPORTED_ERR; - } - +- } +- - SECItem* certDer = PORT_ArenaZNew(arena, SECItem); - if (!certDer) { - return NS_ERROR_DOM_UNKNOWN_ERR; - } -+ SerializeRSAParam(&mParam, &mRsaParams); - +- - UniqueSECKEYPrivateKey privateKey(mKeyPair->mPrivateKey->GetPrivateKey()); - rv = SEC_DerSignData(arena, certDer, innerDER.data, innerDER.len, - privateKey.get(), mSignatureAlg); - if (rv != SECSuccess) { - return NS_ERROR_DOM_UNKNOWN_ERR; - } -+ mSignatureAlg = SEC_OID_PKCS1_SHA256_WITH_RSA_ENCRYPTION; -+ *aAuthType = ssl_kea_rsa; -+ } else if (mAlgName.EqualsLiteral(WEBCRYPTO_ALG_ECDSA)) { -+ RootedDictionary params(aCx); -+ rv = Coerce(aCx, params, aAlgorithm); -+ NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_SYNTAX_ERR); - +- - mCertificate.reset(CERT_NewTempCertificate(CERT_GetDefaultCertDB(), certDer, - nullptr, false, true)); - if (!mCertificate) { - return NS_ERROR_DOM_UNKNOWN_ERR; -+ if (!NormalizeToken(params.mNamedCurve, mNamedCurve)) { -+ return NS_ERROR_DOM_NOT_SUPPORTED_ERR; - } +- } - return NS_OK; - } - @@ -866,14 +792,11 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc firefox-128. - mSignatureAlg = SEC_OID_ANSIX962_ECDSA_SHA256_SIGNATURE; - mAuthType = ssl_kea_ecdh; - } else { -+ mMechanism = CKM_EC_KEY_PAIR_GEN; -+ if (!SerializeECParams(&mParam, -+ CreateECParamsForCurve(mNamedCurve, mArena.get()))) { - return NS_ERROR_DOM_NOT_SUPPORTED_ERR; - } +- return NS_ERROR_DOM_NOT_SUPPORTED_ERR; +- } - return NS_OK; - } - +- - nsresult DoCrypto() override { - nsresult rv = GenerateAsymmetricKeyTask::DoCrypto(); - NS_ENSURE_SUCCESS(rv, rv); @@ -882,14 +805,8 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc firefox-128. - NS_ENSURE_SUCCESS(rv, rv); - - return NS_OK; -+ // We only support good curves in WebCrypto. -+ // If that ever changes, check that a good one was chosen. -+ mSignatureAlg = SEC_OID_ANSIX962_ECDSA_SHA256_SIGNATURE; -+ *aAuthType = ssl_kea_ecdh; -+ } else { -+ return NS_ERROR_DOM_NOT_SUPPORTED_ERR; - } - +- } +- - virtual void Resolve() override { - // Make copies of the private key and certificate, otherwise, when this - // object is deleted, the structures they reference will be deleted too. @@ -902,39 +819,104 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc firefox-128. - } -}; - --static PRTime ReadExpires(JSContext* aCx, const ObjectOrString& aOptions, -- ErrorResult& aRv) { -- // This conversion might fail, but we don't really care; use the default. -- // If this isn't an object, or it doesn't coerce into the right type, -- // then we won't get the |expires| value. Either will be caught later. -- RTCCertificateExpiration expiration; -- if (!aOptions.IsObject()) { -- return EXPIRATION_DEFAULT; -- } -- JS::Rooted value(aCx, JS::ObjectValue(*aOptions.GetAsObject())); -- if (!expiration.Init(aCx, value)) { -- aRv.NoteJSContextException(aCx); -- return 0; -- } -+ return NS_OK; -+} - -- if (!expiration.mExpires.WasPassed()) { -- return EXPIRATION_DEFAULT; -- } -- static const uint64_t max = -- static_cast(EXPIRATION_MAX / PR_USEC_PER_MSEC); -- if (expiration.mExpires.Value() > max) { -- return EXPIRATION_MAX; -- } -- return static_cast(expiration.mExpires.Value() * PR_USEC_PER_MSEC); -+RefPtr RTCCertificateMetadata::Generate( -+ nsCOMPtr aCertService) { -+ return aCertService->GenerateCertificate(mParam, mExpires, mMechanism, -+ mSignatureAlg); + static PRTime ReadExpires(JSContext* aCx, const ObjectOrString& aOptions, + ErrorResult& aRv) { + // This conversion might fail, but we don't really care; use the default. +@@ -288,46 +102,166 @@ static PRTime ReadExpires(JSContext* aCx + return static_cast(expiration.mExpires.Value() * PR_USEC_PER_MSEC); } -already_AddRefed RTCCertificate::GenerateCertificate( ++RTCCertificateMetadata::RTCCertificateMetadata() ++ : mExpires(0), ++ mSignatureAlg(SEC_OID_UNKNOWN), ++ mMechanism(CKM_INVALID_MECHANISM), ++ mRsaParams() {} ++ ++nsresult RTCCertificateMetadata::Init(JSContext* aCx, ++ const ObjectOrString& aAlgorithm, ++ SSLKEAType* aAuthType, ErrorResult& aRv) { ++ mExpires = ReadExpires(aCx, aAlgorithm, aRv); ++ if (aRv.Failed()) { ++ return NS_ERROR_DOM_UNKNOWN_ERR; ++ } ++ ++ mArena = UniquePLArenaPool(PORT_NewArena(DER_DEFAULT_CHUNKSIZE)); ++ if (!mArena) { ++ return NS_ERROR_DOM_UNKNOWN_ERR; ++ } ++ ++ // Extract algorithm name ++ nsresult rv = GetAlgorithmName(aCx, aAlgorithm, mAlgName); ++ NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_NOT_SUPPORTED_ERR); ++ ++ // Construct an appropriate KeyAlorithm ++ if (mAlgName.EqualsLiteral(WEBCRYPTO_ALG_RSASSA_PKCS1)) { ++ RootedDictionary params(aCx); ++ rv = Coerce(aCx, params, aAlgorithm); ++ NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_SYNTAX_ERR); ++ ++ // Pull relevant info ++ uint32_t modulusLength = params.mModulusLength; ++ CryptoBuffer publicExponent; ++ if (!publicExponent.Assign(params.mPublicExponent)) { ++ ++ return NS_ERROR_DOM_UNKNOWN_ERR; ++ } ++ ++ nsString hashName; ++ rv = GetAlgorithmName(aCx, params.mHash, hashName); ++ NS_ENSURE_SUCCESS(rv, rv); ++ if (!hashName.EqualsLiteral(WEBCRYPTO_ALG_SHA256)) { ++ return NS_ERROR_DOM_NOT_SUPPORTED_ERR; ++ } ++ ++ mMechanism = CKM_RSA_PKCS_KEY_PAIR_GEN; ++ // Set up params struct ++ mRsaParams.keySizeInBits = modulusLength; ++ bool converted = publicExponent.GetBigIntValue(mRsaParams.pe); ++ if (!converted) { ++ return NS_ERROR_DOM_INVALID_ACCESS_ERR; ++ } ++ ++ auto sz = static_cast(mRsaParams.keySizeInBits); ++ if (sz < RTCCertificateMinRsaSize) { ++ return NS_ERROR_DOM_NOT_SUPPORTED_ERR; ++ } ++ ++ SerializeRSAParam(&mParam, &mRsaParams); ++ ++ mSignatureAlg = SEC_OID_PKCS1_SHA256_WITH_RSA_ENCRYPTION; ++ *aAuthType = ssl_kea_rsa; ++ } else if (mAlgName.EqualsLiteral(WEBCRYPTO_ALG_ECDSA)) { ++ RootedDictionary params(aCx); ++ rv = Coerce(aCx, params, aAlgorithm); ++ NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_SYNTAX_ERR); ++ if (!NormalizeToken(params.mNamedCurve, mNamedCurve)) { ++ return NS_ERROR_DOM_NOT_SUPPORTED_ERR; ++ } ++ mMechanism = CKM_EC_KEY_PAIR_GEN; ++ if (!SerializeECParams(&mParam, ++ CreateECParamsForCurve(mNamedCurve, mArena.get()))) { ++ return NS_ERROR_DOM_NOT_SUPPORTED_ERR; ++ } ++ ++ // We only support good curves in WebCrypto. ++ // If that ever changes, check that a good one was chosen. ++ mSignatureAlg = SEC_OID_ANSIX962_ECDSA_SHA256_SIGNATURE; ++ *aAuthType = ssl_kea_ecdh; ++ } else { ++ return NS_ERROR_DOM_NOT_SUPPORTED_ERR; ++ } ++ return NS_OK; ++} ++ ++RefPtr RTCCertificateMetadata::Generate( ++ nsCOMPtr aCertService) { ++ return aCertService->GenerateCertificate(mParam, mExpires, mMechanism, ++ mSignatureAlg); ++} ++ +already_AddRefed RTCCertificate::Generate( const GlobalObject& aGlobal, const ObjectOrString& aOptions, - ErrorResult& aRv, JS::Compartment* aCompartment) { @@ -959,6 +941,7 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc firefox-128. + } return nullptr; } ++ - PRTime expires = ReadExpires(aGlobal.Context(), aOptions, aRv); - if (aRv.Failed()) { @@ -1034,6 +1017,11 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc firefox-128. + */ +} + void RTCCertificate::GetFingerprints( + nsTArray& aFingerprintsOut) { +@@ -357,13 +291,10 @@ void RTCCertificate::GetFingerprints( + } + RefPtr RTCCertificate::CreateDtlsIdentity() const { - if (!mPrivateKey || !mCertificate) { + if (!mCertificate) { @@ -1047,7 +1035,7 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc firefox-128. return id; } -@@ -344,17 +276,10 @@ JSObject* RTCCertificate::WrapObject(JSC +@@ -372,17 +303,10 @@ JSObject* RTCCertificate::WrapObject(JSC return RTCCertificate_Binding::Wrap(aCx, this, aGivenProto); } @@ -1069,7 +1057,7 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc firefox-128. } bool RTCCertificate::WriteCertificate(JSStructuredCloneWriter* aWriter) const { -@@ -370,27 +295,23 @@ bool RTCCertificate::WriteCertificate(JS +@@ -398,27 +322,23 @@ bool RTCCertificate::WriteCertificate(JS bool RTCCertificate::WriteStructuredClone( JSContext* aCx, JSStructuredCloneWriter* aWriter) const { @@ -1104,7 +1092,7 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc firefox-128. } bool RTCCertificate::ReadCertificate(JSStructuredCloneReader* aReader) { -@@ -428,7 +349,8 @@ already_AddRefed RTCCert +@@ -456,7 +376,8 @@ already_AddRefed RTCCert } cert->mExpires = static_cast(high) << 32 | low; @@ -1114,9 +1102,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.cpp.webrtc firefox-128. return nullptr; } -diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.h.webrtc firefox-128.2.0/dom/media/webrtc/RTCCertificate.h ---- firefox-128.2.0/dom/media/webrtc/RTCCertificate.h.webrtc 2024-08-26 16:23:35.000000000 +0200 -+++ firefox-128.2.0/dom/media/webrtc/RTCCertificate.h 2024-09-30 21:41:07.649369081 +0200 +diff -up firefox-140.0/dom/media/webrtc/RTCCertificate.h.D225034.1750779491 firefox-140.0/dom/media/webrtc/RTCCertificate.h +--- firefox-140.0/dom/media/webrtc/RTCCertificate.h.D225034.1750779491 2025-06-17 18:15:13.000000000 +0200 ++++ firefox-140.0/dom/media/webrtc/RTCCertificate.h 2025-06-26 12:42:14.067026422 +0200 @@ -15,7 +15,11 @@ #include "mozilla/AlreadyAddRefed.h" #include "mozilla/Assertions.h" @@ -1129,10 +1117,11 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.h.webrtc firefox-128.2. #include "nsIGlobalObject.h" #include "nsISupports.h" #include "nsWrapperCache.h" -@@ -41,6 +45,26 @@ class GlobalObject; +@@ -40,6 +44,27 @@ namespace dom { + class GlobalObject; class ObjectOrString; class Promise; - ++ +class RTCCertificateMetadata { + public: + RTCCertificateMetadata(); @@ -1153,10 +1142,10 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.h.webrtc firefox-128.2. + nsString mAlgName; +}; + + struct RTCDtlsFingerprint; + class RTCCertificate final : public nsISupports, public nsWrapperCache { - public: - NS_DECL_CYCLE_COLLECTING_ISUPPORTS -@@ -52,9 +76,6 @@ class RTCCertificate final : public nsIS +@@ -53,9 +78,6 @@ class RTCCertificate final : public nsIS ErrorResult& aRv, JS::Compartment* aCompartment = nullptr); explicit RTCCertificate(nsIGlobalObject* aGlobal); @@ -1166,7 +1155,7 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.h.webrtc firefox-128.2. nsIGlobalObject* GetParentObject() const { return mGlobal; } virtual JSObject* WrapObject(JSContext* aCx, -@@ -76,20 +97,29 @@ class RTCCertificate final : public nsIS +@@ -78,21 +100,30 @@ class RTCCertificate final : public nsIS JSStructuredCloneReader* aReader); private: @@ -1197,14 +1186,15 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertificate.h.webrtc firefox-128.2. UniqueCERTCertificate mCertificate; - SSLKEAType mAuthType; - PRTime mExpires; + nsTArray mFingerprints; + SSLKEAType mAuthType = ssl_kea_null; + PRTime mExpires = 0; }; } // namespace dom -diff -up firefox-128.2.0/dom/media/webrtc/RTCCertService.cpp.webrtc firefox-128.2.0/dom/media/webrtc/RTCCertService.cpp ---- firefox-128.2.0/dom/media/webrtc/RTCCertService.cpp.webrtc 2024-09-30 21:41:07.648369048 +0200 -+++ firefox-128.2.0/dom/media/webrtc/RTCCertService.cpp 2024-09-30 21:41:07.648369048 +0200 +diff -up firefox-140.0/dom/media/webrtc/RTCCertService.cpp.D225034.1750779491 firefox-140.0/dom/media/webrtc/RTCCertService.cpp +--- firefox-140.0/dom/media/webrtc/RTCCertService.cpp.D225034.1750779491 2025-06-26 12:14:42.306004069 +0200 ++++ firefox-140.0/dom/media/webrtc/RTCCertService.cpp 2025-06-26 12:14:42.306004069 +0200 @@ -0,0 +1,154 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ @@ -1360,9 +1350,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertService.cpp.webrtc firefox-128. +} + +} // namespace mozilla::dom -diff -up firefox-128.2.0/dom/media/webrtc/RTCCertServiceData.cpp.webrtc firefox-128.2.0/dom/media/webrtc/RTCCertServiceData.cpp ---- firefox-128.2.0/dom/media/webrtc/RTCCertServiceData.cpp.webrtc 2024-09-30 21:41:07.648369048 +0200 -+++ firefox-128.2.0/dom/media/webrtc/RTCCertServiceData.cpp 2024-09-30 21:41:07.648369048 +0200 +diff -up firefox-140.0/dom/media/webrtc/RTCCertServiceData.cpp.D225034.1750779491 firefox-140.0/dom/media/webrtc/RTCCertServiceData.cpp +--- firefox-140.0/dom/media/webrtc/RTCCertServiceData.cpp.D225034.1750779491 2025-06-26 12:14:42.306223801 +0200 ++++ firefox-140.0/dom/media/webrtc/RTCCertServiceData.cpp 2025-06-26 12:14:42.306223801 +0200 @@ -0,0 +1,77 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ @@ -1441,9 +1431,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertServiceData.cpp.webrtc firefox- +} + +} // namespace mozilla::dom -diff -up firefox-128.2.0/dom/media/webrtc/RTCCertServiceData.h.webrtc firefox-128.2.0/dom/media/webrtc/RTCCertServiceData.h ---- firefox-128.2.0/dom/media/webrtc/RTCCertServiceData.h.webrtc 2024-09-30 21:41:07.649369081 +0200 -+++ firefox-128.2.0/dom/media/webrtc/RTCCertServiceData.h 2024-09-30 21:41:07.649369081 +0200 +diff -up firefox-140.0/dom/media/webrtc/RTCCertServiceData.h.D225034.1750779491 firefox-140.0/dom/media/webrtc/RTCCertServiceData.h +--- firefox-140.0/dom/media/webrtc/RTCCertServiceData.h.D225034.1750779491 2025-06-26 12:14:42.306399401 +0200 ++++ firefox-140.0/dom/media/webrtc/RTCCertServiceData.h 2025-06-26 12:14:42.306399401 +0200 @@ -0,0 +1,105 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this @@ -1550,9 +1540,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertServiceData.h.webrtc firefox-12 +} // namespace mozilla + +#endif // mozilla_dom_RTCCertServiceGlobal_h_ -diff -up firefox-128.2.0/dom/media/webrtc/RTCCertService.h.webrtc firefox-128.2.0/dom/media/webrtc/RTCCertService.h ---- firefox-128.2.0/dom/media/webrtc/RTCCertService.h.webrtc 2024-09-30 21:41:07.648369048 +0200 -+++ firefox-128.2.0/dom/media/webrtc/RTCCertService.h 2024-09-30 21:41:07.648369048 +0200 +diff -up firefox-140.0/dom/media/webrtc/RTCCertService.h.D225034.1750779491 firefox-140.0/dom/media/webrtc/RTCCertService.h +--- firefox-140.0/dom/media/webrtc/RTCCertService.h.D225034.1750779491 2025-06-26 12:14:42.306588336 +0200 ++++ firefox-140.0/dom/media/webrtc/RTCCertService.h 2025-06-26 12:14:42.306588336 +0200 @@ -0,0 +1,49 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ @@ -1603,9 +1593,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertService.h.webrtc firefox-128.2. +} // namespace mozilla::dom + +#endif // mozilla_dom_CertServiceChild_h -diff -up firefox-128.2.0/dom/media/webrtc/RTCCertServiceParent.cpp.webrtc firefox-128.2.0/dom/media/webrtc/RTCCertServiceParent.cpp ---- firefox-128.2.0/dom/media/webrtc/RTCCertServiceParent.cpp.webrtc 2024-09-30 21:41:07.649369081 +0200 -+++ firefox-128.2.0/dom/media/webrtc/RTCCertServiceParent.cpp 2024-09-30 21:41:07.649369081 +0200 +diff -up firefox-140.0/dom/media/webrtc/RTCCertServiceParent.cpp.D225034.1750779491 firefox-140.0/dom/media/webrtc/RTCCertServiceParent.cpp +--- firefox-140.0/dom/media/webrtc/RTCCertServiceParent.cpp.D225034.1750779491 2025-06-26 12:14:42.306799462 +0200 ++++ firefox-140.0/dom/media/webrtc/RTCCertServiceParent.cpp 2025-06-26 12:14:42.306799462 +0200 @@ -0,0 +1,353 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ @@ -1960,9 +1950,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertServiceParent.cpp.webrtc firefo +} + +} // namespace mozilla::dom -diff -up firefox-128.2.0/dom/media/webrtc/RTCCertServiceParent.h.webrtc firefox-128.2.0/dom/media/webrtc/RTCCertServiceParent.h ---- firefox-128.2.0/dom/media/webrtc/RTCCertServiceParent.h.webrtc 2024-09-30 21:41:07.649369081 +0200 -+++ firefox-128.2.0/dom/media/webrtc/RTCCertServiceParent.h 2024-09-30 21:41:07.649369081 +0200 +diff -up firefox-140.0/dom/media/webrtc/RTCCertServiceParent.h.D225034.1750779491 firefox-140.0/dom/media/webrtc/RTCCertServiceParent.h +--- firefox-140.0/dom/media/webrtc/RTCCertServiceParent.h.D225034.1750779491 2025-06-26 12:14:42.307072966 +0200 ++++ firefox-140.0/dom/media/webrtc/RTCCertServiceParent.h 2025-06-26 12:14:42.307072966 +0200 @@ -0,0 +1,42 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ @@ -2006,9 +1996,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/RTCCertServiceParent.h.webrtc firefox- +} // namespace mozilla::dom + +#endif // mozilla_dom_CertServiceTransactionParent_h -diff -up firefox-128.2.0/dom/media/webrtc/transport/dtlsidentity.cpp.webrtc firefox-128.2.0/dom/media/webrtc/transport/dtlsidentity.cpp ---- firefox-128.2.0/dom/media/webrtc/transport/dtlsidentity.cpp.webrtc 2024-08-26 16:23:35.000000000 +0200 -+++ firefox-128.2.0/dom/media/webrtc/transport/dtlsidentity.cpp 2024-09-30 21:41:07.651369147 +0200 +diff -up firefox-140.0/dom/media/webrtc/transport/dtlsidentity.cpp.D225034.1750779491 firefox-140.0/dom/media/webrtc/transport/dtlsidentity.cpp +--- firefox-140.0/dom/media/webrtc/transport/dtlsidentity.cpp.D225034.1750779491 2025-06-17 18:15:13.000000000 +0200 ++++ firefox-140.0/dom/media/webrtc/transport/dtlsidentity.cpp 2025-06-26 12:14:42.307331702 +0200 @@ -17,136 +17,19 @@ #include "sslerr.h" @@ -2189,9 +2179,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/transport/dtlsidentity.cpp.webrtc fire +} + } // namespace mozilla -diff -up firefox-128.2.0/dom/media/webrtc/transport/dtlsidentity.h.webrtc firefox-128.2.0/dom/media/webrtc/transport/dtlsidentity.h ---- firefox-128.2.0/dom/media/webrtc/transport/dtlsidentity.h.webrtc 2024-08-26 16:23:35.000000000 +0200 -+++ firefox-128.2.0/dom/media/webrtc/transport/dtlsidentity.h 2024-09-30 21:41:07.651369147 +0200 +diff -up firefox-140.0/dom/media/webrtc/transport/dtlsidentity.h.D225034.1750779491 firefox-140.0/dom/media/webrtc/transport/dtlsidentity.h +--- firefox-140.0/dom/media/webrtc/transport/dtlsidentity.h.D225034.1750779491 2025-06-17 18:15:13.000000000 +0200 ++++ firefox-140.0/dom/media/webrtc/transport/dtlsidentity.h 2025-06-26 12:14:42.307559680 +0200 @@ -10,6 +10,7 @@ #include @@ -2247,10 +2237,10 @@ diff -up firefox-128.2.0/dom/media/webrtc/transport/dtlsidentity.h.webrtc firefo UniqueSECKEYPrivateKey private_key_; UniqueCERTCertificate cert_; SSLKEAType auth_type_; -diff -up firefox-128.2.0/ipc/glue/BackgroundParentImpl.cpp.webrtc firefox-128.2.0/ipc/glue/BackgroundParentImpl.cpp ---- firefox-128.2.0/ipc/glue/BackgroundParentImpl.cpp.webrtc 2024-08-26 16:23:36.000000000 +0200 -+++ firefox-128.2.0/ipc/glue/BackgroundParentImpl.cpp 2024-09-30 21:41:07.651369147 +0200 -@@ -57,6 +57,7 @@ +diff -up firefox-140.0/ipc/glue/BackgroundParentImpl.cpp.D225034.1750779491 firefox-140.0/ipc/glue/BackgroundParentImpl.cpp +--- firefox-140.0/ipc/glue/BackgroundParentImpl.cpp.D225034.1750779491 2025-06-17 18:15:14.000000000 +0200 ++++ firefox-140.0/ipc/glue/BackgroundParentImpl.cpp 2025-06-26 12:14:42.307823345 +0200 +@@ -59,6 +59,7 @@ #include "mozilla/dom/quota/QuotaParent.h" #include "mozilla/dom/simpledb/ActorsParent.h" #include "mozilla/dom/VsyncParent.h" @@ -2258,10 +2248,10 @@ diff -up firefox-128.2.0/ipc/glue/BackgroundParentImpl.cpp.webrtc firefox-128.2. #include "mozilla/ipc/BackgroundParent.h" #include "mozilla/ipc/BackgroundUtils.h" #include "mozilla/ipc/Endpoint.h" -diff -up firefox-128.2.0/media/webrtc/signaling/gtest/mediapipeline_unittest.cpp.webrtc firefox-128.2.0/media/webrtc/signaling/gtest/mediapipeline_unittest.cpp ---- firefox-128.2.0/media/webrtc/signaling/gtest/mediapipeline_unittest.cpp.webrtc 2024-08-26 16:23:42.000000000 +0200 -+++ firefox-128.2.0/media/webrtc/signaling/gtest/mediapipeline_unittest.cpp 2024-09-30 21:41:07.651369147 +0200 -@@ -197,13 +197,15 @@ class LoopbackTransport : public MediaTr +diff -up firefox-140.0/media/webrtc/signaling/gtest/mediapipeline_unittest.cpp.D225034.1750779491 firefox-140.0/media/webrtc/signaling/gtest/mediapipeline_unittest.cpp +--- firefox-140.0/media/webrtc/signaling/gtest/mediapipeline_unittest.cpp.D225034.1750779491 2025-06-17 18:15:19.000000000 +0200 ++++ firefox-140.0/media/webrtc/signaling/gtest/mediapipeline_unittest.cpp 2025-06-26 12:14:42.308182079 +0200 +@@ -200,13 +200,15 @@ class LoopbackTransport : public MediaTr // this up internally const nsTArray& aStunAddrs) override {} @@ -2284,9 +2274,9 @@ diff -up firefox-128.2.0/media/webrtc/signaling/gtest/mediapipeline_unittest.cpp void RemoveTransportsExcept( const std::set& aTransportIds) override {} -diff -up firefox-128.2.0/netwerk/ipc/PSocketProcessBridge.ipdl.webrtc firefox-128.2.0/netwerk/ipc/PSocketProcessBridge.ipdl ---- firefox-128.2.0/netwerk/ipc/PSocketProcessBridge.ipdl.webrtc 2024-08-26 16:23:42.000000000 +0200 -+++ firefox-128.2.0/netwerk/ipc/PSocketProcessBridge.ipdl 2024-09-30 21:41:07.651369147 +0200 +diff -up firefox-140.0/netwerk/ipc/PSocketProcessBridge.ipdl.D225034.1750779491 firefox-140.0/netwerk/ipc/PSocketProcessBridge.ipdl +--- firefox-140.0/netwerk/ipc/PSocketProcessBridge.ipdl.D225034.1750779491 2025-06-17 18:15:20.000000000 +0200 ++++ firefox-140.0/netwerk/ipc/PSocketProcessBridge.ipdl 2025-06-26 12:14:42.308456975 +0200 @@ -10,6 +10,8 @@ include protocol PBackgroundDataBridge; include protocol PMediaTransport; #endif // MOZ_WEBRTC @@ -2304,9 +2294,9 @@ diff -up firefox-128.2.0/netwerk/ipc/PSocketProcessBridge.ipdl.webrtc firefox-12 }; } -diff -up firefox-128.2.0/netwerk/ipc/SocketProcessBridgeParent.cpp.webrtc firefox-128.2.0/netwerk/ipc/SocketProcessBridgeParent.cpp ---- firefox-128.2.0/netwerk/ipc/SocketProcessBridgeParent.cpp.webrtc 2024-08-26 16:23:43.000000000 +0200 -+++ firefox-128.2.0/netwerk/ipc/SocketProcessBridgeParent.cpp 2024-09-30 21:41:07.651369147 +0200 +diff -up firefox-140.0/netwerk/ipc/SocketProcessBridgeParent.cpp.D225034.1750779491 firefox-140.0/netwerk/ipc/SocketProcessBridgeParent.cpp +--- firefox-140.0/netwerk/ipc/SocketProcessBridgeParent.cpp.D225034.1750779491 2025-06-17 18:15:20.000000000 +0200 ++++ firefox-140.0/netwerk/ipc/SocketProcessBridgeParent.cpp 2025-06-26 12:14:42.308665677 +0200 @@ -9,6 +9,7 @@ #ifdef MOZ_WEBRTC # include "mozilla/dom/MediaTransportParent.h" @@ -2353,9 +2343,9 @@ diff -up firefox-128.2.0/netwerk/ipc/SocketProcessBridgeParent.cpp.webrtc firefo void SocketProcessBridgeParent::ActorDestroy(ActorDestroyReason aReason) { // See bug 1846478. We might be able to remove this dispatch. GetCurrentSerialEventTarget()->Dispatch(NS_NewRunnableFunction( -diff -up firefox-128.2.0/netwerk/ipc/SocketProcessBridgeParent.h.webrtc firefox-128.2.0/netwerk/ipc/SocketProcessBridgeParent.h ---- firefox-128.2.0/netwerk/ipc/SocketProcessBridgeParent.h.webrtc 2024-08-26 16:23:43.000000000 +0200 -+++ firefox-128.2.0/netwerk/ipc/SocketProcessBridgeParent.h 2024-09-30 21:41:07.651369147 +0200 +diff -up firefox-140.0/netwerk/ipc/SocketProcessBridgeParent.h.D225034.1750779491 firefox-140.0/netwerk/ipc/SocketProcessBridgeParent.h +--- firefox-140.0/netwerk/ipc/SocketProcessBridgeParent.h.D225034.1750779491 2025-06-17 18:15:20.000000000 +0200 ++++ firefox-140.0/netwerk/ipc/SocketProcessBridgeParent.h 2025-06-26 12:14:42.308878987 +0200 @@ -29,6 +29,9 @@ class SocketProcessBridgeParent final : Endpoint&& aEndpoint); #endif @@ -2366,4 +2356,3 @@ diff -up firefox-128.2.0/netwerk/ipc/SocketProcessBridgeParent.h.webrtc firefox- void ActorDestroy(ActorDestroyReason aReason) override; private: -diff -up firefox-128.2.0/third_party/libwebrtc/examples/androidtests/third_party/README.webrtc firefox-128.2.0/third_party/libwebrtc/examples/androidtests/third_party/README