Merge "Support mult processes in ProcessShowmapListener"
diff --git a/libraries/device-collectors/src/main/java/android/device/collectors/ProcessShowmapListener.java b/libraries/device-collectors/src/main/java/android/device/collectors/ProcessShowmapListener.java
index 253e988..4561cca 100644
--- a/libraries/device-collectors/src/main/java/android/device/collectors/ProcessShowmapListener.java
+++ b/libraries/device-collectors/src/main/java/android/device/collectors/ProcessShowmapListener.java
@@ -18,6 +18,7 @@
 
 import android.device.collectors.annotations.OptionClass;
 import android.os.Bundle;
+import android.util.Log;
 
 import androidx.annotation.VisibleForTesting;
 
@@ -35,8 +36,11 @@
  */
 @OptionClass(alias = "process-showmap-collector")
 public class ProcessShowmapListener extends BaseCollectionListener<Long> {
-    @VisibleForTesting
-    static final String PROCESS_NAME_KEY = "processshowmap-process-name";
+    private static final String TAG = ProcessShowmapListener.class.getSimpleName();
+    @VisibleForTesting static final String PROCESS_SEPARATOR = ",";
+    @VisibleForTesting static final String PROCESS_NAMES_KEY = "showmap-process-names";
+    // TODO(119675321): Remove this once all ATP configs have switched to the new key name.
+    static final String OLD_PROCESS_NAME_KEY = "processshowmap-process-name";
     private ProcessShowmapHelper mShowmapHelper = new ProcessShowmapHelper();
 
     public ProcessShowmapListener() {
@@ -57,7 +61,17 @@
     @Override
     public void onTestRunStart(DataRecord runData, Description description) {
         Bundle args = getArgsBundle();
-        String processName = args.getString(PROCESS_NAME_KEY);
-        mShowmapHelper.setUp(processName);
+        String procsString = args.getString(PROCESS_NAMES_KEY);
+        String oldProcString = args.getString(OLD_PROCESS_NAME_KEY);
+        if (procsString == null && oldProcString == null) {
+            Log.e(TAG, "No processes provided to sample");
+            return;
+        }
+        if (oldProcString != null) {
+            mShowmapHelper.setUp(oldProcString);
+        } else {
+            String[] procs = procsString.split(PROCESS_SEPARATOR);
+            mShowmapHelper.setUp(procs);
+        }
     }
 }
diff --git a/libraries/device-collectors/src/test/java/android/device/collectors/ProcessShowmapListenerTest.java b/libraries/device-collectors/src/test/java/android/device/collectors/ProcessShowmapListenerTest.java
index 535558f..384c9da 100644
--- a/libraries/device-collectors/src/test/java/android/device/collectors/ProcessShowmapListenerTest.java
+++ b/libraries/device-collectors/src/test/java/android/device/collectors/ProcessShowmapListenerTest.java
@@ -16,7 +16,9 @@
 
 package android.device.collectors;
 
-import static org.mockito.Mockito.times;
+import static android.device.collectors.ProcessShowmapListener.PROCESS_NAMES_KEY;
+import static android.device.collectors.ProcessShowmapListener.PROCESS_SEPARATOR;
+
 import static org.mockito.Mockito.verify;
 
 import android.app.Instrumentation;
@@ -42,8 +44,6 @@
 @RunWith(AndroidJUnit4.class)
 public class ProcessShowmapListenerTest {
 
-    private static final String TEST_PROCESS_NAME = "com.android.systemui";
-
     @Mock
     private Instrumentation mInstrumentation;
     @Mock
@@ -65,13 +65,13 @@
     }
 
     @Test
-    public void testHelperReceivesProcessName() throws Exception {
+    public void testHelperReceivesProcessNames() throws Exception {
         Bundle b = new Bundle();
-        b.putString(ProcessShowmapListener.PROCESS_NAME_KEY, TEST_PROCESS_NAME);
+        b.putString(PROCESS_NAMES_KEY, "process1" + PROCESS_SEPARATOR + "process2");
         mListener = initListener(b);
 
         mListener.testRunStarted(mRunDesc);
 
-        verify(mShowmapHelper).setUp(TEST_PROCESS_NAME);
+        verify(mShowmapHelper).setUp("process1", "process2");
     }
 }