Enhance recent sync log in dumpsys content

- Add "Per Adapter History" section that has recent activities per adapter. Example:
  mxxxx@gmail.com/com.google u0 [com.android.calendar]
    2017-06-19 14:19:07 success Source=LOCAL Elapsed=0s Reason=10014 Extras=[upload=true ]
    2017-06-19 14:19:06 success Source=SERVER Elapsed=16s Reason=10014 Extras=[feed=#contacts@group.v.calendar.google.com ]
  mxxxx@gmail.com/com.google u0 [com.android.chrome]
    2017-06-19 13:26:25 canceled Source=POLL Elapsed=0s Reason=AccountsUpdated Extras=[initialize=true ]
  mxxxx@gmail.com/com.google u0 [com.android.contacts]

- Improve pending/periodic syncs with better formatting, and sort them in a sane order.

Bug: 38498544
Bug: 62391411
Test: manual test with "dumpsys content"
Change-Id: I947a9255230f27a7f438d648da324787fdf16f55
diff --git a/services/core/java/com/android/server/content/SyncStorageEngine.java b/services/core/java/com/android/server/content/SyncStorageEngine.java
index f804fa1..7b277c0 100644
--- a/services/core/java/com/android/server/content/SyncStorageEngine.java
+++ b/services/core/java/com/android/server/content/SyncStorageEngine.java
@@ -1183,6 +1183,16 @@
                 ds.failureCount++;
                 ds.failureTime += elapsedTime;
             }
+            final StringBuilder event = new StringBuilder();
+            event.append("" + resultMessage + " Source=" + SyncStorageEngine.SOURCES[item.source]
+                    + " Elapsed=");
+            SyncManager.formatDurationHMS(event, elapsedTime);
+            event.append(" Reason=");
+            event.append(SyncOperation.reasonToString(null, item.reason));
+            event.append(" Extras=");
+            SyncOperation.extrasToStringBuilder(item.extras, event);
+
+            status.addEvent(event.toString());
 
             if (writeStatusNow) {
                 writeStatusLocked();