Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/components/js/process.nim
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ proc jsExecBuffer*(js: var JSProcess, data: string) =

js.parser = newParser(data.buffer.decode())
js.runtime = newRuntime(data.name.decode(), js.parser.parse())
window.generateIR(js.runtime)
window.generateIR(js.runtime, js.ipc)
jsdoc.generateIR(js.runtime)
jswebsocket.generateBindings(js.runtime, js.ipc)
jsdoc.updateDocumentState(js.runtime, js.document)
Expand Down
3 changes: 2 additions & 1 deletion src/components/master/master.nim
Original file line number Diff line number Diff line change
Expand Up @@ -448,7 +448,8 @@ proc packetHandler*(
of feRendererGotoURL:
let data = tryParseJson(data, RendererGotoURL)

if process.kind != Renderer:
if process.kind notin {Renderer, JSRuntime}:
# TODO: separate magic code for jsruntime
master.server.reportBadMessage(
process, "Non-renderer process attempted to use `feRendererGotoURL`!", High
)
Expand Down
16 changes: 14 additions & 2 deletions src/components/web/window.nim
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import std/[logging, tables]
import bali/runtime/prelude
import bali/runtime/prelude, bali/internal/sugar
import ../../components/build_utils
import ../../components/ipc/client/prelude
import ../../components/renderer/ipc
import pretty

type
Expand All @@ -13,7 +15,7 @@ type

JSWindow* = object

proc generateIR*(runtime: Runtime) =
proc generateIR*(runtime: Runtime, ipc: var IPCClient) =
debug "components/web/window: generating interfaces"
runtime.registerType("navigator", JSNavigator)
runtime.setProperty(JSNavigator, "appCodeName", str("Mozilla"))
Expand All @@ -23,3 +25,13 @@ proc generateIR*(runtime: Runtime) =
runtime.setProperty(
JSNavigator, "oscpu", str(hostOS & ' ' & getArchitectureUAString())
)

var pIpc = addr(ipc)
runtime.registerType("window", JSWindow)
runtime.defineFn(
JSWindow,
"open",
proc() =
let url = runtime.ToString(&runtime.argument(1, required = true))
pIpc[].send(RendererGotoURL(url: url)),
)
Loading