Gets rid fo RTCBrowserType usages.
This commit is contained in:
parent
522ca64bce
commit
7ec6e9ae29
|
@ -1,171 +0,0 @@
|
||||||
|
|
||||||
var currentBrowser;
|
|
||||||
|
|
||||||
var browserVersion;
|
|
||||||
|
|
||||||
var isAndroid;
|
|
||||||
|
|
||||||
var RTCBrowserType = {
|
|
||||||
|
|
||||||
RTC_BROWSER_CHROME: "rtc_browser.chrome",
|
|
||||||
|
|
||||||
RTC_BROWSER_OPERA: "rtc_browser.opera",
|
|
||||||
|
|
||||||
RTC_BROWSER_FIREFOX: "rtc_browser.firefox",
|
|
||||||
|
|
||||||
RTC_BROWSER_IEXPLORER: "rtc_browser.iexplorer",
|
|
||||||
|
|
||||||
RTC_BROWSER_SAFARI: "rtc_browser.safari",
|
|
||||||
|
|
||||||
getBrowserType: function () {
|
|
||||||
return currentBrowser;
|
|
||||||
},
|
|
||||||
|
|
||||||
isChrome: function () {
|
|
||||||
return currentBrowser === RTCBrowserType.RTC_BROWSER_CHROME;
|
|
||||||
},
|
|
||||||
|
|
||||||
isOpera: function () {
|
|
||||||
return currentBrowser === RTCBrowserType.RTC_BROWSER_OPERA;
|
|
||||||
},
|
|
||||||
isFirefox: function () {
|
|
||||||
return currentBrowser === RTCBrowserType.RTC_BROWSER_FIREFOX;
|
|
||||||
},
|
|
||||||
|
|
||||||
isIExplorer: function () {
|
|
||||||
return currentBrowser === RTCBrowserType.RTC_BROWSER_IEXPLORER;
|
|
||||||
},
|
|
||||||
|
|
||||||
isSafari: function () {
|
|
||||||
return currentBrowser === RTCBrowserType.RTC_BROWSER_SAFARI;
|
|
||||||
},
|
|
||||||
isTemasysPluginUsed: function () {
|
|
||||||
return RTCBrowserType.isIExplorer() || RTCBrowserType.isSafari();
|
|
||||||
},
|
|
||||||
getFirefoxVersion: function () {
|
|
||||||
return RTCBrowserType.isFirefox() ? browserVersion : null;
|
|
||||||
},
|
|
||||||
|
|
||||||
getChromeVersion: function () {
|
|
||||||
return RTCBrowserType.isChrome() ? browserVersion : null;
|
|
||||||
},
|
|
||||||
|
|
||||||
usesPlanB: function() {
|
|
||||||
return RTCBrowserType.isChrome() || RTCBrowserType.isOpera() ||
|
|
||||||
RTCBrowserType.isTemasysPluginUsed();
|
|
||||||
},
|
|
||||||
|
|
||||||
usesUnifiedPlan: function() {
|
|
||||||
return RTCBrowserType.isFirefox();
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Whether the browser is running on an android device.
|
|
||||||
*/
|
|
||||||
isAndroid: function() {
|
|
||||||
return isAndroid;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add version getters for other browsers when needed
|
|
||||||
};
|
|
||||||
|
|
||||||
// detectOpera() must be called before detectChrome() !!!
|
|
||||||
// otherwise Opera wil be detected as Chrome
|
|
||||||
function detectChrome() {
|
|
||||||
if (navigator.webkitGetUserMedia) {
|
|
||||||
currentBrowser = RTCBrowserType.RTC_BROWSER_CHROME;
|
|
||||||
var userAgent = navigator.userAgent.toLowerCase();
|
|
||||||
// We can assume that user agent is chrome, because it's
|
|
||||||
// enforced when 'ext' streaming method is set
|
|
||||||
var ver = parseInt(userAgent.match(/chrome\/(\d+)\./)[1], 10);
|
|
||||||
console.log("This appears to be Chrome, ver: " + ver);
|
|
||||||
return ver;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function detectOpera() {
|
|
||||||
var userAgent = navigator.userAgent;
|
|
||||||
if (userAgent.match(/Opera|OPR/)) {
|
|
||||||
currentBrowser = RTCBrowserType.RTC_BROWSER_OPERA;
|
|
||||||
var version = userAgent.match(/(Opera|OPR) ?\/?(\d+)\.?/)[2];
|
|
||||||
console.info("This appears to be Opera, ver: " + version);
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function detectFirefox() {
|
|
||||||
if (navigator.mozGetUserMedia) {
|
|
||||||
currentBrowser = RTCBrowserType.RTC_BROWSER_FIREFOX;
|
|
||||||
var version = parseInt(
|
|
||||||
navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1], 10);
|
|
||||||
console.log('This appears to be Firefox, ver: ' + version);
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function detectSafari() {
|
|
||||||
if ((/^((?!chrome).)*safari/i.test(navigator.userAgent))) {
|
|
||||||
currentBrowser = RTCBrowserType.RTC_BROWSER_SAFARI;
|
|
||||||
console.info("This appears to be Safari");
|
|
||||||
// FIXME detect Safari version when needed
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function detectIE() {
|
|
||||||
var version;
|
|
||||||
var ua = window.navigator.userAgent;
|
|
||||||
|
|
||||||
var msie = ua.indexOf('MSIE ');
|
|
||||||
if (msie > 0) {
|
|
||||||
// IE 10 or older => return version number
|
|
||||||
version = parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
var trident = ua.indexOf('Trident/');
|
|
||||||
if (!version && trident > 0) {
|
|
||||||
// IE 11 => return version number
|
|
||||||
var rv = ua.indexOf('rv:');
|
|
||||||
version = parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
var edge = ua.indexOf('Edge/');
|
|
||||||
if (!version && edge > 0) {
|
|
||||||
// IE 12 => return version number
|
|
||||||
version = parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (version) {
|
|
||||||
currentBrowser = RTCBrowserType.RTC_BROWSER_IEXPLORER;
|
|
||||||
console.info("This appears to be IExplorer, ver: " + version);
|
|
||||||
}
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
|
|
||||||
function detectBrowser() {
|
|
||||||
var version;
|
|
||||||
var detectors = [
|
|
||||||
detectOpera,
|
|
||||||
detectChrome,
|
|
||||||
detectFirefox,
|
|
||||||
detectIE,
|
|
||||||
detectSafari
|
|
||||||
];
|
|
||||||
// Try all browser detectors
|
|
||||||
for (var i = 0; i < detectors.length; i++) {
|
|
||||||
version = detectors[i]();
|
|
||||||
if (version)
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
console.error("Failed to detect browser type");
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
browserVersion = detectBrowser();
|
|
||||||
isAndroid = navigator.userAgent.indexOf('Android') != -1;
|
|
||||||
|
|
||||||
module.exports = RTCBrowserType;
|
|
|
@ -8,8 +8,6 @@ import BottomToolbar from '../toolbars/BottomToolbar';
|
||||||
import Avatar from "../avatar/Avatar";
|
import Avatar from "../avatar/Avatar";
|
||||||
import {createDeferred} from '../../util/helpers';
|
import {createDeferred} from '../../util/helpers';
|
||||||
|
|
||||||
const RTCBrowserType = require("../../RTC/RTCBrowserType");
|
|
||||||
|
|
||||||
const avatarSize = interfaceConfig.DOMINANT_SPEAKER_AVATAR_SIZE;
|
const avatarSize = interfaceConfig.DOMINANT_SPEAKER_AVATAR_SIZE;
|
||||||
const FADE_DURATION_MS = 300;
|
const FADE_DURATION_MS = 300;
|
||||||
|
|
||||||
|
@ -175,10 +173,6 @@ class VideoContainer extends LargeContainer {
|
||||||
this.$avatar = $('#dominantSpeaker');
|
this.$avatar = $('#dominantSpeaker');
|
||||||
this.$wrapper = $('#largeVideoWrapper');
|
this.$wrapper = $('#largeVideoWrapper');
|
||||||
|
|
||||||
if (!RTCBrowserType.isIExplorer()) {
|
|
||||||
this.$video.volume = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// This does not work with Temasys plugin - has to be a property to be
|
// This does not work with Temasys plugin - has to be a property to be
|
||||||
// copied between new <object> elements
|
// copied between new <object> elements
|
||||||
//this.$video.on('play', onPlay);
|
//this.$video.on('play', onPlay);
|
||||||
|
|
|
@ -5,8 +5,8 @@ import UIEvents from "../../../service/UI/UIEvents";
|
||||||
import SmallVideo from "./SmallVideo";
|
import SmallVideo from "./SmallVideo";
|
||||||
|
|
||||||
var LargeVideo = require("./LargeVideo");
|
var LargeVideo = require("./LargeVideo");
|
||||||
var RTCBrowserType = require("../../RTC/RTCBrowserType");
|
|
||||||
|
|
||||||
|
const RTCUIUtils = JitsiMeetJS.util.RTCUIHelper;
|
||||||
const TrackEvents = JitsiMeetJS.events.track;
|
const TrackEvents = JitsiMeetJS.events.track;
|
||||||
|
|
||||||
function LocalVideo(VideoLayout, emitter) {
|
function LocalVideo(VideoLayout, emitter) {
|
||||||
|
@ -166,10 +166,9 @@ LocalVideo.prototype.changeVideo = function (stream) {
|
||||||
this.flipX = stream.videoType != "desktop";
|
this.flipX = stream.videoType != "desktop";
|
||||||
let localVideo = document.createElement('video');
|
let localVideo = document.createElement('video');
|
||||||
localVideo.id = 'localVideo_' + stream.getId();
|
localVideo.id = 'localVideo_' + stream.getId();
|
||||||
if (!RTCBrowserType.isIExplorer()) {
|
|
||||||
localVideo.autoplay = true;
|
RTCUIUtils.setAutoPlay(localVideo, true);
|
||||||
localVideo.volume = 0; // is it required if audio is separated ?
|
RTCUIUtils.setVolume(localVideo, 0);
|
||||||
}
|
|
||||||
|
|
||||||
var localVideoContainer = document.getElementById('localVideoWrapper');
|
var localVideoContainer = document.getElementById('localVideoWrapper');
|
||||||
// Put the new video always in front
|
// Put the new video always in front
|
||||||
|
|
|
@ -7,8 +7,6 @@ import AudioLevels from "../audio_levels/AudioLevels";
|
||||||
import UIUtils from "../util/UIUtil";
|
import UIUtils from "../util/UIUtil";
|
||||||
import UIEvents from '../../../service/UI/UIEvents';
|
import UIEvents from '../../../service/UI/UIEvents';
|
||||||
|
|
||||||
var RTCBrowserType = require("../../RTC/RTCBrowserType");
|
|
||||||
|
|
||||||
function RemoteVideo(id, VideoLayout, emitter) {
|
function RemoteVideo(id, VideoLayout, emitter) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.emitter = emitter;
|
this.emitter = emitter;
|
||||||
|
@ -251,9 +249,9 @@ RemoteVideo.prototype.addRemoteStreamElement = function (stream) {
|
||||||
|
|
||||||
// If we hide element when Temasys plugin is used then
|
// If we hide element when Temasys plugin is used then
|
||||||
// we'll never receive 'onplay' event and other logic won't work as expected
|
// we'll never receive 'onplay' event and other logic won't work as expected
|
||||||
if (!RTCBrowserType.isTemasysPluginUsed()) {
|
// NOTE: hiding will not have effect when Temasys plugin is in use, as
|
||||||
$(streamElement).hide();
|
// calling attach will show it back
|
||||||
}
|
$(streamElement).hide();
|
||||||
|
|
||||||
// If the container is currently visible we attach the stream to the element.
|
// If the container is currently visible we attach the stream to the element.
|
||||||
if (!isVideo || (this.container.offsetParent !== null && isVideo)) {
|
if (!isVideo || (this.container.offsetParent !== null && isVideo)) {
|
||||||
|
|
|
@ -3,8 +3,6 @@
|
||||||
import Avatar from "../avatar/Avatar";
|
import Avatar from "../avatar/Avatar";
|
||||||
import UIUtil from "../util/UIUtil";
|
import UIUtil from "../util/UIUtil";
|
||||||
|
|
||||||
var RTCBrowserType = require("../../RTC/RTCBrowserType");
|
|
||||||
|
|
||||||
const RTCUIHelper = JitsiMeetJS.util.RTCUIHelper;
|
const RTCUIHelper = JitsiMeetJS.util.RTCUIHelper;
|
||||||
|
|
||||||
function SmallVideo() {
|
function SmallVideo() {
|
||||||
|
@ -129,9 +127,7 @@ SmallVideo.createStreamElement = function (stream) {
|
||||||
element.setAttribute("muted", "true");
|
element.setAttribute("muted", "true");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!RTCBrowserType.isIExplorer()) {
|
RTCUIHelper.setAutoPlay(element, true);
|
||||||
element.autoplay = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
element.id = (isVideo ? 'remoteVideo_' : 'remoteAudio_') + stream.getId();
|
element.id = (isVideo ? 'remoteVideo_' : 'remoteAudio_') + stream.getId();
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ import LargeVideoManager, {VideoContainerType} from "./LargeVideo";
|
||||||
import {PreziContainerType} from '../prezi/Prezi';
|
import {PreziContainerType} from '../prezi/Prezi';
|
||||||
import LocalVideo from "./LocalVideo";
|
import LocalVideo from "./LocalVideo";
|
||||||
|
|
||||||
var RTCBrowserType = require('../../RTC/RTCBrowserType');
|
const RTCUIUtil = JitsiMeetJS.util.RTCUIHelper;
|
||||||
|
|
||||||
var remoteVideos = {};
|
var remoteVideos = {};
|
||||||
var remoteVideoTypes = {};
|
var remoteVideoTypes = {};
|
||||||
|
@ -127,22 +127,18 @@ var VideoLayout = {
|
||||||
let localAudio = document.getElementById('localAudio');
|
let localAudio = document.getElementById('localAudio');
|
||||||
localAudio = stream.attach(localAudio);
|
localAudio = stream.attach(localAudio);
|
||||||
|
|
||||||
//return; // FIXME maybe move this into the library?
|
|
||||||
// Writing volume not allowed in IE
|
|
||||||
if (!RTCBrowserType.isIExplorer()) {
|
|
||||||
localAudio.autoplay = true;
|
|
||||||
localAudio.volume = 0;
|
|
||||||
}
|
|
||||||
// Now when Temasys plugin is converting also <audio> elements to
|
// Now when Temasys plugin is converting also <audio> elements to
|
||||||
// plugin's <object>s, in current layout it will capture click events
|
// plugin's <object>s, in current layout it will capture click events
|
||||||
// before it reaches the local video object. We hide it here in order
|
// before it reaches the local video object. We hide it here in order
|
||||||
// to prevent that.
|
// to prevent that.
|
||||||
if (RTCBrowserType.isIExplorer()) {
|
//if (RTCBrowserType.isIExplorer()) {
|
||||||
// The issue is not present on Safari. Also if we hide it in Safari
|
// The issue is not present on Safari. Also if we hide it in Safari
|
||||||
// then the local audio track will have 'enabled' flag set to false
|
// then the local audio track will have 'enabled' flag set to false
|
||||||
// which will result in audio mute issues
|
// which will result in audio mute issues
|
||||||
$(localAudio).hide();
|
// $(localAudio).hide();
|
||||||
}
|
localAudio.width = 1;
|
||||||
|
localAudio.height = 1;
|
||||||
|
//}
|
||||||
},
|
},
|
||||||
|
|
||||||
changeLocalVideo (stream) {
|
changeLocalVideo (stream) {
|
||||||
|
@ -325,14 +321,6 @@ var VideoLayout = {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.updateLargeVideo(resourceJid);
|
this.updateLargeVideo(resourceJid);
|
||||||
|
|
||||||
// Writing volume not allowed in IE
|
|
||||||
if (!RTCBrowserType.isIExplorer()) {
|
|
||||||
$('audio').each(function (idx, el) {
|
|
||||||
el.volume = 0;
|
|
||||||
el.volume = 1;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue