blob: 6a5b37cee07817729a3981a0ef3fe4a2ff4562f1 [file] [edit]
'use strict';
var videoElement = document.getElementById('video');
var extensionInstalled = false;
document.getElementById('start').addEventListener('click', function() {
// send screen-sharer request to content-script
if (!extensionInstalled) {
var message = 'Please install the extension:\n' +
'1. Go to chrome://extensions\n' +
'2. Check: "Enable Developer mode"\n' +
'3. Click: "Load the unpacked extension..."\n' +
'4. Choose "extension" folder from the repository\n' +
'5. Reload this page';
alert(message);
}
window.postMessage({type: 'SS_UI_REQUEST', text: 'start'}, '*');
});
// listen for messages from the content-script
window.addEventListener('message', function(event) {
if (event.origin !== window.location.origin) {
return;
}
// content-script will send a 'SS_PING' msg if extension is installed
if (event.data.type && (event.data.type === 'SS_PING')) {
extensionInstalled = true;
}
// user chose a stream
if (event.data.type && (event.data.type === 'SS_DIALOG_SUCCESS')) {
startScreenStreamFrom(event.data.streamId);
}
// user clicked on 'cancel' in choose media dialog
if (event.data.type && (event.data.type === 'SS_DIALOG_CANCEL')) {
console.log('User cancelled!');
}
});
function handleSuccess(screenStream) {
videoElement.src = URL.createObjectURL(screenStream);
videoElement.play();
}
function handleError(error) {
console.log('getUserMedia() failed: ', error);
}
function startScreenStreamFrom(streamId) {
var constraints = {
audio: false,
video: {
mandatory: {
chromeMediaSource: 'desktop',
chromeMediaSourceId: streamId,
maxWidth: window.screen.width,
maxHeight: window.screen.height
}
}
};
navigator.mediaDevices.getUserMedia(constraints).
then(handleSuccess).catch(handleError);
}