Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c4d316f6 authored by Yan Yan's avatar Yan Yan
Browse files

Expose VCN APIs for framework code

As the first step of mainlining VCN, VCN will be moved from
framework to its own java_sdk_library and hidden APIs will no longer
be accessible to framework code. This CL exposes these classes,
methods and constants as @SystemApi so that framework code can
continue accessing them.

Note, these APIs are temporarily exposed from framework.jar. Followup
CLs will move them to the framework-connectivity-b.jar

Bug: 376339506
Test: atest FrameworksVcnTests && atest CtsVcnTestCases
Flag: android.net.vcn.mainline_vcn_module_api
API-Coverage-Bug: 376553318
Change-Id: Ibf8a2d32ec3eae73cfb279dde2a0c74e4b4c5b33
Merged-In: Ibf8a2d32ec3eae73cfb279dde2a0c74e4b4c5b33
parent 6cc7c9df
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -29518,6 +29518,7 @@ package android.net.vcn {
    method @NonNull public java.util.List<android.net.vcn.VcnUnderlyingNetworkTemplate> getVcnUnderlyingNetworkPriorities();
    method public boolean hasGatewayOption(int);
    method @FlaggedApi("android.net.vcn.safe_mode_config") public boolean isSafeModeEnabled();
    field @FlaggedApi("android.net.vcn.mainline_vcn_module_api") public static final int MIN_UDP_PORT_4500_NAT_TIMEOUT_UNSET = -1; // 0xffffffff
    field public static final int VCN_GATEWAY_OPTION_ENABLE_DATA_STALL_RECOVERY_WITH_MOBILITY = 0; // 0x0
  }
