about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2024-12-26 17:52:10 +0100
committerbptato <nincsnevem662@gmail.com>2024-12-26 17:52:10 +0100
commit4a98e7940971dc7d8ff36907ee37f0aad6d7cb38 (patch)
tree7426e21e297c0d3e10d6a5917a5c5848f412ffab /src
parentfaf3ab0b3079a56d8d929a769673f5f2263c8867 (diff)
downloadchawan-4a98e7940971dc7d8ff36907ee37f0aad6d7cb38.tar.gz
env: reflect user agent header in userAgent
Diffstat (limited to 'src')
-rw-r--r--src/html/dom.nim1
-rw-r--r--src/html/env.nim10
-rw-r--r--src/local/pager.nim1
-rw-r--r--src/server/buffer.nim4
4 files changed, 10 insertions, 6 deletions
diff --git a/src/html/dom.nim b/src/html/dom.nim
index 016da8c3..3f04c4be 100644
--- a/src/html/dom.nim
+++ b/src/html/dom.nim
@@ -108,6 +108,7 @@ type
     pendingCanvasCtls*: seq[CanvasRenderingContext2D]
     urandom*: PosixStream
     imageTypes*: Table[string, string]
+    userAgent*: string
 
   # Navigator stuff
   Navigator* = object
diff --git a/src/html/env.nim b/src/html/env.nim
index 311496af..f017c23f 100644
--- a/src/html/env.nim
+++ b/src/html/env.nim
@@ -37,9 +37,8 @@ proc appVersion(navigator: var Navigator): string {.jsfget.} = "5.0 (Windows)"
 proc platform(navigator: var Navigator): string {.jsfget.} = "Win32"
 proc product(navigator: var Navigator): string {.jsfget.} = "Gecko"
 proc productSub(navigator: var Navigator): string {.jsfget.} = "20100101"
-proc userAgent(navigator: var Navigator): string {.jsfget.} =
-  #TODO TODO TODO this should be configurable
-  "chawan"
+proc userAgent(ctx: JSContext; navigator: var Navigator): string {.jsfget.} =
+  return ctx.getWindow().userAgent
 proc vendor(navigator: var Navigator): string {.jsfget.} = ""
 proc vendorSub(navigator: var Navigator): string {.jsfget.} = ""
 proc taintEnabled(navigator: var Navigator): bool {.jsfget.} = false
@@ -334,7 +333,7 @@ proc runJSJobs*(window: Window) =
 
 proc newWindow*(scripting, images, styling: bool; attrs: WindowAttributes;
     factory: CAtomFactory; loader: FileLoader; url: URL; urandom: PosixStream;
-    imageTypes: Table[string, string]): Window =
+    imageTypes: Table[string, string]; userAgent: string): Window =
   let err = newDynFileStream(stderr)
   let window = Window(
     attrs: attrs,
@@ -349,7 +348,8 @@ proc newWindow*(scripting, images, styling: bool; attrs: WindowAttributes;
     ),
     factory: factory,
     urandom: urandom,
-    imageTypes: imageTypes
+    imageTypes: imageTypes,
+    userAgent: userAgent
   )
   window.location = window.newLocation()
   if scripting:
diff --git a/src/local/pager.nim b/src/local/pager.nim
index 06534bc5..b563ccfc 100644
--- a/src/local/pager.nim
+++ b/src/local/pager.nim
@@ -1880,6 +1880,7 @@ proc applySiteconf(pager: Pager; url: URL; charsetOverride: Charset;
     .add(pager.config.external.urimethodmap.imageProtos)
   if res.images:
     res.imageTypes = pager.config.external.mime_types.image
+  res.userAgent = loaderConfig.defaultHeaders.getOrDefault("User-Agent")
   return res
 
 # Load request in a new buffer.
diff --git a/src/server/buffer.nim b/src/server/buffer.nim
index 474c1bd3..804f5d5c 100644
--- a/src/server/buffer.nim
+++ b/src/server/buffer.nim
@@ -136,6 +136,7 @@ type
     charsets*: seq[Charset]
     protocol*: Table[string, ProtocolConfig]
     imageTypes*: Table[string, string]
+    userAgent*: string
 
   GetValueProc = proc(iface: BufferInterface; promise: EmptyPromise) {.nimcall.}
 
@@ -1942,7 +1943,8 @@ proc launchBuffer*(config: BufferConfig; url: URL; attrs: WindowAttributes;
       loader,
       url,
       urandom,
-      config.imageTypes
+      config.imageTypes,
+      config.userAgent
     )
   )
   if buffer.config.scripting: