Merge "Fix process source propagation for binder calls stats settings so that it is correctly reported in the pushed atom BinderLatencyReported." into sc-dev
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<>();