From 59ab5f49340a547e84bdb5b68f5e774953eddc8f Mon Sep 17 00:00:00 2001 From: shaoweishen Date: Mon, 23 Apr 2018 17:22:57 +0800 Subject: [PATCH] Fix [kv-3]PerformBackupTask using last package status to decide status sent to IBackupObserver. We only report failure to IBackupObserver.backupFinished() when we meet transport failure, but now it will report failure when the last package meet TRANSPORT_PACKAGE_REJECTED or TRANSPORT_QUOTA_EXCEEDED, add above two states in FINAL to prevent the situation, and update related test, also javadoc of IBackupObserver. Bug: 77271953 Test: make -j RunFrameworksServicesRoboTests ROBOTEST_FILTER=PerformBackupTaskTest Change-Id: Ic2bfdf9f50d700f8ccb509e081ae8e0afb186020 --- .../android/server/backup/internal/PerformBackupTask.java | 2 ++ .../com/android/server/backup/PerformBackupTaskTest.java | 7 +++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/services/backup/java/com/android/server/backup/internal/PerformBackupTask.java b/services/backup/java/com/android/server/backup/internal/PerformBackupTask.java index 90baea0338e5c..cc7304a93bbbc 100644 --- a/services/backup/java/com/android/server/backup/internal/PerformBackupTask.java +++ b/services/backup/java/com/android/server/backup/internal/PerformBackupTask.java @@ -629,6 +629,8 @@ public class PerformBackupTask implements BackupRestoreTask { mFullBackupTask.unregisterTask(); switch (mStatus) { case BackupTransport.TRANSPORT_OK: + case BackupTransport.TRANSPORT_QUOTA_EXCEEDED: + case BackupTransport.TRANSPORT_PACKAGE_REJECTED: BackupObserverUtils.sendBackupFinished(mObserver, BackupManager.SUCCESS); break; diff --git a/services/robotests/src/com/android/server/backup/PerformBackupTaskTest.java b/services/robotests/src/com/android/server/backup/PerformBackupTaskTest.java index 949c504d64dcd..b1dad5a879578 100644 --- a/services/robotests/src/com/android/server/backup/PerformBackupTaskTest.java +++ b/services/robotests/src/com/android/server/backup/PerformBackupTaskTest.java @@ -419,7 +419,7 @@ public class PerformBackupTaskTest { runTask(task); verify(mObserver).onResult(PACKAGE_1, BackupManager.ERROR_TRANSPORT_PACKAGE_REJECTED); - verify(mObserver).backupFinished(BackupManager.ERROR_TRANSPORT_ABORTED); + verify(mObserver).backupFinished(BackupManager.SUCCESS); } @Test @@ -467,8 +467,7 @@ public class PerformBackupTaskTest { verify(mObserver).onResult(PACKAGE_1, BackupManager.SUCCESS); verify(mObserver).onResult(PACKAGE_2, BackupManager.ERROR_TRANSPORT_PACKAGE_REJECTED); - // TODO: Should we return the status of the last? - verify(mObserver).backupFinished(BackupManager.ERROR_TRANSPORT_ABORTED); + verify(mObserver).backupFinished(BackupManager.SUCCESS); } @Test @@ -488,7 +487,7 @@ public class PerformBackupTaskTest { runTask(task); verify(mObserver).onResult(PACKAGE_1, BackupManager.ERROR_TRANSPORT_QUOTA_EXCEEDED); - verify(mObserver).backupFinished(BackupManager.ERROR_TRANSPORT_ABORTED); + verify(mObserver).backupFinished(BackupManager.SUCCESS); verify(agentMock.agent).onQuotaExceeded(anyLong(), anyLong()); }