fix(overlay-button): buttons are not hidden when swiping the seekbar

This commit is contained in:
inotia00 2023-04-02 19:14:43 +09:00
parent 35a52a0ee9
commit 4aab95d351
2 changed files with 31 additions and 17 deletions

View File

@ -0,0 +1,9 @@
package app.revanced.patches.youtube.misc.playercontrols.fingerprints
import app.revanced.patcher.fingerprint.method.impl.MethodFingerprint
import org.jf.dexlib2.Opcode
object PlayerControlsVisibilityModelFingerprint : MethodFingerprint(
opcodes = listOf(Opcode.IGET_BOOLEAN),
strings = listOf("hasNext", "hasPrevious", "Missing required properties:")
)

View File

@ -26,38 +26,42 @@ class PlayerControlsPatch : BytecodePatch(
listOf( listOf(
BottomControlsInflateFingerprint, BottomControlsInflateFingerprint,
ControlsLayoutInflateFingerprint, ControlsLayoutInflateFingerprint,
PlayerControlsVisibilityFingerprint PlayerControlsVisibilityFingerprint,
PlayerControlsVisibilityModelFingerprint
) )
) { ) {
override fun execute(context: BytecodeContext): PatchResult { override fun execute(context: BytecodeContext): PatchResult {
PlayerControlsVisibilityFingerprint.result?.let { playerControlsVisibilityResult = PlayerControlsVisibilityFingerprint.result?: return PlayerControlsVisibilityFingerprint.toErrorResult()
showPlayerControlsResult = it playerControlsVisibilityModelResult = PlayerControlsVisibilityModelFingerprint.result?: return PlayerControlsVisibilityModelFingerprint.toErrorResult()
} ?: return PlayerControlsVisibilityFingerprint.toErrorResult() controlsLayoutInflateResult = ControlsLayoutInflateFingerprint.result?: return ControlsLayoutInflateFingerprint.toErrorResult()
inflateResult = BottomControlsInflateFingerprint.result?: return BottomControlsInflateFingerprint.toErrorResult()
ControlsLayoutInflateFingerprint.result?.let {
controlsLayoutInflateResult = it
} ?: return ControlsLayoutInflateFingerprint.toErrorResult()
BottomControlsInflateFingerprint.result?.let {
inflateResult = it
} ?: return BottomControlsInflateFingerprint.toErrorResult()
return PatchResultSuccess() return PatchResultSuccess()
} }
internal companion object { internal companion object {
lateinit var showPlayerControlsResult: MethodFingerprintResult lateinit var playerControlsVisibilityResult: MethodFingerprintResult
lateinit var playerControlsVisibilityModelResult: MethodFingerprintResult
lateinit var controlsLayoutInflateResult: MethodFingerprintResult lateinit var controlsLayoutInflateResult: MethodFingerprintResult
lateinit var inflateResult: MethodFingerprintResult lateinit var inflateResult: MethodFingerprintResult
fun MethodFingerprintResult.injectVisibilityCall( private fun MethodFingerprintResult.injectVisibilityCall(
descriptor: String, descriptor: String,
fieldname: String fieldName: String
) { ) {
mutableMethod.addInstruction( mutableMethod.addInstruction(
0, 0,
"invoke-static {p1}, $descriptor->$fieldname(Z)V" "invoke-static {p1}, $descriptor->$fieldName(Z)V"
)
}
private fun MethodFingerprintResult.injectVisibilityNegatedCall(
descriptor: String
) {
mutableMethod.addInstruction(
scanResult.patternScanResult!!.startIndex,
"invoke-static {}, $descriptor->changeVisibilityNegatedImmediate()V"
) )
} }
@ -75,7 +79,8 @@ class PlayerControlsPatch : BytecodePatch(
} }
fun injectVisibility(descriptor: String) { fun injectVisibility(descriptor: String) {
showPlayerControlsResult.injectVisibilityCall(descriptor, "changeVisibility") playerControlsVisibilityResult.injectVisibilityCall(descriptor, "changeVisibility")
playerControlsVisibilityModelResult.injectVisibilityNegatedCall(descriptor)
} }
fun initializeSB(descriptor: String) { fun initializeSB(descriptor: String) {