refactor: Simplify extensions register declaration (#3084)

This commit is contained in:
LisoUseInAIKyrios 2024-10-26 15:47:36 -04:00 committed by oSumAtrIX
parent cf8104bfb4
commit beb643678d
No known key found for this signature in database
GPG Key ID: A9B3094ACDB604B4
4 changed files with 8 additions and 9 deletions

View File

@ -20,7 +20,7 @@ internal val startActivityInitHook = extensionHook(
contextRegisterResolver = { method ->
val moveResultInstruction = method.implementation!!.instructions.elementAt(getApplicationContextIndex + 1)
as OneRegisterInstruction
moveResultInstruction.registerA
"v${moveResultInstruction.registerA}"
},
) {
opcodes(

View File

@ -20,7 +20,7 @@ internal val homeActivityInitHook = extensionHook(
contextRegisterResolver = { method ->
val moveResultInstruction = method.implementation!!.instructions.elementAt(getApplicationContextIndex + 1)
as OneRegisterInstruction
moveResultInstruction.registerA
"v${moveResultInstruction.registerA}"
},
) {
opcodes(

View File

@ -7,7 +7,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstructions
import app.revanced.patcher.fingerprint
import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.exception
import app.revanced.util.matchOrThrow
import com.android.tools.smali.dexlib2.iface.Method
import java.net.URLDecoder
import java.util.jar.JarFile
@ -77,24 +77,24 @@ fun sharedExtensionPatch(
class ExtensionHook internal constructor(
val fingerprint: Fingerprint,
private val insertIndexResolver: ((Method) -> Int),
private val contextRegisterResolver: (Method) -> Int,
private val contextRegisterResolver: (Method) -> String,
) {
operator fun invoke(extensionClassDescriptor: String) {
fingerprint.match?.mutableMethod?.let { method ->
fingerprint.matchOrThrow.mutableMethod.let { method ->
val insertIndex = insertIndexResolver(method)
val contextRegister = contextRegisterResolver(method)
method.addInstruction(
insertIndex,
"invoke-static/range { v$contextRegister .. v$contextRegister }, " +
"invoke-static/range { $contextRegister .. $contextRegister }, " +
"$extensionClassDescriptor->setContext(Landroid/content/Context;)V",
)
} ?: throw fingerprint.exception
}
}
}
fun extensionHook(
insertIndexResolver: ((Method) -> Int) = { 0 },
contextRegisterResolver: (Method) -> Int = { it.implementation!!.registerCount - 1 },
contextRegisterResolver: (Method) -> String = { "p0" },
fingerprintBuilderBlock: FingerprintBuilder.() -> Unit,
) = ExtensionHook(fingerprint(block = fingerprintBuilderBlock), insertIndexResolver, contextRegisterResolver)

View File

@ -239,7 +239,6 @@ object PreferenceScreen : BasePreferenceScreen() {
val SHORTS = Screen(
key = "revanced_settings_screen_06_shorts",
summaryKey = null,
sorting = Sorting.UNSORTED,
)
// Don't sort, because title sorting scatters the custom color preferences.