From 84c99f332ef60072b243b06b0b95c132269f4d02 Mon Sep 17 00:00:00 2001 From: nathch Date: Fri, 27 Dec 2019 23:54:25 +0000 Subject: [PATCH] Remove duplicate code in initializing transports Use enforceCallingOrSelfPermission which is the same as enforceCallingPermission except it grants own permissions when not processing an IPC. Also remove unused private field from KeyValueBackupTask Bug: 146939599 Bug: 136738613 Test: 1) adb shell bmgr enable true 2) adb shell bmgr enable false 3) adb shell am broadcast -a "android.app.backup.intent.INIT" logcat is as expected: BackupManagerService: Backup enabled => false BackupManagerService: Running a device init; 3 pending BackupManagerService: initializeTransport(): [com.android.localtransport/.LocalTransport, com.google.android.gms/.backup.migrate.service.D2dTransport, com.google.android.gms/.backup.BackupTransportService] BackupManagerService: Initializing (wiping) backup transport storage: com.android.localtransport/.LocalTransport .... BackupManagerService: Initializing (wiping) backup transport storage: com.google.android.gms/.backup.migrate.service.D2dTransport ... BackupManagerService: Initializing (wiping) backup transport storage: com.google.android.gms/.backup.BackupTransportService Change-Id: I98d87f3163cd7fbc1f7aa6712ec421cc8efd5d29 --- .../server/backup/UserBackupManagerService.java | 2 +- .../backup/internal/RunInitializeReceiver.java | 15 +-------------- .../backup/keyvalue/KeyValueBackupTask.java | 3 --- 3 files changed, 2 insertions(+), 18 deletions(-) diff --git a/services/backup/java/com/android/server/backup/UserBackupManagerService.java b/services/backup/java/com/android/server/backup/UserBackupManagerService.java index 56b345bb13245..b36f46c45a34e 100644 --- a/services/backup/java/com/android/server/backup/UserBackupManagerService.java +++ b/services/backup/java/com/android/server/backup/UserBackupManagerService.java @@ -2409,7 +2409,7 @@ public class UserBackupManagerService { /** Run an initialize operation for the given transport. */ public void initializeTransports(String[] transportNames, IBackupObserver observer) { - mContext.enforceCallingPermission(android.Manifest.permission.BACKUP, + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.BACKUP, "initializeTransport"); Slog.v(TAG, "initializeTransport(): " + Arrays.asList(transportNames)); diff --git a/services/backup/java/com/android/server/backup/internal/RunInitializeReceiver.java b/services/backup/java/com/android/server/backup/internal/RunInitializeReceiver.java index 96d61e5755c89..160124b6f1d3b 100644 --- a/services/backup/java/com/android/server/backup/internal/RunInitializeReceiver.java +++ b/services/backup/java/com/android/server/backup/internal/RunInitializeReceiver.java @@ -53,21 +53,8 @@ public class RunInitializeReceiver extends BroadcastReceiver { if (pendingInits.size() > 0) { String[] transports = pendingInits.toArray(new String[pendingInits.size()]); - mUserBackupManagerService.clearPendingInits(); - - UserBackupManagerService.BackupWakeLock wakelock = - mUserBackupManagerService.getWakelock(); - wakelock.acquire(); - OnTaskFinishedListener listener = caller -> wakelock.release(); - - Runnable task = - new PerformInitializeTask( - mUserBackupManagerService, - transports, - /* observer */ null, - listener); - mUserBackupManagerService.getBackupHandler().post(task); + mUserBackupManagerService.initializeTransports(transports, null); } } } 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 ac006df7f475b..94921186441a1 100644 --- a/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java +++ b/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java @@ -57,7 +57,6 @@ import com.android.server.backup.BackupAgentTimeoutParameters; import com.android.server.backup.BackupRestoreTask; import com.android.server.backup.DataChangedJournal; import com.android.server.backup.KeyValueBackupJob; -import com.android.server.backup.TransportManager; import com.android.server.backup.UserBackupManagerService; import com.android.server.backup.fullbackup.PerformFullTransportBackupTask; import com.android.server.backup.internal.OnTaskFinishedListener; @@ -233,7 +232,6 @@ public class KeyValueBackupTask implements BackupRestoreTask, Runnable { private final UserBackupManagerService mBackupManagerService; private final PackageManager mPackageManager; - private final TransportManager mTransportManager; private final TransportClient mTransportClient; private final BackupAgentTimeoutParameters mAgentTimeoutParameters; private final KeyValueBackupReporter mReporter; @@ -300,7 +298,6 @@ public class KeyValueBackupTask implements BackupRestoreTask, Runnable { boolean userInitiated, boolean nonIncremental) { mBackupManagerService = backupManagerService; - mTransportManager = backupManagerService.getTransportManager(); mPackageManager = backupManagerService.getPackageManager(); mTransportClient = transportClient; mOriginalQueue = queue;