Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 02596178 authored by Pinyao Ting's avatar Pinyao Ting
Browse files

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
parent ff73f8b3
Loading
Loading
Loading
Loading
+6 −4
Original line number Original line Diff line number Diff line
@@ -19,7 +19,6 @@ import android.app.backup.BlobBackupHelper;
import android.content.Context;
import android.content.Context;
import android.content.pm.IShortcutService;
import android.content.pm.IShortcutService;
import android.os.ServiceManager;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.util.Slog;
import android.util.Slog;


public class ShortcutBackupHelper extends BlobBackupHelper {
public class ShortcutBackupHelper extends BlobBackupHelper {
@@ -28,8 +27,11 @@ public class ShortcutBackupHelper extends BlobBackupHelper {


    private static final String KEY_USER_FILE = "shortcutuser.xml";
    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);
        super(BLOB_VERSION, KEY_USER_FILE);
        mUserId = userId;
    }
    }


    private IShortcutService getShortcutService() {
    private IShortcutService getShortcutService() {
@@ -42,7 +44,7 @@ public class ShortcutBackupHelper extends BlobBackupHelper {
        switch (key) {
        switch (key) {
            case KEY_USER_FILE:
            case KEY_USER_FILE:
                try {
                try {
                    return getShortcutService().getBackupPayload(UserHandle.USER_SYSTEM);
                    return getShortcutService().getBackupPayload(mUserId);
                } catch (Exception e) {
                } catch (Exception e) {
                    Slog.wtf(TAG, "Backup failed", e);
                    Slog.wtf(TAG, "Backup failed", e);
                }
                }
@@ -58,7 +60,7 @@ public class ShortcutBackupHelper extends BlobBackupHelper {
        switch (key) {
        switch (key) {
            case KEY_USER_FILE:
            case KEY_USER_FILE:
                try {
                try {
                    getShortcutService().applyRestore(payload, UserHandle.USER_SYSTEM);
                    getShortcutService().applyRestore(payload, mUserId);
                } catch (Exception e) {
                } catch (Exception e) {
                    Slog.wtf(TAG, "Restore failed", e);
                    Slog.wtf(TAG, "Restore failed", e);
                }
                }
+3 −2
Original line number Original line Diff line number Diff line
@@ -86,7 +86,8 @@ public class SystemBackupAgent extends BackupAgentHelper {


    private static final Set<String> sEligibleForMultiUser = Sets.newArraySet(
    private static final Set<String> sEligibleForMultiUser = Sets.newArraySet(
            PERMISSION_HELPER, NOTIFICATION_HELPER, SYNC_SETTINGS_HELPER, APP_LOCALES_HELPER,
            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;
    private int mUserId = UserHandle.USER_SYSTEM;


@@ -101,7 +102,7 @@ public class SystemBackupAgent extends BackupAgentHelper {
        addHelper(NOTIFICATION_HELPER, new NotificationBackupHelper(mUserId));
        addHelper(NOTIFICATION_HELPER, new NotificationBackupHelper(mUserId));
        addHelper(PERMISSION_HELPER, new PermissionBackupHelper(mUserId));
        addHelper(PERMISSION_HELPER, new PermissionBackupHelper(mUserId));
        addHelper(USAGE_STATS_HELPER, new UsageStatsBackupHelper(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(ACCOUNT_MANAGER_HELPER, new AccountManagerBackupHelper(mUserId));
        addHelper(SLICES_HELPER, new SliceBackupHelper(this));
        addHelper(SLICES_HELPER, new SliceBackupHelper(this));
        addHelper(PEOPLE_HELPER, new PeopleBackupHelper(mUserId));
        addHelper(PEOPLE_HELPER, new PeopleBackupHelper(mUserId));