Skip to content

Commit

Permalink
Added detectrtc@1.2.8 Implemented & closed #20
Browse files Browse the repository at this point in the history
  • Loading branch information
muaz-khan committed Mar 29, 2016
1 parent 9e4ddec commit b1c9d43
Show file tree
Hide file tree
Showing 10 changed files with 77 additions and 32 deletions.
33 changes: 30 additions & 3 deletions DetectRTC.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Last time updated at Friday, January 8th, 2016, 10:57:13 PM
// Last time updated: 2016-03-29 8:59:02 AM UTC

// Latest file can be found here: https://cdn.webrtc-experiment.com/DetectRTC.js

Expand Down Expand Up @@ -33,7 +33,8 @@
};
}

var isMobileDevice = !!navigator.userAgent.match(/Android|iPhone|iPad|iPod|BlackBerry|IEMobile/i);
var isMobileDevice = !!(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile/i.test(navigator.userAgent || ''));

var isEdge = navigator.userAgent.indexOf('Edge') !== -1 && (!!navigator.msSaveOrOpenBlob || !!navigator.msSaveBlob);

var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
Expand Down Expand Up @@ -901,7 +902,7 @@
if ('getSenders' in mozRTCPeerConnection.prototype) {
isRTPSenderReplaceTracksSupported = true;
}
} else if (DetectRTC.browser.isChrome) {
} else if (DetectRTC.browser.isChrome && typeof webkitRTCPeerConnection !== 'undefined') {
/*global webkitRTCPeerConnection:true */
if ('getSenders' in webkitRTCPeerConnection.prototype) {
isRTPSenderReplaceTracksSupported = true;
Expand Down Expand Up @@ -934,6 +935,32 @@
}
DetectRTC.isMultiMonitorScreenCapturingSupported = isMultiMonitorScreenCapturingSupported;

DetectRTC.isPromisesSupported = !!('Promise' in window);

if (typeof DetectRTC === 'undefined') {
window.DetectRTC = {};
}

var MediaStream = window.MediaStream;

if (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') {
MediaStream = webkitMediaStream;
}

if (typeof MediaStream !== 'undefined') {
DetectRTC.MediaStream = Object.keys(MediaStream.prototype);
} else DetectRTC.MediaStream = false;

if (typeof MediaStreamTrack !== 'undefined') {
DetectRTC.MediaStreamTrack = Object.keys(MediaStreamTrack.prototype);
} else DetectRTC.MediaStreamTrack = false;

var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;

if (typeof RTCPeerConnection !== 'undefined') {
DetectRTC.RTCPeerConnection = Object.keys(RTCPeerConnection.prototype);
} else DetectRTC.RTCPeerConnection = false;

window.DetectRTC = DetectRTC;

})();
4 changes: 2 additions & 2 deletions DetectRTC.min.js

Large diffs are not rendered by default.

7 changes: 5 additions & 2 deletions Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ module.exports = function(grunt) {
scope: 'devDependencies'
});

var banner = '// Last time updated: <%= grunt.template.today("UTC:yyyy-mm-dd h:MM:ss TT Z") %>\n\n';

