Rebase to 140.3.0 ESR
Following changes were made during rebase: Use gcc toolset 14 instead of 13 Fixed annocheck workaround and backported ensure kiosk mode Removed disable-vsync-for-kiosk.patch Update to 140 esr Update bundled package list Cleanup patches: - remove unused patches - fix patch versioning - rename webrtc-128.0.patch to D225034.xxxx based on the merge request Use system libraries for drm/gbm/pipewire Update patch disabling PipeWire support Backported fips patches Enable system nss Update nss versions Added fixes for rhel9 from SE Fix the system pipewire build Update to 140.1.0 Cleanup and incorporating of SE changes Fixing spec file adding av1-else-condition-add.patch fixing av1 disable patch Fixed exceptionHandler patch Update to 140.2.0 Removed bundled(cups) as long as it is not bundled Changes related to rebase-140 of rhel-9.x(9.0, 9.2, 9.4) streams owned by SE 1.Added updated nss-3.112 in the Sources and .gitignore and updated its reference inside specfile 2.Add condition to not enable system_gbm, drm, pipewire as build was failing 3.Added handling for setting bundled_nss=1 for these streams,so that it used nss bundled nspr changes related to rhel 8.x(2,4,6,8) and 7.9 version Added fixes for missing translation and gnome kiosk Update to 140.3.0 esr Resolves: RHEL-114034
This commit is contained in:
parent
92950b13f8
commit
d5a7f05712
5
.gitignore
vendored
5
.gitignore
vendored
@ -113,3 +113,8 @@ SOURCES/nss-3.79.0-6.el8_1.src.rpm
|
||||
/firefox-128.14.0esr.processed-source.tar.xz
|
||||
/firefox-langpacks-128.14.0esr-20250812.tar.xz
|
||||
/firefox-langpacks-128.14.0esr-20250815.tar.xz
|
||||
/nss-3.112.0-1.el9_4.src.rpm
|
||||
/nss-3.112.0-4.el8_2.src.rpm
|
||||
/nspr-4.36.0-2.el8_2.src.rpm
|
||||
/firefox-140.3.0esr.processed-source.tar.xz
|
||||
/firefox-langpacks-140.3.0esr-20250909.tar.xz
|
||||
|
||||
@ -1,116 +0,0 @@
|
||||
From 92643d686bed8f3e4f2c1aae194925b6dc9dea86 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Grulich <jgrulich@redhat.com>
|
||||
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<DesktopVector> mouse_cursor_position =
|
||||
+ options_.screencast_stream()->CaptureCursorPosition();
|
||||
+ // Invalid cursor or position
|
||||
+ if (!mouse_cursor_position) {
|
||||
+ callback_->OnMouseCursor(nullptr);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
std::unique_ptr<MouseCursor> mouse_cursor =
|
||||
options_.screencast_stream()->CaptureCursor();
|
||||
|
||||
@@ -48,11 +56,7 @@ void MouseCursorMonitorPipeWire::Capture() {
|
||||
}
|
||||
|
||||
if (mode_ == SHAPE_AND_POSITION) {
|
||||
- absl::optional<DesktopVector> 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<struct spa_meta_cursor*>(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<MouseCursor>(
|
||||
- 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<MouseCursor>(
|
||||
+ 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,87 +0,0 @@
|
||||
From fef1904f95dc592deef7044debe71a02c5d7046c Mon Sep 17 00:00:00 2001
|
||||
From: Jan Grulich <jgrulich@redhat.com>
|
||||
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.
|
||||
@ -1,231 +0,0 @@
|
||||
From 286575b387cff9b3ec318d3cf90cf20d2f3c2ce4 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Grulich <jgrulich@redhat.com>
|
||||
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<char*>(
|
||||
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<PipeWireNode*>(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<PipeWireSession*>(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<PipeWireNode, PipeWireNode::PipeWireNodeDeleter>;
|
||||
+ 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<PipeWireSession> {
|
||||
|
||||
void Init(VideoCaptureOptions::Callback* callback,
|
||||
int fd = kInvalidPipeWireFd);
|
||||
-
|
||||
- const std::deque<PipeWireNode>& nodes() const { return nodes_; }
|
||||
+ const std::deque<PipeWireNode::PipeWireNodePtr>& nodes() const {
|
||||
+ return nodes_;
|
||||
+ }
|
||||
|
||||
friend class CameraPortalNotifier;
|
||||
friend class PipeWireNode;
|
||||
@@ -134,7 +145,7 @@ class PipeWireSession : public rtc::RefCountedNonVirtual<PipeWireSession> {
|
||||
|
||||
int sync_seq_ = 0;
|
||||
|
||||
- std::deque<PipeWireNode> nodes_;
|
||||
+ std::deque<PipeWireNode::PipeWireNodePtr> nodes_;
|
||||
std::unique_ptr<CameraPortal> portal_;
|
||||
std::unique_ptr<CameraPortalNotifier> portal_notifier_;
|
||||
};
|
||||
@ -1,52 +0,0 @@
|
||||
From b10c1d09729794c46f9c04d04c07c18d514d396e Mon Sep 17 00:00:00 2001
|
||||
From: Jan Grulich <jgrulich@redhat.com>
|
||||
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();
|
||||
}
|
||||
|
||||
@ -1,293 +0,0 @@
|
||||
From df57b21200c7cde7ac34705e8fceab2fbe933bc5 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Grulich <jgrulich@redhat.com>
|
||||
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<webrtc::VideoCaptureModule::DeviceInfo>
|
||||
+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<int, bool, true>;
|
||||
- InvokeAsync(
|
||||
- mVideoCaptureThread, __func__,
|
||||
- [this, self = RefPtr(this), aCapEngine] {
|
||||
- int num = -1;
|
||||
- if (auto* engine = EnsureInitialized(aCapEngine)) {
|
||||
- if (auto devInfo = engine->GetOrCreateVideoCaptureDeviceInfo()) {
|
||||
- num = static_cast<int>(devInfo->NumberOfDevices());
|
||||
- }
|
||||
- }
|
||||
+ InvokeAsync(mVideoCaptureThread, __func__,
|
||||
+ [this, self = RefPtr(this), aCapEngine] {
|
||||
+ int num = -1;
|
||||
+ if (auto devInfo = GetDeviceInfo(aCapEngine)) {
|
||||
+ num = static_cast<int>(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<webrtc::VideoCaptureCapability, int, true>;
|
||||
- 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<uint32_t, webrtc::VideoCaptureCapability>
|
||||
- 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<uint32_t, webrtc::VideoCaptureCapability>
|
||||
+ 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<nsCString, nsCString, pid_t, bool, int>;
|
||||
using Promise = MozPromise<Data, bool, true>;
|
||||
- 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<webrtc::VideoCaptureModule::DeviceInfo> 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<webrtc::VideoCaptureModule::DeviceInfo>
|
||||
-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<webrtc::VideoCaptureModule::DeviceInfo>
|
||||
- GetOrCreateVideoCaptureDeviceInfo();
|
||||
+ GetOrCreateVideoCaptureDeviceInfo(webrtc::VideoInputFeedBack* callBack);
|
||||
|
||||
/**
|
||||
* Destroys existing DeviceInfo.
|
||||
@ -1,36 +0,0 @@
|
||||
From 7dd135852be020d5755af42fa45470df259ba945 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Grulich <jgrulich@redhat.com>
|
||||
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_) {
|
||||
@ -1,190 +0,0 @@
|
||||
From a4eb4517f2bdeb6591c05a09109b4b543b83fef1 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Grulich <jgrulich@redhat.com>
|
||||
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 <spa/monitor/device.h>
|
||||
#include <spa/param/format-utils.h>
|
||||
@@ -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<PipeWireSession> {
|
||||
|
||||
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<PipeWireNode::PipeWireNodePtr>& nodes() const {
|
||||
return nodes_;
|
||||
}
|
||||
@@ -111,6 +127,8 @@ class PipeWireSession : public rtc::RefCountedNonVirtual<PipeWireSession> {
|
||||
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<PipeWireSession> {
|
||||
VideoCaptureOptions::Callback* callback_ RTC_GUARDED_BY(&callback_lock_) =
|
||||
nullptr;
|
||||
|
||||
- VideoCaptureOptions::Status status_;
|
||||
+ webrtc::Mutex device_info_lock_;
|
||||
+ std::vector<DeviceInfoPipeWire*> 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;
|
||||
@ -1,52 +0,0 @@
|
||||
From 9d035f728745f13311ed13d057565ca3b45523aa Mon Sep 17 00:00:00 2001
|
||||
From: Jan Grulich <jgrulich@redhat.com>
|
||||
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 <spa/param/video/raw.h>
|
||||
#include <spa/pod/parser.h>
|
||||
|
||||
+#include <algorithm>
|
||||
+
|
||||
#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_fraction*>(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<int32_t>(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;
|
||||
}
|
||||
}
|
||||
@ -1,172 +0,0 @@
|
||||
From ca88b4994e140370ca5795c60f46559301458a98 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Grulich <jgrulich@redhat.com>
|
||||
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<int>(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<uint32_t>(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<uint32_t>(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<uint32_t>(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*>(spa_pod_builder_pop(builder, &frames[0]));
|
||||
+ return static_cast<spa_pod*>(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,
|
||||
@ -1,61 +0,0 @@
|
||||
From 12b7d28d858fdcfa80795a2af49a71d3b5142733 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Grulich <grulja@gmail.com>
|
||||
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_proxy*>(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<int> id;
|
||||
- id = rtc::StringToNumber<int>(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];
|
||||
@ -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 <secerr.h>
|
||||
#include <nspr.h>
|
||||
@ -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
|
||||
|
||||
|
||||
16
D245908.clear-lang-bundles.diff
Normal file
16
D245908.clear-lang-bundles.diff
Normal file
@ -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;
|
||||
|
||||
53
D249071.restoreWinState.diff
Normal file
53
D249071.restoreWinState.diff
Normal file
@ -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<dom::Element> 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;
|
||||
|
||||
14
av1-else-condition-add.patch
Normal file
14
av1-else-condition-add.patch
Normal file
@ -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
|
||||
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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"]
|
||||
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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.
|
||||
|
||||
20
build-system-nss.patch
Normal file
20
build-system-nss.patch
Normal file
@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
@ -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");
|
||||
12
firefox-fix-build-with-system-pipewire.patch
Normal file
12
firefox-fix-build-with-system-pipewire.patch
Normal file
@ -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",
|
||||
File diff suppressed because one or more lines are too long
611
firefox.spec
611
firefox.spec
File diff suppressed because it is too large
Load Diff
@ -12,7 +12,7 @@ to be used with 'cargo vendor' commmand.
|
||||
"""
|
||||
|
||||
[dependencies]
|
||||
cbindgen = "0.26.0"
|
||||
cbindgen = "0.27.0"
|
||||
|
||||
[[bin]]
|
||||
name = "dummy"
|
||||
|
||||
@ -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<nsZipFind> 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 <ctype.h>
|
||||
@ -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 \
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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<MediaRawData> 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 <functional>
|
||||
|
||||
@ -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<PlatformDecoderModule> mNullPDM;
|
||||
|
||||
DecoderDoctorDiagnostics::FlagsSet mFailureFlags;
|
||||
|
||||
@ -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 += [
|
||||
|
||||
@ -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<std::string> argvVec{"ntlm_auth", "--helper-protocol",
|
||||
+ std::vector<std::string> argvVec{"/usr/bin/ntlm_auth", "--helper-protocol",
|
||||
"ntlmssp-client-1", "--use-cached-creds",
|
||||
"--username", username};
|
||||
|
||||
- const char* const args[] = {"ntlm_auth",
|
||||
+ const char* const args[] = {"/usr/bin/ntlm_auth",
|
||||
"--helper-protocol",
|
||||
"ntlmssp-client-1",
|
||||
"--use-cached-creds",
|
||||
|
||||
12
sources
12
sources
@ -1,8 +1,8 @@
|
||||
SHA512 (mochitest-python.tar.gz) = 089b1593068b76f4572af0086eaccf52a6a1299bfffb58593206d19bf021ae381f2380bbfeb4371586cd53706ff6dde3d240238b2caf19b96c57dfc2f4524e36
|
||||
SHA512 (cbindgen-vendor.tar.xz) = 0c7a40033ccd38dadd30ad064feef390444af4562be07d3dfd0c4cccc55821b01b5228ddee367d0af3bd1b4ef9b1552cdd104506579b020ac1940a7c536b8b68
|
||||
SHA512 (nspr-4.35.0-1.el8_1.src.rpm) = 5123a443fcc42602e31104999be339ae899eb7b1f1e2f1ea87ba4f283eb894d08ab568e421dba1df4770f23be91ff88aa6a0748bce7feef31ed88bee5bdecb2c
|
||||
SHA512 (nss-3.101.0-7.el9_2.src.rpm) = 7c325e0e437c1266031af02b3a026d20b789548ae435be6c39d710aa9d19c967ac0a79097fd50dd8ab878bf0d72c19e937d54863aa8cd0654ef2ef288e3102ec
|
||||
SHA512 (nss-3.101.0-7.el8_2.src.rpm) = c25551b06cf9239bb54aaf3edaea2c60804b449de4e06af4f5192bc181b5c6468ea8a69ddeff9de1b11bfc123e894b1ce8fc5d6deddfd5062f8736b75db56f8d
|
||||
SHA512 (wasi-sdk-20.tar.gz) = 95be9d9b41ed1f7884e9cd68bad22abbb355b049fd09731c89b9e36666d0205b1a16ec9c21820adf0c5a34e2048015cbfbef0542170d466fa3336c636873c405
|
||||
SHA512 (firefox-128.14.0esr.processed-source.tar.xz) = ee07f081d9aa8042fb2893ed41a8df518781128a405acdbb0a3826140e3cbfac72f5053a167aaa5a35fb8f8ccf7bebb323006f27cd3fddf2935aed2002016534
|
||||
SHA512 (firefox-langpacks-128.14.0esr-20250815.tar.xz) = e787e9342affe264f1f27c8b0be5f3fada0f80e13d06fb45e7e601dd18efebe794a6474a9dfac2f51743c8e35f46eb3be12c86135ce770d08a7b74d5e3a6ad8d
|
||||
SHA512 (nss-3.112.0-1.el9_4.src.rpm) = 6386239e79f8095b05270b3c8b76ac9203b0df196921b64b779f832f0c04fc8c86624a98d85d39372b07e361278c400f52ef653e14ebeab9db49429e69153ff2
|
||||
SHA512 (nss-3.112.0-4.el8_2.src.rpm) = 59cca3df7a0ec6a731f4a36f8f560d496d240da0c16650f047ae686e683b883dc2630aedbe46a8b2cb21662c15f03f1efbe99da42055cc3a5418da4839e28da2
|
||||
SHA512 (nspr-4.36.0-2.el8_2.src.rpm) = fcc720afd2453a5110975fac9dd06f636491234780b62cbfcc235a485b4935e97c4f438292c686d27d9dc86b56f43399c024bee4fffcdff5f27c62d105310645
|
||||
SHA512 (firefox-140.3.0esr.processed-source.tar.xz) = b473b5e8bb292fd94c63804b742324ec3959d4c804f4bdcf2652736b03d5549cf61c574ac19e627e38da0ac67137f5e95093770ef3cd9f665e202564f00476cf
|
||||
SHA512 (firefox-langpacks-140.3.0esr-20250909.tar.xz) = 7b2e64b77b7333f84b3b7d89d4a46dfa95c1b7e16d2db8d6a15586356f7b0505d8136855b765550e5de8da8aa5785d2911e0b96fc971fe53b85cad38c1d2b816
|
||||
SHA512 (cbindgen-vendor.tar.xz) = 2b8db32c0bca2fa27304ee4fd3a5cc38bc43a11500b23842747813d221e55719c51cf4c0e027e41857f58ce1e283ce97b69c2c7d1eae93ecbb08c2f729e2bf55
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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<nsString>& 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<NrIceStunAddr>& aStunAddrs) override;
|
||||
@ -221,7 +221,7 @@ diff -up firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandler.cpp.webrtc
|
||||
|
||||
void RemoveTransportsExcept(
|
||||
const std::set<std::string>& 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<MediaTransportHandlerSTS>(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> 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<NrIceStunAddr>& aStunAddrs) override;
|
||||
@ -313,9 +313,9 @@ diff -up firefox-128.2.0/dom/media/webrtc/jsapi/MediaTransportHandlerIPC.h.webrt
|
||||
|
||||
void RemoveTransportsExcept(
|
||||
const std::set<std::string>& 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<JS::Value> 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<uint64_t>(EXPIRATION_MAX / PR_USEC_PER_MSEC);
|
||||
+ if (expiration.mExpires.Value() > max) {
|
||||
+ return EXPIRATION_MAX;
|
||||
+ }
|
||||
+ return static_cast<PRTime>(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<RsaHashedKeyGenParams> 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<unsigned char*>(&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<size_t>(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<EcKeyGenParams> 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<JS::Value> value(aCx, JS::ObjectValue(*aOptions.GetAsObject()));
|
||||
- if (!expiration.Init(aCx, value)) {
|
||||
- aRv.NoteJSContextException(aCx);
|
||||
- return 0;
|
||||
- }
|
||||
+ return NS_OK;
|
||||
+}
|
||||
|
||||
- if (!expiration.mExpires.WasPassed()) {
|
||||
- return EXPIRATION_DEFAULT;
|
||||
- }
|
||||
- static const uint64_t max =
|
||||
- static_cast<uint64_t>(EXPIRATION_MAX / PR_USEC_PER_MSEC);
|
||||
- if (expiration.mExpires.Value() > max) {
|
||||
- return EXPIRATION_MAX;
|
||||
- }
|
||||
- return static_cast<PRTime>(expiration.mExpires.Value() * PR_USEC_PER_MSEC);
|
||||
+RefPtr<RTCCertFingerprintPromise> RTCCertificateMetadata::Generate(
|
||||
+ nsCOMPtr<nsIRTCCertService> aCertService) {
|
||||
+ return aCertService->GenerateCertificate(mParam, mExpires, mMechanism,
|
||||
+ mSignatureAlg);
|
||||
static PRTime ReadExpires(JSContext* aCx, const ObjectOrString& aOptions,
|
||||
ErrorResult& aRv) {
|
||||
// This conversion might fail, but we don't really care; use the default.
|
||||
@@ -288,46 +102,166 @@ static PRTime ReadExpires(JSContext* aCx
|
||||
return static_cast<PRTime>(expiration.mExpires.Value() * PR_USEC_PER_MSEC);
|
||||
}
|
||||
|
||||
-already_AddRefed<Promise> 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<RsaHashedKeyGenParams> 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<size_t>(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<EcKeyGenParams> params(aCx);
|
||||
+ rv = Coerce(aCx, params, aAlgorithm);
|
||||
+ NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_SYNTAX_ERR);
|
||||
+ if (!NormalizeToken(params.mNamedCurve, mNamedCurve)) {
|
||||
+ return NS_ERROR_DOM_NOT_SUPPORTED_ERR;
|
||||
+ }
|
||||
+ mMechanism = CKM_EC_KEY_PAIR_GEN;
|
||||
+ if (!SerializeECParams(&mParam,
|
||||
+ CreateECParamsForCurve(mNamedCurve, mArena.get()))) {
|
||||
+ return NS_ERROR_DOM_NOT_SUPPORTED_ERR;
|
||||
+ }
|
||||
+
|
||||
+ // We only support good curves in WebCrypto.
|
||||
+ // If that ever changes, check that a good one was chosen.
|
||||
+ mSignatureAlg = SEC_OID_ANSIX962_ECDSA_SHA256_SIGNATURE;
|
||||
+ *aAuthType = ssl_kea_ecdh;
|
||||
+ } else {
|
||||
+ return NS_ERROR_DOM_NOT_SUPPORTED_ERR;
|
||||
+ }
|
||||
+ return NS_OK;
|
||||
+}
|
||||
+
|
||||
+RefPtr<RTCCertFingerprintPromise> RTCCertificateMetadata::Generate(
|
||||
+ nsCOMPtr<nsIRTCCertService> aCertService) {
|
||||
+ return aCertService->GenerateCertificate(mParam, mExpires, mMechanism,
|
||||
+ mSignatureAlg);
|
||||
+}
|
||||
+
|
||||
+already_AddRefed<Promise> 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<dom::RTCDtlsFingerprint>& aFingerprintsOut) {
|
||||
@@ -357,13 +291,10 @@ void RTCCertificate::GetFingerprints(
|
||||
}
|
||||
|
||||
RefPtr<DtlsIdentity> 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<RTCCertificate> RTCCert
|
||||
@@ -456,7 +376,8 @@ already_AddRefed<RTCCertificate> RTCCert
|
||||
}
|
||||
cert->mExpires = static_cast<PRTime>(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<RTCDtlsFingerprint> 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 <vector>
|
||||
|
||||
@ -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<NrIceStunAddr>& aStunAddrs) override {}
|
||||
|
||||
@ -2284,9 +2274,9 @@ diff -up firefox-128.2.0/media/webrtc/signaling/gtest/mediapipeline_unittest.cpp
|
||||
|
||||
void RemoveTransportsExcept(
|
||||
const std::set<std::string>& 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<PMediaTransportParent>&& 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
|
||||
Loading…
Reference in New Issue
Block a user