Refine MediaAnalytics framework

Rework some interfaces to avoid unnecessary sp<> mechanisms;
document which side of caller/callee owns pointers afterwards.
Rework internal attribute representation, add support routines.

Bug: 33547720
Test: Boot, ran subset of CTS media tests
Change-Id: Id0d65bd6a847704dc98d38be9aa5e1ce63c20e1c
diff --git a/media/libmedia/IMediaAnalyticsService.cpp b/media/libmedia/IMediaAnalyticsService.cpp
index afe9c36..cc4aa35 100644
--- a/media/libmedia/IMediaAnalyticsService.cpp
+++ b/media/libmedia/IMediaAnalyticsService.cpp
@@ -80,7 +80,7 @@
         return sessionid;
     }
 
-    virtual MediaAnalyticsItem::SessionID_t submit(sp<MediaAnalyticsItem> item, bool forcenew)
+    virtual MediaAnalyticsItem::SessionID_t submit(MediaAnalyticsItem *item, bool forcenew)
     {
         // have this record submit itself
         // this will be a binder call with appropriate timing
@@ -115,12 +115,12 @@
         return sessionid;
     }
 
-    virtual List<sp<MediaAnalyticsItem>> *getMediaAnalyticsItemList(bool finished, nsecs_t ts)
+    virtual List<MediaAnalyticsItem*> *getMediaAnalyticsItemList(bool finished, nsecs_t ts)
     {
             return getMediaAnalyticsItemList(finished, ts, MediaAnalyticsItem::kKeyAny);
     }
 
-    virtual List<sp<MediaAnalyticsItem>> *getMediaAnalyticsItemList(bool finished, nsecs_t ts, MediaAnalyticsItem::Key key)
+    virtual List<MediaAnalyticsItem*> *getMediaAnalyticsItemList(bool finished, nsecs_t ts, MediaAnalyticsItem::Key key)
     {
         Parcel data, reply;
         status_t err;
@@ -134,18 +134,18 @@
         }
         data.writeCString(str);
         err = remote()->transact(GET_ITEM_LIST, data, &reply);
-	if (err != NO_ERROR) {
-	    return NULL;
-	}
+        if (err != NO_ERROR) {
+            return NULL;
+        }
 
         // read a count
         int32_t count = reply.readInt32();
-        List<sp<MediaAnalyticsItem>> *list = NULL;
+        List<MediaAnalyticsItem*> *list = NULL;
 
         if (count > 0) {
-            list = new List<sp<MediaAnalyticsItem>>();
+            list = new List<MediaAnalyticsItem*>();
             for (int i=0;i<count;i++) {
-                sp<MediaAnalyticsItem> item = new MediaAnalyticsItem;
+                MediaAnalyticsItem *item = new MediaAnalyticsItem();
                 // XXX: watch for failures here
                 item->readFromParcel(reply);
                 list->push_back(item);
@@ -190,14 +190,14 @@
             CHECK_INTERFACE(IMediaAnalyticsService, data, reply);
 
             bool forcenew;
-            sp<MediaAnalyticsItem> item = new MediaAnalyticsItem;
+            MediaAnalyticsItem *item = new MediaAnalyticsItem;
 
             data.readBool(&forcenew);
             item->readFromParcel(data);
 
             item->setPid(clientPid);
 
-	    // submit() takes ownership of / responsibility for the item
+            // submit() takes over ownership of 'item'
             MediaAnalyticsItem::SessionID_t sessionid = submit(item, forcenew);
             reply->writeInt64(sessionid);
 
@@ -212,11 +212,11 @@
             MediaAnalyticsItem::Key key = data.readCString();
 
             // find the (0 or more) items
-            List<sp<MediaAnalyticsItem>> *list =  getMediaAnalyticsItemList(finished, ts, key);
+            List<MediaAnalyticsItem*> *list =  getMediaAnalyticsItemList(finished, ts, key);
             // encapsulate/serialize them
             reply->writeInt32(list->size());
             if (list->size() > 0) {
-                    for (List<sp<MediaAnalyticsItem>>::iterator it = list->begin();
+                    for (List<MediaAnalyticsItem*>::iterator it = list->begin();
                          it != list->end(); it++) {
                             (*it)->writeToParcel(reply);
                     }