mirror of
https://github.com/wulkanowy/wulkanowy.git
synced 2025-01-31 15:08:21 +01:00
Make WebkitCookieManagerProxy no-op if webview is not available on the device (#2427)
This commit is contained in:
parent
6f4a8d5534
commit
736d16a7ab
@ -1,5 +1,6 @@
|
|||||||
package io.github.wulkanowy.utils
|
package io.github.wulkanowy.utils
|
||||||
|
|
||||||
|
import android.util.AndroidRuntimeException
|
||||||
import java.net.CookiePolicy
|
import java.net.CookiePolicy
|
||||||
import java.net.CookieStore
|
import java.net.CookieStore
|
||||||
import java.net.HttpCookie
|
import java.net.HttpCookie
|
||||||
@ -9,7 +10,18 @@ import java.net.CookieManager as JavaCookieManager
|
|||||||
|
|
||||||
class WebkitCookieManagerProxy : JavaCookieManager(null, CookiePolicy.ACCEPT_ALL) {
|
class WebkitCookieManagerProxy : JavaCookieManager(null, CookiePolicy.ACCEPT_ALL) {
|
||||||
|
|
||||||
private val webkitCookieManager: WebkitCookieManager = WebkitCookieManager.getInstance()
|
private val webkitCookieManager: WebkitCookieManager? = getWebkitCookieManager()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see [https://stackoverflow.com/a/70354583/6695449]
|
||||||
|
*/
|
||||||
|
private fun getWebkitCookieManager(): WebkitCookieManager? {
|
||||||
|
return try {
|
||||||
|
WebkitCookieManager.getInstance()
|
||||||
|
} catch (e: AndroidRuntimeException) {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun put(uri: URI?, responseHeaders: Map<String?, List<String?>>?) {
|
override fun put(uri: URI?, responseHeaders: Map<String?, List<String?>>?) {
|
||||||
if (uri == null || responseHeaders == null) return
|
if (uri == null || responseHeaders == null) return
|
||||||
@ -23,7 +35,7 @@ class WebkitCookieManagerProxy : JavaCookieManager(null, CookiePolicy.ACCEPT_ALL
|
|||||||
|
|
||||||
// process each of the headers
|
// process each of the headers
|
||||||
for (headerValue in responseHeaders[headerKey].orEmpty()) {
|
for (headerValue in responseHeaders[headerKey].orEmpty()) {
|
||||||
webkitCookieManager.setCookie(url, headerValue)
|
webkitCookieManager?.setCookie(url, headerValue)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -34,7 +46,7 @@ class WebkitCookieManagerProxy : JavaCookieManager(null, CookiePolicy.ACCEPT_ALL
|
|||||||
): Map<String, List<String>> {
|
): Map<String, List<String>> {
|
||||||
require(!(uri == null || requestHeaders == null)) { "Argument is null" }
|
require(!(uri == null || requestHeaders == null)) { "Argument is null" }
|
||||||
val res = mutableMapOf<String, List<String>>()
|
val res = mutableMapOf<String, List<String>>()
|
||||||
val cookie = webkitCookieManager.getCookie(uri.toString())
|
val cookie = webkitCookieManager?.getCookie(uri.toString())
|
||||||
if (cookie != null) res["Cookie"] = listOf(cookie)
|
if (cookie != null) res["Cookie"] = listOf(cookie)
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
@ -50,7 +62,7 @@ class WebkitCookieManagerProxy : JavaCookieManager(null, CookiePolicy.ACCEPT_ALL
|
|||||||
cookies.remove(uri, cookie)
|
cookies.remove(uri, cookie)
|
||||||
|
|
||||||
override fun removeAll(): Boolean {
|
override fun removeAll(): Boolean {
|
||||||
webkitCookieManager.removeAllCookies(null)
|
webkitCookieManager?.removeAllCookies(null) ?: return false
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user