fix(YouTube - Swipe controls): Gestures are not disabled in the channel bar even though Disable watch panel gestures is turned on (YouTube 19.16.39+)

This commit is contained in:
inotia00 2024-12-31 20:37:25 +09:00
parent dd3c889062
commit 4b0e9504c9
2 changed files with 31 additions and 4 deletions

View File

@ -3,6 +3,7 @@ package app.revanced.patches.youtube.swipe.controls
import app.revanced.patches.youtube.utils.extension.Constants.EXTENSION_PATH import app.revanced.patches.youtube.utils.extension.Constants.EXTENSION_PATH
import app.revanced.patches.youtube.utils.resourceid.autoNavScrollCancelPadding import app.revanced.patches.youtube.utils.resourceid.autoNavScrollCancelPadding
import app.revanced.patches.youtube.utils.resourceid.fullScreenEngagementOverlay import app.revanced.patches.youtube.utils.resourceid.fullScreenEngagementOverlay
import app.revanced.util.containsLiteralInstruction
import app.revanced.util.fingerprint.legacyFingerprint import app.revanced.util.fingerprint.legacyFingerprint
import app.revanced.util.or import app.revanced.util.or
import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.AccessFlags
@ -39,7 +40,7 @@ internal val swipeToSwitchVideoFingerprint = legacyFingerprint(
literals = listOf(SWIPE_TO_SWITCH_VIDEO_FEATURE_FLAG), literals = listOf(SWIPE_TO_SWITCH_VIDEO_FEATURE_FLAG),
) )
internal const val WATCH_PANEL_GESTURES_FEATURE_FLAG = 45372793L internal const val WATCH_PANEL_GESTURES_PRIMARY_FEATURE_FLAG = 45372793L
/** /**
* This fingerprint is compatible with YouTube v18.29.38 ~ v19.34.42 * This fingerprint is compatible with YouTube v18.29.38 ~ v19.34.42
@ -47,10 +48,28 @@ internal const val WATCH_PANEL_GESTURES_FEATURE_FLAG = 45372793L
internal val watchPanelGesturesFingerprint = legacyFingerprint( internal val watchPanelGesturesFingerprint = legacyFingerprint(
name = "watchPanelGesturesFingerprint", name = "watchPanelGesturesFingerprint",
returnType = "V", returnType = "V",
literals = listOf(WATCH_PANEL_GESTURES_FEATURE_FLAG), literals = listOf(WATCH_PANEL_GESTURES_PRIMARY_FEATURE_FLAG),
) )
internal val watchPanelGesturesAlternativeFingerprint = legacyFingerprint( internal val watchPanelGesturesAlternativeFingerprint = legacyFingerprint(
name = "watchPanelGesturesAlternativeFingerprint", name = "watchPanelGesturesAlternativeFingerprint",
literals = listOf(autoNavScrollCancelPadding), literals = listOf(autoNavScrollCancelPadding),
) )
internal const val WATCH_PANEL_GESTURES_SECONDARY_FEATURE_FLAG = 45619395L
/**
* Watch panel gestures in channel bar
* This fingerprint is compatible with YouTube v19.15.36 ~
*/
internal val watchPanelGesturesChannelBarFingerprint = legacyFingerprint(
name = "watchPanelGesturesChannelBarFingerprint",
returnType = "Z",
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
parameters = listOf("Landroid/view/MotionEvent;"),
customFingerprint = { method, _ ->
method.definingClass.endsWith("/NextGenWatchLayout;") &&
method.name == "onInterceptTouchEvent" &&
method.containsLiteralInstruction(WATCH_PANEL_GESTURES_SECONDARY_FEATURE_FLAG)
}
)

View File

@ -16,6 +16,7 @@ import app.revanced.patches.youtube.utils.mainactivity.mainActivityResolvePatch
import app.revanced.patches.youtube.utils.patch.PatchList.SWIPE_CONTROLS import app.revanced.patches.youtube.utils.patch.PatchList.SWIPE_CONTROLS
import app.revanced.patches.youtube.utils.playertype.playerTypeHookPatch import app.revanced.patches.youtube.utils.playertype.playerTypeHookPatch
import app.revanced.patches.youtube.utils.playservice.is_19_09_or_greater import app.revanced.patches.youtube.utils.playservice.is_19_09_or_greater
import app.revanced.patches.youtube.utils.playservice.is_19_15_or_greater
import app.revanced.patches.youtube.utils.playservice.is_19_23_or_greater import app.revanced.patches.youtube.utils.playservice.is_19_23_or_greater
import app.revanced.patches.youtube.utils.playservice.is_19_36_or_greater import app.revanced.patches.youtube.utils.playservice.is_19_36_or_greater
import app.revanced.patches.youtube.utils.playservice.versionCheckPatch import app.revanced.patches.youtube.utils.playservice.versionCheckPatch
@ -146,7 +147,7 @@ val swipeControlsPatch = bytecodePatch(
if (!is_19_36_or_greater) { if (!is_19_36_or_greater) {
watchPanelGesturesFingerprint.injectLiteralInstructionBooleanCall( watchPanelGesturesFingerprint.injectLiteralInstructionBooleanCall(
WATCH_PANEL_GESTURES_FEATURE_FLAG, WATCH_PANEL_GESTURES_PRIMARY_FEATURE_FLAG,
"$EXTENSION_SWIPE_CONTROLS_PATCH_CLASS_DESCRIPTOR->disableWatchPanelGestures()Z" "$EXTENSION_SWIPE_CONTROLS_PATCH_CLASS_DESCRIPTOR->disableWatchPanelGestures()Z"
) )
} else { } else {
@ -197,6 +198,13 @@ val swipeControlsPatch = bytecodePatch(
} }
} }
if (is_19_15_or_greater) {
watchPanelGesturesChannelBarFingerprint.injectLiteralInstructionBooleanCall(
WATCH_PANEL_GESTURES_SECONDARY_FEATURE_FLAG,
"$EXTENSION_SWIPE_CONTROLS_PATCH_CLASS_DESCRIPTOR->disableWatchPanelGestures()Z"
)
}
// endregion // endregion
// region copy resources // region copy resources