mirror of
https://github.com/inotia00/revanced-patches.git
synced 2025-05-09 19:14:37 +02:00
feat(YouTube): Support version 19.38.41
This commit is contained in:
parent
4081263160
commit
2def0d4cc7
@ -93,8 +93,9 @@ public final class MiniplayerPatch {
|
|||||||
int dipWidth = Settings.MINIPLAYER_WIDTH_DIP.get();
|
int dipWidth = Settings.MINIPLAYER_WIDTH_DIP.get();
|
||||||
|
|
||||||
if (dipWidth < WIDTH_DIP_MIN || dipWidth > WIDTH_DIP_MAX) {
|
if (dipWidth < WIDTH_DIP_MIN || dipWidth > WIDTH_DIP_MAX) {
|
||||||
Utils.showToastLong(str("revanced_miniplayer_width_dip_invalid_toast",
|
Utils.showToastShort(str("revanced_miniplayer_width_dip_invalid_toast",
|
||||||
WIDTH_DIP_MIN, WIDTH_DIP_MAX));
|
WIDTH_DIP_MIN, WIDTH_DIP_MAX));
|
||||||
|
Utils.showToastShort(str("revanced_extended_reset_to_default_toast"));
|
||||||
|
|
||||||
// Instead of resetting, clamp the size at the bounds.
|
// Instead of resetting, clamp the size at the bounds.
|
||||||
dipWidth = Math.max(WIDTH_DIP_MIN, Math.min(dipWidth, WIDTH_DIP_MAX));
|
dipWidth = Math.max(WIDTH_DIP_MIN, Math.min(dipWidth, WIDTH_DIP_MAX));
|
||||||
|
@ -119,4 +119,11 @@ public class PlayerControlsPatch {
|
|||||||
// CreateSegmentButtonController.changeVisibilityNegatedImmediate();
|
// CreateSegmentButtonController.changeVisibilityNegatedImmediate();
|
||||||
// VotingButtonController.changeVisibilityNegatedImmediate();
|
// VotingButtonController.changeVisibilityNegatedImmediate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injection point.
|
||||||
|
*/
|
||||||
|
public static String getPlayerTopControlsLayoutResourceName(String original) {
|
||||||
|
return "default";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,9 +14,7 @@ import app.revanced.patches.youtube.utils.castbutton.castButtonPatch
|
|||||||
import app.revanced.patches.youtube.utils.castbutton.hookToolBarCastButton
|
import app.revanced.patches.youtube.utils.castbutton.hookToolBarCastButton
|
||||||
import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE
|
import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE
|
||||||
import app.revanced.patches.youtube.utils.extension.Constants.GENERAL_CLASS_DESCRIPTOR
|
import app.revanced.patches.youtube.utils.extension.Constants.GENERAL_CLASS_DESCRIPTOR
|
||||||
import app.revanced.patches.youtube.utils.extension.Constants.PATCH_STATUS_CLASS_DESCRIPTOR
|
|
||||||
import app.revanced.patches.youtube.utils.patch.PatchList.TOOLBAR_COMPONENTS
|
import app.revanced.patches.youtube.utils.patch.PatchList.TOOLBAR_COMPONENTS
|
||||||
import app.revanced.patches.youtube.utils.playservice.is_19_28_or_greater
|
|
||||||
import app.revanced.patches.youtube.utils.playservice.versionCheckPatch
|
import app.revanced.patches.youtube.utils.playservice.versionCheckPatch
|
||||||
import app.revanced.patches.youtube.utils.resourceid.actionBarRingoBackground
|
import app.revanced.patches.youtube.utils.resourceid.actionBarRingoBackground
|
||||||
import app.revanced.patches.youtube.utils.resourceid.sharedResourceIdPatch
|
import app.revanced.patches.youtube.utils.resourceid.sharedResourceIdPatch
|
||||||
@ -33,7 +31,6 @@ import app.revanced.util.REGISTER_TEMPLATE_REPLACEMENT
|
|||||||
import app.revanced.util.doRecursively
|
import app.revanced.util.doRecursively
|
||||||
import app.revanced.util.findInstructionIndicesReversedOrThrow
|
import app.revanced.util.findInstructionIndicesReversedOrThrow
|
||||||
import app.revanced.util.findMethodOrThrow
|
import app.revanced.util.findMethodOrThrow
|
||||||
import app.revanced.util.fingerprint.injectLiteralInstructionBooleanCall
|
|
||||||
import app.revanced.util.fingerprint.matchOrThrow
|
import app.revanced.util.fingerprint.matchOrThrow
|
||||||
import app.revanced.util.fingerprint.methodOrThrow
|
import app.revanced.util.fingerprint.methodOrThrow
|
||||||
import app.revanced.util.fingerprint.mutableClassOrThrow
|
import app.revanced.util.fingerprint.mutableClassOrThrow
|
||||||
@ -43,7 +40,6 @@ import app.revanced.util.indexOfFirstInstructionOrThrow
|
|||||||
import app.revanced.util.indexOfFirstInstructionReversedOrThrow
|
import app.revanced.util.indexOfFirstInstructionReversedOrThrow
|
||||||
import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
|
import app.revanced.util.indexOfFirstLiteralInstructionOrThrow
|
||||||
import app.revanced.util.replaceLiteralInstructionCall
|
import app.revanced.util.replaceLiteralInstructionCall
|
||||||
import app.revanced.util.updatePatchStatus
|
|
||||||
import com.android.tools.smali.dexlib2.Opcode
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
|
||||||
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
|
||||||
|
@ -454,7 +454,7 @@ val seekbarComponentsPatch = bytecodePatch(
|
|||||||
|
|
||||||
updatePatchStatus(PATCH_STATUS_CLASS_DESCRIPTOR, "OldSeekbarThumbnailsDefaultBoolean")
|
updatePatchStatus(PATCH_STATUS_CLASS_DESCRIPTOR, "OldSeekbarThumbnailsDefaultBoolean")
|
||||||
} else {
|
} else {
|
||||||
println("WARNING: Restore old seekbar thumbnails setting is not supported in this version. Use YouTube 19.16.39 or earlier.")
|
println("WARNING: \"Restore old seekbar thumbnails\" is not supported in this version. Use YouTube 19.16.39 or earlier.")
|
||||||
}
|
}
|
||||||
|
|
||||||
// endregion
|
// endregion
|
||||||
|
@ -15,7 +15,7 @@ internal object Constants {
|
|||||||
"18.48.39", // This is the last version that do not use Rolling Number.
|
"18.48.39", // This is the last version that do not use Rolling Number.
|
||||||
"19.05.36", // This is the last version with the least YouTube experimental flag.
|
"19.05.36", // This is the last version with the least YouTube experimental flag.
|
||||||
"19.16.39", // This is the last version where the 'Restore old seekbar thumbnails' setting works.
|
"19.16.39", // This is the last version where the 'Restore old seekbar thumbnails' setting works.
|
||||||
"19.34.42", // This is the latest version supported by the RVX patch.
|
"19.38.41", // This is the latest version supported by the RVX patch.
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
@ -7,15 +7,16 @@ import app.revanced.util.fingerprint.resolvable
|
|||||||
val cfBottomUIPatch = bytecodePatch(
|
val cfBottomUIPatch = bytecodePatch(
|
||||||
description = "cfBottomUIPatch"
|
description = "cfBottomUIPatch"
|
||||||
) {
|
) {
|
||||||
|
|
||||||
execute {
|
execute {
|
||||||
/**
|
/**
|
||||||
* This issue only affects some versions of YouTube.
|
* This issue only affects some versions of YouTube.
|
||||||
* Therefore, this patch only applies to versions that can resolve this fingerprint.
|
* Therefore, this patch only applies to versions that can resolve this fingerprint.
|
||||||
*/
|
*/
|
||||||
mapOf(
|
mapOf(
|
||||||
exploderControlsFingerprint to 45643739L,
|
fullscreenButtonPositionFingerprint to FULLSCREEN_BUTTON_POSITION_FEATURE_FLAG,
|
||||||
fullscreenButtonViewStubFingerprint to 45617294L,
|
fullscreenButtonViewStubFingerprint to FULLSCREEN_BUTTON_VIEW_STUB_FEATURE_FLAG,
|
||||||
fullscreenButtonPositionFingerprint to 45627640L
|
playerBottomControlsExploderFeatureFlagFingerprint to PLAYER_BOTTOM_CONTROLS_EXPLODER_FEATURE_FLAG,
|
||||||
).forEach { (fingerprint, literalValue) ->
|
).forEach { (fingerprint, literalValue) ->
|
||||||
if (fingerprint.resolvable()) {
|
if (fingerprint.resolvable()) {
|
||||||
fingerprint.injectLiteralInstructionBooleanCall(
|
fingerprint.injectLiteralInstructionBooleanCall(
|
||||||
@ -24,5 +25,7 @@ val cfBottomUIPatch = bytecodePatch(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,20 +2,24 @@ package app.revanced.patches.youtube.utils.fix.bottomui
|
|||||||
|
|
||||||
import app.revanced.util.fingerprint.legacyFingerprint
|
import app.revanced.util.fingerprint.legacyFingerprint
|
||||||
|
|
||||||
internal val exploderControlsFingerprint = legacyFingerprint(
|
internal const val FULLSCREEN_BUTTON_POSITION_FEATURE_FLAG = 45627640L
|
||||||
name = "exploderControlsFingerprint",
|
internal const val FULLSCREEN_BUTTON_VIEW_STUB_FEATURE_FLAG = 45617294L
|
||||||
returnType = "Z",
|
internal const val PLAYER_BOTTOM_CONTROLS_EXPLODER_FEATURE_FLAG = 45643739L
|
||||||
literals = listOf(45643739L),
|
|
||||||
)
|
|
||||||
|
|
||||||
internal val fullscreenButtonPositionFingerprint = legacyFingerprint(
|
internal val fullscreenButtonPositionFingerprint = legacyFingerprint(
|
||||||
name = "fullscreenButtonPositionFingerprint",
|
name = "fullscreenButtonPositionFingerprint",
|
||||||
returnType = "Z",
|
returnType = "Z",
|
||||||
literals = listOf(45627640L),
|
literals = listOf(FULLSCREEN_BUTTON_POSITION_FEATURE_FLAG),
|
||||||
)
|
)
|
||||||
|
|
||||||
internal val fullscreenButtonViewStubFingerprint = legacyFingerprint(
|
internal val fullscreenButtonViewStubFingerprint = legacyFingerprint(
|
||||||
name = "fullscreenButtonViewStubFingerprint",
|
name = "fullscreenButtonViewStubFingerprint",
|
||||||
returnType = "Z",
|
returnType = "Z",
|
||||||
literals = listOf(45617294L),
|
literals = listOf(FULLSCREEN_BUTTON_VIEW_STUB_FEATURE_FLAG),
|
||||||
|
)
|
||||||
|
|
||||||
|
internal val playerBottomControlsExploderFeatureFlagFingerprint = legacyFingerprint(
|
||||||
|
name = "playerBottomControlsExploderFeatureFlagFingerprint",
|
||||||
|
returnType = "Z",
|
||||||
|
literals = listOf(PLAYER_BOTTOM_CONTROLS_EXPLODER_FEATURE_FLAG),
|
||||||
)
|
)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package app.revanced.patches.youtube.utils.fix.cairo
|
package app.revanced.patches.youtube.utils.fix.cairo
|
||||||
|
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.patches.youtube.misc.backgroundplayback.backgroundPlaybackPatch
|
||||||
import app.revanced.util.fingerprint.injectLiteralInstructionBooleanCall
|
import app.revanced.util.fingerprint.injectLiteralInstructionBooleanCall
|
||||||
import app.revanced.util.fingerprint.resolvable
|
import app.revanced.util.fingerprint.resolvable
|
||||||
|
|
||||||
|
@ -11,7 +11,6 @@ import com.android.tools.smali.dexlib2.Opcode
|
|||||||
import com.android.tools.smali.dexlib2.iface.Method
|
import com.android.tools.smali.dexlib2.iface.Method
|
||||||
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||||
|
|
||||||
|
|
||||||
internal val bottomControlsInflateFingerprint = legacyFingerprint(
|
internal val bottomControlsInflateFingerprint = legacyFingerprint(
|
||||||
name = "bottomControlsInflateFingerprint",
|
name = "bottomControlsInflateFingerprint",
|
||||||
returnType = "Ljava/lang/Object;",
|
returnType = "Ljava/lang/Object;",
|
||||||
@ -70,3 +69,11 @@ internal val playerControlsVisibilityFingerprint = legacyFingerprint(
|
|||||||
accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL,
|
accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL,
|
||||||
parameters = listOf("Z", "Z")
|
parameters = listOf("Z", "Z")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
internal const val PLAYER_TOP_CONTROLS_EXPERIMENTAL_LAYOUT_FEATURE_FLAG = 45629424L
|
||||||
|
|
||||||
|
internal val playerTopControlsExperimentalLayoutFeatureFlagFingerprint = legacyFingerprint(
|
||||||
|
name = "playerTopControlsExperimentalLayoutFeatureFlagFingerprint",
|
||||||
|
returnType = "I",
|
||||||
|
literals = listOf(PLAYER_TOP_CONTROLS_EXPERIMENTAL_LAYOUT_FEATURE_FLAG),
|
||||||
|
)
|
@ -8,8 +8,11 @@ import app.revanced.patcher.patch.bytecodePatch
|
|||||||
import app.revanced.patcher.patch.resourcePatch
|
import app.revanced.patcher.patch.resourcePatch
|
||||||
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
|
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
|
||||||
import app.revanced.patches.youtube.utils.extension.Constants.UTILS_PATH
|
import app.revanced.patches.youtube.utils.extension.Constants.UTILS_PATH
|
||||||
|
import app.revanced.patches.youtube.utils.extension.sharedExtensionPatch
|
||||||
import app.revanced.patches.youtube.utils.playerButtonsResourcesFingerprint
|
import app.revanced.patches.youtube.utils.playerButtonsResourcesFingerprint
|
||||||
import app.revanced.patches.youtube.utils.playerButtonsVisibilityFingerprint
|
import app.revanced.patches.youtube.utils.playerButtonsVisibilityFingerprint
|
||||||
|
import app.revanced.patches.youtube.utils.playservice.is_19_25_or_greater
|
||||||
|
import app.revanced.patches.youtube.utils.playservice.versionCheckPatch
|
||||||
import app.revanced.patches.youtube.utils.resourceid.sharedResourceIdPatch
|
import app.revanced.patches.youtube.utils.resourceid.sharedResourceIdPatch
|
||||||
import app.revanced.patches.youtube.utils.youtubeControlsOverlayFingerprint
|
import app.revanced.patches.youtube.utils.youtubeControlsOverlayFingerprint
|
||||||
import app.revanced.util.copyXmlNode
|
import app.revanced.util.copyXmlNode
|
||||||
@ -40,7 +43,9 @@ private val playerControlsBytecodePatch = bytecodePatch(
|
|||||||
description = "playerControlsBytecodePatch"
|
description = "playerControlsBytecodePatch"
|
||||||
) {
|
) {
|
||||||
dependsOn(
|
dependsOn(
|
||||||
sharedResourceIdPatch
|
sharedExtensionPatch,
|
||||||
|
sharedResourceIdPatch,
|
||||||
|
versionCheckPatch,
|
||||||
)
|
)
|
||||||
|
|
||||||
execute {
|
execute {
|
||||||
@ -154,6 +159,21 @@ private val playerControlsBytecodePatch = bytecodePatch(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
|
if (is_19_25_or_greater) {
|
||||||
|
playerTopControlsExperimentalLayoutFeatureFlagFingerprint.methodOrThrow().apply {
|
||||||
|
val index = indexOfFirstInstructionOrThrow(Opcode.MOVE_RESULT_OBJECT)
|
||||||
|
val register = getInstruction<OneRegisterInstruction>(index).registerA
|
||||||
|
|
||||||
|
addInstructions(
|
||||||
|
index + 1,
|
||||||
|
"""
|
||||||
|
invoke-static { v$register }, $EXTENSION_PLAYER_CONTROLS_CLASS_DESCRIPTOR->getPlayerTopControlsLayoutResourceName(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v$register
|
||||||
|
""",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user