From e2a57503ee85484ca2adf9985aef88c8612f067e Mon Sep 17 00:00:00 2001 From: inotia00 Date: Thu, 13 Apr 2023 16:09:11 +0900 Subject: [PATCH] add support YouTube v18.14.40 --- .../shared/annotation/YouTubeCompatibility.kt | 3 ++- .../MiniPlayerOverrideFingerprint.kt | 6 +++--- .../MiniPlayerOverrideParentFingerprint.kt | 12 ----------- .../patch/TabletMiniPlayerPatch.kt | 20 ++++++++++--------- 4 files changed, 16 insertions(+), 25 deletions(-) delete mode 100644 src/main/kotlin/app/revanced/patches/youtube/layout/general/tabletminiplayer/fingerprints/MiniPlayerOverrideParentFingerprint.kt diff --git a/src/main/kotlin/app/revanced/patches/shared/annotation/YouTubeCompatibility.kt b/src/main/kotlin/app/revanced/patches/shared/annotation/YouTubeCompatibility.kt index 206768548..75a1f94a5 100644 --- a/src/main/kotlin/app/revanced/patches/shared/annotation/YouTubeCompatibility.kt +++ b/src/main/kotlin/app/revanced/patches/shared/annotation/YouTubeCompatibility.kt @@ -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" ) )] ) diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/general/tabletminiplayer/fingerprints/MiniPlayerOverrideFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/general/tabletminiplayer/fingerprints/MiniPlayerOverrideFingerprint.kt index f1da3b9c3..d40bd4d04 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/general/tabletminiplayer/fingerprints/MiniPlayerOverrideFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/general/tabletminiplayer/fingerprints/MiniPlayerOverrideFingerprint.kt @@ -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") ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/general/tabletminiplayer/fingerprints/MiniPlayerOverrideParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/general/tabletminiplayer/fingerprints/MiniPlayerOverrideParentFingerprint.kt deleted file mode 100644 index d80571047..000000000 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/general/tabletminiplayer/fingerprints/MiniPlayerOverrideParentFingerprint.kt +++ /dev/null @@ -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") -) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/general/tabletminiplayer/patch/TabletMiniPlayerPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/general/tabletminiplayer/patch/TabletMiniPlayerPatch.kt index 391cfc67a..1d36f67cc 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/general/tabletminiplayer/patch/TabletMiniPlayerPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/general/tabletminiplayer/patch/TabletMiniPlayerPatch.kt @@ -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()