Loading core/java/com/android/server/backup/PermissionBackupHelper.java +7 −4 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.server.backup; import android.app.AppGlobals; import android.app.backup.BlobBackupHelper; import android.content.pm.IPackageManager; import android.os.UserHandle; import android.util.Slog; public class PermissionBackupHelper extends BlobBackupHelper { Loading @@ -32,8 +31,12 @@ public class PermissionBackupHelper extends BlobBackupHelper { // key under which the permission-grant state blob is committed to backup private static final String KEY_PERMISSIONS = "permissions"; public PermissionBackupHelper() { private final int mUserId; public PermissionBackupHelper(int userId) { super(STATE_VERSION, KEY_PERMISSIONS); mUserId = userId; } @Override Loading @@ -45,7 +48,7 @@ public class PermissionBackupHelper extends BlobBackupHelper { try { switch (key) { case KEY_PERMISSIONS: return pm.getPermissionGrantBackup(UserHandle.USER_SYSTEM); return pm.getPermissionGrantBackup(mUserId); default: Slog.w(TAG, "Unexpected backup key " + key); Loading @@ -65,7 +68,7 @@ public class PermissionBackupHelper extends BlobBackupHelper { try { switch (key) { case KEY_PERMISSIONS: pm.restorePermissionGrants(payload, UserHandle.USER_SYSTEM); pm.restorePermissionGrants(payload, mUserId); break; default: Loading core/java/com/android/server/backup/SystemBackupAgent.java +25 −18 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ package com.android.server.backup; import android.app.IWallpaperManager; import android.app.backup.BackupAgentHelper; import android.app.backup.BackupDataInput; import android.app.backup.BackupDataOutput; import android.app.backup.BackupHelper; import android.app.backup.FullBackup; import android.app.backup.FullBackupDataOutput; import android.app.backup.WallpaperBackupHelper; Loading @@ -31,8 +31,11 @@ import android.os.ServiceManager; import android.os.UserHandle; import android.util.Slog; import com.google.android.collect.Sets; import java.io.File; import java.io.IOException; import java.util.Set; /** * Backup agent for various system-managed data. Wallpapers are now handled by a Loading Loading @@ -77,20 +80,25 @@ public class SystemBackupAgent extends BackupAgentHelper { // Use old keys to keep legacy data compatibility and avoid writing two wallpapers private static final String WALLPAPER_IMAGE_KEY = WallpaperBackupHelper.WALLPAPER_IMAGE_KEY; private WallpaperBackupHelper mWallpaperHelper = null; private static final Set<String> sEligibleForMultiUser = Sets.newArraySet( PERMISSION_HELPER); private int mUserId = UserHandle.USER_SYSTEM; @Override public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) throws IOException { public void onCreate(UserHandle user) { super.onCreate(user); mUserId = user.getIdentifier(); addHelper(SYNC_SETTINGS_HELPER, new AccountSyncSettingsBackupHelper(this)); addHelper(PREFERRED_HELPER, new PreferredActivityBackupHelper()); addHelper(NOTIFICATION_HELPER, new NotificationBackupHelper(this)); addHelper(PERMISSION_HELPER, new PermissionBackupHelper()); addHelper(PERMISSION_HELPER, new PermissionBackupHelper(mUserId)); addHelper(USAGE_STATS_HELPER, new UsageStatsBackupHelper(this)); addHelper(SHORTCUT_MANAGER_HELPER, new ShortcutBackupHelper()); addHelper(ACCOUNT_MANAGER_HELPER, new AccountManagerBackupHelper()); addHelper(SLICES_HELPER, new SliceBackupHelper(this)); super.onBackup(oldState, data, newState); } @Override Loading @@ -103,26 +111,25 @@ public class SystemBackupAgent extends BackupAgentHelper { throws IOException { // Slot in a restore helper for the older wallpaper backup schema to support restore // from devices still generating data in that format. mWallpaperHelper = new WallpaperBackupHelper(this, new String[] { WALLPAPER_IMAGE_KEY} ); addHelper(WALLPAPER_HELPER, mWallpaperHelper); addHelper(WALLPAPER_HELPER, new WallpaperBackupHelper(this, new String[] { WALLPAPER_IMAGE_KEY})); // On restore, we also support a long-ago wallpaper data schema "system_files" addHelper("system_files", new WallpaperBackupHelper(this, new String[] { WALLPAPER_IMAGE_KEY} )); addHelper(SYNC_SETTINGS_HELPER, new AccountSyncSettingsBackupHelper(this)); addHelper(PREFERRED_HELPER, new PreferredActivityBackupHelper()); addHelper(NOTIFICATION_HELPER, new NotificationBackupHelper(this)); addHelper(PERMISSION_HELPER, new PermissionBackupHelper()); addHelper(USAGE_STATS_HELPER, new UsageStatsBackupHelper(this)); addHelper(SHORTCUT_MANAGER_HELPER, new ShortcutBackupHelper()); addHelper(ACCOUNT_MANAGER_HELPER, new AccountManagerBackupHelper()); addHelper(SLICES_HELPER, new SliceBackupHelper(this)); super.onRestore(data, appVersionCode, newState); } @Override public void addHelper(String keyPrefix, BackupHelper helper) { if (mUserId != UserHandle.USER_SYSTEM && !sEligibleForMultiUser.contains(keyPrefix)) { return; } super.addHelper(keyPrefix, helper); } /** * Support for 'adb restore' of legacy archives */ Loading Loading
core/java/com/android/server/backup/PermissionBackupHelper.java +7 −4 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.server.backup; import android.app.AppGlobals; import android.app.backup.BlobBackupHelper; import android.content.pm.IPackageManager; import android.os.UserHandle; import android.util.Slog; public class PermissionBackupHelper extends BlobBackupHelper { Loading @@ -32,8 +31,12 @@ public class PermissionBackupHelper extends BlobBackupHelper { // key under which the permission-grant state blob is committed to backup private static final String KEY_PERMISSIONS = "permissions"; public PermissionBackupHelper() { private final int mUserId; public PermissionBackupHelper(int userId) { super(STATE_VERSION, KEY_PERMISSIONS); mUserId = userId; } @Override Loading @@ -45,7 +48,7 @@ public class PermissionBackupHelper extends BlobBackupHelper { try { switch (key) { case KEY_PERMISSIONS: return pm.getPermissionGrantBackup(UserHandle.USER_SYSTEM); return pm.getPermissionGrantBackup(mUserId); default: Slog.w(TAG, "Unexpected backup key " + key); Loading @@ -65,7 +68,7 @@ public class PermissionBackupHelper extends BlobBackupHelper { try { switch (key) { case KEY_PERMISSIONS: pm.restorePermissionGrants(payload, UserHandle.USER_SYSTEM); pm.restorePermissionGrants(payload, mUserId); break; default: Loading
core/java/com/android/server/backup/SystemBackupAgent.java +25 −18 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ package com.android.server.backup; import android.app.IWallpaperManager; import android.app.backup.BackupAgentHelper; import android.app.backup.BackupDataInput; import android.app.backup.BackupDataOutput; import android.app.backup.BackupHelper; import android.app.backup.FullBackup; import android.app.backup.FullBackupDataOutput; import android.app.backup.WallpaperBackupHelper; Loading @@ -31,8 +31,11 @@ import android.os.ServiceManager; import android.os.UserHandle; import android.util.Slog; import com.google.android.collect.Sets; import java.io.File; import java.io.IOException; import java.util.Set; /** * Backup agent for various system-managed data. Wallpapers are now handled by a Loading Loading @@ -77,20 +80,25 @@ public class SystemBackupAgent extends BackupAgentHelper { // Use old keys to keep legacy data compatibility and avoid writing two wallpapers private static final String WALLPAPER_IMAGE_KEY = WallpaperBackupHelper.WALLPAPER_IMAGE_KEY; private WallpaperBackupHelper mWallpaperHelper = null; private static final Set<String> sEligibleForMultiUser = Sets.newArraySet( PERMISSION_HELPER); private int mUserId = UserHandle.USER_SYSTEM; @Override public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) throws IOException { public void onCreate(UserHandle user) { super.onCreate(user); mUserId = user.getIdentifier(); addHelper(SYNC_SETTINGS_HELPER, new AccountSyncSettingsBackupHelper(this)); addHelper(PREFERRED_HELPER, new PreferredActivityBackupHelper()); addHelper(NOTIFICATION_HELPER, new NotificationBackupHelper(this)); addHelper(PERMISSION_HELPER, new PermissionBackupHelper()); addHelper(PERMISSION_HELPER, new PermissionBackupHelper(mUserId)); addHelper(USAGE_STATS_HELPER, new UsageStatsBackupHelper(this)); addHelper(SHORTCUT_MANAGER_HELPER, new ShortcutBackupHelper()); addHelper(ACCOUNT_MANAGER_HELPER, new AccountManagerBackupHelper()); addHelper(SLICES_HELPER, new SliceBackupHelper(this)); super.onBackup(oldState, data, newState); } @Override Loading @@ -103,26 +111,25 @@ public class SystemBackupAgent extends BackupAgentHelper { throws IOException { // Slot in a restore helper for the older wallpaper backup schema to support restore // from devices still generating data in that format. mWallpaperHelper = new WallpaperBackupHelper(this, new String[] { WALLPAPER_IMAGE_KEY} ); addHelper(WALLPAPER_HELPER, mWallpaperHelper); addHelper(WALLPAPER_HELPER, new WallpaperBackupHelper(this, new String[] { WALLPAPER_IMAGE_KEY})); // On restore, we also support a long-ago wallpaper data schema "system_files" addHelper("system_files", new WallpaperBackupHelper(this, new String[] { WALLPAPER_IMAGE_KEY} )); addHelper(SYNC_SETTINGS_HELPER, new AccountSyncSettingsBackupHelper(this)); addHelper(PREFERRED_HELPER, new PreferredActivityBackupHelper()); addHelper(NOTIFICATION_HELPER, new NotificationBackupHelper(this)); addHelper(PERMISSION_HELPER, new PermissionBackupHelper()); addHelper(USAGE_STATS_HELPER, new UsageStatsBackupHelper(this)); addHelper(SHORTCUT_MANAGER_HELPER, new ShortcutBackupHelper()); addHelper(ACCOUNT_MANAGER_HELPER, new AccountManagerBackupHelper()); addHelper(SLICES_HELPER, new SliceBackupHelper(this)); super.onRestore(data, appVersionCode, newState); } @Override public void addHelper(String keyPrefix, BackupHelper helper) { if (mUserId != UserHandle.USER_SYSTEM && !sEligibleForMultiUser.contains(keyPrefix)) { return; } super.addHelper(keyPrefix, helper); } /** * Support for 'adb restore' of legacy archives */ Loading