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<>();