|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
diff -up firefox-83.0/browser/actors/WebRTCParent.jsm.pw6 firefox-83.0/browser/actors/WebRTCParent.jsm
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
--- firefox-83.0/browser/actors/WebRTCParent.jsm.pw6 2020-11-12 19:04:30.000000000 +0100
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+++ firefox-83.0/browser/actors/WebRTCParent.jsm 2020-11-25 10:28:32.492865982 +0100
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
@@ -45,6 +45,9 @@ XPCOMUtils.defineLazyServiceGetter(
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
"nsIOSPermissionRequest"
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
);
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+const PIPEWIRE_PORTAL_NAME = "####_PIPEWIRE_PORTAL_####";
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+const PIPEWIRE_ID = 0xaffffff;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
class WebRTCParent extends JSWindowActorParent {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
didDestroy() {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
webrtcUI.forgetStreamsFromBrowserContext(this.browsingContext);
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
@@ -753,6 +756,8 @@ function prompt(aActor, aBrowser, aReque
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
);
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
menupopup.appendChild(doc.createXULElement("menuseparator"));
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ let isPipeWire = false;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
// Build the list of 'devices'.
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
let monitorIndex = 1;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
for (let i = 0; i < devices.length; ++i) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
@@ -774,6 +779,29 @@ function prompt(aActor, aBrowser, aReque
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
} else {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
name = device.name;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ // When we share content by PipeWire add only one item to the device
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ // list. When it's selected PipeWire portal dialog is opened and
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ // user confirms actual window/screen sharing there.
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ // Don't mark it as scary as there's an extra confirmation step by
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ // PipeWire portal dialog.
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ if (name == PIPEWIRE_PORTAL_NAME && device.id == PIPEWIRE_ID) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ isPipeWire = true;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ let name;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ try {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ name = stringBundle.getString("getUserMedia.sharePipeWirePortal.label");
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ } catch (err) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ name = "Use operating system settings"
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ let item = addDeviceToList(
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ menupopup,
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ name,
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ i,
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ type
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ );
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ item.deviceId = device.id;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ item.mediaSource = type;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ break;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
if (type == "application") {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
// The application names returned by the platform are of the form:
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
// <window count>\x1e<application name>
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
@@ -888,39 +916,41 @@ function prompt(aActor, aBrowser, aReque
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
perms.EXPIRE_SESSION
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
);
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- video.deviceId = deviceId;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- let constraints = {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- video: { mediaSource: type, deviceId: { exact: deviceId } },
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- };
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- chromeWin.navigator.mediaDevices.getUserMedia(constraints).then(
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- stream => {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- if (video.deviceId != deviceId) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- // The user has selected a different device or closed the panel
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- // before getUserMedia finished.
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- stream.getTracks().forEach(t => t.stop());
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- return;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- }
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- video.srcObject = stream;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- video.stream = stream;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- doc.getElementById("webRTC-preview").hidden = false;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- video.onloadedmetadata = function(e) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- video.play();
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- };
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- },
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- err => {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- if (
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- err.name == "OverconstrainedError" &&
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- err.constraint == "deviceId"
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- ) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- // Window has disappeared since enumeration, which can happen.
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- // No preview for you.
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- return;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ if (!isPipeWire) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ video.deviceId = deviceId;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ let constraints = {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ video: { mediaSource: type, deviceId: { exact: deviceId } },
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ };
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ chromeWin.navigator.mediaDevices.getUserMedia(constraints).then(
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ stream => {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ if (video.deviceId != deviceId) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ // The user has selected a different device or closed the panel
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ // before getUserMedia finished.
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ stream.getTracks().forEach(t => t.stop());
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ return;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ video.srcObject = stream;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ video.stream = stream;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ doc.getElementById("webRTC-preview").hidden = false;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ video.onloadedmetadata = function(e) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ video.play();
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ };
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ },
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ err => {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ if (
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ err.name == "OverconstrainedError" &&
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ err.constraint == "deviceId"
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ ) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ // Window has disappeared since enumeration, which can happen.
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ // No preview for you.
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ return;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ Cu.reportError(
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ `error in preview: ${err.message} ${err.constraint}`
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ );
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
}
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- Cu.reportError(
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- `error in preview: ${err.message} ${err.constraint}`
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- );
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- }
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
- );
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ );
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
};
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
menupopup.addEventListener("command", menupopup._commandEventListener);
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
}
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
diff -up firefox-83.0/browser/locales/en-US/chrome/browser/browser.properties.pw6 firefox-83.0/browser/locales/en-US/chrome/browser/browser.properties
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
--- firefox-83.0/browser/locales/en-US/chrome/browser/browser.properties.pw6 2020-11-12 19:04:30.000000000 +0100
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+++ firefox-83.0/browser/locales/en-US/chrome/browser/browser.properties 2020-11-25 09:24:26.378857626 +0100
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
@@ -764,6 +764,7 @@ getUserMedia.selectWindowOrScreen.label=
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
getUserMedia.selectWindowOrScreen.accesskey=W
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
getUserMedia.pickWindowOrScreen.label = Select Window or Screen
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
getUserMedia.shareEntireScreen.label = Entire screen
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+getUserMedia.sharePipeWirePortal.label = Use operating system settings
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
# LOCALIZATION NOTE (getUserMedia.shareMonitor.label):
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
# %S is screen number (digits 1, 2, etc)
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
# Example: Screen 1, Screen 2,..
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
diff -up firefox-83.0/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc.pw6 firefox-83.0/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
--- firefox-83.0/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc.pw6 2020-11-25 09:24:26.358857788 +0100
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
+++ firefox-83.0/third_party/libwebrtc/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc 2020-11-25 09:24:26.378857626 +0100
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
e36bb4e |
@@ -879,17 +879,17 @@ void BaseCapturerPipeWire::CaptureFrame(
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
callback_->OnCaptureResult(Result::SUCCESS, std::move(result));
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+#define PIPEWIRE_ID 0xaffffff
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+#define PIPEWIRE_NAME "####_PIPEWIRE_PORTAL_####"
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
bool BaseCapturerPipeWire::GetSourceList(SourceList* sources) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
- RTC_DCHECK(sources->size() == 0);
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
- // List of available screens is already presented by the xdg-desktop-portal.
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
- // But we have to add an empty source as the code expects it.
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
- sources->push_back({0});
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ sources->push_back({PIPEWIRE_ID, 0, PIPEWIRE_NAME});
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
return true;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
bool BaseCapturerPipeWire::SelectSource(SourceId id) {
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
// Screen selection is handled by the xdg-desktop-portal.
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
- return true;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
+ return id == PIPEWIRE_ID;
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
|
|
![](https://seccdn.libravatar.org/avatar/7ef8adee4aad4a9c36b8af537200b83c3e67e02079a3087b786c7a643fce3830?s=16&d=retro) |
d675653 |
// static
|