Make camera preflight permission check device-aware
Test: atest CtsVirtualDevicesCameraTestCases
Bug: 291736219
Change-Id: I41d878f5bc6cb8f25ce8cf2160d0d0bff1445bf6
diff --git a/services/camera/libcameraservice/utils/AttributionAndPermissionUtils.h b/services/camera/libcameraservice/utils/AttributionAndPermissionUtils.h
index db6457f..4f238ab 100644
--- a/services/camera/libcameraservice/utils/AttributionAndPermissionUtils.h
+++ b/services/camera/libcameraservice/utils/AttributionAndPermissionUtils.h
@@ -130,8 +130,16 @@
}
static AttributionSourceState buildAttributionSource(int callingPid, int callingUid,
- const std::string& packageName) {
+ int32_t deviceId) {
AttributionSourceState attributionSource = buildAttributionSource(callingPid, callingUid);
+ attributionSource.deviceId = deviceId;
+ return attributionSource;
+ }
+
+ static AttributionSourceState buildAttributionSource(int callingPid, int callingUid,
+ const std::string& packageName, int32_t deviceId) {
+ AttributionSourceState attributionSource = buildAttributionSource(callingPid, callingUid,
+ deviceId);
attributionSource.packageName = packageName;
return attributionSource;
}
@@ -158,24 +166,27 @@
return (getCallingUid() < AID_APP_START);
}
- bool hasPermissionsForCamera(int callingPid, int callingUid) const {
- return hasPermissionsForCamera(std::string(), callingPid, callingUid);
+ bool hasPermissionsForCamera(int callingPid, int callingUid, int32_t deviceId) const {
+ return hasPermissionsForCamera(std::string(), callingPid, callingUid, deviceId);
}
bool hasPermissionsForCamera(int callingPid, int callingUid,
- const std::string& packageName) const {
- return hasPermissionsForCamera(std::string(), callingPid, callingUid, packageName);
+ const std::string& packageName, int32_t deviceId) const {
+ return hasPermissionsForCamera(std::string(), callingPid, callingUid, packageName,
+ deviceId);
}
bool hasPermissionsForCamera(const std::string& cameraId, int callingPid,
- int callingUid) const {
- auto attributionSource = buildAttributionSource(callingPid, callingUid);
+ int callingUid, int32_t deviceId) const {
+ auto attributionSource = buildAttributionSource(callingPid, callingUid,
+ deviceId);
return mAttributionAndPermissionUtils->hasPermissionsForCamera(cameraId, attributionSource);
}
bool hasPermissionsForCamera(const std::string& cameraId, int callingPid, int callingUid,
- const std::string& packageName) const {
- auto attributionSource = buildAttributionSource(callingPid, callingUid, packageName);
+ const std::string& packageName, int32_t deviceId) const {
+ auto attributionSource = buildAttributionSource(callingPid, callingUid, packageName,
+ deviceId);
return mAttributionAndPermissionUtils->hasPermissionsForCamera(cameraId, attributionSource);
}