From f5cc4eae9e5b8024fcbdd1b6d0e4052e84c899a6 Mon Sep 17 00:00:00 2001 From: Cody Kesting Date: Mon, 11 May 2020 10:06:51 -0700 Subject: [PATCH] Move Data Stall logic to CS from NetworkMonitorCallbacks. This change moves the logic for handling Data Stall notifications from NetworkMonitorCallbacks to ConnectivityService. This avoids duplicate logic for managing data stall simulation requests from ConnectivityManager. This also puts all of the logic for proxying Data Stall notifications to the ConnectivityDiagnosticsHandler into one place. Bug: 148032944 Test: atest ConnectivityDiagnosticsManagerTest Change-Id: Ie2f6a1a2376c5c452750ab417cb5e8c24fc44fc3 --- .../android/server/ConnectivityService.java | 49 ++++++++++--------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 635f184ce8..efa1f9af67 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -3079,23 +3079,7 @@ public class ConnectivityService extends IConnectivityManager.Stub @Override public void notifyDataStallSuspected(DataStallReportParcelable p) { - final PersistableBundle extras = new PersistableBundle(); - switch (p.detectionMethod) { - case DETECTION_METHOD_DNS_EVENTS: - extras.putInt(KEY_DNS_CONSECUTIVE_TIMEOUTS, p.dnsConsecutiveTimeouts); - break; - case DETECTION_METHOD_TCP_METRICS: - extras.putInt(KEY_TCP_PACKET_FAIL_RATE, p.tcpPacketFailRate); - extras.putInt(KEY_TCP_METRICS_COLLECTION_PERIOD_MILLIS, - p.tcpMetricsCollectionPeriodMillis); - break; - default: - log("Unknown data stall detection method, ignoring: " + p.detectionMethod); - return; - } - - proxyDataStallToConnectivityDiagnosticsHandler( - p.detectionMethod, mNetId, p.timestampMillis, extras); + ConnectivityService.this.notifyDataStallSuspected(p, mNetId); } @Override @@ -3109,11 +3093,31 @@ public class ConnectivityService extends IConnectivityManager.Stub } } - private void proxyDataStallToConnectivityDiagnosticsHandler(int detectionMethod, int netId, - long timestampMillis, @NonNull PersistableBundle extras) { + private void notifyDataStallSuspected(DataStallReportParcelable p, int netId) { + final PersistableBundle extras = new PersistableBundle(); + switch (p.detectionMethod) { + case DETECTION_METHOD_DNS_EVENTS: + extras.putInt(KEY_DNS_CONSECUTIVE_TIMEOUTS, p.dnsConsecutiveTimeouts); + break; + case DETECTION_METHOD_TCP_METRICS: + extras.putInt(KEY_TCP_PACKET_FAIL_RATE, p.tcpPacketFailRate); + extras.putInt(KEY_TCP_METRICS_COLLECTION_PERIOD_MILLIS, + p.tcpMetricsCollectionPeriodMillis); + break; + default: + // TODO(b/156294356): update for new data stall detection methods + log("Unknown data stall detection method, ignoring: " + p.detectionMethod); + return; + } + + notifyDataStallSuspected(p.detectionMethod, netId, p.timestampMillis, extras); + } + + private void notifyDataStallSuspected(int detectionMethod, int netId, long timestampMillis, + @NonNull PersistableBundle extras) { final Message msg = mConnectivityDiagnosticsHandler.obtainMessage( - ConnectivityDiagnosticsHandler.EVENT_DATA_STALL_SUSPECTED, - detectionMethod, netId, timestampMillis); + ConnectivityDiagnosticsHandler.EVENT_DATA_STALL_SUSPECTED, detectionMethod, netId, + timestampMillis); msg.setData(new Bundle(extras)); // NetworkStateTrackerHandler currently doesn't take any actions based on data @@ -8181,7 +8185,6 @@ public class ConnectivityService extends IConnectivityManager.Stub + "creators"); } - proxyDataStallToConnectivityDiagnosticsHandler( - detectionMethod, network.netId, timestampMillis, extras); + notifyDataStallSuspected(detectionMethod, network.netId, timestampMillis, extras); } }