summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/content/SyncStatusInfo.java56
1 files changed, 51 insertions, 5 deletions
diff --git a/core/java/android/content/SyncStatusInfo.java b/core/java/android/content/SyncStatusInfo.java
index bb24ccd5a5ed..663e6e476c5a 100644
--- a/core/java/android/content/SyncStatusInfo.java
+++ b/core/java/android/content/SyncStatusInfo.java
@@ -24,7 +24,11 @@ import java.util.ArrayList;
/** @hide */
public class SyncStatusInfo implements Parcelable {
- static final int VERSION = 2;
+ private static final String TAG = "Sync";
+
+ static final int VERSION = 3;
+
+ private static final int MAX_EVENT_COUNT = 10;
public final int authorityId;
public long totalElapsedTime;
@@ -47,7 +51,8 @@ public class SyncStatusInfo implements Parcelable {
// no race conditions when accessing this list
private ArrayList<Long> periodicSyncTimes;
- private static final String TAG = "Sync";
+ private final ArrayList<Long> mLastEventTimes = new ArrayList<>();
+ private final ArrayList<String> mLastEvents = new ArrayList<>();
public SyncStatusInfo(int authorityId) {
this.authorityId = authorityId;
@@ -92,6 +97,11 @@ public class SyncStatusInfo implements Parcelable {
} else {
parcel.writeInt(-1);
}
+ parcel.writeInt(mLastEventTimes.size());
+ for (int i = 0; i < mLastEventTimes.size(); i++) {
+ parcel.writeLong(mLastEventTimes.get(i));
+ parcel.writeString(mLastEvents.get(i));
+ }
}
public SyncStatusInfo(Parcel parcel) {
@@ -117,15 +127,24 @@ public class SyncStatusInfo implements Parcelable {
if (version == 1) {
periodicSyncTimes = null;
} else {
- int N = parcel.readInt();
- if (N < 0) {
+ final int count = parcel.readInt();
+ if (count < 0) {
periodicSyncTimes = null;
} else {
periodicSyncTimes = new ArrayList<Long>();
- for (int i=0; i<N; i++) {
+ for (int i = 0; i < count; i++) {
periodicSyncTimes.add(parcel.readLong());
}
}
+ if (version >= 3) {
+ mLastEventTimes.clear();
+ mLastEvents.clear();
+ final int nEvents = parcel.readInt();
+ for (int i = 0; i < nEvents; i++) {
+ mLastEventTimes.add(parcel.readLong());
+ mLastEvents.add(parcel.readString());
+ }
+ }
}
}
@@ -149,6 +168,8 @@ public class SyncStatusInfo implements Parcelable {
if (other.periodicSyncTimes != null) {
periodicSyncTimes = new ArrayList<Long>(other.periodicSyncTimes);
}
+ mLastEventTimes.addAll(other.mLastEventTimes);
+ mLastEvents.addAll(other.mLastEvents);
}
public void setPeriodicSyncTime(int index, long when) {
@@ -172,6 +193,31 @@ public class SyncStatusInfo implements Parcelable {
}
}
+ /** */
+ public void addEvent(String message) {
+ if (mLastEventTimes.size() >= MAX_EVENT_COUNT) {
+ mLastEventTimes.remove(MAX_EVENT_COUNT - 1);
+ mLastEvents.remove(MAX_EVENT_COUNT - 1);
+ }
+ mLastEventTimes.add(0, System.currentTimeMillis());
+ mLastEvents.add(0, message);
+ }
+
+ /** */
+ public int getEventCount() {
+ return mLastEventTimes.size();
+ }
+
+ /** */
+ public long getEventTime(int i) {
+ return mLastEventTimes.get(i);
+ }
+
+ /** */
+ public String getEvent(int i) {
+ return mLastEvents.get(i);
+ }
+
public static final Creator<SyncStatusInfo> CREATOR = new Creator<SyncStatusInfo>() {
public SyncStatusInfo createFromParcel(Parcel in) {
return new SyncStatusInfo(in);