Fix process source propagation for binder calls stats settings so that
it is correctly reported in the pushed atom BinderLatencyReported.

Bug: 180584913
Test: unit test
Change-Id: Ifbdd96c73276546fb2a05213f71e1de088e1fe1e
diff --git a/core/java/com/android/internal/os/BinderCallsStats.java b/core/java/com/android/internal/os/BinderCallsStats.java
index 6f911cb..7757b91f 100644
--- a/core/java/com/android/internal/os/BinderCallsStats.java
+++ b/core/java/com/android/internal/os/BinderCallsStats.java
@@ -1190,15 +1190,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 55943a0..c502f75 100644
--- a/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BinderCallsStatsTest.java
@@ -974,6 +974,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<>();