From 7f6cdfd7c2b5e72742bbb92e4d584f722cb82cae Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Tue, 26 Jul 2022 21:47:40 +0200 Subject: [PATCH] fix: rename `default-video-quality` to `remember-video-quality` This change describes the patch more clearly --- ...yPatch.kt => RememberVideoQualityPatch.kt} | 138 +++++++++--------- 1 file changed, 69 insertions(+), 69 deletions(-) rename src/main/kotlin/app/revanced/patches/youtube/misc/quality/patch/{DefaultVideoQualityPatch.kt => RememberVideoQualityPatch.kt} (93%) diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/quality/patch/DefaultVideoQualityPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/quality/patch/RememberVideoQualityPatch.kt similarity index 93% rename from src/main/kotlin/app/revanced/patches/youtube/misc/quality/patch/DefaultVideoQualityPatch.kt rename to src/main/kotlin/app/revanced/patches/youtube/misc/quality/patch/RememberVideoQualityPatch.kt index f325aab0..e7c7431e 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/quality/patch/DefaultVideoQualityPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/quality/patch/RememberVideoQualityPatch.kt @@ -1,69 +1,69 @@ -package app.revanced.patches.youtube.misc.quality.patch - -import app.revanced.patcher.annotation.Description -import app.revanced.patcher.annotation.Name -import app.revanced.patcher.annotation.Version -import app.revanced.patcher.data.impl.BytecodeData -import app.revanced.patcher.extensions.addInstruction -import app.revanced.patcher.extensions.addInstructions -import app.revanced.patcher.fingerprint.method.utils.MethodFingerprintUtils.resolve -import app.revanced.patcher.patch.PatchResult -import app.revanced.patcher.patch.PatchResultSuccess -import app.revanced.patcher.patch.annotations.Dependencies -import app.revanced.patcher.patch.annotations.Patch -import app.revanced.patcher.patch.impl.BytecodePatch -import app.revanced.patches.youtube.misc.integrations.patch.IntegrationsPatch -import app.revanced.patches.youtube.misc.quality.annotations.DefaultVideoQualityCompatibility -import app.revanced.patches.youtube.misc.quality.fingerprints.VideoQualityReferenceFingerprint -import app.revanced.patches.youtube.misc.quality.fingerprints.VideoQualitySetterFingerprint -import app.revanced.patches.youtube.misc.quality.fingerprints.VideoUserQualityChangeFingerprint -import app.revanced.patches.youtube.misc.videoid.patch.VideoIdPatch -import org.jf.dexlib2.iface.instruction.ReferenceInstruction -import org.jf.dexlib2.iface.reference.FieldReference - -@Patch -@Dependencies([IntegrationsPatch::class, VideoIdPatch::class]) -@Name("default-video-quality") -@Description("Adds the ability to select preferred video quality.") -@DefaultVideoQualityCompatibility -@Version("0.0.1") -class DefaultVideoQualityPatch : BytecodePatch( - listOf( - VideoQualitySetterFingerprint - ) -) { - override fun execute(data: BytecodeData): PatchResult { - val setterMethod = VideoQualitySetterFingerprint.result!! - - VideoUserQualityChangeFingerprint.resolve(data, setterMethod.classDef) - val userQualityMethod = VideoUserQualityChangeFingerprint.result!! - - VideoQualityReferenceFingerprint.resolve(data, setterMethod.classDef) - val qualityFieldReference = - VideoQualityReferenceFingerprint.result!!.method.let { method -> - (method.implementation!!.instructions.elementAt(0) as ReferenceInstruction).reference as FieldReference - } - - VideoIdPatch.injectCall("Lapp/revanced/integrations/patches/VideoQualityPatch;->newVideoStarted(Ljava/lang/String;)V") - - val qIndexMethodName = - data.classes.single { it.type == qualityFieldReference.type }.methods.single { it.parameterTypes.first() == "I" }.name - - setterMethod.mutableMethod.addInstructions( - 0, - """ - iget-object v0, p0, ${setterMethod.classDef.type}->${qualityFieldReference.name}:${qualityFieldReference.type} - const-string v1, "$qIndexMethodName" - invoke-static {p1, p2, v0, v1}, Lapp/revanced/integrations/patches/VideoQualityPatch;->setVideoQuality([Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/String;)I - move-result p2 - """, - ) - - userQualityMethod.mutableMethod.addInstruction( - 0, - "invoke-static {p3}, Lapp/revanced/integrations/patches/VideoQualityPatch;->userChangedQuality(I)V" - ) - - return PatchResultSuccess() - } -} +package app.revanced.patches.youtube.misc.quality.patch + +import app.revanced.patcher.annotation.Description +import app.revanced.patcher.annotation.Name +import app.revanced.patcher.annotation.Version +import app.revanced.patcher.data.impl.BytecodeData +import app.revanced.patcher.extensions.addInstruction +import app.revanced.patcher.extensions.addInstructions +import app.revanced.patcher.fingerprint.method.utils.MethodFingerprintUtils.resolve +import app.revanced.patcher.patch.PatchResult +import app.revanced.patcher.patch.PatchResultSuccess +import app.revanced.patcher.patch.annotations.Dependencies +import app.revanced.patcher.patch.annotations.Patch +import app.revanced.patcher.patch.impl.BytecodePatch +import app.revanced.patches.youtube.misc.integrations.patch.IntegrationsPatch +import app.revanced.patches.youtube.misc.quality.annotations.DefaultVideoQualityCompatibility +import app.revanced.patches.youtube.misc.quality.fingerprints.VideoQualityReferenceFingerprint +import app.revanced.patches.youtube.misc.quality.fingerprints.VideoQualitySetterFingerprint +import app.revanced.patches.youtube.misc.quality.fingerprints.VideoUserQualityChangeFingerprint +import app.revanced.patches.youtube.misc.videoid.patch.VideoIdPatch +import org.jf.dexlib2.iface.instruction.ReferenceInstruction +import org.jf.dexlib2.iface.reference.FieldReference + +@Patch +@Dependencies([IntegrationsPatch::class, VideoIdPatch::class]) +@Name("remember-video-quality") +@Description("Adds the ability to remember the video quality you chose in the video quality flyout.") +@DefaultVideoQualityCompatibility +@Version("0.0.1") +class RememberVideoQualityPatch : BytecodePatch( + listOf( + VideoQualitySetterFingerprint + ) +) { + override fun execute(data: BytecodeData): PatchResult { + val setterMethod = VideoQualitySetterFingerprint.result!! + + VideoUserQualityChangeFingerprint.resolve(data, setterMethod.classDef) + val userQualityMethod = VideoUserQualityChangeFingerprint.result!! + + VideoQualityReferenceFingerprint.resolve(data, setterMethod.classDef) + val qualityFieldReference = + VideoQualityReferenceFingerprint.result!!.method.let { method -> + (method.implementation!!.instructions.elementAt(0) as ReferenceInstruction).reference as FieldReference + } + + VideoIdPatch.injectCall("Lapp/revanced/integrations/patches/VideoQualityPatch;->newVideoStarted(Ljava/lang/String;)V") + + val qIndexMethodName = + data.classes.single { it.type == qualityFieldReference.type }.methods.single { it.parameterTypes.first() == "I" }.name + + setterMethod.mutableMethod.addInstructions( + 0, + """ + iget-object v0, p0, ${setterMethod.classDef.type}->${qualityFieldReference.name}:${qualityFieldReference.type} + const-string v1, "$qIndexMethodName" + invoke-static {p1, p2, v0, v1}, Lapp/revanced/integrations/patches/VideoQualityPatch;->setVideoQuality([Ljava/lang/Object;ILjava/lang/Object;Ljava/lang/String;)I + move-result p2 + """, + ) + + userQualityMethod.mutableMethod.addInstruction( + 0, + "invoke-static {p3}, Lapp/revanced/integrations/patches/VideoQualityPatch;->userChangedQuality(I)V" + ) + + return PatchResultSuccess() + } +}