Loading core/java/android/net/metrics/ConnectivityServiceChangeEvent.java +20 −8 Original line number Diff line number Diff line Loading @@ -27,28 +27,38 @@ public class ConnectivityServiceChangeEvent extends IpConnectivityEvent implemen // The ID of the network that has become the new default or NETID_UNSET if none. private final int mNetId; // The ID of the network that was the default before or NETID_UNSET if none. private final int mPrevNetId; // The list of transport types of the new default network, for example TRANSPORT_WIFI, as // defined in NetworkCapabilities.java. private final int[] mTransportTypes; // The ID of the network that was the default before or NETID_UNSET if none. private final int mPrevNetId; // Whether the previous network had IPv4/IPv6 connectivity. private final boolean mPrevIPv4; private final boolean mPrevIPv6; public ConnectivityServiceChangeEvent(int netId, int prevNetId, int[] transportTypes) { public ConnectivityServiceChangeEvent(int netId, int[] transportTypes, int prevNetId, boolean prevIPv4, boolean prevIPv6) { mNetId = netId; mPrevNetId = prevNetId; mTransportTypes = transportTypes; mPrevNetId = prevNetId; mPrevIPv4 = prevIPv4; mPrevIPv6 = prevIPv6; } public ConnectivityServiceChangeEvent(Parcel in) { mNetId = in.readInt(); mPrevNetId = in.readInt(); mTransportTypes = in.createIntArray(); mPrevNetId = in.readInt(); mPrevIPv4 = (in.readByte() > 0); mPrevIPv6 = (in.readByte() > 0); } public void writeToParcel(Parcel out, int flags) { out.writeInt(mNetId); out.writeInt(mPrevNetId); out.writeIntArray(mTransportTypes); out.writeInt(mPrevNetId); out.writeByte(mPrevIPv4 ? (byte) 1 : (byte) 0); out.writeByte(mPrevIPv6 ? (byte) 1 : (byte) 0); } public static final Parcelable.Creator<ConnectivityServiceChangeEvent> CREATOR Loading @@ -62,8 +72,10 @@ public class ConnectivityServiceChangeEvent extends IpConnectivityEvent implemen } }; public static void logEvent(int netId, int prevNetId, int[] transportTypes) { public static void logEvent(int netId, int[] transportTypes, int prevNetId, boolean prevIPv4, boolean prevIPv6) { IpConnectivityEvent.logEvent(IpConnectivityEvent.IPCE_CONSRV_DEFAULT_NET_CHANGE, new ConnectivityServiceChangeEvent(netId, prevNetId, transportTypes)); new ConnectivityServiceChangeEvent( netId, transportTypes, prevNetId, prevIPv4, prevIPv6)); } }; services/core/java/com/android/server/ConnectivityService.java +21 −6 Original line number Diff line number Diff line Loading @@ -2208,9 +2208,7 @@ public class ConnectivityService extends IConnectivityManager.Stub rematchAllNetworksAndRequests(null, 0); if (wasDefault && getDefaultNetwork() == null) { // Log that we lost the default network and there is no replacement. final int[] transportTypes = new int[0]; ConnectivityServiceChangeEvent.logEvent(NETID_UNSET, nai.network.netId, transportTypes); logConnectivityServiceChangeEvent(null, nai); } if (nai.created) { // Tell netd to clean up the configuration for this network Loading Loading @@ -4434,7 +4432,6 @@ public class ConnectivityService extends IConnectivityManager.Stub } private void makeDefault(NetworkAgentInfo newNetwork, NetworkAgentInfo prevNetwork) { int prevNetId = (prevNetwork == null) ? NETID_UNSET : prevNetwork.network.netId; if (DBG) log("Switching to new default network: " + newNetwork); setupDataActivityTracking(newNetwork); try { Loading @@ -4446,8 +4443,8 @@ public class ConnectivityService extends IConnectivityManager.Stub handleApplyDefaultProxy(newNetwork.linkProperties.getHttpProxy()); updateTcpBufferSizes(newNetwork); setDefaultDnsSystemProperties(newNetwork.linkProperties.getDnsServers()); ConnectivityServiceChangeEvent.logEvent(newNetwork.network.netId, prevNetId, newNetwork.networkCapabilities.getTransportTypes()); logConnectivityServiceChangeEvent(newNetwork, prevNetwork); } // Handles a network appearing or improving its score. Loading Loading @@ -5068,4 +5065,22 @@ public class ConnectivityService extends IConnectivityManager.Stub NetworkAgentInfo nai, NetworkRequest defaultRequest) { return new NetworkMonitor(context, handler, nai, defaultRequest); } private static void logConnectivityServiceChangeEvent( NetworkAgentInfo next, NetworkAgentInfo prev) { final int newNetId = (next == null) ? NETID_UNSET : next.network.netId; final int[] newTransportTypes = (next == null) ? new int[0] : next.networkCapabilities.getTransportTypes(); final int oldNetId = (prev == null) ? NETID_UNSET : prev.network.netId; final boolean hadIPv4 = (prev != null) && prev.linkProperties.hasIPv4Address() && prev.linkProperties.hasIPv4DefaultRoute(); final boolean hadIPv6 = (prev != null) && prev.linkProperties.hasGlobalIPv6Address() && prev.linkProperties.hasIPv6DefaultRoute(); ConnectivityServiceChangeEvent.logEvent(newNetId, newTransportTypes, oldNetId, hadIPv4, hadIPv6); } } Loading
core/java/android/net/metrics/ConnectivityServiceChangeEvent.java +20 −8 Original line number Diff line number Diff line Loading @@ -27,28 +27,38 @@ public class ConnectivityServiceChangeEvent extends IpConnectivityEvent implemen // The ID of the network that has become the new default or NETID_UNSET if none. private final int mNetId; // The ID of the network that was the default before or NETID_UNSET if none. private final int mPrevNetId; // The list of transport types of the new default network, for example TRANSPORT_WIFI, as // defined in NetworkCapabilities.java. private final int[] mTransportTypes; // The ID of the network that was the default before or NETID_UNSET if none. private final int mPrevNetId; // Whether the previous network had IPv4/IPv6 connectivity. private final boolean mPrevIPv4; private final boolean mPrevIPv6; public ConnectivityServiceChangeEvent(int netId, int prevNetId, int[] transportTypes) { public ConnectivityServiceChangeEvent(int netId, int[] transportTypes, int prevNetId, boolean prevIPv4, boolean prevIPv6) { mNetId = netId; mPrevNetId = prevNetId; mTransportTypes = transportTypes; mPrevNetId = prevNetId; mPrevIPv4 = prevIPv4; mPrevIPv6 = prevIPv6; } public ConnectivityServiceChangeEvent(Parcel in) { mNetId = in.readInt(); mPrevNetId = in.readInt(); mTransportTypes = in.createIntArray(); mPrevNetId = in.readInt(); mPrevIPv4 = (in.readByte() > 0); mPrevIPv6 = (in.readByte() > 0); } public void writeToParcel(Parcel out, int flags) { out.writeInt(mNetId); out.writeInt(mPrevNetId); out.writeIntArray(mTransportTypes); out.writeInt(mPrevNetId); out.writeByte(mPrevIPv4 ? (byte) 1 : (byte) 0); out.writeByte(mPrevIPv6 ? (byte) 1 : (byte) 0); } public static final Parcelable.Creator<ConnectivityServiceChangeEvent> CREATOR Loading @@ -62,8 +72,10 @@ public class ConnectivityServiceChangeEvent extends IpConnectivityEvent implemen } }; public static void logEvent(int netId, int prevNetId, int[] transportTypes) { public static void logEvent(int netId, int[] transportTypes, int prevNetId, boolean prevIPv4, boolean prevIPv6) { IpConnectivityEvent.logEvent(IpConnectivityEvent.IPCE_CONSRV_DEFAULT_NET_CHANGE, new ConnectivityServiceChangeEvent(netId, prevNetId, transportTypes)); new ConnectivityServiceChangeEvent( netId, transportTypes, prevNetId, prevIPv4, prevIPv6)); } };
services/core/java/com/android/server/ConnectivityService.java +21 −6 Original line number Diff line number Diff line Loading @@ -2208,9 +2208,7 @@ public class ConnectivityService extends IConnectivityManager.Stub rematchAllNetworksAndRequests(null, 0); if (wasDefault && getDefaultNetwork() == null) { // Log that we lost the default network and there is no replacement. final int[] transportTypes = new int[0]; ConnectivityServiceChangeEvent.logEvent(NETID_UNSET, nai.network.netId, transportTypes); logConnectivityServiceChangeEvent(null, nai); } if (nai.created) { // Tell netd to clean up the configuration for this network Loading Loading @@ -4434,7 +4432,6 @@ public class ConnectivityService extends IConnectivityManager.Stub } private void makeDefault(NetworkAgentInfo newNetwork, NetworkAgentInfo prevNetwork) { int prevNetId = (prevNetwork == null) ? NETID_UNSET : prevNetwork.network.netId; if (DBG) log("Switching to new default network: " + newNetwork); setupDataActivityTracking(newNetwork); try { Loading @@ -4446,8 +4443,8 @@ public class ConnectivityService extends IConnectivityManager.Stub handleApplyDefaultProxy(newNetwork.linkProperties.getHttpProxy()); updateTcpBufferSizes(newNetwork); setDefaultDnsSystemProperties(newNetwork.linkProperties.getDnsServers()); ConnectivityServiceChangeEvent.logEvent(newNetwork.network.netId, prevNetId, newNetwork.networkCapabilities.getTransportTypes()); logConnectivityServiceChangeEvent(newNetwork, prevNetwork); } // Handles a network appearing or improving its score. Loading Loading @@ -5068,4 +5065,22 @@ public class ConnectivityService extends IConnectivityManager.Stub NetworkAgentInfo nai, NetworkRequest defaultRequest) { return new NetworkMonitor(context, handler, nai, defaultRequest); } private static void logConnectivityServiceChangeEvent( NetworkAgentInfo next, NetworkAgentInfo prev) { final int newNetId = (next == null) ? NETID_UNSET : next.network.netId; final int[] newTransportTypes = (next == null) ? new int[0] : next.networkCapabilities.getTransportTypes(); final int oldNetId = (prev == null) ? NETID_UNSET : prev.network.netId; final boolean hadIPv4 = (prev != null) && prev.linkProperties.hasIPv4Address() && prev.linkProperties.hasIPv4DefaultRoute(); final boolean hadIPv6 = (prev != null) && prev.linkProperties.hasGlobalIPv6Address() && prev.linkProperties.hasIPv6DefaultRoute(); ConnectivityServiceChangeEvent.logEvent(newNetId, newTransportTypes, oldNetId, hadIPv4, hadIPv6); } }