From bfe367efd0405408442f34f171497e3044e3220c Mon Sep 17 00:00:00 2001 From: rhunk <101876869+rhunk@users.noreply.github.com> Date: Sat, 2 Dec 2023 23:02:05 +0100 Subject: [PATCH] fix(mapper): content callback class --- .../me/rhunk/snapenhance/mapper/impl/CallbackMapper.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mapper/src/main/kotlin/me/rhunk/snapenhance/mapper/impl/CallbackMapper.kt b/mapper/src/main/kotlin/me/rhunk/snapenhance/mapper/impl/CallbackMapper.kt index 0176fb1a..c48a2dcb 100644 --- a/mapper/src/main/kotlin/me/rhunk/snapenhance/mapper/impl/CallbackMapper.kt +++ b/mapper/src/main/kotlin/me/rhunk/snapenhance/mapper/impl/CallbackMapper.kt @@ -4,6 +4,9 @@ import me.rhunk.snapenhance.mapper.AbstractClassMapper import me.rhunk.snapenhance.mapper.ext.getClassName import me.rhunk.snapenhance.mapper.ext.getSuperClassName import me.rhunk.snapenhance.mapper.ext.isFinal +import org.jf.dexlib2.Opcode +import org.jf.dexlib2.iface.instruction.formats.Instruction21t +import org.jf.dexlib2.iface.instruction.formats.Instruction22t class CallbackMapper : AbstractClassMapper() { init { @@ -18,7 +21,9 @@ class CallbackMapper : AbstractClassMapper() { if (clazz.getClassName().endsWith("\$CppProxy")) return@filter false // ignore dummy ContentCallback class - if (superclassName.endsWith("ContentCallback") && !clazz.methods.first { it.name == "" }.parameterTypes.contains("Z")) + if (superclassName.endsWith("ContentCallback") && clazz.methods.none { it.name == "handleContentResult" && it.implementation?.instructions?.firstOrNull { instruction -> + instruction is Instruction22t || instruction is Instruction21t + } != null}) return@filter false val superClass = getClass(clazz.superclass) ?: return@filter false