@@ -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