From 08e00f89b7136779fa48843340fc087e26788a28 Mon Sep 17 00:00:00 2001 From: Jacob Wang Date: Mon, 22 Sep 2025 10:51:41 +0800 Subject: [PATCH 1/2] [CVE]update to firefox-140.3.0-1 to #ICZ2R5 update to firefox-140.3.0-1 for CVE-2025-10527 CVE-2025-10528 CVE-2025-10529 CVE-2025-10532 CVE-2025-10533 CVE-2025-10536 CVE-2025-10537 Project: TC2024080204 Signed-off-by: Jacob Wang --- ...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 - download | 12 +- firefox-fix-build-with-system-pipewire.patch | 12 + ...refs.js => firefox-redhat-default-prefs.js | 4 +- ...-system-nss-replace-xyber-with-mlkem.patch | 507 -------------- firefox.spec | 642 ++++++++++-------- mozilla-bmo1170092.patch | 34 +- mozilla-bmo1636168-fscreen.patch | 39 +- mozilla-bmo1670333.patch | 32 +- mozilla-bmo1789216-disable-av1.patch | 51 +- rhbz-1173156.patch | 22 +- wasi.patch | 2 +- ...tc-128.0.patch.patch => webrtc-128.0.patch | 501 +++++++------- 33 files changed, 865 insertions(+), 2790 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 rename firefox-anolis-default-prefs.js => firefox-redhat-default-prefs.js (93%) 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/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/download b/download index 19aefd7..f0b0f7f 100644 --- a/download +++ b/download @@ -1,8 +1,8 @@ -fc25f988b87b5187d4e2f006efa699a3 cbindgen-vendor.tar.xz -72d658db3d3d7f13d7e85c043e15d9d7 firefox-128.14.0esr.processed-source.tar.xz -824e766472af737ea731e12d66470c20 firefox-langpacks-128.14.0esr-20250815.tar.xz +bbd51396c9f1f79afb128af28627b207 cbindgen-vendor.tar.xz +a84424907316272621821617d3b9deb6 firefox-140.3.0esr.processed-source.tar.xz +82690c274afba04eb3e14cd58df8649d firefox-langpacks-140.3.0esr-20250909.tar.xz b3c1d2ea615cb0195f4f62b005773262 mochitest-python.tar.gz 2d901c7a62fc68bbd8816e8c4c6276c1 wasi-sdk-20.tar.gz -7b35b9a003996b1f1dbc3cd936a609f2 nspr-4.35.0-1.el8_1.src.rpm -ab085bce989de91681f48fdd05be4c0f nss-3.101.0-7.el8_2.src.rpm -dbf6357877e3e1042de1a95cdfb61507 nss-3.101.0-7.el9_2.src.rpm +eac5020733316a7fb17c9da54eeabf69 nspr-4.36.0-2.el8_2.src.rpm +60707f45d08ead54b4372ab1d4b5184f nss-3.112.0-1.el9_4.src.rpm +8a4e44bfb05ea8d724a6d8646f0353ab nss-3.112.0-4.el8_2.src.rpm 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-anolis-default-prefs.js b/firefox-redhat-default-prefs.js similarity index 93% rename from firefox-anolis-default-prefs.js rename to firefox-redhat-default-prefs.js index ad8dbea..4263a3d 100644 --- a/firefox-anolis-default-prefs.js +++ b/firefox-redhat-default-prefs.js @@ -14,8 +14,8 @@ pref("browser.shell.checkDefaultBrowser", false); pref("network.manage-offline-status", true); pref("extensions.shownSelectionUI", true); pref("ui.SpellCheckerUnderlineStyle", 1); -pref("startup.homepage_override_url", "https://openanolis.cn/"); -pref("startup.homepage_welcome_url", "https://openanolis.cn/"); +pref("startup.homepage_override_url", "%HOMEPAGE%"); +pref("startup.homepage_welcome_url", "%HOMEPAGE%"); pref("browser.startup.homepage", "data:text/plain,browser.startup.homepage=file:///%PREFIX%/share/doc/HTML/index.html"); pref("media.gmp-gmpopenh264.autoupdate",true); pref("media.gmp-gmpopenh264.enabled",false); 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 affff49..6b335e3 100644 --- a/firefox.spec +++ b/firefox.spec @@ -1,4 +1,3 @@ -%define anolis_release .0.1 %define homepage %(grep '^HOME_URL\s*=' /etc/os-release | sed 's/^HOME_URL\s*=//;s/^\s*"//;s/"\s*$//') %global disable_toolsets 0 @@ -19,17 +18,17 @@ %{lua: function dist_to_rhel_minor(str, start) - match = string.match(str, ".module%+an8.%d+") + match = string.match(str, ".module%+el8.%d+") if match then return string.sub(match, 13) end - match = string.match(str, ".an8_%d+") + match = string.match(str, ".el8_%d+") if match then return string.sub(match, 6) end - match = string.match(str, ".an8") + match = string.match(str, ".el8") if match then - return 8 + return 10 end match = string.match(str, ".module%+el9.%d+") if match then @@ -72,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 @@ -84,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 @@ -98,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 @@ -123,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 @@ -167,13 +175,11 @@ end} Summary: Mozilla Firefox Web browser Name: firefox -Version: 128.14.0 -Release: 2%{anolis_release}%{?dist} +Version: 140.3.0 +Release: 1%{?dist} URL: https://www.mozilla.org/firefox/ License: MPLv1.1 or GPLv2+ or LGPLv2+ -ExcludeArch: loongarch64 - %if 0%{?rhel} >= 9 ExcludeArch: %{ix86} %endif @@ -200,12 +206,12 @@ 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 Source10: firefox-mozconfig -Source12: firefox-anolis-default-prefs.js +Source12: firefox-redhat-default-prefs.js Source20: firefox.desktop Source21: firefox.sh.in Source23: firefox.1 @@ -229,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 @@ -271,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 @@ -328,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 @@ -402,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 @@ -429,10 +419,22 @@ BuildRequires: lld BuildRequires: clang cmake ninja-build %endif -#%if !0%{?flatpak} +%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 -#%endif +BuildRequires: system-bookmarks +%endif %if 0%{?test_on_wayland} BuildRequires: dbus-x11 @@ -490,7 +492,6 @@ BuildRequires: gcc-toolset-%{gts_version}-gcc-plugin-annobin # Do not explicitly require gcc-toolset-%%{gts_version}-gcc-c++ instead fail # when clang is upgraded to depend on a later toolset and adjust version. # ERROR: The target C compiler is version 13.3.1, while the target C++ compiler is version 8.5.0. Need to use the same compiler version. -BuildRequires: gcc-toolset-%{gts_version}-gcc-c++ %endif Requires: mozilla-filesystem @@ -508,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) @@ -520,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) @@ -541,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) @@ -558,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) @@ -573,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) @@ -586,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) @@ -635,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 @@ -722,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 @@ -752,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 @@ -782,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 @@ -799,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 @@ -862,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 @@ -903,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 @@ -913,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 @@ -957,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 @@ -969,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 @@ -979,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 @@ -1053,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 @@ -1061,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 @@ -1102,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 @@ -1196,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} @@ -1209,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} @@ -1243,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 @@ -1253,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 @@ -1305,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 @@ -1381,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 @@ -1399,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) @@ -1637,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) @@ -1703,10 +1781,10 @@ EOF %endif # set up our default bookmarks -#%if !0%{?flatpak} - #%global default_bookmarks_file /usr/share/bookmarks/default-bookmarks.html - #%{__cp} -p %{default_bookmarks_file} objdir/dist/bin/browser/chrome/browser/content/browser/default-bookmarks.html -#%endif +%if !0%{?flatpak} + %global default_bookmarks_file /usr/share/bookmarks/default-bookmarks.html + %{__cp} -p %{default_bookmarks_file} objdir/dist/bin/browser/chrome/browser/content/browser/default-bookmarks.html +%endif # Make sure locale works for langpacks %{__cat} > objdir/dist/bin/browser/defaults/preferences/firefox-l10n.js << EOF @@ -1947,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 @@ -1984,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} @@ -2001,10 +2079,8 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #--------------------------------------------------------------------- %changelog -* Mon Aug 25 2025 Liwei Ge - 128.14.0-2.0.1 -- Add firefox-anolis-default-prefs.js -- Remove bookmarks and loongarch64 -- Add BuildRequires gcc-toolset-13-gcc-c++ +* 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/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/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; -- } + 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; +} - -- 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); - } - --already_AddRefed RTCCertificate::GenerateCertificate( ++ 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 -- Gitee From 395496664c80a4bd89845a1c77b06c3ef936c8b4 Mon Sep 17 00:00:00 2001 From: Zhao Hang Date: Thu, 16 Dec 2021 06:12:47 +0000 Subject: [PATCH 2/2] rebrand: add firefox-anolis-default-prefs.js --- ...refs.js => firefox-anolis-default-prefs.js | 4 +-- firefox.spec | 35 ++++++++++++------- 2 files changed, 24 insertions(+), 15 deletions(-) rename firefox-redhat-default-prefs.js => firefox-anolis-default-prefs.js (93%) diff --git a/firefox-redhat-default-prefs.js b/firefox-anolis-default-prefs.js similarity index 93% rename from firefox-redhat-default-prefs.js rename to firefox-anolis-default-prefs.js index 4263a3d..ad8dbea 100644 --- a/firefox-redhat-default-prefs.js +++ b/firefox-anolis-default-prefs.js @@ -14,8 +14,8 @@ pref("browser.shell.checkDefaultBrowser", false); pref("network.manage-offline-status", true); pref("extensions.shownSelectionUI", true); pref("ui.SpellCheckerUnderlineStyle", 1); -pref("startup.homepage_override_url", "%HOMEPAGE%"); -pref("startup.homepage_welcome_url", "%HOMEPAGE%"); +pref("startup.homepage_override_url", "https://openanolis.cn/"); +pref("startup.homepage_welcome_url", "https://openanolis.cn/"); pref("browser.startup.homepage", "data:text/plain,browser.startup.homepage=file:///%PREFIX%/share/doc/HTML/index.html"); pref("media.gmp-gmpopenh264.autoupdate",true); pref("media.gmp-gmpopenh264.enabled",false); diff --git a/firefox.spec b/firefox.spec index 6b335e3..1399f84 100644 --- a/firefox.spec +++ b/firefox.spec @@ -1,3 +1,4 @@ +%define anolis_release .0.1 %define homepage %(grep '^HOME_URL\s*=' /etc/os-release | sed 's/^HOME_URL\s*=//;s/^\s*"//;s/"\s*$//') %global disable_toolsets 0 @@ -18,17 +19,17 @@ %{lua: function dist_to_rhel_minor(str, start) - match = string.match(str, ".module%+el8.%d+") + match = string.match(str, ".module%+an8.%d+") if match then return string.sub(match, 13) end - match = string.match(str, ".el8_%d+") + match = string.match(str, ".an8_%d+") if match then return string.sub(match, 6) end - match = string.match(str, ".el8") + match = string.match(str, ".an8") if match then - return 10 + return 8 end match = string.match(str, ".module%+el9.%d+") if match then @@ -176,10 +177,12 @@ end} Summary: Mozilla Firefox Web browser Name: firefox Version: 140.3.0 -Release: 1%{?dist} +Release: 1%{anolis_release}%{?dist} URL: https://www.mozilla.org/firefox/ License: MPLv1.1 or GPLv2+ or LGPLv2+ +ExcludeArch: loongarch64 + %if 0%{?rhel} >= 9 ExcludeArch: %{ix86} %endif @@ -211,7 +214,7 @@ Source1: firefox-langpacks-%{version}%{?pre_version}-20250909.tar.xz Source2: cbindgen-vendor.tar.xz Source3: process-official-tarball Source10: firefox-mozconfig -Source12: firefox-redhat-default-prefs.js +Source12: firefox-anolis-default-prefs.js Source20: firefox.desktop Source21: firefox.sh.in Source23: firefox.1 @@ -431,10 +434,10 @@ BuildRequires: mesa-libgbm-devel BuildRequires: pipewire-devel %endif -%if !0%{?flatpak} +#%if !0%{?flatpak} #TODO -BuildRequires: system-bookmarks -%endif +#BuildRequires: system-bookmarks +#%endif %if 0%{?test_on_wayland} BuildRequires: dbus-x11 @@ -492,6 +495,7 @@ BuildRequires: gcc-toolset-%{gts_version}-gcc-plugin-annobin # Do not explicitly require gcc-toolset-%%{gts_version}-gcc-c++ instead fail # when clang is upgraded to depend on a later toolset and adjust version. # ERROR: The target C compiler is version 13.3.1, while the target C++ compiler is version 8.5.0. Need to use the same compiler version. +BuildRequires: gcc-toolset-%{gts_version}-gcc-c++ %endif Requires: mozilla-filesystem @@ -1781,10 +1785,10 @@ EOF %endif # set up our default bookmarks -%if !0%{?flatpak} - %global default_bookmarks_file /usr/share/bookmarks/default-bookmarks.html - %{__cp} -p %{default_bookmarks_file} objdir/dist/bin/browser/chrome/browser/content/browser/default-bookmarks.html -%endif +#%if !0%{?flatpak} + #%global default_bookmarks_file /usr/share/bookmarks/default-bookmarks.html + #%{__cp} -p %{default_bookmarks_file} objdir/dist/bin/browser/chrome/browser/content/browser/default-bookmarks.html +#%endif # Make sure locale works for langpacks %{__cat} > objdir/dist/bin/browser/defaults/preferences/firefox-l10n.js << EOF @@ -2079,6 +2083,11 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #--------------------------------------------------------------------- %changelog +* Mon Sep 22 2025 Liwei Ge - 140.3.0-1.0.1 +- Add firefox-anolis-default-prefs.js +- Remove bookmarks and loongarch64 +- Add BuildRequires gcc-toolset-13-gcc-c++ + * Wed Sep 10 2025 Jan Horak - 140.3.0-1 - Update to 140.3.0 -- Gitee