bigbluebutton-Github/bbb-client-check/resources/lib/api-bridge.js
2016-12-21 15:27:33 +00:00

366 lines
12 KiB
JavaScript

{
var BBBClientCheck = {};
var BBB = {};
var userAgent;
var userMicMedia;
var currentSession;
function getSwfObj() {
return swfobject.getObjectById('BBBClientCheck');
}
BBBClientCheck.userAgent = function(){
var userAgentInfo = '';
var swfObj = getSwfObj();
userAgentInfo = navigator.userAgent;
swfObj.userAgent(userAgentInfo);
}
BBBClientCheck.browser = function() {
var nVer = navigator.appVersion;
var nAgt = navigator.userAgent;
var browserInfo, nameOffset, verOffset, ix;
var browser = navigator.appName;
var version = '' + parseFloat(navigator.appVersion);
var swfObj = getSwfObj();
// taken from http://stackoverflow.com/a/18706818/1729349
// Opera
if ((verOffset = nAgt.indexOf('Opera')) != -1) {
browser = 'Opera';
version = nAgt.substring(verOffset + 6);
if ((verOffset = nAgt.indexOf('Version')) != -1) {
version = nAgt.substring(verOffset + 8);
}
}
// MSIE
else if ((verOffset = nAgt.indexOf('MSIE')) != -1) {
browser = 'Microsoft Internet Explorer';
version = nAgt.substring(verOffset + 5);
}
//IE 11 no longer identifies itself as MS IE, so trap it
//http://stackoverflow.com/questions/17907445/how-to-detect-ie11
else if ((browser == 'Netscape') && (nAgt.indexOf('Trident/') != -1)) {
browser = 'Microsoft Internet Explorer';
version = nAgt.substring(verOffset + 5);
if ((verOffset = nAgt.indexOf('rv:')) != -1) {
version = nAgt.substring(verOffset + 3);
}
}
// Chrome
else if ((verOffset = nAgt.indexOf('Chrome')) != -1) {
browser = 'Chrome';
version = nAgt.substring(verOffset + 7);
}
// Safari
else if ((verOffset = nAgt.indexOf('Safari')) != -1) {
browser = 'Safari';
version = nAgt.substring(verOffset + 7);
if ((verOffset = nAgt.indexOf('Version')) != -1) {
version = nAgt.substring(verOffset + 8);
}
// Chrome on iPad identifies itself as Safari. Actual results do not match what Google claims
// at: https://developers.google.com/chrome/mobile/docs/user-agent?hl=ja
// No mention of chrome in the user agent string. However it does mention CriOS, which presumably
// can be keyed on to detect it.
if (nAgt.indexOf('CriOS') != -1) {
//Chrome on iPad spoofing Safari...correct it.
browser = 'Chrome';
//Don't believe there is a way to grab the accurate version number, so leaving that for now.
}
}
// Firefox
else if ((verOffset = nAgt.indexOf('Firefox')) != -1) {
browser = 'Firefox';
version = nAgt.substring(verOffset + 8);
}
// Other browsers
else if ((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))) {
browser = nAgt.substring(nameOffset, verOffset);
version = nAgt.substring(verOffset + 1);
if (browser.toLowerCase() == browser.toUpperCase()) {
browser = navigator.appName;
}
}
// trim the version string
if ((ix = version.indexOf(';')) != -1) version = version.substring(0, ix);
if ((ix = version.indexOf(' ')) != -1) version = version.substring(0, ix);
if ((ix = version.indexOf(')')) != -1) version = version.substring(0, ix);
var result = {
browser: browser,
version: version
};
swfObj.browser(result);
}
BBBClientCheck.screenSize = function(){
var screenSizeInfo = '';
var swfObj = getSwfObj();
if (screen.width !== undefined) {
width = (screen.width) ? screen.width : '';
height = (screen.height) ? screen.height : '';
screenSizeInfo += '' + width + " x " + height;
}
swfObj.screenSize(screenSizeInfo);
}
BBBClientCheck.flashVersion = function(){
var flashVersionInfo = '';
var swfObj = getSwfObj();
flashVersionInfo = swfobject.getFlashPlayerVersion();
if (flashVersionInfo.major > 0) {
flashVersionInfo = flashVersionInfo.major + '.' + flashVersionInfo.minor + ' r' + flashVersionInfo.release;
}
swfObj.flashVersion(flashVersionInfo);
}
BBBClientCheck.isPepperFlash = function(){
var isPepperFlashInfo = false;
var swfObj = getSwfObj();
var isPPAPI = false;
var type = 'application/x-shockwave-flash';
var mimeTypes = navigator.mimeTypes;
if (mimeTypes && mimeTypes[type] && mimeTypes[type].enabledPlugin && (mimeTypes[type].enabledPlugin.filename.match(/pepflashplayer|Pepper/gi))) {
isPepperFlashInfo = true;
}
swfObj.isPepperFlash(isPepperFlashInfo);
}
BBBClientCheck.cookieEnabled = function(){
var cookieEnabledInfo = '';
var swfObj = getSwfObj();
cookieEnabledInfo = navigator.cookieEnabled;
swfObj.cookieEnabled(cookieEnabledInfo);
}
BBBClientCheck.javaEnabled = function(){
var result = {
enabled: navigator.javaEnabled(),
version: [],
minimum: '1.7.0_51+',
appropriate: false
};
if (result.enabled) {
result.version = getJavaVersion();
result.appropriate = isJavaVersionAppropriateForDeskshare(result.minimum);
}
console.log(result);
var swfObj = getSwfObj();
swfObj.javaEnabled(result);
}
function getJavaVersion() {
return deployJava.getJREs();
}
function isJavaVersionAppropriateForDeskshare(required) {
return deployJava.versionCheck(required);
}
BBBClientCheck.language = function(){
var languageInfo = '';
var swfObj = getSwfObj();
languageInfo = navigator.language;
swfObj.language(languageInfo);
}
BBBClientCheck.isWebRTCSupported = function() {
var isWebRTCSupportedInfo = isWebRTCAvailable();
var swfObj = getSwfObj();
swfObj.isWebRTCSupported(isWebRTCSupportedInfo);
}
BBBClientCheck.webRTCEchoAndSocketTest = function() {
var audioContext = new (window.AudioContext || window.webkitAudioContext)();
var silentStream = audioContext.createMediaStreamDestination().stream;
userMicMedia = silentStream;
startWebRTCAudioTest();
}
function sendWebRTCEchoTestAnswer(success, errorcode) {
var swfObj = getSwfObj();
swfObj.webRTCEchoTest(success, errorcode);
webrtc_hangup(function() {
console.log("[BBBClientCheck] Handling webRTC hangup callback");
var userAgentTemp = userAgent;
userAgent = null;
userAgentTemp.stop();
});
}
BBB.getMyUserInfo = function(callback) {
var obj = {
myUserID: "12345",
myUsername: "bbbTestUser",
myAvatarURL: "undefined",
myRole: "undefined",
amIPresenter: "undefined",
dialNumber: "undefined",
voiceBridge: "",
customdata: "undefined"
}
callback(obj);
}
// webrtc test callbacks
BBB.webRTCEchoTestFailed = function(errorcode) {
console.log("[BBBClientCheck] Handling webRTCEchoTestFailed");
sendWebRTCEchoTestAnswer(false, errorcode);
}
BBB.webRTCEchoTestEnded = function() {
console.log("[BBBClientCheck] Handling webRTCEchoTestEnded");
}
BBB.webRTCEchoTestStarted = function() {
console.log("[BBBClientCheck] Handling webRTCEchoTestStarted");
sendWebRTCEchoTestAnswer(true, 'Connected');
}
BBB.webRTCEchoTestConnecting = function() {
console.log("[BBBClientCheck] Handling webRTCEchoTestConnecting");
}
BBB.webRTCEchoTestWaitingForICE = function() {
console.log("[BBBClientCheck] Handling webRTCEchoTestWaitingForICE");
}
BBB.webRTCEchoTestWebsocketSucceeded = function() {
console.log("[BBBClientCheck] Handling webRTCEchoTestWebsocketSucceeded");
var swfObj = getSwfObj();
swfObj.webRTCSocketTest(true, 'Connected');
}
BBB.webRTCEchoTestWebsocketFailed = function(errorcode) {
console.log("[BBBClientCheck] Handling webRTCEchoTestWebsocketFailed");
var swfObj = getSwfObj();
swfObj.webRTCSocketTest(false, errorcode);
}
// webrtc callbacks
BBB.webRTCConferenceCallFailed = function(errorcode) {
console.log("[BBBClientCheck] Handling webRTCConferenceCallFailed");
}
BBB.webRTCConferenceCallEnded = function() {
console.log("[BBBClientCheck] Handling webRTCConferenceCallEnded");
}
BBB.webRTCConferenceCallStarted = function() {
console.log("[BBBClientCheck] Handling webRTCConferenceCallStarted");
}
BBB.webRTCConferenceCallConnecting = function() {
console.log("[BBBClientCheck] Handling webRTCConferenceCallConnecting");
}
BBB.webRTCConferenceCallWaitingForICE = function() {
console.log("[BBBClientCheck] Handling webRTCConferenceCallWaitingForICE");
}
BBB.webRTCConferenceCallWebsocketSucceeded = function() {
console.log("[BBBClientCheck] Handling webRTCConferenceCallWebsocketSucceeded");
}
BBB.webRTCConferenceCallWebsocketFailed = function(errorcode) {
console.log("[BBBClientCheck] Handling webRTCConferenceCallWebsocketFailed");
}
BBB.webRTCMediaRequest = function() {
console.log("[BBBClientCheck] Handling webRTCMediaRequest");
}
BBB.webRTCMediaSuccess = function() {
console.log("[BBBClientCheck] Handling webRTCMediaSuccess");
}
BBB.webRTCMediaFail = function() {
console.log("[BBBClientCheck] Handling webRTCMediaFail");
}
BBB.webRTCCallStarted = function(inEchoTest) {
// var swfObj = swfobject.getObjectById("BigBlueButton");
// if (swfObj) {
// swfObj.webRTCCallStarted(inEchoTest);
// }
console.log("[BBBClientCheck] Handling webRTCCallStarted");
}
BBB.webRTCCallConnecting = function(inEchoTest) {
// var swfObj = swfobject.getObjectById("BigBlueButton");
// if (swfObj) {
// swfObj.webRTCCallConnecting(inEchoTest);
// }
console.log("[BBBClientCheck] Handling webRTCCallConnecting");
}
BBB.webRTCCallEnded = function(inEchoTest) {
// var swfObj = swfobject.getObjectById("BigBlueButton");
// if (swfObj) {
// swfObj.webRTCCallEnded(inEchoTest);
// }
console.log("[BBBClientCheck] Handling webRTCCallEnded");
}
BBB.webRTCCallFailed = function(inEchoTest, errorcode, cause) {
// var swfObj = swfobject.getObjectById("BigBlueButton");
// if (swfObj) {
// swfObj.webRTCCallFailed(inEchoTest, errorcode, cause);
// }
console.log("[BBBClientCheck] Handling webRTCCallFailed");
}
BBB.webRTCCallWaitingForICE = function(inEchoTest) {
// var swfObj = swfobject.getObjectById("BigBlueButton");
// if (swfObj) {
// swfObj.webRTCCallWaitingForICE(inEchoTest);
// }
console.log("[BBBClientCheck] Handling webRTCCallWaitingForICE");
}
BBB.webRTCCallTransferring = function(inEchoTest) {
// var swfObj = swfobject.getObjectById("BigBlueButton");
// if (swfObj) {
// swfObj.webRTCCallTransferring(inEchoTest);
// }
console.log("[BBBClientCheck] Handling webRTCCallTransferring");
}
BBB.webRTCCallProgressCallback = function(progress) {
// var swfObj = swfobject.getObjectById("BigBlueButton");
// if (swfObj) {
// swfObj.webRTCCallProgressCallback(progress);
// }
console.log("[BBBClientCheck] Handling webRTCCallProgressCallback");
}
}