Fix process source propagation for binder calls stats settings so that

it is correctly reported in the pushed atom BinderLatencyReported.

This is a direct cherrypick from sc-dev: https://googleplex-android-review.git.corp.google.com/c/platform/frameworks/base/+/15054863

Bug: 180584913
Test: unit test
Change-Id: Ifbdd96c73276546fb2a05213f71e1de088e1fe1e
Merged-In: Ifbdd96c73276546fb2a05213f71e1de088e1fe1e
This commit is contained in:
Siim Sammul
2021-06-22 17:11:45 +01:00
parent 8be0de5892
commit 75d6665597
3 changed files with 40 additions and 4 deletions

View File

@@ -930,15 +930,12 @@ public class BinderCallsStats implements BinderInternal.Observer {
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();
}

View File

@@ -332,4 +332,9 @@ public class BinderLatencyObserver {
public Runnable getStatsdPushRunnable() {
return mLatencyObserverRunnable;
}
@VisibleForTesting
public int getProcessSource() {
return mProcessSource;
}
}

View File

@@ -835,6 +835,40 @@ public class BinderCallsStatsTest {
assertEquals(0, bcs.getLatencyObserver().getLatencyHistograms().size());
}
@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<>();