Allow backup payload for shortcuts from secondary user
Bug: 260066878
Test: verified using following steps
1. Add a secondary user in Settings -> System -> Multiple users.
2. Set up the secondary user and sign in with a GAIA account.
3. Pin some shortcuts to the workspace.
4. Run adb shell bmgr --user {your secondary user's ID e.g. 10} activate
true
5. Under Settings -> System -> Backup, opt into backups and press "Back
up now" -- this can take a few minutes.
6. adb pull /data/system_ce/0/shortcut_service/shortcut_dump/
backup-1-payload.txt Verify the backup payload contains pinned shortcuts.
7. Factory reset and perform a cloud restore, verify pinned
shortcuts are restored successfully.
Change-Id: I0ce48aff337085476087f0db882f3a117416eea6
This commit is contained in:
@@ -19,7 +19,6 @@ import android.app.backup.BlobBackupHelper;
|
||||
import android.content.Context;
|
||||
import android.content.pm.IShortcutService;
|
||||
import android.os.ServiceManager;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Slog;
|
||||
|
||||
public class ShortcutBackupHelper extends BlobBackupHelper {
|
||||
@@ -28,8 +27,11 @@ public class ShortcutBackupHelper extends BlobBackupHelper {
|
||||
|
||||
private static final String KEY_USER_FILE = "shortcutuser.xml";
|
||||
|
||||
public ShortcutBackupHelper() {
|
||||
private final int mUserId;
|
||||
|
||||
public ShortcutBackupHelper(int userId) {
|
||||
super(BLOB_VERSION, KEY_USER_FILE);
|
||||
mUserId = userId;
|
||||
}
|
||||
|
||||
private IShortcutService getShortcutService() {
|
||||
@@ -42,7 +44,7 @@ public class ShortcutBackupHelper extends BlobBackupHelper {
|
||||
switch (key) {
|
||||
case KEY_USER_FILE:
|
||||
try {
|
||||
return getShortcutService().getBackupPayload(UserHandle.USER_SYSTEM);
|
||||
return getShortcutService().getBackupPayload(mUserId);
|
||||
} catch (Exception e) {
|
||||
Slog.wtf(TAG, "Backup failed", e);
|
||||
}
|
||||
@@ -58,7 +60,7 @@ public class ShortcutBackupHelper extends BlobBackupHelper {
|
||||
switch (key) {
|
||||
case KEY_USER_FILE:
|
||||
try {
|
||||
getShortcutService().applyRestore(payload, UserHandle.USER_SYSTEM);
|
||||
getShortcutService().applyRestore(payload, mUserId);
|
||||
} catch (Exception e) {
|
||||
Slog.wtf(TAG, "Restore failed", e);
|
||||
}
|
||||
|
||||
@@ -86,7 +86,8 @@ public class SystemBackupAgent extends BackupAgentHelper {
|
||||
|
||||
private static final Set<String> sEligibleForMultiUser = Sets.newArraySet(
|
||||
PERMISSION_HELPER, NOTIFICATION_HELPER, SYNC_SETTINGS_HELPER, APP_LOCALES_HELPER,
|
||||
ACCOUNT_MANAGER_HELPER, USAGE_STATS_HELPER, PREFERRED_HELPER);
|
||||
ACCOUNT_MANAGER_HELPER, USAGE_STATS_HELPER, PREFERRED_HELPER, SHORTCUT_MANAGER_HELPER
|
||||
);
|
||||
|
||||
private int mUserId = UserHandle.USER_SYSTEM;
|
||||
|
||||
@@ -101,7 +102,7 @@ public class SystemBackupAgent extends BackupAgentHelper {
|
||||
addHelper(NOTIFICATION_HELPER, new NotificationBackupHelper(mUserId));
|
||||
addHelper(PERMISSION_HELPER, new PermissionBackupHelper(mUserId));
|
||||
addHelper(USAGE_STATS_HELPER, new UsageStatsBackupHelper(mUserId));
|
||||
addHelper(SHORTCUT_MANAGER_HELPER, new ShortcutBackupHelper());
|
||||
addHelper(SHORTCUT_MANAGER_HELPER, new ShortcutBackupHelper(mUserId));
|
||||
addHelper(ACCOUNT_MANAGER_HELPER, new AccountManagerBackupHelper(mUserId));
|
||||
addHelper(SLICES_HELPER, new SliceBackupHelper(this));
|
||||
addHelper(PEOPLE_HELPER, new PeopleBackupHelper(mUserId));
|
||||
|
||||
Reference in New Issue
Block a user