diff --git a/core/java/com/android/internal/os/BinderCallsStats.java b/core/java/com/android/internal/os/BinderCallsStats.java
index e3baf90..6ce7cea 100644
--- a/core/java/com/android/internal/os/BinderCallsStats.java
+++ b/core/java/com/android/internal/os/BinderCallsStats.java
@@ -1196,15 +1196,12 @@
         private final Context mContext;
         private final KeyValueListParser mParser = new KeyValueListParser(',');
         private final BinderCallsStats mBinderCallsStats;
-        private final int mProcessSource;
 
-        public SettingsObserver(Context context, BinderCallsStats binderCallsStats,
-                    int processSource) {
+        public SettingsObserver(Context context, BinderCallsStats binderCallsStats) {
             super(BackgroundThread.getHandler());
             mContext = context;
             context.getContentResolver().registerContentObserver(mUri, false, this);
             mBinderCallsStats = binderCallsStats;
-            mProcessSource = processSource;
             // Always kick once to ensure that we match current state
             onChange();
         }
diff --git a/core/java/com/android/internal/os/BinderLatencyObserver.java b/core/java/com/android/internal/os/BinderLatencyObserver.java
index ed7e172..20cf102 100644
--- a/core/java/com/android/internal/os/BinderLatencyObserver.java
+++ b/core/java/com/android/internal/os/BinderLatencyObserver.java
@@ -370,4 +370,9 @@
     public Runnable getStatsdPushRunnable() {
         return mLatencyObserverRunnable;
     }
+
+    @VisibleForTesting
+    public int getProcessSource() {
+        return mProcessSource;
+    }
 }
diff --git a/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java b/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java
index cac40b2..82b2bf4 100644
--- a/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java
@@ -991,6 +991,40 @@
         assertEquals(true, bcs.getCollectLatencyData());
     }
 
+    @Test
+    public void testProcessSource() {
+        BinderCallsStats defaultCallsStats = new BinderCallsStats(
+                new BinderCallsStats.Injector());
+
+        BinderCallsStats systemServerCallsStats = new BinderCallsStats(
+                new BinderCallsStats.Injector(),
+                com.android.internal.os.BinderLatencyProto.Dims.SYSTEM_SERVER);
+
+        BinderCallsStats telephonyCallsStats = new BinderCallsStats(
+                new BinderCallsStats.Injector(),
+                com.android.internal.os.BinderLatencyProto.Dims.TELEPHONY);
+
+        BinderCallsStats bluetoothCallsStats = new BinderCallsStats(
+                new BinderCallsStats.Injector(),
+                com.android.internal.os.BinderLatencyProto.Dims.BLUETOOTH);
+
+        assertEquals(
+                com.android.internal.os.BinderLatencyProto.Dims.SYSTEM_SERVER,
+                defaultCallsStats.getLatencyObserver().getProcessSource());
+
+        assertEquals(
+                com.android.internal.os.BinderLatencyProto.Dims.SYSTEM_SERVER,
+                systemServerCallsStats.getLatencyObserver().getProcessSource());
+
+        assertEquals(
+                com.android.internal.os.BinderLatencyProto.Dims.TELEPHONY,
+                telephonyCallsStats.getLatencyObserver().getProcessSource());
+
+        assertEquals(
+                com.android.internal.os.BinderLatencyProto.Dims.BLUETOOTH,
+                bluetoothCallsStats.getLatencyObserver().getProcessSource());
+    }
+
     private static class TestHandler extends Handler {
         ArrayList<Runnable> mRunnables = new ArrayList<>();
 
