diff options
28 files changed, 477 insertions, 394 deletions
diff --git a/api/current.txt b/api/current.txt index a76fb43b3ca2..8f5dcafd54fc 100755 --- a/api/current.txt +++ b/api/current.txt @@ -27348,16 +27348,25 @@ package android.net { } public final class LinkProperties implements android.os.Parcelable { + ctor public LinkProperties(); + method public boolean addRoute(@NonNull android.net.RouteInfo); + method public void clear(); method public int describeContents(); - method public java.util.List<java.net.InetAddress> getDnsServers(); - method public String getDomains(); - method public android.net.ProxyInfo getHttpProxy(); + method @NonNull public java.util.List<java.net.InetAddress> getDnsServers(); + method @Nullable public String getDomains(); + method @Nullable public android.net.ProxyInfo getHttpProxy(); method @Nullable public String getInterfaceName(); - method public java.util.List<android.net.LinkAddress> getLinkAddresses(); + method @NonNull public java.util.List<android.net.LinkAddress> getLinkAddresses(); method public int getMtu(); method @Nullable public String getPrivateDnsServerName(); - method public java.util.List<android.net.RouteInfo> getRoutes(); + method @NonNull public java.util.List<android.net.RouteInfo> getRoutes(); method public boolean isPrivateDnsActive(); + method public void setDnsServers(@NonNull java.util.Collection<java.net.InetAddress>); + method public void setDomains(@Nullable String); + method public void setHttpProxy(@Nullable android.net.ProxyInfo); + method public void setInterfaceName(@Nullable String); + method public void setLinkAddresses(@NonNull java.util.Collection<android.net.LinkAddress>); + method public void setMtu(int); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.net.LinkProperties> CREATOR; } @@ -27465,6 +27474,7 @@ package android.net { method public int describeContents(); method public int getLinkDownstreamBandwidthKbps(); method public int getLinkUpstreamBandwidthKbps(); + method public int getSignalStrength(); method @Nullable public android.net.TransportInfo getTransportInfo(); method public boolean hasCapability(int); method public boolean hasTransport(int); @@ -27493,6 +27503,7 @@ package android.net { field public static final int NET_CAPABILITY_VALIDATED = 16; // 0x10 field public static final int NET_CAPABILITY_WIFI_P2P = 6; // 0x6 field public static final int NET_CAPABILITY_XCAP = 9; // 0x9 + field public static final int SIGNAL_STRENGTH_UNSPECIFIED = -2147483648; // 0x80000000 field public static final int TRANSPORT_BLUETOOTH = 2; // 0x2 field public static final int TRANSPORT_CELLULAR = 0; // 0x0 field public static final int TRANSPORT_ETHERNET = 3; // 0x3 @@ -27504,7 +27515,7 @@ package android.net { @Deprecated public class NetworkInfo implements android.os.Parcelable { method @Deprecated public int describeContents(); - method @Deprecated public android.net.NetworkInfo.DetailedState getDetailedState(); + method @Deprecated @NonNull public android.net.NetworkInfo.DetailedState getDetailedState(); method @Deprecated public String getExtraInfo(); method @Deprecated public String getReason(); method @Deprecated public android.net.NetworkInfo.State getState(); diff --git a/api/system-current.txt b/api/system-current.txt index 1bf0daba88c7..143358d4e364 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -3102,7 +3102,7 @@ package android.net { method @RequiresPermission(anyOf={android.Manifest.permission.TETHER_PRIVILEGED, android.Manifest.permission.WRITE_SETTINGS}) public boolean isTetheringSupported(); method @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void registerTetheringEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.ConnectivityManager.OnTetheringEventCallback); method @RequiresPermission(anyOf={"android.permission.NETWORK_SETTINGS", android.Manifest.permission.NETWORK_SETUP_WIZARD, "android.permission.NETWORK_STACK"}) public void setAirplaneMode(boolean); - method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public void startCaptivePortalApp(android.net.Network, android.os.Bundle); + method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public void startCaptivePortalApp(@NonNull android.net.Network, @NonNull android.os.Bundle); method @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback); method @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void startTethering(int, boolean, android.net.ConnectivityManager.OnStartTetheringCallback, android.os.Handler); method @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public void stopTethering(int); @@ -3133,65 +3133,55 @@ package android.net { } public final class IpPrefix implements android.os.Parcelable { - ctor public IpPrefix(java.net.InetAddress, int); - ctor public IpPrefix(String); + ctor public IpPrefix(@NonNull java.net.InetAddress, int); + ctor public IpPrefix(@NonNull String); } public class LinkAddress implements android.os.Parcelable { ctor public LinkAddress(java.net.InetAddress, int, int, int); ctor public LinkAddress(@NonNull java.net.InetAddress, int); ctor public LinkAddress(@NonNull String); - ctor public LinkAddress(String, int, int); + ctor public LinkAddress(@NonNull String, int, int); method public boolean isGlobalPreferred(); - method public boolean isIPv4(); - method public boolean isIPv6(); - method public boolean isSameAddressAs(android.net.LinkAddress); + method public boolean isIpv4(); + method public boolean isIpv6(); + method public boolean isSameAddressAs(@Nullable android.net.LinkAddress); } public final class LinkProperties implements android.os.Parcelable { - ctor public LinkProperties(); - ctor public LinkProperties(android.net.LinkProperties); - method public boolean addDnsServer(java.net.InetAddress); - method public boolean addLinkAddress(android.net.LinkAddress); - method public boolean addRoute(android.net.RouteInfo); - method public void clear(); + ctor public LinkProperties(@Nullable android.net.LinkProperties); + method public boolean addDnsServer(@NonNull java.net.InetAddress); + method public boolean addLinkAddress(@NonNull android.net.LinkAddress); method @Nullable public android.net.IpPrefix getNat64Prefix(); - method public java.util.List<java.net.InetAddress> getPcscfServers(); - method public String getTcpBufferSizes(); - method public java.util.List<java.net.InetAddress> getValidatedPrivateDnsServers(); - method public boolean hasGlobalIPv6Address(); - method public boolean hasIPv4Address(); - method public boolean hasIPv6DefaultRoute(); - method public boolean isIPv4Provisioned(); - method public boolean isIPv6Provisioned(); + method @NonNull public java.util.List<java.net.InetAddress> getPcscfServers(); + method @Nullable public String getTcpBufferSizes(); + method @NonNull public java.util.List<java.net.InetAddress> getValidatedPrivateDnsServers(); + method public boolean hasGlobalIpv6Address(); + method public boolean hasIpv4Address(); + method public boolean hasIpv6DefaultRoute(); + method public boolean isIpv4Provisioned(); + method public boolean isIpv6Provisioned(); method public boolean isProvisioned(); - method public boolean isReachable(java.net.InetAddress); - method public boolean removeDnsServer(java.net.InetAddress); - method public boolean removeLinkAddress(android.net.LinkAddress); - method public boolean removeRoute(android.net.RouteInfo); - method public void setDnsServers(java.util.Collection<java.net.InetAddress>); - method public void setDomains(String); - method public void setHttpProxy(android.net.ProxyInfo); - method public void setInterfaceName(String); - method public void setLinkAddresses(java.util.Collection<android.net.LinkAddress>); - method public void setMtu(int); - method public void setNat64Prefix(android.net.IpPrefix); - method public void setPcscfServers(java.util.Collection<java.net.InetAddress>); + method public boolean isReachable(@NonNull java.net.InetAddress); + method public boolean removeDnsServer(@NonNull java.net.InetAddress); + method public boolean removeLinkAddress(@NonNull android.net.LinkAddress); + method public boolean removeRoute(@NonNull android.net.RouteInfo); + method public void setNat64Prefix(@Nullable android.net.IpPrefix); + method public void setPcscfServers(@NonNull java.util.Collection<java.net.InetAddress>); method public void setPrivateDnsServerName(@Nullable String); - method public void setTcpBufferSizes(String); + method public void setTcpBufferSizes(@Nullable String); method public void setUsePrivateDns(boolean); - method public void setValidatedPrivateDnsServers(java.util.Collection<java.net.InetAddress>); + method public void setValidatedPrivateDnsServers(@NonNull java.util.Collection<java.net.InetAddress>); } public class Network implements android.os.Parcelable { - ctor public Network(android.net.Network); - method public android.net.Network getPrivateDnsBypassingCopy(); + ctor public Network(@NonNull android.net.Network); + method @NonNull public android.net.Network getPrivateDnsBypassingCopy(); } public final class NetworkCapabilities implements android.os.Parcelable { - method public int getSignalStrength(); - method public int[] getTransportTypes(); - method public boolean satisfiedByNetworkCapabilities(android.net.NetworkCapabilities); + method @NonNull public int[] getTransportTypes(); + method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities); field public static final int NET_CAPABILITY_OEM_PAID = 22; // 0x16 field public static final int NET_CAPABILITY_PARTIAL_CONNECTIVITY = 24; // 0x18 } @@ -3213,7 +3203,7 @@ package android.net { } public static class NetworkRequest.Builder { - method public android.net.NetworkRequest.Builder setSignalStrength(int); + method @NonNull public android.net.NetworkRequest.Builder setSignalStrength(int); } public class NetworkScoreManager { @@ -3237,7 +3227,7 @@ package android.net { } public final class RouteInfo implements android.os.Parcelable { - ctor public RouteInfo(android.net.IpPrefix, java.net.InetAddress, String, int); + ctor public RouteInfo(@Nullable android.net.IpPrefix, @Nullable java.net.InetAddress, @Nullable String, int); method public int getType(); field public static final int RTN_THROW = 9; // 0x9 field public static final int RTN_UNICAST = 1; // 0x1 @@ -3326,8 +3316,8 @@ package android.net.apf { public final class ApfCapabilities implements android.os.Parcelable { ctor public ApfCapabilities(int, int, int); method public int describeContents(); - method public static boolean getApfDrop8023Frames(android.content.Context); - method public static int[] getApfEthTypeBlackList(android.content.Context); + method public static boolean getApfDrop8023Frames(@NonNull android.content.Context); + method @NonNull public static int[] getApfEthTypeBlackList(@NonNull android.content.Context); method public boolean hasDataAccess(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.net.apf.ApfCapabilities> CREATOR; @@ -3493,15 +3483,15 @@ package android.net.metrics { public final class RaEvent implements android.net.metrics.IpConnectivityLog.Event { } - public static class RaEvent.Builder { + public static final class RaEvent.Builder { ctor public RaEvent.Builder(); - method public android.net.metrics.RaEvent build(); - method public android.net.metrics.RaEvent.Builder updateDnsslLifetime(long); - method public android.net.metrics.RaEvent.Builder updatePrefixPreferredLifetime(long); - method public android.net.metrics.RaEvent.Builder updatePrefixValidLifetime(long); - method public android.net.metrics.RaEvent.Builder updateRdnssLifetime(long); - method public android.net.metrics.RaEvent.Builder updateRouteInfoLifetime(long); - method public android.net.metrics.RaEvent.Builder updateRouterLifetime(long); + method @NonNull public android.net.metrics.RaEvent build(); + method @NonNull public android.net.metrics.RaEvent.Builder updateDnsslLifetime(long); + method @NonNull public android.net.metrics.RaEvent.Builder updatePrefixPreferredLifetime(long); + method @NonNull public android.net.metrics.RaEvent.Builder updatePrefixValidLifetime(long); + method @NonNull public android.net.metrics.RaEvent.Builder updateRdnssLifetime(long); + method @NonNull public android.net.metrics.RaEvent.Builder updateRouteInfoLifetime(long); + method @NonNull public android.net.metrics.RaEvent.Builder updateRouterLifetime(long); } public final class ValidationProbeEvent implements android.net.metrics.IpConnectivityLog.Event { diff --git a/api/test-current.txt b/api/test-current.txt index cf13b9db4a1f..3c0a75eb5bc6 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -611,14 +611,14 @@ package android.net { } public class ConnectivityManager { - method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public void startCaptivePortalApp(android.net.Network, android.os.Bundle); + method @RequiresPermission(android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) public void startCaptivePortalApp(@NonNull android.net.Network, @NonNull android.os.Bundle); field public static final String EXTRA_CAPTIVE_PORTAL_PROBE_SPEC = "android.net.extra.CAPTIVE_PORTAL_PROBE_SPEC"; field public static final String EXTRA_CAPTIVE_PORTAL_USER_AGENT = "android.net.extra.CAPTIVE_PORTAL_USER_AGENT"; } public final class IpPrefix implements android.os.Parcelable { - ctor public IpPrefix(java.net.InetAddress, int); - ctor public IpPrefix(String); + ctor public IpPrefix(@NonNull java.net.InetAddress, int); + ctor public IpPrefix(@NonNull String); } public final class IpSecManager { @@ -629,48 +629,48 @@ package android.net { ctor public LinkAddress(java.net.InetAddress, int, int, int); ctor public LinkAddress(@NonNull java.net.InetAddress, int); ctor public LinkAddress(@NonNull String); - ctor public LinkAddress(String, int, int); + ctor public LinkAddress(@NonNull String, int, int); method public boolean isGlobalPreferred(); - method public boolean isIPv4(); - method public boolean isIPv6(); - method public boolean isSameAddressAs(android.net.LinkAddress); + method public boolean isIpv4(); + method public boolean isIpv6(); + method public boolean isSameAddressAs(@Nullable android.net.LinkAddress); } public final class LinkProperties implements android.os.Parcelable { - ctor public LinkProperties(android.net.LinkProperties); - method public boolean addDnsServer(java.net.InetAddress); - method public boolean addLinkAddress(android.net.LinkAddress); + ctor public LinkProperties(@Nullable android.net.LinkProperties); + method public boolean addDnsServer(@NonNull java.net.InetAddress); + method public boolean addLinkAddress(@NonNull android.net.LinkAddress); method @Nullable public android.net.IpPrefix getNat64Prefix(); - method public java.util.List<java.net.InetAddress> getPcscfServers(); - method public String getTcpBufferSizes(); - method public java.util.List<java.net.InetAddress> getValidatedPrivateDnsServers(); - method public boolean hasGlobalIPv6Address(); - method public boolean hasIPv4Address(); - method public boolean hasIPv6DefaultRoute(); - method public boolean isIPv4Provisioned(); - method public boolean isIPv6Provisioned(); + method @NonNull public java.util.List<java.net.InetAddress> getPcscfServers(); + method @Nullable public String getTcpBufferSizes(); + method @NonNull public java.util.List<java.net.InetAddress> getValidatedPrivateDnsServers(); + method public boolean hasGlobalIpv6Address(); + method public boolean hasIpv4Address(); + method public boolean hasIpv6DefaultRoute(); + method public boolean isIpv4Provisioned(); + method public boolean isIpv6Provisioned(); method public boolean isProvisioned(); - method public boolean isReachable(java.net.InetAddress); - method public boolean removeDnsServer(java.net.InetAddress); - method public boolean removeLinkAddress(android.net.LinkAddress); - method public boolean removeRoute(android.net.RouteInfo); - method public void setNat64Prefix(android.net.IpPrefix); - method public void setPcscfServers(java.util.Collection<java.net.InetAddress>); + method public boolean isReachable(@NonNull java.net.InetAddress); + method public boolean removeDnsServer(@NonNull java.net.InetAddress); + method public boolean removeLinkAddress(@NonNull android.net.LinkAddress); + method public boolean removeRoute(@NonNull android.net.RouteInfo); + method public void setNat64Prefix(@Nullable android.net.IpPrefix); + method public void setPcscfServers(@NonNull java.util.Collection<java.net.InetAddress>); method public void setPrivateDnsServerName(@Nullable String); - method public void setTcpBufferSizes(String); + method public void setTcpBufferSizes(@Nullable String); method public void setUsePrivateDns(boolean); - method public void setValidatedPrivateDnsServers(java.util.Collection<java.net.InetAddress>); + method public void setValidatedPrivateDnsServers(@NonNull java.util.Collection<java.net.InetAddress>); } public class Network implements android.os.Parcelable { - ctor public Network(android.net.Network); - method public android.net.Network getPrivateDnsBypassingCopy(); + ctor public Network(@NonNull android.net.Network); + method @NonNull public android.net.Network getPrivateDnsBypassingCopy(); } public final class NetworkCapabilities implements android.os.Parcelable { method public int[] getCapabilities(); - method public int[] getTransportTypes(); - method public boolean satisfiedByNetworkCapabilities(android.net.NetworkCapabilities); + method @NonNull public int[] getTransportTypes(); + method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities); field public static final int TRANSPORT_TEST = 7; // 0x7 } @@ -679,7 +679,7 @@ package android.net { } public final class RouteInfo implements android.os.Parcelable { - ctor public RouteInfo(android.net.IpPrefix, java.net.InetAddress, String, int); + ctor public RouteInfo(@Nullable android.net.IpPrefix, @Nullable java.net.InetAddress, @Nullable String, int); method public int getType(); field public static final int RTN_THROW = 9; // 0x9 field public static final int RTN_UNICAST = 1; // 0x1 @@ -736,8 +736,8 @@ package android.net.apf { public final class ApfCapabilities implements android.os.Parcelable { ctor public ApfCapabilities(int, int, int); method public int describeContents(); - method public static boolean getApfDrop8023Frames(android.content.Context); - method public static int[] getApfEthTypeBlackList(android.content.Context); + method public static boolean getApfDrop8023Frames(@NonNull android.content.Context); + method @NonNull public static int[] getApfEthTypeBlackList(@NonNull android.content.Context); method public boolean hasDataAccess(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.net.apf.ApfCapabilities> CREATOR; @@ -903,15 +903,15 @@ package android.net.metrics { public final class RaEvent implements android.net.metrics.IpConnectivityLog.Event { } - public static class RaEvent.Builder { + public static final class RaEvent.Builder { ctor public RaEvent.Builder(); - method public android.net.metrics.RaEvent build(); - method public android.net.metrics.RaEvent.Builder updateDnsslLifetime(long); - method public android.net.metrics.RaEvent.Builder updatePrefixPreferredLifetime(long); - method public android.net.metrics.RaEvent.Builder updatePrefixValidLifetime(long); - method public android.net.metrics.RaEvent.Builder updateRdnssLifetime(long); - method public android.net.metrics.RaEvent.Builder updateRouteInfoLifetime(long); - method public android.net.metrics.RaEvent.Builder updateRouterLifetime(long); + method @NonNull public android.net.metrics.RaEvent build(); + method @NonNull public android.net.metrics.RaEvent.Builder updateDnsslLifetime(long); + method @NonNull public android.net.metrics.RaEvent.Builder updatePrefixPreferredLifetime(long); + method @NonNull public android.net.metrics.RaEvent.Builder updatePrefixValidLifetime(long); + method @NonNull public android.net.metrics.RaEvent.Builder updateRdnssLifetime(long); + method @NonNull public android.net.metrics.RaEvent.Builder updateRouteInfoLifetime(long); + method @NonNull public android.net.metrics.RaEvent.Builder updateRouterLifetime(long); } public final class ValidationProbeEvent implements android.net.metrics.IpConnectivityLog.Event { diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index e5802c23eb6f..16322353add2 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -4088,7 +4088,7 @@ public class ConnectivityManager { @SystemApi @TestApi @RequiresPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) - public void startCaptivePortalApp(Network network, Bundle appExtras) { + public void startCaptivePortalApp(@NonNull Network network, @NonNull Bundle appExtras) { try { mService.startCaptivePortalAppInternal(network, appExtras); } catch (RemoteException e) { diff --git a/core/java/android/net/IpPrefix.java b/core/java/android/net/IpPrefix.java index 175263f0adaa..b4f3a288d21f 100644 --- a/core/java/android/net/IpPrefix.java +++ b/core/java/android/net/IpPrefix.java @@ -16,6 +16,7 @@ package android.net; +import android.annotation.NonNull; import android.annotation.SystemApi; import android.annotation.TestApi; import android.os.Parcel; @@ -70,7 +71,7 @@ public final class IpPrefix implements Parcelable { * * @hide */ - public IpPrefix(byte[] address, int prefixLength) { + public IpPrefix(@NonNull byte[] address, int prefixLength) { this.address = address.clone(); this.prefixLength = prefixLength; checkAndMaskAddressAndPrefixLength(); @@ -87,7 +88,7 @@ public final class IpPrefix implements Parcelable { */ @SystemApi @TestApi - public IpPrefix(InetAddress address, int prefixLength) { + public IpPrefix(@NonNull InetAddress address, int prefixLength) { // We don't reuse the (byte[], int) constructor because it calls clone() on the byte array, // which is unnecessary because getAddress() already returns a clone. this.address = address.getAddress(); @@ -106,7 +107,7 @@ public final class IpPrefix implements Parcelable { */ @SystemApi @TestApi - public IpPrefix(String prefix) { + public IpPrefix(@NonNull String prefix) { // We don't reuse the (InetAddress, int) constructor because "error: call to this must be // first statement in constructor". We could factor out setting the member variables to an // init() method, but if we did, then we'd have to make the members non-final, or "error: diff --git a/core/java/android/net/LinkAddress.java b/core/java/android/net/LinkAddress.java index 8b0196088021..78b4665d4545 100644 --- a/core/java/android/net/LinkAddress.java +++ b/core/java/android/net/LinkAddress.java @@ -26,6 +26,7 @@ import static android.system.OsConstants.RT_SCOPE_SITE; import static android.system.OsConstants.RT_SCOPE_UNIVERSE; import android.annotation.NonNull; +import android.annotation.Nullable; import android.annotation.SystemApi; import android.annotation.TestApi; import android.annotation.UnsupportedAppUsage; @@ -107,8 +108,8 @@ public class LinkAddress implements Parcelable { * * Per RFC 4193 section 8, fc00::/7 identifies these addresses. */ - private boolean isIPv6ULA() { - if (isIPv6()) { + private boolean isIpv6ULA() { + if (isIpv6()) { byte[] bytes = address.getAddress(); return ((bytes[0] & (byte)0xfe) == (byte)0xfc); } @@ -121,17 +122,29 @@ public class LinkAddress implements Parcelable { */ @TestApi @SystemApi - public boolean isIPv6() { + public boolean isIpv6() { return address instanceof Inet6Address; } /** + * For backward compatibility. + * This was annotated with @UnsupportedAppUsage in P, so we can't remove the method completely + * just yet. + * @return true if the address is IPv6. + * @hide + */ + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + public boolean isIPv6() { + return isIpv6(); + } + + /** * @return true if the address is IPv4 or is a mapped IPv4 address. * @hide */ @TestApi @SystemApi - public boolean isIPv4() { + public boolean isIpv4() { return address instanceof Inet4Address; } @@ -217,7 +230,7 @@ public class LinkAddress implements Parcelable { */ @SystemApi @TestApi - public LinkAddress(String address, int flags, int scope) { + public LinkAddress(@NonNull String address, int flags, int scope) { // This may throw an IllegalArgumentException; catching it is the caller's responsibility. // TODO: consider rejecting mapped IPv4 addresses such as "::ffff:192.0.2.5/24". Pair<InetAddress, Integer> ipAndMask = NetworkUtils.parseIpAndMask(address); @@ -276,7 +289,10 @@ public class LinkAddress implements Parcelable { */ @TestApi @SystemApi - public boolean isSameAddressAs(LinkAddress other) { + public boolean isSameAddressAs(@Nullable LinkAddress other) { + if (other == null) { + return false; + } return address.equals(other.address) && prefixLength == other.prefixLength; } @@ -331,10 +347,10 @@ public class LinkAddress implements Parcelable { * state has cleared either DAD has succeeded or failed, and both * flags are cleared regardless). */ - return (scope == RT_SCOPE_UNIVERSE && - !isIPv6ULA() && - (flags & (IFA_F_DADFAILED | IFA_F_DEPRECATED)) == 0L && - ((flags & IFA_F_TENTATIVE) == 0L || (flags & IFA_F_OPTIMISTIC) != 0L)); + return (scope == RT_SCOPE_UNIVERSE + && !isIpv6ULA() + && (flags & (IFA_F_DADFAILED | IFA_F_DEPRECATED)) == 0L + && ((flags & IFA_F_TENTATIVE) == 0L || (flags & IFA_F_OPTIMISTIC) != 0L)); } /** diff --git a/core/java/android/net/LinkProperties.java b/core/java/android/net/LinkProperties.java index 42db0fd7cb8c..03d6d48bc8f6 100644 --- a/core/java/android/net/LinkProperties.java +++ b/core/java/android/net/LinkProperties.java @@ -54,11 +54,11 @@ public final class LinkProperties implements Parcelable { // The interface described by the network link. @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) private String mIfaceName; - private ArrayList<LinkAddress> mLinkAddresses = new ArrayList<>(); - private ArrayList<InetAddress> mDnses = new ArrayList<>(); + private final ArrayList<LinkAddress> mLinkAddresses = new ArrayList<>(); + private final ArrayList<InetAddress> mDnses = new ArrayList<>(); // PCSCF addresses are addresses of SIP proxies that only exist for the IMS core service. - private ArrayList<InetAddress> mPcscfs = new ArrayList<InetAddress>(); - private ArrayList<InetAddress> mValidatedPrivateDnses = new ArrayList<>(); + private final ArrayList<InetAddress> mPcscfs = new ArrayList<InetAddress>(); + private final ArrayList<InetAddress> mValidatedPrivateDnses = new ArrayList<>(); private boolean mUsePrivateDns; private String mPrivateDnsServerName; private String mDomains; @@ -150,8 +150,8 @@ public final class LinkProperties implements Parcelable { // connections getting stuck until timeouts fire and other // baffling failures. Therefore, loss of either IPv4 or IPv6 on a // previously dual-stack network is deemed a lost of provisioning. - if ((before.isIPv4Provisioned() && !after.isIPv4Provisioned()) || - (before.isIPv6Provisioned() && !after.isIPv6Provisioned())) { + if ((before.isIpv4Provisioned() && !after.isIpv4Provisioned()) + || (before.isIpv6Provisioned() && !after.isIpv6Provisioned())) { return ProvisioningChange.LOST_PROVISIONING; } return ProvisioningChange.STILL_PROVISIONED; @@ -165,9 +165,8 @@ public final class LinkProperties implements Parcelable { } /** - * @hide + * Constructs a new {@code LinkProperties} with default values. */ - @SystemApi public LinkProperties() { } @@ -176,7 +175,7 @@ public final class LinkProperties implements Parcelable { */ @SystemApi @TestApi - public LinkProperties(LinkProperties source) { + public LinkProperties(@Nullable LinkProperties source) { if (source != null) { mIfaceName = source.mIfaceName; mLinkAddresses.addAll(source.mLinkAddresses); @@ -202,10 +201,8 @@ public final class LinkProperties implements Parcelable { * will have their interface changed to match this new value. * * @param iface The name of the network interface used for this link. - * @hide */ - @SystemApi - public void setInterfaceName(String iface) { + public void setInterfaceName(@Nullable String iface) { mIfaceName = iface; ArrayList<RouteInfo> newRoutes = new ArrayList<>(mRoutes.size()); for (RouteInfo route : mRoutes) { @@ -227,7 +224,7 @@ public final class LinkProperties implements Parcelable { * @hide */ @UnsupportedAppUsage - public List<String> getAllInterfaceNames() { + public @NonNull List<String> getAllInterfaceNames() { List<String> interfaceNames = new ArrayList<>(mStackedLinks.size() + 1); if (mIfaceName != null) interfaceNames.add(mIfaceName); for (LinkProperties stacked: mStackedLinks.values()) { @@ -247,8 +244,8 @@ public final class LinkProperties implements Parcelable { * @hide */ @UnsupportedAppUsage - public List<InetAddress> getAddresses() { - List<InetAddress> addresses = new ArrayList<>(); + public @NonNull List<InetAddress> getAddresses() { + final List<InetAddress> addresses = new ArrayList<>(); for (LinkAddress linkAddress : mLinkAddresses) { addresses.add(linkAddress.getAddress()); } @@ -260,7 +257,7 @@ public final class LinkProperties implements Parcelable { * @hide */ @UnsupportedAppUsage - public List<InetAddress> getAllAddresses() { + public @NonNull List<InetAddress> getAllAddresses() { List<InetAddress> addresses = new ArrayList<>(); for (LinkAddress linkAddress : mLinkAddresses) { addresses.add(linkAddress.getAddress()); @@ -289,7 +286,7 @@ public final class LinkProperties implements Parcelable { */ @SystemApi @TestApi - public boolean addLinkAddress(LinkAddress address) { + public boolean addLinkAddress(@NonNull LinkAddress address) { if (address == null) { return false; } @@ -318,7 +315,10 @@ public final class LinkProperties implements Parcelable { */ @SystemApi @TestApi - public boolean removeLinkAddress(LinkAddress toRemove) { + public boolean removeLinkAddress(@NonNull LinkAddress toRemove) { + if (toRemove == null) { + return false; + } int i = findLinkAddressIndex(toRemove); if (i >= 0) { mLinkAddresses.remove(i); @@ -333,7 +333,7 @@ public final class LinkProperties implements Parcelable { * * @return An unmodifiable {@link List} of {@link LinkAddress} for this link. */ - public List<LinkAddress> getLinkAddresses() { + public @NonNull List<LinkAddress> getLinkAddresses() { return Collections.unmodifiableList(mLinkAddresses); } @@ -356,10 +356,8 @@ public final class LinkProperties implements Parcelable { * * @param addresses The {@link Collection} of {@link LinkAddress} to set in this * object. - * @hide */ - @SystemApi - public void setLinkAddresses(Collection<LinkAddress> addresses) { + public void setLinkAddresses(@NonNull Collection<LinkAddress> addresses) { mLinkAddresses.clear(); for (LinkAddress address: addresses) { addLinkAddress(address); @@ -375,7 +373,7 @@ public final class LinkProperties implements Parcelable { */ @TestApi @SystemApi - public boolean addDnsServer(InetAddress dnsServer) { + public boolean addDnsServer(@NonNull InetAddress dnsServer) { if (dnsServer != null && !mDnses.contains(dnsServer)) { mDnses.add(dnsServer); return true; @@ -392,7 +390,7 @@ public final class LinkProperties implements Parcelable { */ @TestApi @SystemApi - public boolean removeDnsServer(InetAddress dnsServer) { + public boolean removeDnsServer(@NonNull InetAddress dnsServer) { if (dnsServer != null) { return mDnses.remove(dnsServer); } @@ -404,10 +402,8 @@ public final class LinkProperties implements Parcelable { * the given {@link Collection} of {@link InetAddress} objects. * * @param dnsServers The {@link Collection} of DNS servers to set in this object. - * @hide */ - @SystemApi - public void setDnsServers(Collection<InetAddress> dnsServers) { + public void setDnsServers(@NonNull Collection<InetAddress> dnsServers) { mDnses.clear(); for (InetAddress dnsServer: dnsServers) { addDnsServer(dnsServer); @@ -420,7 +416,7 @@ public final class LinkProperties implements Parcelable { * @return An unmodifiable {@link List} of {@link InetAddress} for DNS servers on * this link. */ - public List<InetAddress> getDnsServers() { + public @NonNull List<InetAddress> getDnsServers() { return Collections.unmodifiableList(mDnses); } @@ -490,7 +486,7 @@ public final class LinkProperties implements Parcelable { * @return true if the DNS server was added, false if it was already present. * @hide */ - public boolean addValidatedPrivateDnsServer(InetAddress dnsServer) { + public boolean addValidatedPrivateDnsServer(@NonNull InetAddress dnsServer) { if (dnsServer != null && !mValidatedPrivateDnses.contains(dnsServer)) { mValidatedPrivateDnses.add(dnsServer); return true; @@ -506,11 +502,8 @@ public final class LinkProperties implements Parcelable { * @return true if the DNS server was removed, false if it did not exist. * @hide */ - public boolean removeValidatedPrivateDnsServer(InetAddress dnsServer) { - if (dnsServer != null) { - return mValidatedPrivateDnses.remove(dnsServer); - } - return false; + public boolean removeValidatedPrivateDnsServer(@NonNull InetAddress dnsServer) { + return mValidatedPrivateDnses.remove(dnsServer); } /** @@ -523,7 +516,7 @@ public final class LinkProperties implements Parcelable { */ @TestApi @SystemApi - public void setValidatedPrivateDnsServers(Collection<InetAddress> dnsServers) { + public void setValidatedPrivateDnsServers(@NonNull Collection<InetAddress> dnsServers) { mValidatedPrivateDnses.clear(); for (InetAddress dnsServer: dnsServers) { addValidatedPrivateDnsServer(dnsServer); @@ -534,13 +527,13 @@ public final class LinkProperties implements Parcelable { * Returns all the {@link InetAddress} for validated private DNS servers on this link. * These are resolved from the private DNS server name. * - * @return An umodifiable {@link List} of {@link InetAddress} for validated private + * @return An unmodifiable {@link List} of {@link InetAddress} for validated private * DNS servers on this link. * @hide */ @TestApi @SystemApi - public List<InetAddress> getValidatedPrivateDnsServers() { + public @NonNull List<InetAddress> getValidatedPrivateDnsServers() { return Collections.unmodifiableList(mValidatedPrivateDnses); } @@ -551,7 +544,7 @@ public final class LinkProperties implements Parcelable { * @return true if the PCSCF server was added, false otherwise. * @hide */ - public boolean addPcscfServer(InetAddress pcscfServer) { + public boolean addPcscfServer(@NonNull InetAddress pcscfServer) { if (pcscfServer != null && !mPcscfs.contains(pcscfServer)) { mPcscfs.add(pcscfServer); return true; @@ -562,27 +555,24 @@ public final class LinkProperties implements Parcelable { /** * Removes the given {@link InetAddress} from the list of PCSCF servers. * - * @param pcscf Server The {@link InetAddress} to remove from the list of PCSCF servers. + * @param pcscfServer The {@link InetAddress} to remove from the list of PCSCF servers. * @return true if the PCSCF server was removed, false otherwise. * @hide */ - public boolean removePcscfServer(InetAddress pcscfServer) { - if (pcscfServer != null) { - return mPcscfs.remove(pcscfServer); - } - return false; + public boolean removePcscfServer(@NonNull InetAddress pcscfServer) { + return mPcscfs.remove(pcscfServer); } /** * Replaces the PCSCF servers in this {@code LinkProperties} with * the given {@link Collection} of {@link InetAddress} objects. * - * @param addresses The {@link Collection} of PCSCF servers to set in this object. + * @param pcscfServers The {@link Collection} of PCSCF servers to set in this object. * @hide */ @SystemApi @TestApi - public void setPcscfServers(Collection<InetAddress> pcscfServers) { + public void setPcscfServers(@NonNull Collection<InetAddress> pcscfServers) { mPcscfs.clear(); for (InetAddress pcscfServer: pcscfServers) { addPcscfServer(pcscfServer); @@ -598,7 +588,7 @@ public final class LinkProperties implements Parcelable { */ @SystemApi @TestApi - public List<InetAddress> getPcscfServers() { + public @NonNull List<InetAddress> getPcscfServers() { return Collections.unmodifiableList(mPcscfs); } @@ -607,20 +597,18 @@ public final class LinkProperties implements Parcelable { * * @param domains A {@link String} listing in priority order the comma separated * domains to search when resolving host names on this link. - * @hide */ - @SystemApi - public void setDomains(String domains) { + public void setDomains(@Nullable String domains) { mDomains = domains; } /** - * Get the DNS domains search path set for this link. + * Get the DNS domains search path set for this link. May be {@code null} if not set. * - * @return A {@link String} containing the comma separated domains to search when resolving - * host names on this link. + * @return A {@link String} containing the comma separated domains to search when resolving host + * names on this link or {@code null}. */ - public String getDomains() { + public @Nullable String getDomains() { return mDomains; } @@ -630,9 +618,7 @@ public final class LinkProperties implements Parcelable { * 10000 will be ignored. * * @param mtu The MTU to use for this link. - * @hide */ - @SystemApi public void setMtu(int mtu) { mMtu = mtu; } @@ -657,20 +643,20 @@ public final class LinkProperties implements Parcelable { */ @TestApi @SystemApi - public void setTcpBufferSizes(String tcpBufferSizes) { + public void setTcpBufferSizes(@Nullable String tcpBufferSizes) { mTcpBufferSizes = tcpBufferSizes; } /** - * Gets the tcp buffer sizes. + * Gets the tcp buffer sizes. May be {@code null} if not set. * - * @return the tcp buffer sizes to use when this link is the system default. + * @return the tcp buffer sizes to use when this link is the system default or {@code null}. * * @hide */ @TestApi @SystemApi - public String getTcpBufferSizes() { + public @Nullable String getTcpBufferSizes() { return mTcpBufferSizes; } @@ -690,23 +676,18 @@ public final class LinkProperties implements Parcelable { * * @param route A {@link RouteInfo} to add to this object. * @return {@code false} if the route was already present, {@code true} if it was added. - * - * @hide */ - @SystemApi - public boolean addRoute(RouteInfo route) { - if (route != null) { - String routeIface = route.getInterface(); - if (routeIface != null && !routeIface.equals(mIfaceName)) { - throw new IllegalArgumentException( - "Route added with non-matching interface: " + routeIface + - " vs. " + mIfaceName); - } - route = routeWithInterface(route); - if (!mRoutes.contains(route)) { - mRoutes.add(route); - return true; - } + public boolean addRoute(@NonNull RouteInfo route) { + String routeIface = route.getInterface(); + if (routeIface != null && !routeIface.equals(mIfaceName)) { + throw new IllegalArgumentException( + "Route added with non-matching interface: " + routeIface + + " vs. " + mIfaceName); + } + route = routeWithInterface(route); + if (!mRoutes.contains(route)) { + mRoutes.add(route); + return true; } return false; } @@ -722,10 +703,8 @@ public final class LinkProperties implements Parcelable { */ @TestApi @SystemApi - public boolean removeRoute(RouteInfo route) { - return route != null && - Objects.equals(mIfaceName, route.getInterface()) && - mRoutes.remove(route); + public boolean removeRoute(@NonNull RouteInfo route) { + return Objects.equals(mIfaceName, route.getInterface()) && mRoutes.remove(route); } /** @@ -733,7 +712,7 @@ public final class LinkProperties implements Parcelable { * * @return An unmodifiable {@link List} of {@link RouteInfo} for this link. */ - public List<RouteInfo> getRoutes() { + public @NonNull List<RouteInfo> getRoutes() { return Collections.unmodifiableList(mRoutes); } @@ -753,7 +732,7 @@ public final class LinkProperties implements Parcelable { * @hide */ @UnsupportedAppUsage - public List<RouteInfo> getAllRoutes() { + public @NonNull List<RouteInfo> getAllRoutes() { List<RouteInfo> routes = new ArrayList<>(mRoutes); for (LinkProperties stacked: mStackedLinks.values()) { routes.addAll(stacked.getAllRoutes()); @@ -767,26 +746,24 @@ public final class LinkProperties implements Parcelable { * not enforce it and applications may ignore them. * * @param proxy A {@link ProxyInfo} defining the HTTP Proxy to use on this link. - * @hide */ - @SystemApi - public void setHttpProxy(ProxyInfo proxy) { + public void setHttpProxy(@Nullable ProxyInfo proxy) { mHttpProxy = proxy; } /** * Gets the recommended {@link ProxyInfo} (or {@code null}) set on this link. * - * @return The {@link ProxyInfo} set on this link + * @return The {@link ProxyInfo} set on this link or {@code null}. */ - public ProxyInfo getHttpProxy() { + public @Nullable ProxyInfo getHttpProxy() { return mHttpProxy; } /** * Returns the NAT64 prefix in use on this link, if any. * - * @return the NAT64 prefix. + * @return the NAT64 prefix or {@code null}. * @hide */ @SystemApi @@ -799,14 +776,14 @@ public final class LinkProperties implements Parcelable { * Sets the NAT64 prefix in use on this link. * * Currently, only 96-bit prefixes (i.e., where the 32-bit IPv4 address is at the end of the - * 128-bit IPv6 address) are supported. + * 128-bit IPv6 address) are supported or {@code null} for no prefix. * * @param prefix the NAT64 prefix. * @hide */ @SystemApi @TestApi - public void setNat64Prefix(IpPrefix prefix) { + public void setNat64Prefix(@Nullable IpPrefix prefix) { if (prefix != null && prefix.getPrefixLength() != 96) { throw new IllegalArgumentException("Only 96-bit prefixes are supported: " + prefix); } @@ -818,15 +795,15 @@ public final class LinkProperties implements Parcelable { * * If there is already a stacked link with the same interface name as link, * that link is replaced with link. Otherwise, link is added to the list - * of stacked links. If link is null, nothing changes. + * of stacked links. * * @param link The link to add. * @return true if the link was stacked, false otherwise. * @hide */ @UnsupportedAppUsage - public boolean addStackedLink(LinkProperties link) { - if (link != null && link.getInterfaceName() != null) { + public boolean addStackedLink(@NonNull LinkProperties link) { + if (link.getInterfaceName() != null) { mStackedLinks.put(link.getInterfaceName(), link); return true; } @@ -843,12 +820,9 @@ public final class LinkProperties implements Parcelable { * @return true if the link was removed, false otherwise. * @hide */ - public boolean removeStackedLink(String iface) { - if (iface != null) { - LinkProperties removed = mStackedLinks.remove(iface); - return removed != null; - } - return false; + public boolean removeStackedLink(@NonNull String iface) { + LinkProperties removed = mStackedLinks.remove(iface); + return removed != null; } /** @@ -860,7 +834,7 @@ public final class LinkProperties implements Parcelable { if (mStackedLinks.isEmpty()) { return Collections.emptyList(); } - List<LinkProperties> stacked = new ArrayList<>(); + final List<LinkProperties> stacked = new ArrayList<>(); for (LinkProperties link : mStackedLinks.values()) { stacked.add(new LinkProperties(link)); } @@ -869,9 +843,7 @@ public final class LinkProperties implements Parcelable { /** * Clears this object to its initial state. - * @hide */ - @SystemApi public void clear() { mIfaceName = null; mLinkAddresses.clear(); @@ -988,7 +960,7 @@ public final class LinkProperties implements Parcelable { */ @TestApi @SystemApi - public boolean hasIPv4Address() { + public boolean hasIpv4Address() { for (LinkAddress address : mLinkAddresses) { if (address.getAddress() instanceof Inet4Address) { return true; @@ -998,15 +970,27 @@ public final class LinkProperties implements Parcelable { } /** + * For backward compatibility. + * This was annotated with @UnsupportedAppUsage in P, so we can't remove the method completely + * just yet. + * @return {@code true} if there is an IPv4 address, {@code false} otherwise. + * @hide + */ + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + public boolean hasIPv4Address() { + return hasIpv4Address(); + } + + /** * Returns true if this link or any of its stacked interfaces has an IPv4 address. * * @return {@code true} if there is an IPv4 address, {@code false} otherwise. */ - private boolean hasIPv4AddressOnInterface(String iface) { + private boolean hasIpv4AddressOnInterface(String iface) { // mIfaceName can be null. - return (Objects.equals(iface, mIfaceName) && hasIPv4Address()) || - (iface != null && mStackedLinks.containsKey(iface) && - mStackedLinks.get(iface).hasIPv4Address()); + return (Objects.equals(iface, mIfaceName) && hasIpv4Address()) + || (iface != null && mStackedLinks.containsKey(iface) + && mStackedLinks.get(iface).hasIpv4Address()); } /** @@ -1017,7 +1001,7 @@ public final class LinkProperties implements Parcelable { */ @TestApi @SystemApi - public boolean hasGlobalIPv6Address() { + public boolean hasGlobalIpv6Address() { for (LinkAddress address : mLinkAddresses) { if (address.getAddress() instanceof Inet6Address && address.isGlobalPreferred()) { return true; @@ -1027,13 +1011,25 @@ public final class LinkProperties implements Parcelable { } /** + * For backward compatibility. + * This was annotated with @UnsupportedAppUsage in P, so we can't remove the method completely + * just yet. + * @return {@code true} if there is a global preferred IPv6 address, {@code false} otherwise. + * @hide + */ + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + public boolean hasGlobalIPv6Address() { + return hasGlobalIpv6Address(); + } + + /** * Returns true if this link has an IPv4 default route. * * @return {@code true} if there is an IPv4 default route, {@code false} otherwise. * @hide */ @UnsupportedAppUsage - public boolean hasIPv4DefaultRoute() { + public boolean hasIpv4DefaultRoute() { for (RouteInfo r : mRoutes) { if (r.isIPv4Default()) { return true; @@ -1043,6 +1039,18 @@ public final class LinkProperties implements Parcelable { } /** + * For backward compatibility. + * This was annotated with @UnsupportedAppUsage in P, so we can't remove the method completely + * just yet. + * @return {@code true} if there is an IPv4 default route, {@code false} otherwise. + * @hide + */ + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + public boolean hasIPv4DefaultRoute() { + return hasIpv4DefaultRoute(); + } + + /** * Returns true if this link has an IPv6 default route. * * @return {@code true} if there is an IPv6 default route, {@code false} otherwise. @@ -1050,7 +1058,7 @@ public final class LinkProperties implements Parcelable { */ @TestApi @SystemApi - public boolean hasIPv6DefaultRoute() { + public boolean hasIpv6DefaultRoute() { for (RouteInfo r : mRoutes) { if (r.isIPv6Default()) { return true; @@ -1060,13 +1068,25 @@ public final class LinkProperties implements Parcelable { } /** + * For backward compatibility. + * This was annotated with @UnsupportedAppUsage in P, so we can't remove the method completely + * just yet. + * @return {@code true} if there is an IPv6 default route, {@code false} otherwise. + * @hide + */ + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + public boolean hasIPv6DefaultRoute() { + return hasIpv6DefaultRoute(); + } + + /** * Returns true if this link has an IPv4 DNS server. * * @return {@code true} if there is an IPv4 DNS server, {@code false} otherwise. * @hide */ @UnsupportedAppUsage - public boolean hasIPv4DnsServer() { + public boolean hasIpv4DnsServer() { for (InetAddress ia : mDnses) { if (ia instanceof Inet4Address) { return true; @@ -1076,13 +1096,25 @@ public final class LinkProperties implements Parcelable { } /** + * For backward compatibility. + * This was annotated with @UnsupportedAppUsage in P, so we can't remove the method completely + * just yet. + * @return {@code true} if there is an IPv4 DNS server, {@code false} otherwise. + * @hide + */ + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + public boolean hasIPv4DnsServer() { + return hasIpv4DnsServer(); + } + + /** * Returns true if this link has an IPv6 DNS server. * * @return {@code true} if there is an IPv6 DNS server, {@code false} otherwise. * @hide */ @UnsupportedAppUsage - public boolean hasIPv6DnsServer() { + public boolean hasIpv6DnsServer() { for (InetAddress ia : mDnses) { if (ia instanceof Inet6Address) { return true; @@ -1092,12 +1124,24 @@ public final class LinkProperties implements Parcelable { } /** + * For backward compatibility. + * This was annotated with @UnsupportedAppUsage in P, so we can't remove the method completely + * just yet. + * @return {@code true} if there is an IPv6 DNS server, {@code false} otherwise. + * @hide + */ + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) + public boolean hasIPv6DnsServer() { + return hasIpv6DnsServer(); + } + + /** * Returns true if this link has an IPv4 PCSCF server. * * @return {@code true} if there is an IPv4 PCSCF server, {@code false} otherwise. * @hide */ - public boolean hasIPv4PcscfServer() { + public boolean hasIpv4PcscfServer() { for (InetAddress ia : mPcscfs) { if (ia instanceof Inet4Address) { return true; @@ -1112,7 +1156,7 @@ public final class LinkProperties implements Parcelable { * @return {@code true} if there is an IPv6 PCSCF server, {@code false} otherwise. * @hide */ - public boolean hasIPv6PcscfServer() { + public boolean hasIpv6PcscfServer() { for (InetAddress ia : mPcscfs) { if (ia instanceof Inet6Address) { return true; @@ -1130,10 +1174,10 @@ public final class LinkProperties implements Parcelable { */ @TestApi @SystemApi - public boolean isIPv4Provisioned() { - return (hasIPv4Address() && - hasIPv4DefaultRoute() && - hasIPv4DnsServer()); + public boolean isIpv4Provisioned() { + return (hasIpv4Address() + && hasIpv4DefaultRoute() + && hasIpv4DnsServer()); } /** @@ -1145,12 +1189,25 @@ public final class LinkProperties implements Parcelable { */ @TestApi @SystemApi + public boolean isIpv6Provisioned() { + return (hasGlobalIpv6Address() + && hasIpv6DefaultRoute() + && hasIpv6DnsServer()); + } + + /** + * For backward compatibility. + * This was annotated with @UnsupportedAppUsage in P, so we can't remove the method completely + * just yet. + * @return {@code true} if the link is provisioned, {@code false} otherwise. + * @hide + */ + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) public boolean isIPv6Provisioned() { - return (hasGlobalIPv6Address() && - hasIPv6DefaultRoute() && - hasIPv6DnsServer()); + return isIpv6Provisioned(); } + /** * Returns true if this link is provisioned for global connectivity, * for at least one Internet Protocol family. @@ -1161,7 +1218,7 @@ public final class LinkProperties implements Parcelable { @TestApi @SystemApi public boolean isProvisioned() { - return (isIPv4Provisioned() || isIPv6Provisioned()); + return (isIpv4Provisioned() || isIpv6Provisioned()); } /** @@ -1173,7 +1230,7 @@ public final class LinkProperties implements Parcelable { */ @TestApi @SystemApi - public boolean isReachable(InetAddress ip) { + public boolean isReachable(@NonNull InetAddress ip) { final List<RouteInfo> allRoutes = getAllRoutes(); // If we don't have a route to this IP address, it's not reachable. final RouteInfo bestRoute = RouteInfo.selectBestRoute(allRoutes, ip); @@ -1185,7 +1242,7 @@ public final class LinkProperties implements Parcelable { if (ip instanceof Inet4Address) { // For IPv4, it suffices for now to simply have any address. - return hasIPv4AddressOnInterface(bestRoute.getInterface()); + return hasIpv4AddressOnInterface(bestRoute.getInterface()); } else if (ip instanceof Inet6Address) { if (ip.isLinkLocalAddress()) { // For now, just make sure link-local destinations have @@ -1196,7 +1253,7 @@ public final class LinkProperties implements Parcelable { // For non-link-local destinations check that either the best route // is directly connected or that some global preferred address exists. // TODO: reconsider all cases (disconnected ULA networks, ...). - return (!bestRoute.hasGateway() || hasGlobalIPv6Address()); + return (!bestRoute.hasGateway() || hasGlobalIpv6Address()); } } @@ -1211,7 +1268,7 @@ public final class LinkProperties implements Parcelable { * @hide */ @UnsupportedAppUsage - public boolean isIdenticalInterfaceName(LinkProperties target) { + public boolean isIdenticalInterfaceName(@NonNull LinkProperties target) { return TextUtils.equals(getInterfaceName(), target.getInterfaceName()); } @@ -1223,7 +1280,7 @@ public final class LinkProperties implements Parcelable { * @hide */ @UnsupportedAppUsage - public boolean isIdenticalAddresses(LinkProperties target) { + public boolean isIdenticalAddresses(@NonNull LinkProperties target) { Collection<InetAddress> targetAddresses = target.getAddresses(); Collection<InetAddress> sourceAddresses = getAddresses(); return (sourceAddresses.size() == targetAddresses.size()) ? @@ -1238,7 +1295,7 @@ public final class LinkProperties implements Parcelable { * @hide */ @UnsupportedAppUsage - public boolean isIdenticalDnses(LinkProperties target) { + public boolean isIdenticalDnses(@NonNull LinkProperties target) { Collection<InetAddress> targetDnses = target.getDnsServers(); String targetDomains = target.getDomains(); if (mDomains == null) { @@ -1258,7 +1315,7 @@ public final class LinkProperties implements Parcelable { * @return {@code true} if both are identical, {@code false} otherwise. * @hide */ - public boolean isIdenticalPrivateDns(LinkProperties target) { + public boolean isIdenticalPrivateDns(@NonNull LinkProperties target) { return (isPrivateDnsActive() == target.isPrivateDnsActive() && TextUtils.equals(getPrivateDnsServerName(), target.getPrivateDnsServerName())); @@ -1272,7 +1329,7 @@ public final class LinkProperties implements Parcelable { * @return {@code true} if both are identical, {@code false} otherwise. * @hide */ - public boolean isIdenticalValidatedPrivateDnses(LinkProperties target) { + public boolean isIdenticalValidatedPrivateDnses(@NonNull LinkProperties target) { Collection<InetAddress> targetDnses = target.getValidatedPrivateDnsServers(); return (mValidatedPrivateDnses.size() == targetDnses.size()) ? mValidatedPrivateDnses.containsAll(targetDnses) : false; @@ -1285,7 +1342,7 @@ public final class LinkProperties implements Parcelable { * @return {@code true} if both are identical, {@code false} otherwise. * @hide */ - public boolean isIdenticalPcscfs(LinkProperties target) { + public boolean isIdenticalPcscfs(@NonNull LinkProperties target) { Collection<InetAddress> targetPcscfs = target.getPcscfServers(); return (mPcscfs.size() == targetPcscfs.size()) ? mPcscfs.containsAll(targetPcscfs) : false; @@ -1299,7 +1356,7 @@ public final class LinkProperties implements Parcelable { * @hide */ @UnsupportedAppUsage - public boolean isIdenticalRoutes(LinkProperties target) { + public boolean isIdenticalRoutes(@NonNull LinkProperties target) { Collection<RouteInfo> targetRoutes = target.getRoutes(); return (mRoutes.size() == targetRoutes.size()) ? mRoutes.containsAll(targetRoutes) : false; @@ -1313,7 +1370,7 @@ public final class LinkProperties implements Parcelable { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) - public boolean isIdenticalHttpProxy(LinkProperties target) { + public boolean isIdenticalHttpProxy(@NonNull LinkProperties target) { return getHttpProxy() == null ? target.getHttpProxy() == null : getHttpProxy().equals(target.getHttpProxy()); } @@ -1326,7 +1383,7 @@ public final class LinkProperties implements Parcelable { * @hide */ @UnsupportedAppUsage - public boolean isIdenticalStackedLinks(LinkProperties target) { + public boolean isIdenticalStackedLinks(@NonNull LinkProperties target) { if (!mStackedLinks.keySet().equals(target.mStackedLinks.keySet())) { return false; } @@ -1347,7 +1404,7 @@ public final class LinkProperties implements Parcelable { * @return {@code true} if both are identical, {@code false} otherwise. * @hide */ - public boolean isIdenticalMtu(LinkProperties target) { + public boolean isIdenticalMtu(@NonNull LinkProperties target) { return getMtu() == target.getMtu(); } @@ -1358,7 +1415,7 @@ public final class LinkProperties implements Parcelable { * @return {@code true} if both are identical, {@code false} otherwise. * @hide */ - public boolean isIdenticalTcpBufferSizes(LinkProperties target) { + public boolean isIdenticalTcpBufferSizes(@NonNull LinkProperties target) { return Objects.equals(mTcpBufferSizes, target.mTcpBufferSizes); } @@ -1369,7 +1426,7 @@ public final class LinkProperties implements Parcelable { * @return {@code true} if both are identical, {@code false} otherwise. * @hide */ - public boolean isIdenticalNat64Prefix(LinkProperties target) { + public boolean isIdenticalNat64Prefix(@NonNull LinkProperties target) { return Objects.equals(mNat64Prefix, target.mNat64Prefix); } @@ -1421,7 +1478,7 @@ public final class LinkProperties implements Parcelable { * @return the differences between the addresses. * @hide */ - public CompareResult<LinkAddress> compareAddresses(LinkProperties target) { + public @NonNull CompareResult<LinkAddress> compareAddresses(@Nullable LinkProperties target) { /* * Duplicate the LinkAddresses into removed, we will be removing * address which are common between mLinkAddresses and target @@ -1441,7 +1498,7 @@ public final class LinkProperties implements Parcelable { * @return the differences between the DNS addresses. * @hide */ - public CompareResult<InetAddress> compareDnses(LinkProperties target) { + public @NonNull CompareResult<InetAddress> compareDnses(@Nullable LinkProperties target) { /* * Duplicate the InetAddresses into removed, we will be removing * dns address which are common between mDnses and target @@ -1460,7 +1517,8 @@ public final class LinkProperties implements Parcelable { * @return the differences between the DNS addresses. * @hide */ - public CompareResult<InetAddress> compareValidatedPrivateDnses(LinkProperties target) { + public @NonNull CompareResult<InetAddress> compareValidatedPrivateDnses( + @Nullable LinkProperties target) { return new CompareResult<>(mValidatedPrivateDnses, target != null ? target.getValidatedPrivateDnsServers() : null); } @@ -1473,7 +1531,7 @@ public final class LinkProperties implements Parcelable { * @return the differences between the routes. * @hide */ - public CompareResult<RouteInfo> compareAllRoutes(LinkProperties target) { + public @NonNull CompareResult<RouteInfo> compareAllRoutes(@Nullable LinkProperties target) { /* * Duplicate the RouteInfos into removed, we will be removing * routes which are common between mRoutes and target @@ -1491,7 +1549,8 @@ public final class LinkProperties implements Parcelable { * @return the differences between the interface names. * @hide */ - public CompareResult<String> compareAllInterfaceNames(LinkProperties target) { + public @NonNull CompareResult<String> compareAllInterfaceNames( + @Nullable LinkProperties target) { /* * Duplicate the interface names into removed, we will be removing * interface names which are common between this and target diff --git a/core/java/android/net/Network.java b/core/java/android/net/Network.java index e04b5fc5f9cf..09a86fcfa86f 100644 --- a/core/java/android/net/Network.java +++ b/core/java/android/net/Network.java @@ -16,6 +16,7 @@ package android.net; +import android.annotation.NonNull; import android.annotation.SystemApi; import android.annotation.TestApi; import android.annotation.UnsupportedAppUsage; @@ -125,7 +126,7 @@ public class Network implements Parcelable { */ @SystemApi @TestApi - public Network(Network that) { + public Network(@NonNull Network that) { this(that.netId, that.mPrivateDnsBypass); } @@ -163,7 +164,7 @@ public class Network implements Parcelable { */ @TestApi @SystemApi - public Network getPrivateDnsBypassingCopy() { + public @NonNull Network getPrivateDnsBypassingCopy() { return new Network(netId, true); } diff --git a/core/java/android/net/NetworkCapabilities.java b/core/java/android/net/NetworkCapabilities.java index e1cfe991de8d..99375f842b4c 100644 --- a/core/java/android/net/NetworkCapabilities.java +++ b/core/java/android/net/NetworkCapabilities.java @@ -17,6 +17,7 @@ package android.net; import android.annotation.IntDef; +import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; import android.annotation.TestApi; @@ -91,7 +92,7 @@ public final class NetworkCapabilities implements Parcelable { * Set all contents of this object to the contents of a NetworkCapabilities. * @hide */ - public void set(NetworkCapabilities nc) { + public void set(@NonNull NetworkCapabilities nc) { mNetworkCapabilities = nc.mNetworkCapabilities; mTransportTypes = nc.mTransportTypes; mLinkUpBandwidthKbps = nc.mLinkUpBandwidthKbps; @@ -405,7 +406,7 @@ public final class NetworkCapabilities implements Parcelable { * @hide */ @UnsupportedAppUsage - public NetworkCapabilities addCapability(@NetCapability int capability) { + public @NonNull NetworkCapabilities addCapability(@NetCapability int capability) { checkValidCapability(capability); mNetworkCapabilities |= 1 << capability; mUnwantedNetworkCapabilities &= ~(1 << capability); // remove from unwanted capability list @@ -442,7 +443,7 @@ public final class NetworkCapabilities implements Parcelable { * @hide */ @UnsupportedAppUsage - public NetworkCapabilities removeCapability(@NetCapability int capability) { + public @NonNull NetworkCapabilities removeCapability(@NetCapability int capability) { checkValidCapability(capability); final long mask = ~(1 << capability); mNetworkCapabilities &= mask; @@ -456,7 +457,8 @@ public final class NetworkCapabilities implements Parcelable { * * @hide */ - public NetworkCapabilities setCapability(@NetCapability int capability, boolean value) { + public @NonNull NetworkCapabilities setCapability(@NetCapability int capability, + boolean value) { if (value) { addCapability(capability); } else { @@ -534,7 +536,7 @@ public final class NetworkCapabilities implements Parcelable { } /** Note this method may result in having the same capability in wanted and unwanted lists. */ - private void combineNetCapabilities(NetworkCapabilities nc) { + private void combineNetCapabilities(@NonNull NetworkCapabilities nc) { this.mNetworkCapabilities |= nc.mNetworkCapabilities; this.mUnwantedNetworkCapabilities |= nc.mUnwantedNetworkCapabilities; } @@ -546,7 +548,7 @@ public final class NetworkCapabilities implements Parcelable { * * @hide */ - public String describeFirstNonRequestableCapability() { + public @Nullable String describeFirstNonRequestableCapability() { final long nonRequestable = (mNetworkCapabilities | mUnwantedNetworkCapabilities) & NON_REQUESTABLE_CAPABILITIES; @@ -558,7 +560,8 @@ public final class NetworkCapabilities implements Parcelable { return null; } - private boolean satisfiedByNetCapabilities(NetworkCapabilities nc, boolean onlyImmutable) { + private boolean satisfiedByNetCapabilities(@NonNull NetworkCapabilities nc, + boolean onlyImmutable) { long requestedCapabilities = mNetworkCapabilities; long requestedUnwantedCapabilities = mUnwantedNetworkCapabilities; long providedCapabilities = nc.mNetworkCapabilities; @@ -572,12 +575,12 @@ public final class NetworkCapabilities implements Parcelable { } /** @hide */ - public boolean equalsNetCapabilities(NetworkCapabilities nc) { + public boolean equalsNetCapabilities(@NonNull NetworkCapabilities nc) { return (nc.mNetworkCapabilities == this.mNetworkCapabilities) && (nc.mUnwantedNetworkCapabilities == this.mUnwantedNetworkCapabilities); } - private boolean equalsNetCapabilitiesRequestable(NetworkCapabilities that) { + private boolean equalsNetCapabilitiesRequestable(@NonNull NetworkCapabilities that) { return ((this.mNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES) == (that.mNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES)) && ((this.mUnwantedNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES) == @@ -713,7 +716,7 @@ public final class NetworkCapabilities implements Parcelable { * @hide */ @UnsupportedAppUsage - public NetworkCapabilities addTransportType(@Transport int transportType) { + public @NonNull NetworkCapabilities addTransportType(@Transport int transportType) { checkValidTransportType(transportType); mTransportTypes |= 1 << transportType; setNetworkSpecifier(mNetworkSpecifier); // used for exception checking @@ -727,7 +730,7 @@ public final class NetworkCapabilities implements Parcelable { * @return This NetworkCapabilities instance, to facilitate chaining. * @hide */ - public NetworkCapabilities removeTransportType(@Transport int transportType) { + public @NonNull NetworkCapabilities removeTransportType(@Transport int transportType) { checkValidTransportType(transportType); mTransportTypes &= ~(1 << transportType); setNetworkSpecifier(mNetworkSpecifier); // used for exception checking @@ -740,7 +743,8 @@ public final class NetworkCapabilities implements Parcelable { * * @hide */ - public NetworkCapabilities setTransportType(@Transport int transportType, boolean value) { + public @NonNull NetworkCapabilities setTransportType(@Transport int transportType, + boolean value) { if (value) { addTransportType(transportType); } else { @@ -757,7 +761,7 @@ public final class NetworkCapabilities implements Parcelable { */ @TestApi @SystemApi - public @Transport int[] getTransportTypes() { + @NonNull public @Transport int[] getTransportTypes() { return BitUtils.unpackBits(mTransportTypes); } @@ -847,7 +851,7 @@ public final class NetworkCapabilities implements Parcelable { * @param upKbps the estimated first hop upstream (device to network) bandwidth. * @hide */ - public NetworkCapabilities setLinkUpstreamBandwidthKbps(int upKbps) { + public @NonNull NetworkCapabilities setLinkUpstreamBandwidthKbps(int upKbps) { mLinkUpBandwidthKbps = upKbps; return this; } @@ -877,7 +881,7 @@ public final class NetworkCapabilities implements Parcelable { * @param downKbps the estimated first hop downstream (network to device) bandwidth. * @hide */ - public NetworkCapabilities setLinkDownstreamBandwidthKbps(int downKbps) { + public @NonNull NetworkCapabilities setLinkDownstreamBandwidthKbps(int downKbps) { mLinkDownBandwidthKbps = downKbps; return this; } @@ -936,7 +940,7 @@ public final class NetworkCapabilities implements Parcelable { * @return This NetworkCapabilities instance, to facilitate chaining. * @hide */ - public NetworkCapabilities setNetworkSpecifier(NetworkSpecifier networkSpecifier) { + public @NonNull NetworkCapabilities setNetworkSpecifier(NetworkSpecifier networkSpecifier) { if (networkSpecifier != null && Long.bitCount(mTransportTypes) != 1) { throw new IllegalStateException("Must have a single transport specified to use " + "setNetworkSpecifier"); @@ -955,20 +959,20 @@ public final class NetworkCapabilities implements Parcelable { * @return This NetworkCapabilities instance, to facilitate chaining. * @hide */ - public NetworkCapabilities setTransportInfo(TransportInfo transportInfo) { + public @NonNull NetworkCapabilities setTransportInfo(TransportInfo transportInfo) { mTransportInfo = transportInfo; return this; } /** - * Gets the optional bearer specific network specifier. + * Gets the optional bearer specific network specifier. May be {@code null} if not set. * * @return The optional {@link NetworkSpecifier} specifying the bearer specific network - * specifier. See {@link #setNetworkSpecifier}. + * specifier or {@code null}. See {@link #setNetworkSpecifier}. * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) - public NetworkSpecifier getNetworkSpecifier() { + public @Nullable NetworkSpecifier getNetworkSpecifier() { return mNetworkSpecifier; } @@ -1015,8 +1019,6 @@ public final class NetworkCapabilities implements Parcelable { /** * Magic value that indicates no signal strength provided. A request specifying this value is * always satisfied. - * - * @hide */ public static final int SIGNAL_STRENGTH_UNSPECIFIED = Integer.MIN_VALUE; @@ -1024,7 +1026,7 @@ public final class NetworkCapabilities implements Parcelable { * Signal strength. This is a signed integer, and higher values indicate better signal. * The exact units are bearer-dependent. For example, Wi-Fi uses RSSI. */ - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) private int mSignalStrength = SIGNAL_STRENGTH_UNSPECIFIED; /** @@ -1041,7 +1043,7 @@ public final class NetworkCapabilities implements Parcelable { * @hide */ @UnsupportedAppUsage - public NetworkCapabilities setSignalStrength(int signalStrength) { + public @NonNull NetworkCapabilities setSignalStrength(int signalStrength) { mSignalStrength = signalStrength; return this; } @@ -1060,9 +1062,7 @@ public final class NetworkCapabilities implements Parcelable { * Retrieves the signal strength. * * @return The bearer-specific signal strength. - * @hide */ - @SystemApi public int getSignalStrength() { return mSignalStrength; } @@ -1120,7 +1120,7 @@ public final class NetworkCapabilities implements Parcelable { * Convenience method to set the UIDs this network applies to to a single UID. * @hide */ - public NetworkCapabilities setSingleUid(int uid) { + public @NonNull NetworkCapabilities setSingleUid(int uid) { final ArraySet<UidRange> identity = new ArraySet<>(1); identity.add(new UidRange(uid, uid)); setUids(identity); @@ -1132,7 +1132,7 @@ public final class NetworkCapabilities implements Parcelable { * This makes a copy of the set so that callers can't modify it after the call. * @hide */ - public NetworkCapabilities setUids(Set<UidRange> uids) { + public @NonNull NetworkCapabilities setUids(Set<UidRange> uids) { if (null == uids) { mUids = null; } else { @@ -1146,7 +1146,7 @@ public final class NetworkCapabilities implements Parcelable { * This returns a copy of the set so that callers can't modify the original object. * @hide */ - public Set<UidRange> getUids() { + public @Nullable Set<UidRange> getUids() { return null == mUids ? null : new ArraySet<>(mUids); } @@ -1179,7 +1179,7 @@ public final class NetworkCapabilities implements Parcelable { * @hide */ @VisibleForTesting - public boolean equalsUids(NetworkCapabilities nc) { + public boolean equalsUids(@NonNull NetworkCapabilities nc) { Set<UidRange> comparedUids = nc.mUids; if (null == comparedUids) return null == mUids; if (null == mUids) return false; @@ -1212,7 +1212,7 @@ public final class NetworkCapabilities implements Parcelable { * @see #appliesToUid * @hide */ - public boolean satisfiedByUids(NetworkCapabilities nc) { + public boolean satisfiedByUids(@NonNull NetworkCapabilities nc) { if (null == nc.mUids || null == mUids) return true; // The network satisfies everything. for (UidRange requiredRange : mUids) { if (requiredRange.contains(nc.mEstablishingVpnAppUid)) return true; @@ -1232,7 +1232,7 @@ public final class NetworkCapabilities implements Parcelable { * @hide */ @VisibleForTesting - public boolean appliesToUidRange(UidRange requiredRange) { + public boolean appliesToUidRange(@Nullable UidRange requiredRange) { if (null == mUids) return true; for (UidRange uidRange : mUids) { if (uidRange.containsRange(requiredRange)) { @@ -1247,7 +1247,7 @@ public final class NetworkCapabilities implements Parcelable { * NetworkCapabilities apply to. * nc is assumed nonnull. */ - private void combineUids(NetworkCapabilities nc) { + private void combineUids(@NonNull NetworkCapabilities nc) { if (null == nc.mUids || null == mUids) { mUids = null; return; @@ -1268,7 +1268,7 @@ public final class NetworkCapabilities implements Parcelable { * Sets the SSID of this network. * @hide */ - public NetworkCapabilities setSSID(String ssid) { + public @NonNull NetworkCapabilities setSSID(@Nullable String ssid) { mSSID = ssid; return this; } @@ -1277,7 +1277,7 @@ public final class NetworkCapabilities implements Parcelable { * Gets the SSID of this network, or null if none or unknown. * @hide */ - public String getSSID() { + public @Nullable String getSSID() { return mSSID; } @@ -1285,7 +1285,7 @@ public final class NetworkCapabilities implements Parcelable { * Tests if the SSID of this network is the same as the SSID of the passed network. * @hide */ - public boolean equalsSSID(NetworkCapabilities nc) { + public boolean equalsSSID(@NonNull NetworkCapabilities nc) { return Objects.equals(mSSID, nc.mSSID); } @@ -1293,7 +1293,7 @@ public final class NetworkCapabilities implements Parcelable { * Check if the SSID requirements of this object are matched by the passed object. * @hide */ - public boolean satisfiedBySSID(NetworkCapabilities nc) { + public boolean satisfiedBySSID(@NonNull NetworkCapabilities nc) { return mSSID == null || mSSID.equals(nc.mSSID); } @@ -1304,7 +1304,7 @@ public final class NetworkCapabilities implements Parcelable { * equal. * @hide */ - private void combineSSIDs(NetworkCapabilities nc) { + private void combineSSIDs(@NonNull NetworkCapabilities nc) { if (mSSID != null && !mSSID.equals(nc.mSSID)) { throw new IllegalStateException("Can't combine two SSIDs"); } @@ -1319,7 +1319,7 @@ public final class NetworkCapabilities implements Parcelable { * both lists will never be satisfied. * @hide */ - public void combineCapabilities(NetworkCapabilities nc) { + public void combineCapabilities(@NonNull NetworkCapabilities nc) { combineNetCapabilities(nc); combineTransportTypes(nc); combineLinkBandwidths(nc); @@ -1359,7 +1359,7 @@ public final class NetworkCapabilities implements Parcelable { */ @TestApi @SystemApi - public boolean satisfiedByNetworkCapabilities(NetworkCapabilities nc) { + public boolean satisfiedByNetworkCapabilities(@Nullable NetworkCapabilities nc) { return satisfiedByNetworkCapabilities(nc, false); } @@ -1370,7 +1370,7 @@ public final class NetworkCapabilities implements Parcelable { * * @hide */ - public boolean satisfiedByImmutableNetworkCapabilities(NetworkCapabilities nc) { + public boolean satisfiedByImmutableNetworkCapabilities(@Nullable NetworkCapabilities nc) { return satisfiedByNetworkCapabilities(nc, true); } @@ -1381,7 +1381,7 @@ public final class NetworkCapabilities implements Parcelable { * * @hide */ - public String describeImmutableDifferences(NetworkCapabilities that) { + public String describeImmutableDifferences(@Nullable NetworkCapabilities that) { if (that == null) { return "other NetworkCapabilities was null"; } @@ -1420,7 +1420,7 @@ public final class NetworkCapabilities implements Parcelable { * * @hide */ - public boolean equalRequestableCapabilities(NetworkCapabilities nc) { + public boolean equalRequestableCapabilities(@Nullable NetworkCapabilities nc) { if (nc == null) return false; return (equalsNetCapabilitiesRequestable(nc) && equalsTransportTypes(nc) && @@ -1428,7 +1428,7 @@ public final class NetworkCapabilities implements Parcelable { } @Override - public boolean equals(Object obj) { + public boolean equals(@Nullable Object obj) { if (obj == null || (obj instanceof NetworkCapabilities == false)) return false; NetworkCapabilities that = (NetworkCapabilities) obj; return (equalsNetCapabilities(that) @@ -1502,7 +1502,7 @@ public final class NetworkCapabilities implements Parcelable { }; @Override - public String toString() { + public @NonNull String toString() { final StringBuilder sb = new StringBuilder("["); if (0 != mTransportTypes) { sb.append(" Transports: "); @@ -1561,8 +1561,8 @@ public final class NetworkCapabilities implements Parcelable { /** * @hide */ - public static void appendStringRepresentationOfBitMaskToStringBuilder(StringBuilder sb, - long bitMask, NameOf nameFetcher, String separator) { + public static void appendStringRepresentationOfBitMaskToStringBuilder(@NonNull StringBuilder sb, + long bitMask, @NonNull NameOf nameFetcher, @NonNull String separator) { int bitPos = 0; boolean firstElementAdded = false; while (bitMask != 0) { @@ -1580,7 +1580,7 @@ public final class NetworkCapabilities implements Parcelable { } /** @hide */ - public void writeToProto(ProtoOutputStream proto, long fieldId) { + public void writeToProto(@NonNull ProtoOutputStream proto, long fieldId) { final long token = proto.start(fieldId); for (int transport : getTransportTypes()) { @@ -1610,7 +1610,7 @@ public final class NetworkCapabilities implements Parcelable { /** * @hide */ - public static String capabilityNamesOf(@NetCapability int[] capabilities) { + public static @NonNull String capabilityNamesOf(@Nullable @NetCapability int[] capabilities) { StringJoiner joiner = new StringJoiner("|"); if (capabilities != null) { for (int c : capabilities) { @@ -1623,7 +1623,7 @@ public final class NetworkCapabilities implements Parcelable { /** * @hide */ - public static String capabilityNameOf(@NetCapability int capability) { + public static @NonNull String capabilityNameOf(@NetCapability int capability) { switch (capability) { case NET_CAPABILITY_MMS: return "MMS"; case NET_CAPABILITY_SUPL: return "SUPL"; @@ -1658,7 +1658,7 @@ public final class NetworkCapabilities implements Parcelable { * @hide */ @UnsupportedAppUsage - public static String transportNamesOf(@Transport int[] types) { + public static @NonNull String transportNamesOf(@Nullable @Transport int[] types) { StringJoiner joiner = new StringJoiner("|"); if (types != null) { for (int t : types) { @@ -1671,7 +1671,7 @@ public final class NetworkCapabilities implements Parcelable { /** * @hide */ - public static String transportNameOf(@Transport int transport) { + public static @NonNull String transportNameOf(@Transport int transport) { if (!isValidTransport(transport)) { return "UNKNOWN"; } diff --git a/core/java/android/net/NetworkInfo.java b/core/java/android/net/NetworkInfo.java index 89d99617dfbf..8fb5a202fe03 100644 --- a/core/java/android/net/NetworkInfo.java +++ b/core/java/android/net/NetworkInfo.java @@ -16,6 +16,7 @@ package android.net; +import android.annotation.NonNull; import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; @@ -138,7 +139,9 @@ public class NetworkInfo implements Parcelable { private int mSubtype; private String mTypeName; private String mSubtypeName; + @NonNull private State mState; + @NonNull private DetailedState mDetailedState; private String mReason; private String mExtraInfo; @@ -451,7 +454,7 @@ public class NetworkInfo implements Parcelable { * the device and let apps react more easily and quickly to changes. */ @Deprecated - public DetailedState getDetailedState() { + public @NonNull DetailedState getDetailedState() { synchronized (this) { return mDetailedState; } diff --git a/core/java/android/net/NetworkRequest.java b/core/java/android/net/NetworkRequest.java index 9508217be53f..3a41a079dad0 100644 --- a/core/java/android/net/NetworkRequest.java +++ b/core/java/android/net/NetworkRequest.java @@ -347,7 +347,7 @@ public class NetworkRequest implements Parcelable { * @hide */ @SystemApi - public Builder setSignalStrength(int signalStrength) { + public @NonNull Builder setSignalStrength(int signalStrength) { mNetworkCapabilities.setSignalStrength(signalStrength); return this; } diff --git a/core/java/android/net/RouteInfo.java b/core/java/android/net/RouteInfo.java index 5c0f7582091d..24d9b8e2c1b0 100644 --- a/core/java/android/net/RouteInfo.java +++ b/core/java/android/net/RouteInfo.java @@ -16,6 +16,7 @@ package android.net; +import android.annotation.Nullable; import android.annotation.SystemApi; import android.annotation.TestApi; import android.annotation.UnsupportedAppUsage; @@ -112,7 +113,8 @@ public final class RouteInfo implements Parcelable { */ @SystemApi @TestApi - public RouteInfo(IpPrefix destination, InetAddress gateway, String iface, int type) { + public RouteInfo(@Nullable IpPrefix destination, @Nullable InetAddress gateway, + @Nullable String iface, int type) { switch (type) { case RTN_UNICAST: case RTN_UNREACHABLE: diff --git a/core/java/android/net/apf/ApfCapabilities.java b/core/java/android/net/apf/ApfCapabilities.java index d6023d701762..17a03c7c8933 100644 --- a/core/java/android/net/apf/ApfCapabilities.java +++ b/core/java/android/net/apf/ApfCapabilities.java @@ -16,6 +16,7 @@ package android.net.apf; +import android.annotation.NonNull; import android.annotation.SystemApi; import android.annotation.TestApi; import android.content.Context; @@ -115,14 +116,14 @@ public final class ApfCapabilities implements Parcelable { /** * @return Whether the APF Filter in the device should filter out IEEE 802.3 Frames. */ - public static boolean getApfDrop8023Frames(Context context) { + public static boolean getApfDrop8023Frames(@NonNull Context context) { return context.getResources().getBoolean(R.bool.config_apfDrop802_3Frames); } /** * @return An array of blacklisted EtherType, packets with EtherTypes within it will be dropped. */ - public static int[] getApfEthTypeBlackList(Context context) { + public static @NonNull int[] getApfEthTypeBlackList(@NonNull Context context) { return context.getResources().getIntArray(R.array.config_apfEthTypeBlackList); } } diff --git a/core/java/android/net/metrics/RaEvent.java b/core/java/android/net/metrics/RaEvent.java index 04a2e6e3102c..d16a10432373 100644 --- a/core/java/android/net/metrics/RaEvent.java +++ b/core/java/android/net/metrics/RaEvent.java @@ -16,6 +16,7 @@ package android.net.metrics; +import android.annotation.NonNull; import android.annotation.SystemApi; import android.annotation.TestApi; import android.os.Parcel; @@ -107,7 +108,7 @@ public final class RaEvent implements IpConnectivityLog.Event { } }; - public static class Builder { + public static final class Builder { long routerLifetime = NO_LIFETIME; long prefixValidLifetime = NO_LIFETIME; @@ -119,37 +120,37 @@ public final class RaEvent implements IpConnectivityLog.Event { public Builder() { } - public RaEvent build() { + public @NonNull RaEvent build() { return new RaEvent(routerLifetime, prefixValidLifetime, prefixPreferredLifetime, routeInfoLifetime, rdnssLifetime, dnsslLifetime); } - public Builder updateRouterLifetime(long lifetime) { + public @NonNull Builder updateRouterLifetime(long lifetime) { routerLifetime = updateLifetime(routerLifetime, lifetime); return this; } - public Builder updatePrefixValidLifetime(long lifetime) { + public @NonNull Builder updatePrefixValidLifetime(long lifetime) { prefixValidLifetime = updateLifetime(prefixValidLifetime, lifetime); return this; } - public Builder updatePrefixPreferredLifetime(long lifetime) { + public @NonNull Builder updatePrefixPreferredLifetime(long lifetime) { prefixPreferredLifetime = updateLifetime(prefixPreferredLifetime, lifetime); return this; } - public Builder updateRouteInfoLifetime(long lifetime) { + public @NonNull Builder updateRouteInfoLifetime(long lifetime) { routeInfoLifetime = updateLifetime(routeInfoLifetime, lifetime); return this; } - public Builder updateRdnssLifetime(long lifetime) { + public @NonNull Builder updateRdnssLifetime(long lifetime) { rdnssLifetime = updateLifetime(rdnssLifetime, lifetime); return this; } - public Builder updateDnsslLifetime(long lifetime) { + public @NonNull Builder updateDnsslLifetime(long lifetime) { dnsslLifetime = updateLifetime(dnsslLifetime, lifetime); return this; } diff --git a/packages/NetworkStack/src/android/net/dhcp/DhcpServingParams.java b/packages/NetworkStack/src/android/net/dhcp/DhcpServingParams.java index 3cd2aa40dfb2..230b693a809a 100644 --- a/packages/NetworkStack/src/android/net/dhcp/DhcpServingParams.java +++ b/packages/NetworkStack/src/android/net/dhcp/DhcpServingParams.java @@ -329,7 +329,7 @@ public class DhcpServingParams { if (mLinkMtu != MTU_UNSET && (mLinkMtu < IPV4_MIN_MTU || mLinkMtu > IPV4_MAX_MTU)) { throw new InvalidParameterException("Invalid link MTU: " + mLinkMtu); } - if (!mServerAddr.isIPv4()) { + if (!mServerAddr.isIpv4()) { throw new InvalidParameterException("serverAddr must be IPv4"); } if (mServerAddr.getPrefixLength() < MIN_PREFIX_LENGTH diff --git a/packages/NetworkStack/src/android/net/ip/IpClient.java b/packages/NetworkStack/src/android/net/ip/IpClient.java index b68fe235647a..61dc966076a8 100644 --- a/packages/NetworkStack/src/android/net/ip/IpClient.java +++ b/packages/NetworkStack/src/android/net/ip/IpClient.java @@ -834,7 +834,7 @@ public class IpClient extends StateMachine { static boolean isProvisioned(LinkProperties lp, InitialConfiguration config) { // For historical reasons, we should connect even if all we have is // an IPv4 address and nothing else. - if (lp.hasIPv4Address() || lp.isProvisioned()) { + if (lp.hasIpv4Address() || lp.isProvisioned()) { return true; } if (config == null) { @@ -878,9 +878,9 @@ public class IpClient extends StateMachine { delta = PROV_CHANGE_LOST_PROVISIONING; } - final boolean lostIPv6 = oldLp.isIPv6Provisioned() && !newLp.isIPv6Provisioned(); - final boolean lostIPv4Address = oldLp.hasIPv4Address() && !newLp.hasIPv4Address(); - final boolean lostIPv6Router = oldLp.hasIPv6DefaultRoute() && !newLp.hasIPv6DefaultRoute(); + final boolean lostIPv6 = oldLp.isIpv6Provisioned() && !newLp.isIpv6Provisioned(); + final boolean lostIPv4Address = oldLp.hasIpv4Address() && !newLp.hasIpv4Address(); + final boolean lostIPv6Router = oldLp.hasIpv6DefaultRoute() && !newLp.hasIpv6DefaultRoute(); // If bad wifi avoidance is disabled, then ignore IPv6 loss of // provisioning. Otherwise, when a hotspot that loses Internet @@ -920,7 +920,7 @@ public class IpClient extends StateMachine { // If the previous link properties had a global IPv6 address and an // IPv6 default route then also consider the loss of that default route // to be a loss of provisioning. See b/27962810. - if (oldLp.hasGlobalIPv6Address() && (lostIPv6Router && !ignoreIPv6ProvisioningLoss)) { + if (oldLp.hasGlobalIpv6Address() && (lostIPv6Router && !ignoreIPv6ProvisioningLoss)) { delta = PROV_CHANGE_LOST_PROVISIONING; } @@ -1156,7 +1156,7 @@ public class IpClient extends StateMachine { private boolean applyInitialConfig(InitialConfiguration config) { // TODO: also support specifying a static IPv4 configuration in InitialConfiguration. - for (LinkAddress addr : findAll(config.ipAddresses, LinkAddress::isIPv6)) { + for (LinkAddress addr : findAll(config.ipAddresses, LinkAddress::isIpv6)) { if (!mInterfaceCtrl.addAddress(addr)) return false; } @@ -1374,7 +1374,7 @@ public class IpClient extends StateMachine { } private boolean readyToProceed() { - return (!mLinkProperties.hasIPv4Address() && !mLinkProperties.hasGlobalIPv6Address()); + return (!mLinkProperties.hasIpv4Address() && !mLinkProperties.hasGlobalIpv6Address()); } } diff --git a/packages/NetworkStack/src/android/net/ip/IpReachabilityMonitor.java b/packages/NetworkStack/src/android/net/ip/IpReachabilityMonitor.java index 76a03387a12d..e73cba626f15 100644 --- a/packages/NetworkStack/src/android/net/ip/IpReachabilityMonitor.java +++ b/packages/NetworkStack/src/android/net/ip/IpReachabilityMonitor.java @@ -316,8 +316,8 @@ public class IpReachabilityMonitor { } final boolean lostProvisioning = - (mLinkProperties.isIPv4Provisioned() && !whatIfLp.isIPv4Provisioned()) - || (mLinkProperties.isIPv6Provisioned() && !whatIfLp.isIPv6Provisioned()); + (mLinkProperties.isIpv4Provisioned() && !whatIfLp.isIpv4Provisioned()) + || (mLinkProperties.isIpv6Provisioned() && !whatIfLp.isIpv6Provisioned()); if (lostProvisioning) { final String logMsg = "FAILURE: LOST_PROVISIONING, " + event; diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 733b8a07eb54..52fcd4a968ca 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -2174,7 +2174,7 @@ public class ConnectivityService extends IConnectivityManager.Stub if (VDBG) log("identical MTU - not setting"); return; } - if (LinkProperties.isValidMtu(mtu, newLp.hasGlobalIPv6Address()) == false) { + if (!LinkProperties.isValidMtu(mtu, newLp.hasGlobalIpv6Address())) { if (mtu != 0) loge("Unexpected mtu value: " + mtu + ", " + iface); return; } diff --git a/services/core/java/com/android/server/connectivity/DefaultNetworkMetrics.java b/services/core/java/com/android/server/connectivity/DefaultNetworkMetrics.java index e43d1526f760..96a202fa2b10 100644 --- a/services/core/java/com/android/server/connectivity/DefaultNetworkMetrics.java +++ b/services/core/java/com/android/server/connectivity/DefaultNetworkMetrics.java @@ -163,8 +163,8 @@ public class DefaultNetworkMetrics { LinkProperties lp = nai.linkProperties; ev.netId = nai.network().netId; ev.transports |= BitUtils.packBits(nai.networkCapabilities.getTransportTypes()); - ev.ipv4 |= lp.hasIPv4Address() && lp.hasIPv4DefaultRoute(); - ev.ipv6 |= lp.hasGlobalIPv6Address() && lp.hasIPv6DefaultRoute(); + ev.ipv4 |= lp.hasIpv4Address() && lp.hasIpv4DefaultRoute(); + ev.ipv6 |= lp.hasGlobalIpv6Address() && lp.hasIpv6DefaultRoute(); } private static void printEvent(long localTimeMs, PrintWriter pw, DefaultNetworkEvent ev) { diff --git a/services/core/java/com/android/server/connectivity/Nat464Xlat.java b/services/core/java/com/android/server/connectivity/Nat464Xlat.java index 2646d7669d79..262ba7a475bb 100644 --- a/services/core/java/com/android/server/connectivity/Nat464Xlat.java +++ b/services/core/java/com/android/server/connectivity/Nat464Xlat.java @@ -107,8 +107,8 @@ public class Nat464Xlat extends BaseNetworkObserver { // Only run clat on networks that have a global IPv6 address and don't have a native IPv4 // address. LinkProperties lp = nai.linkProperties; - final boolean isIpv6OnlyNetwork = (lp != null) && lp.hasGlobalIPv6Address() - && !lp.hasIPv4Address(); + final boolean isIpv6OnlyNetwork = (lp != null) && lp.hasGlobalIpv6Address() + && !lp.hasIpv4Address(); // If the network tells us it doesn't use clat, respect that. final boolean skip464xlat = (nai.netMisc() != null) && nai.netMisc().skip464xlat; diff --git a/services/core/java/com/android/server/connectivity/NetworkDiagnostics.java b/services/core/java/com/android/server/connectivity/NetworkDiagnostics.java index c471f0caa3cc..948c690956d3 100644 --- a/services/core/java/com/android/server/connectivity/NetworkDiagnostics.java +++ b/services/core/java/com/android/server/connectivity/NetworkDiagnostics.java @@ -34,10 +34,12 @@ import android.util.Pair; import com.android.internal.util.IndentingPrintWriter; +import libcore.io.IoUtils; + import java.io.Closeable; import java.io.FileDescriptor; -import java.io.InterruptedIOException; import java.io.IOException; +import java.io.InterruptedIOException; import java.net.Inet4Address; import java.net.Inet6Address; import java.net.InetAddress; @@ -48,17 +50,13 @@ import java.net.SocketException; import java.net.UnknownHostException; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; -import java.util.Arrays; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; - -import libcore.io.IoUtils; - +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; /** * NetworkDiagnostics @@ -186,7 +184,7 @@ public class NetworkDiagnostics { // TODO: we could use mLinkProperties.isReachable(TEST_DNS6) here, because we won't set any // DNS servers for which isReachable() is false, but since this is diagnostic code, be extra // careful. - if (mLinkProperties.hasGlobalIPv6Address() || mLinkProperties.hasIPv6DefaultRoute()) { + if (mLinkProperties.hasGlobalIpv6Address() || mLinkProperties.hasIpv6DefaultRoute()) { mLinkProperties.addDnsServer(TEST_DNS6); } diff --git a/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java b/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java index 100014898127..38eb0bcfd3cc 100644 --- a/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java +++ b/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java @@ -17,7 +17,6 @@ package com.android.server.connectivity.tethering; import android.net.ConnectivityManager; -import android.net.ip.IpServer; import android.net.IpPrefix; import android.net.LinkAddress; import android.net.LinkProperties; @@ -25,6 +24,7 @@ import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkState; import android.net.RouteInfo; +import android.net.ip.IpServer; import android.net.util.NetworkConstants; import android.net.util.SharedLog; import android.util.Log; @@ -191,7 +191,7 @@ public class IPv6TetheringCoordinator { if (currentActive != null && currentActive.ipServer == ipServer) { final LinkProperties lp = getIPv6OnlyLinkProperties( mUpstreamNetworkState.linkProperties); - if (lp.hasIPv6DefaultRoute() && lp.hasGlobalIPv6Address()) { + if (lp.hasIpv6DefaultRoute() && lp.hasGlobalIpv6Address()) { return lp; } } diff --git a/services/core/java/com/android/server/connectivity/tethering/TetheringInterfaceUtils.java b/services/core/java/com/android/server/connectivity/tethering/TetheringInterfaceUtils.java index 6c7ff91761ac..0ef3805ff7c0 100644 --- a/services/core/java/com/android/server/connectivity/tethering/TetheringInterfaceUtils.java +++ b/services/core/java/com/android/server/connectivity/tethering/TetheringInterfaceUtils.java @@ -67,14 +67,14 @@ public final class TetheringInterfaceUtils { // because "[t]he 3GPP network allocates each default bearer a unique // /64 prefix", per RFC 6459, Section 5.2. final boolean canTether = - (ns != null) && (ns.network != null) && - (ns.linkProperties != null) && (ns.networkCapabilities != null) && + (ns != null) && (ns.network != null) + && (ns.linkProperties != null) && (ns.networkCapabilities != null) // At least one upstream DNS server: - ns.linkProperties.hasIPv6DnsServer() && + && ns.linkProperties.hasIpv6DnsServer() // Minimal amount of IPv6 provisioning: - ns.linkProperties.hasGlobalIPv6Address() && + && ns.linkProperties.hasGlobalIpv6Address() // Temporary approximation of "dedicated prefix": - ns.networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR); + && ns.networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR); return canTether ? getInterfaceForDestination(ns.linkProperties, Inet6Address.ANY) diff --git a/services/net/java/android/net/ip/IpServer.java b/services/net/java/android/net/ip/IpServer.java index 0e44f88d2389..fc1128b80499 100644 --- a/services/net/java/android/net/ip/IpServer.java +++ b/services/net/java/android/net/ip/IpServer.java @@ -506,7 +506,7 @@ public class IpServer extends StateMachine { if (v6only != null) { params = new RaParams(); params.mtu = v6only.getMtu(); - params.hasDefaultRoute = v6only.hasIPv6DefaultRoute(); + params.hasDefaultRoute = v6only.hasIpv6DefaultRoute(); if (params.hasDefaultRoute) params.hopLimit = getHopLimit(v6only.getInterfaceName()); diff --git a/services/net/java/android/net/shared/InitialConfiguration.java b/services/net/java/android/net/shared/InitialConfiguration.java index e423d62da7c9..007c8ca93d5a 100644 --- a/services/net/java/android/net/shared/InitialConfiguration.java +++ b/services/net/java/android/net/shared/InitialConfiguration.java @@ -207,7 +207,7 @@ public class InitialConfiguration { } private static boolean isIPv6GUA(LinkAddress addr) { - return addr.isIPv6() && addr.isGlobalPreferred(); + return addr.isIpv6() && addr.isGlobalPreferred(); } // TODO: extract out into CollectionUtils. diff --git a/tests/net/java/android/net/LinkAddressTest.java b/tests/net/java/android/net/LinkAddressTest.java index be7bd1b108b0..d462441b22fa 100644 --- a/tests/net/java/android/net/LinkAddressTest.java +++ b/tests/net/java/android/net/LinkAddressTest.java @@ -81,14 +81,14 @@ public class LinkAddressTest { assertEquals(25, address.getPrefixLength()); assertEquals(0, address.getFlags()); assertEquals(RT_SCOPE_UNIVERSE, address.getScope()); - assertTrue(address.isIPv4()); + assertTrue(address.isIpv4()); address = new LinkAddress(V6_ADDRESS, 127); assertEquals(V6_ADDRESS, address.getAddress()); assertEquals(127, address.getPrefixLength()); assertEquals(0, address.getFlags()); assertEquals(RT_SCOPE_UNIVERSE, address.getScope()); - assertTrue(address.isIPv6()); + assertTrue(address.isIpv6()); // Nonsensical flags/scopes or combinations thereof are acceptable. address = new LinkAddress(V6 + "/64", IFA_F_DEPRECATED | IFA_F_PERMANENT, RT_SCOPE_LINK); @@ -96,14 +96,14 @@ public class LinkAddressTest { assertEquals(64, address.getPrefixLength()); assertEquals(IFA_F_DEPRECATED | IFA_F_PERMANENT, address.getFlags()); assertEquals(RT_SCOPE_LINK, address.getScope()); - assertTrue(address.isIPv6()); + assertTrue(address.isIpv6()); address = new LinkAddress(V4 + "/23", 123, 456); assertEquals(V4_ADDRESS, address.getAddress()); assertEquals(23, address.getPrefixLength()); assertEquals(123, address.getFlags()); assertEquals(456, address.getScope()); - assertTrue(address.isIPv4()); + assertTrue(address.isIpv4()); // InterfaceAddress doesn't have a constructor. Fetch some from an interface. List<InterfaceAddress> addrs = NetworkInterface.getByName("lo").getInterfaceAddresses(); diff --git a/tests/net/java/android/net/LinkPropertiesTest.java b/tests/net/java/android/net/LinkPropertiesTest.java index 9a7d48723e8c..417729150be8 100644 --- a/tests/net/java/android/net/LinkPropertiesTest.java +++ b/tests/net/java/android/net/LinkPropertiesTest.java @@ -405,8 +405,8 @@ public class LinkPropertiesTest { LinkProperties lp = new LinkProperties(); // No addresses. - assertFalse(lp.hasIPv4Address()); - assertFalse(lp.hasGlobalIPv6Address()); + assertFalse(lp.hasIpv4Address()); + assertFalse(lp.hasGlobalIpv6Address()); // Addresses on stacked links don't count. LinkProperties stacked = new LinkProperties(); @@ -414,53 +414,53 @@ public class LinkPropertiesTest { lp.addStackedLink(stacked); stacked.addLinkAddress(LINKADDRV4); stacked.addLinkAddress(LINKADDRV6); - assertTrue(stacked.hasIPv4Address()); - assertTrue(stacked.hasGlobalIPv6Address()); - assertFalse(lp.hasIPv4Address()); - assertFalse(lp.hasGlobalIPv6Address()); + assertTrue(stacked.hasIpv4Address()); + assertTrue(stacked.hasGlobalIpv6Address()); + assertFalse(lp.hasIpv4Address()); + assertFalse(lp.hasGlobalIpv6Address()); lp.removeStackedLink("stacked"); - assertFalse(lp.hasIPv4Address()); - assertFalse(lp.hasGlobalIPv6Address()); + assertFalse(lp.hasIpv4Address()); + assertFalse(lp.hasGlobalIpv6Address()); // Addresses on the base link. - // Check the return values of hasIPvXAddress and ensure the add/remove methods return true + // Check the return values of hasIpvXAddress and ensure the add/remove methods return true // iff something changes. assertEquals(0, lp.getLinkAddresses().size()); assertTrue(lp.addLinkAddress(LINKADDRV6)); assertEquals(1, lp.getLinkAddresses().size()); - assertFalse(lp.hasIPv4Address()); - assertTrue(lp.hasGlobalIPv6Address()); + assertFalse(lp.hasIpv4Address()); + assertTrue(lp.hasGlobalIpv6Address()); assertTrue(lp.removeLinkAddress(LINKADDRV6)); assertEquals(0, lp.getLinkAddresses().size()); assertTrue(lp.addLinkAddress(LINKADDRV6LINKLOCAL)); assertEquals(1, lp.getLinkAddresses().size()); - assertFalse(lp.hasGlobalIPv6Address()); + assertFalse(lp.hasGlobalIpv6Address()); assertTrue(lp.addLinkAddress(LINKADDRV4)); assertEquals(2, lp.getLinkAddresses().size()); - assertTrue(lp.hasIPv4Address()); - assertFalse(lp.hasGlobalIPv6Address()); + assertTrue(lp.hasIpv4Address()); + assertFalse(lp.hasGlobalIpv6Address()); assertTrue(lp.addLinkAddress(LINKADDRV6)); assertEquals(3, lp.getLinkAddresses().size()); - assertTrue(lp.hasIPv4Address()); - assertTrue(lp.hasGlobalIPv6Address()); + assertTrue(lp.hasIpv4Address()); + assertTrue(lp.hasGlobalIpv6Address()); assertTrue(lp.removeLinkAddress(LINKADDRV6LINKLOCAL)); assertEquals(2, lp.getLinkAddresses().size()); - assertTrue(lp.hasIPv4Address()); - assertTrue(lp.hasGlobalIPv6Address()); + assertTrue(lp.hasIpv4Address()); + assertTrue(lp.hasGlobalIpv6Address()); // Adding an address twice has no effect. // Removing an address that's not present has no effect. assertFalse(lp.addLinkAddress(LINKADDRV4)); assertEquals(2, lp.getLinkAddresses().size()); - assertTrue(lp.hasIPv4Address()); + assertTrue(lp.hasIpv4Address()); assertTrue(lp.removeLinkAddress(LINKADDRV4)); assertEquals(1, lp.getLinkAddresses().size()); - assertFalse(lp.hasIPv4Address()); + assertFalse(lp.hasIpv4Address()); assertFalse(lp.removeLinkAddress(LINKADDRV4)); assertEquals(1, lp.getLinkAddresses().size()); @@ -546,8 +546,8 @@ public class LinkPropertiesTest { assertFalse("v4only:addr+dns", lp4.isProvisioned()); lp4.addRoute(new RouteInfo(GATEWAY1)); assertTrue("v4only:addr+dns+route", lp4.isProvisioned()); - assertTrue("v4only:addr+dns+route", lp4.isIPv4Provisioned()); - assertFalse("v4only:addr+dns+route", lp4.isIPv6Provisioned()); + assertTrue("v4only:addr+dns+route", lp4.isIpv4Provisioned()); + assertFalse("v4only:addr+dns+route", lp4.isIpv6Provisioned()); LinkProperties lp6 = new LinkProperties(); assertFalse("v6only:empty", lp6.isProvisioned()); @@ -558,11 +558,11 @@ public class LinkPropertiesTest { lp6.addRoute(new RouteInfo(GATEWAY61)); assertFalse("v6only:fe80+dns+route", lp6.isProvisioned()); lp6.addLinkAddress(LINKADDRV6); - assertTrue("v6only:fe80+global+dns+route", lp6.isIPv6Provisioned()); + assertTrue("v6only:fe80+global+dns+route", lp6.isIpv6Provisioned()); assertTrue("v6only:fe80+global+dns+route", lp6.isProvisioned()); lp6.removeLinkAddress(LINKADDRV6LINKLOCAL); - assertFalse("v6only:global+dns+route", lp6.isIPv4Provisioned()); - assertTrue("v6only:global+dns+route", lp6.isIPv6Provisioned()); + assertFalse("v6only:global+dns+route", lp6.isIpv4Provisioned()); + assertTrue("v6only:global+dns+route", lp6.isIpv6Provisioned()); assertTrue("v6only:global+dns+route", lp6.isProvisioned()); LinkProperties lp46 = new LinkProperties(); @@ -572,12 +572,12 @@ public class LinkPropertiesTest { lp46.addDnsServer(DNS6); assertFalse("dualstack:missing-routes", lp46.isProvisioned()); lp46.addRoute(new RouteInfo(GATEWAY1)); - assertTrue("dualstack:v4-provisioned", lp46.isIPv4Provisioned()); - assertFalse("dualstack:v4-provisioned", lp46.isIPv6Provisioned()); + assertTrue("dualstack:v4-provisioned", lp46.isIpv4Provisioned()); + assertFalse("dualstack:v4-provisioned", lp46.isIpv6Provisioned()); assertTrue("dualstack:v4-provisioned", lp46.isProvisioned()); lp46.addRoute(new RouteInfo(GATEWAY61)); - assertTrue("dualstack:both-provisioned", lp46.isIPv4Provisioned()); - assertTrue("dualstack:both-provisioned", lp46.isIPv6Provisioned()); + assertTrue("dualstack:both-provisioned", lp46.isIpv4Provisioned()); + assertTrue("dualstack:both-provisioned", lp46.isIpv6Provisioned()); assertTrue("dualstack:both-provisioned", lp46.isProvisioned()); // A link with an IPv6 address and default route, but IPv4 DNS server. @@ -585,8 +585,8 @@ public class LinkPropertiesTest { mixed.addLinkAddress(LINKADDRV6); mixed.addDnsServer(DNS1); mixed.addRoute(new RouteInfo(GATEWAY61)); - assertFalse("mixed:addr6+route6+dns4", mixed.isIPv4Provisioned()); - assertFalse("mixed:addr6+route6+dns4", mixed.isIPv6Provisioned()); + assertFalse("mixed:addr6+route6+dns4", mixed.isIpv4Provisioned()); + assertFalse("mixed:addr6+route6+dns4", mixed.isIpv6Provisioned()); assertFalse("mixed:addr6+route6+dns4", mixed.isProvisioned()); } @@ -617,16 +617,16 @@ public class LinkPropertiesTest { v6lp.addLinkAddress(LINKADDRV6); v6lp.addRoute(new RouteInfo(GATEWAY61)); v6lp.addDnsServer(DNS6); - assertFalse(v6lp.isIPv4Provisioned()); - assertTrue(v6lp.isIPv6Provisioned()); + assertFalse(v6lp.isIpv4Provisioned()); + assertTrue(v6lp.isIpv6Provisioned()); assertTrue(v6lp.isProvisioned()); LinkProperties v46lp = new LinkProperties(v6lp); v46lp.addLinkAddress(LINKADDRV4); v46lp.addRoute(new RouteInfo(GATEWAY1)); v46lp.addDnsServer(DNS1); - assertTrue(v46lp.isIPv4Provisioned()); - assertTrue(v46lp.isIPv6Provisioned()); + assertTrue(v46lp.isIpv4Provisioned()); + assertTrue(v46lp.isIpv6Provisioned()); assertTrue(v46lp.isProvisioned()); assertEquals(ProvisioningChange.STILL_PROVISIONED, diff --git a/tests/net/java/com/android/server/connectivity/TetheringTest.java b/tests/net/java/com/android/server/connectivity/TetheringTest.java index fdba72333f0b..6c42ac398b47 100644 --- a/tests/net/java/com/android/server/connectivity/TetheringTest.java +++ b/tests/net/java/com/android/server/connectivity/TetheringTest.java @@ -550,7 +550,7 @@ public class TetheringTest { mTetheringDependencies.ipv6CoordinatorNotifyList) { NetworkState ipv6OnlyState = buildMobileUpstreamState(false, true, false); ipSrv.sendMessage(IpServer.CMD_IPV6_TETHER_UPDATE, 0, 0, - upstreamState.linkProperties.isIPv6Provisioned() + upstreamState.linkProperties.isIpv6Provisioned() ? ipv6OnlyState.linkProperties : null); } |