summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjhenrique09 <jhenrique09.mcz@hotmail.com>2021-02-08 00:06:36 -0300
committeralk3pInjection <webmaster@raspii.tech>2021-09-24 18:03:53 +0800
commita0502d2ca5cd0f6261715faee8321f0331f19741 (patch)
tree7d6101e296be9b24c873601a91037df96749693d
parentd6357492605501092ebf0c13082088fa4b5f1ac8 (diff)
libcameraservice: Remove restrictions for faceunlock service
Change-Id: I6248937629cd8190f46503eef31a1db7c5d54510
-rw-r--r--services/camera/libcameraservice/CameraService.cpp8
-rw-r--r--services/camera/libcameraservice/CameraService.h3
2 files changed, 9 insertions, 2 deletions
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index fcccd262fe..0b1b827cf5 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -2891,6 +2891,10 @@ String16 CameraService::BasicClient::getPackageName() const {
return mClientPackageName;
}
+bool CameraService::BasicClient::isFaceUnlockPackage() const {
+ std::string cpn = String8(mClientPackageName).string();
+ return cpn.compare("org.pixelexperience.faceunlock") == 0;
+}
int CameraService::BasicClient::getClientPid() const {
return mClientPid;
@@ -2951,7 +2955,7 @@ status_t CameraService::BasicClient::startCameraOps() {
mClientPackageName, /*startIfModeDefault*/ false, mClientFeatureId,
String16("start camera ") + String16(mCameraIdStr));
- if (res == AppOpsManager::MODE_ERRORED) {
+ if (!isFaceUnlockPackage() && res == AppOpsManager::MODE_ERRORED) {
ALOGI("Camera %s: Access for \"%s\" has been revoked",
mCameraIdStr.string(), String8(mClientPackageName).string());
return PERMISSION_DENIED;
@@ -2959,7 +2963,7 @@ status_t CameraService::BasicClient::startCameraOps() {
// If the calling Uid is trusted (a native service), the AppOpsManager could
// return MODE_IGNORED. Do not treat such case as error.
- if (!mUidIsTrusted && res == AppOpsManager::MODE_IGNORED) {
+ if (!isFaceUnlockPackage() && !mUidIsTrusted && res == AppOpsManager::MODE_IGNORED) {
ALOGI("Camera %s: Access for \"%s\" has been restricted",
mCameraIdStr.string(), String8(mClientPackageName).string());
// Return the same error as for device policy manager rejection
diff --git a/services/camera/libcameraservice/CameraService.h b/services/camera/libcameraservice/CameraService.h
index 685ed5ee1d..a192202199 100644
--- a/services/camera/libcameraservice/CameraService.h
+++ b/services/camera/libcameraservice/CameraService.h
@@ -295,6 +295,9 @@ public:
// Override rotate-and-crop AUTO behavior
virtual status_t setRotateAndCropOverride(uint8_t rotateAndCrop) = 0;
+ // Return if current package is face unlock
+ virtual bool isFaceUnlockPackage() const;
+
protected:
BasicClient(const sp<CameraService>& cameraService,
const sp<IBinder>& remoteCallback,