diff options
| -rw-r--r-- | services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java | 4 | ||||
| -rw-r--r-- | services/robotests/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java | 11 |
2 files changed, 14 insertions, 1 deletions
diff --git a/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java b/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java index 113e2b67d04e..1cb99334dfeb 100644 --- a/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java +++ b/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java @@ -756,7 +756,9 @@ public class KeyValueBackupTask implements BackupRestoreTask, Runnable { BackupObserverUtils.sendBackupFinished(mObserver, BackupManager.ERROR_BACKUP_CANCELLED); } else { mListener.onFinished(callerLogString); - mFullBackupTask.unregisterTask(); + if (mFullBackupTask != null) { + mFullBackupTask.unregisterTask(); + } switch (mStatus) { case BackupTransport.TRANSPORT_OK: case BackupTransport.TRANSPORT_QUOTA_EXCEEDED: diff --git a/services/robotests/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java b/services/robotests/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java index fde9bc898979..de22201e3874 100644 --- a/services/robotests/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java +++ b/services/robotests/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java @@ -1584,6 +1584,17 @@ public class KeyValueBackupTaskTest { new RuntimeException().toString()); } + @Test + public void testRunTask_whenBackupRunning_doesNotThrow() throws Exception { + TransportMock transportMock = setUpInitializedTransport(mTransport); + when(mBackupManagerService.isBackupOperationInProgress()).thenReturn(true); + KeyValueBackupTask task = + createKeyValueBackupTask( + transportMock.transportClient, mTransport.transportDirName); + + runTask(task); + } + private void runTask(KeyValueBackupTask task) { // Pretend we are not on the main-thread to prevent RemoteCall from complaining mShadowMainLooper.setCurrentThread(false); |