diff --git a/ext/src/global.d.ts b/ext/src/global.d.ts index 540b4c1..93b2d16 100644 --- a/ext/src/global.d.ts +++ b/ext/src/global.d.ts @@ -29,13 +29,17 @@ declare interface HTMLCanvasElement { } declare interface MediaTrackConstraints { - mediaSource: "screen" | "window"; + cursor: "always" | "motion" | "never"; } declare interface RTCPeerConnection { addStream (mediaStream: MediaStream): void; } +declare interface MediaDevices { + getDisplayMedia(constraints: MediaStreamConstraints): Promise; +} + interface CloneIntoOptions { cloneFunctions?: boolean; diff --git a/ext/src/main.ts b/ext/src/main.ts index 6e0c99a..edf79cb 100755 --- a/ext/src/main.ts +++ b/ext/src/main.ts @@ -646,39 +646,8 @@ async function onConnectShim (port: browser.runtime.Port) { : ReceiverSelectorType.Popup); - // Media type for initial opener sender - let openerMediaType: ReceiverSelectorMediaType; - function onReceiverSelectorSelected ( ev: ReceiverSelectorSelectedEvent) { - - /** - * If the media type returned from the selector has been - * changed, we need to cancel the current sender and switch - * it out for the right one. - * - * TODO: Seamlessly connect selector to the new sender - */ - if (ev.detail.mediaType !== openerMediaType) { - onReceiverSelectorCancelled(); - - switch (ev.detail.mediaType) { - case ReceiverSelectorMediaType.App: { - // TODO: Keep track of page apps - break; - } - - case ReceiverSelectorMediaType.Screen: - case ReceiverSelectorMediaType.Tab: { - loadMirrorCastSender(tabId, frameId, ev.detail.mediaType); - break; - } - } - - return; - } - - port.postMessage({ subject: "shim:/selectReceiverEnd" , data: ev.detail @@ -781,10 +750,9 @@ async function onConnectShim (port: browser.runtime.Port) { } case "main:/selectReceiverBegin": { - openerMediaType = message.data.defaultMediaType; receiverSelector.open( Array.from(statusBridgeReceivers.values()) - , openerMediaType); + , message.data.defaultMediaType); break; } diff --git a/ext/src/senders/mirroringCast.ts b/ext/src/senders/mirroringCast.ts index ee1b4fb..4b07476 100644 --- a/ext/src/senders/mirroringCast.ts +++ b/ext/src/senders/mirroringCast.ts @@ -119,8 +119,9 @@ async function onRequestSessionSuccess ( case ReceiverSelectorMediaType.Screen: { - const stream = await navigator.mediaDevices.getUserMedia({ - video: { mediaSource: "screen" } + const stream = await navigator.mediaDevices.getDisplayMedia({ + video: { cursor: "motion" } + , audio: false }); peerConnection.addStream(stream); diff --git a/ext/src/shim/cast/index.ts b/ext/src/shim/cast/index.ts index ac5fc5c..5e619e3 100755 --- a/ext/src/shim/cast/index.ts +++ b/ext/src/shim/cast/index.ts @@ -262,7 +262,7 @@ onMessage(async message => { sessionSuccessCallback( session - , message.data.selectedMedia); + , message.data.mediaType); })); }