@@ -19,7 +19,8 @@ class Camera {
1919
2020  getCapabilities ( )  { 
2121    const  [ track ]  =  this . stream . getVideoTracks ( ) ; 
22-     return  track . getCapabilities ( ) ; 
22+     // Firefox does not yet support getCapabilities as of August 2020 
23+     return  track ?. getCapabilities ?. ( )  ??  { } ; 
2324  } 
2425} 
2526
@@ -63,14 +64,6 @@ const narrowDownFacingMode = async camera => {
6364  } 
6465} ; 
6566
66- const  INSECURE_CONTEXT  =  window . isSecureContext  !==  true ; 
67- 
68- const  STREAM_API_NOT_SUPPORTED  =  ! ( 
69-   navigator  && 
70-   ( navigator . getUserMedia  || 
71-     ( navigator . mediaDevices  &&  navigator . mediaDevices . getUserMedia ) ) 
72- ) ; 
73- 
7467const  applyWebRTCShim  =  indempotent ( ( )  =>  { 
7568  const  script  =  document . createElement ( "script" ) ; 
7669  script . src  =  "https://webrtc.github.io/adapter/adapter-7.6.3.js" ; 
@@ -87,11 +80,11 @@ export default async function(videoEl, { camera, torch }) {
8780  // So although `getUserMedia` already should have a built-in mechanism to 
8881  // detect insecure context (by throwing `NotAllowedError`), we have to do a 
8982  // manual check before even calling `getUserMedia`. 
90-   if  ( INSECURE_CONTEXT )  { 
83+   if  ( window . isSecureContext   !==   true )  { 
9184    throw  new  InsecureContextError ( ) ; 
9285  } 
9386
94-   if  ( STREAM_API_NOT_SUPPORTED )  { 
87+   if  ( navigator ?. mediaDevices ?. getUserMedia   ===   undefined )  { 
9588    throw  new  StreamApiNotSupportedError ( ) ; 
9689  } 
9790
0 commit comments