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

Commit 10274506 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Create VirtualCameraController iff all required flags are enabled." into main

parents 53f6ece1 a720ec85
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_RECENTS;
import static android.content.pm.PackageManager.ACTION_REQUEST_PERMISSIONS;
import static android.view.WindowManager.LayoutParams.FLAG_SECURE;
import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
import static android.companion.virtualdevice.flags.Flags.virtualCameraServiceDiscovery;

import android.annotation.EnforcePermission;
import android.annotation.NonNull;
@@ -111,6 +112,8 @@ import com.android.server.companion.virtual.audio.VirtualAudioController;
import com.android.server.companion.virtual.camera.VirtualCameraController;
import com.android.server.inputmethod.InputMethodManagerInternal;

import dalvik.annotation.optimization.FastNative;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.List;
@@ -265,7 +268,7 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub
                runningAppsChangedCallback,
                params,
                DisplayManagerGlobal.getInstance(),
                Flags.virtualCamera()
                isVirtualCameraEnabled()
                        ? new VirtualCameraController(params.getDevicePolicy(POLICY_TYPE_CAMERA))
                        : null);
    }
@@ -1535,4 +1538,13 @@ final class VirtualDeviceImpl extends IVirtualDevice.Stub
            return mToken;
        }
    }

    private static boolean isVirtualCameraEnabled() {
        return Flags.virtualCamera() && virtualCameraServiceDiscovery()
                && nativeVirtualCameraServiceBuildFlagEnabled();
    }

    // Returns true if virtual_camera service is enabled in this build.
    @FastNative
    private static native boolean nativeVirtualCameraServiceBuildFlagEnabled();
}
+2 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ cc_library_static {
        "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",
        "com_android_server_display_DisplayControl.cpp",
        "com_android_server_display_SmallAreaDetectionController.cpp",
@@ -214,6 +215,7 @@ cc_defaults {
    static_libs: [
        "android.hardware.broadcastradio@common-utils-1x-lib",
        "libaidlcommonsupport",
        "libvirtualdevicebuildflags",
    ],

    product_variables: {
+43 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include <android_companion_virtualdevice_build_flags.h>
#include <nativehelper/JNIHelp.h>

#include <array>

#include "jni.h"

namespace android {
namespace {

jboolean nativeVirtualCameraServiceBuildFlagEnabled(JNIEnv* env, jobject clazz) {
    return ::android::companion::virtualdevice::flags::virtual_camera_service_build_flag();
}

const std::array<JNINativeMethod, 1> kMethods = {
        {{"nativeVirtualCameraServiceBuildFlagEnabled", "()Z",
          (void*)nativeVirtualCameraServiceBuildFlagEnabled}},
};

} // namespace

int register_android_server_companion_virtual_VirtualDeviceImpl(JNIEnv* env) {
    return jniRegisterNativeMethods(env, "com/android/server/companion/virtual/VirtualDeviceImpl",
                                    kMethods.data(), kMethods.size());
}

} // namespace android
+2 −0
Original line number Diff line number Diff line
@@ -65,6 +65,7 @@ int register_android_server_GpuService(JNIEnv* env);
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);
@@ -128,6 +129,7 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
    register_android_server_stats_pull_StatsPullAtomService(env);
    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);