2017-04-22 02:22:30 +08:00
|
|
|
/**
|
|
|
|
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
|
|
|
|
*
|
|
|
|
* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below).
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify it under the
|
|
|
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
|
|
|
* Foundation; either version 3.0 of the License, or (at your option) any later
|
|
|
|
* version.
|
|
|
|
*
|
|
|
|
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
|
|
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
|
|
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public License along
|
|
|
|
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2017-05-04 00:40:21 +08:00
|
|
|
function getSourceId(sender, callback, request) {
|
2017-05-02 23:01:05 +08:00
|
|
|
var presetSources = ["screen", "window", "tab"];
|
2017-05-04 00:40:21 +08:00
|
|
|
var sourcesToUse = request.sources || presetSources;
|
|
|
|
|
2017-04-21 01:36:52 +08:00
|
|
|
var tab = sender.tab;
|
|
|
|
|
|
|
|
// https://bugs.chromium.org/p/chromium/issues/detail?id=425344
|
|
|
|
tab.url = sender.url;
|
|
|
|
|
|
|
|
// Gets chrome media stream token and returns it in the response.
|
|
|
|
chrome.desktopCapture.chooseDesktopMedia(
|
|
|
|
sourcesToUse, tab,
|
|
|
|
function (streamId) {
|
|
|
|
if (!streamId || !streamId.length) {
|
|
|
|
callback({ error: 'permissionDenied' });
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
callback({ streamId: streamId });
|
|
|
|
});
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
chrome.runtime.onMessageExternal.addListener(
|
|
|
|
function(request, sender, callback) {
|
|
|
|
if(request.getVersion) {
|
|
|
|
callback({ version: chrome.runtime.getManifest().version });
|
|
|
|
return false;
|
|
|
|
} else if(request.getStream) {
|
2017-05-04 00:40:21 +08:00
|
|
|
getSourceId(sender, callback, request);
|
2017-04-21 01:36:52 +08:00
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
callback({ error: 'malformed request', request });
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|