feat(YouTube/Player components): add Skip autoplay countdown settings

This commit is contained in:
inotia00
2024-05-02 03:45:58 +09:00
parent cba498dd41
commit f90b9a2397
5 changed files with 40 additions and 1 deletions

View File

@ -24,6 +24,7 @@ import app.revanced.patches.youtube.player.components.fingerprints.RestoreSlideT
import app.revanced.patches.youtube.player.components.fingerprints.SeekEduContainerFingerprint
import app.revanced.patches.youtube.player.components.fingerprints.SpeedOverlayFingerprint
import app.revanced.patches.youtube.player.components.fingerprints.SuggestedActionsFingerprint
import app.revanced.patches.youtube.player.components.fingerprints.TouchAreaOnClickListenerFingerprint
import app.revanced.patches.youtube.player.components.fingerprints.WatermarkFingerprint
import app.revanced.patches.youtube.player.components.fingerprints.WatermarkParentFingerprint
import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE
@ -77,6 +78,7 @@ object PlayerComponentsPatch : BaseBytecodePatch(
SeekEduContainerFingerprint,
SpeedOverlayFingerprint,
SuggestedActionsFingerprint,
TouchAreaOnClickListenerFingerprint,
WatermarkParentFingerprint,
YouTubeControlsOverlayFingerprint,
)
@ -323,6 +325,25 @@ object PlayerComponentsPatch : BaseBytecodePatch(
// endregion
// region patch for skip autoplay countdown
// This patch works fine when the [SuggestedVideoEndScreenPatch] patch is included.
TouchAreaOnClickListenerFingerprint.resultOrThrow().let {
it.mutableClass.methods.find { method ->
method.parameters == listOf("Landroid/view/View${'$'}OnClickListener;")
}?.apply {
val setOnClickListenerIndex = getTargetIndexWithMethodReferenceName("setOnClickListener")
val setOnClickListenerRegister = getInstruction<FiveRegisterInstruction>(setOnClickListenerIndex).registerC
addInstruction(
setOnClickListenerIndex + 1,
"invoke-static {v$setOnClickListenerRegister}, $PLAYER_CLASS_DESCRIPTOR->skipAutoPlayCountdown(Landroid/view/View;)V"
)
} ?: throw PatchException("Failed to find setOnClickListener method")
}
// endregion
LithoFilterPatch.addFilter(PLAYER_COMPONENTS_FILTER_CLASS_DESCRIPTOR)
/**

View File

@ -0,0 +1,12 @@
package app.revanced.patches.youtube.player.components.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.TouchArea
import app.revanced.util.fingerprint.LiteralValueFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
internal object TouchAreaOnClickListenerFingerprint : LiteralValueFingerprint(
returnType = "V",
accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR,
literalSupplier = { TouchArea }
)

View File

@ -91,6 +91,7 @@ object SharedResourceIdPatch : ResourcePatch() {
var TitleAnchor = -1L
var ToolTipContentView = -1L
var TotalTime = -1L
var TouchArea = -1L
var VideoQualityBottomSheet = -1L
var VoiceSearch = -1L
var YouTubeControlsOverlaySubtitleButton = -1L
@ -178,6 +179,7 @@ object SharedResourceIdPatch : ResourcePatch() {
TitleAnchor = getId(ID, "title_anchor")
ToolTipContentView = getId(LAYOUT, "tooltip_content_view")
TotalTime = getId(STRING, "total_time")
TouchArea = getId(ID, "touch_area")
VideoQualityBottomSheet = getId(LAYOUT, "video_quality_bottom_sheet_list_fragment_title")
VoiceSearch = getId(ID, "voice_search")
YouTubeControlsOverlaySubtitleButton = getId(LAYOUT, "youtube_controls_overlay_subtitle_button")