From 930475324f34623af111be95d0336d5b359acc84 Mon Sep 17 00:00:00 2001 From: zhouyan Date: Thu, 4 Sep 2025 15:45:01 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=B8=E6=9C=BAOpenCamera=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=B7=BB=E5=8A=A0hitrace=E5=92=8C=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhouyan Change-Id: I9142a5b2a38cc5b468c730ee8ff62d189a8b2189 --- services/privacymanager/BUILD.gn | 6 ++++ .../src/record/permission_record_manager.cpp | 4 +-- .../src/service/privacy_manager_service.cpp | 33 ++++++++++++++----- 3 files changed, 33 insertions(+), 10 deletions(-) diff --git a/services/privacymanager/BUILD.gn b/services/privacymanager/BUILD.gn index 7b6242978..fa3f66446 100644 --- a/services/privacymanager/BUILD.gn +++ b/services/privacymanager/BUILD.gn @@ -250,5 +250,11 @@ if (is_standard_system && ability_base_enable == true) { include_dirs += [ "${access_token_path}/services/common/ability_manager/include" ] } + + if (hiviewdfx_hitrace_native_enable == true) { + cflags_cc += [ "-DHITRACE_NATIVE_ENABLE" ] + + external_deps += [ "hitrace:hitrace_meter" ] + } } } diff --git a/services/privacymanager/src/record/permission_record_manager.cpp b/services/privacymanager/src/record/permission_record_manager.cpp index cf616549f..0e0fcb2c1 100644 --- a/services/privacymanager/src/record/permission_record_manager.cpp +++ b/services/privacymanager/src/record/permission_record_manager.cpp @@ -1466,7 +1466,7 @@ bool PermissionRecordManager::IsAllowedUsingCamera(AccessTokenID tokenId, int32_ // allow foregound application or background application with CAMERA_BACKGROUND permission use camera int32_t status = GetAppStatus(tokenId, pid); - LOGI(PRI_DOMAIN, PRI_TAG, "Id %{public}d, appStatus %{public}d(1-foreground 2-background).", tokenId, status); + LOGI(PRI_DOMAIN, PRI_TAG, "Id %{public}d, pid %{public}d, status %{public}d(1-fore 2-back).", tokenId, pid, status); if (status == ActiveChangeType::PERM_ACTIVE_IN_FOREGROUND) { return true; } @@ -1477,7 +1477,7 @@ bool PermissionRecordManager::IsAllowedUsingCamera(AccessTokenID tokenId, int32_ bool PermissionRecordManager::IsAllowedUsingMicrophone(AccessTokenID tokenId, int32_t pid) { int32_t status = GetAppStatus(tokenId, pid); - LOGI(PRI_DOMAIN, PRI_TAG, "Id %{public}d, status is %{public}d(1-foreground 2-background).", tokenId, status); + LOGI(PRI_DOMAIN, PRI_TAG, "Id %{public}d, pid %{public}d, status %{public}d(1-fore 2-back).", tokenId, pid, status); if (status == ActiveChangeType::PERM_ACTIVE_IN_FOREGROUND) { return true; } diff --git a/services/privacymanager/src/service/privacy_manager_service.cpp b/services/privacymanager/src/service/privacy_manager_service.cpp index 23da941ba..898eca7c0 100644 --- a/services/privacymanager/src/service/privacy_manager_service.cpp +++ b/services/privacymanager/src/service/privacy_manager_service.cpp @@ -37,6 +37,11 @@ #include "string_ex.h" #include "tokenid_kit.h" +#ifdef HITRACE_NATIVE_ENABLE +#include "hitrace_meter.h" +#define PRIVACY_SYNC_TRACE HITRACE_METER_NAME(HITRACE_TAG_ACCESS_CONTROL, __PRETTY_FUNCTION__) +#endif + namespace OHOS { namespace Security { namespace AccessToken { @@ -90,6 +95,11 @@ void PrivacyManagerService::OnStop() int32_t PrivacyManagerService::AddPermissionUsedRecord(const AddPermParamInfoParcel& infoParcel) { +#ifdef HITRACE_NATIVE_ENABLE + PRIVACY_SYNC_TRACE; +#endif + LOGI(PRI_DOMAIN, PRI_TAG, "Entry!"); + uint32_t callingTokenID = IPCSkeleton::GetCallingTokenID(); if ((AccessTokenKit::GetTokenTypeFlag(callingTokenID) == TOKEN_HAP) && (!IsSystemAppCalling())) { return PrivacyError::ERR_NOT_SYSTEM_APP; @@ -98,11 +108,10 @@ int32_t PrivacyManagerService::AddPermissionUsedRecord(const AddPermParamInfoPar return PrivacyError::ERR_PERMISSION_DENIED; } - LOGD(PRI_DOMAIN, PRI_TAG, "id: %{public}d, perm: %{public}s, succCnt: %{public}d," - " failCnt: %{public}d, type: %{public}d", infoParcel.info.tokenId, infoParcel.info.permissionName.c_str(), - infoParcel.info.successCount, infoParcel.info.failCount, infoParcel.info.type); AddPermParamInfo info = infoParcel.info; - return PermissionRecordManager::GetInstance().AddPermissionUsedRecord(info); + int32_t res = PermissionRecordManager::GetInstance().AddPermissionUsedRecord(info); + LOGI(PRI_DOMAIN, PRI_TAG, "Exit!"); + return res; } int32_t PrivacyManagerService::AddPermissionUsedRecordAsync(const AddPermParamInfoParcel& infoParcel) @@ -201,6 +210,10 @@ int32_t PrivacyManagerService::StartUsingPermission( int32_t PrivacyManagerService::StartUsingPermissionCallback(const PermissionUsedTypeInfoParcel &infoParcel, const sptr& callback, const sptr& anonyStub) { +#ifdef HITRACE_NATIVE_ENABLE + PRIVACY_SYNC_TRACE; +#endif + LOGI(PRI_DOMAIN, PRI_TAG, "Entry!"); uint32_t callingTokenID = IPCSkeleton::GetCallingTokenID(); if ((AccessTokenKit::GetTokenTypeFlag(callingTokenID) == TOKEN_HAP) && (!IsSystemAppCalling())) { return PrivacyError::ERR_NOT_SYSTEM_APP; @@ -210,9 +223,10 @@ int32_t PrivacyManagerService::StartUsingPermissionCallback(const PermissionUsed } int32_t callerPid = IPCSkeleton::GetCallingPid(); - LOGI(PRI_DOMAIN, PRI_TAG, "Caller pid = %{public}d.", callerPid); ProcessProxyDeathStub(anonyStub, callerPid); - return PermissionRecordManager::GetInstance().StartUsingPermission(infoParcel.info, callback, callerPid); + int32_t res = PermissionRecordManager::GetInstance().StartUsingPermission(infoParcel.info, callback, callerPid); + LOGI(PRI_DOMAIN, PRI_TAG, "Exit!"); + return res; } int32_t PrivacyManagerService::StopUsingPermission( @@ -408,6 +422,10 @@ int32_t PrivacyManagerService::UnRegisterPermActiveStatusCallback(const sptr