From 02596178e6f9d5e37d8a75bc5f99e1ab13d9dca3 Mon Sep 17 00:00:00 2001 From: Pinyao Ting Date: Fri, 6 Jan 2023 15:19:23 -0800 Subject: [PATCH] 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 --- .../android/server/backup/ShortcutBackupHelper.java | 10 ++++++---- .../com/android/server/backup/SystemBackupAgent.java | 5 +++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/core/java/com/android/server/backup/ShortcutBackupHelper.java b/core/java/com/android/server/backup/ShortcutBackupHelper.java index 0b3f2aeac35a0..3c4b622622e7e 100644 --- a/core/java/com/android/server/backup/ShortcutBackupHelper.java +++ b/core/java/com/android/server/backup/ShortcutBackupHelper.java @@ -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); } diff --git a/services/core/java/com/android/server/backup/SystemBackupAgent.java b/services/core/java/com/android/server/backup/SystemBackupAgent.java index 35df3eeeb0d02..c0ea56169c15d 100644 --- a/services/core/java/com/android/server/backup/SystemBackupAgent.java +++ b/services/core/java/com/android/server/backup/SystemBackupAgent.java @@ -86,7 +86,8 @@ public class SystemBackupAgent extends BackupAgentHelper { private static final Set 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));