Skip to content

Commit

Permalink
Merge pull request #83 from DatL4g/main Support custom request contex…
Browse files Browse the repository at this point in the history
…t handler

Updated jcef to latest version and KCEF for improved custom request context handler
  • Loading branch information
KevinnZou committed Jan 8, 2024
2 parents 1d471bc + b81e721 commit 75c80e7
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 1 deletion.
2 changes: 1 addition & 1 deletion webview/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ kotlin {
val desktopMain by getting {
dependencies {
implementation(compose.desktop.common)
api("dev.datlag:kcef:2023.10.13")
api("dev.datlag:kcef:2024.01.07.1")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-swing:$coroutines")
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.multiplatform.webview.web

import com.multiplatform.webview.setting.WebSettings
import dev.datlag.kcef.KCEFResourceRequestHandler
import org.cef.browser.CefBrowser
import org.cef.browser.CefFrame
import org.cef.browser.CefRequestContext
import org.cef.network.CefRequest

internal fun createModifiedRequestContext(settings: WebSettings): CefRequestContext {
return CefRequestContext.createContext { browser, frame, request, isNavigation, isDownload, requestInitiator, disableDefaultHandling ->
object : KCEFResourceRequestHandler(
getGlobalDefaultHandler(browser, frame, request, isNavigation, isDownload, requestInitiator, disableDefaultHandling),
) {
override fun onBeforeResourceLoad(
browser: CefBrowser?,
frame: CefFrame?,
request: CefRequest?,
): Boolean {
if (request != null) {
settings.customUserAgentString?.let(request::setUserAgentString)
}
return super.onBeforeResourceLoad(browser, frame, request)
}
}
}
}

internal fun CefRequest.setUserAgentString(userAgent: String) {
setHeaderByName("User-Agent", userAgent, true)
}
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ fun DesktopWebView(
client,
state.webSettings.desktopWebSettings.offScreenRendering,
state.webSettings.desktopWebSettings.transparent,
state.webSettings,
fileContent,
) {
val rendering =
Expand All @@ -97,6 +98,7 @@ fun DesktopWebView(
current.url,
rendering,
state.webSettings.desktopWebSettings.transparent,
createModifiedRequestContext(state.webSettings),
)

is WebContent.Data ->
Expand All @@ -120,6 +122,7 @@ fun DesktopWebView(
KCEFBrowser.BLANK_URI,
rendering,
state.webSettings.desktopWebSettings.transparent,
createModifiedRequestContext(state.webSettings),
)
}
}
Expand Down

0 comments on commit 75c80e7

Please sign in to comment.