Skip to content

Commit 2cfbc9a

Browse files
committed
Initial pass at fixing navigator.mediaDevices
1 parent fff94c5 commit 2cfbc9a

File tree

1 file changed

+30
-4
lines changed

1 file changed

+30
-4
lines changed

lib/RTCSession.js

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -663,6 +663,14 @@ module.exports = class RTCSession extends EventEmitter
663663
// Audio and/or video requested, prompt getUserMedia.
664664
else if (mediaConstraints.audio || mediaConstraints.video)
665665
{
666+
if ( ! navigator.mediaDevices )
667+
{
668+
const error = new Error('Media inaccessible; Secure context required (eg. https://, file://)');
669+
670+
//this._failed('local', null, JsSIP_C.causes.USER_DENIED_MEDIA_ACCESS);
671+
//this.emit('getusermediafailed', error);
672+
throw error;
673+
}
666674
this._localMediaStreamLocallyGenerated = true;
667675

668676
return navigator.mediaDevices.getUserMedia(mediaConstraints)
@@ -793,12 +801,12 @@ module.exports = class RTCSession extends EventEmitter
793801
})
794802
.catch((error) =>
795803
{
804+
logger.warn(`getUserMedia error: ${JSON.stringify(error)}`);
796805
if (this._status === C.STATUS_TERMINATED)
797806
{
798807
return;
799808
}
800-
801-
logger.warn(error);
809+
throw error;
802810
});
803811
}
804812

@@ -2630,11 +2638,28 @@ module.exports = class RTCSession extends EventEmitter
26302638
// Request for user media access.
26312639
else if (mediaConstraints.audio || mediaConstraints.video)
26322640
{
2641+
if ( ! navigator.mediaDevices )
2642+
{
2643+
const error = new Error('Media inaccessible; Secure context required (eg. https://, file://)');
2644+
2645+
//this._failed('local', null, JsSIP_C.causes.USER_DENIED_MEDIA_ACCESS);
2646+
//this.emit('getusermediafailed', error);
2647+
throw error;
2648+
}
26332649
this._localMediaStreamLocallyGenerated = true;
26342650

2651+
logger.warn(`getUserMedia requesting ${JSON.stringify( mediaConstraints )} from ${JSON.stringify( navigator.mediaDevices )}`);
2652+
26352653
return navigator.mediaDevices.getUserMedia(mediaConstraints)
2654+
.then((stream) =>
2655+
{
2656+
logger.warn(`getUserMedia gives ${JSON.stringify( stream )}`);
2657+
2658+
return stream;
2659+
})
26362660
.catch((error) =>
26372661
{
2662+
logger.warn(`getUserMedia error ${JSON.stringify( error )}`);
26382663
if (this._status === C.STATUS_TERMINATED)
26392664
{
26402665
throw new Error('terminated');
@@ -2652,6 +2677,7 @@ module.exports = class RTCSession extends EventEmitter
26522677
})
26532678
.then((stream) =>
26542679
{
2680+
logger.warn(`getUserMedia returned stream ${JSON.stringify( stream )}`);
26552681
if (this._status === C.STATUS_TERMINATED)
26562682
{
26572683
throw new Error('terminated');
@@ -2699,12 +2725,12 @@ module.exports = class RTCSession extends EventEmitter
26992725
})
27002726
.catch((error) =>
27012727
{
2728+
logger.warn(`getUserMedia error: ${JSON.stringify(error)}`);
27022729
if (this._status === C.STATUS_TERMINATED)
27032730
{
27042731
return;
27052732
}
2706-
2707-
logger.warn(error);
2733+
throw error;
27082734
});
27092735
}
27102736

0 commit comments

Comments
 (0)