diff options
author | bptato <nincsnevem662@gmail.com> | 2024-12-26 18:19:52 +0100 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2024-12-26 22:11:13 +0100 |
commit | aaa94080ca9e80fd71c3baf40b028139961c3a49 (patch) | |
tree | 615e2e1a02f9390150a7f1649e20ab5a5392fb6b /src/config/config.nim | |
parent | 4a98e7940971dc7d8ff36907ee37f0aad6d7cb38 (diff) | |
download | chawan-aaa94080ca9e80fd71c3baf40b028139961c3a49.tar.gz |
buffer: add "app" scripting mode
For APIs that cannot be implemented in a privacy-friendly manner. As a start, I've added accurate screen size queries; getComputedStyle, getBoundingClientRect, etc. should follow. (We have a harmless getComputedStyle already, but it's broken.) Probably, things like JS-based scroll belong in here too, but I'm not sure yet. (Perhaps autofocus should be reused instead?)
Diffstat (limited to 'src/config/config.nim')
-rw-r--r-- | src/config/config.nim | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/config/config.nim b/src/config/config.nim index a197853b..f992657f 100644 --- a/src/config/config.nim +++ b/src/config/config.nim @@ -9,6 +9,7 @@ import config/mailcap import config/mimetypes import config/toml import config/urimethodmap +import html/script import io/dynstream import monoucha/fromjs import monoucha/javascript @@ -63,7 +64,7 @@ type third_party_cookie*: seq[Regex] share_cookie_jar*: Option[string] referer_from*: Option[bool] - scripting*: Option[bool] + scripting*: Option[ScriptingMode] document_charset*: seq[Charset] images*: Option[bool] styling*: Option[bool] @@ -159,7 +160,7 @@ type BufferSectionConfig* = object styling* {.jsgetset.}: bool - scripting* {.jsgetset.}: bool + scripting* {.jsgetset.}: ScriptingMode images* {.jsgetset.}: bool cookie* {.jsgetset.}: bool referer_from* {.jsgetset.}: bool @@ -330,6 +331,8 @@ proc parseConfigValue(ctx: var ConfigParser; x: var int64; v: TomlValue; k: string) proc parseConfigValue(ctx: var ConfigParser; x: var ColorMode; v: TomlValue; k: string) +proc parseConfigValue(ctx: var ConfigParser; x: var ScriptingMode; v: TomlValue; + k: string) proc parseConfigValue[T](ctx: var ConfigParser; x: var Option[T]; v: TomlValue; k: string) proc parseConfigValue(ctx: var ConfigParser; x: var ARGBColor; v: TomlValue; @@ -483,6 +486,17 @@ proc parseConfigValue(ctx: var ConfigParser; x: var ColorMode; v: TomlValue; raise newException(ValueError, "unknown color mode '" & v.s & "' for key " & k) +proc parseConfigValue(ctx: var ConfigParser; x: var ScriptingMode; v: TomlValue; + k: string) = + typeCheck(v, {tvtString, tvtBoolean}, k) + if v.t == tvtBoolean: + x = if v.b: smTrue else: smFalse + elif v.s == "app": + x = smApp + else: + raise newException(ValueError, "unknown scripting mode '" & v.s & + "' for key " & k) + proc parseConfigValue(ctx: var ConfigParser; x: var ARGBColor; v: TomlValue; k: string) = typeCheck(v, tvtString, k) |