Skip to content

Commit

Permalink
Fix alert from BrowserWebCamVideoProvider when accessed from non-secu…
Browse files Browse the repository at this point in the history
…re context.
  • Loading branch information
xian committed Oct 3, 2023
1 parent fe7c094 commit 7df28e0
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/jsMain/kotlin/baaahs/plugin/webcam/DefaultVideoProvider.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import org.khronos.webgl.TexImageSource
import web.html.HTMLVideoElement
import web.media.streams.ConstrainULongRange
import web.navigator.navigator
import web.window.Window
import web.window.window

actual val DefaultVideoProvider: VideoProvider
get() = BrowserWebCamVideoProvider
Expand All @@ -28,7 +30,18 @@ object BrowserWebCamVideoProvider : VideoProvider {
private val logger = Logger<BrowserWebCamVideoProvider>()

init {
startCamera()
}

private fun startCamera() {
logger.info { "Initializing." }
if (!window.isSecureContext) {
// The browser considers our session to be not secure; see
// https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts.
console.warn("navigator.MediaDevices isn't available. Try connecting to localhost directly?")
return
}

navigator.mediaDevices.getUserMedia(jso {
video = jso {
width = jso<ConstrainULongRange> { min = 320; ideal = 640; max = 1920 }
Expand All @@ -51,4 +64,7 @@ object BrowserWebCamVideoProvider : VideoProvider {
override fun getTextureResource(): TextureResource {
return TextureResource(videoElement.unsafeCast<TexImageSource>())
}

private val Window.isSecureContext: Boolean
get() = asDynamic().isSecureContext as Boolean
}

0 comments on commit 7df28e0

Please sign in to comment.