Loading Android.bp +30 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,24 @@ license { ], } aidl_interface_defaults { name: "audio-aidl-defaults", unstable: true, host_supported: true, backend: { cpp: { enabled: true, }, java: { enabled: true, }, rust: { enabled: true, }, }, } aidl_interface { name: "av-types-aidl", unstable: true, Loading Loading @@ -71,6 +89,18 @@ aidl_interface { }, } aidl_interface { name: "audio-permission-aidl", // TODO remove vendor_available: true, double_loadable: true, defaults: ["audio-aidl-defaults"], local_include_dir: "aidl", srcs: [ "aidl/com/android/media/permission/*", ], } cc_library_headers { name: "av-headers", export_include_dirs: ["include"], Loading aidl/com/android/media/permission/INativePermissionController.aidl 0 → 100644 +46 −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. */ package com.android.media.permission; import com.android.media.permission.PermissionEnum; import com.android.media.permission.UidPackageState; /** * This interface is used by system_server to communicate permission information * downwards towards native services. * {@hide} */ interface INativePermissionController { /** * Initialize app-ids and their corresponding packages, to be used for package validation. */ void populatePackagesForUids(in List<UidPackageState> initialPackageStates); /** * Replace or populate the list of packages associated with a given uid. * If the list is empty, the package no longer exists. */ void updatePackagesForUid(in UidPackageState newPackageState); /** * Populate or replace the list of uids which holds a particular permission. * Runtime permissions will need additional checks, and should not use the cache as-is. * Not virtual device aware. * Is is possible for updates to the permission state to be delayed during high traffic. * @param perm - Enum representing the permission for which holders are being supplied * @param uids - Uids (not app-ids) which hold the permission. Should be sorted */ void populatePermissionState(in PermissionEnum perm, in int[] uids); } aidl/com/android/media/permission/PermissionEnum.aidl 0 → 100644 +31 −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. */ package com.android.media.permission; /** * Enumerates permissions which are tracked/pushed by NativePermissionController * {@hide} */ enum PermissionEnum { MODIFY_AUDIO_ROUTING = 0, MODIFY_PHONE_STATE = 1, CALL_AUDIO_INTERCEPTION = 2, // This is a runtime + WIU permission, which means data delivery should be protected by AppOps // We query the controller only for early fails/hard errors RECORD_AUDIO = 3, ENUM_SIZE = 4, // Not for actual usage } services/camera/virtualcamera/flags/java/enabled/android/companion/virtualdevice/flags/VirtualCameraServiceBuildFlag.java→aidl/com/android/media/permission/UidPackageState.aidl +10 −8 Original line number Diff line number Diff line /* * Copyright 2024 The Android Open Source Project * 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. Loading @@ -14,12 +14,14 @@ * limitations under the License. */ package android.companion.virtualdevice.flags; package com.android.media.permission; /** This file is included only if RELEASE_PACKAGE_VIRTUAL_CAMERA build flag is set.*/ public class VirtualCameraServiceBuildFlag { public static boolean isVirtualCameraServiceBuildFlagEnabled() { return true; } /** * Entity representing the package names associated with a particular uid/app-id * {@hide} */ @JavaDerive(equals = true, toString = true) parcelable UidPackageState { int uid; @utf8InCpp List<String> packageNames; } camera/Android.bp +14 −14 Original line number Diff line number Diff line Loading @@ -86,40 +86,40 @@ cc_library { // Source for camera interface parcelables, and manually-written interfaces "Camera.cpp", "CameraBase.cpp", "CameraMetadata.cpp", "CameraParameters.cpp", "CaptureResult.cpp", "CameraParameters2.cpp", "CameraSessionStats.cpp", "CameraUtils.cpp", "CaptureResult.cpp", "ICamera.cpp", "ICameraClient.cpp", "ICameraRecordingProxy.cpp", "VendorTagDescriptor.cpp", "camera2/CaptureRequest.cpp", "camera2/ConcurrentCamera.cpp", "camera2/OutputConfiguration.cpp", "camera2/SessionConfiguration.cpp", "camera2/SubmitInfo.cpp", "CameraBase.cpp", "CameraUtils.cpp", "VendorTagDescriptor.cpp", ], shared_libs: [ "camera_platform_flags_c_lib", "lib-platform-compat-native-api", "libbase", "libcutils", "libutils", "liblog", "libbinder", "libgui", "libcamera_metadata", "libcutils", "libgui", "liblog", "libnativewindow", "lib-platform-compat-native-api", "libutils", ], include_dirs: [ "system/media/private/camera/include", "frameworks/native/include/media/openmax", "system/media/private/camera/include", ], export_include_dirs: [ "include", Loading @@ -127,13 +127,13 @@ cc_library { ], export_shared_lib_headers: [ "libcamera_metadata", "libnativewindow", "libgui", "libnativewindow", ], cflags: [ "-Werror", "-Wall", "-Werror", "-Wextra", ], Loading @@ -153,8 +153,8 @@ cc_library_host_static { ], include_dirs: [ "system/media/private/camera/include", "frameworks/native/include/media/openmax", "system/media/private/camera/include", ], export_include_dirs: [ Loading @@ -168,8 +168,8 @@ filegroup { name: "libcamera_client_aidl", srcs: [ "aidl/android/hardware/CameraExtensionSessionStats.aidl", "aidl/android/hardware/CameraFeatureCombinationStats.aidl", "aidl/android/hardware/ICameraService.aidl", "aidl/android/hardware/CameraIdRemapping.aidl", "aidl/android/hardware/ICameraServiceListener.aidl", "aidl/android/hardware/ICameraServiceProxy.aidl", "aidl/android/hardware/camera2/ICameraDeviceCallbacks.aidl", Loading Loading
Android.bp +30 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,24 @@ license { ], } aidl_interface_defaults { name: "audio-aidl-defaults", unstable: true, host_supported: true, backend: { cpp: { enabled: true, }, java: { enabled: true, }, rust: { enabled: true, }, }, } aidl_interface { name: "av-types-aidl", unstable: true, Loading Loading @@ -71,6 +89,18 @@ aidl_interface { }, } aidl_interface { name: "audio-permission-aidl", // TODO remove vendor_available: true, double_loadable: true, defaults: ["audio-aidl-defaults"], local_include_dir: "aidl", srcs: [ "aidl/com/android/media/permission/*", ], } cc_library_headers { name: "av-headers", export_include_dirs: ["include"], Loading
aidl/com/android/media/permission/INativePermissionController.aidl 0 → 100644 +46 −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. */ package com.android.media.permission; import com.android.media.permission.PermissionEnum; import com.android.media.permission.UidPackageState; /** * This interface is used by system_server to communicate permission information * downwards towards native services. * {@hide} */ interface INativePermissionController { /** * Initialize app-ids and their corresponding packages, to be used for package validation. */ void populatePackagesForUids(in List<UidPackageState> initialPackageStates); /** * Replace or populate the list of packages associated with a given uid. * If the list is empty, the package no longer exists. */ void updatePackagesForUid(in UidPackageState newPackageState); /** * Populate or replace the list of uids which holds a particular permission. * Runtime permissions will need additional checks, and should not use the cache as-is. * Not virtual device aware. * Is is possible for updates to the permission state to be delayed during high traffic. * @param perm - Enum representing the permission for which holders are being supplied * @param uids - Uids (not app-ids) which hold the permission. Should be sorted */ void populatePermissionState(in PermissionEnum perm, in int[] uids); }
aidl/com/android/media/permission/PermissionEnum.aidl 0 → 100644 +31 −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. */ package com.android.media.permission; /** * Enumerates permissions which are tracked/pushed by NativePermissionController * {@hide} */ enum PermissionEnum { MODIFY_AUDIO_ROUTING = 0, MODIFY_PHONE_STATE = 1, CALL_AUDIO_INTERCEPTION = 2, // This is a runtime + WIU permission, which means data delivery should be protected by AppOps // We query the controller only for early fails/hard errors RECORD_AUDIO = 3, ENUM_SIZE = 4, // Not for actual usage }
services/camera/virtualcamera/flags/java/enabled/android/companion/virtualdevice/flags/VirtualCameraServiceBuildFlag.java→aidl/com/android/media/permission/UidPackageState.aidl +10 −8 Original line number Diff line number Diff line /* * Copyright 2024 The Android Open Source Project * 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. Loading @@ -14,12 +14,14 @@ * limitations under the License. */ package android.companion.virtualdevice.flags; package com.android.media.permission; /** This file is included only if RELEASE_PACKAGE_VIRTUAL_CAMERA build flag is set.*/ public class VirtualCameraServiceBuildFlag { public static boolean isVirtualCameraServiceBuildFlagEnabled() { return true; } /** * Entity representing the package names associated with a particular uid/app-id * {@hide} */ @JavaDerive(equals = true, toString = true) parcelable UidPackageState { int uid; @utf8InCpp List<String> packageNames; }
camera/Android.bp +14 −14 Original line number Diff line number Diff line Loading @@ -86,40 +86,40 @@ cc_library { // Source for camera interface parcelables, and manually-written interfaces "Camera.cpp", "CameraBase.cpp", "CameraMetadata.cpp", "CameraParameters.cpp", "CaptureResult.cpp", "CameraParameters2.cpp", "CameraSessionStats.cpp", "CameraUtils.cpp", "CaptureResult.cpp", "ICamera.cpp", "ICameraClient.cpp", "ICameraRecordingProxy.cpp", "VendorTagDescriptor.cpp", "camera2/CaptureRequest.cpp", "camera2/ConcurrentCamera.cpp", "camera2/OutputConfiguration.cpp", "camera2/SessionConfiguration.cpp", "camera2/SubmitInfo.cpp", "CameraBase.cpp", "CameraUtils.cpp", "VendorTagDescriptor.cpp", ], shared_libs: [ "camera_platform_flags_c_lib", "lib-platform-compat-native-api", "libbase", "libcutils", "libutils", "liblog", "libbinder", "libgui", "libcamera_metadata", "libcutils", "libgui", "liblog", "libnativewindow", "lib-platform-compat-native-api", "libutils", ], include_dirs: [ "system/media/private/camera/include", "frameworks/native/include/media/openmax", "system/media/private/camera/include", ], export_include_dirs: [ "include", Loading @@ -127,13 +127,13 @@ cc_library { ], export_shared_lib_headers: [ "libcamera_metadata", "libnativewindow", "libgui", "libnativewindow", ], cflags: [ "-Werror", "-Wall", "-Werror", "-Wextra", ], Loading @@ -153,8 +153,8 @@ cc_library_host_static { ], include_dirs: [ "system/media/private/camera/include", "frameworks/native/include/media/openmax", "system/media/private/camera/include", ], export_include_dirs: [ Loading @@ -168,8 +168,8 @@ filegroup { name: "libcamera_client_aidl", srcs: [ "aidl/android/hardware/CameraExtensionSessionStats.aidl", "aidl/android/hardware/CameraFeatureCombinationStats.aidl", "aidl/android/hardware/ICameraService.aidl", "aidl/android/hardware/CameraIdRemapping.aidl", "aidl/android/hardware/ICameraServiceListener.aidl", "aidl/android/hardware/ICameraServiceProxy.aidl", "aidl/android/hardware/camera2/ICameraDeviceCallbacks.aidl", Loading