Loading apishim/29/com/android/networkstack/apishim/api29/ConnectivityManagerShimImpl.java +33 −5 Original line number Diff line number Diff line Loading @@ -16,8 +16,14 @@ 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.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.os.Handler; Loading @@ -30,7 +36,10 @@ import com.android.networkstack.apishim.common.UnsupportedApiLevelException; * Implementation of {@link ConnectivityManagerShim} for API 29. */ 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}. Loading @@ -52,12 +61,31 @@ public class ConnectivityManagerShimImpl implements ConnectivityManagerShim { /** * See android.net.ConnectivityManager#registerSystemDefaultNetworkCallback * @throws UnsupportedApiLevelException if API is not available in this API level. */ @Override public void registerSystemDefaultNetworkCallback(@NonNull NetworkCallback networkCallback, @NonNull Handler handler) throws UnsupportedApiLevelException { // Not supported for API 29. throw new UnsupportedApiLevelException("Not supported in API 29."); @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 = 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 Diff line number Diff line Loading @@ -16,10 +16,10 @@ package com.android.networkstack.apishim.api30; import static com.android.modules.utils.build.SdkLevel.isAtLeastR; import android.content.Context; import android.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.os.Build; import android.os.Handler; Loading @@ -28,25 +28,24 @@ import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import com.android.networkstack.apishim.common.ConnectivityManagerShim; import com.android.networkstack.apishim.common.ShimUtils; import com.android.networkstack.apishim.common.UnsupportedApiLevelException; /** * Implementation of {@link ConnectivityManagerShim} for API 30. */ @RequiresApi(Build.VERSION_CODES.R) public class ConnectivityManagerShimImpl extends com.android.networkstack.apishim.api29.ConnectivityManagerShimImpl { protected final ConnectivityManager mCm; protected ConnectivityManagerShimImpl(Context context) { super(context); mCm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); } /** * Get a new instance of {@link ConnectivityManagerShim}. */ @RequiresApi(Build.VERSION_CODES.Q) public static ConnectivityManagerShim newInstance(Context context) { if (!ShimUtils.isReleaseOrDevelopmentApiAbove(Build.VERSION_CODES.Q)) { if (!isAtLeastR()) { return com.android.networkstack.apishim.api29.ConnectivityManagerShimImpl .newInstance(context); } Loading @@ -65,27 +64,9 @@ public class ConnectivityManagerShimImpl throw new UnsupportedApiLevelException("Not supported in API 30."); } /** * See android.net.ConnectivityManager#registerSystemDefaultNetworkCallback * @throws UnsupportedApiLevelException if API is not available in this API level. */ @NonNull @Override @RequiresApi(Build.VERSION_CODES.R) public void registerSystemDefaultNetworkCallback(@NonNull NetworkCallback networkCallback, @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); protected NetworkRequest.Builder makeEmptyCapabilitiesRequest() { return new NetworkRequest.Builder().clearCapabilities(); } } apishim/common/com/android/networkstack/apishim/common/ConnectivityManagerShim.java +1 −2 Original line number Diff line number Diff line Loading @@ -42,8 +42,7 @@ public interface ConnectivityManagerShim { /** See android.net.ConnectivityManager#registerSystemDefaultNetworkCallback */ void registerSystemDefaultNetworkCallback( @NonNull NetworkCallback networkCallback, @NonNull Handler handler) throws UnsupportedApiLevelException; @NonNull NetworkCallback networkCallback, @NonNull Handler handler); /** See android.net.ConnectivityManager#registerDefaultNetworkCallbackForUid */ default void registerDefaultNetworkCallbackForUid( Loading Loading
apishim/29/com/android/networkstack/apishim/api29/ConnectivityManagerShimImpl.java +33 −5 Original line number Diff line number Diff line Loading @@ -16,8 +16,14 @@ 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.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.os.Handler; Loading @@ -30,7 +36,10 @@ import com.android.networkstack.apishim.common.UnsupportedApiLevelException; * Implementation of {@link ConnectivityManagerShim} for API 29. */ 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}. Loading @@ -52,12 +61,31 @@ public class ConnectivityManagerShimImpl implements ConnectivityManagerShim { /** * See android.net.ConnectivityManager#registerSystemDefaultNetworkCallback * @throws UnsupportedApiLevelException if API is not available in this API level. */ @Override public void registerSystemDefaultNetworkCallback(@NonNull NetworkCallback networkCallback, @NonNull Handler handler) throws UnsupportedApiLevelException { // Not supported for API 29. throw new UnsupportedApiLevelException("Not supported in API 29."); @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 = 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 Diff line number Diff line Loading @@ -16,10 +16,10 @@ package com.android.networkstack.apishim.api30; import static com.android.modules.utils.build.SdkLevel.isAtLeastR; import android.content.Context; import android.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.os.Build; import android.os.Handler; Loading @@ -28,25 +28,24 @@ import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import com.android.networkstack.apishim.common.ConnectivityManagerShim; import com.android.networkstack.apishim.common.ShimUtils; import com.android.networkstack.apishim.common.UnsupportedApiLevelException; /** * Implementation of {@link ConnectivityManagerShim} for API 30. */ @RequiresApi(Build.VERSION_CODES.R) public class ConnectivityManagerShimImpl extends com.android.networkstack.apishim.api29.ConnectivityManagerShimImpl { protected final ConnectivityManager mCm; protected ConnectivityManagerShimImpl(Context context) { super(context); mCm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); } /** * Get a new instance of {@link ConnectivityManagerShim}. */ @RequiresApi(Build.VERSION_CODES.Q) public static ConnectivityManagerShim newInstance(Context context) { if (!ShimUtils.isReleaseOrDevelopmentApiAbove(Build.VERSION_CODES.Q)) { if (!isAtLeastR()) { return com.android.networkstack.apishim.api29.ConnectivityManagerShimImpl .newInstance(context); } Loading @@ -65,27 +64,9 @@ public class ConnectivityManagerShimImpl throw new UnsupportedApiLevelException("Not supported in API 30."); } /** * See android.net.ConnectivityManager#registerSystemDefaultNetworkCallback * @throws UnsupportedApiLevelException if API is not available in this API level. */ @NonNull @Override @RequiresApi(Build.VERSION_CODES.R) public void registerSystemDefaultNetworkCallback(@NonNull NetworkCallback networkCallback, @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); protected NetworkRequest.Builder makeEmptyCapabilitiesRequest() { return new NetworkRequest.Builder().clearCapabilities(); } }
apishim/common/com/android/networkstack/apishim/common/ConnectivityManagerShim.java +1 −2 Original line number Diff line number Diff line Loading @@ -42,8 +42,7 @@ public interface ConnectivityManagerShim { /** See android.net.ConnectivityManager#registerSystemDefaultNetworkCallback */ void registerSystemDefaultNetworkCallback( @NonNull NetworkCallback networkCallback, @NonNull Handler handler) throws UnsupportedApiLevelException; @NonNull NetworkCallback networkCallback, @NonNull Handler handler); /** See android.net.ConnectivityManager#registerDefaultNetworkCallbackForUid */ default void registerDefaultNetworkCallbackForUid( Loading