refactor(primevideo): PlaybackSpeedPatch

This commit is contained in:
Pun Butrach
2026-01-12 17:05:23 +07:00
parent fcce0a6948
commit 165f4b45e0
2 changed files with 22 additions and 18 deletions

View File

@@ -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;")
}

View File

@@ -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<FieldReference>()?.name == "mUserControls"
@@ -42,7 +43,7 @@ val playbackSpeedPatch = bytecodePatch(
)
}
playbackUserControlsPrepareForPlaybackFingerprint.method.apply {
playbackUserControlsPrepareForPlaybackMethod.apply {
addInstructions(
0,
"""