From 165f4b45e02800e9472d173eccf44bd3fe0fecc6 Mon Sep 17 00:00:00 2001 From: Pun Butrach Date: Mon, 12 Jan 2026 17:05:23 +0700 Subject: [PATCH] refactor(primevideo): PlaybackSpeedPatch --- .../primevideo/video/speed/Fingerprints.kt | 31 ++++++++++--------- .../video/speed/PlaybackSpeedPatch.kt | 9 +++--- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/patches/src/main/kotlin/app/revanced/patches/primevideo/video/speed/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/primevideo/video/speed/Fingerprints.kt index bd4431d56..933e3dfda 100644 --- a/patches/src/main/kotlin/app/revanced/patches/primevideo/video/speed/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/primevideo/video/speed/Fingerprints.kt @@ -1,23 +1,26 @@ package app.revanced.patches.primevideo.video.speed -import app.revanced.patcher.fingerprint +import app.revanced.patcher.BytecodePatchContextMethodMatching.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.accessFlags +import app.revanced.patcher.definingClass +import app.revanced.patcher.name +import app.revanced.patcher.parameterTypes +import app.revanced.patcher.patch.BytecodePatchContext +import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val playbackUserControlsInitializeFingerprint = fingerprint { +internal val BytecodePatchContext.playbackUserControlsInitializeMethod by gettingFirstMutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC) - parameters("Lcom/amazon/avod/playbackclient/PlaybackInitializationContext;") - returns("V") - custom { method, classDef -> - method.name == "initialize" && classDef.type == "Lcom/amazon/avod/playbackclient/activity/feature/PlaybackUserControlsFeature;" - } + parameterTypes("Lcom/amazon/avod/playbackclient/PlaybackInitializationContext;") + returnType("V") + name("initialize") + definingClass("Lcom/amazon/avod/playbackclient/activity/feature/PlaybackUserControlsFeature;") } -internal val playbackUserControlsPrepareForPlaybackFingerprint = fingerprint { +internal val BytecodePatchContext.playbackUserControlsPrepareForPlaybackMethod by gettingFirstMutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC) - parameters("Lcom/amazon/avod/playbackclient/PlaybackContext;") - returns("V") - custom { method, classDef -> - method.name == "prepareForPlayback" && - classDef.type == "Lcom/amazon/avod/playbackclient/activity/feature/PlaybackUserControlsFeature;" - } + parameterTypes("Lcom/amazon/avod/playbackclient/PlaybackContext;") + returnType("V") + name("prepareForPlayback") + definingClass("Lcom/amazon/avod/playbackclient/activity/feature/PlaybackUserControlsFeature;") } \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/primevideo/video/speed/PlaybackSpeedPatch.kt b/patches/src/main/kotlin/app/revanced/patches/primevideo/video/speed/PlaybackSpeedPatch.kt index 36829f818..3f3f7476b 100644 --- a/patches/src/main/kotlin/app/revanced/patches/primevideo/video/speed/PlaybackSpeedPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/primevideo/video/speed/PlaybackSpeedPatch.kt @@ -3,6 +3,7 @@ package app.revanced.patches.primevideo.video.speed import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.patch.bytecodePatch +import app.revanced.patcher.patch.creatingBytecodePatch import app.revanced.patches.primevideo.misc.extension.sharedExtensionPatch import app.revanced.util.getReference import app.revanced.util.indexOfFirstInstructionOrThrow @@ -13,8 +14,8 @@ import com.android.tools.smali.dexlib2.iface.reference.FieldReference private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/primevideo/videoplayer/PlaybackSpeedPatch;" -val playbackSpeedPatch = bytecodePatch( - name = "Playback speed", +@Suppress("unused", "ObjectPropertyName") +val `Playback speed` by creatingBytecodePatch( description = "Adds playback speed controls to the video player.", ) { dependsOn( @@ -26,7 +27,7 @@ val playbackSpeedPatch = bytecodePatch( ) apply { - playbackUserControlsInitializeFingerprint.method.apply { + playbackUserControlsInitializeMethod.apply { val getIndex = indexOfFirstInstructionOrThrow { opcode == Opcode.IPUT_OBJECT && getReference()?.name == "mUserControls" @@ -42,7 +43,7 @@ val playbackSpeedPatch = bytecodePatch( ) } - playbackUserControlsPrepareForPlaybackFingerprint.method.apply { + playbackUserControlsPrepareForPlaybackMethod.apply { addInstructions( 0, """