refactor(primevideo): PlaybackSpeedPatch
This commit is contained in:
parent
fcce0a6948
commit
165f4b45e0
2 changed files with 22 additions and 18 deletions
|
|
@ -1,23 +1,26 @@
|
||||||
package app.revanced.patches.primevideo.video.speed
|
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
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
|
||||||
internal val playbackUserControlsInitializeFingerprint = fingerprint {
|
internal val BytecodePatchContext.playbackUserControlsInitializeMethod by gettingFirstMutableMethodDeclaratively {
|
||||||
accessFlags(AccessFlags.PUBLIC)
|
accessFlags(AccessFlags.PUBLIC)
|
||||||
parameters("Lcom/amazon/avod/playbackclient/PlaybackInitializationContext;")
|
parameterTypes("Lcom/amazon/avod/playbackclient/PlaybackInitializationContext;")
|
||||||
returns("V")
|
returnType("V")
|
||||||
custom { method, classDef ->
|
name("initialize")
|
||||||
method.name == "initialize" && classDef.type == "Lcom/amazon/avod/playbackclient/activity/feature/PlaybackUserControlsFeature;"
|
definingClass("Lcom/amazon/avod/playbackclient/activity/feature/PlaybackUserControlsFeature;")
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val playbackUserControlsPrepareForPlaybackFingerprint = fingerprint {
|
internal val BytecodePatchContext.playbackUserControlsPrepareForPlaybackMethod by gettingFirstMutableMethodDeclaratively {
|
||||||
accessFlags(AccessFlags.PUBLIC)
|
accessFlags(AccessFlags.PUBLIC)
|
||||||
parameters("Lcom/amazon/avod/playbackclient/PlaybackContext;")
|
parameterTypes("Lcom/amazon/avod/playbackclient/PlaybackContext;")
|
||||||
returns("V")
|
returnType("V")
|
||||||
custom { method, classDef ->
|
name("prepareForPlayback")
|
||||||
method.name == "prepareForPlayback" &&
|
definingClass("Lcom/amazon/avod/playbackclient/activity/feature/PlaybackUserControlsFeature;")
|
||||||
classDef.type == "Lcom/amazon/avod/playbackclient/activity/feature/PlaybackUserControlsFeature;"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
@ -3,6 +3,7 @@ package app.revanced.patches.primevideo.video.speed
|
||||||
import app.revanced.patcher.extensions.addInstructions
|
import app.revanced.patcher.extensions.addInstructions
|
||||||
import app.revanced.patcher.extensions.getInstruction
|
import app.revanced.patcher.extensions.getInstruction
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.patcher.patch.creatingBytecodePatch
|
||||||
import app.revanced.patches.primevideo.misc.extension.sharedExtensionPatch
|
import app.revanced.patches.primevideo.misc.extension.sharedExtensionPatch
|
||||||
import app.revanced.util.getReference
|
import app.revanced.util.getReference
|
||||||
import app.revanced.util.indexOfFirstInstructionOrThrow
|
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||||
|
|
@ -13,8 +14,8 @@ import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
||||||
private const val EXTENSION_CLASS_DESCRIPTOR =
|
private const val EXTENSION_CLASS_DESCRIPTOR =
|
||||||
"Lapp/revanced/extension/primevideo/videoplayer/PlaybackSpeedPatch;"
|
"Lapp/revanced/extension/primevideo/videoplayer/PlaybackSpeedPatch;"
|
||||||
|
|
||||||
val playbackSpeedPatch = bytecodePatch(
|
@Suppress("unused", "ObjectPropertyName")
|
||||||
name = "Playback speed",
|
val `Playback speed` by creatingBytecodePatch(
|
||||||
description = "Adds playback speed controls to the video player.",
|
description = "Adds playback speed controls to the video player.",
|
||||||
) {
|
) {
|
||||||
dependsOn(
|
dependsOn(
|
||||||
|
|
@ -26,7 +27,7 @@ val playbackSpeedPatch = bytecodePatch(
|
||||||
)
|
)
|
||||||
|
|
||||||
apply {
|
apply {
|
||||||
playbackUserControlsInitializeFingerprint.method.apply {
|
playbackUserControlsInitializeMethod.apply {
|
||||||
val getIndex = indexOfFirstInstructionOrThrow {
|
val getIndex = indexOfFirstInstructionOrThrow {
|
||||||
opcode == Opcode.IPUT_OBJECT &&
|
opcode == Opcode.IPUT_OBJECT &&
|
||||||
getReference<FieldReference>()?.name == "mUserControls"
|
getReference<FieldReference>()?.name == "mUserControls"
|
||||||
|
|
@ -42,7 +43,7 @@ val playbackSpeedPatch = bytecodePatch(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
playbackUserControlsPrepareForPlaybackFingerprint.method.apply {
|
playbackUserControlsPrepareForPlaybackMethod.apply {
|
||||||
addInstructions(
|
addInstructions(
|
||||||
0,
|
0,
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue