From 63b0227e2a29efa51e0f885db2bf9d207bb81271 Mon Sep 17 00:00:00 2001 From: inotia00 Date: Mon, 24 Jul 2023 04:41:02 +0900 Subject: [PATCH] feat: generate an exception when an invalid value is entered --- .../name/patch/CustomBrandingNamePatch.kt | 2 +- .../name/patch/CustomBrandingNamePatch.kt | 15 +++++---------- .../utils/microg/bytecode/patch/MicroGPatch.kt | 15 +++++++++++---- .../microg/resource/patch/MicroGResourcePatch.kt | 11 ++++++++--- .../name/patch/CustomBrandingNamePatch.kt | 8 +++----- .../youtube/layout/theme/patch/ThemePatch.kt | 6 +++++- .../microg/bytecode/patch/MicroGBytecodePatch.kt | 7 ++++++- .../utils/microg/resource/patch/MicroGPatch.kt | 7 ++++++- 8 files changed, 45 insertions(+), 26 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/microg/layout/branding/name/patch/CustomBrandingNamePatch.kt b/src/main/kotlin/app/revanced/patches/microg/layout/branding/name/patch/CustomBrandingNamePatch.kt index 9375a768e..6fa103053 100644 --- a/src/main/kotlin/app/revanced/patches/microg/layout/branding/name/patch/CustomBrandingNamePatch.kt +++ b/src/main/kotlin/app/revanced/patches/microg/layout/branding/name/patch/CustomBrandingNamePatch.kt @@ -68,7 +68,7 @@ class CustomBrandingNamePatch : ResourcePatch { } } - } ?: return PatchResultError("No app name provided") + } ?: return PatchResultError("Invalid app name.") return PatchResultSuccess() } diff --git a/src/main/kotlin/app/revanced/patches/music/layout/branding/name/patch/CustomBrandingNamePatch.kt b/src/main/kotlin/app/revanced/patches/music/layout/branding/name/patch/CustomBrandingNamePatch.kt index 080fdeeb0..4ff4848a2 100644 --- a/src/main/kotlin/app/revanced/patches/music/layout/branding/name/patch/CustomBrandingNamePatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/layout/branding/name/patch/CustomBrandingNamePatch.kt @@ -7,6 +7,7 @@ import app.revanced.patcher.data.ResourceContext import app.revanced.patcher.patch.OptionsContainer import app.revanced.patcher.patch.PatchOption import app.revanced.patcher.patch.PatchResult +import app.revanced.patcher.patch.PatchResultError import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.ResourcePatch import app.revanced.patcher.patch.annotations.DependsOn @@ -28,17 +29,11 @@ import app.revanced.patches.music.utils.fix.decoding.patch.DecodingPatch class CustomBrandingNamePatch : ResourcePatch { override fun execute(context: ResourceContext): PatchResult { - val longName = - if (MusicLongName != null) - MusicLongName - else - "ReVanced Extended Music" + val longName = MusicLongName + ?: throw PatchResultError("Invalid app name.") - val shortName = - if (MusicShortName != null) - MusicShortName - else - "RVX Music" + val shortName = MusicShortName + ?: throw PatchResultError("Invalid app name.") context.xmlEditor["res/values/strings.xml"].use { editor -> val document = editor.file diff --git a/src/main/kotlin/app/revanced/patches/music/utils/microg/bytecode/patch/MicroGPatch.kt b/src/main/kotlin/app/revanced/patches/music/utils/microg/bytecode/patch/MicroGPatch.kt index 9058d6860..5919339b1 100644 --- a/src/main/kotlin/app/revanced/patches/music/utils/microg/bytecode/patch/MicroGPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/utils/microg/bytecode/patch/MicroGPatch.kt @@ -6,6 +6,7 @@ import app.revanced.patcher.annotation.Version import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchResult +import app.revanced.patcher.patch.PatchResultError import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patcher.patch.annotations.Patch @@ -55,8 +56,14 @@ class MicroGPatch : BytecodePatch( // - "com.google.android.gms.phenotype.UPDATE", // - "com.google.android.gms.phenotype", override fun execute(context: BytecodeContext): PatchResult { - val packageNameYouTube = PackageNamePatch.YouTubePackageName!! - val packageNameMusic = PackageNamePatch.MusicPackageName!! + val youtubePackageName = PackageNamePatch.YouTubePackageName + ?: throw PatchResultError("Invalid package name.") + + val musicPackageName = PackageNamePatch.MusicPackageName + ?: throw PatchResultError("Invalid package name.") + + if (youtubePackageName == YOUTUBE_PACKAGE_NAME || musicPackageName == MUSIC_PACKAGE_NAME) + throw PatchResultError("Original package name is not available as package name for MicroG build.") // apply common microG patch MicroGBytecodeHelper.patchBytecode( @@ -64,13 +71,13 @@ class MicroGPatch : BytecodePatch( arrayOf( MicroGBytecodeHelper.packageNameTransform( YOUTUBE_PACKAGE_NAME, - packageNameYouTube + youtubePackageName ) ), MicroGBytecodeHelper.PrimeMethodTransformationData( PrimeFingerprint, MUSIC_PACKAGE_NAME, - packageNameMusic + musicPackageName ), listOf( ServiceCheckFingerprint, diff --git a/src/main/kotlin/app/revanced/patches/music/utils/microg/resource/patch/MicroGResourcePatch.kt b/src/main/kotlin/app/revanced/patches/music/utils/microg/resource/patch/MicroGResourcePatch.kt index d70156592..49e02c152 100644 --- a/src/main/kotlin/app/revanced/patches/music/utils/microg/resource/patch/MicroGResourcePatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/utils/microg/resource/patch/MicroGResourcePatch.kt @@ -2,6 +2,7 @@ package app.revanced.patches.music.utils.microg.resource.patch import app.revanced.patcher.data.ResourceContext import app.revanced.patcher.patch.PatchResult +import app.revanced.patcher.patch.PatchResultError import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.ResourcePatch import app.revanced.patcher.patch.annotations.DependsOn @@ -16,12 +17,16 @@ import app.revanced.util.resources.MusicResourceHelper.setMicroG @DependsOn([PackageNamePatch::class]) class MicroGResourcePatch : ResourcePatch { override fun execute(context: ResourceContext): PatchResult { - val packageNameMusic = PackageNamePatch.MusicPackageName!! + val packageName = PackageNamePatch.MusicPackageName + ?: throw PatchResultError("Invalid package name.") + + if (packageName == MUSIC_PACKAGE_NAME) + throw PatchResultError("Original package name is not available as package name for MicroG build.") // update manifest context.patchManifest( MUSIC_PACKAGE_NAME, - packageNameMusic + packageName ) // add metadata to the manifest @@ -30,7 +35,7 @@ class MicroGResourcePatch : ResourcePatch { SPOOFED_PACKAGE_SIGNATURE ) - context.setMicroG(packageNameMusic) + context.setMicroG(packageName) return PatchResultSuccess() } diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/branding/name/patch/CustomBrandingNamePatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/branding/name/patch/CustomBrandingNamePatch.kt index 6d97956e6..b35fc2451 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/branding/name/patch/CustomBrandingNamePatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/branding/name/patch/CustomBrandingNamePatch.kt @@ -7,6 +7,7 @@ import app.revanced.patcher.data.ResourceContext import app.revanced.patcher.patch.OptionsContainer import app.revanced.patcher.patch.PatchOption import app.revanced.patcher.patch.PatchResult +import app.revanced.patcher.patch.PatchResultError import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.ResourcePatch import app.revanced.patcher.patch.annotations.DependsOn @@ -29,11 +30,8 @@ import app.revanced.util.resources.ResourceHelper.updatePatchStatusLabel class CustomBrandingNamePatch : ResourcePatch { override fun execute(context: ResourceContext): PatchResult { - val appName = - if (YouTubeAppName != null) - YouTubeAppName - else - "ReVanced Extended" + val appName = YouTubeAppName + ?: throw PatchResultError("Invalid app name.") context.xmlEditor["res/values/strings.xml"].use { editor -> val document = editor.file diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/theme/patch/ThemePatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/theme/patch/ThemePatch.kt index 0c3fce787..01fa0f959 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/layout/theme/patch/ThemePatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/layout/theme/patch/ThemePatch.kt @@ -7,6 +7,7 @@ import app.revanced.patcher.data.ResourceContext import app.revanced.patcher.patch.OptionsContainer import app.revanced.patcher.patch.PatchOption import app.revanced.patcher.patch.PatchResult +import app.revanced.patcher.patch.PatchResultError import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.ResourcePatch import app.revanced.patcher.patch.annotations.DependsOn @@ -41,6 +42,9 @@ class ThemePatch : ResourcePatch { } private fun ResourceContext.setTheme(valuesPath: String) { + val darkThemeColor = darkThemeBackgroundColor + ?: throw PatchResultError("Invalid color.") + this.xmlEditor["res/$valuesPath/colors.xml"].use { editor -> val resourcesNode = editor.file.getElementsByTagName("resources").item(0) as Element @@ -49,7 +53,7 @@ class ThemePatch : ResourcePatch { node.textContent = when (node.getAttribute("name")) { "yt_black0", "yt_black1", "yt_black1_opacity95", "yt_black1_opacity98", "yt_black2", "yt_black3", - "yt_black4", "yt_status_bar_background_dark", "material_grey_850" -> darkThemeBackgroundColor + "yt_black4", "yt_status_bar_background_dark", "material_grey_850" -> darkThemeColor else -> continue } diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/microg/bytecode/patch/MicroGBytecodePatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/microg/bytecode/patch/MicroGBytecodePatch.kt index 24547ebb6..62a9d0c9b 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/microg/bytecode/patch/MicroGBytecodePatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/microg/bytecode/patch/MicroGBytecodePatch.kt @@ -3,6 +3,7 @@ package app.revanced.patches.youtube.utils.microg.bytecode.patch import app.revanced.patcher.data.BytecodeContext import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchResult +import app.revanced.patcher.patch.PatchResultError import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.annotations.DependsOn import app.revanced.patches.shared.patch.packagename.PackageNamePatch @@ -37,7 +38,11 @@ class MicroGBytecodePatch : BytecodePatch( ) { override fun execute(context: BytecodeContext): PatchResult { - val packageName = PackageNamePatch.YouTubePackageName!! + val packageName = PackageNamePatch.YouTubePackageName + ?: throw PatchResultError("Invalid package name.") + + if (packageName == PACKAGE_NAME) + throw PatchResultError("Original package name is not available as package name for MicroG build.") // apply common microG patch MicroGBytecodeHelper.patchBytecode( diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/microg/resource/patch/MicroGPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/microg/resource/patch/MicroGPatch.kt index c708f0b27..47b084595 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/microg/resource/patch/MicroGPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/microg/resource/patch/MicroGPatch.kt @@ -5,6 +5,7 @@ import app.revanced.patcher.annotation.Name import app.revanced.patcher.annotation.Version import app.revanced.patcher.data.ResourceContext import app.revanced.patcher.patch.PatchResult +import app.revanced.patcher.patch.PatchResultError import app.revanced.patcher.patch.PatchResultSuccess import app.revanced.patcher.patch.ResourcePatch import app.revanced.patcher.patch.annotations.DependsOn @@ -36,7 +37,11 @@ import app.revanced.util.resources.ResourceHelper.setMicroG class MicroGPatch : ResourcePatch { override fun execute(context: ResourceContext): PatchResult { - val packageName = PackageNamePatch.YouTubePackageName!! + val packageName = PackageNamePatch.YouTubePackageName + ?: throw PatchResultError("Invalid package name.") + + if (packageName == PACKAGE_NAME) + throw PatchResultError("Original package name is not available as package name for MicroG build.") /** * Add settings