fix(protobuf-spoof): subtitles in wrong location

This commit is contained in:
inotia00
2023-04-02 18:37:59 +09:00
parent 805e57b049
commit 6a7bc363cb
4 changed files with 24 additions and 16 deletions

View File

@ -0,0 +1,10 @@
package app.revanced.patches.youtube.misc.protobufpoof.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
object SubtitleWindowFingerprint : MethodFingerprint(
parameters = listOf("I", "I", "I", "Z", "Z"),
customFingerprint = { it.definingClass == "Lcom/google/android/libraries/youtube/player/subtitles/model/SubtitleWindowSettings;"
&& it.name == "<init>"
}
)

View File

@ -34,7 +34,8 @@ import app.revanced.util.integrations.Constants.MISC_PATH
class ProtobufSpoofPatch : BytecodePatch(
listOf(
BadResponseFingerprint,
ProtobufParameterBuilderFingerprint
ProtobufParameterBuilderFingerprint,
SubtitleWindowFingerprint
)
) {
override fun execute(context: BytecodeContext): PatchResult {
@ -51,7 +52,7 @@ class ProtobufSpoofPatch : BytecodePatch(
addInstructions(
0,
"""
invoke-static {p$protobufParam}, $MISC_PATH/ProtobufSpoofPatch;->getProtobufOverride(Ljava/lang/String;)Ljava/lang/String;
invoke-static {p$protobufParam}, $MISC_PATH/ProtobufSpoofPatch;->overrideProtobufParameter(Ljava/lang/String;)Ljava/lang/String;
move-result-object p$protobufParam
"""
)
@ -64,6 +65,16 @@ class ProtobufSpoofPatch : BytecodePatch(
"invoke-static {}, $MISC_PATH/ProtobufSpoofPatch;->switchProtobufSpoof()V"
) ?: return BadResponseFingerprint.toErrorResult()
// fix protobuf spoof side issue
SubtitleWindowFingerprint.result?.mutableMethod?.addInstructions(
1, """
invoke-static {p1, p2, p3}, $MISC_PATH/ProtobufSpoofPatch;->overrideAnchorPosition(III)I
move-result p1
invoke-static {p2, p3}, $MISC_PATH/ProtobufSpoofPatch;->overrideAnchorVerticalPosition(II)I
move-result p3
"""
) ?: return SubtitleWindowFingerprint.toErrorResult()
/*
* Add settings
*/