From f324e59ddd8c82fa6684b60c35c299cda4e50933 Mon Sep 17 00:00:00 2001 From: inotia00 Date: Thu, 23 Mar 2023 22:43:16 +0900 Subject: [PATCH] refactor(hide-video-ads): match with the official ReVanced's source code --- .../MainstreamVideoAdsFingerprint.kt | 11 +------- .../MainstreamVideoAdsParentFingerprint.kt | 7 ----- .../patch/videoads/GeneralVideoAdsPatch.kt | 27 +++++++------------ 3 files changed, 10 insertions(+), 35 deletions(-) delete mode 100644 src/main/kotlin/app/revanced/patches/shared/fingerprints/MainstreamVideoAdsParentFingerprint.kt diff --git a/src/main/kotlin/app/revanced/patches/shared/fingerprints/MainstreamVideoAdsFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/fingerprints/MainstreamVideoAdsFingerprint.kt index e8501858e..681c2250d 100644 --- a/src/main/kotlin/app/revanced/patches/shared/fingerprints/MainstreamVideoAdsFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/shared/fingerprints/MainstreamVideoAdsFingerprint.kt @@ -1,17 +1,8 @@ package app.revanced.patches.shared.fingerprints import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint -import org.jf.dexlib2.Opcode object MainstreamVideoAdsFingerprint : MethodFingerprint( returnType = "V", - parameters = listOf("L","Z"), - opcodes = listOf( - Opcode.IGET_OBJECT, - Opcode.INVOKE_VIRTUAL, - Opcode.MOVE_RESULT_OBJECT, - Opcode.CONST_4, - Opcode.IPUT_BOOLEAN, - Opcode.IF_NEZ - ) + strings = listOf("markFillRequested", "requestEnterSlot") ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/shared/fingerprints/MainstreamVideoAdsParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/shared/fingerprints/MainstreamVideoAdsParentFingerprint.kt deleted file mode 100644 index 58f24da78..000000000 --- a/src/main/kotlin/app/revanced/patches/shared/fingerprints/MainstreamVideoAdsParentFingerprint.kt +++ /dev/null @@ -1,7 +0,0 @@ -package app.revanced.patches.shared.fingerprints - -import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint - -object MainstreamVideoAdsParentFingerprint : MethodFingerprint( - strings = listOf("exitSlot") -) diff --git a/src/main/kotlin/app/revanced/patches/shared/patch/videoads/GeneralVideoAdsPatch.kt b/src/main/kotlin/app/revanced/patches/shared/patch/videoads/GeneralVideoAdsPatch.kt index d19f3fb6a..e32c2899f 100644 --- a/src/main/kotlin/app/revanced/patches/shared/patch/videoads/GeneralVideoAdsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/shared/patch/videoads/GeneralVideoAdsPatch.kt @@ -7,8 +7,6 @@ import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.data.toMethodWalker import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.instruction -import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint.Companion.resolve -import app.revanced.patcher.fingerprint.method.impl.MethodFingerprintResult import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchResult import app.revanced.patcher.patch.PatchResultSuccess @@ -16,36 +14,32 @@ import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patcher.util.smali.ExternalLabel import app.revanced.patches.shared.fingerprints.LegacyVideoAdsFingerprint import app.revanced.patches.shared.fingerprints.MainstreamVideoAdsFingerprint -import app.revanced.patches.shared.fingerprints.MainstreamVideoAdsParentFingerprint @Name("general-video-ads-patch") @Version("0.0.1") class GeneralVideoAdsPatch : BytecodePatch( listOf( LegacyVideoAdsFingerprint, - MainstreamVideoAdsParentFingerprint, + MainstreamVideoAdsFingerprint, ) ) { override fun execute(context: BytecodeContext): PatchResult { val legacyVideoAdsResult = LegacyVideoAdsFingerprint.result ?: return LegacyVideoAdsFingerprint.toErrorResult() + val mainstreamVideoAdsResult = MainstreamVideoAdsFingerprint.result ?: return MainstreamVideoAdsFingerprint.toErrorResult() legacyVideoAdsMethod = context.toMethodWalker(legacyVideoAdsResult.method) .nextMethod(13, true) .getMethod() as MutableMethod - MainstreamVideoAdsParentFingerprint.result?.let { parentResult -> - MainstreamVideoAdsFingerprint.also { it.resolve(context, parentResult.classDef) }.result?.let { - mainstreamVideoAdsResult = it - } ?: return MainstreamVideoAdsFingerprint.toErrorResult() - } ?: return MainstreamVideoAdsParentFingerprint.toErrorResult() + mainstreamVideoAdsMethod = mainstreamVideoAdsResult.mutableMethod return PatchResultSuccess() } internal companion object { lateinit var legacyVideoAdsMethod: MutableMethod - lateinit var mainstreamVideoAdsResult: MethodFingerprintResult + lateinit var mainstreamVideoAdsMethod: MutableMethod fun injectLegacyAds( descriptor: String @@ -54,23 +48,20 @@ class GeneralVideoAdsPatch : BytecodePatch( 0, """ invoke-static {}, $descriptor move-result v1 - """ + """ ) } fun injectMainstreamAds( descriptor: String ) { - val mainstreamVideoAdsMethod = mainstreamVideoAdsResult.mutableMethod - val insertIndex = mainstreamVideoAdsResult.scanResult.patternScanResult!!.endIndex - mainstreamVideoAdsMethod.addInstructions( - insertIndex, """ + 0, """ invoke-static {}, $descriptor - move-result v1 - if-nez v1, :show_video_ads + move-result v0 + if-nez v0, :show_video_ads return-void - """, listOf(ExternalLabel("show_video_ads", mainstreamVideoAdsMethod.instruction(insertIndex))) + """, listOf(ExternalLabel("show_video_ads", mainstreamVideoAdsMethod.instruction(0))) ) }