Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7261fb27 authored by Hugo Benichi's avatar Hugo Benichi Committed by Android (Google) Code Review
Browse files

Merge "Some fixes in ConnectivityService event logging" into nyc-dev

parents 75f03461 5f16f760
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -26033,11 +26033,11 @@ package android.net.metrics {
    field public final int state;
  }
  public final class ConnectivityServiceChangeEvent extends android.net.metrics.IpConnectivityEvent implements android.os.Parcelable {
  public final class DefaultNetworkEvent extends android.net.metrics.IpConnectivityEvent implements android.os.Parcelable {
    method public int describeContents();
    method public static void logEvent(int, int[], int, boolean, boolean);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.net.metrics.ConnectivityServiceChangeEvent> CREATOR;
    field public static final android.os.Parcelable.Creator<android.net.metrics.DefaultNetworkEvent> CREATOR;
    field public final int netId;
    field public final boolean prevIPv4;
    field public final boolean prevIPv6;
+14 −15
Original line number Diff line number Diff line
@@ -24,8 +24,7 @@ import android.os.Parcelable;
 * {@hide}
 */
@SystemApi
public final class ConnectivityServiceChangeEvent extends IpConnectivityEvent
        implements Parcelable {
public final class DefaultNetworkEvent extends IpConnectivityEvent implements Parcelable {
    // The ID of the network that has become the new default or NETID_UNSET if none.
    public final int netId;
    // The list of transport types of the new default network, for example TRANSPORT_WIFI, as
@@ -37,7 +36,7 @@ public final class ConnectivityServiceChangeEvent extends IpConnectivityEvent
    public final boolean prevIPv4;
    public final boolean prevIPv6;

    private ConnectivityServiceChangeEvent(int netId, int[] transportTypes,
    private DefaultNetworkEvent(int netId, int[] transportTypes,
                int prevNetId, boolean prevIPv4, boolean prevIPv6) {
        this.netId = netId;
        this.transportTypes = transportTypes;
@@ -46,7 +45,7 @@ public final class ConnectivityServiceChangeEvent extends IpConnectivityEvent
        this.prevIPv6 = prevIPv6;
    }

    private ConnectivityServiceChangeEvent(Parcel in) {
    private DefaultNetworkEvent(Parcel in) {
        this.netId = in.readInt();
        this.transportTypes = in.createIntArray();
        this.prevNetId = in.readInt();
@@ -66,21 +65,21 @@ public final class ConnectivityServiceChangeEvent extends IpConnectivityEvent
        return 0;
    }

    public static final Parcelable.Creator<ConnectivityServiceChangeEvent> CREATOR
        = new Parcelable.Creator<ConnectivityServiceChangeEvent>() {
        public ConnectivityServiceChangeEvent createFromParcel(Parcel in) {
            return new ConnectivityServiceChangeEvent(in);
    public static final Parcelable.Creator<DefaultNetworkEvent> CREATOR
        = new Parcelable.Creator<DefaultNetworkEvent>() {
        public DefaultNetworkEvent createFromParcel(Parcel in) {
            return new DefaultNetworkEvent(in);
        }

        public ConnectivityServiceChangeEvent[] newArray(int size) {
            return new ConnectivityServiceChangeEvent[size];
        public DefaultNetworkEvent[] newArray(int size) {
            return new DefaultNetworkEvent[size];
        }
    };

    public static void logEvent(int netId, int[] transportTypes,
            int prevNetId, boolean prevIPv4, boolean prevIPv6) {
        logEvent(IPCE_CONSRV_DEFAULT_NET_CHANGE,
                new ConnectivityServiceChangeEvent(
                        netId, transportTypes, prevNetId, prevIPv4, prevIPv6));
    public static void logEvent(
            int netId, int[] transports, int prevNetId, boolean hadIPv4, boolean hadIPv6) {
        final DefaultNetworkEvent ev =
                new DefaultNetworkEvent(netId, transports, prevNetId, hadIPv4, hadIPv6);
        logEvent(IPCE_CONSRV_DEFAULT_NET_CHANGE, ev);
    }
};
+22 −20
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@ import android.net.ProxyInfo;
import android.net.RouteInfo;
import android.net.UidRange;
import android.net.Uri;
import android.net.metrics.ConnectivityServiceChangeEvent;
import android.net.metrics.DefaultNetworkEvent;
import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
@@ -2217,7 +2217,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.
                logConnectivityServiceChangeEvent(null, nai);
                logDefaultNetworkEvent(null, nai);
            }
            if (nai.created) {
                // Tell netd to clean up the configuration for this network
@@ -4452,8 +4452,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
        handleApplyDefaultProxy(newNetwork.linkProperties.getHttpProxy());
        updateTcpBufferSizes(newNetwork);
        setDefaultDnsSystemProperties(newNetwork.linkProperties.getDnsServers());

        logConnectivityServiceChangeEvent(newNetwork, prevNetwork);
        logDefaultNetworkEvent(newNetwork, prevNetwork);
    }

    // Handles a network appearing or improving its score.
@@ -5075,21 +5074,24 @@ public class ConnectivityService extends IConnectivityManager.Stub
        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);
    private static void logDefaultNetworkEvent(NetworkAgentInfo newNai, NetworkAgentInfo prevNai) {
        int newNetid = NETID_UNSET;
        int prevNetid = NETID_UNSET;
        int[] transports = new int[0];
        boolean hadIPv4 = false;
        boolean hadIPv6 = false;

        if (newNai != null) {
            newNetid = newNai.network.netId;
            transports = newNai.networkCapabilities.getTransportTypes();
        }
        if (prevNai != null) {
            prevNetid = prevNai.network.netId;
            final LinkProperties lp = prevNai.linkProperties;
            hadIPv4 = lp.hasIPv4Address() && lp.hasIPv4DefaultRoute();
            hadIPv6 = lp.hasGlobalIPv6Address() && lp.hasIPv6DefaultRoute();
        }

        DefaultNetworkEvent.logEvent(newNetid, transports, prevNetid, hadIPv4, hadIPv6);
    }
}