From 549e578f5f062e27a0501627630cb4ece8a5931a Mon Sep 17 00:00:00 2001 From: chennian Date: Fri, 17 Jan 2025 17:41:31 +0800 Subject: [PATCH] Optimize of verifyaccesstoken Signed-off-by: chennian Change-Id: I3a7af95fdb85598c3684b27ff1c2394b6a65bde3 --- access_token.gni | 1 + bundle.json | 3 +- services/privacymanager/BUILD.gn | 33 +++++----- .../record/permission_record_manager.h | 10 +-- .../src/record/permission_record_manager.cpp | 63 +++++++------------ .../privacymanager/test/coverage/BUILD.gn | 33 +++++----- .../privacymanager/test/unittest/BUILD.gn | 33 +++++----- .../services/privacy/privacy_service_fuzz.gni | 34 +++++----- 8 files changed, 105 insertions(+), 105 deletions(-) diff --git a/access_token.gni b/access_token.gni index e3bbe7321..1d3cb334b 100644 --- a/access_token.gni +++ b/access_token.gni @@ -140,6 +140,7 @@ if (!defined(global_parts_info) || declare_args() { access_token_camera_float_window_enable = true + access_token_camera_control_enable = true; } if (!defined(global_parts_info) || diff --git a/bundle.json b/bundle.json index 285efcc94..0f2e15548 100644 --- a/bundle.json +++ b/bundle.json @@ -21,7 +21,8 @@ ], "features": [ "access_token_feature_coverage", - "access_token_camera_float_window_enable" + "access_token_camera_float_window_enable", + "access_token_camera_control_enable" ], "adapted_system_type": [ "standard" ], "rom": "10000KB", diff --git a/services/privacymanager/BUILD.gn b/services/privacymanager/BUILD.gn index 92c48374a..813f5a7b0 100644 --- a/services/privacymanager/BUILD.gn +++ b/services/privacymanager/BUILD.gn @@ -155,21 +155,24 @@ if (is_standard_system && ability_base_enable == true) { sources += [ "src/seccomp/privacy_sec_comp_enhance_agent.cpp" ] } - if (window_manager_enable && access_token_camera_float_window_enable) { - cflags_cc += [ "-DCAMERA_FLOAT_WINDOW_ENABLE" ] - include_dirs += - [ "${access_token_path}/services/common/window_manager/include" ] - sources += [ - "${access_token_path}/services/common/window_manager/src/privacy_mock_session_manager_proxy.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_scene_session_manager_lite_proxy.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_scene_session_manager_proxy.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_session_manager_proxy.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_window_manager_agent.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_window_manager_client.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_window_manager_death_recipient.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_window_manager_proxy.cpp", - ] - external_deps += [ "window_manager:libwsutils" ] + if (access_token_camera_control_enable) { + cflags_cc += [ "-DCAMERA_CONTROL_ENABLE" ] + if (window_manager_enable && access_token_camera_float_window_enable) { + cflags_cc += [ "-DCAMERA_FLOAT_WINDOW_ENABLE" ] + include_dirs += + [ "${access_token_path}/services/common/window_manager/include" ] + sources += [ + "${access_token_path}/services/common/window_manager/src/privacy_mock_session_manager_proxy.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_scene_session_manager_lite_proxy.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_scene_session_manager_proxy.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_session_manager_proxy.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_window_manager_agent.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_window_manager_client.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_window_manager_death_recipient.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_window_manager_proxy.cpp", + ] + external_deps += [ "window_manager:libwsutils" ] + } } if (access_token_app_security_privacy_service_enable) { diff --git a/services/privacymanager/include/record/permission_record_manager.h b/services/privacymanager/include/record/permission_record_manager.h index 29b27d677..1065a7850 100644 --- a/services/privacymanager/include/record/permission_record_manager.h +++ b/services/privacymanager/include/record/permission_record_manager.h @@ -106,7 +106,6 @@ public: int32_t SetTempMutePolicy(const std::string permissionName, bool isMute); int32_t SetHapWithFGReminder(uint32_t tokenId, bool isAllowed); - void NotifyAppStateChange(AccessTokenID tokenId, int32_t pid, ActiveChangeType status); void SetLockScreenStatus(int32_t lockScreenStatus); int32_t GetLockScreenStatus(bool isIpc = false); @@ -114,9 +113,10 @@ public: void NotifyCameraWindowChange(bool isPip, AccessTokenID tokenId, bool isShowing); void OnWindowMgrRemoteDied(); #endif +#ifdef CAMERA_CONTROL_ENABLE + void NotifyAppStateChange(AccessTokenID tokenId, int32_t pid, ActiveChangeType status); void OnAppMgrRemoteDiedHandle(); - void OnAudioMgrRemoteDiedHandle(); - void OnCameraMgrRemoteDiedHandle(); +#endif void RemoveRecordFromStartListByPid(const AccessTokenID tokenId, int32_t pid); void RemoveRecordFromStartListByToken(const AccessTokenID tokenId); void RemoveRecordFromStartListByOp(int32_t opCode); @@ -190,9 +190,7 @@ private: void InitializeMuteState(const std::string& permissionName); int32_t GetAppStatus(AccessTokenID tokenId, int32_t pid = -1); - bool RegisterAppStatusListener(); bool Register(); - bool RegisterApplicationStateObserver(); void Unregister(); bool GetMuteParameter(const char* key, bool& isMute); @@ -222,6 +220,7 @@ private: bool isCamMixMute_ = false; bool isCamLoad_ = false; +#ifdef CAMERA_CONTROL_ENABLE // appState std::mutex appStateMutex_; sptr appStateCallback_ = nullptr; @@ -229,6 +228,7 @@ private: // app manager death std::mutex appManagerDeathMutex_; std::shared_ptr appManagerDeathCallback_ = nullptr; +#endif // lockScreenState std::mutex lockScreenStateMutex_; diff --git a/services/privacymanager/src/record/permission_record_manager.cpp b/services/privacymanager/src/record/permission_record_manager.cpp index d1f2fe7eb..6d7e50259 100644 --- a/services/privacymanager/src/record/permission_record_manager.cpp +++ b/services/privacymanager/src/record/permission_record_manager.cpp @@ -112,6 +112,7 @@ PermissionRecordManager::~PermissionRecordManager() Unregister(); } +#ifdef CAMERA_CONTROL_ENABLE void PrivacyAppStateObserver::OnAppStateChanged(const AppStateData &appStateData) { ACCESSTOKEN_LOG_DEBUG(LABEL, "OnChange(id=%{public}d, pid=%{public}d, state=%{public}d).", @@ -149,6 +150,25 @@ void PrivacyAppManagerDeathCallback::NotifyAppManagerDeath() PermissionRecordManager::GetInstance().OnAppMgrRemoteDiedHandle(); } +void PermissionRecordManager::OnAppMgrRemoteDiedHandle() +{ + ACCESSTOKEN_LOG_INFO(LABEL, "Handle app fwk died."); + std::lock_guard lock(appStateMutex_); + appStateCallback_ = nullptr; +} + +/* + * when foreground change background or background change foreground,change accessDuration and store in database, + * change status and accessDuration and timestamp in cache +*/ +void PermissionRecordManager::NotifyAppStateChange(AccessTokenID tokenId, int32_t pid, ActiveChangeType status) +{ + ACCESSTOKEN_LOG_INFO(LABEL, "Id %{public}u, pid %{public}d, status %{public}d", tokenId, pid, status); + // find permissions from startRecordList_ by tokenId which status diff from currStatus + ExecuteAndUpdateRecord(tokenId, pid, status); +} +#endif + void PermissionRecordManager::AddRecToCacheAndValueVec(const PermissionRecord& record, std::vector& values) { @@ -1016,17 +1036,6 @@ void PermissionRecordManager::ExecuteAndUpdateRecord(uint32_t tokenId, int32_t p } } -/* - * when foreground change background or background change foreground,change accessDuration and store in database, - * change status and accessDuration and timestamp in cache -*/ -void PermissionRecordManager::NotifyAppStateChange(AccessTokenID tokenId, int32_t pid, ActiveChangeType status) -{ - ACCESSTOKEN_LOG_INFO(LABEL, "Id %{public}u, pid %{public}d, status %{public}d", tokenId, pid, status); - // find permissions from startRecordList_ by tokenId which status diff from currStatus - ExecuteAndUpdateRecord(tokenId, pid, status); -} - void PermissionRecordManager::SetLockScreenStatus(int32_t lockScreenStatus) { ACCESSTOKEN_LOG_INFO(LABEL, "LockScreenStatus %{public}d", lockScreenStatus); @@ -1698,6 +1707,7 @@ int32_t PermissionRecordManager::GetAppStatus(AccessTokenID tokenId, int32_t pid bool PermissionRecordManager::Register() { +#ifdef CAMERA_CONTROL_ENABLE // app manager death callback register { std::lock_guard lock(appManagerDeathMutex_); @@ -1726,6 +1736,7 @@ bool PermissionRecordManager::Register() } } } +#endif return true; } @@ -1840,12 +1851,14 @@ void PermissionRecordManager::InitializeMuteState(const std::string& permissionN void PermissionRecordManager::Unregister() { +#ifdef CAMERA_CONTROL_ENABLE // app state change callback unregister std::lock_guard lock(appStateMutex_); if (appStateCallback_ != nullptr) { AppManagerAccessClient::GetInstance().UnregisterApplicationStateObserver(appStateCallback_); appStateCallback_= nullptr; } +#endif } bool PermissionRecordManager::GetMuteParameter(const char* key, bool& isMute) @@ -1864,34 +1877,6 @@ bool PermissionRecordManager::GetMuteParameter(const char* key, bool& isMute) return true; } -void PermissionRecordManager::OnAppMgrRemoteDiedHandle() -{ - ACCESSTOKEN_LOG_INFO(LABEL, "Handle app fwk died."); - std::lock_guard lock(appStateMutex_); - appStateCallback_ = nullptr; -} - -void PermissionRecordManager::OnAudioMgrRemoteDiedHandle() -{ - ACCESSTOKEN_LOG_INFO(LABEL, "Handle audio fwk died."); - { - std::lock_guard lock(micLoadMutex_); - isMicLoad_ = false; - } -} - -void PermissionRecordManager::OnCameraMgrRemoteDiedHandle() -{ - ACCESSTOKEN_LOG_INFO(LABEL, "Handle camera fwk died."); - { - std::lock_guard lock(camLoadMutex_); - isCamLoad_ = false; - } -#ifdef CAMERA_FLOAT_WINDOW_ENABLE - ClearWindowShowing(); -#endif -} - bool PermissionRecordManager::IsCameraWindowShow(AccessTokenID tokenId) { bool isShow = true; diff --git a/services/privacymanager/test/coverage/BUILD.gn b/services/privacymanager/test/coverage/BUILD.gn index 2fad21566..a68de0986 100644 --- a/services/privacymanager/test/coverage/BUILD.gn +++ b/services/privacymanager/test/coverage/BUILD.gn @@ -125,21 +125,24 @@ if (is_standard_system && ability_base_enable == true) { external_deps += [ "screenlock_mgr:screenlock_client" ] } - if (window_manager_enable && access_token_camera_float_window_enable) { - cflags_cc += [ "-DCAMERA_FLOAT_WINDOW_ENABLE" ] - include_dirs += - [ "${access_token_path}/services/common/window_manager/include" ] - sources += [ - "${access_token_path}/services/common/window_manager/src/privacy_mock_session_manager_proxy.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_scene_session_manager_lite_proxy.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_scene_session_manager_proxy.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_session_manager_proxy.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_window_manager_agent.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_window_manager_client.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_window_manager_death_recipient.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_window_manager_proxy.cpp", - ] - external_deps += [ "window_manager:libwsutils" ] + if (access_token_camera_control_enable) { + cflags_cc += [ "-DCAMERA_CONTROL_ENABLE" ] + if (window_manager_enable && access_token_camera_float_window_enable) { + cflags_cc += [ "-DCAMERA_FLOAT_WINDOW_ENABLE" ] + include_dirs += + [ "${access_token_path}/services/common/window_manager/include" ] + sources += [ + "${access_token_path}/services/common/window_manager/src/privacy_mock_session_manager_proxy.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_scene_session_manager_lite_proxy.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_scene_session_manager_proxy.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_session_manager_proxy.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_window_manager_agent.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_window_manager_client.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_window_manager_death_recipient.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_window_manager_proxy.cpp", + ] + external_deps += [ "window_manager:libwsutils" ] + } } if (access_token_app_security_privacy_service_enable) { cflags_cc += [ "-DAPP_SECURITY_PRIVACY_SERVICE" ] diff --git a/services/privacymanager/test/unittest/BUILD.gn b/services/privacymanager/test/unittest/BUILD.gn index 9899247f5..90530a6e4 100644 --- a/services/privacymanager/test/unittest/BUILD.gn +++ b/services/privacymanager/test/unittest/BUILD.gn @@ -131,21 +131,24 @@ if (is_standard_system && ability_base_enable == true) { external_deps += [ "screenlock_mgr:screenlock_client" ] } - if (window_manager_enable && access_token_camera_float_window_enable) { - cflags_cc += [ "-DCAMERA_FLOAT_WINDOW_ENABLE" ] - include_dirs += - [ "${access_token_path}/services/common/window_manager/include" ] - sources += [ - "${access_token_path}/services/common/window_manager/src/privacy_mock_session_manager_proxy.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_scene_session_manager_lite_proxy.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_scene_session_manager_proxy.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_session_manager_proxy.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_window_manager_agent.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_window_manager_client.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_window_manager_death_recipient.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_window_manager_proxy.cpp", - ] - external_deps += [ "window_manager:libwsutils" ] + if (access_token_camera_control_enable) { + cflags_cc += [ "-DCAMERA_CONTROL_ENABLE" ] + if (window_manager_enable && access_token_camera_float_window_enable) { + cflags_cc += [ "-DCAMERA_FLOAT_WINDOW_ENABLE" ] + include_dirs += + [ "${access_token_path}/services/common/window_manager/include" ] + sources += [ + "${access_token_path}/services/common/window_manager/src/privacy_mock_session_manager_proxy.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_scene_session_manager_lite_proxy.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_scene_session_manager_proxy.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_session_manager_proxy.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_window_manager_agent.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_window_manager_client.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_window_manager_death_recipient.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_window_manager_proxy.cpp", + ] + external_deps += [ "window_manager:libwsutils" ] + } } if (access_token_app_security_privacy_service_enable) { diff --git a/test/fuzztest/services/privacy/privacy_service_fuzz.gni b/test/fuzztest/services/privacy/privacy_service_fuzz.gni index f8bcdfa4f..ca32e74fa 100644 --- a/test/fuzztest/services/privacy/privacy_service_fuzz.gni +++ b/test/fuzztest/services/privacy/privacy_service_fuzz.gni @@ -106,21 +106,25 @@ if (common_event_service_enable) { privacy_sources += [ "${access_token_path}/services/privacymanager/src/common/privacy_common_event_subscriber.cpp" ] } -if (window_manager_enable && access_token_camera_float_window_enable) { - privacy_cflags_cc += [ "-DCAMERA_FLOAT_WINDOW_ENABLE" ] - privacy_include_dirs += - [ "${access_token_path}/services/common/window_manager/include" ] - privacy_sources += [ - "${access_token_path}/services/common/window_manager/src/privacy_mock_session_manager_proxy.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_scene_session_manager_lite_proxy.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_scene_session_manager_proxy.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_session_manager_proxy.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_window_manager_agent.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_window_manager_client.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_window_manager_death_recipient.cpp", - "${access_token_path}/services/common/window_manager/src/privacy_window_manager_proxy.cpp", - ] - privacy_external_deps += [ "window_manager:libwsutils" ] +if (access_token_camera_control_enable) { + cflags_cc += [ "-DCAMERA_CONTROL_ENABLE" ] + + if (window_manager_enable && access_token_camera_float_window_enable) { + privacy_cflags_cc += [ "-DCAMERA_FLOAT_WINDOW_ENABLE" ] + privacy_include_dirs += + [ "${access_token_path}/services/common/window_manager/include" ] + privacy_sources += [ + "${access_token_path}/services/common/window_manager/src/privacy_mock_session_manager_proxy.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_scene_session_manager_lite_proxy.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_scene_session_manager_proxy.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_session_manager_proxy.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_window_manager_agent.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_window_manager_client.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_window_manager_death_recipient.cpp", + "${access_token_path}/services/common/window_manager/src/privacy_window_manager_proxy.cpp", + ] + privacy_external_deps += [ "window_manager:libwsutils" ] + } } if (theme_screenlock_mgr_enable) { -- Gitee