Skip to content

Commit b314774

Browse files
committed
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.
1 parent 39eb259 commit b314774

4 files changed

Lines changed: 20 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
**Added**
77
- Add `--summary-only` flag.
8+
- Support diffing uses-permission counts.
89

910
**Fixed**
1011
- Significantly improve `.jar` diff performance.

formats/api/formats.api

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,9 @@ public final class com/jakewharton/diffuse/format/Aar$Companion {
4444
public final class com/jakewharton/diffuse/format/AndroidManifest {
4545
public static final field Companion Lcom/jakewharton/diffuse/format/AndroidManifest$Companion;
4646
public static final field NAME Ljava/lang/String;
47-
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
47+
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
4848
public final fun getPackageName ()Ljava/lang/String;
49+
public final fun getUsesPermissionCount ()I
4950
public final fun getVersionCode ()Ljava/lang/Long;
5051
public final fun getVersionName ()Ljava/lang/String;
5152
public final fun getXml ()Ljava/lang/String;

formats/src/main/kotlin/com/jakewharton/diffuse/format/AndroidManifest.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ private constructor(
3737
val packageName: String,
3838
val versionName: String?,
3939
val versionCode: Long?,
40+
val usesPermissionCount: Int,
4041
) {
4142
companion object {
4243
const val NAME = "AndroidManifest.xml"
@@ -176,8 +177,15 @@ private constructor(
176177
} else {
177178
null
178179
}
179-
180-
return AndroidManifest(toFormattedXml(), packageName, versionName, versionCode)
180+
val usesPermissionCount = manifestElement.getElementsByTagName("uses-permission").length
181+
182+
return AndroidManifest(
183+
toFormattedXml(),
184+
packageName,
185+
versionName,
186+
versionCode,
187+
usesPermissionCount,
188+
)
181189
}
182190

183191
private fun Document.toFormattedXml() = buildString {

reports/src/main/kotlin/com/jakewharton/diffuse/diff/ManifestDiff.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ internal class ManifestDiff(val oldManifest: AndroidManifest, val newManifest: A
99
internal val parsedPropertiesChanged =
1010
oldManifest.packageName != newManifest.packageName ||
1111
oldManifest.versionName != newManifest.versionName ||
12-
oldManifest.versionCode != newManifest.versionCode
12+
oldManifest.versionCode != newManifest.versionCode ||
13+
oldManifest.usesPermissionCount != newManifest.usesPermissionCount
1314

1415
val diff: List<String> = run {
1516
val oldLines = oldManifest.xml.lines()
@@ -36,6 +37,11 @@ internal fun ManifestDiff.toDetailReport() = buildString {
3637
row("package", oldManifest.packageName, newManifest.packageName)
3738
row("version code", oldManifest.versionCode, newManifest.versionCode)
3839
row("version name", oldManifest.versionName, newManifest.versionName)
40+
row(
41+
"uses-permission count",
42+
oldManifest.usesPermissionCount,
43+
newManifest.usesPermissionCount,
44+
)
3945
}
4046
)
4147
}

0 commit comments

Comments
 (0)