Loading core/api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -6240,6 +6240,7 @@ package android.net { field public static final int NET_CAPABILITY_OEM_PAID = 22; // 0x16 field public static final int NET_CAPABILITY_OEM_PRIVATE = 26; // 0x1a field public static final int NET_CAPABILITY_PARTIAL_CONNECTIVITY = 24; // 0x18 field public static final int NET_CAPABILITY_VEHICLE_INTERNAL = 27; // 0x1b } public static final class NetworkCapabilities.Builder { Loading core/java/android/net/NetworkCapabilities.java +22 −10 Original line number Diff line number Diff line Loading @@ -171,6 +171,7 @@ public final class NetworkCapabilities implements Parcelable { NET_CAPABILITY_PARTIAL_CONNECTIVITY, NET_CAPABILITY_TEMPORARILY_NOT_METERED, NET_CAPABILITY_OEM_PRIVATE, NET_CAPABILITY_VEHICLE_INTERNAL, }) public @interface NetCapability { } Loading Loading @@ -357,8 +358,17 @@ public final class NetworkCapabilities implements Parcelable { @SystemApi public static final int NET_CAPABILITY_OEM_PRIVATE = 26; /** * Indicates this is an internal vehicle network, meant to communicate with other * automotive systems. * * @hide */ @SystemApi public static final int NET_CAPABILITY_VEHICLE_INTERNAL = 27; private static final int MIN_NET_CAPABILITY = NET_CAPABILITY_MMS; private static final int MAX_NET_CAPABILITY = NET_CAPABILITY_OEM_PRIVATE; private static final int MAX_NET_CAPABILITY = NET_CAPABILITY_VEHICLE_INTERNAL; /** * Network capabilities that are expected to be mutable, i.e., can change while a particular Loading Loading @@ -401,15 +411,16 @@ public final class NetworkCapabilities implements Parcelable { */ @VisibleForTesting /* package */ static final long RESTRICTED_CAPABILITIES = (1 << NET_CAPABILITY_CBS) | (1 << NET_CAPABILITY_DUN) | (1 << NET_CAPABILITY_EIMS) | (1 << NET_CAPABILITY_FOTA) | (1 << NET_CAPABILITY_IA) | (1 << NET_CAPABILITY_IMS) | (1 << NET_CAPABILITY_RCS) | (1 << NET_CAPABILITY_XCAP) | (1 << NET_CAPABILITY_MCX); (1 << NET_CAPABILITY_CBS) | (1 << NET_CAPABILITY_DUN) | (1 << NET_CAPABILITY_EIMS) | (1 << NET_CAPABILITY_FOTA) | (1 << NET_CAPABILITY_IA) | (1 << NET_CAPABILITY_IMS) | (1 << NET_CAPABILITY_MCX) | (1 << NET_CAPABILITY_RCS) | (1 << NET_CAPABILITY_VEHICLE_INTERNAL) | (1 << NET_CAPABILITY_XCAP); /** * Capabilities that force network to be restricted. Loading Loading @@ -1939,6 +1950,7 @@ public final class NetworkCapabilities implements Parcelable { case NET_CAPABILITY_PARTIAL_CONNECTIVITY: return "PARTIAL_CONNECTIVITY"; case NET_CAPABILITY_TEMPORARILY_NOT_METERED: return "TEMPORARILY_NOT_METERED"; case NET_CAPABILITY_OEM_PRIVATE: return "OEM_PRIVATE"; case NET_CAPABILITY_VEHICLE_INTERNAL: return "NET_CAPABILITY_VEHICLE_INTERNAL"; default: return Integer.toString(capability); } } Loading core/res/res/values/config.xml +4 −0 Original line number Diff line number Diff line Loading @@ -455,6 +455,10 @@ --> </string-array> <!-- Whether the internal vehicle network should remain active even when no apps requested it. --> <bool name="config_vehicleInternalNetworkAlwaysRequested">false</bool> <!-- Configuration of network interfaces that support WakeOnLAN --> <string-array translatable="false" name="config_wakeonlan_supported_interfaces"> <!-- Loading core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -684,6 +684,7 @@ <java-symbol type="string" name="config_ethernet_iface_regex" /> <java-symbol type="string" name="not_checked" /> <java-symbol type="array" name="config_ethernet_interfaces" /> <java-symbol type="bool" name="config_vehicleInternalNetworkAlwaysRequested" /> <java-symbol type="array" name="config_wakeonlan_supported_interfaces" /> <java-symbol type="string" name="config_forceVoiceInteractionServicePackage" /> <java-symbol type="string" name="config_mms_user_agent" /> Loading services/core/java/com/android/server/ConnectivityService.java +29 −1 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ import static android.system.OsConstants.IPPROTO_UDP; import static java.util.Map.Entry; import android.Manifest; import android.annotation.BoolRes; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.AppOpsManager; Loading Loading @@ -974,6 +975,10 @@ public class ConnectivityService extends IConnectivityManager.Stub mDefaultWifiRequest = createDefaultInternetRequestForTransport( NetworkCapabilities.TRANSPORT_WIFI, NetworkRequest.Type.BACKGROUND_REQUEST); mDefaultVehicleRequest = createAlwaysOnRequestForCapability( NetworkCapabilities.NET_CAPABILITY_VEHICLE_INTERNAL, NetworkRequest.Type.BACKGROUND_REQUEST); mHandlerThread = mDeps.makeHandlerThread(); mHandlerThread.start(); mHandler = new InternalHandler(mHandlerThread.getLooper()); Loading Loading @@ -1173,6 +1178,15 @@ public class ConnectivityService extends IConnectivityManager.Stub return new NetworkRequest(netCap, TYPE_NONE, nextNetworkRequestId(), type); } private NetworkRequest createAlwaysOnRequestForCapability(int capability, NetworkRequest.Type type) { final NetworkCapabilities netCap = new NetworkCapabilities(); netCap.clearAll(); netCap.addCapability(capability); netCap.setRequestorUidAndPackageName(Process.myUid(), mContext.getPackageName()); return new NetworkRequest(netCap, TYPE_NONE, nextNetworkRequestId(), type); } // Used only for testing. // TODO: Delete this and either: // 1. Give FakeSettingsProvider the ability to send settings change notifications (requires Loading @@ -1190,10 +1204,19 @@ public class ConnectivityService extends IConnectivityManager.Stub mHandler.sendEmptyMessage(EVENT_PRIVATE_DNS_SETTINGS_CHANGED); } private void handleAlwaysOnNetworkRequest(NetworkRequest networkRequest, @BoolRes int id) { final boolean enable = mContext.getResources().getBoolean(id); handleAlwaysOnNetworkRequest(networkRequest, enable); } private void handleAlwaysOnNetworkRequest( NetworkRequest networkRequest, String settingName, boolean defaultValue) { final boolean enable = toBool(Settings.Global.getInt( mContext.getContentResolver(), settingName, encodeBool(defaultValue))); handleAlwaysOnNetworkRequest(networkRequest, enable); } private void handleAlwaysOnNetworkRequest(NetworkRequest networkRequest, boolean enable) { final boolean isEnabled = (mNetworkRequests.get(networkRequest) != null); if (enable == isEnabled) { return; // Nothing to do. Loading @@ -1213,6 +1236,8 @@ public class ConnectivityService extends IConnectivityManager.Stub mDefaultMobileDataRequest, Settings.Global.MOBILE_DATA_ALWAYS_ON, true); handleAlwaysOnNetworkRequest(mDefaultWifiRequest, Settings.Global.WIFI_ALWAYS_REQUESTED, false); handleAlwaysOnNetworkRequest(mDefaultVehicleRequest, com.android.internal.R.bool.config_vehicleInternalNetworkAlwaysRequested); } private void registerSettingsCallbacks() { Loading Loading @@ -5966,6 +5991,9 @@ public class ConnectivityService extends IConnectivityManager.Stub // priority networks like ethernet are active. private final NetworkRequest mDefaultWifiRequest; // Request used to optionally keep vehicle internal network always active private final NetworkRequest mDefaultVehicleRequest; private NetworkAgentInfo getDefaultNetwork() { return mDefaultNetworkNai; } Loading Loading
core/api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -6240,6 +6240,7 @@ package android.net { field public static final int NET_CAPABILITY_OEM_PAID = 22; // 0x16 field public static final int NET_CAPABILITY_OEM_PRIVATE = 26; // 0x1a field public static final int NET_CAPABILITY_PARTIAL_CONNECTIVITY = 24; // 0x18 field public static final int NET_CAPABILITY_VEHICLE_INTERNAL = 27; // 0x1b } public static final class NetworkCapabilities.Builder { Loading
core/java/android/net/NetworkCapabilities.java +22 −10 Original line number Diff line number Diff line Loading @@ -171,6 +171,7 @@ public final class NetworkCapabilities implements Parcelable { NET_CAPABILITY_PARTIAL_CONNECTIVITY, NET_CAPABILITY_TEMPORARILY_NOT_METERED, NET_CAPABILITY_OEM_PRIVATE, NET_CAPABILITY_VEHICLE_INTERNAL, }) public @interface NetCapability { } Loading Loading @@ -357,8 +358,17 @@ public final class NetworkCapabilities implements Parcelable { @SystemApi public static final int NET_CAPABILITY_OEM_PRIVATE = 26; /** * Indicates this is an internal vehicle network, meant to communicate with other * automotive systems. * * @hide */ @SystemApi public static final int NET_CAPABILITY_VEHICLE_INTERNAL = 27; private static final int MIN_NET_CAPABILITY = NET_CAPABILITY_MMS; private static final int MAX_NET_CAPABILITY = NET_CAPABILITY_OEM_PRIVATE; private static final int MAX_NET_CAPABILITY = NET_CAPABILITY_VEHICLE_INTERNAL; /** * Network capabilities that are expected to be mutable, i.e., can change while a particular Loading Loading @@ -401,15 +411,16 @@ public final class NetworkCapabilities implements Parcelable { */ @VisibleForTesting /* package */ static final long RESTRICTED_CAPABILITIES = (1 << NET_CAPABILITY_CBS) | (1 << NET_CAPABILITY_DUN) | (1 << NET_CAPABILITY_EIMS) | (1 << NET_CAPABILITY_FOTA) | (1 << NET_CAPABILITY_IA) | (1 << NET_CAPABILITY_IMS) | (1 << NET_CAPABILITY_RCS) | (1 << NET_CAPABILITY_XCAP) | (1 << NET_CAPABILITY_MCX); (1 << NET_CAPABILITY_CBS) | (1 << NET_CAPABILITY_DUN) | (1 << NET_CAPABILITY_EIMS) | (1 << NET_CAPABILITY_FOTA) | (1 << NET_CAPABILITY_IA) | (1 << NET_CAPABILITY_IMS) | (1 << NET_CAPABILITY_MCX) | (1 << NET_CAPABILITY_RCS) | (1 << NET_CAPABILITY_VEHICLE_INTERNAL) | (1 << NET_CAPABILITY_XCAP); /** * Capabilities that force network to be restricted. Loading Loading @@ -1939,6 +1950,7 @@ public final class NetworkCapabilities implements Parcelable { case NET_CAPABILITY_PARTIAL_CONNECTIVITY: return "PARTIAL_CONNECTIVITY"; case NET_CAPABILITY_TEMPORARILY_NOT_METERED: return "TEMPORARILY_NOT_METERED"; case NET_CAPABILITY_OEM_PRIVATE: return "OEM_PRIVATE"; case NET_CAPABILITY_VEHICLE_INTERNAL: return "NET_CAPABILITY_VEHICLE_INTERNAL"; default: return Integer.toString(capability); } } Loading
core/res/res/values/config.xml +4 −0 Original line number Diff line number Diff line Loading @@ -455,6 +455,10 @@ --> </string-array> <!-- Whether the internal vehicle network should remain active even when no apps requested it. --> <bool name="config_vehicleInternalNetworkAlwaysRequested">false</bool> <!-- Configuration of network interfaces that support WakeOnLAN --> <string-array translatable="false" name="config_wakeonlan_supported_interfaces"> <!-- Loading
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -684,6 +684,7 @@ <java-symbol type="string" name="config_ethernet_iface_regex" /> <java-symbol type="string" name="not_checked" /> <java-symbol type="array" name="config_ethernet_interfaces" /> <java-symbol type="bool" name="config_vehicleInternalNetworkAlwaysRequested" /> <java-symbol type="array" name="config_wakeonlan_supported_interfaces" /> <java-symbol type="string" name="config_forceVoiceInteractionServicePackage" /> <java-symbol type="string" name="config_mms_user_agent" /> Loading
services/core/java/com/android/server/ConnectivityService.java +29 −1 Original line number Diff line number Diff line Loading @@ -63,6 +63,7 @@ import static android.system.OsConstants.IPPROTO_UDP; import static java.util.Map.Entry; import android.Manifest; import android.annotation.BoolRes; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.AppOpsManager; Loading Loading @@ -974,6 +975,10 @@ public class ConnectivityService extends IConnectivityManager.Stub mDefaultWifiRequest = createDefaultInternetRequestForTransport( NetworkCapabilities.TRANSPORT_WIFI, NetworkRequest.Type.BACKGROUND_REQUEST); mDefaultVehicleRequest = createAlwaysOnRequestForCapability( NetworkCapabilities.NET_CAPABILITY_VEHICLE_INTERNAL, NetworkRequest.Type.BACKGROUND_REQUEST); mHandlerThread = mDeps.makeHandlerThread(); mHandlerThread.start(); mHandler = new InternalHandler(mHandlerThread.getLooper()); Loading Loading @@ -1173,6 +1178,15 @@ public class ConnectivityService extends IConnectivityManager.Stub return new NetworkRequest(netCap, TYPE_NONE, nextNetworkRequestId(), type); } private NetworkRequest createAlwaysOnRequestForCapability(int capability, NetworkRequest.Type type) { final NetworkCapabilities netCap = new NetworkCapabilities(); netCap.clearAll(); netCap.addCapability(capability); netCap.setRequestorUidAndPackageName(Process.myUid(), mContext.getPackageName()); return new NetworkRequest(netCap, TYPE_NONE, nextNetworkRequestId(), type); } // Used only for testing. // TODO: Delete this and either: // 1. Give FakeSettingsProvider the ability to send settings change notifications (requires Loading @@ -1190,10 +1204,19 @@ public class ConnectivityService extends IConnectivityManager.Stub mHandler.sendEmptyMessage(EVENT_PRIVATE_DNS_SETTINGS_CHANGED); } private void handleAlwaysOnNetworkRequest(NetworkRequest networkRequest, @BoolRes int id) { final boolean enable = mContext.getResources().getBoolean(id); handleAlwaysOnNetworkRequest(networkRequest, enable); } private void handleAlwaysOnNetworkRequest( NetworkRequest networkRequest, String settingName, boolean defaultValue) { final boolean enable = toBool(Settings.Global.getInt( mContext.getContentResolver(), settingName, encodeBool(defaultValue))); handleAlwaysOnNetworkRequest(networkRequest, enable); } private void handleAlwaysOnNetworkRequest(NetworkRequest networkRequest, boolean enable) { final boolean isEnabled = (mNetworkRequests.get(networkRequest) != null); if (enable == isEnabled) { return; // Nothing to do. Loading @@ -1213,6 +1236,8 @@ public class ConnectivityService extends IConnectivityManager.Stub mDefaultMobileDataRequest, Settings.Global.MOBILE_DATA_ALWAYS_ON, true); handleAlwaysOnNetworkRequest(mDefaultWifiRequest, Settings.Global.WIFI_ALWAYS_REQUESTED, false); handleAlwaysOnNetworkRequest(mDefaultVehicleRequest, com.android.internal.R.bool.config_vehicleInternalNetworkAlwaysRequested); } private void registerSettingsCallbacks() { Loading Loading @@ -5966,6 +5991,9 @@ public class ConnectivityService extends IConnectivityManager.Stub // priority networks like ethernet are active. private final NetworkRequest mDefaultWifiRequest; // Request used to optionally keep vehicle internal network always active private final NetworkRequest mDefaultVehicleRequest; private NetworkAgentInfo getDefaultNetwork() { return mDefaultNetworkNai; } Loading