From 136a936286a40e2ff32b0c628916ac6490429c98 Mon Sep 17 00:00:00 2001 From: kunfei Date: Sun, 16 Apr 2023 22:52:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=BA=90=E6=B7=BB=E5=8A=A0jsLib,=E6=9C=AA?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/help/rhino/RhinoScriptEngine.kt | 18 ---------------- .../java/io/legado/app/model/SharedJsScope.kt | 21 ++++++++++++------- 2 files changed, 13 insertions(+), 26 deletions(-) delete mode 100644 app/src/main/java/io/legado/app/help/rhino/RhinoScriptEngine.kt diff --git a/app/src/main/java/io/legado/app/help/rhino/RhinoScriptEngine.kt b/app/src/main/java/io/legado/app/help/rhino/RhinoScriptEngine.kt deleted file mode 100644 index 351931974..000000000 --- a/app/src/main/java/io/legado/app/help/rhino/RhinoScriptEngine.kt +++ /dev/null @@ -1,18 +0,0 @@ -package io.legado.app.help.rhino - -import org.mozilla.javascript.Context - -object RhinoScriptEngine { - - - fun run(function: (Context) -> Any?): Any? { - return try { - val context = Context.enter() - function.invoke(context) - } finally { - Context.exit() - } - } - - -} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/model/SharedJsScope.kt b/app/src/main/java/io/legado/app/model/SharedJsScope.kt index ddecbc91a..5a51a0bdc 100644 --- a/app/src/main/java/io/legado/app/model/SharedJsScope.kt +++ b/app/src/main/java/io/legado/app/model/SharedJsScope.kt @@ -3,22 +3,22 @@ package io.legado.app.model import com.google.gson.reflect.TypeToken import com.script.SimpleBindings import io.legado.app.constant.SCRIPT_ENGINE -import io.legado.app.help.rhino.RhinoScriptEngine +import io.legado.app.help.http.newCallStrResponse +import io.legado.app.help.http.okHttpClient import io.legado.app.utils.GSON import io.legado.app.utils.MD5Utils +import io.legado.app.utils.isAbsUrl import io.legado.app.utils.isJsonObject +import org.mozilla.javascript.Context import org.mozilla.javascript.Scriptable import java.lang.ref.WeakReference -import kotlin.collections.Map -import kotlin.collections.forEach -import kotlin.collections.hashMapOf import kotlin.collections.set object SharedJsScope { private val scopeMap = hashMapOf>() - fun getScope(jsLib: String?): Scriptable? { + suspend fun getScope(jsLib: String?): Scriptable? { if (jsLib.isNullOrBlank()) { return null } @@ -27,7 +27,7 @@ object SharedJsScope { if (scope == null) { val context = SCRIPT_ENGINE.getScriptContext(SimpleBindings()) scope = SCRIPT_ENGINE.getRuntimeScope(context) - RhinoScriptEngine.run { + Context.enter().use { if (jsLib.isJsonObject()) { val jsMap: Map = GSON.fromJson( jsLib, @@ -37,8 +37,13 @@ object SharedJsScope { String::class.java ).type ) - jsMap.values.forEach { url -> - + jsMap.values.forEach { value -> + if (value.isAbsUrl()) { + val js = okHttpClient.newCallStrResponse { + url(value) + }.body + it.evaluateString(scope, js, "jsLib", 1, null) + } } } else { it.evaluateString(scope, jsLib, "jsLib", 1, null)