From 8763ab3178e3497954d2b8ef3cc2dde69a1dae24 Mon Sep 17 00:00:00 2001 From: Goooler Date: Tue, 30 Apr 2024 17:23:37 +0800 Subject: [PATCH] Support diffing uses-permission counts There might be significant differences in blame attribution for AndroidManifest.xml. We usually pay close attention to changes in versionCode, targetSdk, and the count of uses-permissions. Adding an extra line to display the result. --- .../kotlin/com/jakewharton/diffuse/format/AndroidManifest.kt | 4 +++- .../main/kotlin/com/jakewharton/diffuse/diff/ManifestDiff.kt | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/formats/src/main/kotlin/com/jakewharton/diffuse/format/AndroidManifest.kt b/formats/src/main/kotlin/com/jakewharton/diffuse/format/AndroidManifest.kt index 95091090..2774690f 100644 --- a/formats/src/main/kotlin/com/jakewharton/diffuse/format/AndroidManifest.kt +++ b/formats/src/main/kotlin/com/jakewharton/diffuse/format/AndroidManifest.kt @@ -36,6 +36,7 @@ class AndroidManifest private constructor( val packageName: String, val versionName: String?, val versionCode: Long?, + val usesPermissionCount: Int, ) { companion object { const val NAME = "AndroidManifest.xml" @@ -167,8 +168,9 @@ class AndroidManifest private constructor( } else { null } + val usesPermissionCount = manifestElement.getElementsByTagName("uses-permission").length - return AndroidManifest(toFormattedXml(), packageName, versionName, versionCode) + return AndroidManifest(toFormattedXml(), packageName, versionName, versionCode, usesPermissionCount) } private fun Document.toFormattedXml() = buildString { diff --git a/reports/src/main/kotlin/com/jakewharton/diffuse/diff/ManifestDiff.kt b/reports/src/main/kotlin/com/jakewharton/diffuse/diff/ManifestDiff.kt index 042d7001..314e5866 100644 --- a/reports/src/main/kotlin/com/jakewharton/diffuse/diff/ManifestDiff.kt +++ b/reports/src/main/kotlin/com/jakewharton/diffuse/diff/ManifestDiff.kt @@ -11,7 +11,8 @@ internal class ManifestDiff( ) { internal val parsedPropertiesChanged = oldManifest.packageName != newManifest.packageName || oldManifest.versionName != newManifest.versionName || - oldManifest.versionCode != newManifest.versionCode + oldManifest.versionCode != newManifest.versionCode || + oldManifest.usesPermissionCount != newManifest.usesPermissionCount val diff: List = run { val oldLines = oldManifest.xml.lines() @@ -34,6 +35,7 @@ internal fun ManifestDiff.toDetailReport() = buildString { row("package", oldManifest.packageName, newManifest.packageName) row("version code", oldManifest.versionCode, newManifest.versionCode) row("version name", oldManifest.versionName, newManifest.versionName) + row("uses-permission count", oldManifest.usesPermissionCount, newManifest.usesPermissionCount) }, ) }