Loading core/java/android/app/backup/BackupManager.java +6 −3 Original line number Diff line number Diff line Loading @@ -205,13 +205,16 @@ public class BackupManager { @Retention(RetentionPolicy.SOURCE) @IntDef({ OperationType.BACKUP, OperationType.MIGRATION OperationType.MIGRATION, OperationType.ADB_BACKUP, }) public @interface OperationType { // A regular backup / restore operation. // A backup / restore to / from an off-device location, e.g. cloud. int BACKUP = 0; // A full migration: all app data for non-system apps is eligible. // A direct transfer to another device. int MIGRATION = 1; // Backup via adb, data saved on the host machine. int ADB_BACKUP = 3; } private Context mContext; Loading core/java/android/content/pm/PackageManager.java +8 −0 Original line number Diff line number Diff line Loading @@ -4131,6 +4131,14 @@ public abstract class PackageManager { */ public static final int UNSTARTABLE_REASON_INSUFFICIENT_STORAGE = 2; /** * A manifest property to control app's participation in {@code adb backup}. Should only * be used by system / privileged apps. * * @hide */ public static final String PROPERTY_ALLOW_ADB_BACKUP = "android.backup.ALLOW_ADB_BACKUP"; /** {@hide} */ public int getUserId() { return UserHandle.myUserId(); Loading services/backup/Android.bp +1 −1 Original line number Diff line number Diff line Loading @@ -10,5 +10,5 @@ java_library_static { defaults: ["platform_service_defaults"], srcs: [":services.backup-sources"], libs: ["services.core"], static_libs: ["backuplib"], static_libs: ["backuplib", "app-compat-annotations"], } services/backup/java/com/android/server/backup/UserBackupManagerService.java +3 −1 Original line number Diff line number Diff line Loading @@ -3030,9 +3030,11 @@ public class UserBackupManagerService { } Slog.i(TAG, addUserIdToLogMessage(mUserId, "Beginning adb backup...")); BackupEligibilityRules eligibilityRules = getEligibilityRulesForOperation( OperationType.ADB_BACKUP); AdbBackupParams params = new AdbBackupParams(fd, includeApks, includeObbs, includeShared, doWidgets, doAllApps, includeSystem, compress, doKeyValue, pkgList, mScheduledBackupEligibility); pkgList, eligibilityRules); final int token = generateRandomIntegerToken(); synchronized (mAdbBackupRestoreConfirmations) { mAdbBackupRestoreConfirmations.put(token, params); Loading services/backup/java/com/android/server/backup/restore/PerformAdbRestoreTask.java +6 −3 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import static com.android.server.backup.BackupPasswordManager.PBKDF_FALLBACK; import static com.android.server.backup.UserBackupManagerService.BACKUP_FILE_HEADER_MAGIC; import static com.android.server.backup.UserBackupManagerService.BACKUP_FILE_VERSION; import android.app.backup.BackupManager; import android.app.backup.IFullBackupRestoreObserver; import android.content.pm.PackageManagerInternal; import android.os.ParcelFileDescriptor; Loading Loading @@ -104,11 +105,13 @@ public class PerformAdbRestoreTask implements Runnable { return; } BackupEligibilityRules eligibilityRules = new BackupEligibilityRules( mBackupManagerService.getPackageManager(), LocalServices.getService(PackageManagerInternal.class), mBackupManagerService.getUserId(), BackupManager.OperationType.ADB_BACKUP); FullRestoreEngine mEngine = new FullRestoreEngine(mBackupManagerService, null, mObserver, null, null, true, 0 /*unused*/, true, BackupEligibilityRules.forBackup(mBackupManagerService.getPackageManager(), LocalServices.getService(PackageManagerInternal.class), mBackupManagerService.getUserId())); eligibilityRules); FullRestoreEngineThread mEngineThread = new FullRestoreEngineThread(mEngine, tarInputStream); mEngineThread.run(); Loading Loading
core/java/android/app/backup/BackupManager.java +6 −3 Original line number Diff line number Diff line Loading @@ -205,13 +205,16 @@ public class BackupManager { @Retention(RetentionPolicy.SOURCE) @IntDef({ OperationType.BACKUP, OperationType.MIGRATION OperationType.MIGRATION, OperationType.ADB_BACKUP, }) public @interface OperationType { // A regular backup / restore operation. // A backup / restore to / from an off-device location, e.g. cloud. int BACKUP = 0; // A full migration: all app data for non-system apps is eligible. // A direct transfer to another device. int MIGRATION = 1; // Backup via adb, data saved on the host machine. int ADB_BACKUP = 3; } private Context mContext; Loading
core/java/android/content/pm/PackageManager.java +8 −0 Original line number Diff line number Diff line Loading @@ -4131,6 +4131,14 @@ public abstract class PackageManager { */ public static final int UNSTARTABLE_REASON_INSUFFICIENT_STORAGE = 2; /** * A manifest property to control app's participation in {@code adb backup}. Should only * be used by system / privileged apps. * * @hide */ public static final String PROPERTY_ALLOW_ADB_BACKUP = "android.backup.ALLOW_ADB_BACKUP"; /** {@hide} */ public int getUserId() { return UserHandle.myUserId(); Loading
services/backup/Android.bp +1 −1 Original line number Diff line number Diff line Loading @@ -10,5 +10,5 @@ java_library_static { defaults: ["platform_service_defaults"], srcs: [":services.backup-sources"], libs: ["services.core"], static_libs: ["backuplib"], static_libs: ["backuplib", "app-compat-annotations"], }
services/backup/java/com/android/server/backup/UserBackupManagerService.java +3 −1 Original line number Diff line number Diff line Loading @@ -3030,9 +3030,11 @@ public class UserBackupManagerService { } Slog.i(TAG, addUserIdToLogMessage(mUserId, "Beginning adb backup...")); BackupEligibilityRules eligibilityRules = getEligibilityRulesForOperation( OperationType.ADB_BACKUP); AdbBackupParams params = new AdbBackupParams(fd, includeApks, includeObbs, includeShared, doWidgets, doAllApps, includeSystem, compress, doKeyValue, pkgList, mScheduledBackupEligibility); pkgList, eligibilityRules); final int token = generateRandomIntegerToken(); synchronized (mAdbBackupRestoreConfirmations) { mAdbBackupRestoreConfirmations.put(token, params); Loading
services/backup/java/com/android/server/backup/restore/PerformAdbRestoreTask.java +6 −3 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import static com.android.server.backup.BackupPasswordManager.PBKDF_FALLBACK; import static com.android.server.backup.UserBackupManagerService.BACKUP_FILE_HEADER_MAGIC; import static com.android.server.backup.UserBackupManagerService.BACKUP_FILE_VERSION; import android.app.backup.BackupManager; import android.app.backup.IFullBackupRestoreObserver; import android.content.pm.PackageManagerInternal; import android.os.ParcelFileDescriptor; Loading Loading @@ -104,11 +105,13 @@ public class PerformAdbRestoreTask implements Runnable { return; } BackupEligibilityRules eligibilityRules = new BackupEligibilityRules( mBackupManagerService.getPackageManager(), LocalServices.getService(PackageManagerInternal.class), mBackupManagerService.getUserId(), BackupManager.OperationType.ADB_BACKUP); FullRestoreEngine mEngine = new FullRestoreEngine(mBackupManagerService, null, mObserver, null, null, true, 0 /*unused*/, true, BackupEligibilityRules.forBackup(mBackupManagerService.getPackageManager(), LocalServices.getService(PackageManagerInternal.class), mBackupManagerService.getUserId())); eligibilityRules); FullRestoreEngineThread mEngineThread = new FullRestoreEngineThread(mEngine, tarInputStream); mEngineThread.run(); Loading