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

Commit 80601f58 authored by Jared Duke's avatar Jared Duke
Browse files

Make GameManagerService JNI registration lazy

This service is optional. As such, make its JNI registration lazy,
supporting build-time removal. Also refactor service test JNI libs
to support related unit tests.

Bug: 375264322
Flag: EXEMPT refactor
Test: m + boot test
Test: atest CtsGameManagerTestCases GameManagerServiceTests
Change-Id: I973dfa982f2c53d076884e8931ad8e1b6a53eb20
Merged-In: Idee4cbd973e7c09d435273f927bd787fc2afd0d6
parent a591af02
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -100,6 +100,7 @@ import com.android.server.LocalServices;
import com.android.server.ServiceThread;
import com.android.server.SystemService;
import com.android.server.SystemService.TargetUser;
import com.android.server.utils.LazyJniRegistrar;
import com.android.server.wm.ActivityTaskManagerInternal;
import com.android.server.wm.CompatScaleProvider;

@@ -158,6 +159,10 @@ public final class GameManagerService extends IGameManagerService.Stub {
    private static final String GAME_MODE_INTERVENTION_LIST_FILE_NAME =
            "game_mode_intervention.list";

    static {
        LazyJniRegistrar.registerGameManagerService();
    }

    private final Context mContext;
    private final Object mLock = new Object();
    private final Object mDeviceConfigLock = new Object();
+3 −0
Original line number Diff line number Diff line
@@ -42,6 +42,9 @@ public final class LazyJniRegistrar {
    /** Registers native methods for ConsumerIrService. */
    public static native void registerConsumerIrService();

    /** Registers native methods for GameManagerService. */
    public static native void registerGameManagerService();

    /** Registers native methods for VrManagerService. */
    public static native void registerVrManagerService();
}
+11 −11
Original line number Diff line number Diff line
@@ -38,7 +38,6 @@ cc_library_static {
        "com_android_server_adb_AdbDebuggingManager.cpp",
        "com_android_server_am_BatteryStatsService.cpp",
        "com_android_server_biometrics_SurfaceToNativeHandleConverter.cpp",
        "com_android_server_ConsumerIrService.cpp",
        "com_android_server_companion_virtual_InputController.cpp",
        "com_android_server_companion_virtual_VirtualDeviceImpl.cpp",
        "com_android_server_devicepolicy_CryptoTestHelper.cpp",
@@ -63,7 +62,6 @@ cc_library_static {
        "com_android_server_SystemServer.cpp",
        "com_android_server_tv_TvUinputBridge.cpp",
        "com_android_server_tv_TvInputHal.cpp",
        "com_android_server_vr_VrManagerService.cpp",
        "com_android_server_UsbAlsaJackDetector.cpp",
        "com_android_server_UsbAlsaMidiDevice.cpp",
        "com_android_server_UsbDeviceManager.cpp",
@@ -75,13 +73,12 @@ cc_library_static {
        "com_android_server_am_LowMemDetector.cpp",
        "com_android_server_pm_PackageManagerShellCommandDataLoader.cpp",
        "com_android_server_sensor_SensorService.cpp",
        "com_android_server_utils_LazyJniRegistrar.cpp",
        "com_android_server_wm_TaskFpsCallbackController.cpp",
        "onload.cpp",
        ":lib_cachedAppOptimizer_native",
        ":lib_gameManagerService_native",
        ":lib_oomConnection_native",
        ":lib_anrTimer_native",
        ":lib_lazilyRegisteredServices_native",
    ],

    include_dirs: [
@@ -239,13 +236,6 @@ filegroup {
    ],
}

filegroup {
    name: "lib_gameManagerService_native",
    srcs: [
        "com_android_server_app_GameManagerService.cpp",
    ],
}

filegroup {
    name: "lib_oomConnection_native",
    srcs: ["com_android_server_am_OomConnection.cpp"],
@@ -257,3 +247,13 @@ filegroup {
        "com_android_server_utils_AnrTimer.cpp",
    ],
}

filegroup {
    name: "lib_lazilyRegisteredServices_native",
    srcs: [
        "com_android_server_ConsumerIrService.cpp",
        "com_android_server_app_GameManagerService.cpp",
        "com_android_server_utils_LazyJniRegistrar.cpp",
        "com_android_server_vr_VrManagerService.cpp",
    ],
}
+6 −0
Original line number Diff line number Diff line
@@ -22,6 +22,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_vr_VrManagerService(JNIEnv* env);

namespace {
@@ -33,12 +34,17 @@ void registerConsumerIrService(JNIEnv* env, jclass) {
    register_android_server_ConsumerIrService(env);
}

void registerGameManagerService(JNIEnv* env, jclass) {
    register_android_server_app_GameManagerService(env);
}

void registerVrManagerService(JNIEnv* env, jclass) {
    register_android_server_vr_VrManagerService(env);
}

static const JNINativeMethod sJniRegistrarMethods[] = {
        {"registerConsumerIrService", "()V", (void*)registerConsumerIrService},
        {"registerGameManagerService", "()V", (void*)registerGameManagerService},
        {"registerVrManagerService", "()V", (void*)registerVrManagerService},
};

+0 −2
Original line number Diff line number Diff line
@@ -64,7 +64,6 @@ int register_android_server_stats_pull_StatsPullAtomService(JNIEnv* env);
int register_android_server_sensor_SensorService(JavaVM* vm, JNIEnv* env);
int register_android_server_companion_virtual_InputController(JNIEnv* env);
int register_android_server_companion_virtual_VirtualDeviceImpl(JNIEnv* env);
int register_android_server_app_GameManagerService(JNIEnv* env);
int register_com_android_server_wm_TaskFpsCallbackController(JNIEnv* env);
int register_com_android_server_display_DisplayControl(JNIEnv* env);
int register_com_android_server_SystemClockTime(JNIEnv* env);
@@ -129,7 +128,6 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
    register_android_server_sensor_SensorService(vm, env);
    register_android_server_companion_virtual_InputController(env);
    register_android_server_companion_virtual_VirtualDeviceImpl(env);
    register_android_server_app_GameManagerService(env);
    register_com_android_server_wm_TaskFpsCallbackController(env);
    register_com_android_server_display_DisplayControl(env);
    register_com_android_server_SystemClockTime(env);
Loading