Import from CS git
This commit is contained in:
parent
8087b2f69e
commit
95e47c458e
@ -1,8 +1,8 @@
|
||||
5012b69e54cbebe3b5e74011dacf3a2097f49921 SOURCES/cbindgen-vendor.tar.xz
|
||||
a99f3085eeab27ce1e53dc17f0a3a4d8b113f7b1 SOURCES/firefox-128.14.0esr.processed-source.tar.xz
|
||||
a6e9221f524daf1c277987207ff1f700a5c9ac9b SOURCES/firefox-langpacks-128.14.0esr-20250815.tar.xz
|
||||
bc4adac8f38f5103d8f88564a1545063dd8d6402 SOURCES/cbindgen-vendor.tar.xz
|
||||
eee5a76bde5a92cb6f7999c5fc839a4bb83ca33c SOURCES/firefox-140.3.0esr.processed-source.tar.xz
|
||||
8ffabd508d2b0631eab8cd49c1c26902f19bf71a SOURCES/firefox-langpacks-140.3.0esr-20250909.tar.xz
|
||||
2d8a6b2b30d5496735f49ffe8c8a7ede3a78a5ca SOURCES/mochitest-python.tar.gz
|
||||
d744f92e874688cc4b5376477dfdd639a97a6cd4 SOURCES/nspr-4.35.0-1.el8_1.src.rpm
|
||||
f466d7213e85773e002c48897524eaf909480046 SOURCES/nss-3.101.0-7.el8_2.src.rpm
|
||||
0413d22a58ba1bba99acec9c3c2a4db56a4100c7 SOURCES/nss-3.101.0-7.el9_2.src.rpm
|
||||
0d0ddbd2a73340b3cbc977997f57222946b1e775 SOURCES/nspr-4.36.0-2.el8_2.src.rpm
|
||||
fd3879b176634d66f8ef64d18fdaeec98e140c23 SOURCES/nss-3.112.0-1.el9_4.src.rpm
|
||||
c3f0aaef37972107442e2796efad71be3a98ce3c SOURCES/nss-3.112.0-4.el8_2.src.rpm
|
||||
0332862626d2148648ff749078c223dbd859d901 SOURCES/wasi-sdk-20.tar.gz
|
||||
|
||||
10
.gitignore
vendored
10
.gitignore
vendored
@ -1,8 +1,8 @@
|
||||
SOURCES/cbindgen-vendor.tar.xz
|
||||
SOURCES/firefox-128.14.0esr.processed-source.tar.xz
|
||||
SOURCES/firefox-langpacks-128.14.0esr-20250815.tar.xz
|
||||
SOURCES/firefox-140.3.0esr.processed-source.tar.xz
|
||||
SOURCES/firefox-langpacks-140.3.0esr-20250909.tar.xz
|
||||
SOURCES/mochitest-python.tar.gz
|
||||
SOURCES/nspr-4.35.0-1.el8_1.src.rpm
|
||||
SOURCES/nss-3.101.0-7.el8_2.src.rpm
|
||||
SOURCES/nss-3.101.0-7.el9_2.src.rpm
|
||||
SOURCES/nspr-4.36.0-2.el8_2.src.rpm
|
||||
SOURCES/nss-3.112.0-1.el9_4.src.rpm
|
||||
SOURCES/nss-3.112.0-4.el8_2.src.rpm
|
||||
SOURCES/wasi-sdk-20.tar.gz
|
||||
|
||||
@ -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
SOURCES/D245908.clear-lang-bundles.diff
Normal file
16
SOURCES/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
SOURCES/D249071.restoreWinState.diff
Normal file
53
SOURCES/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
SOURCES/av1-else-condition-add.patch
Normal file
14
SOURCES/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
SOURCES/build-system-nss.patch
Normal file
20
SOURCES/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
SOURCES/firefox-fix-build-with-system-pipewire.patch
Normal file
12
SOURCES/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
@ -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",
|
||||
|
||||
@ -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
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user