Merge "Only log unique mime types." into sc-dev
diff --git a/src/com/android/providers/media/metrics/StorageAccessMetrics.java b/src/com/android/providers/media/metrics/StorageAccessMetrics.java
index c146082..ce54e3f 100644
--- a/src/com/android/providers/media/metrics/StorageAccessMetrics.java
+++ b/src/com/android/providers/media/metrics/StorageAccessMetrics.java
@@ -23,6 +23,7 @@
 import android.os.Process;
 import android.os.SystemClock;
 import android.provider.MediaStore;
+import android.util.ArraySet;
 import android.util.Log;
 import android.util.SparseArray;
 import android.util.StatsEvent;
@@ -41,9 +42,7 @@
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -78,8 +77,7 @@
         }
 
         synchronized (mLock) {
-            SparseArray<String> mimeTypes = getOrGeneratePackageStatsObjectLocked(uid).mMimeTypes;
-            mimeTypes.put(mimeTypes.size(), mimeType);
+            getOrGeneratePackageStatsObjectLocked(uid).mMimeTypes.add(mimeType);
         }
     }
 
@@ -226,7 +224,7 @@
         int mFilePathAccesses = 0;
         int mSecondaryStorageAccesses = 0;
 
-        final SparseArray<String> mMimeTypes = new SparseArray<>();
+        final ArraySet<String> mMimeTypes = new ArraySet<>();
 
         PackageStorageAccessStats(int uid) {
             this.mUid = uid;
@@ -254,7 +252,7 @@
         private ProtoOutputStream getMimeTypesAsProto() {
             ProtoOutputStream proto = new ProtoOutputStream();
             for (int i = 0; i < mMimeTypes.size(); i++) {
-                String mime = mMimeTypes.valueAt(0);
+                String mime = mMimeTypes.valueAt(i);
                 proto.write(/*fieldId*/ProtoOutputStream.FIELD_TYPE_STRING
                                 | ProtoOutputStream.FIELD_COUNT_REPEATED
                                 | 1,
diff --git a/tests/src/com/android/providers/media/metrics/StorageAccessMetricsTest.java b/tests/src/com/android/providers/media/metrics/StorageAccessMetricsTest.java
index 8fd68a6..5be69ff 100644
--- a/tests/src/com/android/providers/media/metrics/StorageAccessMetricsTest.java
+++ b/tests/src/com/android/providers/media/metrics/StorageAccessMetricsTest.java
@@ -46,7 +46,9 @@
         storageAccessMetrics.logMimeType(3, "my-mime-type");
         storageAccessMetrics.logMimeType(3, null);
         storageAccessMetrics.logMimeType(3, "my-mime-type-2");
+        storageAccessMetrics.logMimeType(3, "my-mime-type-2");
         storageAccessMetrics.logMimeType(3, "my-mime-type-3");
+        storageAccessMetrics.logMimeType(3, "my-mime-type-2");
         List<PackageStorageAccessStats> statsList =
                 storageAccessMetrics.getSampleStats();
 
@@ -57,10 +59,9 @@
         assertThat(stats.mTotalAccesses).isEqualTo(0);
         assertThat(stats.mFilePathAccesses).isEqualTo(0);
         assertThat(stats.mSecondaryStorageAccesses).isEqualTo(0);
-        assertThat(stats.mMimeTypes.size()).isEqualTo(3);
-        assertThat(stats.mMimeTypes.valueAt(0)).isEqualTo("my-mime-type");
-        assertThat(stats.mMimeTypes.valueAt(1)).isEqualTo("my-mime-type-2");
-        assertThat(stats.mMimeTypes.valueAt(2)).isEqualTo("my-mime-type-3");
+        assertThat(stats.mMimeTypes.stream().toArray())
+                .asList()
+                .containsExactly("my-mime-type", "my-mime-type-2", "my-mime-type-3");
     }
 
     @Test
@@ -76,8 +77,9 @@
         assertThat(stats.mTotalAccesses).isEqualTo(0);
         assertThat(stats.mFilePathAccesses).isEqualTo(1);
         assertThat(stats.mSecondaryStorageAccesses).isEqualTo(0);
-        assertThat(stats.mMimeTypes.size()).isEqualTo(1);
-        assertThat(stats.mMimeTypes.valueAt(0)).isEqualTo("text/plain");
+        assertThat(stats.mMimeTypes.stream().toArray())
+                .asList()
+                .containsExactly("text/plain");
     }
 
     @Test