From 31e3b42c6bbce0d00f049b8a69bafc94900bb3b4 Mon Sep 17 00:00:00 2001 From: Alberto Ponces Date: Mon, 18 Jul 2022 15:29:51 +0100 Subject: [PATCH] fix: `minimized-playback` patch for YouTube Kids videos (#201) --- .../MinimizedPlaybackKidsFingerprint.kt | 34 +++++++++++++++++++ .../MinimizedPlaybackSettingsFingerprint.kt | 1 - .../patch/MinimizedPlaybackPatch.kt | 10 ++++-- 3 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 src/main/kotlin/app/revanced/patches/youtube/layout/minimizedplayback/fingerprints/MinimizedPlaybackKidsFingerprint.kt diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/minimizedplayback/fingerprints/MinimizedPlaybackKidsFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/minimizedplayback/fingerprints/MinimizedPlaybackKidsFingerprint.kt new file mode 100644 index 000000000..4856108fe --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/minimizedplayback/fingerprints/MinimizedPlaybackKidsFingerprint.kt @@ -0,0 +1,34 @@ +package app.revanced.patches.youtube.layout.minimizedplayback.fingerprints + +import app.revanced.patcher.annotation.Name +import app.revanced.patcher.annotation.Version +import app.revanced.patcher.extensions.or +import app.revanced.patcher.fingerprint.method.annotation.MatchingMethod +import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint +import app.revanced.patches.youtube.layout.minimizedplayback.annotations.MinimizedPlaybackCompatibility +import org.jf.dexlib2.AccessFlags +import org.jf.dexlib2.Opcode + +@Name("minimized-playback-kids-fingerprint") +@MatchingMethod( + "LMinimizedPlaybackPolicyController;", "k" +) +@MinimizedPlaybackCompatibility +@Version("0.0.1") +object MinimizedPlaybackKidsFingerprint : MethodFingerprint( + "V", + AccessFlags.PUBLIC or AccessFlags.FINAL, + listOf("I", "L", "L"), + listOf( + Opcode.IF_EQZ, + Opcode.SGET_OBJECT, + Opcode.IF_NE, + Opcode.CONST_4, + Opcode.IPUT_BOOLEAN, + Opcode.IF_EQZ, + Opcode.IGET, + Opcode.INVOKE_STATIC + ), + null, + { it.definingClass.endsWith("MinimizedPlaybackPolicyController;") } +) diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/minimizedplayback/fingerprints/MinimizedPlaybackSettingsFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/minimizedplayback/fingerprints/MinimizedPlaybackSettingsFingerprint.kt index c15fb55bf..4014c6007 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/minimizedplayback/fingerprints/MinimizedPlaybackSettingsFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/minimizedplayback/fingerprints/MinimizedPlaybackSettingsFingerprint.kt @@ -7,7 +7,6 @@ import app.revanced.patcher.fingerprint.method.annotation.FuzzyPatternScanMethod import app.revanced.patcher.fingerprint.method.annotation.MatchingMethod import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint import app.revanced.patches.youtube.layout.minimizedplayback.annotations.MinimizedPlaybackCompatibility -import app.revanced.patches.youtube.misc.mapping.patch.ResourceIdMappingProviderResourcePatch import org.jf.dexlib2.AccessFlags import org.jf.dexlib2.Opcode import org.jf.dexlib2.iface.instruction.WideLiteralInstruction diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/minimizedplayback/patch/MinimizedPlaybackPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/minimizedplayback/patch/MinimizedPlaybackPatch.kt index d954cc4ab..b7ce3ca89 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/minimizedplayback/patch/MinimizedPlaybackPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/minimizedplayback/patch/MinimizedPlaybackPatch.kt @@ -12,9 +12,9 @@ import app.revanced.patcher.patch.annotations.Patch import app.revanced.patcher.patch.impl.BytecodePatch import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patches.youtube.layout.minimizedplayback.annotations.MinimizedPlaybackCompatibility +import app.revanced.patches.youtube.layout.minimizedplayback.fingerprints.MinimizedPlaybackKidsFingerprint import app.revanced.patches.youtube.layout.minimizedplayback.fingerprints.MinimizedPlaybackManagerFingerprint import app.revanced.patches.youtube.layout.minimizedplayback.fingerprints.MinimizedPlaybackSettingsFingerprint -import app.revanced.patches.youtube.misc.mapping.patch.ResourceIdMappingProviderResourcePatch import org.jf.dexlib2.iface.instruction.ReferenceInstruction import org.jf.dexlib2.iface.reference.MethodReference @@ -26,7 +26,7 @@ import org.jf.dexlib2.iface.reference.MethodReference @Version("0.0.1") class MinimizedPlaybackPatch : BytecodePatch( listOf( - MinimizedPlaybackManagerFingerprint, MinimizedPlaybackSettingsFingerprint + MinimizedPlaybackKidsFingerprint, MinimizedPlaybackManagerFingerprint, MinimizedPlaybackSettingsFingerprint ) ) { override fun execute(data: BytecodeData): PatchResult { @@ -54,6 +54,12 @@ class MinimizedPlaybackPatch : BytecodePatch( """ ) + MinimizedPlaybackKidsFingerprint.result!!.mutableMethod.addInstructions( + 0, """ + return-void + """ + ) + return PatchResultSuccess() } }