feat(core/scripting): disable script optimization
Signed-off-by: rhunk <101876869+rhunk@users.noreply.github.com>
This commit is contained in:
@@ -29,7 +29,11 @@ import kotlin.system.exitProcess
|
||||
class RemoteScriptManager(
|
||||
val context: RemoteSideContext,
|
||||
) : IScripting.Stub() {
|
||||
val runtime = ScriptRuntime(context.androidContext, context.log).apply {
|
||||
val runtime = ScriptRuntime(
|
||||
config = { context.config.root },
|
||||
androidContext = context.androidContext,
|
||||
logger = context.log
|
||||
).apply {
|
||||
scripting = this@RemoteScriptManager
|
||||
}
|
||||
|
||||
|
||||
@@ -1156,6 +1156,10 @@
|
||||
"disable_log_anonymization": {
|
||||
"name": "Disable Log Anonymization",
|
||||
"description": "Disables the anonymization of logs"
|
||||
},
|
||||
"disable_optimization": {
|
||||
"name": "Disable Optimization",
|
||||
"description": "Disables the optimization of scripts. This may cause performance issues."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -9,4 +9,5 @@ class Scripting : ConfigContainer() {
|
||||
val autoReload = unique("auto_reload", "snapchat_only", "all")
|
||||
val integratedUI = boolean("integrated_ui", false) { requireRestart() }
|
||||
val disableLogAnonymization = boolean("disable_log_anonymization", false) { requireRestart() }
|
||||
val disableOptimization = boolean("disable_optimization", false) { requireRestart() }
|
||||
}
|
||||
@@ -15,8 +15,10 @@ import me.rhunk.snapenhance.common.scripting.ktx.scriptableObject
|
||||
import me.rhunk.snapenhance.common.scripting.type.ModuleInfo
|
||||
import me.rhunk.snapenhance.common.scripting.type.Permissions
|
||||
import me.rhunk.snapenhance.common.scripting.ui.InterfaceManager
|
||||
import org.mozilla.javascript.*
|
||||
import org.mozilla.javascript.Function
|
||||
import org.mozilla.javascript.ScriptableObject
|
||||
import org.mozilla.javascript.Undefined
|
||||
import org.mozilla.javascript.Wrapper
|
||||
import java.io.Reader
|
||||
import java.lang.reflect.Modifier
|
||||
import kotlin.reflect.KClass
|
||||
@@ -235,7 +237,7 @@ class JSModule(
|
||||
}
|
||||
}
|
||||
|
||||
contextScope(shouldOptimize = true) {
|
||||
contextScope(shouldOptimize = scriptRuntime.config().scripting.disableOptimization.getNullable() != true) {
|
||||
evaluateReader(moduleObject, reader, moduleInfo.name, 1, null)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,14 @@ import android.content.Context
|
||||
import android.os.ParcelFileDescriptor
|
||||
import me.rhunk.snapenhance.bridge.scripting.IScripting
|
||||
import me.rhunk.snapenhance.common.BuildConfig
|
||||
import me.rhunk.snapenhance.common.config.impl.RootConfig
|
||||
import me.rhunk.snapenhance.common.logger.AbstractLogger
|
||||
import me.rhunk.snapenhance.common.scripting.type.readModuleInfo
|
||||
import org.mozilla.javascript.ScriptableObject
|
||||
import java.io.InputStream
|
||||
|
||||
open class ScriptRuntime(
|
||||
val config: () -> RootConfig,
|
||||
val androidContext: Context,
|
||||
logger: AbstractLogger,
|
||||
) {
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
package me.rhunk.snapenhance.common.scripting.ktx
|
||||
|
||||
import com.faendir.rhino_android.RhinoAndroidHelper
|
||||
import org.mozilla.javascript.Context
|
||||
import org.mozilla.javascript.*
|
||||
import org.mozilla.javascript.Function
|
||||
import org.mozilla.javascript.Scriptable
|
||||
import org.mozilla.javascript.ScriptableObject
|
||||
import org.mozilla.javascript.Wrapper
|
||||
import java.io.File
|
||||
|
||||
private val rhinoAndroidHelper = RhinoAndroidHelper(null as File?)
|
||||
|
||||
@@ -5,16 +5,16 @@ import me.rhunk.snapenhance.common.logger.AbstractLogger
|
||||
import me.rhunk.snapenhance.common.scripting.ScriptRuntime
|
||||
import me.rhunk.snapenhance.common.scripting.bindings.BindingSide
|
||||
import me.rhunk.snapenhance.core.ModContext
|
||||
import me.rhunk.snapenhance.core.scripting.impl.CoreEvents
|
||||
import me.rhunk.snapenhance.core.scripting.impl.CoreIPC
|
||||
import me.rhunk.snapenhance.core.scripting.impl.CoreMessaging
|
||||
import me.rhunk.snapenhance.core.scripting.impl.CoreScriptConfig
|
||||
import me.rhunk.snapenhance.core.scripting.impl.CoreScriptHooker
|
||||
import me.rhunk.snapenhance.core.scripting.impl.*
|
||||
|
||||
class CoreScriptRuntime(
|
||||
private val modContext: ModContext,
|
||||
logger: AbstractLogger,
|
||||
): ScriptRuntime(modContext.androidContext, logger) {
|
||||
): ScriptRuntime(
|
||||
config = { modContext.config },
|
||||
androidContext = modContext.androidContext,
|
||||
logger = logger
|
||||
) {
|
||||
// we assume that the bridge is reloaded the next time we connect to it
|
||||
private var isBridgeReloaded = false
|
||||
|
||||
|
||||
Reference in New Issue
Block a user