* commit '09d8e3cf4e411b016ee65d8328dd7a443c9de0ff': SyncManager now returns copy on getCurrentSyncs()
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -1295,20 +1295,40 @@ 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) {
|
||||
ArrayList<SyncInfo> syncs = mCurrentSyncs.get(userId);
|
||||
if (syncs == null) {
|
||||
syncs = new ArrayList<SyncInfo>();
|
||||
mCurrentSyncs.put(userId, syncs);
|
||||
}
|
||||
return syncs;
|
||||
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>();
|
||||
mCurrentSyncs.put(userId, syncs);
|
||||
}
|
||||
return syncs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an array of the current sync status for all authorities. Note
|
||||
* that the objects inside the array are the real, live status objects,
|
||||
|
||||
Reference in New Issue
Block a user