diff --git a/app/src/main/java/com/stevesoltys/seedvault/transport/backup/BackupCoordinator.kt b/app/src/main/java/com/stevesoltys/seedvault/transport/backup/BackupCoordinator.kt index 17a66541..70f283a4 100644 --- a/app/src/main/java/com/stevesoltys/seedvault/transport/backup/BackupCoordinator.kt +++ b/app/src/main/java/com/stevesoltys/seedvault/transport/backup/BackupCoordinator.kt @@ -335,10 +335,12 @@ internal class BackupCoordinator( TAG, "Cancel full backup of ${packageInfo.packageName}" + " because of ${state.cancelReason}" ) - onPackageBackupError(packageInfo, BackupType.FULL) + // don't bother with system apps that have no data + val ignoreApp = state.cancelReason == NO_DATA && packageInfo.isSystemApp() + if (!ignoreApp) onPackageBackupError(packageInfo, BackupType.FULL) val token = settingsManager.getToken() ?: error("no token in cancelFullBackup") val salt = metadataManager.salt - full.cancelFullBackup(token, salt) + full.cancelFullBackup(token, salt, ignoreApp) } // Clear and Finish @@ -482,8 +484,6 @@ internal class BackupCoordinator( } private suspend fun onPackageBackupError(packageInfo: PackageInfo, type: BackupType) { - // don't bother with system apps that have no data - if (state.cancelReason == NO_DATA && packageInfo.isSystemApp()) return val packageName = packageInfo.packageName try { plugin.getMetadataOutputStream().use { diff --git a/app/src/main/java/com/stevesoltys/seedvault/transport/backup/FullBackup.kt b/app/src/main/java/com/stevesoltys/seedvault/transport/backup/FullBackup.kt index 06ebbbaa..247de6db 100644 --- a/app/src/main/java/com/stevesoltys/seedvault/transport/backup/FullBackup.kt +++ b/app/src/main/java/com/stevesoltys/seedvault/transport/backup/FullBackup.kt @@ -177,11 +177,11 @@ internal class FullBackup( plugin.removeData(token, name) } - suspend fun cancelFullBackup(token: Long, salt: String) { + suspend fun cancelFullBackup(token: Long, salt: String, ignoreApp: Boolean) { Log.i(TAG, "Cancel full backup") val state = this.state ?: throw AssertionError("No state when canceling") try { - clearBackupData(state.packageInfo, token, salt) + if (!ignoreApp) clearBackupData(state.packageInfo, token, salt) } catch (e: IOException) { Log.w(TAG, "Error cancelling full backup for ${state.packageName}", e) } diff --git a/app/src/test/java/com/stevesoltys/seedvault/transport/backup/BackupCoordinatorTest.kt b/app/src/test/java/com/stevesoltys/seedvault/transport/backup/BackupCoordinatorTest.kt index 915f4de1..15a5ee0c 100644 --- a/app/src/test/java/com/stevesoltys/seedvault/transport/backup/BackupCoordinatorTest.kt +++ b/app/src/test/java/com/stevesoltys/seedvault/transport/backup/BackupCoordinatorTest.kt @@ -326,7 +326,7 @@ internal class BackupCoordinatorTest : BackupTest() { BackupType.FULL ) } just Runs - coEvery { full.cancelFullBackup(token, metadata.salt) } just Runs + coEvery { full.cancelFullBackup(token, metadata.salt, false) } just Runs every { settingsManager.getStorage() } returns storage every { metadataOutputStream.close() } just Runs @@ -375,7 +375,7 @@ internal class BackupCoordinatorTest : BackupTest() { BackupType.FULL ) } just Runs - coEvery { full.cancelFullBackup(token, metadata.salt) } just Runs + coEvery { full.cancelFullBackup(token, metadata.salt, false) } just Runs every { settingsManager.getStorage() } returns storage every { metadataOutputStream.close() } just Runs diff --git a/app/src/test/java/com/stevesoltys/seedvault/transport/backup/FullBackupTest.kt b/app/src/test/java/com/stevesoltys/seedvault/transport/backup/FullBackupTest.kt index ed9dd25c..2d03dd7e 100644 --- a/app/src/test/java/com/stevesoltys/seedvault/transport/backup/FullBackupTest.kt +++ b/app/src/test/java/com/stevesoltys/seedvault/transport/backup/FullBackupTest.kt @@ -237,7 +237,7 @@ internal class FullBackupTest : BackupTest() { assertEquals(TRANSPORT_OK, backup.performFullBackup(packageInfo, data, 0, token, salt)) assertTrue(backup.hasState()) - backup.cancelFullBackup(token, salt) + backup.cancelFullBackup(token, salt, false) assertFalse(backup.hasState()) } @@ -251,7 +251,7 @@ internal class FullBackupTest : BackupTest() { assertEquals(TRANSPORT_OK, backup.performFullBackup(packageInfo, data, 0, token, salt)) assertTrue(backup.hasState()) - backup.cancelFullBackup(token, salt) + backup.cancelFullBackup(token, salt, false) assertFalse(backup.hasState()) }