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");
     }
 }
