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

Commit affbb8b6 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Always send all available state when calling onAvailable()."

parents 9324d651 c75d4fad
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1061,6 +1061,8 @@ public class ConnectivityManager {
     * registerNetworkCallback() are not specific to any particular Network so
     * do not cause any updates.
     *
     * TODO: Delete once callers are updated.
     *
     * @hide
     */
    public void requestLinkProperties(NetworkCallback networkCallback) {
@@ -1098,6 +1100,8 @@ public class ConnectivityManager {
     * registerNetworkCallback() are not specific to any particular Network so
     * do not cause any updates.
     *
     * TODO: Delete once callers are updated.
     *
     * @hide
     */
    public void requestNetworkCapabilities(NetworkCallback networkCallback) {
+24 −10
Original line number Diff line number Diff line
@@ -4348,6 +4348,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
        mHandler.sendMessage(mHandler.obtainMessage(EVENT_REGISTER_NETWORK_LISTENER, nri));
    }

    // TODO: Delete once callers are updated.
    @Override
    public void requestLinkProperties(NetworkRequest networkRequest) {
        ensureNetworkRequestHasType(networkRequest);
@@ -4356,6 +4357,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
                EVENT_REQUEST_LINKPROPERTIES, getCallingUid(), 0, networkRequest));
    }

    // TODO: Delete once callers are updated.
    @Override
    public void requestNetworkCapabilities(NetworkRequest networkRequest) {
        ensureNetworkRequestHasType(networkRequest);
@@ -4856,7 +4858,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
            if (!nr.isListen()) continue;
            if (nai.satisfies(nr) && !nai.isSatisfyingRequest(nr.requestId)) {
                nai.addRequest(nr);
                notifyNetworkCallback(nai, nri);
                notifyNetworkAvailable(nai, nri);
            }
        }
    }
@@ -5038,7 +5040,7 @@ public class ConnectivityService extends IConnectivityManager.Stub

        // do this after the default net is switched, but
        // before LegacyTypeTracker sends legacy broadcasts
        for (NetworkRequestInfo nri : addedRequests) notifyNetworkCallback(newNetwork, nri);
        for (NetworkRequestInfo nri : addedRequests) notifyNetworkAvailable(newNetwork, nri);

        // Linger any networks that are no longer needed. This should be done after sending the
        // available callback for newNetwork.
@@ -5201,7 +5203,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
    }

    private void updateNetworkInfo(NetworkAgentInfo networkAgent, NetworkInfo newInfo) {
        NetworkInfo.State state = newInfo.getState();
        final NetworkInfo.State state = newInfo.getState();
        NetworkInfo oldInfo = null;
        final int oldScore = networkAgent.getCurrentScore();
        synchronized (networkAgent) {
@@ -5328,15 +5330,27 @@ public class ConnectivityService extends IConnectivityManager.Stub
        sendUpdatedScoreToFactories(nai);
    }

    // notify only this one new request of the current state
    protected void notifyNetworkCallback(NetworkAgentInfo nai, NetworkRequestInfo nri) {
        int notifyType = ConnectivityManager.CALLBACK_AVAILABLE;
    // Notify only this one new request of the current state. Transfer all the
    // current state by calling NetworkCapabilities and LinkProperties callbacks
    // so that callers can be guaranteed to have as close to atomicity in state
    // transfer as can be supported by this current API.
    protected void notifyNetworkAvailable(NetworkAgentInfo nai, NetworkRequestInfo nri) {
        mHandler.removeMessages(EVENT_TIMEOUT_NETWORK_REQUEST, nri);
        if (nri.mPendingIntent == null) {
            callCallbackForRequest(nri, nai, notifyType, 0);
        } else {
            sendPendingIntentForRequest(nri, nai, notifyType);
        if (nri.mPendingIntent != null) {
            sendPendingIntentForRequest(nri, nai, ConnectivityManager.CALLBACK_AVAILABLE);
            // Attempt no subsequent state pushes where intents are involved.
            return;
        }

        callCallbackForRequest(nri, nai, ConnectivityManager.CALLBACK_AVAILABLE, 0);
        // Whether a network is currently suspended is also an important
        // element of state to be transferred (it would not otherwise be
        // delivered by any currently available mechanism).
        if (nai.networkInfo.getState() == NetworkInfo.State.SUSPENDED) {
            callCallbackForRequest(nri, nai, ConnectivityManager.CALLBACK_SUSPENDED, 0);
        }
        callCallbackForRequest(nri, nai, ConnectivityManager.CALLBACK_CAP_CHANGED, 0);
        callCallbackForRequest(nri, nai, ConnectivityManager.CALLBACK_IP_CHANGED, 0);
    }

    private void sendLegacyNetworkBroadcast(NetworkAgentInfo nai, DetailedState state, int type) {
+5 −9
Original line number Diff line number Diff line
@@ -1170,16 +1170,12 @@ public class ConnectivityServiceTest extends AndroidTestCase {

        void expectAvailableCallbacks(MockNetworkAgent agent, boolean expectSuspended, int timeoutMs) {
            expectCallback(CallbackState.AVAILABLE, agent, timeoutMs);

            final boolean HAS_DATASYNC_ON_AVAILABLE = false;
            if (HAS_DATASYNC_ON_AVAILABLE) {
            if (expectSuspended) {
                expectCallback(CallbackState.SUSPENDED, agent, timeoutMs);
            }
            expectCallback(CallbackState.NETWORK_CAPABILITIES, agent, timeoutMs);
            expectCallback(CallbackState.LINK_PROPERTIES, agent, timeoutMs);
        }
        }

        void expectAvailableCallbacks(MockNetworkAgent agent) {
            expectAvailableCallbacks(agent, false, TIMEOUT_MS);
@@ -1190,7 +1186,7 @@ public class ConnectivityServiceTest extends AndroidTestCase {
        }

        void expectAvailableAndValidatedCallbacks(MockNetworkAgent agent) {
            expectAvailableCallbacks(agent, true, TIMEOUT_MS);
            expectAvailableCallbacks(agent, false, TIMEOUT_MS);
            expectCapabilitiesWith(NET_CAPABILITY_VALIDATED, agent);
        }