From 5d08fdddb8cc690ddf1811ef608b3fdbf7651fe1 Mon Sep 17 00:00:00 2001
From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com>
Date: Wed, 30 Jul 2025 09:18:20 -0400
Subject: [PATCH] perf(YouTube): Filter identifier callback only on root
component creation (#5558)
---
.../youtube/patches/components/AdsFilter.java | 6 +--
.../AdvancedVideoQualityMenuFilter.java | 4 +-
.../patches/components/ButtonsFilter.java | 6 +--
.../patches/components/CommentsFilter.java | 6 +--
.../patches/components/CustomFilter.java | 5 +--
.../DescriptionComponentsFilter.java | 8 ++--
.../youtube/patches/components/Filter.java | 7 ++--
.../components/KeywordContentFilter.java | 4 +-
.../components/LayoutComponentsFilter.java | 8 ++--
.../patches/components/LithoFilterPatch.java | 39 +++++++++----------
.../components/PlaybackSpeedMenuFilter.java | 4 +-
.../PlayerFlyoutMenuItemsFilter.java | 8 ++--
.../ReturnYouTubeDislikeFilter.java | 6 +--
.../patches/components/ShortsFilter.java | 15 +++----
.../misc/litho/filter/LithoFilterPatch.kt | 2 +-
15 files changed, 55 insertions(+), 73 deletions(-)
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdsFilter.java
index 6128af0a6..027fdd84a 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdsFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdsFilter.java
@@ -6,8 +6,6 @@ import android.app.Instrumentation;
import android.view.KeyEvent;
import android.view.View;
-import androidx.annotation.Nullable;
-
import java.util.List;
import app.revanced.extension.shared.Logger;
@@ -155,10 +153,10 @@ public final class AdsFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == playerShoppingShelf) {
- return contentIndex == 0 && playerShoppingShelfBuffer.check(protobufBufferArray).isFiltered();
+ return contentIndex == 0 && playerShoppingShelfBuffer.check(buffer).isFiltered();
}
if (exceptions.matches(path)) {
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdvancedVideoQualityMenuFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdvancedVideoQualityMenuFilter.java
index 9027db5db..fb64dd81d 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdvancedVideoQualityMenuFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/AdvancedVideoQualityMenuFilter.java
@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
-import androidx.annotation.Nullable;
-
import app.revanced.extension.youtube.patches.playback.quality.AdvancedVideoQualityMenuPatch;
import app.revanced.extension.youtube.settings.Settings;
@@ -21,7 +19,7 @@ public final class AdvancedVideoQualityMenuFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
isVideoQualityMenuVisible = true;
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ButtonsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ButtonsFilter.java
index 5773baa28..42e428fe9 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ButtonsFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ButtonsFilter.java
@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
-import androidx.annotation.Nullable;
-
import app.revanced.extension.youtube.settings.Settings;
@SuppressWarnings("unused")
@@ -100,7 +98,7 @@ final class ButtonsFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == likeSubscribeGlow) {
return (path.startsWith(VIDEO_ACTION_BAR_PATH_PREFIX) || path.startsWith(COMPACT_CHANNEL_BAR_PATH_PREFIX))
@@ -117,7 +115,7 @@ final class ButtonsFilter extends Filter {
// Make sure the current path is the right one
// to avoid false positives.
return path.startsWith(VIDEO_ACTION_BAR_PATH)
- && bufferButtonsGroupList.check(protobufBufferArray).isFiltered();
+ && bufferButtonsGroupList.check(buffer).isFiltered();
}
return true;
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CommentsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CommentsFilter.java
index b2aabe03e..5fc04bc74 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CommentsFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CommentsFilter.java
@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
-import androidx.annotation.Nullable;
-
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.PlayerType;
@@ -87,12 +85,12 @@ final class CommentsFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == chipBar) {
// Playlist sort button uses same components and must only filter if the player is opened.
return PlayerType.getCurrent().isMaximizedOrFullscreen()
- && aiCommentsSummary.check(protobufBufferArray).isFiltered();
+ && aiCommentsSummary.check(buffer).isFiltered();
}
return true;
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CustomFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CustomFilter.java
index 263921fff..cd6950717 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CustomFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/CustomFilter.java
@@ -3,7 +3,6 @@ package app.revanced.extension.youtube.patches.components;
import static app.revanced.extension.shared.StringRef.str;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import java.util.Arrays;
import java.util.Collection;
@@ -146,7 +145,7 @@ final class CustomFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
// All callbacks are custom filter groups.
CustomFilterGroup custom = (CustomFilterGroup) matchedGroup;
@@ -158,6 +157,6 @@ final class CustomFilter extends Filter {
return true; // No buffer filter, only path filtering.
}
- return custom.bufferSearch.matches(protobufBufferArray);
+ return custom.bufferSearch.matches(buffer);
}
}
\ No newline at end of file
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/DescriptionComponentsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/DescriptionComponentsFilter.java
index 873fc9a96..c5f4ac33f 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/DescriptionComponentsFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/DescriptionComponentsFilter.java
@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
-import androidx.annotation.Nullable;
-
import app.revanced.extension.youtube.StringTrieSearch;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.PlayerType;
@@ -105,7 +103,7 @@ final class DescriptionComponentsFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == aiGeneratedVideoSummarySection) {
@@ -116,11 +114,11 @@ final class DescriptionComponentsFilter extends Filter {
if (exceptions.matches(path)) return false;
if (matchedGroup == macroMarkersCarousel) {
- return contentIndex == 0 && macroMarkersCarouselGroupList.check(protobufBufferArray).isFiltered();
+ return contentIndex == 0 && macroMarkersCarouselGroupList.check(buffer).isFiltered();
}
if (matchedGroup == horizontalShelf) {
- return cellVideoAttribute.check(protobufBufferArray).isFiltered();
+ return cellVideoAttribute.check(buffer).isFiltered();
}
return true;
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/Filter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/Filter.java
index ddec956f0..c478e9c19 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/Filter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/Filter.java
@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
-import androidx.annotation.Nullable;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -42,6 +40,9 @@ abstract class Filter {
/**
* Adds callbacks to {@link #isFiltered(String, String, byte[], StringFilterGroup, FilterContentType, int)}
* if any of the groups are found.
+ *
+ * Note: This callback is done only during the initial component creation,
+ * and the path will always be an empty string.
*/
protected final void addIdentifierCallbacks(StringFilterGroup... groups) {
identifierCallbacks.addAll(Arrays.asList(groups));
@@ -68,7 +69,7 @@ abstract class Filter {
* @param contentIndex Matched index of the identifier or path.
* @return True if the litho component should be filtered out.
*/
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
return true;
}
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/KeywordContentFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/KeywordContentFilter.java
index 45fdcd7d2..470b650bb 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/KeywordContentFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/KeywordContentFilter.java
@@ -554,7 +554,7 @@ final class KeywordContentFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (contentIndex != 0 && matchedGroup == startsWithFilter) {
return false;
@@ -574,7 +574,7 @@ final class KeywordContentFilter extends Filter {
}
MutableReference matchRef = new MutableReference<>();
- if (bufferSearch.matches(protobufBufferArray, matchRef)) {
+ if (bufferSearch.matches(buffer, matchRef)) {
updateStats(true, matchRef.value);
return true;
}
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java
index 59b02ecdc..311e99163 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LayoutComponentsFilter.java
@@ -304,7 +304,7 @@ public final class LayoutComponentsFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
// This identifier is used not only in players but also in search results:
// https://github.com/ReVanced/revanced-patches/issues/3245
@@ -322,7 +322,7 @@ public final class LayoutComponentsFilter extends Filter {
}
if (matchedGroup == channelProfile) {
- return channelProfileBuffer.check(protobufBufferArray).isFiltered();
+ return channelProfileBuffer.check(buffer).isFiltered();
}
if (exceptions.matches(path)) return false; // Exceptions are not filtered.
@@ -331,11 +331,11 @@ public final class LayoutComponentsFilter extends Filter {
return compactChannelBarInnerButton.check(path).isFiltered()
// The filter may be broad, but in the context of a compactChannelBarInnerButton,
// it's safe to assume that the button is the only thing that should be hidden.
- && joinMembershipButton.check(protobufBufferArray).isFiltered();
+ && joinMembershipButton.check(buffer).isFiltered();
}
if (matchedGroup == horizontalShelves) {
- return contentIndex == 0 && (hideShelves() || ticketShelf.check(protobufBufferArray).isFiltered());
+ return contentIndex == 0 && (hideShelves() || ticketShelf.check(buffer).isFiltered());
}
if (matchedGroup == chipBar) {
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LithoFilterPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LithoFilterPatch.java
index 4f9e4ef32..b1dc866bf 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LithoFilterPatch.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/LithoFilterPatch.java
@@ -17,29 +17,28 @@ public final class LithoFilterPatch {
* Simple wrapper to pass the litho parameters through the prefix search.
*/
private static final class LithoFilterParameters {
- @Nullable
final String identifier;
final String path;
- final byte[] protoBuffer;
+ final byte[] buffer;
- LithoFilterParameters(@Nullable String lithoIdentifier, String lithoPath, byte[] protoBuffer) {
+ LithoFilterParameters(String lithoIdentifier, String lithoPath, byte[] buffer) {
this.identifier = lithoIdentifier;
this.path = lithoPath;
- this.protoBuffer = protoBuffer;
+ this.buffer = buffer;
}
@NonNull
@Override
public String toString() {
// Estimate the percentage of the buffer that are Strings.
- StringBuilder builder = new StringBuilder(Math.max(100, protoBuffer.length / 2));
+ StringBuilder builder = new StringBuilder(Math.max(100, buffer.length / 2));
builder.append( "ID: ");
builder.append(identifier);
builder.append(" Path: ");
builder.append(path);
if (Settings.DEBUG_PROTOBUFFER.get()) {
builder.append(" BufferStrings: ");
- findAsciiStrings(builder, protoBuffer);
+ findAsciiStrings(builder, buffer);
}
return builder.toString();
@@ -142,7 +141,7 @@ public final class LithoFilterPatch {
LithoFilterParameters parameters = (LithoFilterParameters) callbackParameter;
final boolean isFiltered = filter.isFiltered(parameters.identifier,
- parameters.path, parameters.protoBuffer, group, type, matchedStartIndex);
+ parameters.path, parameters.buffer, group, type, matchedStartIndex);
if (isFiltered && BaseSettings.DEBUG.get()) {
if (type == Filter.FilterContentType.IDENTIFIER) {
@@ -193,12 +192,8 @@ public final class LithoFilterPatch {
/**
* Injection point.
*/
- public static boolean shouldFilter(@Nullable String lithoIdentifier, StringBuilder pathBuilder) {
+ public static boolean isFiltered(String lithoIdentifier, StringBuilder pathBuilder) {
try {
- if (pathBuilder.length() == 0) {
- return false;
- }
-
byte[] buffer = bufferThreadLocal.get();
// Potentially the buffer may have been null or never set up until now.
// Use an empty buffer so the litho id/path filters still work correctly.
@@ -206,16 +201,20 @@ public final class LithoFilterPatch {
buffer = EMPTY_BYTE_ARRAY;
}
- LithoFilterParameters parameter = new LithoFilterParameters(
- lithoIdentifier, pathBuilder.toString(), buffer);
+ String path = pathBuilder.toString();
+ LithoFilterParameters parameter = new LithoFilterParameters(lithoIdentifier, path, buffer);
Logger.printDebug(() -> "Searching " + parameter);
- if (parameter.identifier != null && identifierSearchTree.matches(parameter.identifier, parameter)) {
- return true;
- }
-
- if (pathSearchTree.matches(parameter.path, parameter)) {
- return true;
+ if (path.isEmpty()) {
+ // Identifier is filtered only if there is no path,
+ // meaning no component or sub components have been created yet.
+ if (identifierSearchTree.matches(parameter.identifier, parameter)) {
+ return true;
+ }
+ } else {
+ if (pathSearchTree.matches(parameter.path, parameter)) {
+ return true;
+ }
}
} catch (Exception ex) {
Logger.printException(() -> "Litho filter failure", ex);
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlaybackSpeedMenuFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlaybackSpeedMenuFilter.java
index 852b33a6d..fc2b78ceb 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlaybackSpeedMenuFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlaybackSpeedMenuFilter.java
@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
-import androidx.annotation.Nullable;
-
import app.revanced.extension.youtube.patches.playback.speed.CustomPlaybackSpeedPatch;
import app.revanced.extension.youtube.settings.Settings;
@@ -38,7 +36,7 @@ public final class PlaybackSpeedMenuFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == oldPlaybackMenuGroup) {
isOldPlaybackSpeedMenuVisible = true;
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java
index e1401f3ae..fc2cc8099 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/PlayerFlyoutMenuItemsFilter.java
@@ -1,7 +1,5 @@
package app.revanced.extension.youtube.patches.components;
-import androidx.annotation.Nullable;
-
import app.revanced.extension.shared.settings.Setting;
import app.revanced.extension.shared.spoof.SpoofVideoStreamsPatch;
import app.revanced.extension.youtube.settings.Settings;
@@ -96,7 +94,7 @@ public class PlayerFlyoutMenuItemsFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (matchedGroup == videoQualityMenuFooter) {
return true;
@@ -107,10 +105,10 @@ public class PlayerFlyoutMenuItemsFilter extends Filter {
}
// Shorts also use this player flyout panel
- if (PlayerType.getCurrent().isNoneOrHidden() || exception.check(protobufBufferArray).isFiltered()) {
+ if (PlayerType.getCurrent().isNoneOrHidden() || exception.check(buffer).isFiltered()) {
return false;
}
- return flyoutFilterGroupList.check(protobufBufferArray).isFiltered();
+ return flyoutFilterGroupList.check(buffer).isFiltered();
}
}
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ReturnYouTubeDislikeFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ReturnYouTubeDislikeFilter.java
index 2164e4331..b82cb5f56 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ReturnYouTubeDislikeFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ReturnYouTubeDislikeFilter.java
@@ -84,15 +84,15 @@ public final class ReturnYouTubeDislikeFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (!Settings.RYD_ENABLED.get() || !Settings.RYD_SHORTS.get()) {
return false;
}
- FilterGroup.FilterGroupResult result = videoIdFilterGroup.check(protobufBufferArray);
+ FilterGroup.FilterGroupResult result = videoIdFilterGroup.check(buffer);
if (result.isFiltered()) {
- String matchedVideoId = findVideoId(protobufBufferArray);
+ String matchedVideoId = findVideoId(buffer);
// Matched video will be null if in incognito mode.
// Must pass a null id to correctly clear out the current video data.
// Otherwise if a Short is opened in non-incognito, then incognito is enabled and another Short is opened,
diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ShortsFilter.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ShortsFilter.java
index f38959a19..f4fae4d32 100644
--- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ShortsFilter.java
+++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/components/ShortsFilter.java
@@ -4,8 +4,6 @@ import static app.revanced.extension.youtube.shared.NavigationBar.NavigationButt
import android.view.View;
-import androidx.annotation.Nullable;
-
import com.google.android.libraries.youtube.rendering.ui.pivotbar.PivotBar;
import java.lang.ref.WeakReference;
@@ -13,7 +11,6 @@ import java.util.Arrays;
import java.util.List;
import app.revanced.extension.shared.Logger;
-import app.revanced.extension.shared.Utils;
import app.revanced.extension.youtube.settings.Settings;
import app.revanced.extension.youtube.shared.NavigationBar;
import app.revanced.extension.youtube.shared.PlayerType;
@@ -321,7 +318,7 @@ public final class ShortsFilter extends Filter {
}
@Override
- boolean isFiltered(@Nullable String identifier, String path, byte[] protobufBufferArray,
+ boolean isFiltered(String identifier, String path, byte[] buffer,
StringFilterGroup matchedGroup, FilterContentType contentType, int contentIndex) {
if (contentType == FilterContentType.PATH) {
if (matchedGroup == subscribeButton || matchedGroup == joinButton || matchedGroup == paidPromotionButton) {
@@ -330,22 +327,22 @@ public final class ShortsFilter extends Filter {
}
if (matchedGroup == useSoundButton) {
- return useSoundButtonBuffer.check(protobufBufferArray).isFiltered();
+ return useSoundButtonBuffer.check(buffer).isFiltered();
}
if (matchedGroup == useTemplateButton) {
- return useTemplateButtonBuffer.check(protobufBufferArray).isFiltered();
+ return useTemplateButtonBuffer.check(buffer).isFiltered();
}
if (matchedGroup == shortsCompactFeedVideo) {
- return shouldHideShortsFeedItems() && shortsCompactFeedVideoBuffer.check(protobufBufferArray).isFiltered();
+ return shouldHideShortsFeedItems() && shortsCompactFeedVideoBuffer.check(buffer).isFiltered();
}
// Video action buttons (comment, share, remix) have the same path.
// Like and dislike are separate path filters and don't require buffer searching.
if (matchedGroup == shortsActionBar) {
return videoActionButton.check(path).isFiltered()
- && videoActionButtonBuffer.check(protobufBufferArray).isFiltered();
+ && videoActionButtonBuffer.check(buffer).isFiltered();
}
if (matchedGroup == suggestedAction) {
@@ -356,7 +353,7 @@ public final class ShortsFilter extends Filter {
return true;
}
- return suggestedActionsBuffer.check(protobufBufferArray).isFiltered();
+ return suggestedActionsBuffer.check(buffer).isFiltered();
}
return true;
diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/litho/filter/LithoFilterPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/litho/filter/LithoFilterPatch.kt
index 90fcbef8f..81ae57cbb 100644
--- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/litho/filter/LithoFilterPatch.kt
+++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/litho/filter/LithoFilterPatch.kt
@@ -156,7 +156,7 @@ val lithoFilterPatch = bytecodePatch(
move-object/from16 v$freeRegister, p2
iget-object v$identifierRegister, v$freeRegister, $conversionContextIdentifierField
iget-object v$pathRegister, v$freeRegister, $conversionContextPathBuilderField
- invoke-static { v$identifierRegister, v$pathRegister }, $EXTENSION_CLASS_DESCRIPTOR->shouldFilter(Ljava/lang/String;Ljava/lang/StringBuilder;)Z
+ invoke-static { v$identifierRegister, v$pathRegister }, $EXTENSION_CLASS_DESCRIPTOR->isFiltered(Ljava/lang/String;Ljava/lang/StringBuilder;)Z
move-result v$freeRegister
if-eqz v$freeRegister, :unfiltered