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

Commit adbf06a0 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Make Vpn JNI registration lazy" into main am: f422b0d7

parents 68a977e8 f422b0d7
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",
@@ -260,6 +259,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
@@ -41,7 +41,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);
@@ -108,7 +107,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