From 8254054825c9508a767d6872a6eb211f35fedd07 Mon Sep 17 00:00:00 2001 From: magic-cucumber Date: Fri, 16 Jan 2026 23:15:05 +0800 Subject: [PATCH 1/2] make native logger and wry logger bridged --- .../webview/wry/WryWebViewPanel.kt | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/wrywebview/src/main/kotlin/io/github/kdroidfilter/webview/wry/WryWebViewPanel.kt b/wrywebview/src/main/kotlin/io/github/kdroidfilter/webview/wry/WryWebViewPanel.kt index 5dd9c1a..e7b179d 100644 --- a/wrywebview/src/main/kotlin/io/github/kdroidfilter/webview/wry/WryWebViewPanel.kt +++ b/wrywebview/src/main/kotlin/io/github/kdroidfilter/webview/wry/WryWebViewPanel.kt @@ -9,11 +9,13 @@ import javax.swing.JPanel import javax.swing.SwingUtilities import javax.swing.Timer import kotlin.concurrent.thread +import kotlin.properties.Delegates class WryWebViewPanel( initialUrl: String, customUserAgent: String? = null, + private val bridgeLogger: (String) -> Unit = { System.err.println(it) } ) : JPanel() { private val host = SkikoInterop.createHost() private var webviewId: ULong? = null @@ -568,7 +570,7 @@ class WryWebViewPanel( private fun log(message: String) { if (LOG_ENABLED) { - System.err.println("[WryWebViewPanel] $message") + bridgeLogger("[WryWebViewPanel] $message") } } @@ -665,12 +667,12 @@ class WryWebViewPanel( private data class ParentHandle(val handle: ULong, val isWindow: Boolean) private data class Bounds(val x: Int, val y: Int, val width: Int, val height: Int) - private companion object { + companion object { private val OS_NAME = System.getProperty("os.name")?.lowercase().orEmpty() private val IS_LINUX = OS_NAME.contains("linux") private val IS_MAC = OS_NAME.contains("mac") private val IS_WINDOWS = OS_NAME.contains("windows") - private val LOG_ENABLED = run { + var LOG_ENABLED = run { val raw = System.getProperty("composewebview.wry.log") ?: System.getenv("WRYWEBVIEW_LOG") when { raw == null -> false @@ -681,19 +683,24 @@ class WryWebViewPanel( else -> false } } + + val NATIVE_LOGGER: (String) -> Unit = { System.err.println(it) } + + init { + setNativeLogger( + object : NativeLogger { + override fun handleLog(data: String) { + if (LOG_ENABLED) { + NATIVE_LOGGER(data) + } + } + } + ) + } } } private object NativeBindings { - init { - setNativeLogger( - object : NativeLogger { - override fun handleLog(data: String) { - println(data) - } - } - ) - } fun createWebview(parentHandle: ULong, width: Int, height: Int, url: String, handler: NavigationHandler): ULong { return io.github.kdroidfilter.webview.wry.createWebview(parentHandle, width, height, url, handler) From a85dfcc7912798f34c7320056391138b4ba23118 Mon Sep 17 00:00:00 2001 From: magic-cucumber Date: Fri, 16 Jan 2026 23:16:55 +0800 Subject: [PATCH 2/2] make native logger and wry logger bridged --- .../io/github/kdroidfilter/webview/wry/WryWebViewPanel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wrywebview/src/main/kotlin/io/github/kdroidfilter/webview/wry/WryWebViewPanel.kt b/wrywebview/src/main/kotlin/io/github/kdroidfilter/webview/wry/WryWebViewPanel.kt index e7b179d..07a7e58 100644 --- a/wrywebview/src/main/kotlin/io/github/kdroidfilter/webview/wry/WryWebViewPanel.kt +++ b/wrywebview/src/main/kotlin/io/github/kdroidfilter/webview/wry/WryWebViewPanel.kt @@ -684,7 +684,7 @@ class WryWebViewPanel( } } - val NATIVE_LOGGER: (String) -> Unit = { System.err.println(it) } + var NATIVE_LOGGER: (String) -> Unit = { System.err.println(it) } init { setNativeLogger(