Loading Android.bp +3 −1 Original line number Original line Diff line number Diff line Loading @@ -214,8 +214,8 @@ java_defaults { libs: ["unsupportedappusage"], libs: ["unsupportedappusage"], static_libs: [ static_libs: [ "androidx.annotation_annotation", "androidx.annotation_annotation", "modules-utils-build_system", "netd_aidl_interface-lateststable-java", "netd_aidl_interface-lateststable-java", "netlink-client", "networkstack-client", "networkstack-client", "net-utils-framework-common", "net-utils-framework-common", // See note on statsprotos when adding/updating proto build rules // See note on statsprotos when adding/updating proto build rules Loading @@ -223,6 +223,7 @@ java_defaults { "statsprotos", "statsprotos", "captiveportal-lib", "captiveportal-lib", "net-utils-device-common", "net-utils-device-common", "net-utils-device-common-netlink", ], ], plugins: ["java_api_finder"], plugins: ["java_api_finder"], } } Loading Loading @@ -278,6 +279,7 @@ filegroup { visibility: [ visibility: [ "//packages/modules/NetworkStack/tests/unit", "//packages/modules/NetworkStack/tests/unit", "//packages/modules/NetworkStack/tests/integration", "//packages/modules/NetworkStack/tests/integration", "//packages/modules/Connectivity/tests:__subpackages__", "//packages/modules/Connectivity/Tethering/tests/integration", "//packages/modules/Connectivity/Tethering/tests/integration", ] ] } } Loading apishim/29/com/android/networkstack/apishim/api29/ConnectivityManagerShimImpl.java +33 −5 Original line number Original line Diff line number Diff line Loading @@ -16,8 +16,14 @@ package com.android.networkstack.apishim.api29; package com.android.networkstack.apishim.api29; import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED; import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN; import static android.net.NetworkCapabilities.NET_CAPABILITY_TRUSTED; import android.content.Context; import android.content.Context; import android.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; import android.net.ConnectivityManager.NetworkCallback; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.net.NetworkRequest; import android.os.Handler; import android.os.Handler; Loading @@ -30,7 +36,10 @@ import com.android.networkstack.apishim.common.UnsupportedApiLevelException; * Implementation of {@link ConnectivityManagerShim} for API 29. * Implementation of {@link ConnectivityManagerShim} for API 29. */ */ public class ConnectivityManagerShimImpl implements ConnectivityManagerShim { public class ConnectivityManagerShimImpl implements ConnectivityManagerShim { protected ConnectivityManagerShimImpl(Context context) {} protected final ConnectivityManager mCm; protected ConnectivityManagerShimImpl(Context context) { mCm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); } /** /** * Get a new instance of {@link ConnectivityManagerShim}. * Get a new instance of {@link ConnectivityManagerShim}. Loading @@ -52,12 +61,31 @@ public class ConnectivityManagerShimImpl implements ConnectivityManagerShim { /** /** * See android.net.ConnectivityManager#registerSystemDefaultNetworkCallback * See android.net.ConnectivityManager#registerSystemDefaultNetworkCallback * @throws UnsupportedApiLevelException if API is not available in this API level. */ */ @Override @Override public void registerSystemDefaultNetworkCallback(@NonNull NetworkCallback networkCallback, public void registerSystemDefaultNetworkCallback(@NonNull NetworkCallback networkCallback, @NonNull Handler handler) throws UnsupportedApiLevelException { @NonNull Handler handler) { // Not supported for API 29. // defaultNetworkRequest is not really a "request", just a way of tracking the system throw new UnsupportedApiLevelException("Not supported in API 29."); // default network. It's guaranteed not to actually bring up any networks because it // should be the same request as the ConnectivityService default request, and thus // shares fate with it. In API <= R, registerSystemDefaultNetworkCallback is not // available, and registerDefaultNetworkCallback will not track the system default when // a VPN applies to the UID of this process. final NetworkRequest defaultNetworkRequest = makeEmptyCapabilitiesRequest() .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) .addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED) .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN) .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .build(); mCm.requestNetwork(defaultNetworkRequest, networkCallback, handler); } @NonNull protected NetworkRequest.Builder makeEmptyCapabilitiesRequest() { // Q does not have clearCapabilities(), so assume the default capabilities are as below return new NetworkRequest.Builder() .removeCapability(NET_CAPABILITY_NOT_RESTRICTED) .removeCapability(NET_CAPABILITY_TRUSTED) .removeCapability(NET_CAPABILITY_NOT_VPN); } } } } apishim/30/com/android/networkstack/apishim/api30/ConnectivityManagerShimImpl.java +8 −27 Original line number Original line Diff line number Diff line Loading @@ -16,10 +16,10 @@ package com.android.networkstack.apishim.api30; package com.android.networkstack.apishim.api30; import static com.android.modules.utils.build.SdkLevel.isAtLeastR; import android.content.Context; import android.content.Context; import android.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; import android.net.ConnectivityManager.NetworkCallback; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.net.NetworkRequest; import android.os.Build; import android.os.Build; import android.os.Handler; import android.os.Handler; Loading @@ -28,25 +28,24 @@ import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi; import com.android.networkstack.apishim.common.ConnectivityManagerShim; import com.android.networkstack.apishim.common.ConnectivityManagerShim; import com.android.networkstack.apishim.common.ShimUtils; import com.android.networkstack.apishim.common.UnsupportedApiLevelException; import com.android.networkstack.apishim.common.UnsupportedApiLevelException; /** /** * Implementation of {@link ConnectivityManagerShim} for API 30. * Implementation of {@link ConnectivityManagerShim} for API 30. */ */ @RequiresApi(Build.VERSION_CODES.R) public class ConnectivityManagerShimImpl public class ConnectivityManagerShimImpl extends com.android.networkstack.apishim.api29.ConnectivityManagerShimImpl { extends com.android.networkstack.apishim.api29.ConnectivityManagerShimImpl { protected final ConnectivityManager mCm; protected ConnectivityManagerShimImpl(Context context) { protected ConnectivityManagerShimImpl(Context context) { super(context); super(context); mCm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); } } /** /** * Get a new instance of {@link ConnectivityManagerShim}. * Get a new instance of {@link ConnectivityManagerShim}. */ */ @RequiresApi(Build.VERSION_CODES.Q) public static ConnectivityManagerShim newInstance(Context context) { public static ConnectivityManagerShim newInstance(Context context) { if (!ShimUtils.isReleaseOrDevelopmentApiAbove(Build.VERSION_CODES.Q)) { if (!isAtLeastR()) { return com.android.networkstack.apishim.api29.ConnectivityManagerShimImpl return com.android.networkstack.apishim.api29.ConnectivityManagerShimImpl .newInstance(context); .newInstance(context); } } Loading @@ -65,27 +64,9 @@ public class ConnectivityManagerShimImpl throw new UnsupportedApiLevelException("Not supported in API 30."); throw new UnsupportedApiLevelException("Not supported in API 30."); } } /** @NonNull * See android.net.ConnectivityManager#registerSystemDefaultNetworkCallback * @throws UnsupportedApiLevelException if API is not available in this API level. */ @Override @Override @RequiresApi(Build.VERSION_CODES.R) protected NetworkRequest.Builder makeEmptyCapabilitiesRequest() { public void registerSystemDefaultNetworkCallback(@NonNull NetworkCallback networkCallback, return new NetworkRequest.Builder().clearCapabilities(); @NonNull Handler handler) { // defaultNetworkRequest is not really a "request", just a way of tracking the system // default network. It's guaranteed not to actually bring up any networks because it // should be the same request as the ConnectivityService default request, and thus // shares fate with it. In API <= R, registerSystemDefaultNetworkCallback is not // available, and registerDefaultNetworkCallback will not track the system default when // a VPN applies to the UID of this process. final NetworkRequest defaultNetworkRequest = new NetworkRequest.Builder() .clearCapabilities() .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) .addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED) .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN) .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .build(); mCm.requestNetwork(defaultNetworkRequest, networkCallback, handler); } } } } apishim/common/com/android/networkstack/apishim/common/ConnectivityManagerShim.java +1 −2 Original line number Original line Diff line number Diff line Loading @@ -42,8 +42,7 @@ public interface ConnectivityManagerShim { /** See android.net.ConnectivityManager#registerSystemDefaultNetworkCallback */ /** See android.net.ConnectivityManager#registerSystemDefaultNetworkCallback */ void registerSystemDefaultNetworkCallback( void registerSystemDefaultNetworkCallback( @NonNull NetworkCallback networkCallback, @NonNull Handler handler) @NonNull NetworkCallback networkCallback, @NonNull Handler handler); throws UnsupportedApiLevelException; /** See android.net.ConnectivityManager#registerDefaultNetworkCallbackForUid */ /** See android.net.ConnectivityManager#registerDefaultNetworkCallbackForUid */ default void registerDefaultNetworkCallbackForUid( default void registerDefaultNetworkCallbackForUid( Loading common/moduleutils/Android.bp +14 −4 Original line number Original line Diff line number Diff line Loading @@ -21,18 +21,29 @@ package { default_applicable_licenses: ["Android-Apache-2.0"], default_applicable_licenses: ["Android-Apache-2.0"], } } // TODO: remove this filegroup together with services.net filegroup { filegroup { name: "net-module-utils-srcs", name: "net-module-utils-srcs", srcs: [ srcs: [ "src/android/net/util/SharedLog.java", "src/android/net/shared/NetdUtils.java", "src/android/net/shared/NetdUtils.java", "src/android/net/shared/NetworkMonitorUtils.java", "src/android/net/shared/RouteUtils.java", "src/android/net/shared/RouteUtils.java", "src/android/net/util/InterfaceParams.java", "src/android/net/util/InterfaceParams.java", "src/android/net/util/SharedLog.java", ], ], visibility: [ visibility: [ "//frameworks/base/services/net", "//frameworks/base/services/net", "//frameworks/base/packages/Connectivity/service", ] } filegroup { name: "connectivity-module-utils-srcs", srcs: [ "src/android/net/util/SharedLog.java", "src/android/net/shared/NetdUtils.java", "src/android/net/shared/NetworkMonitorUtils.java", "src/android/net/shared/RouteUtils.java", ], visibility: [ "//packages/modules/Connectivity/service", "//packages/modules/Connectivity/service", ] ] } } Loading @@ -53,7 +64,6 @@ filegroup { "src/android/net/ip/InterfaceController.java", "src/android/net/ip/InterfaceController.java", "src/android/net/ip/IpNeighborMonitor.java", "src/android/net/ip/IpNeighborMonitor.java", "src/android/net/ip/NetlinkMonitor.java", "src/android/net/ip/NetlinkMonitor.java", "src/android/net/netlink/*.java", "src/android/net/shared/NetdUtils.java", "src/android/net/shared/NetdUtils.java", "src/android/net/shared/RouteUtils.java", "src/android/net/shared/RouteUtils.java", "src/android/net/util/InterfaceParams.java", "src/android/net/util/InterfaceParams.java", Loading Loading
Android.bp +3 −1 Original line number Original line Diff line number Diff line Loading @@ -214,8 +214,8 @@ java_defaults { libs: ["unsupportedappusage"], libs: ["unsupportedappusage"], static_libs: [ static_libs: [ "androidx.annotation_annotation", "androidx.annotation_annotation", "modules-utils-build_system", "netd_aidl_interface-lateststable-java", "netd_aidl_interface-lateststable-java", "netlink-client", "networkstack-client", "networkstack-client", "net-utils-framework-common", "net-utils-framework-common", // See note on statsprotos when adding/updating proto build rules // See note on statsprotos when adding/updating proto build rules Loading @@ -223,6 +223,7 @@ java_defaults { "statsprotos", "statsprotos", "captiveportal-lib", "captiveportal-lib", "net-utils-device-common", "net-utils-device-common", "net-utils-device-common-netlink", ], ], plugins: ["java_api_finder"], plugins: ["java_api_finder"], } } Loading Loading @@ -278,6 +279,7 @@ filegroup { visibility: [ visibility: [ "//packages/modules/NetworkStack/tests/unit", "//packages/modules/NetworkStack/tests/unit", "//packages/modules/NetworkStack/tests/integration", "//packages/modules/NetworkStack/tests/integration", "//packages/modules/Connectivity/tests:__subpackages__", "//packages/modules/Connectivity/Tethering/tests/integration", "//packages/modules/Connectivity/Tethering/tests/integration", ] ] } } Loading
apishim/29/com/android/networkstack/apishim/api29/ConnectivityManagerShimImpl.java +33 −5 Original line number Original line Diff line number Diff line Loading @@ -16,8 +16,14 @@ package com.android.networkstack.apishim.api29; package com.android.networkstack.apishim.api29; import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED; import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN; import static android.net.NetworkCapabilities.NET_CAPABILITY_TRUSTED; import android.content.Context; import android.content.Context; import android.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; import android.net.ConnectivityManager.NetworkCallback; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.net.NetworkRequest; import android.os.Handler; import android.os.Handler; Loading @@ -30,7 +36,10 @@ import com.android.networkstack.apishim.common.UnsupportedApiLevelException; * Implementation of {@link ConnectivityManagerShim} for API 29. * Implementation of {@link ConnectivityManagerShim} for API 29. */ */ public class ConnectivityManagerShimImpl implements ConnectivityManagerShim { public class ConnectivityManagerShimImpl implements ConnectivityManagerShim { protected ConnectivityManagerShimImpl(Context context) {} protected final ConnectivityManager mCm; protected ConnectivityManagerShimImpl(Context context) { mCm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); } /** /** * Get a new instance of {@link ConnectivityManagerShim}. * Get a new instance of {@link ConnectivityManagerShim}. Loading @@ -52,12 +61,31 @@ public class ConnectivityManagerShimImpl implements ConnectivityManagerShim { /** /** * See android.net.ConnectivityManager#registerSystemDefaultNetworkCallback * See android.net.ConnectivityManager#registerSystemDefaultNetworkCallback * @throws UnsupportedApiLevelException if API is not available in this API level. */ */ @Override @Override public void registerSystemDefaultNetworkCallback(@NonNull NetworkCallback networkCallback, public void registerSystemDefaultNetworkCallback(@NonNull NetworkCallback networkCallback, @NonNull Handler handler) throws UnsupportedApiLevelException { @NonNull Handler handler) { // Not supported for API 29. // defaultNetworkRequest is not really a "request", just a way of tracking the system throw new UnsupportedApiLevelException("Not supported in API 29."); // default network. It's guaranteed not to actually bring up any networks because it // should be the same request as the ConnectivityService default request, and thus // shares fate with it. In API <= R, registerSystemDefaultNetworkCallback is not // available, and registerDefaultNetworkCallback will not track the system default when // a VPN applies to the UID of this process. final NetworkRequest defaultNetworkRequest = makeEmptyCapabilitiesRequest() .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) .addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED) .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN) .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .build(); mCm.requestNetwork(defaultNetworkRequest, networkCallback, handler); } @NonNull protected NetworkRequest.Builder makeEmptyCapabilitiesRequest() { // Q does not have clearCapabilities(), so assume the default capabilities are as below return new NetworkRequest.Builder() .removeCapability(NET_CAPABILITY_NOT_RESTRICTED) .removeCapability(NET_CAPABILITY_TRUSTED) .removeCapability(NET_CAPABILITY_NOT_VPN); } } } }
apishim/30/com/android/networkstack/apishim/api30/ConnectivityManagerShimImpl.java +8 −27 Original line number Original line Diff line number Diff line Loading @@ -16,10 +16,10 @@ package com.android.networkstack.apishim.api30; package com.android.networkstack.apishim.api30; import static com.android.modules.utils.build.SdkLevel.isAtLeastR; import android.content.Context; import android.content.Context; import android.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; import android.net.ConnectivityManager.NetworkCallback; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.net.NetworkRequest; import android.os.Build; import android.os.Build; import android.os.Handler; import android.os.Handler; Loading @@ -28,25 +28,24 @@ import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi; import com.android.networkstack.apishim.common.ConnectivityManagerShim; import com.android.networkstack.apishim.common.ConnectivityManagerShim; import com.android.networkstack.apishim.common.ShimUtils; import com.android.networkstack.apishim.common.UnsupportedApiLevelException; import com.android.networkstack.apishim.common.UnsupportedApiLevelException; /** /** * Implementation of {@link ConnectivityManagerShim} for API 30. * Implementation of {@link ConnectivityManagerShim} for API 30. */ */ @RequiresApi(Build.VERSION_CODES.R) public class ConnectivityManagerShimImpl public class ConnectivityManagerShimImpl extends com.android.networkstack.apishim.api29.ConnectivityManagerShimImpl { extends com.android.networkstack.apishim.api29.ConnectivityManagerShimImpl { protected final ConnectivityManager mCm; protected ConnectivityManagerShimImpl(Context context) { protected ConnectivityManagerShimImpl(Context context) { super(context); super(context); mCm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); } } /** /** * Get a new instance of {@link ConnectivityManagerShim}. * Get a new instance of {@link ConnectivityManagerShim}. */ */ @RequiresApi(Build.VERSION_CODES.Q) public static ConnectivityManagerShim newInstance(Context context) { public static ConnectivityManagerShim newInstance(Context context) { if (!ShimUtils.isReleaseOrDevelopmentApiAbove(Build.VERSION_CODES.Q)) { if (!isAtLeastR()) { return com.android.networkstack.apishim.api29.ConnectivityManagerShimImpl return com.android.networkstack.apishim.api29.ConnectivityManagerShimImpl .newInstance(context); .newInstance(context); } } Loading @@ -65,27 +64,9 @@ public class ConnectivityManagerShimImpl throw new UnsupportedApiLevelException("Not supported in API 30."); throw new UnsupportedApiLevelException("Not supported in API 30."); } } /** @NonNull * See android.net.ConnectivityManager#registerSystemDefaultNetworkCallback * @throws UnsupportedApiLevelException if API is not available in this API level. */ @Override @Override @RequiresApi(Build.VERSION_CODES.R) protected NetworkRequest.Builder makeEmptyCapabilitiesRequest() { public void registerSystemDefaultNetworkCallback(@NonNull NetworkCallback networkCallback, return new NetworkRequest.Builder().clearCapabilities(); @NonNull Handler handler) { // defaultNetworkRequest is not really a "request", just a way of tracking the system // default network. It's guaranteed not to actually bring up any networks because it // should be the same request as the ConnectivityService default request, and thus // shares fate with it. In API <= R, registerSystemDefaultNetworkCallback is not // available, and registerDefaultNetworkCallback will not track the system default when // a VPN applies to the UID of this process. final NetworkRequest defaultNetworkRequest = new NetworkRequest.Builder() .clearCapabilities() .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) .addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED) .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN) .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .build(); mCm.requestNetwork(defaultNetworkRequest, networkCallback, handler); } } } }
apishim/common/com/android/networkstack/apishim/common/ConnectivityManagerShim.java +1 −2 Original line number Original line Diff line number Diff line Loading @@ -42,8 +42,7 @@ public interface ConnectivityManagerShim { /** See android.net.ConnectivityManager#registerSystemDefaultNetworkCallback */ /** See android.net.ConnectivityManager#registerSystemDefaultNetworkCallback */ void registerSystemDefaultNetworkCallback( void registerSystemDefaultNetworkCallback( @NonNull NetworkCallback networkCallback, @NonNull Handler handler) @NonNull NetworkCallback networkCallback, @NonNull Handler handler); throws UnsupportedApiLevelException; /** See android.net.ConnectivityManager#registerDefaultNetworkCallbackForUid */ /** See android.net.ConnectivityManager#registerDefaultNetworkCallbackForUid */ default void registerDefaultNetworkCallbackForUid( default void registerDefaultNetworkCallbackForUid( Loading
common/moduleutils/Android.bp +14 −4 Original line number Original line Diff line number Diff line Loading @@ -21,18 +21,29 @@ package { default_applicable_licenses: ["Android-Apache-2.0"], default_applicable_licenses: ["Android-Apache-2.0"], } } // TODO: remove this filegroup together with services.net filegroup { filegroup { name: "net-module-utils-srcs", name: "net-module-utils-srcs", srcs: [ srcs: [ "src/android/net/util/SharedLog.java", "src/android/net/shared/NetdUtils.java", "src/android/net/shared/NetdUtils.java", "src/android/net/shared/NetworkMonitorUtils.java", "src/android/net/shared/RouteUtils.java", "src/android/net/shared/RouteUtils.java", "src/android/net/util/InterfaceParams.java", "src/android/net/util/InterfaceParams.java", "src/android/net/util/SharedLog.java", ], ], visibility: [ visibility: [ "//frameworks/base/services/net", "//frameworks/base/services/net", "//frameworks/base/packages/Connectivity/service", ] } filegroup { name: "connectivity-module-utils-srcs", srcs: [ "src/android/net/util/SharedLog.java", "src/android/net/shared/NetdUtils.java", "src/android/net/shared/NetworkMonitorUtils.java", "src/android/net/shared/RouteUtils.java", ], visibility: [ "//packages/modules/Connectivity/service", "//packages/modules/Connectivity/service", ] ] } } Loading @@ -53,7 +64,6 @@ filegroup { "src/android/net/ip/InterfaceController.java", "src/android/net/ip/InterfaceController.java", "src/android/net/ip/IpNeighborMonitor.java", "src/android/net/ip/IpNeighborMonitor.java", "src/android/net/ip/NetlinkMonitor.java", "src/android/net/ip/NetlinkMonitor.java", "src/android/net/netlink/*.java", "src/android/net/shared/NetdUtils.java", "src/android/net/shared/NetdUtils.java", "src/android/net/shared/RouteUtils.java", "src/android/net/shared/RouteUtils.java", "src/android/net/util/InterfaceParams.java", "src/android/net/util/InterfaceParams.java", Loading