Skip to content

Commit

Permalink
Released "[email protected]"
Browse files Browse the repository at this point in the history
Merged & Closed #62
Fixed #64
  • Loading branch information
muaz-khan committed May 5, 2018
1 parent 344a75c commit c4e7bb9
Show file tree
Hide file tree
Showing 8 changed files with 96 additions and 29 deletions.
17 changes: 11 additions & 6 deletions DetectRTC.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
'use strict';

// Last Updated On: 2018-04-30 5:22:34 PM UTC
// Last Updated On: 2018-05-05 12:25:07 PM UTC

// ________________
// DetectRTC v1.3.6
Expand Down Expand Up @@ -856,15 +856,17 @@
isScreenCapturingSupported = true;
} else if (DetectRTC.browser.isFirefox && DetectRTC.browser.version >= 34) {
isScreenCapturingSupported = true;
} else if (DetectRTC.browser.isEdge && DetectRTC.browser.version >= 17) {
isScreenCapturingSupported = true; // navigator.getDisplayMedia
} else if (DetectRTC.osName === 'Android' && DetectRTC.browser.isChrome) {
isScreenCapturingSupported = true;
}

if (!/^(https:|chrome-extension:)$/g.test(location.protocol || '')) {
if (typeof document !== 'undefined' && typeof document.domain === 'string' && document.domain.search && document.domain.search(/localhost|127.0./g) === -1) {
// DetectRTC.browser.isChrome
var isNonLocalHost = typeof document !== 'undefined' && typeof document.domain === 'string' && document.domain.search && document.domain.search(/localhost|127.0./g) === -1;
if (isNonLocalHost && (DetectRTC.browser.isChrome || DetectRTC.browser.isEdge || DetectRTC.browser.isOpera)) {
isScreenCapturingSupported = false;
}

if (DetectRTC.browser.isFirefox) {
} else if (DetectRTC.browser.isFirefox) {
isScreenCapturingSupported = false;
}
}
Expand Down Expand Up @@ -1079,6 +1081,9 @@

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

// version is generated by "grunt"
DetectRTC.version = '1.3.6';

if (typeof DetectRTC === 'undefined') {
window.DetectRTC = {};
}
Expand Down
4 changes: 2 additions & 2 deletions DetectRTC.min.js

Large diffs are not rendered by default.

27 changes: 18 additions & 9 deletions Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,17 +48,26 @@ module.exports = function(grunt) {
'dev/Objects.js',
'dev/tail.js'
],
dest: 'DetectRTC.js',
dest: './temp/DetectRTC.js',
},
},
jshint: {
options: {
ignores: [],
// use default .jshintrc files
jshintrc: true
},
files: ['DetectRTC.js']
replace: {
dist: {
options: {
patterns: [{
match: 'version',
replacement: versionNumber
}]
},
files: [{
expand: true,
flatten: true,
src: ['./temp/DetectRTC.js'],
dest: './'
}]
}
},
clean: ['./temp'],
uglify: {
options: {
mangle: false,
Expand Down Expand Up @@ -134,5 +143,5 @@ module.exports = function(grunt) {

// set default tasks to run when grunt is called without parameters
// http://gruntjs.com/api/grunt.task
grunt.registerTask('default', ['concat', 'jsbeautifier', /*'jshint',*/ 'uglify']);
grunt.registerTask('default', ['concat', 'replace', 'jsbeautifier', 'uglify', 'clean']);
};
16 changes: 13 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ node npm-test.js
You can even link specific versions:

```html
<script src="https://github.com/muaz-khan/DetectRTC/releases/download/1.3.5/DetectRTC.js"></script>
<script src="https://github.com/muaz-khan/DetectRTC/releases/download/1.3.6/DetectRTC.js"></script>
```

<img src="https://cdn.webrtc-experiment.com/images/DetectRTC.png" style="width:100%;" />
Expand All @@ -144,7 +144,7 @@ DetectRTC.load(function() {
DetectRTC.hasWebcam; // (has webcam device!)
DetectRTC.hasMicrophone; // (has microphone device!)
DetectRTC.hasSpeakers; // (has speakers!)
DetectRTC.isScreenCapturingSupported;
DetectRTC.isScreenCapturingSupported; // Chrome, Firefox, Opera, Edge and Android
DetectRTC.isSctpDataChannelsSupported;
DetectRTC.isRtpDataChannelsSupported;
DetectRTC.isAudioContextSupported;
Expand Down Expand Up @@ -184,9 +184,19 @@ DetectRTC.load(function() {
});
```

# `DetectRTC.version`

DetectRTC is supporting `version` property since `1.3.6`.

``javascript
if(DetectRTC.version === '1.3.6') {
alert('We are using DetectRTC version 1.3.6');
}
```
# Why `load` method?
If you're not detecting audio/video input/outupt devices then you can skip this method.
If you're not detecting audio/video input/output devices then you can skip this method.
`DetectRTC.load` simply makes sure that all devices are captured and valid result is set for relevant properties.
Expand Down
15 changes: 10 additions & 5 deletions dev/DetectRTC.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,17 @@ if (DetectRTC.browser.isChrome && DetectRTC.browser.version >= 35) {
isScreenCapturingSupported = true;
} else if (DetectRTC.browser.isFirefox && DetectRTC.browser.version >= 34) {
isScreenCapturingSupported = true;
} else if (DetectRTC.browser.isEdge && DetectRTC.browser.version >= 17) {
isScreenCapturingSupported = true; // navigator.getDisplayMedia
} else if (DetectRTC.osName === 'Android' && DetectRTC.browser.isChrome) {
isScreenCapturingSupported = true;
}

if (!/^(https:|chrome-extension:)$/g.test(location.protocol || '')) {
if (typeof document !== 'undefined' && typeof document.domain === 'string' && document.domain.search && document.domain.search(/localhost|127.0./g) === -1) {
// DetectRTC.browser.isChrome
var isNonLocalHost = typeof document !== 'undefined' && typeof document.domain === 'string' && document.domain.search && document.domain.search(/localhost|127.0./g) === -1;
if (isNonLocalHost && (DetectRTC.browser.isChrome || DetectRTC.browser.isEdge || DetectRTC.browser.isOpera)) {
isScreenCapturingSupported = false;
}

if (DetectRTC.browser.isFirefox) {
} else if (DetectRTC.browser.isFirefox) {
isScreenCapturingSupported = false;
}
}
Expand Down Expand Up @@ -261,3 +263,6 @@ if (DetectRTC.browser.isFirefox && DetectRTC.browser.version >= 43) {
DetectRTC.isMultiMonitorScreenCapturingSupported = isMultiMonitorScreenCapturingSupported;

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

// version is generated by "grunt"
DetectRTC.version = '@@version';
42 changes: 39 additions & 3 deletions index.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<script>window.demoVersion = '2018.04.05';</script>
<script>window.demoVersion = '2018.05.05';</script>

<!--
> Muaz Khan - www.MuazKhan.com
Expand Down Expand Up @@ -77,7 +77,7 @@
Script used to detect WebRTC features!
https://github.com/muaz-khan/DetectRTC#how-to-link
-->
<script src="https://cdn.WebRTC-Experiment.com/DetectRTC.js"> </script>
<script src="https://cdn.webrtc-experiment.com/DetectRTC.js"> </script>
<script src="https://cdn.webrtc-experiment.com/screenshot.js"></script>
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
</head>
Expand Down Expand Up @@ -241,7 +241,7 @@ <h2 id="welcome">DetectRTC!</h2>
appendTR('Browser Supports WebAudio API?', printVal(DetectRTC.isAudioContextSupported), 'isAudioContextSupported');
appendTR('Browser Supports SCTP Data Channels?', printVal(DetectRTC.isSctpDataChannelsSupported), 'isSctpDataChannelsSupported');
appendTR('Browser Supports RTP Data Channels?', printVal(DetectRTC.isRtpDataChannelsSupported), 'isRtpDataChannelsSupported');
appendTR('This page Supports Screen Capturing API?', printVal(DetectRTC.isScreenCapturingSupported), 'isScreenCapturingSupported');
appendTR('This page Supports Screen Capturing API?' + getInfoDiv('infoIcon-isScreenCapturingSupported'), printVal(DetectRTC.isScreenCapturingSupported), 'isScreenCapturingSupported');

appendTR('Does Browser Support multi-monitor selection & capturing screen of any monitor?', printVal(DetectRTC.isMultiMonitorScreenCapturingSupported), 'isMultiMonitorScreenCapturingSupported');

Expand Down Expand Up @@ -292,6 +292,38 @@ <h2 id="welcome">DetectRTC!</h2>
// appendTR(DetectRTC.MediaStream === false ? 'Your system does NOT supports MediaStream.' : 'Your system supports MediaStream.', '<strong>MediaStream.prototype:</strong><br>' + DetectRTC.MediaStream.toString().split(',').join(', '), 'MediaStream');
// appendTR(DetectRTC.MediaStreamTrack === false ? 'Your system does NOT supports MediaStreamTrack.' : 'Your system supports MediaStreamTrack.', '<strong>MediaStreamTrack.prototype:</strong><br>' + DetectRTC.MediaStreamTrack.toString().split(',').join(', '), 'MediaStreamTrack');
// appendTR(DetectRTC.RTCPeerConnection === false ? 'Your system does NOT supports RTCPeerConnection API.' : 'Your system supports RTCPeerConnection API.', '<strong>RTCPeerConnection.prototype:</strong><br>' + DetectRTC.RTCPeerConnection.toString().split(',').join(', '), 'RTCPeerConnection');
document.getElementById('infoIcon-isScreenCapturingSupported').onclick = function() {
var pre = this.parentNode.querySelector('pre');
if(pre) {
pre.parentNode.removeChild(pre);
return;
}

pre = document.createElement('pre');
pre.className = 'sh_javascript inline-pre';
pre.innerHTML += '\
# Edge &gt= 17<br>\
navigator.getDisplayMedia({<br>\
video: true<br>\
}).then(screenStream => {<br>\
video.srcObject = screenStream;<br>\
}, error => {<br>\
alert(error);<br>\
});<br>\
<br>\
# Firefox<br>\
navigator.mediaDevices.getUserMedia({<br>\
video: {<br>\
mediaSource: \'window\' || \'screen\'<br>\
}<br>\
}).then(function(screenStream) {<br>\
video.srcObject = screenStream;<br>\
});<br><br>\
# Chrome+Opera desktopCapture API i.e. extension';
this.parentNode.appendChild(pre);
pre.focus();
sh_highlightDocument();
};

document.getElementById('infoIcon-set-sink-id').onclick = function() {
var pre = this.parentNode.querySelector('pre');
Expand Down Expand Up @@ -442,6 +474,10 @@ <h2 id="welcome">DetectRTC!</h2>
type: contentType
});
}

if(DetectRTC.version) {
document.getElementById('welcome').innerHTML = 'DetectRTC v' + DetectRTC.version;
}
</script>

<section class="experiment">
Expand Down
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@
"grunt-contrib-jshint": "0.11.3",
"grunt-contrib-uglify": "0.11.0",
"grunt-jsbeautifier": "0.2.10",
"grunt-replace": "0.11.0",
"grunt-contrib-clean": "0.6.0",
"grunt-bump": "0.7.0"
}
}
2 changes: 1 addition & 1 deletion test/browserstack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ exports.config = {
multiCapabilities: []
};

['Chrome'/*, 'Firefox'*/].forEach(function(browserName) {
['Chrome' /*, 'Firefox'*/ ].forEach(function(browserName) {
var browserInfo = getDefaultBrowserInfo(browserName);

[ /*'OS X',*/ 'Windows'].forEach(function(os) {
Expand Down

0 comments on commit c4e7bb9

Please sign in to comment.