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:
Pinyao Ting
2023-01-06 15:19:23 -08:00
parent ff73f8b3e0
commit 02596178e6
2 changed files with 9 additions and 6 deletions

View File

@@ -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);
}

View File

@@ -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));