diff options
author | bptato <nincsnevem662@gmail.com> | 2023-08-20 16:01:06 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2023-08-20 16:50:46 +0200 |
commit | 230ad7876ed5f8f26dce02db0e3528a5539150f4 (patch) | |
tree | a6051dfaeb43ad45e6f92e171328fcf1d5580922 /src/html | |
parent | 65ad7f9fc8b69140c050006fbe9ea1644bc283d8 (diff) | |
download | chawan-230ad7876ed5f8f26dce02db0e3528a5539150f4.tar.gz |
javascript: finish LegacyUnforgeable + misc fixes
Add jsuffget, jsuffunc for setting LegacyUnforgeable on functions. Misc fixes: * define LegacyUnforgeable properties for native object shims * replace some macros with templates
Diffstat (limited to 'src/html')
-rw-r--r-- | src/html/dom.nim | 26 | ||||
-rw-r--r-- | src/html/env.nim | 4 |
2 files changed, 16 insertions, 14 deletions
diff --git a/src/html/dom.nim b/src/html/dom.nim index 89fd7748..b33cbd19 100644 --- a/src/html/dom.nim +++ b/src/html/dom.nim @@ -92,7 +92,7 @@ type location* {.jsget.}: Location jsrt*: JSRuntime jsctx*: JSContext - document* {.jsget.}: Document + document* {.jsufget.}: Document timeouts*: TimeoutState[int] navigate*: proc(url: URL) @@ -1179,7 +1179,7 @@ proc setLocation*(document: Document, s: string): Err[DOMException] # Note: we do not implement security checks (as documents are in separate # windows anyway). -func href(location: Location): string {.jsfget.} = +func href(location: Location): string {.jsuffget.} = return location.url.serialize() proc setHref(location: Location, s: string): Err[DOMException] @@ -1188,21 +1188,21 @@ proc setHref(location: Location, s: string): Err[DOMException] return ok() return location.document.setLocation(s) -proc assign(location: Location, s: string): Err[DOMException] {.jsfunc.} = +proc assign(location: Location, s: string): Err[DOMException] {.jsuffunc.} = location.setHref(s) -proc replace(location: Location, s: string): Err[DOMException] {.jsfunc.} = +proc replace(location: Location, s: string): Err[DOMException] {.jsuffunc.} = location.setHref(s) -proc reload(location: Location) {.jsfunc.} = +proc reload(location: Location) {.jsuffunc.} = if location.document == nil: return location.document.window.navigate(location.url) -func origin(location: Location): string {.jsfget.} = +func origin(location: Location): string {.jsuffget.} = return location.url.origin -func protocol(location: Location): string {.jsfget.} = +func protocol(location: Location): string {.jsuffget.} = return location.url.protocol proc protocol(location: Location, s: string): Err[DOMException] {.jsfset.} = @@ -1216,7 +1216,7 @@ proc protocol(location: Location, s: string): Err[DOMException] {.jsfset.} = document.window.navigate(copyURL) return ok() -func host(location: Location): string {.jsfget.} = +func host(location: Location): string {.jsuffget.} = return location.url.host proc setHost(location: Location, s: string) {.jsfset: "host".} = @@ -1227,7 +1227,7 @@ proc setHost(location: Location, s: string) {.jsfset: "host".} = copyURL.setHost(s) document.window.navigate(copyURL) -proc hostname(location: Location): string {.jsfget.} = +proc hostname(location: Location): string {.jsuffget.} = return location.url.hostname proc setHostname(location: Location, s: string) {.jsfset: "hostname".} = @@ -1238,7 +1238,7 @@ proc setHostname(location: Location, s: string) {.jsfset: "hostname".} = copyURL.setHostname(s) document.window.navigate(copyURL) -proc port(location: Location): string {.jsfget.} = +proc port(location: Location): string {.jsuffget.} = return location.url.port proc setPort(location: Location, s: string) {.jsfset: "port".} = @@ -1249,7 +1249,7 @@ proc setPort(location: Location, s: string) {.jsfset: "port".} = copyURL.setPort(s) document.window.navigate(copyURL) -proc pathname(location: Location): string {.jsfget.} = +proc pathname(location: Location): string {.jsuffget.} = return location.url.pathname proc setPathname(location: Location, s: string) {.jsfset: "pathname".} = @@ -1260,7 +1260,7 @@ proc setPathname(location: Location, s: string) {.jsfset: "pathname".} = copyURL.setPathname(s) document.window.navigate(copyURL) -proc search(location: Location): string {.jsfget.} = +proc search(location: Location): string {.jsuffget.} = return location.url.search proc setSearch(location: Location, s: string) {.jsfset: "search".} = @@ -1271,7 +1271,7 @@ proc setSearch(location: Location, s: string) {.jsfset: "search".} = copyURL.setSearch(s) document.window.navigate(copyURL) -proc hash(location: Location): string {.jsfget.} = +proc hash(location: Location): string {.jsuffget.} = return location.url.hash proc setHash(location: Location, s: string) {.jsfset: "hash".} = diff --git a/src/html/env.nim b/src/html/env.nim index 97f202f9..c38852d5 100644 --- a/src/html/env.nim +++ b/src/html/env.nim @@ -93,6 +93,9 @@ proc setLocation(window: Window, s: string): Err[DOMException] {.jsfset: "location".} = window.document.setLocation(s) +proc getWindow(window: Window): Window {.jsuffget: "window".} = + return window + proc addScripting*(window: Window, selector: Selector[int]) = let rt = newJSRuntime() let ctx = rt.newJSContext() @@ -115,7 +118,6 @@ proc addScripting*(window: Window, selector: Selector[int]) = var global = JS_GetGlobalObject(ctx) ctx.registerType(Window, asglobal = true) ctx.setGlobal(global, window) - ctx.defineProperty(global, "window", global) JS_FreeValue(ctx, global) ctx.addDOMExceptionModule() ctx.addconsoleModule() |