Browse Source

Implemented timeout for getUserMedia check.

pull/92/head
Simon Eisenmann 11 years ago
parent
commit
957b4dbb7b
  1. 3
      src/styles/components/_usability.scss
  2. 2
      static/css/main.min.css
  3. 41
      static/js/mediastream/usermedia.js
  4. 4
      static/js/mediastream/webrtc.js
  5. 4
      static/partials/usability.html

3
src/styles/components/_usability.scss

@ -59,4 +59,7 @@ @@ -59,4 +59,7 @@
font-size: 1em;
width: 250px;
}
.btn {
text-shadow: none;
}
}

2
static/css/main.min.css vendored

File diff suppressed because one or more lines are too long

41
static/js/mediastream/usermedia.js

@ -61,15 +61,38 @@ define(['jquery', 'underscore', 'audiocontext', 'webrtc.adapter'], function($, _ @@ -61,15 +61,38 @@ define(['jquery', 'underscore', 'audiocontext', 'webrtc.adapter'], function($, _
UserMedia.testGetUserMedia = function(success_cb, error_cb) {
console.log("Requesting testGetUserMedia");
try {
getUserMedia({
video: true,
audio: true
}, success_cb, error_cb);
} catch (e) {
console.error('getUserMedia failed with exception: ' + e.message);
error_cb(e);
}
(function(complete) {
var success_helper = function() {
if (complete.done) {
return;
}
complete.done = true;
var args = Array.prototype.slice.call(arguments, 1);
success_cb.apply(this, args);
};
var error_helper = function() {
if (complete.done) {
return;
}
complete.done = true;
var args = Array.prototype.slice.call(arguments, 1);
error_cb.apply(this, args);
};
try {
getUserMedia({
video: true,
audio: true
}, success_helper, error_helper);
} catch (e) {
console.error('getUserMedia failed with exception: ' + e.message);
error_helper(e);
}
setTimeout(function() {
var e = new Error("Timeout while waiting for getUserMedia");
console.error('getUserMedia timed out');
error_helper(e);
}, 10000);
})({});
};

4
static/js/mediastream/webrtc.js

@ -329,7 +329,9 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u @@ -329,7 +329,9 @@ function($, _, PeerCall, PeerConference, PeerXfer, PeerScreenshare, UserMedia, u
var success = function(stream) {
console.info("testMediaAccess success");
stream.stop();
if (stream) {
stream.stop();
}
cb(true);
}
var failed = function() {

4
static/partials/usability.html

@ -4,11 +4,11 @@ @@ -4,11 +4,11 @@
<div ng-switch-when="initializing"></div>
<div ng-switch-when="checking"><i class="fa fa-refresh fa-spin fa-4x pull-right"></i>{{_("Checking camera and microphone access.")}}</div>
<div ng-switch-when="usermedia"><i><i class="fa fa-hand-o-up fa-4x pull-right"></i>{{_("Please allow access to your camera and microphone.")}}</i></div>
<div ng-switch-when="denied"><i><i class="fa fa-exclamation-triangle fa-4x pull-right"></i>{{_("Camera / microphone access required.")}}</i></div>
<div ng-switch-when="denied">{{_("Camera / microphone access required.")}}</i></div>
</div>
<div ng-show="usabilityInfo=='denied'" class="help-subline">
<p><i>{{_("Please check your browser settings and allow camera and microphone access for this site.")}}</i></p>
<p><a ng-click="testMediaAccess()" class="btn btn-primary"><span class="fa fa-refresh"></span> {{_("Retry")}}</a> <a ng-click="continueConnect(true)" class="btn">{{_("Skip check")}}</a></p>
<p><a ng-click="testMediaAccess()" class="btn btn-primary">{{_("Retry")}}</a> <a ng-click="continueConnect(true)" class="btn btn-default">{{_("Skip check")}}</a></p>
<p style="font-size:0.7em" ng-show="isChrome"><i><a rel="external" target="_blank" href="https://support.google.com/chrome/answer/2693767">{{_("Click here for help (Google Chrome).")}}</a></i></p>
</div>
</div>

Loading…
Cancel
Save