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

Commit f422b0d7 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Make Vpn JNI registration lazy" into main

parents e8c036a1 d724d967
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -152,6 +152,7 @@ import com.android.net.module.util.NetworkStackConstants;
import com.android.server.DeviceIdleInternal;
import com.android.server.LocalServices;
import com.android.server.net.BaseNetworkObserver;
import com.android.server.utils.LazyJniRegistrar;

import libcore.io.IoUtils;

@@ -468,6 +469,8 @@ public class Vpn {

    @VisibleForTesting
    public static class Dependencies {
        protected Dependencies() {}

        public boolean isCallerSystem() {
            return Binder.getCallingUid() == Process.SYSTEM_UID;
        }
@@ -593,6 +596,14 @@ public class Vpn {
        }
    }

    // A helper class to ensure JNI registration before use. This avoids native lib dependencies in
    // test-only environments that mock or partially use the base Dependencies class.
    private static final class DependenciesWithJniRegistration extends Dependencies {
        static {
            LazyJniRegistrar.registerVpn();
        }
    }

    @VisibleForTesting
    interface ValidationStatusCallback {
        void onValidationStatus(int status);
@@ -600,8 +611,8 @@ public class Vpn {

    public Vpn(Looper looper, Context context, INetworkManagementService netService, INetd netd,
            @UserIdInt int userId, VpnProfileStore vpnProfileStore) {
        this(looper, context, new Dependencies(), netService, netd, userId, vpnProfileStore,
                new SystemServices(context), new Ikev2SessionCreator());
        this(looper, context, new DependenciesWithJniRegistration(), netService, netd, userId,
                vpnProfileStore, new SystemServices(context), new Ikev2SessionCreator());
    }

    @VisibleForTesting
+3 −0
Original line number Diff line number Diff line
@@ -47,4 +47,7 @@ public final class LazyJniRegistrar {

    /** Registers native methods for VrManagerService. */
    public static native void registerVrManagerService();

    /** Registers native methods for Vpn (the JNI counterpart for VpnManagerService). */
    public static native void registerVpn();
}
+1 −1
Original line number Diff line number Diff line
@@ -42,7 +42,6 @@ cc_library_static {
        "com_android_server_devicepolicy_CryptoTestHelper.cpp",
        "com_android_server_display_DisplayControl.cpp",
        "com_android_server_display_SmallAreaDetectionController.cpp",
        "com_android_server_connectivity_Vpn.cpp",
        "com_android_server_gpu_GpuService.cpp",
        "com_android_server_HardwarePropertiesManagerService.cpp",
        "com_android_server_input_InputManagerService.cpp",
@@ -261,6 +260,7 @@ filegroup {
    srcs: [
        "com_android_server_ConsumerIrService.cpp",
        "com_android_server_app_GameManagerService.cpp",
        "com_android_server_connectivity_Vpn.cpp",
        "com_android_server_utils_LazyJniRegistrar.cpp",
        "com_android_server_vr_VrManagerService.cpp",
    ],
+6 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ namespace android {
// Forward declared per-class registration methods.
int register_android_server_ConsumerIrService(JNIEnv* env);
int register_android_server_app_GameManagerService(JNIEnv* env);
int register_android_server_connectivity_Vpn(JNIEnv* env);
int register_android_server_vr_VrManagerService(JNIEnv* env);

namespace {
@@ -38,6 +39,10 @@ void registerGameManagerService(JNIEnv* env, jclass) {
    register_android_server_app_GameManagerService(env);
}

void registerVpn(JNIEnv* env, jclass) {
    register_android_server_connectivity_Vpn(env);
}

void registerVrManagerService(JNIEnv* env, jclass) {
    register_android_server_vr_VrManagerService(env);
}
@@ -45,6 +50,7 @@ void registerVrManagerService(JNIEnv* env, jclass) {
static const JNINativeMethod sJniRegistrarMethods[] = {
        {"registerConsumerIrService", "()V", (void*)registerConsumerIrService},
        {"registerGameManagerService", "()V", (void*)registerGameManagerService},
        {"registerVpn", "()V", (void*)registerVpn},
        {"registerVrManagerService", "()V", (void*)registerVrManagerService},
};

+0 −2
Original line number Diff line number Diff line
@@ -40,7 +40,6 @@ int register_android_server_UsbHostManager(JNIEnv* env);
int register_android_server_vibrator_VibratorController(JavaVM* vm, JNIEnv* env);
int register_android_server_vibrator_VibratorManagerService(JavaVM* vm, JNIEnv* env);
int register_android_server_location_GnssLocationProvider(JNIEnv* env);
int register_android_server_connectivity_Vpn(JNIEnv* env);
int register_android_server_devicepolicy_CryptoTestHelper(JNIEnv*);
int register_android_server_tv_TvUinputBridge(JNIEnv* env);
int register_android_server_tv_TvInputHal(JNIEnv* env);
@@ -106,7 +105,6 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
    register_android_server_vibrator_VibratorManagerService(vm, env);
    register_android_server_SystemServer(env);
    register_android_server_location_GnssLocationProvider(env);
    register_android_server_connectivity_Vpn(env);
    register_android_server_devicepolicy_CryptoTestHelper(env);
    register_android_server_BatteryStatsService(env);
    register_android_server_tv_TvUinputBridge(env);
Loading