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

Commit 1feca76b authored by Pierre Imai's avatar Pierre Imai Committed by Android (Google) Code Review
Browse files

Merge changes Ia71865a9,I40b6de54 into nyc-dev

* changes:
  Log an event whenever we lose the default network.
  Record the transport types for connectivity events.
parents a6d383d1 04e22225
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -25,18 +25,30 @@ import android.os.Parcelable;
public class ConnectivityServiceChangeEvent extends IpConnectivityEvent implements Parcelable {
    public static final String TAG = "ConnectivityServiceChangeEvent";

    private int mNetId;
    // 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;

    public ConnectivityServiceChangeEvent(int netId) {
    public ConnectivityServiceChangeEvent(int netId, int prevNetId, int[] transportTypes) {
        mNetId = netId;
        mPrevNetId = prevNetId;
        mTransportTypes = transportTypes;
    }

    public ConnectivityServiceChangeEvent(Parcel in) {
        mNetId = in.readInt();
        mPrevNetId = in.readInt();
        mTransportTypes = in.createIntArray();
    }

    public void writeToParcel(Parcel out, int flags) {
        out.writeInt(mNetId);
        out.writeInt(mPrevNetId);
        out.writeIntArray(mTransportTypes);
    }

    public static final Parcelable.Creator<ConnectivityServiceChangeEvent> CREATOR
@@ -50,8 +62,8 @@ public class ConnectivityServiceChangeEvent extends IpConnectivityEvent implemen
        }
    };

    public static void logEvent(int netId) {
    public static void logEvent(int netId, int prevNetId, int[] transportTypes) {
        IpConnectivityEvent.logEvent(IpConnectivityEvent.IPCE_CONSRV_DEFAULT_NET_CHANGE,
                new ConnectivityServiceChangeEvent(netId));
                new ConnectivityServiceChangeEvent(netId, prevNetId, transportTypes));
    }
};
+11 −3
Original line number Diff line number Diff line
@@ -2206,6 +2206,12 @@ public class ConnectivityService extends IConnectivityManager.Stub
            }
            mLegacyTypeTracker.remove(nai, wasDefault);
            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);
            }
            if (nai.created) {
                // Tell netd to clean up the configuration for this network
                // (routing rules, DNS, etc).
@@ -4427,9 +4433,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
        teardownUnneededNetwork(oldNetwork);
    }

    private void makeDefault(NetworkAgentInfo newNetwork) {
    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);
        ConnectivityServiceChangeEvent.logEvent(newNetwork.network.netId);
        setupDataActivityTracking(newNetwork);
        try {
            mNetd.setDefaultNetId(newNetwork.network.netId);
@@ -4440,6 +4446,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());
    }

    // Handles a network appearing or improving its score.
@@ -4590,7 +4598,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
        }
        if (isNewDefault) {
            // Notify system services that this network is up.
            makeDefault(newNetwork);
            makeDefault(newNetwork, oldDefaultNetwork);
            synchronized (ConnectivityService.this) {
                // have a new default network, release the transition wakelock in
                // a second if it's held.  The second pause is to allow apps