// configure project
grunt.initConfig({
// make node configurations available
Expand All @@ -15,7 +17,7 @@ module.exports = function(grunt) {
options: {
stripBanners: true,
separator: '\n',
banner: '// Last time updated at <%= grunt.template.today("dddd, mmmm dS, yyyy, h:MM:ss TT") %> \n\n'
banner: banner
},
dist: {
src: [
Expand All @@ -30,6 +32,7 @@ module.exports = function(grunt) {
'dev/DetectLocalIPAddress.js',
'dev/checkDeviceSupport.js',
'dev/DetectRTC.js',
'dev/Objects.js',
'dev/tail.js'
],
dest: 'DetectRTC.js',
Expand All @@ -46,7 +49,7 @@ module.exports = function(grunt) {
uglify: {
options: {
mangle: false,
banner: '// Last time updated at <%= grunt.template.today("dddd, mmmm dS, yyyy, h:MM:ss TT") %> \n\n'
banner: banner
},
my_target: {
files: {
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@ http://localhost:9001
You can even link specific versions:

```html
<!-- replace "1.2.5" with latest release/build -->
<script src="https://github.com/muaz-khan/DetectRTC/releases/download/1.2.5/DetectRTC.js"></script>
<!-- replace "1.2.8" with latest release/build -->
<script src="https://github.com/muaz-khan/DetectRTC/releases/download/1.2.8/DetectRTC.js"></script>
```

<img src="https://cdn.webrtc-experiment.com/images/DetectRTC.png" style="width:100%;" />
Expand Down
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "detectrtc",
"version": "1.2.7",
"version": "1.2.8",
"authors": [
{
"name": "Muaz Khan",
Expand Down
4 changes: 3 additions & 1 deletion dev/DetectRTC.js
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ if (DetectRTC.browser.isFirefox /*&& DetectRTC.browser.version > 39*/ ) {
if ('getSenders' in mozRTCPeerConnection.prototype) {
isRTPSenderReplaceTracksSupported = true;
}
} else if (DetectRTC.browser.isChrome) {
} else if (DetectRTC.browser.isChrome && typeof webkitRTCPeerConnection !== 'undefined') {
/*global webkitRTCPeerConnection:true */
if ('getSenders' in webkitRTCPeerConnection.prototype) {
isRTPSenderReplaceTracksSupported = true;
Expand Down Expand Up @@ -204,3 +204,5 @@ if (DetectRTC.browser.isFirefox && DetectRTC.browser.version >= 43) {
isMultiMonitorScreenCapturingSupported = true;
}
DetectRTC.isMultiMonitorScreenCapturingSupported = isMultiMonitorScreenCapturingSupported;

DetectRTC.isPromisesSupported = !!('Promise' in window);
23 changes: 23 additions & 0 deletions dev/Objects.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
if (typeof DetectRTC === 'undefined') {
window.DetectRTC = {};
}

var MediaStream = window.MediaStream;

if (typeof MediaStream === 'undefined' && typeof webkitMediaStream !== 'undefined') {
MediaStream = webkitMediaStream;
}

if (typeof MediaStream !== 'undefined') {
DetectRTC.MediaStream = Object.keys(MediaStream.prototype);
} else DetectRTC.MediaStream = false;

if (typeof MediaStreamTrack !== 'undefined') {
DetectRTC.MediaStreamTrack = Object.keys(MediaStreamTrack.prototype);
} else DetectRTC.MediaStreamTrack = false;

var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;

if (typeof RTCPeerConnection !== 'undefined') {
DetectRTC.RTCPeerConnection = Object.keys(RTCPeerConnection.prototype);
} else DetectRTC.RTCPeerConnection = false;
3 changes: 2 additions & 1 deletion dev/getBrowserInfo.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
var isMobileDevice = !!navigator.userAgent.match(/Android|iPhone|iPad|iPod|BlackBerry|IEMobile/i);
var isMobileDevice = !!(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile/i.test(navigator.userAgent || ''));

var isEdge = navigator.userAgent.indexOf('Edge') !== -1 && (!!navigator.msSaveOrOpenBlob || !!navigator.msSaveBlob);

var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
Expand Down
27 changes: 8 additions & 19 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -238,28 +238,15 @@ <h2 id="welcome">DetectRTC!</h2>
appendTR('Is it a mobile device?', printVal(DetectRTC.isMobileDevice));
appendTR('Browser Supports WebSockets?', printVal(DetectRTC.isWebSocketsSupported));

var rightSide = '';

// you can even use "DetectRTC.audioInputDevices", "audioOutputDevices" and "videoInputDevices"
var audioDevices = [];
var videoDevices = [];
DetectRTC.MediaDevices.forEach(function(device) {
if (device.kind.indexOf('audio') !== -1 && audioDevices.indexOf(device.label) == -1) {
audioDevices.push(device.label || 'unable to detect');
}
if (device.kind.indexOf('video') !== -1 && videoDevices.indexOf(device.label) == -1) {
videoDevices.push(device.label || 'unable to detect');
}
});

rightSide += '<h2>Audio Devices</h2><br>' + audioDevices.join('<br>');
rightSide += '<br><br><h2>Video Devices</h2><br>' + videoDevices.join('<br>');

appendTR(audioDevices.length + ' audio and ' + videoDevices.length + ' video devices', rightSide);

appendTR('Is Browser Supports Stream Capturing from Canvas?', printVal(DetectRTC.isVideoSupportsStreamCapturing));
appendTR('Is Browser Supports Stream Capturing from Video?', printVal(DetectRTC.isVideoSupportsStreamCapturing));

appendTR('Is Browser Supports Promises?', printVal(DetectRTC.isPromisesSupported));

appendTR('<strong>MediaStream.prototype:</strong><br>' + DetectRTC.MediaStream.toString().split(',').join(', '), DetectRTC.MediaStream === false ? 'Nope' : 'Yep');
appendTR('<strong>MediaStreamTrack.prototype:</strong><br>' + DetectRTC.MediaStreamTrack.toString().split(',').join(', '), DetectRTC.MediaStreamTrack === false ? 'Nope' : 'Yep');
appendTR('<strong>RTCPeerConnection.prototype:</strong><br>' + DetectRTC.RTCPeerConnection.toString().split(',').join(', '), DetectRTC.RTCPeerConnection === false ? 'Nope' : 'Yep');

/*
DetectRTC.DetectLocalIPAddress(function(ipAddress) {
if (ipAddress.indexOf('Local') !== -1) {
Expand Down Expand Up @@ -338,6 +325,8 @@ <h2 id="welcome">DetectRTC!</h2>
}

DetectRTC.load(function() {
reloadDetectRTC();

if(DetectRTC.MediaDevices[0] && DetectRTC.MediaDevices[0].label === 'Please invoke getUserMedia once.') {
navigator.mediaDevices.getUserMedia({audio: true, video: true}).then(reloadDetectRTC).catch(reloadDetectRTC);
return;
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "detectrtc",
"preferGlobal": false,
"version": "1.2.7",
"version": "1.2.8",
"author": {
"name": "Muaz Khan",
"email": "muazkh@gmail.com",
Expand Down

0 comments on commit b1c9d43

Please sign in to comment.