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

Commit 1cb6ec09 authored by Jared Duke's avatar Jared Duke
Browse files

Make UinputBridge JNI registration lazy

The associated TvRemoteService is optional. As such, make its JNI
registration lazy, supporting build-time removal.

Bug: 404563673
Test: m + boot test
Test: atest TvInputServiceManagerTest
Flag: build.RELEASE_USE_SYSTEM_FEATURE_BUILD_FLAGS
Change-Id: Ib233f0e53e3db43dc74ed26e61da74a69ded98fd
parent 88c89c16
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.server.tv;

import android.os.IBinder;

import com.android.server.utils.LazyJniRegistrar;

import dalvik.system.CloseGuard;

import java.io.IOException;
@@ -30,6 +32,11 @@ public final class UinputBridge {
    private long mPtr;
    private IBinder mToken;

    static {
        // Lazy registration allows build-time removal when TvRemoteService is disabled.
        LazyJniRegistrar.registerTvUinputBridge();
    }

    private static native long nativeOpen(String name, String uniqueId, int width, int height,
                                          int maxPointers);
    private static native void nativeClose(long ptr);
+3 −0
Original line number Diff line number Diff line
@@ -45,6 +45,9 @@ public final class LazyJniRegistrar {
    /** Registers native methods for GameManagerService. */
    public static native void registerGameManagerService();

    /** Registers native methods for UinputBridge. */
    public static native void registerTvUinputBridge();

    /** 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
@@ -58,7 +58,6 @@ cc_library_static {
        "com_android_server_storage_AppFuseBridge.cpp",
        "com_android_server_SystemClockTime.cpp",
        "com_android_server_SystemServer.cpp",
        "com_android_server_tv_TvUinputBridge.cpp",
        "com_android_server_tv_TvInputHal.cpp",
        "com_android_server_UsbAlsaDevice.cpp",
        "com_android_server_UsbAlsaJackDetector.cpp",
@@ -260,6 +259,7 @@ filegroup {
        "com_android_server_ConsumerIrService.cpp",
        "com_android_server_app_GameManagerService.cpp",
        "com_android_server_connectivity_Vpn.cpp",
        "com_android_server_tv_TvUinputBridge.cpp",
        "com_android_server_utils_LazyJniRegistrar.cpp",
    ],
}
+6 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ namespace android {
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_tv_TvUinputBridge(JNIEnv* env);

namespace {

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

void registerTvUinputBridge(JNIEnv* env, jclass) {
    register_android_server_tv_TvUinputBridge(env);
}

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

+0 −2
Original line number Diff line number Diff line
@@ -42,7 +42,6 @@ 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_devicepolicy_CryptoTestHelper(JNIEnv*);
int register_android_server_tv_TvUinputBridge(JNIEnv* env);
int register_android_server_tv_TvInputHal(JNIEnv* env);
int register_android_server_pdb_PersistentDataBlockService(JNIEnv* env);
int register_android_server_Watchdog(JNIEnv* env);
@@ -109,7 +108,6 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
    register_android_server_location_GnssLocationProvider(env);
    register_android_server_devicepolicy_CryptoTestHelper(env);
    register_android_server_BatteryStatsService(env);
    register_android_server_tv_TvUinputBridge(env);
    register_android_server_tv_TvInputHal(env);
    register_android_server_pdb_PersistentDataBlockService(env);
    register_android_server_HardwarePropertiesManagerService(env);