diff --git a/patches/src/main/kotlin/app/revanced/patches/amazon/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/amazon/Fingerprints.kt index 54ca09bd33..2eebbc58fe 100644 --- a/patches/src/main/kotlin/app/revanced/patches/amazon/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/amazon/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.amazon import app.revanced.patcher.accessFlags -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.deepLinkingMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.deepLinkingMethod by gettingFirstMethodDeclaratively( "https://www.", "android.intent.action.VIEW" ) { diff --git a/patches/src/main/kotlin/app/revanced/patches/angulus/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/angulus/ads/Fingerprints.kt index 66ed3fc675..9119bbdfbb 100644 --- a/patches/src/main/kotlin/app/revanced/patches/angulus/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/angulus/ads/Fingerprints.kt @@ -1,7 +1,7 @@ package app.revanced.patches.angulus.ads import app.revanced.patcher.accessFlags -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags @@ -14,7 +14,7 @@ import com.android.tools.smali.dexlib2.AccessFlags // This targets a method that returns the daily measurement count. // This method is used to determine if the user has reached the daily limit of measurements. -internal val BytecodePatchContext.getDailyMeasurementCountMethod by gettingFirstMutableMethodDeclaratively("dailyMeasurementCount") { +internal val BytecodePatchContext.getDailyMeasurementCountMethod by gettingFirstMethodDeclaratively("dailyMeasurementCount") { accessFlags(AccessFlags.PRIVATE) returnType("I") } diff --git a/patches/src/main/kotlin/app/revanced/patches/bandcamp/limitations/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/bandcamp/limitations/Fingerprints.kt index d550c88eac..8a7eaa096e 100644 --- a/patches/src/main/kotlin/app/revanced/patches/bandcamp/limitations/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/bandcamp/limitations/Fingerprints.kt @@ -1,9 +1,9 @@ package app.revanced.patches.bandcamp.limitations -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.handlePlaybackLimitsMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.handlePlaybackLimitsMethod by gettingFirstMethodDeclaratively( "track_id", "play_count" ) diff --git a/patches/src/main/kotlin/app/revanced/patches/cieid/restrictions/root/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/cieid/restrictions/root/Fingerprints.kt index 032a8da1a1..8bbcb5ea2c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/cieid/restrictions/root/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/cieid/restrictions/root/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.cieid.restrictions.root import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.checkRootMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.checkRootMethod by gettingFirstMethodDeclaratively { name("onResume") definingClass("Lit/ipzs/cieid/BaseActivity;") } diff --git a/patches/src/main/kotlin/app/revanced/patches/com/sbs/ondemand/tv/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/com/sbs/ondemand/tv/Fingerprints.kt index 4226c16155..91df4531c9 100644 --- a/patches/src/main/kotlin/app/revanced/patches/com/sbs/ondemand/tv/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/com/sbs/ondemand/tv/Fingerprints.kt @@ -1,24 +1,24 @@ package app.revanced.patches.com.sbs.ondemand.tv import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -val BytecodePatchContext.shouldShowAdvertisingTVMethod by gettingFirstMutableMethodDeclaratively { +val BytecodePatchContext.shouldShowAdvertisingTVMethod by gettingFirstMethodDeclaratively { name("getShouldShowAdvertisingTV") definingClass("Lcom/sbs/ondemand/common/InMemoryStorage;") returnType("Z") } -internal val BytecodePatchContext.shouldShowPauseAdMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.shouldShowPauseAdMethod by gettingFirstMethodDeclaratively { name("shouldShowPauseAd") definingClass("Lcom/sbs/ondemand/player/viewmodels/PauseAdController;") returnType("Z") } -internal val BytecodePatchContext.requestAdStreamMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.requestAdStreamMethod by gettingFirstMethodDeclaratively { name("requestAdStream\$player_googleStoreTvRelease") definingClass("Lcom/sbs/ondemand/player/viewmodels/AdsController;") returnType("V") diff --git a/patches/src/main/kotlin/app/revanced/patches/cricbuzz/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/cricbuzz/ads/Fingerprints.kt index 5c8acf985b..3c55ce2078 100644 --- a/patches/src/main/kotlin/app/revanced/patches/cricbuzz/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/cricbuzz/ads/Fingerprints.kt @@ -4,11 +4,11 @@ import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.userStateSwitchMethod by gettingFirstMutableMethodDeclaratively("key.user.state", "NA") { +internal val BytecodePatchContext.userStateSwitchMethod by gettingFirstMethodDeclaratively("key.user.state", "NA") { opcodes(Opcode.SPARSE_SWITCH) } -internal val BytecodePatchContext.cb11ConstructorMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.cb11ConstructorMethod by gettingFirstMethodDeclaratively { definingClass { endsWith("CB11Details;") } parameterTypes( "Ljava/lang/String;", @@ -24,7 +24,7 @@ internal val BytecodePatchContext.cb11ConstructorMethod by gettingFirstMutableMe ) } -internal val BytecodePatchContext.getBottomBarMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getBottomBarMethod by gettingFirstMethodDeclaratively { name("getBottombar") definingClass { endsWith("HomeMenu;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/disneyplus/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/disneyplus/Fingerprints.kt index 11607b361e..cffcd34830 100644 --- a/patches/src/main/kotlin/app/revanced/patches/disneyplus/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/disneyplus/Fingerprints.kt @@ -1,18 +1,18 @@ package app.revanced.patches.disneyplus import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.insertionGetPointsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.insertionGetPointsMethod by gettingFirstMethodDeclaratively { name("getPoints") definingClass("Lcom/dss/sdk/internal/media/Insertion;") returnType("Ljava/util/List") } -internal val BytecodePatchContext.insertionGetRangesMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.insertionGetRangesMethod by gettingFirstMethodDeclaratively { name("getRanges") definingClass("Lcom/dss/sdk/internal/media/Insertion;") returnType("Ljava/util/List") diff --git a/patches/src/main/kotlin/app/revanced/patches/duolingo/ad/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/duolingo/ad/Fingerprints.kt index 6d0cebeb23..ba0ffcc5c7 100644 --- a/patches/src/main/kotlin/app/revanced/patches/duolingo/ad/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/duolingo/ad/Fingerprints.kt @@ -13,7 +13,7 @@ internal val ClassDef.initializeMonetizationDebugSettingsMethodMatch by ClassDef opcodes(Opcode.IPUT_BOOLEAN) } -internal val BytecodePatchContext.monetizationDebugSettingsToStringMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.monetizationDebugSettingsToStringMethod by gettingFirstMethodDeclaratively { name("toString") instructions(string("MonetizationDebugSettings(", String::contains)) } diff --git a/patches/src/main/kotlin/app/revanced/patches/duolingo/debug/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/duolingo/debug/Fingerprints.kt index a92b688903..5c030afb23 100644 --- a/patches/src/main/kotlin/app/revanced/patches/duolingo/debug/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/duolingo/debug/Fingerprints.kt @@ -6,7 +6,7 @@ import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.ClassDef -internal val BytecodePatchContext.debugCategoryAllowOnReleaseBuildsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.debugCategoryAllowOnReleaseBuildsMethod by gettingFirstMethodDeclaratively { name("getAllowOnReleaseBuilds") definingClass("Lcom/duolingo/debug/DebugCategory;") returnType("Z") @@ -19,7 +19,7 @@ internal val ClassDef.buildConfigProviderConstructorMethodMatch by ClassDefCompo opcodes(Opcode.CONST_4) } -internal val BytecodePatchContext.buildConfigProviderToStringMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.buildConfigProviderToStringMethod by gettingFirstMethodDeclaratively { name("toString") parameterTypes() returnType("Ljava/lang/String;") diff --git a/patches/src/main/kotlin/app/revanced/patches/duolingo/energy/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/duolingo/energy/Fingerprints.kt index da434e0fec..4cf7b6d1f9 100644 --- a/patches/src/main/kotlin/app/revanced/patches/duolingo/energy/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/duolingo/energy/Fingerprints.kt @@ -12,7 +12,7 @@ internal val ClassDef.initializeEnergyConfigMethodMatch by ClassDefComposing.com } // Class name currently is not obfuscated, but it may be in the future. -internal val BytecodePatchContext.energyConfigToStringMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.energyConfigToStringMethod by gettingFirstMethodDeclaratively { name("toString") parameterTypes() returnType("Ljava/lang/String;") diff --git a/patches/src/main/kotlin/app/revanced/patches/facebook/ads/mainfeed/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/facebook/ads/mainfeed/Fingerprints.kt index bc75d4eb8e..9a06e21840 100644 --- a/patches/src/main/kotlin/app/revanced/patches/facebook/ads/mainfeed/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/facebook/ads/mainfeed/Fingerprints.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.baseModelMapperMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.baseModelMapperMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Lcom/facebook/graphql/modelutil/BaseModelWithTree;") parameterTypes("Ljava/lang/Class", "I", "I") @@ -17,7 +17,7 @@ internal val BytecodePatchContext.baseModelMapperMethod by gettingFirstMethodDec Opcode.IF_EQ, ) } -internal val BytecodePatchContext.getSponsoredDataModelTemplateMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.getSponsoredDataModelTemplateMethod by gettingFirstImmutableMethodDeclaratively { definingClass("Lcom/facebook/graphql/model/GraphQLFBMultiAdsFeedUnit;") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("L") diff --git a/patches/src/main/kotlin/app/revanced/patches/facebook/ads/story/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/facebook/ads/story/Fingerprints.kt index 10e98846a5..21cba5880b 100644 --- a/patches/src/main/kotlin/app/revanced/patches/facebook/ads/story/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/facebook/ads/story/Fingerprints.kt @@ -12,7 +12,7 @@ internal val BytecodePatchContext.fetchMoreAdsMethod by runMethod( fieldValue = $$"AdBucketDataSourceUtil$attemptFetchMoreAds$1", ) -internal fun runMethod(fieldValue: String) = gettingFirstMutableMethodDeclaratively { +internal fun runMethod(fieldValue: String) = gettingFirstMethodDeclaratively { name("run") returnType("V") parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/finanzonline/detection/bootloader/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/finanzonline/detection/bootloader/Fingerprints.kt index 1ce7ef8d46..30b1eb312e 100644 --- a/patches/src/main/kotlin/app/revanced/patches/finanzonline/detection/bootloader/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/finanzonline/detection/bootloader/Fingerprints.kt @@ -1,7 +1,7 @@ package app.revanced.patches.finanzonline.detection.bootloader import app.revanced.patcher.accessFlags -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.opcodes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType @@ -9,7 +9,7 @@ import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode // Located @ at.gv.bmf.bmf2go.taxequalization.tools.utils.AttestationHelper#isBootStateOk (3.0.1) -internal val BytecodePatchContext.bootStateMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.bootStateMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC) returnType("Z") opcodes( @@ -34,7 +34,7 @@ internal val BytecodePatchContext.bootStateMethod by gettingFirstMutableMethodDe } // Located @ at.gv.bmf.bmf2go.taxequalization.tools.utils.AttestationHelper#createKey (3.0.1) -internal val BytecodePatchContext.createKeyMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.createKeyMethod by gettingFirstMethodDeclaratively( "attestation", "SHA-256", "random", diff --git a/patches/src/main/kotlin/app/revanced/patches/finanzonline/detection/root/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/finanzonline/detection/root/Fingerprints.kt index 6c21a0b53c..3e5fb33109 100644 --- a/patches/src/main/kotlin/app/revanced/patches/finanzonline/detection/root/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/finanzonline/detection/root/Fingerprints.kt @@ -6,7 +6,7 @@ import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode // Located @ at.gv.bmf.bmf2go.taxequalization.tools.utils.RootDetection#isRooted (3.0.1) -internal val BytecodePatchContext.rootDetectionMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.rootDetectionMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returnType("L") parameterTypes("L") diff --git a/patches/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/Fingerprints.kt index 2886f60f17..90a2993ef3 100644 --- a/patches/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/googlenews/misc/gms/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.googlenews.misc.gms import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.magazinesActivityOnCreateMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.magazinesActivityOnCreateMethod by gettingFirstMethodDeclaratively { name("onCreate") definingClass { endsWith("/StartActivity;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/backup/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/backup/Fingerprints.kt index 1b32b8d24a..60dae79bc3 100644 --- a/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/backup/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/backup/Fingerprints.kt @@ -1,9 +1,9 @@ package app.revanced.patches.googlephotos.misc.backup -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.isDCIMFolderBackupControlMethod by gettingFirstMutableMethodDeclaratively("/dcim", "/mars_files/") { +internal val BytecodePatchContext.isDCIMFolderBackupControlMethod by gettingFirstMethodDeclaratively("/dcim", "/mars_files/") { returnType("Z") } diff --git a/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/features/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/features/Fingerprints.kt index 60797fe632..bf61f98d57 100644 --- a/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/features/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/features/Fingerprints.kt @@ -1,6 +1,6 @@ package app.revanced.patches.googlephotos.misc.features -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.initializeFeaturesEnumMethod by gettingFirstMutableMethodDeclaratively("com.google.android.apps.photos.NEXUS_PRELOAD") \ No newline at end of file +internal val BytecodePatchContext.initializeFeaturesEnumMethod by gettingFirstMethodDeclaratively("com.google.android.apps.photos.NEXUS_PRELOAD") \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/Fingerprints.kt index 47de045734..b9f057c81f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/googlephotos/misc/gms/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.googlephotos.misc.gms import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.homeActivityOnCreateMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.homeActivityOnCreateMethod by gettingFirstMethodDeclaratively { name("onCreate") definingClass { endsWith("/HomeActivity;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/hexeditor/ad/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/hexeditor/ad/Fingerprints.kt index a950e440cf..5b504a5723 100644 --- a/patches/src/main/kotlin/app/revanced/patches/hexeditor/ad/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/hexeditor/ad/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.hexeditor.ad import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.primaryAdsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.primaryAdsMethod by gettingFirstMethodDeclaratively { name("isAdsDisabled") definingClass { endsWith("PreferencesHelper;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/iconpackstudio/misc/pro/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/iconpackstudio/misc/pro/Fingerprints.kt index f3976a6de1..6afd432596 100644 --- a/patches/src/main/kotlin/app/revanced/patches/iconpackstudio/misc/pro/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/iconpackstudio/misc/pro/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.iconpackstudio.misc.pro import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.checkProMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.checkProMethod by gettingFirstMethodDeclaratively { definingClass { endsWith("IPSPurchaseRepository;") } returnType("Z") } diff --git a/patches/src/main/kotlin/app/revanced/patches/idaustria/detection/deviceintegrity/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/idaustria/detection/deviceintegrity/Fingerprints.kt index fe779ed266..e69231de2d 100644 --- a/patches/src/main/kotlin/app/revanced/patches/idaustria/detection/deviceintegrity/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/idaustria/detection/deviceintegrity/Fingerprints.kt @@ -4,14 +4,14 @@ import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.isDeviceBootloaderOpenMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.isDeviceBootloaderOpenMethod by gettingFirstMethodDeclaratively { name("isDeviceBootloaderOpen") definingClass { endsWith("/DeviceIntegrityCheckProviderImpl;") } accessFlags(AccessFlags.PUBLIC) returnType("Ljava/lang/Object;") } -internal val BytecodePatchContext.isDeviceRootedMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.isDeviceRootedMethod by gettingFirstMethodDeclaratively { name("isDeviceRooted") definingClass { endsWith("/DeviceIntegrityCheckProviderImpl;") } accessFlags(AccessFlags.PUBLIC) diff --git a/patches/src/main/kotlin/app/revanced/patches/idaustria/detection/signature/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/idaustria/detection/signature/Fingerprints.kt index 1403c79843..2d76ef30ac 100644 --- a/patches/src/main/kotlin/app/revanced/patches/idaustria/detection/signature/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/idaustria/detection/signature/Fingerprints.kt @@ -4,7 +4,7 @@ import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.spoofSignatureMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.spoofSignatureMethod by gettingFirstMethodDeclaratively { name("getPubKey") definingClass { endsWith("/SL2Step1Task;") } accessFlags(AccessFlags.PRIVATE) diff --git a/patches/src/main/kotlin/app/revanced/patches/inshorts/ad/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/inshorts/ad/Fingerprints.kt index b1a246a7e6..60369a6c54 100644 --- a/patches/src/main/kotlin/app/revanced/patches/inshorts/ad/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/inshorts/ad/Fingerprints.kt @@ -1,10 +1,10 @@ package app.revanced.patches.inshorts.ad -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.inshortsAdsMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.inshortsAdsMethod by gettingFirstMethodDeclaratively( "GoogleAdLoader", "exception in requestAd" ) { returnType("V") diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/feed/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/feed/Fingerprints.kt index 343bc05d03..cb6c056a8b 100644 --- a/patches/src/main/kotlin/app/revanced/patches/instagram/feed/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/feed/Fingerprints.kt @@ -1,12 +1,12 @@ package app.revanced.patches.instagram.feed -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.mainFeedRequestClassMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.mainFeedRequestClassMethod by gettingFirstMethodDeclaratively( "Request{mReason=", ", mInstanceNumber=" ) -internal val BytecodePatchContext.mainFeedHeaderMapFinderMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.mainFeedHeaderMapFinderMethod by gettingFirstMethodDeclaratively( "pagination_source", "FEED_REQUEST_SENT" ) diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/feed/LimitFeedToFollowedProfiles.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/feed/LimitFeedToFollowedProfiles.kt index 3e9f4c0aa7..c998611255 100644 --- a/patches/src/main/kotlin/app/revanced/patches/instagram/feed/LimitFeedToFollowedProfiles.kt +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/feed/LimitFeedToFollowedProfiles.kt @@ -4,7 +4,7 @@ import app.revanced.patcher.classDef import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.fieldReference import app.revanced.patcher.extensions.getInstruction -import app.revanced.patcher.firstMutableMethodDeclaratively +import app.revanced.patcher.firstMethodDeclaratively import app.revanced.patcher.immutableClassDef import app.revanced.patcher.name import app.revanced.patcher.patch.bytecodePatch @@ -44,7 +44,7 @@ val limitFeedToFollowedProfilesPatch = bytecodePatch( } } - mainFeedRequestClassMethod.immutableClassDef.firstMutableMethodDeclaratively { + mainFeedRequestClassMethod.immutableClassDef.firstMethodDeclaratively { name("") }.apply { // Finds the instruction where the map is being initialized in the constructor diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/ghost/story/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/ghost/story/Fingerprints.kt index 769499d6ec..a7027aa61e 100644 --- a/patches/src/main/kotlin/app/revanced/patches/instagram/ghost/story/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/ghost/story/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.instagram.ghost.story -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.setMediaSeenHashmapMethod by gettingFirstMutableMethodDeclaratively("media/seen/") { +internal val BytecodePatchContext.setMediaSeenHashmapMethod by gettingFirstMethodDeclaratively("media/seen/") { parameterTypes() returnType("V") } diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/hide/navigation/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/hide/navigation/Fingerprints.kt index 161599e54e..0a07351aa9 100644 --- a/patches/src/main/kotlin/app/revanced/patches/instagram/hide/navigation/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/hide/navigation/Fingerprints.kt @@ -4,13 +4,13 @@ import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.initializeNavigationButtonsListMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.initializeNavigationButtonsListMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) parameterTypes("Lcom/instagram/common/session/UserSession;", "Z") returnType("Ljava/util/List;") } -internal val BytecodePatchContext.navigationButtonsEnumMethod by gettingFirstMethodDeclaratively( +internal val BytecodePatchContext.navigationButtonsEnumMethod by gettingFirstImmutableMethodDeclaratively( "FEED", "fragment_feed", "SEARCH", diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/hide/navigation/HideNavigationButtons.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/hide/navigation/HideNavigationButtons.kt index adf2e4c300..ef4070c62a 100644 --- a/patches/src/main/kotlin/app/revanced/patches/instagram/hide/navigation/HideNavigationButtons.kt +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/hide/navigation/HideNavigationButtons.kt @@ -1,7 +1,7 @@ package app.revanced.patches.instagram.hide.navigation import app.revanced.patcher.extensions.getInstruction -import app.revanced.patcher.firstMutableMethodDeclaratively +import app.revanced.patcher.firstMethodDeclaratively import app.revanced.patcher.immutableClassDef import app.revanced.patcher.name import app.revanced.patcher.patch.booleanOption @@ -75,7 +75,7 @@ val hideNavigationButtonsPatch = bytecodePatch( // Get the field name which contains the name of the enum for the navigation button // ("fragment_clips", "fragment_share", ...) - val enumNameField = navigationButtonsEnumMethod.immutableClassDef.firstMutableMethodDeclaratively { + val enumNameField = navigationButtonsEnumMethod.immutableClassDef.firstMethodDeclaratively { name("") }.let { method -> method.indexOfFirstInstructionOrThrow { diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/misc/removeBuildExpiredPopup/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/misc/removeBuildExpiredPopup/Fingerprints.kt index 4413d174da..ba7221b721 100644 --- a/patches/src/main/kotlin/app/revanced/patches/instagram/misc/removeBuildExpiredPopup/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/misc/removeBuildExpiredPopup/Fingerprints.kt @@ -1,14 +1,14 @@ package app.revanced.patches.instagram.misc.removeBuildExpiredPopup -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.instructions import app.revanced.patcher.invoke import app.revanced.patcher.patch.BytecodePatchContext internal const val MILLISECOND_IN_A_DAY_LITERAL = 0x5265c00L -internal val BytecodePatchContext.appUpdateLockoutBuilderMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.appUpdateLockoutBuilderMethod by gettingFirstMethodDeclaratively( "android.hardware.sensor.hinge_angle", ) { instructions(MILLISECOND_IN_A_DAY_LITERAL()) diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/misc/share/domain/Fingerprint.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/misc/share/domain/Fingerprint.kt index df3f4e573f..44ab07b6d8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/instagram/misc/share/domain/Fingerprint.kt +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/misc/share/domain/Fingerprint.kt @@ -4,7 +4,7 @@ import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.getCustomShareDomainMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getCustomShareDomainMethod by gettingFirstMethodDeclaratively { name("getCustomShareDomain") definingClass(EXTENSION_CLASS_DESCRIPTOR) accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC) diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/misc/signature/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/misc/signature/Fingerprints.kt index d4681549f2..6f4d9a89b7 100644 --- a/patches/src/main/kotlin/app/revanced/patches/instagram/misc/signature/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/misc/signature/Fingerprints.kt @@ -5,12 +5,12 @@ import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.iface.ClassDef context(_: BytecodePatchContext) -internal fun ClassDef.getIsValidSignatureClassMethod() = firstMutableMethodDeclaratively( +internal fun ClassDef.getIsValidSignatureClassMethod() = firstMethodDeclaratively( "The provider for uri '", "' is not trusted: ", ) -internal val BytecodePatchContext.isValidSignatureMethodMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.isValidSignatureMethodMethod by gettingFirstMethodDeclaratively { parameterTypes("L", "Z") returnType("Z") instructions(method("keySet")) diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/reels/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/reels/Fingerprints.kt index 7c4924ecdb..335c90c8ee 100644 --- a/patches/src/main/kotlin/app/revanced/patches/instagram/reels/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/reels/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.instagram.reels import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.clipsViewPagerImplGetViewAtIndexMethod by gettingFirstMutableMethodDeclaratively("ClipsViewPagerImpl_getViewAtIndex") +internal val BytecodePatchContext.clipsViewPagerImplGetViewAtIndexMethod by gettingFirstMethodDeclaratively("ClipsViewPagerImpl_getViewAtIndex") -internal val BytecodePatchContext.clipsSwipeRefreshLayoutOnInterceptTouchEventMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.clipsSwipeRefreshLayoutOnInterceptTouchEventMethod by gettingFirstMethodDeclaratively { parameterTypes("Landroid/view/MotionEvent;") definingClass("Linstagram/features/clips/viewer/ui/ClipsSwipeRefreshLayout;") } diff --git a/patches/src/main/kotlin/app/revanced/patches/instagram/story/flipping/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/instagram/story/flipping/Fingerprints.kt index 6266ac1abc..647fd0fee9 100644 --- a/patches/src/main/kotlin/app/revanced/patches/instagram/story/flipping/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/instagram/story/flipping/Fingerprints.kt @@ -1,12 +1,12 @@ package app.revanced.patches.instagram.story.flipping import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.onStoryTimeoutActionMethod by gettingFirstMutableMethodDeclaratively("userSession") { +internal val BytecodePatchContext.onStoryTimeoutActionMethod by gettingFirstMethodDeclaratively("userSession") { parameterTypes("Ljava/lang/Object;") returnType("V") definingClass("Linstagram/features/stories/fragment/ReelViewerFragment;") diff --git a/patches/src/main/kotlin/app/revanced/patches/irplus/ad/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/irplus/ad/Fingerprints.kt index 69ce771110..3e68519d4e 100644 --- a/patches/src/main/kotlin/app/revanced/patches/irplus/ad/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/irplus/ad/Fingerprints.kt @@ -1,12 +1,12 @@ package app.revanced.patches.irplus.ad import app.revanced.patcher.accessFlags -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.irplusAdsMethod by gettingFirstMutableMethodDeclaratively("TAGGED") { +internal val BytecodePatchContext.irplusAdsMethod by gettingFirstMethodDeclaratively("TAGGED") { accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) parameterTypes("L", "Z") } \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/kleinanzeigen/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/kleinanzeigen/ads/Fingerprints.kt index e78c7e6a5b..c37e3a3c3d 100644 --- a/patches/src/main/kotlin/app/revanced/patches/kleinanzeigen/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/kleinanzeigen/ads/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.kleinanzeigen.ads import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.getLibertyInitMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getLibertyInitMethod by gettingFirstMethodDeclaratively { name("init") definingClass { endsWith("/Liberty;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/letterboxd/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/letterboxd/ads/Fingerprints.kt index 9f6cf2370f..bd7256e244 100644 --- a/patches/src/main/kotlin/app/revanced/patches/letterboxd/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/letterboxd/ads/Fingerprints.kt @@ -1,28 +1,28 @@ package app.revanced.patches.letterboxd.ads import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext internal const val admobHelperClassName = "Lcom/letterboxd/letterboxd/helpers/AdmobHelper;" -internal val BytecodePatchContext.admobHelperSetShowAdsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.admobHelperSetShowAdsMethod by gettingFirstMethodDeclaratively { name("setShowAds") definingClass(admobHelperClassName) } -internal val BytecodePatchContext.admobHelperShouldShowAdsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.admobHelperShouldShowAdsMethod by gettingFirstMethodDeclaratively { name("shouldShowAds") definingClass(admobHelperClassName) } -internal val BytecodePatchContext.filmFragmentShowAdsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.filmFragmentShowAdsMethod by gettingFirstMethodDeclaratively { name("showAds") definingClass { endsWith("/FilmFragment;") } } -internal val BytecodePatchContext.memberExtensionShowAdsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.memberExtensionShowAdsMethod by gettingFirstMethodDeclaratively { name("showAds") definingClass { endsWith("/AMemberExtensionKt;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/letterboxd/unlock/unlockAppIcons/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/letterboxd/unlock/unlockAppIcons/Fingerprints.kt index ca74736b56..397069a5a0 100644 --- a/patches/src/main/kotlin/app/revanced/patches/letterboxd/unlock/unlockAppIcons/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/letterboxd/unlock/unlockAppIcons/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.letterboxd.unlock.unlockAppIcons import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.getCanChangeAppIconMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getCanChangeAppIconMethod by gettingFirstMethodDeclaratively { name("getCanChangeAppIcon") definingClass { endsWith("SettingsAppIconFragment;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/lightroom/misc/login/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/lightroom/misc/login/Fingerprints.kt index e496d80470..cae148db09 100644 --- a/patches/src/main/kotlin/app/revanced/patches/lightroom/misc/login/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/lightroom/misc/login/Fingerprints.kt @@ -1,14 +1,14 @@ package app.revanced.patches.lightroom.misc.login import app.revanced.patcher.accessFlags -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.opcodes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.isLoggedInMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.isLoggedInMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC, AccessFlags.FINAL) returnType("Z") opcodes( diff --git a/patches/src/main/kotlin/app/revanced/patches/lightroom/misc/premium/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/lightroom/misc/premium/Fingerprints.kt index 433e7a12be..4f580f2547 100644 --- a/patches/src/main/kotlin/app/revanced/patches/lightroom/misc/premium/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/lightroom/misc/premium/Fingerprints.kt @@ -1,14 +1,14 @@ package app.revanced.patches.lightroom.misc.premium import app.revanced.patcher.accessFlags -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.opcodes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.hasPurchasedMethod by gettingFirstMutableMethodDeclaratively("isPurchaseDoneRecently = true, access platform profile present? = ") { +internal val BytecodePatchContext.hasPurchasedMethod by gettingFirstMethodDeclaratively("isPurchaseDoneRecently = true, access platform profile present? = ") { accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL) returnType("Z") opcodes( diff --git a/patches/src/main/kotlin/app/revanced/patches/memegenerator/detection/license/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/memegenerator/detection/license/Fingerprints.kt index d567ca8986..f40e9d0dce 100644 --- a/patches/src/main/kotlin/app/revanced/patches/memegenerator/detection/license/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/memegenerator/detection/license/Fingerprints.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.licenseValidationMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.licenseValidationMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returnType("Z") parameterTypes("Landroid/content/Context;") diff --git a/patches/src/main/kotlin/app/revanced/patches/memegenerator/detection/signature/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/memegenerator/detection/signature/Fingerprints.kt index 9d2cceb1a3..6bb50317f3 100644 --- a/patches/src/main/kotlin/app/revanced/patches/memegenerator/detection/signature/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/memegenerator/detection/signature/Fingerprints.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.verifySignatureMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.verifySignatureMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returnType("Z") parameterTypes("Landroid/app/Activity;") diff --git a/patches/src/main/kotlin/app/revanced/patches/memegenerator/misc/pro/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/memegenerator/misc/pro/Fingerprints.kt index bae00cb613..68a9b70b42 100644 --- a/patches/src/main/kotlin/app/revanced/patches/memegenerator/misc/pro/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/memegenerator/misc/pro/Fingerprints.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.isFreeVersionMethod by gettingFirstMutableMethodDeclaratively("free") { +internal val BytecodePatchContext.isFreeVersionMethod by gettingFirstMethodDeclaratively("free") { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returnType("Ljava/lang/Boolean;") parameterTypes("Landroid/content/Context;") diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/inbox/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/inbox/Fingerprints.kt index 643e179216..b6ce2a032c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/messenger/inbox/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/inbox/Fingerprints.kt @@ -6,7 +6,7 @@ import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.value.StringEncodedValue -internal val BytecodePatchContext.createInboxSubTabsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.createInboxSubTabsMethod by gettingFirstMethodDeclaratively { name("run") returnType("V") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) @@ -23,7 +23,7 @@ internal val BytecodePatchContext.createInboxSubTabsMethod by gettingFirstMutabl } } -internal val BytecodePatchContext.loadInboxAdsMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.loadInboxAdsMethod by gettingFirstMethodDeclaratively( "ads_load_begin", "inbox_ads_fetch_start" ) { diff --git a/patches/src/main/kotlin/app/revanced/patches/messenger/layout/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/messenger/layout/Fingerprints.kt index 59fc826f48..79366cb075 100644 --- a/patches/src/main/kotlin/app/revanced/patches/messenger/layout/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/messenger/layout/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.messenger.layout -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.isFacebookButtonEnabledMethod by gettingFirstMutableMethodDeclaratively("FacebookButtonTabButtonImplementation") { +internal val BytecodePatchContext.isFacebookButtonEnabledMethod by gettingFirstMethodDeclaratively("FacebookButtonTabButtonImplementation") { parameterTypes() returnType("Z") } diff --git a/patches/src/main/kotlin/app/revanced/patches/meta/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/meta/ads/Fingerprints.kt index 75e0380b7c..d0cb18e45f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/meta/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/meta/ads/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.meta.ads import app.revanced.patcher.accessFlags -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.adInjectorMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.adInjectorMethod by gettingFirstMethodDeclaratively( "SponsoredContentController.insertItem", ) { accessFlags(AccessFlags.PRIVATE) diff --git a/patches/src/main/kotlin/app/revanced/patches/mifitness/misc/login/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/mifitness/misc/login/Fingerprints.kt index d43f685cdd..2fad6bb988 100644 --- a/patches/src/main/kotlin/app/revanced/patches/mifitness/misc/login/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/mifitness/misc/login/Fingerprints.kt @@ -2,12 +2,12 @@ package app.revanced.patches.mifitness.misc.login import app.revanced.patcher.accessFlags import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.xiaomiAccountManagerConstructorMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.xiaomiAccountManagerConstructorMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PRIVATE, AccessFlags.CONSTRUCTOR) parameterTypes("Landroid/content/Context;", "Z") definingClass("Lcom/xiaomi/passport/accountmanager/XiaomiAccountManager;") diff --git a/patches/src/main/kotlin/app/revanced/patches/music/audio/exclusiveaudio/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/music/audio/exclusiveaudio/Fingerprints.kt index 2a805c386c..dacca3d291 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/audio/exclusiveaudio/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/audio/exclusiveaudio/Fingerprints.kt @@ -1,7 +1,7 @@ package app.revanced.patches.music.audio.exclusiveaudio import app.revanced.patcher.accessFlags -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.opcodes import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext @@ -9,7 +9,7 @@ import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.allowExclusiveAudioPlaybackMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.allowExclusiveAudioPlaybackMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/branding/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/branding/Fingerprints.kt index 0f7b59691e..d76fb66395 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/layout/branding/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/branding/Fingerprints.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patches.music.shared.YOUTUBE_MUSIC_MAIN_ACTIVITY_CLASS_TYPE import app.revanced.patches.shared.misc.mapping.ResourceType -internal val BytecodePatchContext.cairoSplashAnimationConfigMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.cairoSplashAnimationConfigMethod by gettingFirstMethodDeclaratively { name("onCreate") returnType("V") definingClass(YOUTUBE_MUSIC_MAIN_ACTIVITY_CLASS_TYPE) diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/buttons/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/buttons/Fingerprints.kt index 9db60e4af1..de96382b48 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/layout/buttons/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/buttons/Fingerprints.kt @@ -7,12 +7,12 @@ import app.revanced.util.literal import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.mediaRouteButtonMethod by gettingFirstMutableMethodDeclaratively("MediaRouteButton") { +internal val BytecodePatchContext.mediaRouteButtonMethod by gettingFirstMethodDeclaratively("MediaRouteButton") { accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL) returnType("Z") } -internal val BytecodePatchContext.playerOverlayChipMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playerOverlayChipMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("L") instructions(playerOverlayChip()) @@ -45,7 +45,7 @@ internal val BytecodePatchContext.historyMenuItemOfflineTabMethodMatch by compos custom { match(instructions) } } -internal val BytecodePatchContext.searchActionViewMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.searchActionViewMethod by gettingFirstMethodDeclaratively { definingClass { endsWith("/SearchActionProvider;") } accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Landroid/view/View;") @@ -53,7 +53,7 @@ internal val BytecodePatchContext.searchActionViewMethod by gettingFirstMutableM literal { searchButton } } -internal val BytecodePatchContext.topBarMenuItemImageViewMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.topBarMenuItemImageViewMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Landroid/view/View;") parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/buttons/HideButtons.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/buttons/HideButtons.kt index e6dd9e169a..9c2ea8054c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/layout/buttons/HideButtons.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/buttons/HideButtons.kt @@ -3,7 +3,7 @@ package app.revanced.patches.music.layout.buttons import app.revanced.patcher.extensions.addInstruction import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.getInstruction -import app.revanced.patcher.firstMutableMethod +import app.revanced.patcher.firstMethod import app.revanced.patcher.immutableClassDef import app.revanced.patcher.patch.bytecodePatch import app.revanced.patches.all.misc.resources.addResources @@ -110,7 +110,7 @@ val hideButtonsPatch = bytecodePatch( } // Region for hide cast button in the player. - mediaRouteButtonMethod.immutableClassDef.firstMutableMethod { + mediaRouteButtonMethod.immutableClassDef.firstMethod { name == "setVisibility" }.addInstructions( 0, diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/miniplayercolor/ChangeMiniplayerColor.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/miniplayercolor/ChangeMiniplayerColor.kt index 0b3153aa1b..7a699b2675 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/layout/miniplayercolor/ChangeMiniplayerColor.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/miniplayercolor/ChangeMiniplayerColor.kt @@ -4,7 +4,7 @@ package app.revanced.patches.music.layout.miniplayercolor import app.revanced.patcher.accessFlags import app.revanced.patcher.extensions.getInstruction -import app.revanced.patcher.firstMutableMethodDeclaratively +import app.revanced.patcher.firstMethodDeclaratively import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.returnType @@ -78,7 +78,7 @@ val changeMiniplayerColorPatch = bytecodePatch( val colorMathPlayerIPutReference = miniPlayerConstructorMethodMatch.immutableMethod .getInstruction(iPutIndex).reference - miniPlayerConstructorMethodMatch.immutableClassDef.firstMutableMethodDeclaratively { + miniPlayerConstructorMethodMatch.immutableClassDef.firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes( diff --git a/patches/src/main/kotlin/app/revanced/patches/music/layout/premium/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/music/layout/premium/Fingerprints.kt index bfa49bdebd..cc4e07125a 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/layout/premium/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/layout/premium/Fingerprints.kt @@ -19,7 +19,7 @@ internal val BytecodePatchContext.hideGetPremiumMethodMatch by composingFirstMet ) } -internal val BytecodePatchContext.membershipSettingsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.membershipSettingsMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Ljava/lang/CharSequence;") opcodes( diff --git a/patches/src/main/kotlin/app/revanced/patches/music/misc/androidauto/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/music/misc/androidauto/Fingerprints.kt index 65999c31ed..6fb1748eac 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/misc/androidauto/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/misc/androidauto/Fingerprints.kt @@ -1,7 +1,7 @@ package app.revanced.patches.music.misc.androidauto -import app.revanced.patcher.firstMutableMethodDeclaratively -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.firstMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.instructions import app.revanced.patcher.invoke import app.revanced.patcher.parameterTypes @@ -9,7 +9,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.iface.ClassDef -internal val BytecodePatchContext.checkCertificateMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.checkCertificateMethod by gettingFirstMethodDeclaratively( "X509", ) { returnType("Z") @@ -17,13 +17,13 @@ internal val BytecodePatchContext.checkCertificateMethod by gettingFirstMutableM instructions("Failed to get certificate"(String::contains)) } -internal val BytecodePatchContext.searchMediaItemsConstructorMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.searchMediaItemsConstructorMethod by gettingFirstMethodDeclaratively( "ytm_media_browser/search_media_items", ) { returnType("V") } context(_: BytecodePatchContext) -internal fun ClassDef.getSearchMediaItemsExecuteMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getSearchMediaItemsExecuteMethod() = firstMethodDeclaratively { parameterTypes() } diff --git a/patches/src/main/kotlin/app/revanced/patches/music/misc/backgroundplayback/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/music/misc/backgroundplayback/Fingerprints.kt index 22c3de805a..fe6481c303 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/misc/backgroundplayback/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/misc/backgroundplayback/Fingerprints.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.backgroundPlaybackDisableMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.backgroundPlaybackDisableMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returnType("Z") parameterTypes("L") @@ -22,7 +22,7 @@ internal val BytecodePatchContext.backgroundPlaybackDisableMethod by gettingFirs ) } -internal val BytecodePatchContext.kidsBackgroundPlaybackPolicyControllerMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.kidsBackgroundPlaybackPolicyControllerMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes("I", "L", "Z") diff --git a/patches/src/main/kotlin/app/revanced/patches/music/misc/fileprovider/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/music/misc/fileprovider/Fingerprints.kt index 73f2ff5fd3..d4682eaa9b 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/misc/fileprovider/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/misc/fileprovider/Fingerprints.kt @@ -1,10 +1,10 @@ package app.revanced.patches.music.misc.fileprovider -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.fileProviderResolverMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.fileProviderResolverMethod by gettingFirstMethodDeclaratively( "android.support.FILE_PROVIDER_PATHS", "Name must not be empty" ) { diff --git a/patches/src/main/kotlin/app/revanced/patches/music/misc/gms/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/music/misc/gms/Fingerprints.kt index ad65b0dab3..dfc3d7e3c1 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/misc/gms/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/misc/gms/Fingerprints.kt @@ -3,7 +3,7 @@ package app.revanced.patches.music.misc.gms import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.musicActivityOnCreateMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.musicActivityOnCreateMethod by gettingFirstMethodDeclaratively { name("onCreate") definingClass { endsWith("/MusicActivity;") } returnType("V") diff --git a/patches/src/main/kotlin/app/revanced/patches/music/misc/settings/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/music/misc/settings/Fingerprints.kt index 6932f1629c..8bb232b927 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/misc/settings/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/misc/settings/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.music.misc.settings import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.googleApiActivityMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.googleApiActivityMethod by gettingFirstMethodDeclaratively { name("onCreate") definingClass { endsWith("GoogleApiActivity;") } returnType("V") diff --git a/patches/src/main/kotlin/app/revanced/patches/music/shared/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/music/shared/Fingerprints.kt index 741bab96b6..677831ecce 100644 --- a/patches/src/main/kotlin/app/revanced/patches/music/shared/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/music/shared/Fingerprints.kt @@ -1,8 +1,8 @@ package app.revanced.patches.music.shared import app.revanced.patcher.definingClass +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively import app.revanced.patcher.gettingFirstMethodDeclaratively -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively import app.revanced.patcher.instructions import app.revanced.patcher.invoke import app.revanced.patcher.name @@ -13,14 +13,14 @@ import app.revanced.patcher.returnType internal const val YOUTUBE_MUSIC_MAIN_ACTIVITY_CLASS_TYPE = "Lcom/google/android/apps/youtube/music/activities/MusicActivity;" -internal val BytecodePatchContext.mainActivityOnCreateMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.mainActivityOnCreateMethod by gettingFirstMethodDeclaratively { name("onCreate") definingClass(YOUTUBE_MUSIC_MAIN_ACTIVITY_CLASS_TYPE) returnType("V") parameterTypes("Landroid/os/Bundle;") } -internal val BytecodePatchContext.conversionContextToStringMethod by gettingFirstMethodDeclaratively( +internal val BytecodePatchContext.conversionContextToStringMethod by gettingFirstImmutableMethodDeclaratively( "ConversionContext{containerInternal=", ", gridColumnCount=", ", gridColumnIndex=", diff --git a/patches/src/main/kotlin/app/revanced/patches/myexpenses/misc/pro/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/myexpenses/misc/pro/Fingerprints.kt index 943e47fd63..4fd4a691a1 100644 --- a/patches/src/main/kotlin/app/revanced/patches/myexpenses/misc/pro/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/myexpenses/misc/pro/Fingerprints.kt @@ -1,9 +1,9 @@ package app.revanced.patches.myexpenses.misc.pro -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.isEnabledMethod by gettingFirstMutableMethodDeclaratively("feature", "feature.licenceStatus") { +internal val BytecodePatchContext.isEnabledMethod by gettingFirstMethodDeclaratively("feature", "feature.licenceStatus") { returnType("Z") } \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/myfitnesspal/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/myfitnesspal/ads/Fingerprints.kt index 557f2a289e..334e714d6c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/myfitnesspal/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/myfitnesspal/ads/Fingerprints.kt @@ -2,19 +2,19 @@ package app.revanced.patches.myfitnesspal.ads import app.revanced.patcher.accessFlags import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.isPremiumUseCaseImplMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.isPremiumUseCaseImplMethod by gettingFirstMethodDeclaratively { name("doWork") definingClass { endsWith("IsPremiumUseCaseImpl;") } accessFlags(AccessFlags.PUBLIC) } -internal val BytecodePatchContext.mainActivityNavigateToNativePremiumUpsellMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.mainActivityNavigateToNativePremiumUpsellMethod by gettingFirstMethodDeclaratively { name("navigateToNativePremiumUpsell") definingClass { endsWith("MainActivity;") } accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL) diff --git a/patches/src/main/kotlin/app/revanced/patches/nothingx/misc/logk1token/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/nothingx/misc/logk1token/Fingerprints.kt index edebf2ec79..aec78e33c0 100644 --- a/patches/src/main/kotlin/app/revanced/patches/nothingx/misc/logk1token/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/nothingx/misc/logk1token/Fingerprints.kt @@ -1,7 +1,7 @@ package app.revanced.patches.nothingx.misc.logk1token import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext @@ -11,7 +11,7 @@ import app.revanced.patcher.returnType * Fingerprint for the Application onCreate method. * This is used to trigger scanning for existing log files on app startup. */ -internal val BytecodePatchContext.applicationOnCreateMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.applicationOnCreateMethod by gettingFirstMethodDeclaratively { name("onCreate") definingClass { endsWith("BaseApplication;") } returnType("V") diff --git a/patches/src/main/kotlin/app/revanced/patches/nunl/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/nunl/ads/Fingerprints.kt index 90b79596d1..ab57da8c9a 100644 --- a/patches/src/main/kotlin/app/revanced/patches/nunl/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/nunl/ads/Fingerprints.kt @@ -2,13 +2,13 @@ package app.revanced.patches.nunl.ads import app.revanced.patcher.* import app.revanced.patcher.accessFlags -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.instructions import app.revanced.patcher.invoke import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode val BytecodePatchContext.jwPlayerConfigMethod by gettingFirstMutableMethodDeclaratively { +import com.android.tools.smali.dexlib2.Opcode val BytecodePatchContext.jwPlayerConfigMethod by gettingFirstMethodDeclaratively { name("advertisingConfig") definingClass($$"Lcom/jwplayer/pub/api/configuration/PlayerConfig$Builder;") accessFlags(AccessFlags.PUBLIC) diff --git a/patches/src/main/kotlin/app/revanced/patches/nunl/firebase/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/nunl/firebase/Fingerprints.kt index 4e23247a30..ff01d0d8e2 100644 --- a/patches/src/main/kotlin/app/revanced/patches/nunl/firebase/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/nunl/firebase/Fingerprints.kt @@ -1,7 +1,7 @@ package app.revanced.patches.nunl.firebase import app.revanced.patcher.* -import app.revanced.patcher.firstMutableMethodDeclaratively +import app.revanced.patcher.firstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags @@ -10,7 +10,7 @@ internal fun BytecodePatchContext.getFingerprintHashForPackageMethods() = arrayO "Lcom/google/firebase/remoteconfig/internal/ConfigFetchHttpClient;", "Lcom/google/firebase/remoteconfig/internal/ConfigRealtimeHttpClient;" ).map { - firstMutableMethodDeclaratively { + firstMethodDeclaratively { name("getFingerprintHashForPackage") definingClass(it) accessFlags(AccessFlags.PRIVATE) diff --git a/patches/src/main/kotlin/app/revanced/patches/openinghours/misc/fix/crash/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/openinghours/misc/fix/crash/Fingerprints.kt index ac9e9097fe..09881cc986 100644 --- a/patches/src/main/kotlin/app/revanced/patches/openinghours/misc/fix/crash/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/openinghours/misc/fix/crash/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.openinghours.misc.fix.crash -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.definingClass import app.revanced.patcher.name import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.setPlaceMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.setPlaceMethod by gettingFirstMethodDeclaratively { name("setPlace") definingClass("Lde/simon/openinghours/views/custom/PlaceCard;") returnType("V") diff --git a/patches/src/main/kotlin/app/revanced/patches/orfon/detection/root/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/orfon/detection/root/Fingerprints.kt index 057fac319c..b8bbf133e0 100644 --- a/patches/src/main/kotlin/app/revanced/patches/orfon/detection/root/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/orfon/detection/root/Fingerprints.kt @@ -2,13 +2,13 @@ package app.revanced.patches.orfon.detection.root import app.revanced.patcher.accessFlags import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.isDeviceRootedMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.isDeviceRootedMethod by gettingFirstMethodDeclaratively { name("isDeviceRooted") definingClass { endsWith("/RootChecker;") } accessFlags(AccessFlags.PUBLIC) diff --git a/patches/src/main/kotlin/app/revanced/patches/pandora/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/pandora/ads/Fingerprints.kt index 379f54cc6d..f879e3b8f3 100644 --- a/patches/src/main/kotlin/app/revanced/patches/pandora/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/pandora/ads/Fingerprints.kt @@ -1,16 +1,16 @@ package app.revanced.patches.pandora.ads import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.getIsAdSupportedMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getIsAdSupportedMethod by gettingFirstMethodDeclaratively { name("getIsAdSupported") definingClass("UserData;") } -internal val BytecodePatchContext.requestAudioAdMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.requestAudioAdMethod by gettingFirstMethodDeclaratively { name("requestAudioAdFromAdSDK") definingClass { endsWith("ContentServiceOpsImpl;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/pandora/misc/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/pandora/misc/Fingerprints.kt index 30d517477d..38ce83c71f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/pandora/misc/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/pandora/misc/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.pandora.misc import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.getSkipLimitBehaviorMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getSkipLimitBehaviorMethod by gettingFirstMethodDeclaratively { name("getSkipLimitBehavior") definingClass { endsWith("UserData;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/peacocktv/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/peacocktv/ads/Fingerprints.kt index 0253b7ce07..3706f882e8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/peacocktv/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/peacocktv/ads/Fingerprints.kt @@ -1,12 +1,12 @@ package app.revanced.patches.peacocktv.ads -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.accessFlags import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.mediaTailerAdServiceMethod by gettingFirstMutableMethodDeclaratively("Could not build MT Advertising service") { +internal val BytecodePatchContext.mediaTailerAdServiceMethod by gettingFirstMethodDeclaratively("Could not build MT Advertising service") { accessFlags(AccessFlags.PUBLIC) returnType("Ljava/lang/Object;") } diff --git a/patches/src/main/kotlin/app/revanced/patches/photomath/detection/deviceid/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/photomath/detection/deviceid/Fingerprints.kt index 07973332d3..172398045c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/photomath/detection/deviceid/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/photomath/detection/deviceid/Fingerprints.kt @@ -1,6 +1,6 @@ package app.revanced.patches.photomath.detection.deviceid -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.instructions import app.revanced.patcher.invoke import app.revanced.patcher.opcodes @@ -9,7 +9,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.getDeviceIdMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getDeviceIdMethod by gettingFirstMethodDeclaratively { returnType("Ljava/lang/String;") parameterTypes() opcodes( diff --git a/patches/src/main/kotlin/app/revanced/patches/photomath/misc/annoyances/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/photomath/misc/annoyances/Fingerprints.kt index 50963f0c3a..0459aa62dd 100644 --- a/patches/src/main/kotlin/app/revanced/patches/photomath/misc/annoyances/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/photomath/misc/annoyances/Fingerprints.kt @@ -1,12 +1,12 @@ package app.revanced.patches.photomath.misc.annoyances import app.revanced.patcher.* -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.hideUpdatePopupMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.hideUpdatePopupMethod by gettingFirstMethodDeclaratively { definingClass("Lcom/microblink/photomath/main/activity/MainActivity;") accessFlags(AccessFlags.FINAL, AccessFlags.PUBLIC) returnType("V") diff --git a/patches/src/main/kotlin/app/revanced/patches/photomath/misc/unlock/bookpoint/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/photomath/misc/unlock/bookpoint/Fingerprints.kt index 53bf5df7d3..f5e77bf84e 100644 --- a/patches/src/main/kotlin/app/revanced/patches/photomath/misc/unlock/bookpoint/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/photomath/misc/unlock/bookpoint/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.photomath.misc.unlock.bookpoint -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.accessFlags import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.isBookpointEnabledMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.isBookpointEnabledMethod by gettingFirstMethodDeclaratively( "NoGeoData", "NoCountryInGeo", "RemoteConfig", diff --git a/patches/src/main/kotlin/app/revanced/patches/photomath/misc/unlock/plus/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/photomath/misc/unlock/plus/Fingerprints.kt index 82eb721302..067949eb22 100644 --- a/patches/src/main/kotlin/app/revanced/patches/photomath/misc/unlock/plus/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/photomath/misc/unlock/plus/Fingerprints.kt @@ -2,12 +2,12 @@ package app.revanced.patches.photomath.misc.unlock.plus import app.revanced.patcher.accessFlags import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.isPlusUnlockedMethod by gettingFirstMutableMethodDeclaratively("genius") { +internal val BytecodePatchContext.isPlusUnlockedMethod by gettingFirstMethodDeclaratively("genius") { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") definingClass { endsWith("/User;") } diff --git a/patches/src/main/kotlin/app/revanced/patches/piccomafr/misc/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/piccomafr/misc/Fingerprints.kt index 979c87fb83..4a2a0fe2de 100644 --- a/patches/src/main/kotlin/app/revanced/patches/piccomafr/misc/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/piccomafr/misc/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.piccomafr.misc import app.revanced.patcher.accessFlags -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.getAndroidIdMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.getAndroidIdMethod by gettingFirstMethodDeclaratively( "context", "android_id" ) { diff --git a/patches/src/main/kotlin/app/revanced/patches/piccomafr/tracking/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/piccomafr/tracking/Fingerprints.kt index 19c882cd5c..084c3b2b06 100644 --- a/patches/src/main/kotlin/app/revanced/patches/piccomafr/tracking/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/piccomafr/tracking/Fingerprints.kt @@ -1,20 +1,20 @@ package app.revanced.patches.piccomafr.tracking -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.accessFlags import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.appMeasurementMethod by gettingFirstMutableMethodDeclaratively("config/app/", "Fetching remote configuration") { +internal val BytecodePatchContext.appMeasurementMethod by gettingFirstMethodDeclaratively("config/app/", "Fetching remote configuration") { accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL) returnType("V") } -internal val BytecodePatchContext.facebookSDKMethod by gettingFirstMutableMethodDeclaratively("instagram.com", "facebook.com") { +internal val BytecodePatchContext.facebookSDKMethod by gettingFirstMethodDeclaratively("instagram.com", "facebook.com") { accessFlags(AccessFlags.STATIC, AccessFlags.CONSTRUCTOR) } -internal val BytecodePatchContext.firebaseInstallMethod by gettingFirstMutableMethodDeclaratively("https://%s/%s/%s", "firebaseinstallations.googleapis.com") { +internal val BytecodePatchContext.firebaseInstallMethod by gettingFirstMethodDeclaratively("https://%s/%s/%s", "firebaseinstallations.googleapis.com") { accessFlags(AccessFlags.PRIVATE) } diff --git a/patches/src/main/kotlin/app/revanced/patches/pixiv/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/pixiv/ads/Fingerprints.kt index 2f535ba93d..9610cd6046 100644 --- a/patches/src/main/kotlin/app/revanced/patches/pixiv/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/pixiv/ads/Fingerprints.kt @@ -2,13 +2,13 @@ package app.revanced.patches.pixiv.ads import app.revanced.patcher.accessFlags import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.shouldShowAdsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.shouldShowAdsMethod by gettingFirstMethodDeclaratively { definingClass { endsWith("AdUtils;") } name("shouldShowAds") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) diff --git a/patches/src/main/kotlin/app/revanced/patches/primevideo/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/primevideo/ads/Fingerprints.kt index b869a86613..e929cb1a42 100644 --- a/patches/src/main/kotlin/app/revanced/patches/primevideo/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/primevideo/ads/Fingerprints.kt @@ -1,12 +1,12 @@ package app.revanced.patches.primevideo.ads import app.revanced.patcher.* -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.enterServerInsertedAdBreakStateMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.enterServerInsertedAdBreakStateMethod by gettingFirstMethodDeclaratively { name("enter") definingClass("Lcom/amazon/avod/media/ads/internal/state/ServerInsertedAdBreakState;") accessFlags(AccessFlags.PUBLIC) @@ -20,7 +20,7 @@ internal val BytecodePatchContext.enterServerInsertedAdBreakStateMethod by getti ) } -internal val BytecodePatchContext.doTriggerMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.doTriggerMethod by gettingFirstMethodDeclaratively { name("doTrigger") definingClass("Lcom/amazon/avod/fsm/StateBase;") accessFlags(AccessFlags.PROTECTED) diff --git a/patches/src/main/kotlin/app/revanced/patches/primevideo/video/speed/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/primevideo/video/speed/Fingerprints.kt index 740d11b077..7001aa38d0 100644 --- a/patches/src/main/kotlin/app/revanced/patches/primevideo/video/speed/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/primevideo/video/speed/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.primevideo.video.speed import app.revanced.patcher.* -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.playbackUserControlsInitializeMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playbackUserControlsInitializeMethod by gettingFirstMethodDeclaratively { name("initialize") definingClass("Lcom/amazon/avod/playbackclient/activity/feature/PlaybackUserControlsFeature;") accessFlags(AccessFlags.PUBLIC) @@ -13,7 +13,7 @@ internal val BytecodePatchContext.playbackUserControlsInitializeMethod by gettin returnType("V") } -internal val BytecodePatchContext.playbackUserControlsPrepareForPlaybackMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playbackUserControlsPrepareForPlaybackMethod by gettingFirstMethodDeclaratively { name("prepareForPlayback") definingClass("Lcom/amazon/avod/playbackclient/activity/feature/PlaybackUserControlsFeature;") accessFlags(AccessFlags.PUBLIC) diff --git a/patches/src/main/kotlin/app/revanced/patches/protonvpn/delay/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/protonvpn/delay/Fingerprints.kt index 5215f02566..0791f3a88f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/protonvpn/delay/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/protonvpn/delay/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.protonvpn.delay -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.longDelayMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.longDelayMethod by gettingFirstMethodDeclaratively { name("getChangeServerLongDelayInSeconds") } -internal val BytecodePatchContext.shortDelayMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.shortDelayMethod by gettingFirstMethodDeclaratively { name("getChangeServerShortDelayInSeconds") } diff --git a/patches/src/main/kotlin/app/revanced/patches/protonvpn/splittunneling/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/protonvpn/splittunneling/Fingerprints.kt index b68dda1e5b..09cbb977bc 100644 --- a/patches/src/main/kotlin/app/revanced/patches/protonvpn/splittunneling/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/protonvpn/splittunneling/Fingerprints.kt @@ -12,6 +12,6 @@ internal val BytecodePatchContext.enableSplitTunnelingUiMethodMatch by composing ) } -internal val BytecodePatchContext.initializeSplitTunnelingSettingsUIMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.initializeSplitTunnelingSettingsUIMethod by gettingFirstMethodDeclaratively { name("applyRestrictions") } diff --git a/patches/src/main/kotlin/app/revanced/patches/rar/misc/annoyances/purchasereminder/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/rar/misc/annoyances/purchasereminder/Fingerprints.kt index d223932264..facc9109ca 100644 --- a/patches/src/main/kotlin/app/revanced/patches/rar/misc/annoyances/purchasereminder/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/rar/misc/annoyances/purchasereminder/Fingerprints.kt @@ -2,13 +2,13 @@ package app.revanced.patches.rar.misc.annoyances.purchasereminder import app.revanced.patcher.accessFlags import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.showReminderMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.showReminderMethod by gettingFirstMethodDeclaratively { definingClass { endsWith("AdsNotify;") } name("show") accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/ad/comments/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/ad/comments/Fingerprints.kt index 0e7bfdf620..d4ba830632 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/ad/comments/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/ad/comments/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.reddit.ad.comments import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.hideCommentAdsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.hideCommentAdsMethod by gettingFirstMethodDeclaratively { name("invokeSuspend") definingClass { contains("LoadAdsCombinedCall") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/ad/general/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/ad/general/Fingerprints.kt index b27be4a7e3..d9f40e4cf1 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/ad/general/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/ad/general/Fingerprints.kt @@ -1,19 +1,19 @@ package app.revanced.patches.reddit.ad.general import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.instructions import app.revanced.patcher.invoke import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.adPostMethod by gettingFirstMutableMethodDeclaratively("children") { +internal val BytecodePatchContext.adPostMethod by gettingFirstMethodDeclaratively("children") { definingClass { endsWith("Listing;") } returnType("V") } -internal val BytecodePatchContext.newAdPostMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.newAdPostMethod by gettingFirstMethodDeclaratively( "feedElement", "com.reddit.cookie", ) { diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/baconreader/fix/redgifs/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/baconreader/fix/redgifs/Fingerprints.kt index 718cbd8c7a..e69b9cee80 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/baconreader/fix/redgifs/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/baconreader/fix/redgifs/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.reddit.customclients.baconreader.fix.redgifs -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.definingClass import app.revanced.patcher.name import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.getOkHttpClientMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getOkHttpClientMethod by gettingFirstMethodDeclaratively { definingClass("Lcom/onelouder/baconreader/media/gfycat/RedGifsManager;") name("getOkhttpClient") returnType("Lokhttp3/OkHttpClient;") diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/ads/Fingerprints.kt index eaf988fbad..2c3abba5dd 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/ads/Fingerprints.kt @@ -1,12 +1,12 @@ package app.revanced.patches.reddit.customclients.boostforreddit.ads -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.maxMediationMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.maxMediationMethod by gettingFirstMethodDeclaratively( "MaxMediation: Attempting to initialize SDK" ) -internal val BytecodePatchContext.admobMediationMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.admobMediationMethod by gettingFirstMethodDeclaratively( "AdmobMediation: Attempting to initialize SDK" ) diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/api/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/api/Fingerprints.kt index fad04c5994..7c0422cf0a 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/api/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/api/Fingerprints.kt @@ -1,15 +1,15 @@ package app.revanced.patches.reddit.customclients.boostforreddit.api import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.buildUserAgentMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.buildUserAgentMethod by gettingFirstMethodDeclaratively( "%s:%s:%s (by /u/%s)", ) -internal val BytecodePatchContext.getClientIdMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getClientIdMethod by gettingFirstMethodDeclaratively { name("getClientId") definingClass { endsWith("Credentials;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/fix/redgifs/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/fix/redgifs/Fingerprints.kt index 5a2b749eab..518930b35d 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/fix/redgifs/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/fix/redgifs/Fingerprints.kt @@ -1,12 +1,12 @@ package app.revanced.patches.reddit.customclients.boostforreddit.fix.redgifs import app.revanced.patcher.* -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.createOkHttpClientMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.createOkHttpClientMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PRIVATE) opcodes( Opcode.NEW_INSTANCE, diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/fix/slink/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/fix/slink/Fingerprints.kt index faaacc40d8..562cb121ce 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/fix/slink/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/boostforreddit/fix/slink/Fingerprints.kt @@ -1,19 +1,19 @@ package app.revanced.patches.reddit.customclients.boostforreddit.fix.slink -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.accessFlags import app.revanced.patcher.definingClass import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.getOAuthAccessTokenMethod by gettingFirstMutableMethodDeclaratively("access_token") { +internal val BytecodePatchContext.getOAuthAccessTokenMethod by gettingFirstMethodDeclaratively("access_token") { definingClass("Lnet/dean/jraw/http/oauth/OAuthData;") accessFlags(AccessFlags.PUBLIC) returnType("Ljava/lang/String;") } -internal val BytecodePatchContext.handleNavigationMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.handleNavigationMethod by gettingFirstMethodDeclaratively( "android.intent.action.SEARCH", "subscription", "sort", diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/api/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/api/Fingerprints.kt index f36f909a41..b8d8da7bef 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/api/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/api/Fingerprints.kt @@ -1,6 +1,6 @@ package app.revanced.patches.reddit.customclients.infinityforreddit.api -import app.revanced.patcher.gettingFirstMutableMethod +import app.revanced.patcher.gettingFirstMethod import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.apiUtilsMethod by gettingFirstMutableMethod("native-lib") \ No newline at end of file +internal val BytecodePatchContext.apiUtilsMethod by gettingFirstMethod("native-lib") \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/subscription/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/subscription/Fingerprints.kt index f106f6406e..0313a99321 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/subscription/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/infinityforreddit/subscription/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.reddit.customclients.infinityforreddit.subscription -import app.revanced.patcher.gettingFirstMutableMethod -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethod +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.invoke import app.revanced.patcher.instructions import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.billingClientOnServiceConnectedMethod by gettingFirstMutableMethod("Billing service connected") +internal val BytecodePatchContext.billingClientOnServiceConnectedMethod by gettingFirstMethod("Billing service connected") -internal val BytecodePatchContext.startSubscriptionActivityMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.startSubscriptionActivityMethod by gettingFirstMethodDeclaratively { instructions(0x10008000L()) } diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/joeyforreddit/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/joeyforreddit/ads/Fingerprints.kt index a5fa590419..b4924a228c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/joeyforreddit/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/joeyforreddit/ads/Fingerprints.kt @@ -1,12 +1,12 @@ package app.revanced.patches.reddit.customclients.joeyforreddit.ads -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.accessFlags import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.isAdFreeUserMethod by gettingFirstMutableMethodDeclaratively("AD_FREE_USER") { +internal val BytecodePatchContext.isAdFreeUserMethod by gettingFirstMethodDeclaratively("AD_FREE_USER") { accessFlags(AccessFlags.PUBLIC) returnType("Z") } diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/joeyforreddit/api/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/joeyforreddit/api/Fingerprints.kt index 580878f0c7..37b39069ec 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/joeyforreddit/api/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/joeyforreddit/api/Fingerprints.kt @@ -1,19 +1,19 @@ package app.revanced.patches.reddit.customclients.joeyforreddit.api import app.revanced.patcher.* -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.authUtilityUserAgentMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.authUtilityUserAgentMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returnType("Ljava/lang/String;") opcodes(Opcode.APUT_OBJECT) custom { immutableClassDef.sourceFile == "AuthUtility.java" } } -internal val BytecodePatchContext.getClientIdMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getClientIdMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returnType("L") opcodes( diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/joeyforreddit/detection/piracy/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/joeyforreddit/detection/piracy/Fingerprints.kt index b80019592e..d1b4ba9e91 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/joeyforreddit/detection/piracy/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/joeyforreddit/detection/piracy/Fingerprints.kt @@ -2,7 +2,7 @@ package app.revanced.patches.reddit.customclients.joeyforreddit.detection.piracy import app.revanced.patcher.accessFlags import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.instructions import app.revanced.patcher.invoke import app.revanced.patcher.opcodes @@ -11,7 +11,7 @@ import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.detectPiracyMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.detectPiracyMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC) returnType("V") opcodes( diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/redditisfun/api/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/redditisfun/api/Fingerprints.kt index 592b7dcae5..cab6b3e7ab 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/redditisfun/api/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/redditisfun/api/Fingerprints.kt @@ -1,7 +1,7 @@ package app.revanced.patches.reddit.customclients.redditisfun.api import app.revanced.patcher.* -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode @@ -20,7 +20,7 @@ internal val BytecodePatchContext.buildAuthorizationStringMethodMatch by composi ) } -internal val BytecodePatchContext.getUserAgentMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getUserAgentMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returnType("Ljava/lang/String;") parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/relayforreddit/api/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/relayforreddit/api/Fingerprints.kt index 50c39b6285..b39e0d9ecd 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/relayforreddit/api/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/relayforreddit/api/Fingerprints.kt @@ -1,7 +1,7 @@ package app.revanced.patches.reddit.customclients.relayforreddit.api import app.revanced.patcher.composingFirstMethod -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.instructions import app.revanced.patcher.invoke import app.revanced.patcher.parameterTypes @@ -24,10 +24,10 @@ internal val BytecodePatchContext.getRefreshTokenMethodMatch by baseClientIdMeth internal val BytecodePatchContext.loginActivityClientIdMethodMatch by baseClientIdMethod("&duration=permanent") -internal val BytecodePatchContext.redditCheckDisableAPIMethod by gettingFirstMutableMethodDeclaratively("Reddit Disabled") { +internal val BytecodePatchContext.redditCheckDisableAPIMethod by gettingFirstMethodDeclaratively("Reddit Disabled") { instructions(Opcode.IF_EQZ()) } -internal val BytecodePatchContext.setRemoteConfigMethod by gettingFirstMutableMethodDeclaratively("reddit_oauth_url") { +internal val BytecodePatchContext.setRemoteConfigMethod by gettingFirstMethodDeclaratively("reddit_oauth_url") { parameterTypes("Lcom/google/firebase/remoteconfig/FirebaseRemoteConfig;") } diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/slide/api/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/slide/api/Fingerprints.kt index 538d646b1e..a96ae3beaa 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/slide/api/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/slide/api/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.reddit.customclients.slide.api import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.getClientIdMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getClientIdMethod by gettingFirstMethodDeclaratively { name("getClientId") definingClass { endsWith("Credentials;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/ads/Fingerprints.kt index 5284455ba5..d7f1630a24 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/ads/Fingerprints.kt @@ -1,12 +1,12 @@ package app.revanced.patches.reddit.customclients.sync.ads -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.accessFlags import com.android.tools.smali.dexlib2.AccessFlags import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.isAdsEnabledMethod by gettingFirstMutableMethodDeclaratively("SyncIapHelper") { +internal val BytecodePatchContext.isAdsEnabledMethod by gettingFirstMethodDeclaratively("SyncIapHelper") { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returnType("Z") } diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/detection/piracy/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/detection/piracy/Fingerprints.kt index 2da27eee68..a78f840aa0 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/detection/piracy/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/detection/piracy/Fingerprints.kt @@ -4,7 +4,7 @@ import app.revanced.patcher.accessFlags import app.revanced.patcher.custom import app.revanced.patcher.extensions.instructions import app.revanced.patcher.extensions.reference -import app.revanced.patcher.gettingFirstMutableMethodDeclarativelyOrNull +import app.revanced.patcher.gettingFirstMethodDeclarativelyOrNull import app.revanced.patcher.instructions import app.revanced.patcher.invoke import app.revanced.patcher.opcodes @@ -14,7 +14,7 @@ import app.revanced.patcher.type import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.detectPiracyMethodOrNull by gettingFirstMutableMethodDeclarativelyOrNull( +internal val BytecodePatchContext.detectPiracyMethodOrNull by gettingFirstMethodDeclarativelyOrNull( "Lcom/github/javiersantos/piracychecker/PiracyChecker;", ) { accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL) diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/annoyances/startup/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/annoyances/startup/Fingerprints.kt index 20e60a3fae..cb9a3dc503 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/annoyances/startup/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/annoyances/startup/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.reddit.customclients.sync.syncforreddit.annoyances.startup import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.mainActivityOnCreateMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.mainActivityOnCreateMethod by gettingFirstMethodDeclaratively { name("onCreate") definingClass { endsWith("MainActivity;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/api/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/api/Fingerprints.kt index 1db4071115..2af8bf1780 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/api/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/api/Fingerprints.kt @@ -2,7 +2,7 @@ package app.revanced.patches.reddit.customclients.sync.syncforreddit.api import app.revanced.patcher.ClassDefComposing import app.revanced.patcher.composingFirstMethod -import app.revanced.patcher.gettingFirstMutableMethod +import app.revanced.patcher.gettingFirstMethod import app.revanced.patcher.instructions import app.revanced.patcher.invoke import app.revanced.patcher.patch.BytecodePatchContext @@ -17,7 +17,7 @@ internal val ClassDef.getBearerTokenMethodMatch by ClassDefComposing.composingFi instructions(string { startsWith("Basic") }) } -internal val BytecodePatchContext.getUserAgentMethod by gettingFirstMutableMethod( +internal val BytecodePatchContext.getUserAgentMethod by gettingFirstMethod( "android:com.laurencedawson.reddit_sync", ) diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/fix/redgifs/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/fix/redgifs/Fingerprints.kt index 8938b850e8..ca08b5d7f6 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/fix/redgifs/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/fix/redgifs/Fingerprints.kt @@ -2,7 +2,7 @@ package app.revanced.patches.reddit.customclients.sync.syncforreddit.fix.redgifs import app.revanced.patcher.* import app.revanced.patcher.extensions.instructions -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.util.indexOfFirstInstruction import app.revanced.util.writeRegister @@ -10,7 +10,7 @@ import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.instruction.NarrowLiteralInstruction -internal val BytecodePatchContext.createOkHttpClientMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.createOkHttpClientMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC) returnType("V") parameterTypes() @@ -26,12 +26,12 @@ internal val BytecodePatchContext.createOkHttpClientMethod by gettingFirstMutabl } } -internal val BytecodePatchContext.getDefaultUserAgentMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getDefaultUserAgentMethod by gettingFirstMethodDeclaratively { name("getDefaultUserAgent") definingClass(EXTENSION_CLASS_DESCRIPTOR) } -internal val BytecodePatchContext.getOriginalUserAgentMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getOriginalUserAgentMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returnType { startsWith("Ljava/lang/String;") } parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/fix/slink/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/fix/slink/Fingerprints.kt index 5b1d12e137..35d97c07ba 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/fix/slink/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/fix/slink/Fingerprints.kt @@ -1,14 +1,14 @@ package app.revanced.patches.reddit.customclients.sync.syncforreddit.fix.slink import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethod -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethod +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.linkHelperOpenLinkMethod by gettingFirstMutableMethod("Link title: ") +internal val BytecodePatchContext.linkHelperOpenLinkMethod by gettingFirstMethod("Link title: ") -internal val BytecodePatchContext.setAuthorizationHeaderMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.setAuthorizationHeaderMethod by gettingFirstMethodDeclaratively( "Authorization", "bearer ", ) { diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/fix/thumbnail/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/fix/thumbnail/Fingerprints.kt index ddf0354fbd..cc2e7d9cf4 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/fix/thumbnail/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/customclients/sync/syncforreddit/fix/thumbnail/Fingerprints.kt @@ -2,12 +2,12 @@ package app.revanced.patches.reddit.customclients.sync.syncforreddit.fix.thumbna import app.revanced.patcher.accessFlags import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.customImageViewLoadMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.customImageViewLoadMethod by gettingFirstMethodDeclaratively { definingClass { endsWith("CustomImageView;") } accessFlags(AccessFlags.PUBLIC) parameterTypes("Ljava/lang/String;", "Z", "Z", "I", "I") diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/layout/disablescreenshotpopup/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/layout/disablescreenshotpopup/Fingerprints.kt index fd2f0f30e4..358089a430 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/layout/disablescreenshotpopup/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/layout/disablescreenshotpopup/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.reddit.layout.disablescreenshotpopup import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.disableScreenshotPopupMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.disableScreenshotPopupMethod by gettingFirstMethodDeclaratively { name("invoke") definingClass { endsWith($$"$ScreenshotTakenBannerKt$lambda-1$1;") } returnType("V") diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/layout/premiumicon/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/layout/premiumicon/Fingerprints.kt index 0ecf821698..da4a734926 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/layout/premiumicon/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/layout/premiumicon/Fingerprints.kt @@ -1,12 +1,12 @@ package app.revanced.patches.reddit.layout.premiumicon import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.hasPremiumIconAccessMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.hasPremiumIconAccessMethod by gettingFirstMethodDeclaratively { name("isPremiumSubscriber") definingClass { endsWith("MyAccount;") } returnType("Z") diff --git a/patches/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/Fingerprints.kt index 578fe72b64..4346283565 100644 --- a/patches/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/reddit/misc/tracking/url/Fingerprints.kt @@ -2,11 +2,11 @@ package app.revanced.patches.reddit.misc.tracking.url import app.revanced.patcher.custom import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.immutableClassDef import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.shareLinkFormatterMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.shareLinkFormatterMethod by gettingFirstMethodDeclaratively { definingClass { startsWith("Lcom/reddit/sharing/") } custom { immutableClassDef.sourceFile == "UrlUtil.kt" } } diff --git a/patches/src/main/kotlin/app/revanced/patches/samsung/radio/misc/fix/crash/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/samsung/radio/misc/fix/crash/Fingerprints.kt index f77e7937f8..22a3e4c596 100644 --- a/patches/src/main/kotlin/app/revanced/patches/samsung/radio/misc/fix/crash/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/samsung/radio/misc/fix/crash/Fingerprints.kt @@ -1,10 +1,10 @@ package app.revanced.patches.samsung.radio.misc.fix.crash -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.permissionRequestListMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.permissionRequestListMethod by gettingFirstMethodDeclaratively( "android.permission.POST_NOTIFICATIONS", "android.permission.READ_MEDIA_AUDIO", "android.permission.RECORD_AUDIO" diff --git a/patches/src/main/kotlin/app/revanced/patches/samsung/radio/restrictions/device/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/samsung/radio/restrictions/device/Fingerprints.kt index 39935d6968..f5cb7fce10 100644 --- a/patches/src/main/kotlin/app/revanced/patches/samsung/radio/restrictions/device/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/samsung/radio/restrictions/device/Fingerprints.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.immutable.reference.ImmutableMethodReference import com.android.tools.smali.dexlib2.util.MethodUtil -internal val BytecodePatchContext.checkDeviceMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.checkDeviceMethod by gettingFirstMethodDeclaratively { returnType("Z") instructions( predicates = unorderedAllOf( diff --git a/patches/src/main/kotlin/app/revanced/patches/serviceportalbund/detection/root/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/serviceportalbund/detection/root/Fingerprints.kt index f03c5f3111..ce78f477db 100644 --- a/patches/src/main/kotlin/app/revanced/patches/serviceportalbund/detection/root/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/serviceportalbund/detection/root/Fingerprints.kt @@ -2,12 +2,12 @@ package app.revanced.patches.serviceportalbund.detection.root import app.revanced.patcher.accessFlags import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.rootDetectionMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.rootDetectionMethod by gettingFirstMethodDeclaratively { definingClass { endsWith("/DeviceIntegrityCheck;") } accessFlags(AccessFlags.PUBLIC) returnType("V") diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/Fingerprints.kt index 461c27ee64..035523a62d 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.shared -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.castContextFetchMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.castContextFetchMethod by gettingFirstMethodDeclaratively( "Error fetching CastContext." ) -internal val BytecodePatchContext.primeMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.primeMethod by gettingFirstMethodDeclaratively( "com.android.vending", "com.google.android.GoogleCamera" ) diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/Fingerprints.kt index fd41b8a619..074bff4f28 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/Fingerprints.kt @@ -4,7 +4,7 @@ import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.numberOfPresetAppNamesExtensionMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.numberOfPresetAppNamesExtensionMethod by gettingFirstMethodDeclaratively { name("numberOfPresetAppNames") definingClass(EXTENSION_CLASS_DESCRIPTOR) accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC) @@ -14,7 +14,7 @@ internal val BytecodePatchContext.numberOfPresetAppNamesExtensionMethod by getti // A much simpler method exists that can set the small icon (contains string "414843287017"), // but that has limited usage and this one allows changing any part of the notification. -internal val BytecodePatchContext.notificationMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.notificationMethod by gettingFirstMethodDeclaratively( "key_action_priority", ) { accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/checks/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/checks/Fingerprints.kt index 0411ead69b..237344acb2 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/checks/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/checks/Fingerprints.kt @@ -1,12 +1,12 @@ package app.revanced.patches.shared.misc.checks -import app.revanced.patcher.gettingFirstMutableClassDefDeclaratively +import app.revanced.patcher.gettingFirstClassDefDeclaratively import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.patchInfoClassDef by gettingFirstMutableClassDefDeclaratively( +internal val BytecodePatchContext.patchInfoClassDef by gettingFirstClassDefDeclaratively( "Lapp/revanced/extension/shared/checks/PatchInfo;" ) -internal val BytecodePatchContext.patchInfoBuildClassDef by gettingFirstMutableClassDefDeclaratively( +internal val BytecodePatchContext.patchInfoBuildClassDef by gettingFirstClassDefDeclaratively( $$"Lapp/revanced/extension/shared/checks/PatchInfo$Build;" ) diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/Fingerprints.kt index bdeff66c0a..39611369a5 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/debugging/Fingerprints.kt @@ -1,7 +1,7 @@ package app.revanced.patches.shared.misc.debugging -import app.revanced.patcher.gettingFirstMethodDeclaratively -import app.revanced.patcher.firstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively +import app.revanced.patcher.firstMethodDeclaratively import app.revanced.patcher.accessFlags import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext @@ -9,7 +9,7 @@ import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.iface.ClassDef -internal val BytecodePatchContext.experimentalFeatureFlagParentMethod by gettingFirstMethodDeclaratively( +internal val BytecodePatchContext.experimentalFeatureFlagParentMethod by gettingFirstImmutableMethodDeclaratively( "Unable to parse proto typed experiment flag: " ) { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) @@ -18,28 +18,28 @@ internal val BytecodePatchContext.experimentalFeatureFlagParentMethod by getting } context(_: BytecodePatchContext) -internal fun ClassDef.getExperimentalBooleanFeatureFlagMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getExperimentalBooleanFeatureFlagMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returnType("Z") parameterTypes("L", "J", "Z") } context(_: BytecodePatchContext) -internal fun ClassDef.getExperimentalDoubleFeatureFlagMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getExperimentalDoubleFeatureFlagMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("D") parameterTypes("J", "D") } context(_: BytecodePatchContext) -internal fun ClassDef.getExperimentalLongFeatureFlagMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getExperimentalLongFeatureFlagMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("J") parameterTypes("J", "J") } context(_: BytecodePatchContext) -internal fun ClassDef.getExperimentalStringFeatureFlagMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getExperimentalStringFeatureFlagMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Ljava/lang/String;") parameterTypes("J", "Ljava/lang/String;") diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/extension/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/extension/Fingerprints.kt index c33dff5110..3bff13aacc 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/extension/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/extension/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.shared.misc.extension import app.revanced.patcher.* -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.getPatchesReleaseVersionMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getPatchesReleaseVersionMethod by gettingFirstMethodDeclaratively { name("getPatchesReleaseVersion") definingClass(EXTENSION_CLASS_DESCRIPTOR) accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/extension/SharedExtensionPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/extension/SharedExtensionPatch.kt index 7f493623aa..79c3a60f14 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/extension/SharedExtensionPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/extension/SharedExtensionPatch.kt @@ -2,7 +2,7 @@ package app.revanced.patches.shared.misc.extension import app.revanced.patcher.* import app.revanced.patcher.extensions.addInstruction -import app.revanced.patcher.firstMutableClassDef +import app.revanced.patcher.firstClassDef import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.patch.bytecodePatch import app.revanced.util.returnEarly @@ -39,7 +39,7 @@ fun sharedExtensionPatch( apply { // Verify the extension class exists. - firstMutableClassDef(EXTENSION_CLASS_DESCRIPTOR) + firstClassDef(EXTENSION_CLASS_DESCRIPTOR) } afterDependents { @@ -88,7 +88,7 @@ class ExtensionHook internal constructor( ) { context(context: BytecodePatchContext) operator fun invoke(extensionClassDescriptor: String) { - val method = context.firstMutableMethodDeclaratively(build = build) + val method = context.firstMethodDeclaratively(build = build) val insertIndex = method.getInsertIndex() val contextRegister = method.getContextRegister() diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/gms/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/gms/Fingerprints.kt index 34a7b2d682..8d61f16b3b 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/gms/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/gms/Fingerprints.kt @@ -4,7 +4,7 @@ import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.googlePlayUtilityMethod by gettingFirstMutableMethodDeclarativelyOrNull( +internal val BytecodePatchContext.googlePlayUtilityMethod by gettingFirstMethodDeclarativelyOrNull( "This should never happen.", "MetadataValueReader", "com.google.android.gms", @@ -14,7 +14,7 @@ internal val BytecodePatchContext.googlePlayUtilityMethod by gettingFirstMutable parameterTypes("L", "I") } -internal val BytecodePatchContext.serviceCheckMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.serviceCheckMethod by gettingFirstMethodDeclaratively( "Google Play Services not available", ) { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) @@ -22,7 +22,7 @@ internal val BytecodePatchContext.serviceCheckMethod by gettingFirstMutableMetho parameterTypes("L", "I") } -internal val BytecodePatchContext.gmsCoreSupportMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.gmsCoreSupportMethod by gettingFirstMethodDeclaratively { name("getGmsCoreVendorGroupId") definingClass(EXTENSION_CLASS_DESCRIPTOR) accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC) @@ -30,7 +30,7 @@ internal val BytecodePatchContext.gmsCoreSupportMethod by gettingFirstMutableMet parameterTypes() } -internal val BytecodePatchContext.originalPackageNameExtensionMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.originalPackageNameExtensionMethod by gettingFirstMethodDeclaratively { name("getOriginalPackageName") definingClass(EXTENSION_CLASS_DESCRIPTOR) accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC) diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/litho/filter/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/litho/filter/Fingerprints.kt index 59c52e34f5..4c68fc5e1d 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/litho/filter/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/litho/filter/Fingerprints.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.lithoFilterMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.lithoFilterMethod by gettingFirstMethodDeclaratively { definingClass { endsWith("/LithoFilterPatch;") } accessFlags(AccessFlags.STATIC, AccessFlags.CONSTRUCTOR) } @@ -33,7 +33,7 @@ internal val BytecodePatchContext.protobufBufferReferenceMethodMatch by composin /** * Matches a method that use the protobuf of our component. */ -internal val BytecodePatchContext.protobufBufferReferenceLegacyMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.protobufBufferReferenceLegacyMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes("I", "Ljava/nio/ByteBuffer;") @@ -44,19 +44,19 @@ internal val BytecodePatchContext.componentContextParserMethodMatch by composing instructions("Number of bits must be positive"()) } -internal val BytecodePatchContext.emptyComponentMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.emptyComponentMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.PRIVATE, AccessFlags.CONSTRUCTOR) parameterTypes() instructions("EmptyComponent"()) custom { immutableClassDef.methods.filter { AccessFlags.STATIC.isSet(it.accessFlags) }.size == 1 } } -internal val BytecodePatchContext.componentCreateMethod by gettingFirstMutableMethod( +internal val BytecodePatchContext.componentCreateMethod by gettingFirstMethod( "Element missing correct type extension", "Element missing type", ) -internal val BytecodePatchContext.lithoThreadExecutorMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.lithoThreadExecutorMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) parameterTypes("I", "I", "I") instructions(1L()) // 1L = default thread timeout. diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/litho/filter/LithoFilterPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/litho/filter/LithoFilterPatch.kt index 3d97331776..205c47a9cb 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/litho/filter/LithoFilterPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/litho/filter/LithoFilterPatch.kt @@ -7,7 +7,7 @@ import app.revanced.patcher.classDef import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.removeInstructions import app.revanced.patcher.extensions.replaceInstruction -import app.revanced.patcher.firstClassDef +import app.revanced.patcher.firstImmutableClassDef import app.revanced.patcher.immutableClassDef import app.revanced.patcher.patch.BytecodePatchBuilder import app.revanced.patcher.patch.BytecodePatchContext @@ -143,7 +143,7 @@ internal fun lithoFilterPatch( AccessFlags.STATIC.isSet(method.accessFlags) } - val emptyComponentField = firstClassDef { + val emptyComponentField = firstImmutableClassDef { // Only one field that matches. type == builderMethodDescriptor.returnType }.fields.single() diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/pairip/license/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/pairip/license/Fingerprints.kt index 2c83dfad26..05afbe6a0b 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/pairip/license/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/pairip/license/Fingerprints.kt @@ -1,16 +1,16 @@ package app.revanced.patches.shared.misc.pairip.license import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclarativelyOrNull +import app.revanced.patcher.gettingFirstMethodDeclarativelyOrNull import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.processLicenseResponseMethod by gettingFirstMutableMethodDeclarativelyOrNull { +internal val BytecodePatchContext.processLicenseResponseMethod by gettingFirstMethodDeclarativelyOrNull { name("processResponse") definingClass("Lcom/pairip/licensecheck/LicenseClient;") } -internal val BytecodePatchContext.validateLicenseResponseMethod by gettingFirstMutableMethodDeclarativelyOrNull { +internal val BytecodePatchContext.validateLicenseResponseMethod by gettingFirstMethodDeclarativelyOrNull { name("validateResponse") definingClass("Lcom/pairip/licensecheck/ResponseValidator;") } diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/settings/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/settings/Fingerprints.kt index a1566c23f3..bd7a941b7f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/settings/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/settings/Fingerprints.kt @@ -2,8 +2,8 @@ package app.revanced.patches.shared.misc.settings import app.revanced.patcher.accessFlags import app.revanced.patcher.definingClass +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively import app.revanced.patcher.gettingFirstMethodDeclaratively -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext @@ -11,7 +11,7 @@ import app.revanced.patcher.returnType import app.revanced.patches.shared.misc.extension.EXTENSION_CLASS_DESCRIPTOR import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.themeLightColorResourceNameMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.themeLightColorResourceNameMethod by gettingFirstMethodDeclaratively { name("getThemeLightColorResourceName") definingClass(EXTENSION_CLASS_DESCRIPTOR) accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC) @@ -19,7 +19,7 @@ internal val BytecodePatchContext.themeLightColorResourceNameMethod by gettingFi parameterTypes() } -internal val BytecodePatchContext.themeDarkColorResourceNameMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.themeDarkColorResourceNameMethod by gettingFirstMethodDeclaratively { name("getThemeDarkColorResourceName") definingClass(EXTENSION_CLASS_DESCRIPTOR) accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC) diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt index 97f8f0aaef..8fb0bf2f4a 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt @@ -6,8 +6,8 @@ import app.revanced.patcher.composingFirstMethod import app.revanced.patcher.custom import app.revanced.patcher.definingClass import app.revanced.patcher.extensions.methodReference +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively import app.revanced.patcher.gettingFirstMethodDeclaratively -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively import app.revanced.patcher.immutableClassDef import app.revanced.patcher.instructions import app.revanced.patcher.invoke @@ -86,7 +86,7 @@ internal val BytecodePatchContext.buildRequestMethodMatch by composingFirstMetho } } -internal val BytecodePatchContext.protobufClassParseByteBufferMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.protobufClassParseByteBufferMethod by gettingFirstImmutableMethodDeclaratively { name("parseFrom") accessFlags(AccessFlags.PROTECTED, AccessFlags.STATIC) returnType("L") @@ -114,7 +114,7 @@ internal val BytecodePatchContext.createStreamingDataMethodMatch by composingFir } } -internal val BytecodePatchContext.buildMediaDataSourceMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.buildMediaDataSourceMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) parameterTypes( "Landroid/net/Uri;", @@ -149,7 +149,7 @@ internal val BytecodePatchContext.mediaFetchEnumConstructorMethodMatch by compos ) } -internal val BytecodePatchContext.nerdsStatsVideoFormatBuilderMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.nerdsStatsVideoFormatBuilderMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returnType("Ljava/lang/String;") parameterTypes("L") @@ -158,7 +158,7 @@ internal val BytecodePatchContext.nerdsStatsVideoFormatBuilderMethod by gettingF ) } -internal val BytecodePatchContext.patchIncludedExtensionMethodMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.patchIncludedExtensionMethodMethod by gettingFirstMethodDeclaratively { name("isPatchIncluded") definingClass(EXTENSION_CLASS_DESCRIPTOR) returnType("Z") diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatch.kt index 3787647ab3..23fec8ebc0 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatch.kt @@ -4,7 +4,7 @@ import app.revanced.com.android.tools.smali.dexlib2.mutable.MutableMethod import app.revanced.com.android.tools.smali.dexlib2.mutable.MutableMethod.Companion.toMutable import app.revanced.patcher.custom import app.revanced.patcher.extensions.* -import app.revanced.patcher.firstMutableMethodDeclaratively +import app.revanced.patcher.firstMethodDeclaratively import app.revanced.patcher.opcodes import app.revanced.patcher.patch.BytecodePatchBuilder import app.revanced.patcher.patch.BytecodePatchContext @@ -284,7 +284,7 @@ internal fun spoofVideoStreamsPatch( ) } - val sabrMethod = firstMutableMethodDeclaratively { + val sabrMethod = firstMethodDeclaratively { returnType(mediaFetchEnumClass) opcodes( Opcode.SGET_OBJECT, diff --git a/patches/src/main/kotlin/app/revanced/patches/songpal/badge/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/songpal/badge/Fingerprints.kt index c1fa94636f..a7fc1b59dc 100644 --- a/patches/src/main/kotlin/app/revanced/patches/songpal/badge/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/songpal/badge/Fingerprints.kt @@ -7,7 +7,7 @@ import com.android.tools.smali.dexlib2.immutable.reference.ImmutableMethodRefere import com.android.tools.smali.dexlib2.util.MethodUtil // Located @ ub.i0.h#p (9.5.0) -internal val BytecodePatchContext.createTabsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.createTabsMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PRIVATE) returnType("Ljava/util/List;") instructions( @@ -20,7 +20,7 @@ internal val BytecodePatchContext.createTabsMethod by gettingFirstMutableMethodD } // Located @ com.sony.songpal.mdr.vim.activity.MdrRemoteBaseActivity.e#run (9.5.0) -internal val BytecodePatchContext.showNotificationMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.showNotificationMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC) returnType("V") instructions(method { MethodUtil.methodSignaturesMatch(this, expectedReference) }) diff --git a/patches/src/main/kotlin/app/revanced/patches/soundcloud/ad/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/soundcloud/ad/Fingerprints.kt index 2efebb8752..674e225e01 100644 --- a/patches/src/main/kotlin/app/revanced/patches/soundcloud/ad/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/soundcloud/ad/Fingerprints.kt @@ -16,7 +16,7 @@ internal val BytecodePatchContext.interceptMethodMatch by composingFirstMethod(" ) } -internal val BytecodePatchContext.userConsumerPlanConstructorMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.userConsumerPlanConstructorMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) parameterTypes( "Ljava/lang/String;", diff --git a/patches/src/main/kotlin/app/revanced/patches/soundcloud/analytics/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/soundcloud/analytics/Fingerprints.kt index 9ccf55606c..19dec5923c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/soundcloud/analytics/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/soundcloud/analytics/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.soundcloud.analytics import app.revanced.patcher.accessFlags -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.createTrackingApiMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.createTrackingApiMethod by gettingFirstMethodDeclaratively( "backend", "boogaloo" ) { diff --git a/patches/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/Fingerprints.kt index e2d2b8b0eb..fa73735adf 100644 --- a/patches/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/soundcloud/offlinesync/Fingerprints.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.downloadOperationsURLBuilderMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.downloadOperationsURLBuilderMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Ljava/lang/String") parameterTypes("L", "L") @@ -16,7 +16,7 @@ internal val BytecodePatchContext.downloadOperationsURLBuilderMethod by gettingF ) } -internal val BytecodePatchContext.downloadOperationsHeaderVerificationMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.downloadOperationsHeaderVerificationMethod by gettingFirstMethodDeclaratively( "X-SC-Mime-Type", "X-SC-Preset", "X-SC-Quality", diff --git a/patches/src/main/kotlin/app/revanced/patches/soundcloud/shared/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/soundcloud/shared/Fingerprints.kt index 8e04072257..4916be459a 100644 --- a/patches/src/main/kotlin/app/revanced/patches/soundcloud/shared/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/soundcloud/shared/Fingerprints.kt @@ -1,14 +1,14 @@ package app.revanced.patches.soundcloud.shared import app.revanced.patcher.accessFlags -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.opcodes import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.featureConstructorMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.featureConstructorMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) parameterTypes("Ljava/lang/String;", "Z", "Ljava/util/List;") opcodes( diff --git a/patches/src/main/kotlin/app/revanced/patches/spotify/layout/theme/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/spotify/layout/theme/Fingerprints.kt index 5a76d1aa82..584444b36f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/spotify/layout/theme/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/spotify/layout/theme/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.spotify.layout.theme import app.revanced.patcher.accessFlags -import app.revanced.patcher.firstMutableMethodDeclaratively +import app.revanced.patcher.firstMethodDeclaratively +import app.revanced.patcher.gettingFirstImmutableMethod +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively import app.revanced.patcher.gettingFirstMethod import app.revanced.patcher.gettingFirstMethodDeclaratively -import app.revanced.patcher.gettingFirstMutableMethod -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively import app.revanced.patcher.instructions import app.revanced.patcher.invoke import app.revanced.patcher.parameterTypes @@ -15,20 +15,20 @@ import app.revanced.patcher.unorderedAllOf import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.iface.ClassDef -internal val BytecodePatchContext.colorSpaceUtilsClassMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.colorSpaceUtilsClassMethod by gettingFirstImmutableMethodDeclaratively { instructions("The specified color must be encoded in an RGB color space."(String::contains)) } context(_: BytecodePatchContext) -internal fun ClassDef.getConvertArgbToRgbaMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getConvertArgbToRgbaMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC, AccessFlags.FINAL) returnType("J") parameterTypes("J") } -internal val BytecodePatchContext.parseLottieJsonMethod by gettingFirstMutableMethod("Unsupported matte type: ") +internal val BytecodePatchContext.parseLottieJsonMethod by gettingFirstMethod("Unsupported matte type: ") -internal val BytecodePatchContext.parseAnimatedColorMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.parseAnimatedColorMethod by gettingFirstMethodDeclaratively { parameterTypes("L", "F") returnType("Ljava/lang/Object;") instructions(predicates = unorderedAllOf(255.0.toRawBits()(), 1.0.toRawBits()())) diff --git a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/fix/login/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/fix/login/Fingerprints.kt index 26221dd3ab..d1609e8ccf 100644 --- a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/fix/login/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/fix/login/Fingerprints.kt @@ -1,18 +1,18 @@ package app.revanced.patches.spotify.misc.fix.login -import app.revanced.patcher.firstMutableMethodDeclaratively +import app.revanced.patcher.firstMethodDeclaratively +import app.revanced.patcher.gettingFirstImmutableMethod +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively import app.revanced.patcher.gettingFirstMethod -import app.revanced.patcher.gettingFirstMethodDeclaratively -import app.revanced.patcher.gettingFirstMutableMethod import app.revanced.patcher.instructions import app.revanced.patcher.invoke import app.revanced.patcher.literal import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.iface.ClassDef -internal val BytecodePatchContext.katanaProxyLoginMethodHandlerClassMethod by gettingFirstMethod("katana_proxy_auth") +internal val BytecodePatchContext.katanaProxyLoginMethodHandlerClassMethod by gettingFirstImmutableMethod("katana_proxy_auth") context(_: BytecodePatchContext) -internal fun ClassDef.getKatanaProxyLoginMethodTryAuthorizeMethod() = firstMutableMethodDeclaratively("e2e") { +internal fun ClassDef.getKatanaProxyLoginMethodTryAuthorizeMethod() = firstMethodDeclaratively("e2e") { instructions(0L()) } diff --git a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/lyrics/ChangeLyricsProviderPatch.kt b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/lyrics/ChangeLyricsProviderPatch.kt index 040bf07199..020399c703 100644 --- a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/lyrics/ChangeLyricsProviderPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/lyrics/ChangeLyricsProviderPatch.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.classDef import app.revanced.patcher.extensions.addInstruction import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.replaceInstruction -import app.revanced.patcher.firstMutableMethodDeclaratively +import app.revanced.patcher.firstMethodDeclaratively import app.revanced.patcher.instructions import app.revanced.patcher.method import app.revanced.patcher.parameterTypes @@ -95,7 +95,7 @@ val changeLyricsProviderPatch = bytecodePatch( // region Replace the call to the HTTP client builder method used exclusively for lyrics by the modified one. - val getLyricsHttpClientMethod = firstMutableMethodDeclaratively { + val getLyricsHttpClientMethod = firstMethodDeclaratively { returnType(httpClientBuilderMethod.returnType) parameterTypes() instructions(method { this == httpClientBuilderMethod }) diff --git a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/lyrics/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/lyrics/Fingerprints.kt index efec9d84a8..ee60ea884f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/lyrics/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/lyrics/Fingerprints.kt @@ -1,7 +1,7 @@ package app.revanced.patches.spotify.misc.lyrics -import app.revanced.patcher.gettingFirstMethod -import app.revanced.patcher.gettingFirstMethodDeclaratively +import app.revanced.patcher.gettingFirstImmutableMethod +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType @@ -9,4 +9,4 @@ import app.revanced.util.getReference import app.revanced.util.indexOfFirstInstruction import com.android.tools.smali.dexlib2.iface.reference.MethodReference -internal val BytecodePatchContext.httpClientBuilderMethod by gettingFirstMethod("client == null", "scheduler == null") +internal val BytecodePatchContext.httpClientBuilderMethod by gettingFirstImmutableMethod("client == null", "scheduler == null") diff --git a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/privacy/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/privacy/Fingerprints.kt index 041a01d6e0..6e4dbd7a13 100644 --- a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/privacy/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/privacy/Fingerprints.kt @@ -6,7 +6,7 @@ import app.revanced.util.literal import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.shareCopyUrlMethod by gettingFirstMutableMethodDeclarativelyOrNull( +internal val BytecodePatchContext.shareCopyUrlMethod by gettingFirstMethodDeclarativelyOrNull( "clipboard", "Spotify Link", ) { @@ -15,7 +15,7 @@ internal val BytecodePatchContext.shareCopyUrlMethod by gettingFirstMutableMetho parameterTypes("Ljava/lang/Object;") } -internal val BytecodePatchContext.oldShareCopyUrlMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.oldShareCopyUrlMethod by gettingFirstMethodDeclaratively( "clipboard", "createNewSession failed", ) { @@ -24,7 +24,7 @@ internal val BytecodePatchContext.oldShareCopyUrlMethod by gettingFirstMutableMe parameterTypes("Ljava/lang/Object;") } -internal val BytecodePatchContext.formatAndroidShareSheetUrlMethod by gettingFirstMutableMethodDeclarativelyOrNull { +internal val BytecodePatchContext.formatAndroidShareSheetUrlMethod by gettingFirstMethodDeclarativelyOrNull { returnType("Ljava/lang/String;") parameterTypes("L", "Ljava/lang/String;") opcodes( @@ -37,7 +37,7 @@ internal val BytecodePatchContext.formatAndroidShareSheetUrlMethod by gettingFir literal { '\n'.code.toLong() } } -internal val BytecodePatchContext.oldFormatAndroidShareSheetUrlMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.oldFormatAndroidShareSheetUrlMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC) returnType("Ljava/lang/String;") parameterTypes("Lcom/spotify/share/social/sharedata/ShareData;", "Ljava/lang/String;") diff --git a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/widgets/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/widgets/Fingerprints.kt index e7c43c9662..1a238ba6f2 100644 --- a/patches/src/main/kotlin/app/revanced/patches/spotify/misc/widgets/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/spotify/misc/widgets/Fingerprints.kt @@ -1,10 +1,10 @@ package app.revanced.patches.spotify.misc.widgets -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.opcodes import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.canBindAppWidgetPermissionMethod by gettingFirstMutableMethodDeclaratively("android.permission.BIND_APPWIDGET") { +internal val BytecodePatchContext.canBindAppWidgetPermissionMethod by gettingFirstMethodDeclaratively("android.permission.BIND_APPWIDGET") { opcodes(Opcode.AND_INT_LIT8) } diff --git a/patches/src/main/kotlin/app/revanced/patches/spotify/shared/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/spotify/shared/Fingerprints.kt index 4bb173f962..e314c40197 100644 --- a/patches/src/main/kotlin/app/revanced/patches/spotify/shared/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/spotify/shared/Fingerprints.kt @@ -2,7 +2,7 @@ package app.revanced.patches.spotify.shared import app.revanced.patcher.accessFlags import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext @@ -11,7 +11,7 @@ import com.android.tools.smali.dexlib2.AccessFlags private const val SPOTIFY_MAIN_ACTIVITY = "Lcom/spotify/music/SpotifyMainActivity;" -internal val BytecodePatchContext.mainActivityOnCreateMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.mainActivityOnCreateMethod by gettingFirstMethodDeclaratively { name("onCreate") definingClass(SPOTIFY_MAIN_ACTIVITY) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) diff --git a/patches/src/main/kotlin/app/revanced/patches/strava/distractions/HideDistractionsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/strava/distractions/HideDistractionsPatch.kt index 7c303a6c88..7316bc8ca3 100644 --- a/patches/src/main/kotlin/app/revanced/patches/strava/distractions/HideDistractionsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/strava/distractions/HideDistractionsPatch.kt @@ -5,8 +5,8 @@ import app.revanced.com.android.tools.smali.dexlib2.mutable.MutableClassDef import app.revanced.com.android.tools.smali.dexlib2.mutable.MutableMethod import app.revanced.com.android.tools.smali.dexlib2.mutable.MutableMethod.Companion.toMutable import app.revanced.patcher.extensions.addInstructions -import app.revanced.patcher.firstMutableClassDef -import app.revanced.patcher.firstMutableMethod +import app.revanced.patcher.firstClassDef +import app.revanced.patcher.firstMethod import app.revanced.patcher.patch.booleanOption import app.revanced.patcher.patch.bytecodePatch import app.revanced.patches.strava.misc.extension.sharedExtensionPatch @@ -95,7 +95,7 @@ val hideDistractionsPatch = bytecodePatch( apply { // region Write option values into extension class. - val extensionClass = firstMutableClassDef { type == EXTENSION_CLASS_DESCRIPTOR }.apply { + val extensionClass = firstClassDef { type == EXTENSION_CLASS_DESCRIPTOR }.apply { options.forEach { (key, option) -> staticFields.first { field -> field.name == key }.initialValue = ImmutableBooleanEncodedValue.forBoolean(option.value == true).toMutable() @@ -170,7 +170,7 @@ val hideDistractionsPatch = bytecodePatch( } == true } ?: classDef.type - mutableClassDef.firstMutableMethod(method).cloneAndIntercept( + mutableClassDef.firstMethod(method).cloneAndIntercept( mutableClassDef, "filter${fingerprint.name}", listOf(parameterType) + fingerprint.parameterTypes, diff --git a/patches/src/main/kotlin/app/revanced/patches/strava/groupkudos/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/strava/groupkudos/Fingerprints.kt index c6d056b4d3..4f8d9f09b8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/strava/groupkudos/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/strava/groupkudos/Fingerprints.kt @@ -1,16 +1,16 @@ package app.revanced.patches.strava.groupkudos -import app.revanced.patcher.firstMutableMethod -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.firstMethod +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.iface.ClassDef -internal val BytecodePatchContext.initMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.initMethod by gettingFirstMethodDeclaratively { name("") parameterTypes("Lcom/strava/feed/view/modal/GroupTabFragment;", "Z", "Landroidx/fragment/app/FragmentManager;") } context(_: BytecodePatchContext) -internal fun ClassDef.getActionHandlerMethod() = firstMutableMethod("state") +internal fun ClassDef.getActionHandlerMethod() = firstMethod("state") diff --git a/patches/src/main/kotlin/app/revanced/patches/strava/media/download/AddMediaDownloadPatch.kt b/patches/src/main/kotlin/app/revanced/patches/strava/media/download/AddMediaDownloadPatch.kt index c3397cab0c..a3905c139a 100644 --- a/patches/src/main/kotlin/app/revanced/patches/strava/media/download/AddMediaDownloadPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/strava/media/download/AddMediaDownloadPatch.kt @@ -6,7 +6,7 @@ import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.addInstructionsWithLabels import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.instructions -import app.revanced.patcher.firstClassDef +import app.revanced.patcher.firstImmutableClassDef import app.revanced.patcher.patch.bytecodePatch import app.revanced.patches.shared.misc.mapping.ResourceType import app.revanced.patches.shared.misc.mapping.resourceMappingPatch @@ -35,7 +35,7 @@ val addMediaDownloadPatch = bytecodePatch( ) apply { - val fragmentClass = firstClassDef { endsWith("/FullscreenMediaFragment;") } + val fragmentClass = firstImmutableClassDef { endsWith("/FullscreenMediaFragment;") } // region Extend menu of `FullscreenMediaFragment` with actions. @@ -86,7 +86,7 @@ val addMediaDownloadPatch = bytecodePatch( // region Handle new actions. - val actionClass = firstClassDef { + val actionClass = firstImmutableClassDef { type == ACTION_CLASS_DESCRIPTOR } val actionSerializableField = actionClass.instanceFields.first { field -> diff --git a/patches/src/main/kotlin/app/revanced/patches/strava/media/download/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/strava/media/download/Fingerprints.kt index a5a213856e..03777c0c19 100644 --- a/patches/src/main/kotlin/app/revanced/patches/strava/media/download/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/strava/media/download/Fingerprints.kt @@ -1,7 +1,7 @@ package app.revanced.patches.strava.media.download import app.revanced.patcher.accessFlags -import app.revanced.patcher.firstMutableMethodDeclaratively +import app.revanced.patcher.firstMethodDeclaratively import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType @@ -9,13 +9,13 @@ import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.iface.ClassDef context(_: BytecodePatchContext) -internal fun ClassDef.getCreateAndShowFragmentMethod() = firstMutableMethodDeclaratively("mediaType") { +internal fun ClassDef.getCreateAndShowFragmentMethod() = firstMethodDeclaratively("mediaType") { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes("L") } context(_: BytecodePatchContext) -internal fun ClassDef.getHandleMediaActionMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getHandleMediaActionMethod() = firstMethodDeclaratively { parameterTypes("Landroid/view/View;", "Lcom/strava/bottomsheet/BottomSheetItem;") } diff --git a/patches/src/main/kotlin/app/revanced/patches/strava/media/upload/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/strava/media/upload/Fingerprints.kt index 03afa02aad..f2f6634469 100644 --- a/patches/src/main/kotlin/app/revanced/patches/strava/media/upload/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/strava/media/upload/Fingerprints.kt @@ -1,25 +1,25 @@ package app.revanced.patches.strava.media.upload import app.revanced.patcher.definingClass -import app.revanced.patcher.firstMutableMethodDeclaratively +import app.revanced.patcher.firstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.iface.ClassDef context(_: BytecodePatchContext) -internal fun ClassDef.getGetCompressionQualityMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getGetCompressionQualityMethod() = firstMethodDeclaratively { name("getCompressionQuality") definingClass { endsWith("/MediaUploadParameters;") } } context(_: BytecodePatchContext) -internal fun ClassDef.getGetMaxDurationMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getGetMaxDurationMethod() = firstMethodDeclaratively { name("getMaxDuration") definingClass { endsWith("/MediaUploadParameters;") } } context(_: BytecodePatchContext) -internal fun ClassDef.getGetMaxSizeMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getGetMaxSizeMethod() = firstMethodDeclaratively { name("getMaxSize") definingClass { endsWith("/MediaUploadParameters;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/strava/media/upload/OverwriteMediaUploadParametersPatch.kt b/patches/src/main/kotlin/app/revanced/patches/strava/media/upload/OverwriteMediaUploadParametersPatch.kt index 8bbbd664a7..98ad7751fe 100644 --- a/patches/src/main/kotlin/app/revanced/patches/strava/media/upload/OverwriteMediaUploadParametersPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/strava/media/upload/OverwriteMediaUploadParametersPatch.kt @@ -1,6 +1,6 @@ package app.revanced.patches.strava.media.upload -import app.revanced.patcher.firstClassDef +import app.revanced.patcher.firstImmutableClassDef import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.intOption import app.revanced.patcher.patch.longOption @@ -29,7 +29,7 @@ val overwriteMediaUploadParametersPatch = bytecodePatch( ) { it == null || it in 1..10000 } apply { - val mediaUploadParametersClass = firstClassDef { type.endsWith("/MediaUploadParameters;") } + val mediaUploadParametersClass = firstImmutableClassDef { type.endsWith("/MediaUploadParameters;") } compressionQuality?.let { compressionQuality -> mediaUploadParametersClass.getGetCompressionQualityMethod().returnEarly(compressionQuality / 100f) diff --git a/patches/src/main/kotlin/app/revanced/patches/strava/password/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/strava/password/Fingerprints.kt index 045775b893..c5caa215b8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/strava/password/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/strava/password/Fingerprints.kt @@ -1,16 +1,16 @@ package app.revanced.patches.strava.password import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.logInGetUsePasswordMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.logInGetUsePasswordMethod by gettingFirstMethodDeclaratively { name("getUsePassword") definingClass { endsWith("/RequestOtpLogInNetworkResponse;") } } -internal val BytecodePatchContext.emailChangeGetUsePasswordMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.emailChangeGetUsePasswordMethod by gettingFirstMethodDeclaratively { name("getUsePassword") definingClass { endsWith("/RequestEmailChangeWithOtpOrPasswordResponse;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/strava/privacy/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/strava/privacy/Fingerprints.kt index b63aafc3dc..5f2d921348 100644 --- a/patches/src/main/kotlin/app/revanced/patches/strava/privacy/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/strava/privacy/Fingerprints.kt @@ -1,8 +1,8 @@ package app.revanced.patches.strava.privacy -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext // https://github.com/snowplow/snowplow-android-tracker/blob/2.2.0/snowplow-tracker/src/main/java/com/snowplowanalytics/snowplow/internal/emitter/storage/SQLiteEventStore.java#L130 // Not the exact same code (e.g. returns void instead of long), even though the version number matches. -internal val BytecodePatchContext.insertEventMethod by gettingFirstMutableMethodDeclaratively("Added event to database: %s") +internal val BytecodePatchContext.insertEventMethod by gettingFirstMethodDeclaratively("Added event to database: %s") diff --git a/patches/src/main/kotlin/app/revanced/patches/strava/quickedit/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/strava/quickedit/Fingerprints.kt index b8eada3c61..51395ba3ad 100644 --- a/patches/src/main/kotlin/app/revanced/patches/strava/quickedit/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/strava/quickedit/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.strava.quickedit -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.getHasAccessToQuickEditMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getHasAccessToQuickEditMethod by gettingFirstMethodDeclaratively { name("getHasAccessToQuickEdit") returnType("Z") } diff --git a/patches/src/main/kotlin/app/revanced/patches/strava/subscription/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/strava/subscription/Fingerprints.kt index 85cb9ea832..902f569619 100644 --- a/patches/src/main/kotlin/app/revanced/patches/strava/subscription/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/strava/subscription/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.strava.subscription import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.getSubscribedMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getSubscribedMethod by gettingFirstMethodDeclaratively { name("getSubscribed") definingClass { endsWith("/SubscriptionDetailResponse;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/swissid/integritycheck/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/swissid/integritycheck/Fingerprints.kt index 7d5aad2f87..8d3e49d84e 100644 --- a/patches/src/main/kotlin/app/revanced/patches/swissid/integritycheck/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/swissid/integritycheck/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.swissid.integritycheck -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.checkIntegrityMethod by gettingFirstMutableMethodDeclaratively("it", "result") { +internal val BytecodePatchContext.checkIntegrityMethod by gettingFirstMethodDeclaratively("it", "result") { returnType("V") parameterTypes("Lcom/swisssign/deviceintegrity/model/DeviceIntegrityResult;") } diff --git a/patches/src/main/kotlin/app/revanced/patches/ticktick/misc/themeunlock/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/ticktick/misc/themeunlock/Fingerprints.kt index 7ca1dc3b96..2159750b6d 100644 --- a/patches/src/main/kotlin/app/revanced/patches/ticktick/misc/themeunlock/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/ticktick/misc/themeunlock/Fingerprints.kt @@ -1,16 +1,16 @@ package app.revanced.patches.ticktick.misc.themeunlock import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.checkLockedThemesMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.checkLockedThemesMethod by gettingFirstMethodDeclaratively { name("isLockedTheme") definingClass { endsWith("Theme;") } } -internal val BytecodePatchContext.setThemeMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.setThemeMethod by gettingFirstMethodDeclaratively { name("lambda\$updateUserBtn\$1") definingClass { endsWith("ThemePreviewActivity;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/tiktok/feedfilter/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/tiktok/feedfilter/Fingerprints.kt index dbbc374b57..fb70638a61 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tiktok/feedfilter/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tiktok/feedfilter/Fingerprints.kt @@ -5,12 +5,12 @@ import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.feedApiServiceLIZMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.feedApiServiceLIZMethod by gettingFirstMethodDeclaratively { name("fetchFeedList") definingClass("/FeedApiService;") } -internal val BytecodePatchContext.followFeedMethod by gettingFirstMutableMethodDeclaratively("getFollowFeedList") { +internal val BytecodePatchContext.followFeedMethod by gettingFirstMethodDeclaratively("getFollowFeedList") { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returnType("Lcom/ss/android/ugc/aweme/follow/presenter/FollowFeedList;") opcodes( diff --git a/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/cleardisplay/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/cleardisplay/Fingerprints.kt index 94d9016bd3..34605e9c10 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/cleardisplay/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/cleardisplay/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.tiktok.interaction.cleardisplay import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.onClearDisplayEventMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.onClearDisplayEventMethod by gettingFirstMethodDeclaratively { // Internally the feature is called "Clear mode". name("onClearModeEvent") definingClass { endsWith("/ClearModePanelComponent;") } diff --git a/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/downloads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/downloads/Fingerprints.kt index b55e77a9cc..bc834095d8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/downloads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/downloads/Fingerprints.kt @@ -2,32 +2,32 @@ package app.revanced.patches.tiktok.interaction.downloads import app.revanced.patcher.accessFlags import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.aclCommonShareMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.aclCommonShareMethod by gettingFirstMethodDeclaratively { name("getCode") definingClass { endsWith("/ACLCommonShare;") } accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("I") } -internal val BytecodePatchContext.aclCommonShare2Method by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.aclCommonShare2Method by gettingFirstMethodDeclaratively { name("getShowType") definingClass { endsWith("/ACLCommonShare;") } accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("I") } -internal val BytecodePatchContext.aclCommonShare3Method by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.aclCommonShare3Method by gettingFirstMethodDeclaratively { name("getTranscode") definingClass { endsWith("/ACLCommonShare;") } accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("I") } -internal val BytecodePatchContext.downloadUriMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.downloadUriMethod by gettingFirstMethodDeclaratively( "/", "/Camera", "/Camera/", diff --git a/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/seekbar/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/seekbar/Fingerprints.kt index 3d02d4775a..164d42fb38 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/seekbar/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/seekbar/Fingerprints.kt @@ -1,12 +1,12 @@ package app.revanced.patches.tiktok.interaction.seekbar -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.setSeekBarShowTypeMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.setSeekBarShowTypeMethod by gettingFirstMethodDeclaratively( "seekbar show type change, change to:" ) -internal val BytecodePatchContext.shouldShowSeekBarMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.shouldShowSeekBarMethod by gettingFirstMethodDeclaratively( "can not show seekbar, state: 1, not in resume" ) \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/speed/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/speed/Fingerprints.kt index 29a67bb666..f995e225b7 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/speed/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/speed/Fingerprints.kt @@ -4,12 +4,12 @@ import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.getSpeedMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getSpeedMethod by gettingFirstMethodDeclaratively { name("onFeedSpeedSelectedEvent") definingClass { endsWith("/BaseListFragmentPanel;") } } -internal val BytecodePatchContext.setSpeedMethod by gettingFirstMutableMethodDeclaratively("enterFrom") { +internal val BytecodePatchContext.setSpeedMethod by gettingFirstMethodDeclaratively("enterFrom") { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returnType("V") parameterTypes("Ljava/lang/String;", "Lcom/ss/android/ugc/aweme/feed/model/Aweme;", "F") diff --git a/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/speed/PlaybackSpeedPatch.kt b/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/speed/PlaybackSpeedPatch.kt index 3af55ea8cf..9ad16de080 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/speed/PlaybackSpeedPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tiktok/interaction/speed/PlaybackSpeedPatch.kt @@ -4,7 +4,7 @@ import app.revanced.patcher.classDef import app.revanced.patcher.extensions.addInstruction import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.getInstruction -import app.revanced.patcher.firstMutableClassDef +import app.revanced.patcher.firstClassDef import app.revanced.patcher.patch.bytecodePatch import app.revanced.patches.tiktok.shared.getEnterFromMethod import app.revanced.patches.tiktok.shared.onRenderFirstFrameMethod diff --git a/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/login/disablerequirement/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/login/disablerequirement/Fingerprints.kt index 58df3b4caa..0a0e4e5f21 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/login/disablerequirement/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/login/disablerequirement/Fingerprints.kt @@ -3,12 +3,12 @@ package app.revanced.patches.tiktok.misc.login.disablerequirement import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.mandatoryLoginServiceMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.mandatoryLoginServiceMethod by gettingFirstMethodDeclaratively { name("enableForcedLogin") definingClass { endsWith("/MandatoryLoginService;") } } -internal val BytecodePatchContext.mandatoryLoginService2Method by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.mandatoryLoginService2Method by gettingFirstMethodDeclaratively { name("shouldShowForcedLogin") definingClass { endsWith("/MandatoryLoginService;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/login/fixgoogle/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/login/fixgoogle/Fingerprints.kt index f6d74a49e5..aede29be2e 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/login/fixgoogle/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/login/fixgoogle/Fingerprints.kt @@ -4,14 +4,14 @@ import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.googleAuthAvailableMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.googleAuthAvailableMethod by gettingFirstMethodDeclaratively { definingClass("Lcom/bytedance/lobby/google/GoogleAuth;") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") parameterTypes() } -internal val BytecodePatchContext.googleOneTapAuthAvailableMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.googleOneTapAuthAvailableMethod by gettingFirstMethodDeclaratively { definingClass("Lcom/bytedance/lobby/google/GoogleOneTapAuth;") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") diff --git a/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/settings/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/settings/Fingerprints.kt index a7a63a235a..1fe6875470 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/settings/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/settings/Fingerprints.kt @@ -3,23 +3,23 @@ package app.revanced.patches.tiktok.misc.settings import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.addSettingsEntryMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.addSettingsEntryMethod by gettingFirstMethodDeclaratively { name("initUnitManger") definingClass { endsWith("/SettingNewVersionFragment;") } } -internal val BytecodePatchContext.adPersonalizationActivityOnCreateMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.adPersonalizationActivityOnCreateMethod by gettingFirstMethodDeclaratively { name("onCreate") definingClass { endsWith("/AdPersonalizationActivity;") } } -internal val BytecodePatchContext.settingsEntryMethod by gettingFirstMethodDeclaratively( +internal val BytecodePatchContext.settingsEntryMethod by gettingFirstImmutableMethodDeclaratively( "pls pass item or extends the EventUnit", ) -internal val BytecodePatchContext.settingsEntryInfoMethod by gettingFirstMethod("ExposeItem(title=", ", icon=") +internal val BytecodePatchContext.settingsEntryInfoMethod by gettingFirstImmutableMethod("ExposeItem(title=", ", icon=") -internal val BytecodePatchContext.settingsStatusLoadMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.settingsStatusLoadMethod by gettingFirstMethodDeclaratively { name("load") definingClass("Lapp/revanced/extension/tiktok/settings/SettingsStatus;") } diff --git a/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/share/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/share/Fingerprints.kt index 85220b100b..012f87df73 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/share/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/share/Fingerprints.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.urlShorteningMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.urlShorteningMethod by gettingFirstMethodDeclaratively( "getShortShareUrlObservab\u2026ongUrl, subBizSceneValue)" // Same Kotlin intrinsics literal on both variants. ) { name("LIZLLL") // LIZLLL is obfuscated by ProGuard/R8, but stable across both TikTok and Musically. diff --git a/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/spoof/sim/SpoofSimPatch.kt b/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/spoof/sim/SpoofSimPatch.kt index cec6fa3f19..73e4a427f6 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/spoof/sim/SpoofSimPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tiktok/misc/spoof/sim/SpoofSimPatch.kt @@ -3,7 +3,7 @@ package app.revanced.patches.tiktok.misc.spoof.sim import app.revanced.patcher.extensions.addInstruction import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.getInstruction -import app.revanced.patcher.firstMutableMethod +import app.revanced.patcher.firstMethod import app.revanced.patcher.patch.bytecodePatch import app.revanced.patches.tiktok.misc.extension.sharedExtensionPatch import app.revanced.patches.tiktok.misc.settings.settingsPatch @@ -70,7 +70,7 @@ val sIMSpoofPatch = bytecodePatch( } }.forEach { (classDef, methods) -> methods.forEach { (method, patches) -> - with(classDef.firstMutableMethod(method)) { + with(classDef.firstMethod(method)) { while (!patches.isEmpty()) { val (index, replacement) = patches.removeLast() diff --git a/patches/src/main/kotlin/app/revanced/patches/tiktok/shared/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/tiktok/shared/Fingerprints.kt index ab12affd01..3a6f28d076 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tiktok/shared/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tiktok/shared/Fingerprints.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.getEnterFromMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.getEnterFromMethod by gettingFirstImmutableMethodDeclaratively { definingClass { endsWith("/BaseListFragmentPanel;") } returnType("Ljava/lang/String;") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) @@ -21,6 +21,6 @@ internal val BytecodePatchContext.getEnterFromMethod by gettingFirstMethodDeclar ) } -internal val BytecodePatchContext.onRenderFirstFrameMethod by gettingFirstMutableMethodDeclaratively("method_enable_viewpager_preload_duration") { +internal val BytecodePatchContext.onRenderFirstFrameMethod by gettingFirstMethodDeclaratively("method_enable_viewpager_preload_duration") { definingClass { endsWith("/BaseListFragmentPanel;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/trakt/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/trakt/Fingerprints.kt index 04e93d1eae..8b2ac428ff 100644 --- a/patches/src/main/kotlin/app/revanced/patches/trakt/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/trakt/Fingerprints.kt @@ -1,16 +1,16 @@ package app.revanced.patches.trakt import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.isVIPEPMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.isVIPEPMethod by gettingFirstMethodDeclaratively { name("isVIPEP") definingClass { endsWith("RemoteUser;") } } -internal val BytecodePatchContext.isVIPMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.isVIPMethod by gettingFirstMethodDeclaratively { name("isVIP") definingClass { endsWith("RemoteUser;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/tudortmund/lockscreen/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/tudortmund/lockscreen/Fingerprints.kt index bc2868652e..82e34c48b7 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tudortmund/lockscreen/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tudortmund/lockscreen/Fingerprints.kt @@ -4,7 +4,7 @@ import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.brightnessMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.brightnessMethod by gettingFirstMethodDeclaratively { name("run") definingClass { contains("/ScreenPlugin$") } accessFlags(AccessFlags.PUBLIC) diff --git a/patches/src/main/kotlin/app/revanced/patches/tumblr/annoyances/notifications/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/tumblr/annoyances/notifications/Fingerprints.kt index f84bd279e7..e1b0994554 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tumblr/annoyances/notifications/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tumblr/annoyances/notifications/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.tumblr.annoyances.notifications -import app.revanced.patcher.gettingFirstMutableMethod +import app.revanced.patcher.gettingFirstMethod import app.revanced.patcher.patch.BytecodePatchContext // The BlogNotifyCtaDialog asks you if you want to enable notifications for a blog. // It shows whenever you visit a certain blog for the second time and disables itself // if it was shown a total of 3 times (stored in app storage). // This targets the BlogNotifyCtaDialog.isEnabled() method to let it always return false. -internal val BytecodePatchContext.isBlogNotifyEnabledMethod by gettingFirstMutableMethod( +internal val BytecodePatchContext.isBlogNotifyEnabledMethod by gettingFirstMethod( "isEnabled --> ", "blog_notify_enabled", ) diff --git a/patches/src/main/kotlin/app/revanced/patches/tumblr/annoyances/popups/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/tumblr/annoyances/popups/Fingerprints.kt index b5cba40b2e..cd678f7cb8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tumblr/annoyances/popups/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tumblr/annoyances/popups/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.tumblr.annoyances.popups import app.revanced.patcher.accessFlags -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags // This method is responsible for loading and displaying the visual Layout of the Gift Message Popup. -internal val BytecodePatchContext.showGiftMessagePopupMethod by gettingFirstMutableMethodDeclaratively("activity", "anchorView", "textMessage") { +internal val BytecodePatchContext.showGiftMessagePopupMethod by gettingFirstMethodDeclaratively("activity", "anchorView", "textMessage") { accessFlags(AccessFlags.FINAL, AccessFlags.PUBLIC) returnType("V") } \ No newline at end of file diff --git a/patches/src/main/kotlin/app/revanced/patches/tumblr/fixes/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/tumblr/fixes/Fingerprints.kt index de6147c70a..a095e29cf8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tumblr/fixes/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tumblr/fixes/Fingerprints.kt @@ -1,7 +1,7 @@ package app.revanced.patches.tumblr.fixes import app.revanced.patcher.composingFirstMethod -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.opcodes import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext @@ -10,7 +10,7 @@ import com.android.tools.smali.dexlib2.Opcode // Matches the addQueryParam method from retrofit2: // https://github.com/square/retrofit/blob/trunk/retrofit/src/main/java/retrofit2/RequestBuilder.java#L186. // Injecting here allows modifying dynamically set query parameters. -internal val BytecodePatchContext.addQueryParamMethod by gettingFirstMutableMethodDeclaratively("Malformed URL. Base: ", ", Relative: ") { +internal val BytecodePatchContext.addQueryParamMethod by gettingFirstMethodDeclaratively("Malformed URL. Base: ", ", Relative: ") { parameterTypes("Ljava/lang/String;", "Ljava/lang/String;", "Z") } diff --git a/patches/src/main/kotlin/app/revanced/patches/tumblr/timelinefilter/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/tumblr/timelinefilter/Fingerprints.kt index e98cda794c..4e0260bc32 100644 --- a/patches/src/main/kotlin/app/revanced/patches/tumblr/timelinefilter/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/tumblr/timelinefilter/Fingerprints.kt @@ -7,7 +7,7 @@ import com.android.tools.smali.dexlib2.Opcode // This is the constructor of the PostsResponse class. // The same applies here as with the TimelineConstructorMethod. -internal val BytecodePatchContext.postsResponseConstructorMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.postsResponseConstructorMethod by gettingFirstMethodDeclaratively { definingClass { endsWith("/PostsResponse;") } accessFlags(AccessFlags.CONSTRUCTOR, AccessFlags.PUBLIC) custom { parameters.size == 4 } @@ -16,7 +16,7 @@ internal val BytecodePatchContext.postsResponseConstructorMethod by gettingFirst // This is the constructor of the Timeline class. // It receives the List as an argument with a @Json annotation, so this should be the first time // that the List is exposed in non-library code. -internal val BytecodePatchContext.timelineConstructorMethod by gettingFirstMutableMethodDeclaratively("timelineObjectsList") { +internal val BytecodePatchContext.timelineConstructorMethod by gettingFirstMethodDeclaratively("timelineObjectsList") { definingClass { endsWith("/Timeline;") } custom { parameters[0].type == "Ljava/util/List;" } } diff --git a/patches/src/main/kotlin/app/revanced/patches/twitch/ad/audio/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/twitch/ad/audio/Fingerprints.kt index 6d7d32feb9..a4246c93a7 100644 --- a/patches/src/main/kotlin/app/revanced/patches/twitch/ad/audio/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/twitch/ad/audio/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.twitch.ad.audio import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.audioAdsPresenterPlayMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.audioAdsPresenterPlayMethod by gettingFirstMethodDeclaratively { name("playAd") definingClass { endsWith("AudioAdsPlayerPresenter;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/twitch/ad/embedded/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/twitch/ad/embedded/Fingerprints.kt index aa6fcd58ee..130c797c78 100644 --- a/patches/src/main/kotlin/app/revanced/patches/twitch/ad/embedded/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/twitch/ad/embedded/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.twitch.ad.embedded import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.createsUsherClientMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.createsUsherClientMethod by gettingFirstMethodDeclaratively { name("buildOkHttpClient") definingClass("Ltv/twitch/android/network/OkHttpClientFactory;") } diff --git a/patches/src/main/kotlin/app/revanced/patches/twitch/ad/shared/util/AdPatch.kt b/patches/src/main/kotlin/app/revanced/patches/twitch/ad/shared/util/AdPatch.kt index 88a4c8228e..648be7f7ef 100644 --- a/patches/src/main/kotlin/app/revanced/patches/twitch/ad/shared/util/AdPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/twitch/ad/shared/util/AdPatch.kt @@ -3,7 +3,7 @@ package app.revanced.patches.twitch.ad.shared.util import app.revanced.patcher.extensions.ExternalLabel import app.revanced.patcher.extensions.addInstructionsWithLabels import app.revanced.patcher.extensions.getInstruction -import app.revanced.patcher.firstMutableClassDefOrNull +import app.revanced.patcher.firstClassDefOrNull import app.revanced.patcher.patch.BytecodePatchBuilder import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.patch.bytecodePatch @@ -31,7 +31,7 @@ fun adPatch( methodNames: Set, returnMethod: ReturnMethod, ): Boolean { - val classDef = firstMutableClassDefOrNull(classDefType) ?: return false + val classDef = firstClassDefOrNull(classDefType) ?: return false classDef.methods.filter { it.name in methodNames }.forEach { method -> val retInstruction = when (returnMethod.returnType) { diff --git a/patches/src/main/kotlin/app/revanced/patches/twitch/ad/video/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/twitch/ad/video/Fingerprints.kt index 481d6d869d..a918f55cec 100644 --- a/patches/src/main/kotlin/app/revanced/patches/twitch/ad/video/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/twitch/ad/video/Fingerprints.kt @@ -3,21 +3,21 @@ package app.revanced.patches.twitch.ad.video import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.checkAdEligibilityLambdaMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.checkAdEligibilityLambdaMethod by gettingFirstMethodDeclaratively { name("shouldRequestAd") definingClass { endsWith("/AdEligibilityFetcher;") } returnType("Lio/reactivex/Single;") parameterTypes("L") } -internal val BytecodePatchContext.contentConfigShowAdsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.contentConfigShowAdsMethod by gettingFirstMethodDeclaratively { name("getShowAds") definingClass { endsWith("/ContentConfigData;") } returnType("Z") parameterTypes() } -internal val BytecodePatchContext.getReadyToShowAdMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.getReadyToShowAdMethod by gettingFirstMethodDeclaratively { name("getReadyToShowAdOrAbort") definingClass { endsWith("/StreamDisplayAdsPresenter;") } returnType("Ltv/twitch/android/core/mvp/presenter/StateAndAction;") diff --git a/patches/src/main/kotlin/app/revanced/patches/twitch/chat/antidelete/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/twitch/chat/antidelete/Fingerprints.kt index f784546f75..e255276fa5 100644 --- a/patches/src/main/kotlin/app/revanced/patches/twitch/chat/antidelete/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/twitch/chat/antidelete/Fingerprints.kt @@ -2,22 +2,22 @@ package app.revanced.patches.twitch.chat.antidelete import app.revanced.patcher.accessFlags import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.chatUtilCreateDeletedSpanMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.chatUtilCreateDeletedSpanMethod by gettingFirstMethodDeclaratively { name("createDeletedSpanFromChatMessageSpan") definingClass { endsWith("ChatUtil\$Companion;") } } -internal val BytecodePatchContext.deletedMessageClickableSpanCtorMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.deletedMessageClickableSpanCtorMethod by gettingFirstMethodDeclaratively { definingClass { endsWith("DeletedMessageClickableSpan;") } accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) } -internal val BytecodePatchContext.setHasModAccessMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.setHasModAccessMethod by gettingFirstMethodDeclaratively { name("setHasModAccess") definingClass { endsWith("DeletedMessageClickableSpan;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/twitch/chat/autoclaim/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/twitch/chat/autoclaim/Fingerprints.kt index 417cc9e8bd..a62964070f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/twitch/chat/autoclaim/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/twitch/chat/autoclaim/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.twitch.chat.autoclaim import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.communityPointsButtonViewDelegateMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.communityPointsButtonViewDelegateMethod by gettingFirstMethodDeclaratively { name("showClaimAvailable") definingClass { endsWith("CommunityPointsButtonViewDelegate;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/twitch/debug/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/twitch/debug/Fingerprints.kt index 13f6c50ae4..6b0b1dd6de 100644 --- a/patches/src/main/kotlin/app/revanced/patches/twitch/debug/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/twitch/debug/Fingerprints.kt @@ -1,21 +1,21 @@ package app.revanced.patches.twitch.debug import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.isDebugConfigEnabledMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.isDebugConfigEnabledMethod by gettingFirstMethodDeclaratively { name("isDebugConfigEnabled") definingClass { endsWith("/BuildConfigUtil;") } } -internal val BytecodePatchContext.isOmVerificationEnabledMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.isOmVerificationEnabledMethod by gettingFirstMethodDeclaratively { name("isOmVerificationEnabled") definingClass { endsWith("/BuildConfigUtil;") } } -internal val BytecodePatchContext.shouldShowDebugOptionsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.shouldShowDebugOptionsMethod by gettingFirstMethodDeclaratively { name("shouldShowDebugOptions") definingClass { endsWith("/BuildConfigUtil;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/twitch/misc/settings/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/twitch/misc/settings/Fingerprints.kt index ff6ce3a1c5..1b1cf105a2 100644 --- a/patches/src/main/kotlin/app/revanced/patches/twitch/misc/settings/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/twitch/misc/settings/Fingerprints.kt @@ -4,7 +4,7 @@ import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.menuGroupsOnClickMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.menuGroupsOnClickMethod by gettingFirstMethodDeclaratively { name { contains("render") } definingClass { endsWith("/SettingsMenuViewDelegate;") } accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC, AccessFlags.FINAL) @@ -12,17 +12,17 @@ internal val BytecodePatchContext.menuGroupsOnClickMethod by gettingFirstMutable parameterTypes("L", "L", "L") } -internal val BytecodePatchContext.menuGroupsUpdatedMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.menuGroupsUpdatedMethod by gettingFirstMethodDeclaratively { name("") definingClass("/SettingsMenuPresenter\$Event\$MenuGroupsUpdated;") } -internal val BytecodePatchContext.settingsActivityOnCreateMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.settingsActivityOnCreateMethod by gettingFirstMethodDeclaratively { name("onCreate") definingClass { endsWith("/SettingsActivity;") } } -internal val BytecodePatchContext.settingsMenuItemEnumMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.settingsMenuItemEnumMethod by gettingFirstMethodDeclaratively { name("") definingClass { endsWith("/SettingsMenuItem;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/twitter/layout/viewcount/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/twitter/layout/viewcount/Fingerprints.kt index 46f09ebd3e..e1d0b05ea5 100644 --- a/patches/src/main/kotlin/app/revanced/patches/twitter/layout/viewcount/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/twitter/layout/viewcount/Fingerprints.kt @@ -1,10 +1,10 @@ package app.revanced.patches.twitter.layout.viewcount -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.viewCountsEnabledMethod by gettingFirstMutableMethodDeclaratively("view_counts_public_visibility_enabled") { +internal val BytecodePatchContext.viewCountsEnabledMethod by gettingFirstMethodDeclaratively("view_counts_public_visibility_enabled") { returnType("Z") } diff --git a/patches/src/main/kotlin/app/revanced/patches/twitter/misc/hook/json/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/twitter/misc/hook/json/Fingerprints.kt index 8123d6b97d..1f5f31264d 100644 --- a/patches/src/main/kotlin/app/revanced/patches/twitter/misc/hook/json/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/twitter/misc/hook/json/Fingerprints.kt @@ -1,15 +1,14 @@ package app.revanced.patches.twitter.misc.hook.json import app.revanced.patcher.* -import app.revanced.patcher.firstMutableMethodDeclaratively -import app.revanced.patcher.gettingFirstClassDef +import app.revanced.patcher.firstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.ClassDef import kotlin.properties.ReadOnlyProperty internal val BytecodePatchContext.jsonHookPatchMethodMatch by ReadOnlyProperty { context, _ -> - context.firstClassDef(JSON_HOOK_PATCH_CLASS_DESCRIPTOR).firstMethodComposite { + context.firstImmutableClassDef(JSON_HOOK_PATCH_CLASS_DESCRIPTOR).firstMethodComposite { name("") opcodes( Opcode.INVOKE_INTERFACE, // Add dummy hook to hooks list. @@ -20,7 +19,7 @@ internal val BytecodePatchContext.jsonHookPatchMethodMatch by ReadOnlyProperty { } context(_: BytecodePatchContext) -internal fun ClassDef.getJsonInputStreamMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getJsonInputStreamMethod() = firstMethodDeclaratively { custom { if (parameterTypes.isEmpty()) { false @@ -30,6 +29,6 @@ internal fun ClassDef.getJsonInputStreamMethod() = firstMutableMethodDeclarative } } -internal val BytecodePatchContext.loganSquareClassDef by gettingFirstClassDef { +internal val BytecodePatchContext.loganSquareClassDef by gettingFirstImmutableClassDef { type.endsWith("LoganSquare;") } diff --git a/patches/src/main/kotlin/app/revanced/patches/twitter/misc/hook/json/JsonHookPatch.kt b/patches/src/main/kotlin/app/revanced/patches/twitter/misc/hook/json/JsonHookPatch.kt index dc0b7cfbe4..e4fce19f2e 100644 --- a/patches/src/main/kotlin/app/revanced/patches/twitter/misc/hook/json/JsonHookPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/twitter/misc/hook/json/JsonHookPatch.kt @@ -2,7 +2,7 @@ package app.revanced.patches.twitter.misc.hook.json import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.removeInstructions -import app.revanced.patcher.firstClassDef +import app.revanced.patcher.firstImmutableClassDef import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.patch.PatchException import app.revanced.patcher.patch.bytecodePatch @@ -53,7 +53,7 @@ val jsonHookPatch = bytecodePatch( .fields .firstOrNull { it.name == "JSON_FACTORY" } ?.type - ?.let { type -> firstClassDef(type) } + ?.let { type -> firstImmutableClassDef(type) } ?: throw PatchException("Could not find required class.") // Hook the methods first parameter. @@ -90,7 +90,7 @@ class JsonHook internal constructor( */ context(context: BytecodePatchContext) fun jsonHook(descriptor: String): JsonHook { - context.firstClassDef(descriptor).let { + context.firstImmutableClassDef(descriptor).let { it.also { classDef -> if ( classDef.superclass != JSON_HOOK_CLASS_DESCRIPTOR || diff --git a/patches/src/main/kotlin/app/revanced/patches/twitter/misc/links/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/twitter/misc/links/Fingerprints.kt index 19a92e3761..5bc19f665b 100644 --- a/patches/src/main/kotlin/app/revanced/patches/twitter/misc/links/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/twitter/misc/links/Fingerprints.kt @@ -4,18 +4,18 @@ import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.sanitizeSharingLinksMethod by gettingFirstMutableMethod( +internal val BytecodePatchContext.sanitizeSharingLinksMethod by gettingFirstMethod( "", "shareParam", "sessionToken", ) { returnType == "Ljava/lang/String;" } // Returns a shareable link string based on a tweet ID and a username. -internal val BytecodePatchContext.linkBuilderMethod by gettingFirstMutableMethod($$"/%1$s/status/%2$d") +internal val BytecodePatchContext.linkBuilderMethod by gettingFirstMethod($$"/%1$s/status/%2$d") // TODO remove this once changeLinkSharingDomainResourcePatch is restored // Returns a shareable link for the "Share via..." dialog. -internal val BytecodePatchContext.linkResourceGetterMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.linkResourceGetterMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) parameterTypes("Landroid/content/res/Resources;") custom { @@ -23,7 +23,7 @@ internal val BytecodePatchContext.linkResourceGetterMethod by gettingFirstMutabl } } -internal val BytecodePatchContext.linkSharingDomainHelperMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.linkSharingDomainHelperMethod by gettingFirstMethodDeclaratively { name("getShareDomain") definingClass(EXTENSION_CLASS_DESCRIPTOR) } diff --git a/patches/src/main/kotlin/app/revanced/patches/viber/ads/HideAdsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/viber/ads/HideAdsPatch.kt index 9a3216891b..6140698857 100644 --- a/patches/src/main/kotlin/app/revanced/patches/viber/ads/HideAdsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/viber/ads/HideAdsPatch.kt @@ -3,7 +3,7 @@ package app.revanced.patches.viber.ads import app.revanced.patcher.definingClass import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.typeReference -import app.revanced.patcher.firstMutableMethodDeclaratively +import app.revanced.patcher.firstMethodDeclaratively import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.returnType @@ -23,7 +23,7 @@ val hideAdsPatch = bytecodePatch( val targetClass = findAdStringMethodMatch.immutableMethod.getInstruction(referenceIndex).typeReference - val adFreeMethod = firstMutableMethodDeclaratively { + val adFreeMethod = firstMethodDeclaratively { definingClass(targetClass!!.type) returnType("I") parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/viber/misc/navbar/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/viber/misc/navbar/Fingerprints.kt index 860b829a7c..ab28accbf1 100644 --- a/patches/src/main/kotlin/app/revanced/patches/viber/misc/navbar/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/viber/misc/navbar/Fingerprints.kt @@ -1,16 +1,16 @@ package app.revanced.patches.viber.misc.navbar -import app.revanced.patcher.firstMutableMethodDeclaratively -import app.revanced.patcher.gettingFirstMethod +import app.revanced.patcher.firstMethodDeclaratively +import app.revanced.patcher.gettingFirstImmutableMethod import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.iface.ClassDef -internal val BytecodePatchContext.tabIdClassMethod by gettingFirstMethod("shouldShowTabId") +internal val BytecodePatchContext.tabIdClassMethod by gettingFirstImmutableMethod("shouldShowTabId") context(_: BytecodePatchContext) -internal fun ClassDef.getShouldShowTabIdMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getShouldShowTabIdMethod() = firstMethodDeclaratively { parameterTypes("I", "I") returnType("Z") } diff --git a/patches/src/main/kotlin/app/revanced/patches/warnwetter/misc/firebasegetcert/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/warnwetter/misc/firebasegetcert/Fingerprints.kt index 86bd254038..0c35eec719 100644 --- a/patches/src/main/kotlin/app/revanced/patches/warnwetter/misc/firebasegetcert/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/warnwetter/misc/firebasegetcert/Fingerprints.kt @@ -1,10 +1,10 @@ package app.revanced.patches.warnwetter.misc.firebasegetcert -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.getMessagingCertMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.getMessagingCertMethod by gettingFirstMethodDeclaratively( "ContentValues", "Could not get fingerprint hash for package: ", "No such package: ", @@ -12,7 +12,7 @@ internal val BytecodePatchContext.getMessagingCertMethod by gettingFirstMutableM returnType("Ljava/lang/String;") } -internal val BytecodePatchContext.getRegistrationCertMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.getRegistrationCertMethod by gettingFirstMethodDeclaratively( "FirebaseRemoteConfig", "Could not get fingerprint hash for package: ", "No such package: ", diff --git a/patches/src/main/kotlin/app/revanced/patches/warnwetter/misc/promocode/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/warnwetter/misc/promocode/Fingerprints.kt index aaa7750277..1b0006105d 100644 --- a/patches/src/main/kotlin/app/revanced/patches/warnwetter/misc/promocode/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/warnwetter/misc/promocode/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.warnwetter.misc.promocode import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.promoCodeUnlockMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.promoCodeUnlockMethod by gettingFirstMethodDeclaratively { name("isValid") definingClass { endsWith("PromoTokenVerification;") } } diff --git a/patches/src/main/kotlin/app/revanced/patches/willhaben/ads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/willhaben/ads/Fingerprints.kt index c2f5119d15..164a92874d 100644 --- a/patches/src/main/kotlin/app/revanced/patches/willhaben/ads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/willhaben/ads/Fingerprints.kt @@ -4,7 +4,7 @@ import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.adResolverMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.adResolverMethod by gettingFirstMethodDeclaratively( "Google Ad is invalid ", "Google Native Ad is invalid ", "Criteo Ad is invalid ", @@ -16,7 +16,7 @@ internal val BytecodePatchContext.adResolverMethod by gettingFirstMutableMethodD } -internal val BytecodePatchContext.whAdViewInjectorMethod by gettingFirstMutableMethodDeclaratively("successfulAdView") { +internal val BytecodePatchContext.whAdViewInjectorMethod by gettingFirstMethodDeclaratively("successfulAdView") { definingClass("Lat/willhaben/advertising/WHAdView;") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/Fingerprints.kt index 55c81b0ed7..d1fa2a873b 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/Fingerprints.kt @@ -9,7 +9,7 @@ import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.iface.Method import com.android.tools.smali.dexlib2.iface.reference.MethodReference -internal val BytecodePatchContext.fullScreenEngagementAdContainerMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.fullScreenEngagementAdContainerMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/HideAdsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/HideAdsPatch.kt index bc8f231755..fb9b6756bf 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/HideAdsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/HideAdsPatch.kt @@ -4,7 +4,7 @@ import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.instructions import app.revanced.patcher.extensions.replaceInstruction import app.revanced.patcher.extensions.wideLiteral -import app.revanced.patcher.firstMutableMethod +import app.revanced.patcher.firstMethod import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.resourcePatch import app.revanced.patches.all.misc.resources.addResources diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/ad/video/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/ad/video/Fingerprints.kt index ed491a205e..2565c0e79f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/ad/video/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/ad/video/Fingerprints.kt @@ -1,9 +1,9 @@ package app.revanced.patches.youtube.ad.video -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.loadVideoAdsMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.loadVideoAdsMethod by gettingFirstMethodDeclaratively( "TriggerBundle doesn't have the required metadata specified by the trigger ", "Ping migration no associated ping bindings for activated trigger: ", ) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/doubletap/DisableChapterSkipDoubleTapPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/doubletap/DisableChapterSkipDoubleTapPatch.kt index e8b2446019..adfbd1cdf9 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/doubletap/DisableChapterSkipDoubleTapPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/doubletap/DisableChapterSkipDoubleTapPatch.kt @@ -54,7 +54,7 @@ val disableDoubleTapActionsPatch = bytecodePatch( SwitchPreference("revanced_disable_chapter_skip_double_tap"), ) - val doubleTapInfoGetSeekSourceMethod = firstMutableMethodDeclaratively { + val doubleTapInfoGetSeekSourceMethod = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) parameterTypes("Z") returnType(seekTypeEnumMethod.immutableClassDef.type) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/doubletap/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/doubletap/Fingerprints.kt index d5079f8a8a..d65348e442 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/doubletap/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/doubletap/Fingerprints.kt @@ -1,14 +1,14 @@ package app.revanced.patches.youtube.interaction.doubletap import app.revanced.patcher.accessFlags -import app.revanced.patcher.firstMutableMethodDeclaratively -import app.revanced.patcher.gettingFirstMethodDeclaratively +import app.revanced.patcher.firstMethodDeclaratively +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.iface.ClassDef -internal val BytecodePatchContext.seekTypeEnumMethod by gettingFirstMethodDeclaratively( +internal val BytecodePatchContext.seekTypeEnumMethod by gettingFirstImmutableMethodDeclaratively( "SEEK_SOURCE_SEEK_TO_NEXT_CHAPTER", "SEEK_SOURCE_SEEK_TO_PREVIOUS_CHAPTER", ) { @@ -16,7 +16,7 @@ internal val BytecodePatchContext.seekTypeEnumMethod by gettingFirstMethodDeclar } context(_: BytecodePatchContext) -internal fun ClassDef.getDoubleTapInfoCtorMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getDoubleTapInfoCtorMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) parameterTypes( "Landroid/view/MotionEvent;", diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/downloads/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/downloads/Fingerprints.kt index ecaa4bdd32..1eac7848a8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/downloads/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/downloads/Fingerprints.kt @@ -4,7 +4,7 @@ import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.offlineVideoEndpointMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.offlineVideoEndpointMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes( diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/seekbar/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/seekbar/Fingerprints.kt index 6d6f90659d..1838eeceb3 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/seekbar/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/seekbar/Fingerprints.kt @@ -11,7 +11,7 @@ import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.ClassDef -internal val BytecodePatchContext.swipingUpGestureParentMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.swipingUpGestureParentMethod by gettingFirstImmutableMethodDeclaratively { returnType("Z") parameterTypes() instructions( @@ -23,7 +23,7 @@ internal val BytecodePatchContext.swipingUpGestureParentMethod by gettingFirstMe * Resolves using the class found in [swipingUpGestureParentMethod]. */ context(_: BytecodePatchContext) -internal fun ClassDef.getShowSwipingUpGuideMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getShowSwipingUpGuideMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.FINAL) returnType("Z") parameterTypes() @@ -34,7 +34,7 @@ internal fun ClassDef.getShowSwipingUpGuideMethod() = firstMutableMethodDeclarat * Resolves using the class found in [swipingUpGestureParentMethod]. */ context(_: BytecodePatchContext) -internal fun ClassDef.getAllowSwipingUpGestureMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getAllowSwipingUpGestureMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes("L") @@ -132,7 +132,7 @@ internal val BytecodePatchContext.slideToSeekMethodMatch by composingFirstMethod literal { 67108864 } } -internal val BytecodePatchContext.fullscreenSeekbarThumbnailsQualityMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.fullscreenSeekbarThumbnailsQualityMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/swipecontrols/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/swipecontrols/Fingerprints.kt index d657230843..91a1e9af1e 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/swipecontrols/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/interaction/swipecontrols/Fingerprints.kt @@ -3,14 +3,14 @@ package app.revanced.patches.youtube.interaction.swipecontrols import app.revanced.patcher.accessFlags import app.revanced.patcher.composingFirstMethod import app.revanced.patcher.definingClass -import app.revanced.patcher.gettingFirstMethodDeclaratively +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively import app.revanced.patcher.instructions import app.revanced.patcher.invoke import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.swipeControlsHostActivityMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.swipeControlsHostActivityMethod by gettingFirstImmutableMethodDeclaratively { definingClass(EXTENSION_CLASS_DESCRIPTOR) accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/autocaptions/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/autocaptions/Fingerprints.kt index a7c2aa5a71..2272ed39c4 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/autocaptions/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/autocaptions/Fingerprints.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.startVideoInformerMethod by gettingFirstMutableMethodDeclaratively("pc") { +internal val BytecodePatchContext.startVideoInformerMethod by gettingFirstMethodDeclaratively("pc") { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") opcodes( @@ -14,13 +14,13 @@ internal val BytecodePatchContext.startVideoInformerMethod by gettingFirstMutabl ) } -internal val BytecodePatchContext.storyboardRendererDecoderRecommendedLevelMethod by gettingFirstMutableMethodDeclaratively("#-1#") { +internal val BytecodePatchContext.storyboardRendererDecoderRecommendedLevelMethod by gettingFirstMethodDeclaratively("#-1#") { returnType("V") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) parameterTypes("L") } -internal val BytecodePatchContext.subtitleTrackMethod by gettingFirstMutableMethodDeclaratively("DISABLE_CAPTIONS_OPTION") { +internal val BytecodePatchContext.subtitleTrackMethod by gettingFirstMethodDeclaratively("DISABLE_CAPTIONS_OPTION") { definingClass { endsWith("/SubtitleTrack;") } accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt index d6effd1efe..261b0a0d80 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt @@ -3,7 +3,7 @@ package app.revanced.patches.youtube.layout.branding.header import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.wideLiteral -import app.revanced.patcher.firstMutableMethod +import app.revanced.patcher.firstMethod import app.revanced.patcher.patch.PatchException import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.resourcePatch diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/overlay/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/overlay/Fingerprints.kt index 82e07852eb..ee6e286c68 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/overlay/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/buttons/overlay/Fingerprints.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patches.shared.misc.mapping.ResourceType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.mediaRouteButtonMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.mediaRouteButtonMethod by gettingFirstMethodDeclaratively { name("setVisibility") definingClass { endsWith("/MediaRouteButton;") } parameterTypes("I") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/formfactor/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/formfactor/Fingerprints.kt index 01113a2a5a..8aa97f38d7 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/formfactor/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/formfactor/Fingerprints.kt @@ -1,11 +1,11 @@ package app.revanced.patches.youtube.layout.formfactor import app.revanced.patcher.accessFlags -import app.revanced.patcher.gettingFirstMethodDeclaratively +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.formFactorEnumConstructorMethod by gettingFirstMethodDeclaratively( +internal val BytecodePatchContext.formFactorEnumConstructorMethod by gettingFirstImmutableMethodDeclaratively( "UNKNOWN_FORM_FACTOR", "SMALL_FORM_FACTOR", "LARGE_FORM_FACTOR", diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/endscreencards/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/endscreencards/Fingerprints.kt index 2088a2cf70..b09e058942 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/endscreencards/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/endscreencards/Fingerprints.kt @@ -51,7 +51,7 @@ internal val BytecodePatchContext.layoutVideoMethodMatch by composingFirstMethod literal { layoutVideo } } -internal val BytecodePatchContext.showEndscreenCardsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.showEndscreenCardsMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes("L") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/endscreensuggestion/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/endscreensuggestion/Fingerprints.kt index 99233409b7..ebb221781d 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/endscreensuggestion/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/endscreensuggestion/Fingerprints.kt @@ -8,13 +8,13 @@ import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.ClassDef -internal val BytecodePatchContext.autoNavConstructorMethod by gettingFirstMethodDeclaratively("main_app_autonav") { +internal val BytecodePatchContext.autoNavConstructorMethod by gettingFirstImmutableMethodDeclaratively("main_app_autonav") { returnType("V") accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) } context(_: BytecodePatchContext) -internal fun ClassDef.getAutoNavStatusMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getAutoNavStatusMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/fullscreenambientmode/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/fullscreenambientmode/Fingerprints.kt index c2a1afa6d6..cf6183f224 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/fullscreenambientmode/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/fullscreenambientmode/Fingerprints.kt @@ -4,7 +4,7 @@ import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.setFullScreenBackgroundColorMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.setFullScreenBackgroundColorMethod by gettingFirstMethodDeclaratively { name("onLayout") definingClass { endsWith("/YouTubePlayerViewNotForReflection;") } returnType("V") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/Fingerprints.kt index 503a61214c..73180a043c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/general/Fingerprints.kt @@ -43,7 +43,7 @@ internal val BytecodePatchContext.parseElementFromBufferMethodMatch by composing ) } -internal val BytecodePatchContext.playerOverlayMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.playerOverlayMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("L") instructions( @@ -52,7 +52,7 @@ internal val BytecodePatchContext.playerOverlayMethod by gettingFirstMethodDecla } context(_: BytecodePatchContext) -internal fun ClassDef.getShowWatermarkMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getShowWatermarkMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes("L", "L") @@ -61,7 +61,7 @@ internal fun ClassDef.getShowWatermarkMethod() = firstMutableMethodDeclaratively /** * Matches same method as [wideSearchbarLayoutMethod]. */ -internal val BytecodePatchContext.yoodlesImageViewMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.yoodlesImageViewMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Landroid/view/View;") parameterTypes("L", "L") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/infocards/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/infocards/Fingerprints.kt index a5c135e39f..322ea7a5a6 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/infocards/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/infocards/Fingerprints.kt @@ -8,14 +8,14 @@ import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.ClassDef context(_: BytecodePatchContext) -internal fun ClassDef.getInfocardsIncognitoMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getInfocardsIncognitoMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Ljava/lang/Boolean;") parameterTypes("L", "J") instructions("vibrator"()) } -internal val BytecodePatchContext.infocardsIncognitoParentMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.infocardsIncognitoParentMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Ljava/lang/String;") instructions( diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/relatedvideooverlay/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/relatedvideooverlay/Fingerprints.kt index 0399d731d6..4f658610f8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/relatedvideooverlay/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/relatedvideooverlay/Fingerprints.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patches.shared.misc.mapping.ResourceType import com.android.tools.smali.dexlib2.iface.ClassDef -internal val BytecodePatchContext.relatedEndScreenResultsParentMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.relatedEndScreenResultsParentMethod by gettingFirstImmutableMethodDeclaratively { returnType("V") instructions( ResourceType.LAYOUT("app_related_endscreen_results"), @@ -13,7 +13,7 @@ internal val BytecodePatchContext.relatedEndScreenResultsParentMethod by getting } context(_: BytecodePatchContext) -internal fun ClassDef.getRelatedEndScreenResultsMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getRelatedEndScreenResultsMethod() = firstMethodDeclaratively { returnType("V") parameterTypes( "I", diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/shorts/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/shorts/Fingerprints.kt index 3076ced8d3..8915cac958 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/shorts/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/shorts/Fingerprints.kt @@ -24,7 +24,7 @@ internal val BytecodePatchContext.shortsBottomBarContainerMethodMatch by composi */ context(_: BytecodePatchContext) -internal fun ClassDef.getRenderBottomNavigationBarMethodMatch() = firstMutableMethodDeclaratively { +internal fun ClassDef.getRenderBottomNavigationBarMethodMatch() = firstMethodDeclaratively { returnType("V") parameterTypes("Ljava/lang/String;") instructions( @@ -44,7 +44,7 @@ internal fun ClassDef.getRenderBottomNavigationBarMethodMatch() = firstMutableMe /** * Less than 19.41. */ -internal val BytecodePatchContext.legacyRenderBottomNavigationBarLegacyParentMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.legacyRenderBottomNavigationBarLegacyParentMethod by gettingFirstImmutableMethodDeclaratively { parameterTypes( "I", "I", @@ -62,7 +62,7 @@ internal val BytecodePatchContext.legacyRenderBottomNavigationBarLegacyParentMet * Identical to [legacyRenderBottomNavigationBarLegacyParentMethod] * except this has an extra parameter. */ -internal val BytecodePatchContext.renderBottomNavigationBarLegacy1941ParentMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.renderBottomNavigationBarLegacy1941ParentMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) parameterTypes( "I", @@ -78,7 +78,7 @@ internal val BytecodePatchContext.renderBottomNavigationBarLegacy1941ParentMetho ) } -internal val BytecodePatchContext.renderBottomNavigationBarParentMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.renderBottomNavigationBarParentMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("[Ljava/lang/Class;") parameterTypes( @@ -101,14 +101,14 @@ internal val ClassDef.setPivotBarVisibilityMethodMatch by ClassDefComposing.comp ) } -internal val BytecodePatchContext.setPivotBarVisibilityParentMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.setPivotBarVisibilityParentMethod by gettingFirstImmutableMethodDeclaratively { parameterTypes("Z") instructions( "FEnotifications_inbox"(), ) } -internal val BytecodePatchContext.shortsExperimentalPlayerFeatureFlagMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.shortsExperimentalPlayerFeatureFlagMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") parameterTypes() @@ -117,7 +117,7 @@ internal val BytecodePatchContext.shortsExperimentalPlayerFeatureFlagMethod by g ) } -internal val BytecodePatchContext.renderNextUIFeatureFlagMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.renderNextUIFeatureFlagMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/shorts/HideShortsComponentsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/shorts/HideShortsComponentsPatch.kt index fb1a8e82a6..632934da7b 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/shorts/HideShortsComponentsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/shorts/HideShortsComponentsPatch.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.extensions.addInstructions import app.revanced.patcher.extensions.getInstruction import app.revanced.patcher.extensions.methodReference import app.revanced.patcher.extensions.wideLiteral -import app.revanced.patcher.firstMutableMethod +import app.revanced.patcher.firstMethod import app.revanced.patcher.immutableClassDef import app.revanced.patcher.patch.booleanOption import app.revanced.patcher.patch.bytecodePatch @@ -201,7 +201,7 @@ val hideShortsComponentsPatch = bytecodePatch( return@forEachInstructionAsSequence targetIndex to sizeRegister }) { method, (targetIndex, sizeRegister) -> - firstMutableMethod(method).addInstructions( + firstMethod(method).addInstructions( targetIndex + 1, """ invoke-static { v$sizeRegister }, $FILTER_CLASS_DESCRIPTOR->getSoundButtonSize(I)I diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/signintotvpopup/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/signintotvpopup/Fingerprints.kt index 9f32afd3e8..fa3846fdb4 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/signintotvpopup/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/signintotvpopup/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.youtube.layout.hide.signintotvpopup -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.instructions import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import app.revanced.patches.shared.misc.mapping.ResourceType -internal val BytecodePatchContext.signInToTvPopupMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.signInToTvPopupMethod by gettingFirstMethodDeclaratively { returnType("Z") parameterTypes("Ljava/lang/String;", "Z", "L") instructions(ResourceType.STRING("mdx_seamless_tv_sign_in_drawer_fragment_title")) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/time/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/time/Fingerprints.kt index 85d99bc199..f641db4142 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/time/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/hide/time/Fingerprints.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.timeCounterMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.timeCounterMethod by gettingFirstMethodDeclaratively { returnType("V") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/miniplayer/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/miniplayer/Fingerprints.kt index 8ba4c228df..796a308636 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/miniplayer/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/miniplayer/Fingerprints.kt @@ -22,14 +22,14 @@ internal const val MINIPLAYER_INITIAL_SIZE_FEATURE_KEY = 45640023L internal const val MINIPLAYER_DISABLED_FEATURE_KEY = 45657015L internal const val MINIPLAYER_ANIMATED_EXPAND_FEATURE_KEY = 45644360L -internal val BytecodePatchContext.miniplayerModernConstructorMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.miniplayerModernConstructorMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) instructions( 45623000L(), // Magic number found in the constructor. ) } -internal val BytecodePatchContext.miniplayerDimensionsCalculatorParentMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.miniplayerDimensionsCalculatorParentMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes("L") @@ -38,7 +38,7 @@ internal val BytecodePatchContext.miniplayerDimensionsCalculatorParentMethod by ) } -internal val BytecodePatchContext.miniplayerModernViewParentMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.miniplayerModernViewParentMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Ljava/lang/String;") parameterTypes() @@ -51,7 +51,7 @@ internal val BytecodePatchContext.miniplayerModernViewParentMethod by gettingFir * Matches using the class found in [miniplayerModernViewParentMethod]. */ context(_: BytecodePatchContext) -internal fun ClassDef.getMiniplayerModernAddViewListenerMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getMiniplayerModernAddViewListenerMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes("Landroid/view/View;") @@ -87,7 +87,7 @@ internal val ClassDef.miniplayerModernExpandButtonMethodMatch by ClassDefComposi * Matches using the class found in [miniplayerModernViewParentMethod]. */ context(_: BytecodePatchContext) -internal fun ClassDef.getMiniplayerModernExpandCloseDrawablesMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getMiniplayerModernExpandCloseDrawablesMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes("L") @@ -166,7 +166,7 @@ internal val BytecodePatchContext.miniplayerOverrideMethodMatch by composingFirs } context(_: BytecodePatchContext) -internal fun ClassDef.getMiniplayerOverrideNoContextMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getMiniplayerOverrideNoContextMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL) returnType("Z") opcodes( @@ -191,7 +191,7 @@ internal val BytecodePatchContext.miniplayerResponseModelSizeCheckMethodMatch by ) } -internal val BytecodePatchContext.miniplayerOnCloseHandlerMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.miniplayerOnCloseHandlerMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") instructions( @@ -202,11 +202,11 @@ internal val BytecodePatchContext.miniplayerOnCloseHandlerMethod by gettingFirst internal const val YOUTUBE_PLAYER_OVERLAYS_LAYOUT_CLASS_NAME = "Lcom/google/android/apps/youtube/app/common/player/overlay/YouTubePlayerOverlaysLayout;" -internal val BytecodePatchContext.playerOverlaysLayoutMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.playerOverlaysLayoutMethod by gettingFirstImmutableMethodDeclaratively { definingClass(YOUTUBE_PLAYER_OVERLAYS_LAYOUT_CLASS_NAME) } -internal val BytecodePatchContext.miniplayerSetIconsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.miniplayerSetIconsMethod by gettingFirstMethodDeclaratively { returnType("V") parameterTypes("I", "Ljava/lang/Runnable;") instructions( diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/panels/popup/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/panels/popup/Fingerprints.kt index 98277e264c..28c218d9d1 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/panels/popup/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/panels/popup/Fingerprints.kt @@ -1,10 +1,10 @@ package app.revanced.patches.youtube.layout.panels.popup -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.engagementPanelControllerMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.engagementPanelControllerMethod by gettingFirstMethodDeclaratively( "EngagementPanelController: cannot show EngagementPanel before EngagementPanelController.init() has been called.", "[EngagementPanel] Cannot show EngagementPanel before EngagementPanelController.init() has been called.", ) { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/Fingerprints.kt index 5947817dcf..d6370b2aa7 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/player/fullscreen/Fingerprints.kt @@ -41,7 +41,7 @@ internal val BytecodePatchContext.openVideosFullscreenPortraitLegacyMethodMatch ) } -internal val BytecodePatchContext.openVideosFullscreenHookPatchExtensionMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.openVideosFullscreenHookPatchExtensionMethod by gettingFirstMethodDeclaratively { name("isFullScreenPatchIncluded") definingClass(EXTENSION_CLASS_DESCRIPTOR) accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/returnyoutubedislike/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/returnyoutubedislike/Fingerprints.kt index fb7fa9ecb6..7588c8d899 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/returnyoutubedislike/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/returnyoutubedislike/Fingerprints.kt @@ -7,17 +7,17 @@ import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.ClassDef -internal val BytecodePatchContext.dislikeMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.dislikeMethod by gettingFirstMethodDeclaratively { returnType("V") instructions("like/dislike"()) } -internal val BytecodePatchContext.likeMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.likeMethod by gettingFirstMethodDeclaratively { returnType("V") instructions("like/like"()) } -internal val BytecodePatchContext.removeLikeMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.removeLikeMethod by gettingFirstMethodDeclaratively { returnType("V") instructions("like/removelike"()) } @@ -55,7 +55,7 @@ internal val ClassDef.rollingNumberMeasureStaticLabelMethodMatch by ClassDefComp ) } -internal val BytecodePatchContext.rollingNumberMeasureStaticLabelParentMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.rollingNumberMeasureStaticLabelParentMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Ljava/lang/String;") parameterTypes() @@ -74,7 +74,7 @@ internal val BytecodePatchContext.rollingNumberSetterMethodMatch by composingFir custom { match(instructions) } } -internal val BytecodePatchContext.rollingNumberTextViewMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.rollingNumberTextViewMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes("L", "F", "F") @@ -92,14 +92,14 @@ internal val BytecodePatchContext.rollingNumberTextViewMethod by gettingFirstMut } } -internal val BytecodePatchContext.textComponentConstructorMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.textComponentConstructorMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.CONSTRUCTOR, AccessFlags.PRIVATE) instructions( "TextComponent"(), ) } -internal val BytecodePatchContext.textComponentDataMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.textComponentDataMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) parameterTypes("L", "L") instructions( @@ -112,14 +112,14 @@ internal val BytecodePatchContext.textComponentDataMethod by gettingFirstMethodD * Matches against the same class found in [textComponentConstructorMethod]. */ context(_: BytecodePatchContext) -internal fun ClassDef.getTextComponentLookupMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getTextComponentLookupMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PROTECTED, AccessFlags.FINAL) returnType("L") parameterTypes("L") instructions("…"()) } -internal val BytecodePatchContext.textComponentFeatureFlagMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.textComponentFeatureFlagMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.FINAL) returnType("Z") parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/searchbar/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/searchbar/Fingerprints.kt index a69824ae8b..e7748db661 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/searchbar/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/searchbar/Fingerprints.kt @@ -1,8 +1,8 @@ package app.revanced.patches.youtube.layout.searchbar import app.revanced.patcher.accessFlags +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively import app.revanced.patcher.gettingFirstMethodDeclaratively -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively import app.revanced.patcher.instructions import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext @@ -11,7 +11,7 @@ import app.revanced.patches.shared.misc.mapping.ResourceType import app.revanced.patches.youtube.layout.hide.general.yoodlesImageViewMethod import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.setWordmarkHeaderMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.setWordmarkHeaderMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes("Landroid/widget/ImageView;") @@ -24,7 +24,7 @@ internal val BytecodePatchContext.setWordmarkHeaderMethod by gettingFirstMethodD /** * Matches the same method as [yoodlesImageViewMethod]. */ -internal val BytecodePatchContext.wideSearchbarLayoutMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.wideSearchbarLayoutMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Landroid/view/View;") parameterTypes("L", "L") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/seekbar/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/seekbar/Fingerprints.kt index 42f9c0a4ec..63cb2e0f1f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/seekbar/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/seekbar/Fingerprints.kt @@ -7,7 +7,7 @@ import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.ClassDef -internal val BytecodePatchContext.fullscreenSeekbarThumbnailsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.fullscreenSeekbarThumbnailsMethod by gettingFirstMethodDeclaratively { returnType("Z") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) parameterTypes() @@ -70,7 +70,7 @@ internal val BytecodePatchContext.watchHistoryMenuUseProgressDrawableMethodMatch ) } -internal val BytecodePatchContext.lithoLinearGradientMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.lithoLinearGradientMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.STATIC) returnType("Landroid/graphics/LinearGradient;") parameterTypes("F", "F", "F", "F", "[I", "[F") @@ -106,7 +106,7 @@ internal val BytecodePatchContext.playerLinearGradientLegacyMethodMatch by compo internal const val LOTTIE_ANIMATION_VIEW_CLASS_TYPE = "Lcom/airbnb/lottie/LottieAnimationView;" -internal val BytecodePatchContext.lottieAnimationViewSetAnimationIntMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.lottieAnimationViewSetAnimationIntMethod by gettingFirstImmutableMethodDeclaratively { definingClass(LOTTIE_ANIMATION_VIEW_CLASS_TYPE) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) parameterTypes("I") @@ -121,7 +121,7 @@ internal val BytecodePatchContext.lottieAnimationViewSetAnimationIntMethod by ge instructions(method { name == "isInEditMode" && definingClass == methodDefiningClass }) } -internal val BytecodePatchContext.lottieCompositionFactoryZipMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.lottieCompositionFactoryZipMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) parameterTypes("Landroid/content/Context;", "Ljava/util/zip/ZipInputStream;", "Ljava/lang/String;") returnType("L") @@ -137,7 +137,7 @@ internal val BytecodePatchContext.lottieCompositionFactoryZipMethod by gettingFi * [Original method](https://github.com/airbnb/lottie-android/blob/26ad8bab274eac3f93dccccfa0cafc39f7408d13/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java#L386) */ context(_: BytecodePatchContext) -internal fun ClassDef.getLottieCompositionFactoryFromJsonInputStreamMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getLottieCompositionFactoryFromJsonInputStreamMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) parameterTypes("Ljava/io/InputStream;", "Ljava/lang/String;") returnType("L") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/seekbar/SeekbarColorPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/seekbar/SeekbarColorPatch.kt index 9a9a0ffd2d..17cbc055a4 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/seekbar/SeekbarColorPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/seekbar/SeekbarColorPatch.kt @@ -208,7 +208,7 @@ val seekbarColorPatch = bytecodePatch( factoryStreamReturnType = it.returnType } - val lottieAnimationViewSetAnimationStreamMethod = firstMutableMethodDeclaratively { + val lottieAnimationViewSetAnimationStreamMethod = firstMethodDeclaratively { definingClass(lottieAnimationViewSetAnimationIntMethod.immutableClassDef.type) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) parameterTypes(factoryStreamReturnType.toString()) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsautoplay/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsautoplay/Fingerprints.kt index 1224d6a593..f6b30c4650 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsautoplay/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsautoplay/Fingerprints.kt @@ -17,7 +17,7 @@ internal val BytecodePatchContext.reelEnumConstructorMethodMatch by composingFir ) } -internal val BytecodePatchContext.reelPlaybackRepeatParentMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.reelPlaybackRepeatParentMethod by gettingFirstImmutableMethodDeclaratively { returnType("V") parameterTypes("Ljava/lang/String;", "J") instructions( @@ -29,7 +29,7 @@ internal val BytecodePatchContext.reelPlaybackRepeatParentMethod by gettingFirst * Matches class found in [reelPlaybackRepeatParentMethod]. */ context(_: BytecodePatchContext) -internal fun ClassDef.getReelPlaybackRepeatMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getReelPlaybackRepeatMethod() = firstMethodDeclaratively { returnType("V") parameterTypes("L") instructions(method { toString() == "Lcom/google/common/util/concurrent/ListenableFuture;->isDone()Z" }) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsplayer/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsplayer/Fingerprints.kt index 5afa4e8deb..7fb5ae1ca0 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsplayer/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/shortsplayer/Fingerprints.kt @@ -73,7 +73,7 @@ internal val BytecodePatchContext.shortsPlaybackIntentLegacyMethodMatch by compo ) } -internal val BytecodePatchContext.shortsPlaybackIntentMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.shortsPlaybackIntentMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PROTECTED, AccessFlags.FINAL) returnType("V") parameterTypes( @@ -90,7 +90,7 @@ internal val BytecodePatchContext.shortsPlaybackIntentMethod by gettingFirstMuta ) } -internal val BytecodePatchContext.exitVideoPlayerMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.exitVideoPlayerMethod by gettingFirstMethodDeclaratively { returnType("V") parameterTypes() instructions(ResourceType.ID("mdx_drawer_layout")) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/startpage/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/startpage/Fingerprints.kt index 2bdcdf3983..6c172b1513 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/startpage/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/startpage/Fingerprints.kt @@ -4,7 +4,7 @@ import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.intentActionMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.intentActionMethod by gettingFirstMethodDeclaratively( "has_handled_intent", ) { parameterTypes("Landroid/content/Intent;") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/startupshortsreset/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/startupshortsreset/Fingerprints.kt index ed0908224f..931bff6052 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/startupshortsreset/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/startupshortsreset/Fingerprints.kt @@ -24,7 +24,7 @@ internal val BytecodePatchContext.userWasInShortsAlternativeMethodMatch by compo /** * Pre 20.02 */ -internal val BytecodePatchContext.userWasInShortsLegacyMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.userWasInShortsLegacyMethod by gettingFirstMethodDeclaratively { returnType("V") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) parameterTypes("Ljava/lang/Object;") @@ -36,7 +36,7 @@ internal val BytecodePatchContext.userWasInShortsLegacyMethod by gettingFirstMut /** * 18.15.40+ */ -internal val BytecodePatchContext.userWasInShortsConfigMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.userWasInShortsConfigMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/audiofocus/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/audiofocus/Fingerprints.kt index f0b75e6d33..7afaec73c3 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/audiofocus/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/audiofocus/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.youtube.misc.audiofocus -import app.revanced.patcher.gettingFirstMutableMethod +import app.revanced.patcher.gettingFirstMethod import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.audioFocusChangeListenerMethod by gettingFirstMutableMethod( +internal val BytecodePatchContext.audioFocusChangeListenerMethod by gettingFirstMethod( "AudioFocus DUCK", "AudioFocus loss; Will lower volume", ) -internal val BytecodePatchContext.audioFocusRequestBuilderMethod by gettingFirstMutableMethod( +internal val BytecodePatchContext.audioFocusRequestBuilderMethod by gettingFirstMethod( "Can't build an AudioFocusRequestCompat instance without a listener", ) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/backgroundplayback/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/backgroundplayback/Fingerprints.kt index da1b03b0ec..64d6a26d2d 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/backgroundplayback/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/backgroundplayback/Fingerprints.kt @@ -6,7 +6,7 @@ import app.revanced.util.literal import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.backgroundPlaybackManagerMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.backgroundPlaybackManagerMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returnType("Z") parameterTypes("L") @@ -39,7 +39,7 @@ internal val BytecodePatchContext.backgroundPlaybackManagerMethod by gettingFirs ) } -internal val BytecodePatchContext.backgroundPlaybackSettingsMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.backgroundPlaybackSettingsMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Ljava/lang/String;") parameterTypes() @@ -55,7 +55,7 @@ internal val BytecodePatchContext.backgroundPlaybackSettingsMethod by gettingFir literal { prefBackgroundAndOfflineCategoryId } } -internal val BytecodePatchContext.kidsBackgroundPlaybackPolicyControllerMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.kidsBackgroundPlaybackPolicyControllerMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes("I", "L", "L") @@ -72,14 +72,14 @@ internal val BytecodePatchContext.kidsBackgroundPlaybackPolicyControllerMethod b literal { 5 } } -internal val BytecodePatchContext.backgroundPlaybackManagerShortsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.backgroundPlaybackManagerShortsMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) returnType("Z") parameterTypes("L") instructions(151635310L()) } -internal val BytecodePatchContext.shortsBackgroundPlaybackFeatureFlagMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.shortsBackgroundPlaybackFeatureFlagMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/dimensions/spoof/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/dimensions/spoof/Fingerprints.kt index bb42551916..26f87fda7e 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/dimensions/spoof/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/dimensions/spoof/Fingerprints.kt @@ -1,12 +1,12 @@ package app.revanced.patches.youtube.misc.dimensions.spoof -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively +import app.revanced.patcher.gettingFirstMethodDeclaratively import app.revanced.patcher.instructions import app.revanced.patcher.invoke import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType -internal val BytecodePatchContext.deviceDimensionsModelToStringMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.deviceDimensionsModelToStringMethod by gettingFirstMethodDeclaratively { returnType("L") instructions( "minh."(), diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/dimensions/spoof/SpoofDeviceDimensionsPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/dimensions/spoof/SpoofDeviceDimensionsPatch.kt index 546e3836de..934e2049bd 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/dimensions/spoof/SpoofDeviceDimensionsPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/dimensions/spoof/SpoofDeviceDimensionsPatch.kt @@ -2,7 +2,7 @@ package app.revanced.patches.youtube.misc.dimensions.spoof import app.revanced.patcher.classDef import app.revanced.patcher.extensions.addInstructions -import app.revanced.patcher.firstMutableMethod +import app.revanced.patcher.firstMethod import app.revanced.patcher.patch.bytecodePatch import app.revanced.patches.all.misc.resources.addResources import app.revanced.patches.all.misc.resources.addResourcesPatch @@ -42,7 +42,7 @@ val spoofDeviceDimensionsPatch = bytecodePatch( ) // Override the parameters containing the dimensions. - deviceDimensionsModelToStringMethod.classDef.methods.firstMutableMethod { name == "" }.addInstructions( + deviceDimensionsModelToStringMethod.classDef.methods.firstMethod { name == "" }.addInstructions( 1, // Add after super call. arrayOf( 1 to "MinHeightOrWidth", // p1 = min height diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playbackspeed/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playbackspeed/Fingerprints.kt index 07ff1d21d3..728ad0fef0 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playbackspeed/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/fix/playbackspeed/Fingerprints.kt @@ -2,8 +2,8 @@ package app.revanced.patches.youtube.misc.fix.playbackspeed import app.revanced.patcher.accessFlags import app.revanced.patcher.custom +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively import app.revanced.patcher.gettingFirstMethodDeclaratively -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively import app.revanced.patcher.opcodes import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext @@ -19,7 +19,7 @@ import com.android.tools.smali.dexlib2.iface.reference.FieldReference * This method is usually used to set the initial speed (1.0x) when playback starts from the feed. * For some reason, in the latest YouTube, it is invoked even after the video has already started. */ -internal val BytecodePatchContext.playbackSpeedInFeedsMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playbackSpeedInFeedsMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes("L") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/hapticfeedback/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/hapticfeedback/Fingerprints.kt index 20c975ce2a..f37729e3d1 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/hapticfeedback/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/hapticfeedback/Fingerprints.kt @@ -3,25 +3,25 @@ package app.revanced.patches.youtube.misc.hapticfeedback import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.markerHapticsMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.markerHapticsMethod by gettingFirstMethodDeclaratively( "Failed to execute markers haptics vibrate.", ) { returnType("V") } -internal val BytecodePatchContext.scrubbingHapticsMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.scrubbingHapticsMethod by gettingFirstMethodDeclaratively( "Failed to haptics vibrate for fine scrubbing.", ) { returnType("V") } -internal val BytecodePatchContext.seekUndoHapticsMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.seekUndoHapticsMethod by gettingFirstMethodDeclaratively( "Failed to execute seek undo haptics vibrate.", ) { returnType("V") } -internal val BytecodePatchContext.zoomHapticsMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.zoomHapticsMethod by gettingFirstMethodDeclaratively( "Failed to haptics vibrate for video zoom", ) { returnType("V") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/Fingerprints.kt index 10a88c22ff..29d69d9a80 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/imageurlhook/Fingerprints.kt @@ -6,7 +6,7 @@ import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.iface.ClassDef context(_: BytecodePatchContext) -internal fun ClassDef.getOnFailureMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getOnFailureMethod() = firstMethodDeclaratively { name("onFailed") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") @@ -18,7 +18,7 @@ internal fun ClassDef.getOnFailureMethod() = firstMutableMethodDeclaratively { } // Acts as a parent method. -internal val BytecodePatchContext.onResponseStartedMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.onResponseStartedMethod by gettingFirstMethodDeclaratively( "Content-Length", "Content-Type", "identity", @@ -31,7 +31,7 @@ internal val BytecodePatchContext.onResponseStartedMethod by gettingFirstMutable } context(_: BytecodePatchContext) -internal fun ClassDef.getOnSucceededMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getOnSucceededMethod() = firstMethodDeclaratively { name("onSucceeded") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") @@ -40,18 +40,18 @@ internal fun ClassDef.getOnSucceededMethod() = firstMutableMethodDeclaratively { internal const val CRONET_URL_REQUEST_CLASS_DESCRIPTOR = "Lorg/chromium/net/impl/CronetUrlRequest;" -internal val BytecodePatchContext.requestMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.requestMethod by gettingFirstMethodDeclaratively { definingClass(CRONET_URL_REQUEST_CLASS_DESCRIPTOR) accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) } context(_: BytecodePatchContext) -internal fun ClassDef.getMessageDigestImageUrlMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getMessageDigestImageUrlMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) parameterTypes("Ljava/lang/String;", "L") } -internal val BytecodePatchContext.messageDigestImageUrlParentMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.messageDigestImageUrlParentMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Ljava/lang/String;") parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/litho/filter/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/litho/filter/Fingerprints.kt index a0cda67c8d..aab6d49715 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/litho/filter/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/litho/filter/Fingerprints.kt @@ -5,7 +5,7 @@ import app.revanced.patcher.patch.BytecodePatchContext import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.lithoComponentNameUpbFeatureFlagMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.lithoComponentNameUpbFeatureFlagMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/loopvideo/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/loopvideo/Fingerprints.kt index 4fadf90afe..388a54e5d5 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/loopvideo/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/loopvideo/Fingerprints.kt @@ -1,14 +1,14 @@ package app.revanced.patches.youtube.misc.loopvideo import app.revanced.patcher.accessFlags -import app.revanced.patcher.gettingFirstMethodDeclaratively +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively import app.revanced.patcher.instructions import app.revanced.patcher.invoke import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.videoStartPlaybackMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.videoStartPlaybackMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") instructions( diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/navigation/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/navigation/Fingerprints.kt index b6a923d1de..b1a3dbc82f 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/navigation/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/navigation/Fingerprints.kt @@ -2,7 +2,7 @@ package app.revanced.patches.youtube.misc.navigation import app.revanced.patcher.* import app.revanced.patcher.accessFlags -import app.revanced.patcher.gettingFirstMethodDeclaratively +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively import app.revanced.patcher.instructions import app.revanced.patcher.parameterTypes import app.revanced.patcher.patch.BytecodePatchContext @@ -36,7 +36,7 @@ internal val BytecodePatchContext.toolbarLayoutMethodMatch by composingFirstMeth /** * Matches to https://android.googlesource.com/platform/frameworks/support/+/9eee6ba/v7/appcompat/src/android/support/v7/widget/Toolbar.java#963 */ -internal val BytecodePatchContext.appCompatToolbarBackButtonMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.appCompatToolbarBackButtonMethod by gettingFirstImmutableMethodDeclaratively { definingClass("Landroid/support/v7/widget/Toolbar;") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Landroid/graphics/drawable/Drawable;") @@ -47,7 +47,7 @@ internal val BytecodePatchContext.appCompatToolbarBackButtonMethod by gettingFir * Matches to the class found in [pivotBarConstructorMethod]. */ context(_: BytecodePatchContext) -internal fun ClassDef.getInitializeButtonsMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getInitializeButtonsMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") instructions(ResourceType.LAYOUT("image_only_tab")) @@ -57,7 +57,7 @@ internal fun ClassDef.getInitializeButtonsMethod() = firstMutableMethodDeclarati * Extension method, used for callback into to other patches. * Specifically, [navigationButtonsPatch]. */ -internal val BytecodePatchContext.navigationBarHookCallbackMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.navigationBarHookCallbackMethod by gettingFirstMethodDeclaratively { name("navigationTabCreatedCallback") definingClass(EXTENSION_CLASS_DESCRIPTOR) accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC) @@ -68,7 +68,7 @@ internal val BytecodePatchContext.navigationBarHookCallbackMethod by gettingFirs /** * Matches to the Enum class that looks up ordinal -> instance. */ -internal val BytecodePatchContext.navigationEnumMethod by gettingFirstMethodDeclaratively( +internal val BytecodePatchContext.navigationEnumMethod by gettingFirstImmutableMethodDeclaratively( "PIVOT_HOME", "TAB_SHORTS", "CREATION_TAB_LARGE", @@ -81,7 +81,7 @@ internal val BytecodePatchContext.navigationEnumMethod by gettingFirstMethodDecl accessFlags(AccessFlags.STATIC, AccessFlags.CONSTRUCTOR) } -internal val BytecodePatchContext.pivotBarButtonsCreateDrawableViewMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.pivotBarButtonsCreateDrawableViewMethod by gettingFirstImmutableMethodDeclaratively { definingClass("Lcom/google/android/libraries/youtube/rendering/ui/pivotbar/PivotBar;") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Landroid/view/View;") @@ -91,7 +91,7 @@ internal val BytecodePatchContext.pivotBarButtonsCreateDrawableViewMethod by get } } -internal val BytecodePatchContext.pivotBarButtonsCreateResourceStyledViewMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.pivotBarButtonsCreateResourceStyledViewMethod by gettingFirstImmutableMethodDeclaratively { definingClass("Lcom/google/android/libraries/youtube/rendering/ui/pivotbar/PivotBar;") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Landroid/view/View;") @@ -101,7 +101,7 @@ internal val BytecodePatchContext.pivotBarButtonsCreateResourceStyledViewMethod /** * 20.21+ */ -internal val BytecodePatchContext.pivotBarButtonsCreateResourceIntViewMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.pivotBarButtonsCreateResourceIntViewMethod by gettingFirstImmutableMethodDeclaratively { definingClass("Lcom/google/android/libraries/youtube/rendering/ui/pivotbar/PivotBar;") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Landroid/view/View;") @@ -119,7 +119,7 @@ internal val BytecodePatchContext.pivotBarButtonsViewSetSelectedMethodMatch by c instructions(method("setSelected")) } -internal val BytecodePatchContext.pivotBarConstructorMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.pivotBarConstructorMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) instructions("com.google.android.apps.youtube.app.endpoint.flags"()) } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/playercontrols/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/playercontrols/Fingerprints.kt index 469e6b8aa1..41889cb905 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/playercontrols/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/playercontrols/Fingerprints.kt @@ -18,7 +18,7 @@ internal val BytecodePatchContext.playerControlsVisibilityEntityModelMethodMatch ) } -internal val BytecodePatchContext.youtubeControlsOverlayMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.youtubeControlsOverlayMethod by gettingFirstImmutableMethodDeclaratively { returnType("V") parameterTypes() instructions( @@ -34,7 +34,7 @@ internal val ClassDef.motionEventMethodMatch by ClassDefComposing.composingFirst instructions(method("setTranslationY")) } -internal val BytecodePatchContext.playerControlsExtensionHookListenersExistMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playerControlsExtensionHookListenersExistMethod by gettingFirstMethodDeclaratively { name("fullscreenButtonVisibilityCallbacksExist") definingClass(EXTENSION_CLASS_DESCRIPTOR) accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC) @@ -42,7 +42,7 @@ internal val BytecodePatchContext.playerControlsExtensionHookListenersExistMetho parameterTypes() } -internal val BytecodePatchContext.playerControlsExtensionHookMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playerControlsExtensionHookMethod by gettingFirstMethodDeclaratively { name("fullscreenButtonVisibilityChanged") definingClass(EXTENSION_CLASS_DESCRIPTOR) accessFlags(AccessFlags.PRIVATE, AccessFlags.STATIC) @@ -86,41 +86,41 @@ internal val BytecodePatchContext.overlayViewInflateMethodMatch by composingFirs * Resolves to the class found in [playerTopControlsInflateMethodMatch]. */ context(_: BytecodePatchContext) -internal fun ClassDef.getControlsOverlayVisibilityMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getControlsOverlayVisibilityMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PRIVATE, AccessFlags.FINAL) returnType("V") parameterTypes("Z", "Z") } -internal val BytecodePatchContext.playerBottomControlsExploderFeatureFlagMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playerBottomControlsExploderFeatureFlagMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") parameterTypes() instructions(45643739L()) } -internal val BytecodePatchContext.playerTopControlsExperimentalLayoutFeatureFlagMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playerTopControlsExperimentalLayoutFeatureFlagMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("I") parameterTypes() instructions(45629424L()) } -internal val BytecodePatchContext.playerControlsLargeOverlayButtonsFeatureFlagMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playerControlsLargeOverlayButtonsFeatureFlagMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") parameterTypes() instructions(45709810L()) } -internal val BytecodePatchContext.playerControlsFullscreenLargeButtonsFeatureFlagMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playerControlsFullscreenLargeButtonsFeatureFlagMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") parameterTypes() instructions(45686474L()) } -internal val BytecodePatchContext.playerControlsButtonStrokeFeatureFlagMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playerControlsButtonStrokeFeatureFlagMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/playertype/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/playertype/Fingerprints.kt index fe49276ab9..d182b41500 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/playertype/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/playertype/Fingerprints.kt @@ -6,7 +6,7 @@ import app.revanced.patches.shared.misc.mapping.ResourceType import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.playerTypeEnumMethod by gettingFirstMethodDeclaratively( +internal val BytecodePatchContext.playerTypeEnumMethod by gettingFirstImmutableMethodDeclaratively( "NONE", "HIDDEN", "WATCH_WHILE_MINIMIZED", @@ -31,7 +31,7 @@ internal val BytecodePatchContext.reelWatchPagerMethodMatch by composingFirstMet ) } -internal val BytecodePatchContext.videoStateEnumMethod by gettingFirstMethodDeclaratively( +internal val BytecodePatchContext.videoStateEnumMethod by gettingFirstImmutableMethodDeclaratively( "NEW", "PLAYING", "PAUSED", @@ -44,7 +44,7 @@ internal val BytecodePatchContext.videoStateEnumMethod by gettingFirstMethodDecl } // 20.33 and lower class name ControlsState. 20.34+ class name is obfuscated. -internal val BytecodePatchContext.controlsStateToStringMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.controlsStateToStringMethod by gettingFirstImmutableMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) parameterTypes() returnType("Ljava/lang/String;") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/playertype/PlayerTypeHookPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/playertype/PlayerTypeHookPatch.kt index a37d2d9cc4..25f90ad072 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/playertype/PlayerTypeHookPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/playertype/PlayerTypeHookPatch.kt @@ -20,7 +20,7 @@ val playerTypeHookPatch = bytecodePatch( dependsOn(sharedExtensionPatch, resourceMappingPatch) apply { - firstMutableMethodDeclaratively { + firstMethodDeclaratively { definingClass { endsWith("/YouTubePlayerOverlaysLayout;") } accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/settings/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/settings/Fingerprints.kt index 4e9d967bbb..6065201746 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/misc/settings/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/misc/settings/Fingerprints.kt @@ -6,7 +6,7 @@ import app.revanced.patches.shared.misc.mapping.ResourceType import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode -internal val BytecodePatchContext.licenseActivityOnCreateMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.licenseActivityOnCreateMethod by gettingFirstMethodDeclaratively { name("onCreate") definingClass { endsWith("/LicenseActivity;") } accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) @@ -14,7 +14,7 @@ internal val BytecodePatchContext.licenseActivityOnCreateMethod by gettingFirstM parameterTypes("Landroid/os/Bundle;") } -internal val BytecodePatchContext.setThemeMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.setThemeMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("L") parameterTypes() diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/shared/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/shared/Fingerprints.kt index 5072656462..0397f26992 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/shared/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/shared/Fingerprints.kt @@ -9,8 +9,8 @@ import app.revanced.patcher.custom import app.revanced.patcher.definingClass import app.revanced.patcher.field import app.revanced.patcher.firstMethodComposite +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively import app.revanced.patcher.gettingFirstMethodDeclaratively -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively import app.revanced.patcher.immutableClassDef import app.revanced.patcher.instructions import app.revanced.patcher.invoke @@ -28,7 +28,7 @@ import com.android.tools.smali.dexlib2.iface.ClassDef internal const val YOUTUBE_MAIN_ACTIVITY_CLASS_TYPE = "Lcom/google/android/apps/youtube/app/watchwhile/MainActivity;" -internal val BytecodePatchContext.conversionContextToStringMethod by gettingFirstMethodDeclaratively( +internal val BytecodePatchContext.conversionContextToStringMethod by gettingFirstImmutableMethodDeclaratively( ", widthConstraint=", ", heightConstraint=", ", templateLoggerFactory=", @@ -58,13 +58,13 @@ internal fun BytecodePatchContext.getLayoutConstructorMethodMatch() = firstMetho ) } -internal val BytecodePatchContext.mainActivityConstructorMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.mainActivityConstructorMethod by gettingFirstImmutableMethodDeclaratively { definingClass(YOUTUBE_MAIN_ACTIVITY_CLASS_TYPE) accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) parameterTypes() } -internal val BytecodePatchContext.mainActivityOnBackPressedMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.mainActivityOnBackPressedMethod by gettingFirstMethodDeclaratively { name("onBackPressed") definingClass(YOUTUBE_MAIN_ACTIVITY_CLASS_TYPE) accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) @@ -72,7 +72,7 @@ internal val BytecodePatchContext.mainActivityOnBackPressedMethod by gettingFirs parameterTypes() } -internal val BytecodePatchContext.mainActivityOnCreateMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.mainActivityOnCreateMethod by gettingFirstMethodDeclaratively { name("onCreate") definingClass(YOUTUBE_MAIN_ACTIVITY_CLASS_TYPE) returnType("V") @@ -105,7 +105,7 @@ internal val BytecodePatchContext.rollingNumberTextViewAnimationUpdateMethodMatc } } -internal val BytecodePatchContext.seekbarMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.seekbarMethod by gettingFirstImmutableMethodDeclaratively { returnType("V") instructions("timed_markers_width"()) } @@ -121,7 +121,7 @@ internal fun ClassDef.getSeekbarOnDrawMethodMatch() = firstMethodComposite { ) } -internal val BytecodePatchContext.subtitleButtonControllerMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.subtitleButtonControllerMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes("Lcom/google/android/libraries/youtube/player/subtitles/model/SubtitleTrack;") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/codecs/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/codecs/Fingerprints.kt index 72dc8f96c7..613d3c623b 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/codecs/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/codecs/Fingerprints.kt @@ -1,13 +1,13 @@ package app.revanced.patches.youtube.video.codecs import app.revanced.patcher.accessFlags +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively import app.revanced.patcher.gettingFirstMethodDeclaratively -import app.revanced.patcher.gettingFirstMutableMethodDeclaratively import app.revanced.patcher.patch.BytecodePatchContext import app.revanced.patcher.returnType import com.android.tools.smali.dexlib2.AccessFlags -internal val BytecodePatchContext.vp9CapabilityMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.vp9CapabilityMethod by gettingFirstMethodDeclaratively( "vp9_supported", "video/x-vnd.on2.vp9", ) { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/information/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/information/Fingerprints.kt index 783bfc0f50..9f3b8e52cb 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/information/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/information/Fingerprints.kt @@ -9,12 +9,12 @@ import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.ClassDef import org.stringtemplate.v4.compiler.Bytecode -internal val BytecodePatchContext.createVideoPlayerSeekbarMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.createVideoPlayerSeekbarMethod by gettingFirstImmutableMethodDeclaratively { returnType("V") instructions("timed_markers_width"()) } -internal val BytecodePatchContext.onPlaybackSpeedItemClickMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.onPlaybackSpeedItemClickMethod by gettingFirstMethodDeclaratively { name("onItemClick") accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") @@ -35,14 +35,14 @@ internal val BytecodePatchContext.playerControllerSetTimeReferenceMethodMatch by ) } -internal val BytecodePatchContext.playVideoCheckVideoStreamingDataResponseMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.playVideoCheckVideoStreamingDataResponseMethod by gettingFirstImmutableMethodDeclaratively { instructions("playVideo called on player response with no videoStreamingData."()) } /** * Matched using class found in [playVideoCheckVideoStreamingDataResponseMethod]. */ -internal fun ClassDef.getSeekMethod() = firstMethodDeclaratively { +internal fun ClassDef.getSeekMethod() = firstImmutableMethodDeclaratively { instructions("Attempting to seek during an ad"()) } @@ -84,7 +84,7 @@ internal fun ClassDef.getMdxSeekMethod() = firstMethodDeclaratively { } } -internal val BytecodePatchContext.mdxPlayerDirectorSetVideoStageMethod by gettingFirstMethodDeclaratively { +internal val BytecodePatchContext.mdxPlayerDirectorSetVideoStageMethod by gettingFirstImmutableMethodDeclaratively { instructions("MdxDirector setVideoStage ad should be null when videoStage is not an Ad state "()) } @@ -106,7 +106,7 @@ internal fun ClassDef.getMdxSeekRelativeMethod() = firstMethodDeclaratively { * Matches using class found in [playVideoCheckVideoStreamingDataResponseMethod]. */ context(_: BytecodePatchContext) -internal fun ClassDef.getSeekRelativeMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getSeekRelativeMethod() = firstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) // Return type is boolean up to 19.39, and void with 19.39+. parameterTypes("J", "L") @@ -137,7 +137,7 @@ internal val ClassDef.playbackSpeedMenuSpeedChangedMethodMatch by ClassDefCompos instructions(allOf(Opcode.IGET(), field { type == "F" })) } -internal val BytecodePatchContext.playbackSpeedClassMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.playbackSpeedClassMethod by gettingFirstMethodDeclaratively( "PLAYBACK_RATE_MENU_BOTTOM_SHEET_FRAGMENT", ) { accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC) @@ -152,7 +152,7 @@ internal const val YOUTUBE_VIDEO_QUALITY_CLASS_TYPE = /** * YouTube 20.19 and lower. */ -internal val BytecodePatchContext.videoQualityLegacyMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.videoQualityLegacyMethod by gettingFirstMethodDeclaratively { definingClass(YOUTUBE_VIDEO_QUALITY_CLASS_TYPE) accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) parameterTypes( @@ -163,7 +163,7 @@ internal val BytecodePatchContext.videoQualityLegacyMethod by gettingFirstMutabl ) } -internal val BytecodePatchContext.videoQualityMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.videoQualityMethod by gettingFirstMethodDeclaratively { definingClass(YOUTUBE_VIDEO_QUALITY_CLASS_TYPE) accessFlags(AccessFlags.PUBLIC, AccessFlags.CONSTRUCTOR) parameterTypes( @@ -175,7 +175,7 @@ internal val BytecodePatchContext.videoQualityMethod by gettingFirstMutableMetho ) } -internal val BytecodePatchContext.videoQualitySetterMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.videoQualitySetterMethod by gettingFirstMethodDeclaratively( "menu_item_video_quality", ) { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) @@ -194,7 +194,7 @@ internal val BytecodePatchContext.videoQualitySetterMethod by gettingFirstMutabl * Matches with the class found in [videoQualitySetterMethod]. */ context(_: BytecodePatchContext) -internal fun ClassDef.getSetVideoQualityMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getSetVideoQualityMethod() = firstMethodDeclaratively { returnType("V") parameterTypes("L") opcodes( diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt index 2d8695c521..697853819c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/information/VideoInformationPatch.kt @@ -5,7 +5,7 @@ import app.revanced.com.android.tools.smali.dexlib2.mutable.MutableMethod import app.revanced.com.android.tools.smali.dexlib2.mutable.MutableMethod.Companion.toMutable import app.revanced.patcher.classDef import app.revanced.patcher.extensions.* -import app.revanced.patcher.firstMutableClassDef +import app.revanced.patcher.firstClassDef import app.revanced.patcher.immutableClassDef import app.revanced.patcher.patch.bytecodePatch import app.revanced.patches.youtube.misc.extension.sharedExtensionPatch @@ -196,7 +196,7 @@ val videoInformationPatch = bytecodePatch( getInstruction(indexOfFirstInstructionOrThrow(Opcode.IF_EQZ) - 1).reference as FieldReference setPlaybackSpeedMethod = - firstMutableClassDef(setPlaybackSpeedMethodReference.definingClass) + firstClassDef(setPlaybackSpeedMethodReference.definingClass) .methods.first { it.name == setPlaybackSpeedMethodReference.name } setPlaybackSpeedMethodIndex = 0 @@ -353,7 +353,7 @@ val videoInformationPatch = bytecodePatch( val onItemClickListenerClassReference = it.getInstruction(0).reference val setQualityFieldReference = it.getInstruction(1).fieldReference!! - firstMutableClassDef(setQualityFieldReference.type).apply { + firstClassDef(setQualityFieldReference.type).apply { // Add interface and helper methods to allow extension code to call obfuscated methods. interfaces.add(EXTENSION_VIDEO_QUALITY_MENU_INTERFACE) diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/Fingerprints.kt index 02990d50b3..cd78c70575 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/playerresponse/Fingerprints.kt @@ -7,7 +7,7 @@ import com.android.tools.smali.dexlib2.AccessFlags /** * For targets 20.46 and later. */ -internal val BytecodePatchContext.playerParameterBuilderMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playerParameterBuilderMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("L") parameterTypes( @@ -33,7 +33,7 @@ internal val BytecodePatchContext.playerParameterBuilderMethod by gettingFirstMu /** * For targets 20.26 and later. */ -internal val BytecodePatchContext.playerParameterBuilder2026Method by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playerParameterBuilder2026Method by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("L") parameterTypes( @@ -60,7 +60,7 @@ internal val BytecodePatchContext.playerParameterBuilder2026Method by gettingFir /** * For targets 20.15 to 20.25 */ -internal val BytecodePatchContext.playerParameterBuilder2015Method by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playerParameterBuilder2015Method by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("L") parameterTypes( @@ -86,7 +86,7 @@ internal val BytecodePatchContext.playerParameterBuilder2015Method by gettingFir /** * For targets 20.10 to 20.14. */ -internal val BytecodePatchContext.playerParameterBuilder2010Method by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playerParameterBuilder2010Method by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("L") parameterTypes( @@ -113,7 +113,7 @@ internal val BytecodePatchContext.playerParameterBuilder2010Method by gettingFir /** * For targets 20.02 to 20.09. */ -internal val BytecodePatchContext.playerParameterBuilder2002Method by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playerParameterBuilder2002Method by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("L") parameterTypes( @@ -139,7 +139,7 @@ internal val BytecodePatchContext.playerParameterBuilder2002Method by gettingFir /** * For targets 19.25 to 19.50. */ -internal val BytecodePatchContext.playerParameterBuilder1925Method by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playerParameterBuilder1925Method by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("L") parameterTypes( @@ -164,7 +164,7 @@ internal val BytecodePatchContext.playerParameterBuilder1925Method by gettingFir /** * For targets 19.01 to 19.24. */ -internal val BytecodePatchContext.playerParameterBuilderLegacyMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.playerParameterBuilderLegacyMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("L") parameterTypes( diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/Fingerprints.kt index 093a759b26..f10565959c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/Fingerprints.kt @@ -2,8 +2,8 @@ package app.revanced.patches.youtube.video.quality import app.revanced.patcher.accessFlags import app.revanced.patcher.composingFirstMethod -import app.revanced.patcher.firstMutableMethodDeclaratively -import app.revanced.patcher.gettingFirstMethodDeclaratively +import app.revanced.patcher.firstMethodDeclaratively +import app.revanced.patcher.gettingFirstImmutableMethodDeclaratively import app.revanced.patcher.name import app.revanced.patcher.opcodes import app.revanced.patcher.parameterTypes @@ -14,14 +14,14 @@ import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.ClassDef -internal val BytecodePatchContext.videoQualityItemOnClickParentMethod by gettingFirstMethodDeclaratively( +internal val BytecodePatchContext.videoQualityItemOnClickParentMethod by gettingFirstImmutableMethodDeclaratively( "VIDEO_QUALITIES_MENU_BOTTOM_SHEET_FRAGMENT", ) { returnType("V") } context(_: BytecodePatchContext) -internal fun ClassDef.getVideoQualityItemOnClickMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getVideoQualityItemOnClickMethod() = firstMethodDeclaratively { name("onItemClick") returnType("V") parameterTypes( diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/speed/custom/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/speed/custom/Fingerprints.kt index c18ffd2abb..c2db863a55 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/speed/custom/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/speed/custom/Fingerprints.kt @@ -7,24 +7,24 @@ import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.ClassDef -internal val BytecodePatchContext.getOldPlaybackSpeedsMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.getOldPlaybackSpeedsMethod by gettingFirstMethodDeclaratively( "menu_item_playback_speed", ) { parameterTypes("[L", "I") } context(_: BytecodePatchContext) -internal fun ClassDef.getShowOldPlaybackSpeedMenuMethod() = firstMutableMethodDeclaratively { +internal fun ClassDef.getShowOldPlaybackSpeedMenuMethod() = firstMethodDeclaratively { instructions( ResourceType.STRING("varispeed_unavailable_message"), ) } -internal val BytecodePatchContext.showOldPlaybackSpeedMenuExtensionMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.showOldPlaybackSpeedMenuExtensionMethod by gettingFirstMethodDeclaratively { name("showOldPlaybackSpeedMenu") } -internal val BytecodePatchContext.serverSideMaxSpeedFeatureFlagMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.serverSideMaxSpeedFeatureFlagMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("Z") instructions( @@ -49,7 +49,7 @@ internal val BytecodePatchContext.speedArrayGeneratorMethodMatch by composingFir /** * 20.34+ */ -internal val BytecodePatchContext.speedLimiterMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.speedLimiterMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes("F", "Lcom/google/android/libraries/youtube/innertube/model/media/PlayerConfigModel;") @@ -62,7 +62,7 @@ internal val BytecodePatchContext.speedLimiterMethod by gettingFirstMutableMetho /** * 20.33 and lower. */ -internal val BytecodePatchContext.speedLimiterLegacyMethod by gettingFirstMutableMethodDeclaratively { +internal val BytecodePatchContext.speedLimiterLegacyMethod by gettingFirstMethodDeclaratively { accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) returnType("V") parameterTypes("F") diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/speed/remember/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/speed/remember/Fingerprints.kt index 6f10b2dd5b..51e43993dd 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/speed/remember/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/speed/remember/Fingerprints.kt @@ -3,7 +3,7 @@ package app.revanced.patches.youtube.video.speed.remember import app.revanced.patcher.* import app.revanced.patcher.patch.BytecodePatchContext -internal val BytecodePatchContext.initializePlaybackSpeedValuesMethod by gettingFirstMutableMethodDeclaratively( +internal val BytecodePatchContext.initializePlaybackSpeedValuesMethod by gettingFirstMethodDeclaratively( "menu_item_playback_speed", ) { parameterTypes("[L", "I") diff --git a/patches/src/main/kotlin/app/revanced/util/BytecodeUtils.kt b/patches/src/main/kotlin/app/revanced/util/BytecodeUtils.kt index b29c2485dd..8ffe3e029f 100644 --- a/patches/src/main/kotlin/app/revanced/util/BytecodeUtils.kt +++ b/patches/src/main/kotlin/app/revanced/util/BytecodeUtils.kt @@ -528,7 +528,7 @@ fun BytecodePatchContext.traverseClassHierarchy(targetClass: MutableClassDef, ca targetClass.superclass ?: return - firstMutableClassDefOrNull(targetClass.superclass!!)?.let { + firstClassDefOrNull(targetClass.superclass!!)?.let { traverseClassHierarchy(it, callback) } } @@ -807,7 +807,7 @@ fun BytecodePatchContext.forEachInstructionAsSequence( } }.forEach { (method, matches) -> - val method = firstMutableMethod(method) + val method = firstMethod(method) val matches = matches.toCollection(ArrayDeque()) while (!matches.isEmpty()) transform(method, matches.removeLast()) @@ -1216,7 +1216,7 @@ internal fun BytecodePatchContext.addStaticFieldToExtension( objectClass: String, smaliInstructions: String, ) { - val mutableClass = firstMutableClassDef(type) + val mutableClass = firstClassDef(type) val objectCall = "$mutableClass->$fieldName:$objectClass" mutableClass.apply {