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

Commit 9a7928b7 authored by Jared Duke's avatar Jared Duke Committed by Cherrypicker Worker
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
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:756f75ebd5fd493ac6b804001e49ab97d8350e34)
Merged-In: Idee4cbd973e7c09d435273f927bd787fc2afd0d6
Change-Id: Idee4cbd973e7c09d435273f927bd787fc2afd0d6
parent 75efa8d8
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -100,6 +100,7 @@ import com.android.server.LocalServices;
import com.android.server.ServiceThread;
import com.android.server.ServiceThread;
import com.android.server.SystemService;
import com.android.server.SystemService;
import com.android.server.SystemService.TargetUser;
import com.android.server.SystemService.TargetUser;
import com.android.server.utils.LazyJniRegistrar;
import com.android.server.wm.ActivityTaskManagerInternal;
import com.android.server.wm.ActivityTaskManagerInternal;
import com.android.server.wm.CompatScaleProvider;
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 =
    private static final String GAME_MODE_INTERVENTION_LIST_FILE_NAME =
            "game_mode_intervention.list";
            "game_mode_intervention.list";


    static {
        LazyJniRegistrar.registerGameManagerService();
    }

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


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

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


    include_dirs: [
    include_dirs: [
@@ -247,13 +244,6 @@ filegroup {
    ],
    ],
}
}


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

filegroup {
filegroup {
    name: "lib_oomConnection_native",
    name: "lib_oomConnection_native",
    srcs: ["com_android_server_am_OomConnection.cpp"],
    srcs: ["com_android_server_am_OomConnection.cpp"],
@@ -265,3 +255,13 @@ filegroup {
        "com_android_server_utils_AnrTimer.cpp",
        "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 Original line Diff line number Diff line
@@ -22,6 +22,7 @@ namespace android {


// Forward declared per-class registration methods.
// Forward declared per-class registration methods.
int register_android_server_ConsumerIrService(JNIEnv* env);
int register_android_server_ConsumerIrService(JNIEnv* env);
int register_android_server_app_GameManagerService(JNIEnv* env);
int register_android_server_vr_VrManagerService(JNIEnv* env);
int register_android_server_vr_VrManagerService(JNIEnv* env);


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


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

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


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


+0 −2
Original line number Original line Diff line number Diff line
@@ -65,7 +65,6 @@ int register_android_server_stats_pull_StatsPullAtomService(JNIEnv* env);
int register_android_server_sensor_SensorService(JavaVM* vm, 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_InputController(JNIEnv* env);
int register_android_server_companion_virtual_VirtualDeviceImpl(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_wm_TaskFpsCallbackController(JNIEnv* env);
int register_com_android_server_display_DisplayControl(JNIEnv* env);
int register_com_android_server_display_DisplayControl(JNIEnv* env);
int register_com_android_server_SystemClockTime(JNIEnv* env);
int register_com_android_server_SystemClockTime(JNIEnv* env);
@@ -131,7 +130,6 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
    register_android_server_sensor_SensorService(vm, env);
    register_android_server_sensor_SensorService(vm, env);
    register_android_server_companion_virtual_InputController(env);
    register_android_server_companion_virtual_InputController(env);
    register_android_server_companion_virtual_VirtualDeviceImpl(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_wm_TaskFpsCallbackController(env);
    register_com_android_server_display_DisplayControl(env);
    register_com_android_server_display_DisplayControl(env);
    register_com_android_server_SystemClockTime(env);
    register_com_android_server_SystemClockTime(env);
Loading