Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Publish
on:
release:
types: [released, prereleased]
jobs:
publish:
name: Release build and publish
runs-on: macOS-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Make Gradle wrapper executable
run: chmod +x gradlew
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 21
- name: Publish to MavenCentral
run: ./gradlew publishToMavenCentral --no-configuration-cache
env:
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.SIGNING_KEY_ID }}
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }}
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.GPG_KEY_CONTENTS }}
10 changes: 5 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,16 @@ android.compileSdk=36
android.targetSdk=36
android.minSdk=21
#Versions
GROUP=io.github.kevinnzou
GROUP=io.github.threethan
POM_ARTIFACT_ID=compose-webview-multiplatform
VERSION_NAME=2.0.4
POM_NAME=Compose WebView Multiplatform
POM_INCEPTION_YEAR=2023
POM_DESCRIPTION=WebView for JetBrains Compose Multiplatform
POM_URL=https://github.com/KevinnZou/compose-webview-multiplatform
POM_SCM_URL=https://github.com/KevinnZou/compose-webview-multiplatform
POM_SCM_CONNECTION=scm:git:git://github.com/KevinnZou/compose-webview-multiplatform.git
POM_SCM_DEV_CONNECTION=scm:git:ssh://git@github.com/KevinnZou/compose-webview-multiplatform.git
POM_URL=https://github.com/threethan/compose-webview-multiplatform
POM_SCM_URL=https://github.com/threethan/compose-webview-multiplatform
POM_SCM_CONNECTION=scm:git:git://github.com/threethan/compose-webview-multiplatform.git
POM_SCM_DEV_CONNECTION=scm:git:ssh://git@github.com/threethan/compose-webview-multiplatform.git
POM_LICENCE_NAME=The Apache Software License, Version 2.0
POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
POM_LICENCE_DIST=repo
Expand Down
3 changes: 3 additions & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ pluginManagement {
mavenCentral()
}
}
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
}

dependencyResolutionManagement {
repositories {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,36 @@ 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.handler.CefRequestHandler
import org.cef.handler.CefRequestHandlerAdapter
import org.cef.handler.CefResourceRequestHandler
import org.cef.misc.BoolRef
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)
internal fun createModifiedRequestHandler(settings: WebSettings): CefRequestHandler {
return object : CefRequestHandlerAdapter() {
override fun getResourceRequestHandler(
browser: CefBrowser?,
frame: CefFrame?,
request: CefRequest?,
isNavigation: Boolean,
isDownload: Boolean,
requestInitiator: String?,
disableDefaultHandling: BoolRef?,
): CefResourceRequestHandler {
return 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)
}
return super.onBeforeResourceLoad(browser, frame, request)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import dev.datlag.kcef.KCEF
import dev.datlag.kcef.KCEFBrowser
import dev.datlag.kcef.KCEFClient
import org.cef.browser.CefRendering
import org.cef.browser.CefRequestContext
import java.util.concurrent.TimeUnit

/**
Expand Down Expand Up @@ -53,7 +52,6 @@ actual class WebViewFactoryParam(
CefRendering.DEFAULT
}
inline val transparent: Boolean get() = webSettings.desktopWebSettings.transparent
val requestContext: CefRequestContext get() = createModifiedRequestContext(webSettings)
}

actual class PlatformWebViewParams
Expand All @@ -62,33 +60,39 @@ actual class PlatformWebViewParams
actual fun defaultWebViewFactory(param: WebViewFactoryParam): NativeWebView =
when (val content = param.state.content) {
is WebContent.Url ->
param.client.createBrowser(
content.url,
param.rendering,
param.transparent,
param.requestContext,
)
param.client
.also {
it.addRequestHandler(createModifiedRequestHandler(param.webSettings))
}.createBrowser(
content.url,
param.rendering,
param.transparent,
)
is WebContent.Data ->
param.client.createBrowser(
KCEFBrowser.BLANK_URI,
param.rendering,
param.transparent,
)
is WebContent.File -> {
param.client.createBrowser(
KCEFBrowser.BLANK_URI,
param.rendering,
param.transparent,
param.requestContext,
)
param.client
.also {
it.addRequestHandler(createModifiedRequestHandler(param.webSettings))
}.createBrowser(
KCEFBrowser.BLANK_URI,
param.rendering,
param.transparent,
)
}
else ->
param.client.createBrowser(
KCEFBrowser.BLANK_URI,
param.rendering,
param.transparent,
param.requestContext,
)
param.client
.also {
it.addRequestHandler(createModifiedRequestHandler(param.webSettings))
}.createBrowser(
KCEFBrowser.BLANK_URI,
param.rendering,
param.transparent,
)
}

/**
Expand Down