+23 −0
Original line number Diff line number Diff line
@@ -260,6 +260,10 @@ package android.media.session {

package android.net {

  @FlaggedApi("android.net.vcn.mainline_vcn_module_api") public final class ConnectivityFrameworkInitializerBaklava {
    method @FlaggedApi("android.net.vcn.mainline_vcn_module_api") public static void registerServiceWrappers();
  }

  public class LocalSocket implements java.io.Closeable {
    ctor public LocalSocket(@NonNull java.io.FileDescriptor);
  }
@@ -319,6 +323,25 @@ package android.net.netstats {

}

package android.net.vcn {

  @FlaggedApi("android.net.vcn.mainline_vcn_module_api") public final class VcnTransportInfo implements android.os.Parcelable android.net.TransportInfo {
    method @FlaggedApi("android.net.vcn.mainline_vcn_module_api") public int describeContents();
    method @FlaggedApi("android.net.vcn.mainline_vcn_module_api") public long getApplicableRedactions();
    method @FlaggedApi("android.net.vcn.mainline_vcn_module_api") public int getMinUdpPort4500NatTimeoutSeconds();
    method @FlaggedApi("android.net.vcn.mainline_vcn_module_api") @NonNull public android.net.TransportInfo makeCopy(long);
    method @FlaggedApi("android.net.vcn.mainline_vcn_module_api") public void writeToParcel(@NonNull android.os.Parcel, int);
    field @FlaggedApi("android.net.vcn.mainline_vcn_module_api") @NonNull public static final android.os.Parcelable.Creator<android.net.vcn.VcnTransportInfo> CREATOR;
  }

  @FlaggedApi("android.net.vcn.mainline_vcn_module_api") public static final class VcnTransportInfo.Builder {
    ctor @FlaggedApi("android.net.vcn.mainline_vcn_module_api") public VcnTransportInfo.Builder();
    method @FlaggedApi("android.net.vcn.mainline_vcn_module_api") @NonNull public android.net.vcn.VcnTransportInfo build();
    method @FlaggedApi("android.net.vcn.mainline_vcn_module_api") @NonNull public android.net.vcn.VcnTransportInfo.Builder setMinUdpPort4500NatTimeoutSeconds(@IntRange(from=0x78) int);
  }

}

package android.nfc {

  public class NfcServiceManager {
+2 −2
Original line number Diff line number Diff line
@@ -150,6 +150,7 @@ import android.media.tv.tunerresourcemanager.ITunerResourceManager;
import android.media.tv.tunerresourcemanager.TunerResourceManager;
import android.nearby.NearbyFrameworkInitializer;
import android.net.ConnectivityFrameworkInitializer;
import android.net.ConnectivityFrameworkInitializerBaklava;
import android.net.ConnectivityFrameworkInitializerTiramisu;
import android.net.INetworkPolicyManager;
import android.net.IPacProxyManager;
@@ -160,7 +161,6 @@ import android.net.NetworkWatchlistManager;
import android.net.PacProxyManager;
import android.net.TetheringManager;
import android.net.VpnManager;
import android.net.vcn.VcnFrameworkInitializer;
import android.net.wifi.WifiFrameworkInitializer;
import android.net.wifi.nl80211.WifiNl80211Manager;
import android.net.wifi.sharedconnectivity.app.SharedConnectivityManager;
@@ -1691,7 +1691,7 @@ public final class SystemServiceRegistry {
            OnDevicePersonalizationFrameworkInitializer.registerServiceWrappers();
            DeviceLockFrameworkInitializer.registerServiceWrappers();
            VirtualizationFrameworkInitializer.registerServiceWrappers();
            VcnFrameworkInitializer.registerServiceWrappers();
            ConnectivityFrameworkInitializerBaklava.registerServiceWrappers();

            if (com.android.server.telecom.flags.Flags.telecomMainlineBlockedNumbersManager()) {
                ProviderFrameworkInitializer.registerServiceWrappers();
+14 −4
Original line number Diff line number Diff line
@@ -14,15 +14,21 @@
 * limitations under the License.
 */

package android.net.vcn;
package android.net;

import static android.net.vcn.Flags.FLAG_MAINLINE_VCN_MODULE_API;

import android.annotation.FlaggedApi;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.app.SystemServiceRegistry;
import android.compat.Compatibility;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledSince;
import android.content.Context;
import android.content.pm.PackageManager;
import android.net.vcn.IVcnManagementService;
import android.net.vcn.VcnManager;
import android.os.Build;
import android.os.SystemProperties;

@@ -31,8 +37,9 @@ import android.os.SystemProperties;
 *
 * @hide
 */
// TODO: Expose it as @SystemApi(client = MODULE_LIBRARIES)
public final class VcnFrameworkInitializer {
@FlaggedApi(FLAG_MAINLINE_VCN_MODULE_API)
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
public final class ConnectivityFrameworkInitializerBaklava {
    /**
     * Starting with {@link VANILLA_ICE_CREAM}, Telephony feature flags (e.g. {@link
     * PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION}) are being checked before returning managers
@@ -55,7 +62,7 @@ public final class VcnFrameworkInitializer {
     */
    private static final int VENDOR_API_FOR_ANDROID_V = 202404;

    private VcnFrameworkInitializer() {}
    private ConnectivityFrameworkInitializerBaklava() {}

    // Suppressing AndroidFrameworkCompatChange because we're querying vendor
    // partition SDK level, not application's target SDK version (which BTW we
@@ -86,7 +93,10 @@ public final class VcnFrameworkInitializer {
     *
     * @throws IllegalStateException if this is called anywhere besides {@link
     *     SystemServiceRegistry}.
     * @hide
     */
    @FlaggedApi(FLAG_MAINLINE_VCN_MODULE_API)
    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
    public static void registerServiceWrappers() {
        SystemServiceRegistry.registerContextAwareService(
                VcnManager.VCN_MANAGEMENT_SERVICE_STRING,
+15 −4
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
package android.net.vcn;

import static android.net.ipsec.ike.IkeSessionParams.IKE_OPTION_MOBIKE;
import static android.net.vcn.Flags.FLAG_MAINLINE_VCN_MODULE_API;
import static android.net.vcn.Flags.FLAG_SAFE_MODE_CONFIG;
import static android.net.vcn.VcnUnderlyingNetworkTemplate.MATCH_REQUIRED;

@@ -82,7 +83,15 @@ import java.util.concurrent.TimeUnit;
 * </ul>
 */
public final class VcnGatewayConnectionConfig {
    /** @hide */
    /**
     * Minimum NAT timeout not set.
     *
     * <p>When the timeout is not set, the device will automatically choose a keepalive interval and
     * may reduce the keepalive frequency for power-optimization.
     */
    @FlaggedApi(FLAG_MAINLINE_VCN_MODULE_API)
    // This constant does not represent a minimum value. It indicates the value is not configured.
    @SuppressLint("MinMaxConstant")
    public static final int MIN_UDP_PORT_4500_NAT_TIMEOUT_UNSET = -1;

    /** @hide */
@@ -773,7 +782,7 @@ public final class VcnGatewayConnectionConfig {
         *
         * @param minUdpPort4500NatTimeoutSeconds the maximum keepalive timeout supported by the VCN
         *     Gateway Connection, generally the minimum duration a NAT mapping is cached on the VCN
         *     Gateway.
         *     Gateway; or {@link MIN_UDP_PORT_4500_NAT_TIMEOUT_UNSET} to clear this value.
         * @return this {@link Builder} instance, for chaining
         */
        @NonNull
@@ -781,8 +790,10 @@ public final class VcnGatewayConnectionConfig {
                @IntRange(from = MIN_UDP_PORT_4500_NAT_TIMEOUT_SECONDS)
                        int minUdpPort4500NatTimeoutSeconds) {
            Preconditions.checkArgument(
                    minUdpPort4500NatTimeoutSeconds >= MIN_UDP_PORT_4500_NAT_TIMEOUT_SECONDS,
                    "Timeout must be at least 120s");
                    minUdpPort4500NatTimeoutSeconds == MIN_UDP_PORT_4500_NAT_TIMEOUT_UNSET
                            || minUdpPort4500NatTimeoutSeconds
                                    >= MIN_UDP_PORT_4500_NAT_TIMEOUT_SECONDS,
                    "Timeout must be at least 120s or MIN_UDP_PORT_4500_NAT_TIMEOUT_UNSET");

            mMinUdpPort4500NatTimeoutSeconds = minUdpPort4500NatTimeoutSeconds;
            return this;
Loading