add support YouTube v18.14.40

This commit is contained in:
inotia00 2023-04-13 16:09:11 +09:00
parent 90b7577914
commit e2a57503ee
4 changed files with 16 additions and 25 deletions

View File

@ -13,7 +13,8 @@ import app.revanced.patcher.annotation.Package
"18.10.37",
"18.11.36",
"18.12.35",
"18.13.38"
"18.13.38",
"18.14.40"
)
)]
)

View File

@ -6,8 +6,8 @@ import org.jf.dexlib2.AccessFlags
import org.jf.dexlib2.Opcode
object MiniPlayerOverrideFingerprint : MethodFingerprint(
returnType = "Z",
access = AccessFlags.PUBLIC or AccessFlags.STATIC,
returnType = "L",
access = AccessFlags.PUBLIC or AccessFlags.FINAL,
parameters = listOf("L"),
opcodes = listOf(Opcode.INVOKE_STATIC), // anchor to insert the instruction
strings = listOf("appName")
)

View File

@ -1,12 +0,0 @@
package app.revanced.patches.youtube.layout.general.tabletminiplayer.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.AccessFlags
object MiniPlayerOverrideParentFingerprint : MethodFingerprint(
returnType = "L",
access = AccessFlags.PUBLIC or AccessFlags.STATIC,
parameters = listOf("L"),
strings = listOf("VIDEO_QUALITIES_QUICK_MENU_BOTTOM_SHEET_FRAGMENT")
)

View File

@ -21,6 +21,7 @@ import app.revanced.patches.youtube.misc.resourceid.patch.SharedResourceIdPatch
import app.revanced.patches.youtube.misc.settings.resource.patch.SettingsPatch
import app.revanced.util.integrations.Constants.GENERAL
import org.jf.dexlib2.Opcode
import org.jf.dexlib2.builder.instruction.BuilderInstruction21c
import org.jf.dexlib2.iface.instruction.OneRegisterInstruction
@Patch
@ -38,7 +39,7 @@ class TabletMiniPlayerPatch : BytecodePatch(
listOf(
MiniPlayerDimensionsCalculatorFingerprint,
MiniPlayerResponseModelSizeCheckFingerprint,
MiniPlayerOverrideParentFingerprint
MiniPlayerOverrideFingerprint
)
) {
override fun execute(context: BytecodeContext): PatchResult {
@ -50,15 +51,16 @@ class TabletMiniPlayerPatch : BytecodePatch(
} ?: return MiniPlayerOverrideNoContextFingerprint.toErrorResult()
} ?: return MiniPlayerDimensionsCalculatorFingerprint.toErrorResult()
MiniPlayerOverrideParentFingerprint.result?.let { parentResult ->
MiniPlayerOverrideFingerprint.also { it.resolve(context, parentResult.classDef) }.result?.let { result ->
(context.toMethodWalker(result.method)
.nextMethod(result.scanResult.patternScanResult!!.startIndex, true)
.getMethod() as MutableMethod)
MiniPlayerOverrideFingerprint.result?.let {
val targetIndex = it.mutableMethod.implementation!!.instructions.indexOfFirst { instruction ->
instruction.opcode == Opcode.CONST_STRING &&
(instruction as BuilderInstruction21c).reference.toString() == "appName"
} + 2
(context.toMethodWalker(it.method)
.nextMethod(targetIndex, true)
.getMethod() as MutableMethod)
.instructionProxyCall()
} ?: return MiniPlayerOverrideFingerprint.toErrorResult()
} ?: return MiniPlayerOverrideParentFingerprint.toErrorResult()
} ?: return MiniPlayerOverrideFingerprint.toErrorResult()
MiniPlayerResponseModelSizeCheckFingerprint.result?.let {
val (_, _, _) = it.addProxyCall()