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(
BottomControlsInflateFingerprint,
ControlsLayoutInflateFingerprint,
PlayerControlsVisibilityFingerprint
PlayerControlsVisibilityFingerprint,
PlayerControlsVisibilityModelFingerprint
)
) {
override fun execute(context: BytecodeContext): PatchResult {
PlayerControlsVisibilityFingerprint.result?.let {
showPlayerControlsResult = it
} ?: return PlayerControlsVisibilityFingerprint.toErrorResult()
ControlsLayoutInflateFingerprint.result?.let {
controlsLayoutInflateResult = it
} ?: return ControlsLayoutInflateFingerprint.toErrorResult()
BottomControlsInflateFingerprint.result?.let {
inflateResult = it
} ?: return BottomControlsInflateFingerprint.toErrorResult()
playerControlsVisibilityResult = PlayerControlsVisibilityFingerprint.result?: return PlayerControlsVisibilityFingerprint.toErrorResult()
playerControlsVisibilityModelResult = PlayerControlsVisibilityModelFingerprint.result?: return PlayerControlsVisibilityModelFingerprint.toErrorResult()
controlsLayoutInflateResult = ControlsLayoutInflateFingerprint.result?: return ControlsLayoutInflateFingerprint.toErrorResult()
inflateResult = BottomControlsInflateFingerprint.result?: return BottomControlsInflateFingerprint.toErrorResult()
return PatchResultSuccess()
}
internal companion object {
lateinit var showPlayerControlsResult: MethodFingerprintResult
lateinit var playerControlsVisibilityResult: MethodFingerprintResult
lateinit var playerControlsVisibilityModelResult: MethodFingerprintResult
lateinit var controlsLayoutInflateResult: MethodFingerprintResult
lateinit var inflateResult: MethodFingerprintResult
fun MethodFingerprintResult.injectVisibilityCall(
private fun MethodFingerprintResult.injectVisibilityCall(
descriptor: String,
fieldname: String
fieldName: String
) {
mutableMethod.addInstruction(
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) {
showPlayerControlsResult.injectVisibilityCall(descriptor, "changeVisibility")
playerControlsVisibilityResult.injectVisibilityCall(descriptor, "changeVisibility")
playerControlsVisibilityModelResult.injectVisibilityNegatedCall(descriptor)
}
fun initializeSB(descriptor: String) {