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

Commit 09d8e3cf authored by Matthew Williams's avatar Matthew Williams Committed by Android Git Automerger
Browse files

am c68bb182: Merge "SyncManager now returns copy on getCurrentSyncs()" into klp-dev

* commit 'c68bb182':
  SyncManager now returns copy on getCurrentSyncs()
parents 3f6d9630 c68bb182
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -54,6 +54,14 @@ public class SyncInfo implements Parcelable {
        this.startTime = startTime;
    }

    /** @hide */
    public SyncInfo(SyncInfo other) {
        this.authorityId = other.authorityId;
        this.account = new Account(other.account.name, other.account.type);
        this.authority = other.authority;
        this.startTime = other.startTime;
    }

    /** @hide */
    public int describeContents() {
        return 0;
+1 −1
Original line number Diff line number Diff line
@@ -660,7 +660,7 @@ public final class ContentService extends IContentService.Stub {
        int userId = UserHandle.getCallingUserId();
        long identityToken = clearCallingIdentity();
        try {
            return getSyncManager().getSyncStorageEngine().getCurrentSyncs(userId);
            return getSyncManager().getSyncStorageEngine().getCurrentSyncsCopy(userId);
        } finally {
            restoreCallingIdentity(identityToken);
        }
+28 −8
Original line number Diff line number Diff line
@@ -1295,11 +1295,32 @@ public class SyncStorageEngine extends Handler {
    }

    /**
     * Return a list of the currently active syncs. Note that the returned items are the
     * real, live active sync objects, so be careful what you do with it.
     * Return a list of the currently active syncs. Note that the returned
     * items are the real, live active sync objects, so be careful what you do
     * with it.
     */
    public List<SyncInfo> getCurrentSyncs(int userId) {
    private List<SyncInfo> getCurrentSyncs(int userId) {
        synchronized (mAuthorities) {
            return getCurrentSyncsLocked(userId);
        }
    }

    /**
     * @return a copy of the current syncs data structure. Will not return
     * null.
     */
    public List<SyncInfo> getCurrentSyncsCopy(int userId) {
        synchronized (mAuthorities) {
            final List<SyncInfo> syncs = getCurrentSyncsLocked(userId);
            final List<SyncInfo> syncsCopy = new ArrayList<SyncInfo>();
            for (SyncInfo sync : syncs) {
                syncsCopy.add(new SyncInfo(sync));
            }
            return syncsCopy;
        }
    }

    private List<SyncInfo> getCurrentSyncsLocked(int userId) {
        ArrayList<SyncInfo> syncs = mCurrentSyncs.get(userId);
        if (syncs == null) {
            syncs = new ArrayList<SyncInfo>();
@@ -1307,7 +1328,6 @@ public class SyncStorageEngine extends Handler {
        }
        return syncs;
    }
    }

    /**
     * Return an array of the current sync status for all authorities.  Note