Skip to content

Commit 68e7690

Browse files
authored
Merge pull request #398 from threethan/cm-fix
(Desktop) Set UA via request handler instead of context: Fixes CookieManager
2 parents ed86a62 + 07dd86b commit 68e7690

File tree

2 files changed

+51
-34
lines changed

2 files changed

+51
-34
lines changed

webview/src/desktopMain/kotlin/com/multiplatform/webview/web/CefRequestExt.kt

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,36 @@ import com.multiplatform.webview.setting.WebSettings
44
import dev.datlag.kcef.KCEFResourceRequestHandler
55
import org.cef.browser.CefBrowser
66
import org.cef.browser.CefFrame
7-
import org.cef.browser.CefRequestContext
7+
import org.cef.handler.CefRequestHandler
8+
import org.cef.handler.CefRequestHandlerAdapter
9+
import org.cef.handler.CefResourceRequestHandler
10+
import org.cef.misc.BoolRef
811
import org.cef.network.CefRequest
912

10-
internal fun createModifiedRequestContext(settings: WebSettings): CefRequestContext {
11-
return CefRequestContext.createContext { browser, frame, request, isNavigation, isDownload, requestInitiator, disableDefaultHandling ->
12-
object : KCEFResourceRequestHandler(
13-
getGlobalDefaultHandler(browser, frame, request, isNavigation, isDownload, requestInitiator, disableDefaultHandling),
14-
) {
15-
override fun onBeforeResourceLoad(
16-
browser: CefBrowser?,
17-
frame: CefFrame?,
18-
request: CefRequest?,
19-
): Boolean {
20-
if (request != null) {
21-
settings.customUserAgentString?.let(request::setUserAgentString)
13+
internal fun createModifiedRequestHandler(settings: WebSettings): CefRequestHandler {
14+
return object : CefRequestHandlerAdapter() {
15+
override fun getResourceRequestHandler(
16+
browser: CefBrowser?,
17+
frame: CefFrame?,
18+
request: CefRequest?,
19+
isNavigation: Boolean,
20+
isDownload: Boolean,
21+
requestInitiator: String?,
22+
disableDefaultHandling: BoolRef?,
23+
): CefResourceRequestHandler {
24+
return object : KCEFResourceRequestHandler(
25+
getGlobalDefaultHandler(browser, frame, request, isNavigation, isDownload, requestInitiator, disableDefaultHandling),
26+
) {
27+
override fun onBeforeResourceLoad(
28+
browser: CefBrowser?,
29+
frame: CefFrame?,
30+
request: CefRequest?,
31+
): Boolean {
32+
if (request != null) {
33+
settings.customUserAgentString?.let(request::setUserAgentString)
34+
}
35+
return super.onBeforeResourceLoad(browser, frame, request)
2236
}
23-
return super.onBeforeResourceLoad(browser, frame, request)
2437
}
2538
}
2639
}

webview/src/desktopMain/kotlin/com/multiplatform/webview/web/WebView.desktop.kt

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import dev.datlag.kcef.KCEF
99
import dev.datlag.kcef.KCEFBrowser
1010
import dev.datlag.kcef.KCEFClient
1111
import org.cef.browser.CefRendering
12-
import org.cef.browser.CefRequestContext
1312
import java.util.concurrent.TimeUnit
1413

1514
/**
@@ -53,7 +52,6 @@ actual class WebViewFactoryParam(
5352
CefRendering.DEFAULT
5453
}
5554
inline val transparent: Boolean get() = webSettings.desktopWebSettings.transparent
56-
val requestContext: CefRequestContext get() = createModifiedRequestContext(webSettings)
5755
}
5856

5957
actual class PlatformWebViewParams
@@ -62,33 +60,39 @@ actual class PlatformWebViewParams
6260
actual fun defaultWebViewFactory(param: WebViewFactoryParam): NativeWebView =
6361
when (val content = param.state.content) {
6462
is WebContent.Url ->
65-
param.client.createBrowser(
66-
content.url,
67-
param.rendering,
68-
param.transparent,
69-
param.requestContext,
70-
)
63+
param.client
64+
.also {
65+
it.addRequestHandler(createModifiedRequestHandler(param.webSettings))
66+
}.createBrowser(
67+
content.url,
68+
param.rendering,
69+
param.transparent,
70+
)
7171
is WebContent.Data ->
7272
param.client.createBrowser(
7373
KCEFBrowser.BLANK_URI,
7474
param.rendering,
7575
param.transparent,
7676
)
7777
is WebContent.File -> {
78-
param.client.createBrowser(
79-
KCEFBrowser.BLANK_URI,
80-
param.rendering,
81-
param.transparent,
82-
param.requestContext,
83-
)
78+
param.client
79+
.also {
80+
it.addRequestHandler(createModifiedRequestHandler(param.webSettings))
81+
}.createBrowser(
82+
KCEFBrowser.BLANK_URI,
83+
param.rendering,
84+
param.transparent,
85+
)
8486
}
8587
else ->
86-
param.client.createBrowser(
87-
KCEFBrowser.BLANK_URI,
88-
param.rendering,
89-
param.transparent,
90-
param.requestContext,
91-
)
88+
param.client
89+
.also {
90+
it.addRequestHandler(createModifiedRequestHandler(param.webSettings))
91+
}.createBrowser(
92+
KCEFBrowser.BLANK_URI,
93+
param.rendering,
94+
param.transparent,
95+
)
9296
}
9397

9498
/**

0 commit comments

Comments
 (0)