feat: loop media playback

- refactor mappings wrapper
This commit is contained in:
rhunk
2024-01-01 21:41:12 +01:00
parent 1b566db184
commit f1b0bc41f2
13 changed files with 121 additions and 23 deletions

View File

@ -0,0 +1,32 @@
package me.rhunk.snapenhance.mapper.impl
import me.rhunk.snapenhance.mapper.AbstractClassMapper
import me.rhunk.snapenhance.mapper.ext.findConstString
import me.rhunk.snapenhance.mapper.ext.getClassName
import org.jf.dexlib2.iface.instruction.formats.Instruction35c
import org.jf.dexlib2.iface.reference.MethodReference
class OperaViewerParamsMapper : AbstractClassMapper() {
init {
mapper {
for (classDef in classes) {
classDef.fields.firstOrNull { it.type == "Ljava/util/concurrent/ConcurrentHashMap;" } ?: continue
if (classDef.methods.firstOrNull { it.name == "toString" }?.implementation?.findConstString("Params") != true) continue
val putMethod = classDef.methods.firstOrNull { method ->
method.implementation?.instructions?.any {
val instruction = it as? Instruction35c ?: return@any false
val reference = instruction.reference as? MethodReference ?: return@any false
reference.name == "put" && reference.definingClass == "Ljava/util/concurrent/ConcurrentHashMap;"
} == true
} ?: return@mapper
addMapping("OperaViewerParams",
"class" to classDef.getClassName(),
"putMethod" to putMethod.name
)
return@mapper
}
}
}
}

View File

@ -25,6 +25,7 @@ class TestMappings {
FriendRelationshipChangerMapper::class,
ViewBinderMapper::class,
FriendingDataSourcesMapper::class,
OperaViewerParamsMapper::class,
)
val gson = GsonBuilder().setPrettyPrinting().create()