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

Commit 0628d324 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Also log IPv4 and IPv6 connectivity of any previous default network" into nyc-dev

parents 6e585497 48f12f2a
Loading
Loading
Loading
Loading
+20 −8
Original line number Diff line number Diff line
@@ -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
@@ -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));
    }
};
+21 −6
Original line number Diff line number Diff line
@@ -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
@@ -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 {
@@ -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.
@@ -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);
    }
}