[#1497] WebView: Localstorage (#1500)

* [#1497] WebView: Localstorage

* WebView: Transition to our own header/postData system

This is also what is recommended by most other posts, I haven't seen the
context used anywhere, and `KCEFResourceRequestHandler` seems to just
bypass a lot of CEF

* Lint
This commit is contained in:
Constantin Piber
2025-07-06 18:09:31 +02:00
committed by GitHub
parent fe121f59b0
commit 6234e897a8
3 changed files with 56 additions and 46 deletions

View File

@@ -18,9 +18,13 @@ import org.cef.handler.CefDisplayHandlerAdapter
import org.cef.handler.CefLoadHandler
import org.cef.handler.CefLoadHandlerAdapter
import org.cef.handler.CefRenderHandlerAdapter
import org.cef.handler.CefRequestHandlerAdapter
import org.cef.handler.CefResourceRequestHandler
import org.cef.input.CefTouchEvent
import org.cef.misc.BoolRef
import org.cef.network.CefCookie
import org.cef.network.CefCookieManager
import org.cef.network.CefRequest
import uy.kohesive.injekt.injectLazy
import java.awt.Component
import java.awt.Rectangle
@@ -176,6 +180,21 @@ class KcefWebView {
}
}
private inner class RequestHandler : CefRequestHandlerAdapter() {
override fun getResourceRequestHandler(
browser: CefBrowser,
frame: CefFrame,
request: CefRequest,
isNavigation: Boolean,
isDownload: Boolean,
requestInitiator: String,
disableDefaultHandling: BoolRef,
): CefResourceRequestHandler? {
logger.info { "Load resource: ${frame.name} - ${request.url}" }
return null
}
}
// Loosely based on
// https://github.com/JetBrains/jcef/blob/main/java/org/cef/browser/CefBrowserOsr.java
private inner class RenderHandler : CefRenderHandlerAdapter() {
@@ -222,6 +241,7 @@ class KcefWebView {
KCEF.newClientBlocking().apply {
addDisplayHandler(DisplayHandler())
addLoadHandler(LoadHandler())
addRequestHandler(RequestHandler())
}
logger.info { "Start loading cookies" }

View File

@@ -468,7 +468,10 @@ fun applicationSetup() {
}
}
download { github() }
settings { windowlessRenderingEnabled = true }
settings {
windowlessRenderingEnabled = true
cachePath = (Path(applicationDirs.dataRoot) / "cache/kcef").toString()
}
appHandler(
KCEF.AppHandler(
arrayOf("--disable-gpu", "--off-screen-rendering-enabled", "--disable-dev-shm-usage"),