42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
8 years ago
|
'use strict';
|
||
|
|
||
|
var dataSources = ['screen', 'window'];
|
||
|
var desktopMediaRequestId = '';
|
||
|
|
||
|
chrome.runtime.onConnect.addListener(function(port) {
|
||
|
port.onMessage.addListener(function(msg) {
|
||
|
if (msg.type === 'SS_UI_REQUEST') {
|
||
|
requestScreenSharing(port, msg);
|
||
|
}
|
||
|
|
||
|
if (msg.type === 'SS_UI_CANCEL') {
|
||
|
cancelScreenSharing(msg);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
function requestScreenSharing(port, msg) {
|
||
|
// https://developer.chrome.com/extensions/desktopCapture
|
||
|
// params:
|
||
|
// - 'dataSources' Set of sources that should be shown to the user.
|
||
|
// - 'targetTab' Tab for which the stream is created.
|
||
|
// - 'streamId' String that can be passed to getUserMedia() API
|
||
|
desktopMediaRequestId =
|
||
|
chrome.desktopCapture.chooseDesktopMedia(dataSources, port.sender.tab,
|
||
|
function(streamId) {
|
||
|
if (streamId) {
|
||
|
msg.type = 'SS_DIALOG_SUCCESS';
|
||
|
msg.streamId = streamId;
|
||
|
} else {
|
||
|
msg.type = 'SS_DIALOG_CANCEL';
|
||
|
}
|
||
|
port.postMessage(msg);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function cancelScreenSharing() {
|
||
|
if (desktopMediaRequestId) {
|
||
|
chrome.desktopCapture.cancelChooseDesktopMedia(desktopMediaRequestId);
|
||
|
}
|
||
|
}
|