Loading core/java/android/net/NetworkCapabilities.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -17,5 +17,5 @@ package android.net; parcelable NetworkCapabilities; @JavaOnlyStableParcelable parcelable NetworkCapabilities; packages/NetworkStack/src/com/android/server/NetworkStackService.java +8 −6 Original line number Diff line number Diff line Loading @@ -35,7 +35,9 @@ import android.net.INetd; import android.net.INetworkMonitor; import android.net.INetworkMonitorCallbacks; import android.net.INetworkStackConnector; import android.net.LinkProperties; import android.net.Network; import android.net.NetworkCapabilities; import android.net.PrivateDnsConfigParcel; import android.net.dhcp.DhcpServer; import android.net.dhcp.DhcpServingParams; Loading Loading @@ -307,9 +309,9 @@ public class NetworkStackService extends Service { } @Override public void notifyNetworkConnected() { public void notifyNetworkConnected(LinkProperties lp, NetworkCapabilities nc) { checkNetworkStackCallingPermission(); mNm.notifyNetworkConnected(); mNm.notifyNetworkConnected(lp, nc); } @Override Loading @@ -319,15 +321,15 @@ public class NetworkStackService extends Service { } @Override public void notifyLinkPropertiesChanged() { public void notifyLinkPropertiesChanged(LinkProperties lp) { checkNetworkStackCallingPermission(); mNm.notifyLinkPropertiesChanged(); mNm.notifyLinkPropertiesChanged(lp); } @Override public void notifyNetworkCapabilitiesChanged() { public void notifyNetworkCapabilitiesChanged(NetworkCapabilities nc) { checkNetworkStackCallingPermission(); mNm.notifyNetworkCapabilitiesChanged(); mNm.notifyNetworkCapabilitiesChanged(nc); } } } packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java +40 −42 Original line number Diff line number Diff line Loading @@ -78,6 +78,7 @@ import android.telephony.SignalStrength; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; import android.util.Pair; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.RingBufferIndices; Loading Loading @@ -221,19 +222,31 @@ public class NetworkMonitor extends StateMachine { * Message to self indicating captive portal detection is completed. * obj = CaptivePortalProbeResult for detection result; */ public static final int CMD_PROBE_COMPLETE = 16; private static final int CMD_PROBE_COMPLETE = 16; /** * ConnectivityService notifies NetworkMonitor of DNS query responses event. * arg1 = returncode in OnDnsEvent which indicates the response code for the DNS query. */ public static final int EVENT_DNS_NOTIFICATION = 17; private static final int EVENT_DNS_NOTIFICATION = 17; /** * ConnectivityService notifies NetworkMonitor that the user accepts partial connectivity and * NetworkMonitor should ignore the https probe. */ public static final int EVENT_ACCEPT_PARTIAL_CONNECTIVITY = 18; private static final int EVENT_ACCEPT_PARTIAL_CONNECTIVITY = 18; /** * ConnectivityService notifies NetworkMonitor of changed LinkProperties. * obj = new LinkProperties. */ private static final int EVENT_LINK_PROPERTIES_CHANGED = 19; /** * ConnectivityService notifies NetworkMonitor of changed NetworkCapabilities. * obj = new NetworkCapabilities. */ private static final int EVENT_NETWORK_CAPABILITIES_CHANGED = 20; // Start mReevaluateDelayMs at this value and double. private static final int INITIAL_REEVALUATE_DELAY_MS = 1000; Loading Loading @@ -379,10 +392,8 @@ public class NetworkMonitor extends StateMachine { mDataStallValidDnsTimeThreshold = getDataStallValidDnsTimeThreshold(); mDataStallEvaluationType = getDataStallEvalutionType(); // mLinkProperties and mNetworkCapbilities must never be null or we will NPE. // Provide empty objects in case we are started and the network disconnects before // we can ever fetch them. // TODO: Delete ASAP. // Provide empty LinkProperties and NetworkCapabilities to make sure they are never null, // even before notifyNetworkConnected. mLinkProperties = new LinkProperties(); mNetworkCapabilities = new NetworkCapabilities(null); } Loading Loading @@ -434,8 +445,16 @@ public class NetworkMonitor extends StateMachine { /** * Send a notification to NetworkMonitor indicating that the network is now connected. */ public void notifyNetworkConnected() { sendMessage(CMD_NETWORK_CONNECTED); public void notifyNetworkConnected(LinkProperties lp, NetworkCapabilities nc) { sendMessage(CMD_NETWORK_CONNECTED, new Pair<>( new LinkProperties(lp), new NetworkCapabilities(nc))); } private void updateConnectedNetworkAttributes(Message connectedMsg) { final Pair<LinkProperties, NetworkCapabilities> attrs = (Pair<LinkProperties, NetworkCapabilities>) connectedMsg.obj; mLinkProperties = attrs.first; mNetworkCapabilities = attrs.second; } /** Loading @@ -448,37 +467,15 @@ public class NetworkMonitor extends StateMachine { /** * Send a notification to NetworkMonitor indicating that link properties have changed. */ public void notifyLinkPropertiesChanged() { getHandler().post(() -> { updateLinkProperties(); }); } private void updateLinkProperties() { final LinkProperties lp = mCm.getLinkProperties(mNetwork); // If null, we should soon get a message that the network was disconnected, and will stop. if (lp != null) { // TODO: send LinkProperties parceled in notifyLinkPropertiesChanged() and start(). mLinkProperties = lp; } public void notifyLinkPropertiesChanged(final LinkProperties lp) { sendMessage(EVENT_LINK_PROPERTIES_CHANGED, new LinkProperties(lp)); } /** * Send a notification to NetworkMonitor indicating that network capabilities have changed. */ public void notifyNetworkCapabilitiesChanged() { getHandler().post(() -> { updateNetworkCapabilities(); }); } private void updateNetworkCapabilities() { final NetworkCapabilities nc = mCm.getNetworkCapabilities(mNetwork); // If null, we should soon get a message that the network was disconnected, and will stop. if (nc != null) { // TODO: send NetworkCapabilities parceled in notifyNetworkCapsChanged() and start(). mNetworkCapabilities = nc; } public void notifyNetworkCapabilitiesChanged(final NetworkCapabilities nc) { sendMessage(EVENT_NETWORK_CAPABILITIES_CHANGED, new NetworkCapabilities(nc)); } /** Loading Loading @@ -546,17 +543,11 @@ public class NetworkMonitor extends StateMachine { // DefaultState is the parent of all States. It exists only to handle CMD_* messages but // does not entail any real state (hence no enter() or exit() routines). private class DefaultState extends State { @Override public void enter() { // TODO: have those passed parceled in start() and remove this updateLinkProperties(); updateNetworkCapabilities(); } @Override public boolean processMessage(Message message) { switch (message.what) { case CMD_NETWORK_CONNECTED: updateConnectedNetworkAttributes(message); logNetworkEvent(NetworkEvent.NETWORK_CONNECTED); transitionTo(mEvaluatingState); return HANDLED; Loading Loading @@ -660,6 +651,12 @@ public class NetworkMonitor extends StateMachine { case EVENT_ACCEPT_PARTIAL_CONNECTIVITY: mAcceptPartialConnectivity = true; break; case EVENT_LINK_PROPERTIES_CHANGED: mLinkProperties = (LinkProperties) message.obj; break; case EVENT_NETWORK_CAPABILITIES_CHANGED: mNetworkCapabilities = (NetworkCapabilities) message.obj; break; default: break; } Loading @@ -684,6 +681,7 @@ public class NetworkMonitor extends StateMachine { public boolean processMessage(Message message) { switch (message.what) { case CMD_NETWORK_CONNECTED: updateConnectedNetworkAttributes(message); transitionTo(mValidatedState); break; case CMD_EVALUATE_PRIVATE_DNS: Loading packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java +84 −96 File changed.Preview size limit exceeded, changes collapsed. Show changes services/core/java/com/android/server/ConnectivityService.java +9 −18 Original line number Diff line number Diff line Loading @@ -5392,7 +5392,7 @@ public class ConnectivityService extends IConnectivityManager.Stub mContext, mTrackerHandler, new NetworkMisc(networkMisc), this, mNetd, mDnsResolver, mNMS, factorySerialNumber); // Make sure the network capabilities reflect what the agent info says. nai.networkCapabilities = mixInCapabilities(nai, nc); nai.setNetworkCapabilities(mixInCapabilities(nai, nc)); final String extraInfo = networkInfo.getExtraInfo(); final String name = TextUtils.isEmpty(extraInfo) ? nai.networkCapabilities.getSSID() : extraInfo; Loading Loading @@ -5485,12 +5485,12 @@ public class ConnectivityService extends IConnectivityManager.Stub // Start or stop DNS64 detection and 464xlat according to network state. networkAgent.clatd.update(); notifyIfacesChangedForNetworkStats(); if (networkAgent.everConnected) { try { networkAgent.networkMonitor().notifyLinkPropertiesChanged(); networkAgent.networkMonitor().notifyLinkPropertiesChanged(newLp); } catch (RemoteException e) { e.rethrowFromSystemServer(); } if (networkAgent.everConnected) { notifyNetworkCallbacks(networkAgent, ConnectivityManager.CALLBACK_IP_CHANGED); } } Loading Loading @@ -5718,7 +5718,7 @@ public class ConnectivityService extends IConnectivityManager.Stub final NetworkCapabilities prevNc; synchronized (nai) { prevNc = nai.networkCapabilities; nai.networkCapabilities = newNc; nai.setNetworkCapabilities(newNc); } updateUids(nai, prevNc, newNc); Loading @@ -5733,11 +5733,6 @@ public class ConnectivityService extends IConnectivityManager.Stub // If the requestable capabilities have changed or the score changed, we can't have been // called by rematchNetworkAndRequests, so it's safe to start a rematch. rematchAllNetworksAndRequests(nai, oldScore); try { nai.networkMonitor().notifyNetworkCapabilitiesChanged(); } catch (RemoteException e) { e.rethrowFromSystemServer(); } notifyNetworkCallbacks(nai, ConnectivityManager.CALLBACK_CAP_CHANGED); } Loading Loading @@ -5996,11 +5991,6 @@ public class ConnectivityService extends IConnectivityManager.Stub } if (capabilitiesChanged) { try { nai.networkMonitor().notifyNetworkCapabilitiesChanged(); } catch (RemoteException e) { e.rethrowFromSystemServer(); } notifyNetworkCallbacks(nai, ConnectivityManager.CALLBACK_CAP_CHANGED); } Loading Loading @@ -6409,7 +6399,8 @@ public class ConnectivityService extends IConnectivityManager.Stub if (networkAgent.networkMisc.acceptPartialConnectivity) { networkAgent.networkMonitor().setAcceptPartialConnectivity(); } networkAgent.networkMonitor().notifyNetworkConnected(); networkAgent.networkMonitor().notifyNetworkConnected( networkAgent.linkProperties, networkAgent.networkCapabilities); } catch (RemoteException e) { e.rethrowFromSystemServer(); } Loading Loading
core/java/android/net/NetworkCapabilities.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -17,5 +17,5 @@ package android.net; parcelable NetworkCapabilities; @JavaOnlyStableParcelable parcelable NetworkCapabilities;
packages/NetworkStack/src/com/android/server/NetworkStackService.java +8 −6 Original line number Diff line number Diff line Loading @@ -35,7 +35,9 @@ import android.net.INetd; import android.net.INetworkMonitor; import android.net.INetworkMonitorCallbacks; import android.net.INetworkStackConnector; import android.net.LinkProperties; import android.net.Network; import android.net.NetworkCapabilities; import android.net.PrivateDnsConfigParcel; import android.net.dhcp.DhcpServer; import android.net.dhcp.DhcpServingParams; Loading Loading @@ -307,9 +309,9 @@ public class NetworkStackService extends Service { } @Override public void notifyNetworkConnected() { public void notifyNetworkConnected(LinkProperties lp, NetworkCapabilities nc) { checkNetworkStackCallingPermission(); mNm.notifyNetworkConnected(); mNm.notifyNetworkConnected(lp, nc); } @Override Loading @@ -319,15 +321,15 @@ public class NetworkStackService extends Service { } @Override public void notifyLinkPropertiesChanged() { public void notifyLinkPropertiesChanged(LinkProperties lp) { checkNetworkStackCallingPermission(); mNm.notifyLinkPropertiesChanged(); mNm.notifyLinkPropertiesChanged(lp); } @Override public void notifyNetworkCapabilitiesChanged() { public void notifyNetworkCapabilitiesChanged(NetworkCapabilities nc) { checkNetworkStackCallingPermission(); mNm.notifyNetworkCapabilitiesChanged(); mNm.notifyNetworkCapabilitiesChanged(nc); } } }
packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java +40 −42 Original line number Diff line number Diff line Loading @@ -78,6 +78,7 @@ import android.telephony.SignalStrength; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; import android.util.Pair; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.RingBufferIndices; Loading Loading @@ -221,19 +222,31 @@ public class NetworkMonitor extends StateMachine { * Message to self indicating captive portal detection is completed. * obj = CaptivePortalProbeResult for detection result; */ public static final int CMD_PROBE_COMPLETE = 16; private static final int CMD_PROBE_COMPLETE = 16; /** * ConnectivityService notifies NetworkMonitor of DNS query responses event. * arg1 = returncode in OnDnsEvent which indicates the response code for the DNS query. */ public static final int EVENT_DNS_NOTIFICATION = 17; private static final int EVENT_DNS_NOTIFICATION = 17; /** * ConnectivityService notifies NetworkMonitor that the user accepts partial connectivity and * NetworkMonitor should ignore the https probe. */ public static final int EVENT_ACCEPT_PARTIAL_CONNECTIVITY = 18; private static final int EVENT_ACCEPT_PARTIAL_CONNECTIVITY = 18; /** * ConnectivityService notifies NetworkMonitor of changed LinkProperties. * obj = new LinkProperties. */ private static final int EVENT_LINK_PROPERTIES_CHANGED = 19; /** * ConnectivityService notifies NetworkMonitor of changed NetworkCapabilities. * obj = new NetworkCapabilities. */ private static final int EVENT_NETWORK_CAPABILITIES_CHANGED = 20; // Start mReevaluateDelayMs at this value and double. private static final int INITIAL_REEVALUATE_DELAY_MS = 1000; Loading Loading @@ -379,10 +392,8 @@ public class NetworkMonitor extends StateMachine { mDataStallValidDnsTimeThreshold = getDataStallValidDnsTimeThreshold(); mDataStallEvaluationType = getDataStallEvalutionType(); // mLinkProperties and mNetworkCapbilities must never be null or we will NPE. // Provide empty objects in case we are started and the network disconnects before // we can ever fetch them. // TODO: Delete ASAP. // Provide empty LinkProperties and NetworkCapabilities to make sure they are never null, // even before notifyNetworkConnected. mLinkProperties = new LinkProperties(); mNetworkCapabilities = new NetworkCapabilities(null); } Loading Loading @@ -434,8 +445,16 @@ public class NetworkMonitor extends StateMachine { /** * Send a notification to NetworkMonitor indicating that the network is now connected. */ public void notifyNetworkConnected() { sendMessage(CMD_NETWORK_CONNECTED); public void notifyNetworkConnected(LinkProperties lp, NetworkCapabilities nc) { sendMessage(CMD_NETWORK_CONNECTED, new Pair<>( new LinkProperties(lp), new NetworkCapabilities(nc))); } private void updateConnectedNetworkAttributes(Message connectedMsg) { final Pair<LinkProperties, NetworkCapabilities> attrs = (Pair<LinkProperties, NetworkCapabilities>) connectedMsg.obj; mLinkProperties = attrs.first; mNetworkCapabilities = attrs.second; } /** Loading @@ -448,37 +467,15 @@ public class NetworkMonitor extends StateMachine { /** * Send a notification to NetworkMonitor indicating that link properties have changed. */ public void notifyLinkPropertiesChanged() { getHandler().post(() -> { updateLinkProperties(); }); } private void updateLinkProperties() { final LinkProperties lp = mCm.getLinkProperties(mNetwork); // If null, we should soon get a message that the network was disconnected, and will stop. if (lp != null) { // TODO: send LinkProperties parceled in notifyLinkPropertiesChanged() and start(). mLinkProperties = lp; } public void notifyLinkPropertiesChanged(final LinkProperties lp) { sendMessage(EVENT_LINK_PROPERTIES_CHANGED, new LinkProperties(lp)); } /** * Send a notification to NetworkMonitor indicating that network capabilities have changed. */ public void notifyNetworkCapabilitiesChanged() { getHandler().post(() -> { updateNetworkCapabilities(); }); } private void updateNetworkCapabilities() { final NetworkCapabilities nc = mCm.getNetworkCapabilities(mNetwork); // If null, we should soon get a message that the network was disconnected, and will stop. if (nc != null) { // TODO: send NetworkCapabilities parceled in notifyNetworkCapsChanged() and start(). mNetworkCapabilities = nc; } public void notifyNetworkCapabilitiesChanged(final NetworkCapabilities nc) { sendMessage(EVENT_NETWORK_CAPABILITIES_CHANGED, new NetworkCapabilities(nc)); } /** Loading Loading @@ -546,17 +543,11 @@ public class NetworkMonitor extends StateMachine { // DefaultState is the parent of all States. It exists only to handle CMD_* messages but // does not entail any real state (hence no enter() or exit() routines). private class DefaultState extends State { @Override public void enter() { // TODO: have those passed parceled in start() and remove this updateLinkProperties(); updateNetworkCapabilities(); } @Override public boolean processMessage(Message message) { switch (message.what) { case CMD_NETWORK_CONNECTED: updateConnectedNetworkAttributes(message); logNetworkEvent(NetworkEvent.NETWORK_CONNECTED); transitionTo(mEvaluatingState); return HANDLED; Loading Loading @@ -660,6 +651,12 @@ public class NetworkMonitor extends StateMachine { case EVENT_ACCEPT_PARTIAL_CONNECTIVITY: mAcceptPartialConnectivity = true; break; case EVENT_LINK_PROPERTIES_CHANGED: mLinkProperties = (LinkProperties) message.obj; break; case EVENT_NETWORK_CAPABILITIES_CHANGED: mNetworkCapabilities = (NetworkCapabilities) message.obj; break; default: break; } Loading @@ -684,6 +681,7 @@ public class NetworkMonitor extends StateMachine { public boolean processMessage(Message message) { switch (message.what) { case CMD_NETWORK_CONNECTED: updateConnectedNetworkAttributes(message); transitionTo(mValidatedState); break; case CMD_EVALUATE_PRIVATE_DNS: Loading
packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java +84 −96 File changed.Preview size limit exceeded, changes collapsed. Show changes
services/core/java/com/android/server/ConnectivityService.java +9 −18 Original line number Diff line number Diff line Loading @@ -5392,7 +5392,7 @@ public class ConnectivityService extends IConnectivityManager.Stub mContext, mTrackerHandler, new NetworkMisc(networkMisc), this, mNetd, mDnsResolver, mNMS, factorySerialNumber); // Make sure the network capabilities reflect what the agent info says. nai.networkCapabilities = mixInCapabilities(nai, nc); nai.setNetworkCapabilities(mixInCapabilities(nai, nc)); final String extraInfo = networkInfo.getExtraInfo(); final String name = TextUtils.isEmpty(extraInfo) ? nai.networkCapabilities.getSSID() : extraInfo; Loading Loading @@ -5485,12 +5485,12 @@ public class ConnectivityService extends IConnectivityManager.Stub // Start or stop DNS64 detection and 464xlat according to network state. networkAgent.clatd.update(); notifyIfacesChangedForNetworkStats(); if (networkAgent.everConnected) { try { networkAgent.networkMonitor().notifyLinkPropertiesChanged(); networkAgent.networkMonitor().notifyLinkPropertiesChanged(newLp); } catch (RemoteException e) { e.rethrowFromSystemServer(); } if (networkAgent.everConnected) { notifyNetworkCallbacks(networkAgent, ConnectivityManager.CALLBACK_IP_CHANGED); } } Loading Loading @@ -5718,7 +5718,7 @@ public class ConnectivityService extends IConnectivityManager.Stub final NetworkCapabilities prevNc; synchronized (nai) { prevNc = nai.networkCapabilities; nai.networkCapabilities = newNc; nai.setNetworkCapabilities(newNc); } updateUids(nai, prevNc, newNc); Loading @@ -5733,11 +5733,6 @@ public class ConnectivityService extends IConnectivityManager.Stub // If the requestable capabilities have changed or the score changed, we can't have been // called by rematchNetworkAndRequests, so it's safe to start a rematch. rematchAllNetworksAndRequests(nai, oldScore); try { nai.networkMonitor().notifyNetworkCapabilitiesChanged(); } catch (RemoteException e) { e.rethrowFromSystemServer(); } notifyNetworkCallbacks(nai, ConnectivityManager.CALLBACK_CAP_CHANGED); } Loading Loading @@ -5996,11 +5991,6 @@ public class ConnectivityService extends IConnectivityManager.Stub } if (capabilitiesChanged) { try { nai.networkMonitor().notifyNetworkCapabilitiesChanged(); } catch (RemoteException e) { e.rethrowFromSystemServer(); } notifyNetworkCallbacks(nai, ConnectivityManager.CALLBACK_CAP_CHANGED); } Loading Loading @@ -6409,7 +6399,8 @@ public class ConnectivityService extends IConnectivityManager.Stub if (networkAgent.networkMisc.acceptPartialConnectivity) { networkAgent.networkMonitor().setAcceptPartialConnectivity(); } networkAgent.networkMonitor().notifyNetworkConnected(); networkAgent.networkMonitor().notifyNetworkConnected( networkAgent.linkProperties, networkAgent.networkCapabilities); } catch (RemoteException e) { e.rethrowFromSystemServer(); } Loading