diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java index 6024a2a45f..8514a707a8 100644 --- a/service/src/com/android/server/ConnectivityService.java +++ b/service/src/com/android/server/ConnectivityService.java @@ -645,8 +645,9 @@ public class ConnectivityService extends IConnectivityManager.Stub * Event for NetworkMonitor to inform ConnectivityService that the probe status has changed. * Both of the arguments are bitmasks, and the value of bits come from * INetworkMonitor.NETWORK_VALIDATION_PROBE_*. - * arg1 = A bitmask to describe which probes are completed. - * arg2 = A bitmask to describe which probes are successful. + * arg1 = unused + * arg2 = netId + * obj = A Pair of integers: the bitmasks of, respectively, completed and successful probes. */ public static final int EVENT_PROBE_STATUS_CHANGED = 45; @@ -3602,19 +3603,21 @@ public class ConnectivityService extends IConnectivityManager.Stub } private boolean maybeHandleNetworkMonitorMessage(Message msg) { + final int netId = msg.arg2; + final NetworkAgentInfo nai = getNetworkAgentInfoForNetId(netId); switch (msg.what) { default: return false; case EVENT_PROBE_STATUS_CHANGED: { - final Integer netId = (Integer) msg.obj; - final NetworkAgentInfo nai = getNetworkAgentInfoForNetId(netId); if (nai == null) { break; } + final int probesCompleted = ((Pair) msg.obj).first; + final int probesSucceeded = ((Pair) msg.obj).second; final boolean probePrivateDnsCompleted = - ((msg.arg1 & NETWORK_VALIDATION_PROBE_PRIVDNS) != 0); + ((probesCompleted & NETWORK_VALIDATION_PROBE_PRIVDNS) != 0); final boolean privateDnsBroken = - ((msg.arg2 & NETWORK_VALIDATION_PROBE_PRIVDNS) == 0); + ((probesSucceeded & NETWORK_VALIDATION_PROBE_PRIVDNS) == 0); if (probePrivateDnsCompleted) { if (nai.networkCapabilities.isPrivateDnsBroken() != privateDnsBroken) { nai.networkCapabilities.setPrivateDnsBroken(privateDnsBroken); @@ -3641,7 +3644,6 @@ public class ConnectivityService extends IConnectivityManager.Stub case EVENT_NETWORK_TESTED: { final NetworkTestedResults results = (NetworkTestedResults) msg.obj; - final NetworkAgentInfo nai = getNetworkAgentInfoForNetId(results.mNetId); if (nai == null) break; handleNetworkTested(nai, results.mTestResult, @@ -3649,9 +3651,7 @@ public class ConnectivityService extends IConnectivityManager.Stub break; } case EVENT_PROVISIONING_NOTIFICATION: { - final int netId = msg.arg2; final boolean visible = toBool(msg.arg1); - final NetworkAgentInfo nai = getNetworkAgentInfoForNetId(netId); // If captive portal status has changed, update capabilities or disconnect. if (nai != null && (visible != nai.lastCaptivePortalDetected)) { nai.lastCaptivePortalDetected = visible; @@ -3685,14 +3685,12 @@ public class ConnectivityService extends IConnectivityManager.Stub break; } case EVENT_PRIVATE_DNS_CONFIG_RESOLVED: { - final NetworkAgentInfo nai = getNetworkAgentInfoForNetId(msg.arg2); if (nai == null) break; updatePrivateDns(nai, (PrivateDnsConfig) msg.obj); break; } case EVENT_CAPPORT_DATA_CHANGED: { - final NetworkAgentInfo nai = getNetworkAgentInfoForNetId(msg.arg2); if (nai == null) break; handleCapportApiDataUpdate(nai, (CaptivePortalData) msg.obj); break; @@ -3832,6 +3830,7 @@ public class ConnectivityService extends IConnectivityManager.Stub // the same looper so messages will be processed in sequence. final Message msg = mTrackerHandler.obtainMessage( EVENT_NETWORK_TESTED, + 0, mNetId, new NetworkTestedResults( mNetId, p.result, p.timestampMillis, p.redirectUrl)); mTrackerHandler.sendMessage(msg); @@ -3869,7 +3868,7 @@ public class ConnectivityService extends IConnectivityManager.Stub public void notifyProbeStatusChanged(int probesCompleted, int probesSucceeded) { mTrackerHandler.sendMessage(mTrackerHandler.obtainMessage( EVENT_PROBE_STATUS_CHANGED, - probesCompleted, probesSucceeded, new Integer(mNetId))); + 0, mNetId, new Pair<>(probesCompleted, probesSucceeded))); } @Override