From ba00d7bf19d9b344109e3a70e7e6736a567a57a2 Mon Sep 17 00:00:00 2001 From: zhaowenli Date: Tue, 24 Dec 2024 15:23:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E5=80=BC=E7=B1=BB=E5=9E=8B=E8=B5=8B?= =?UTF-8?q?=E4=BA=88=E9=94=99=E8=AF=AF=20=EF=BC=88cherry=20picked=20commit?= =?UTF-8?q?=20from=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Iefc7cae850e330cb5ab6d86bf798c32a7b661a33 --- .../innerkits/accesstoken/include/access_token_error.h | 1 + interfaces/innerkits/privacy/include/privacy_error.h | 1 + .../main/cpp/src/callback/callback_manager.cpp | 7 +++---- .../main/cpp/src/permission/permission_manager.cpp | 1 - .../test/unittest/permission_manager_test.cpp | 6 ++++++ .../src/active/active_status_callback_manager.cpp | 5 ++++- .../test/unittest/permission_record_manager_test.cpp | 6 +++++- 7 files changed, 20 insertions(+), 7 deletions(-) diff --git a/interfaces/innerkits/accesstoken/include/access_token_error.h b/interfaces/innerkits/accesstoken/include/access_token_error.h index 2b1c0ed0c..9f0fd9a91 100644 --- a/interfaces/innerkits/accesstoken/include/access_token_error.h +++ b/interfaces/innerkits/accesstoken/include/access_token_error.h @@ -77,6 +77,7 @@ enum AccessTokenError { ERR_USER_POLICY_INITIALIZED, ERR_USER_POLICY_NOT_INITIALIZED, ERR_REMOTE_CONNECTION, + ERR_ADD_DEATH_RECIPIENT_FAILED, }; } // namespace AccessToken } // namespace Security diff --git a/interfaces/innerkits/privacy/include/privacy_error.h b/interfaces/innerkits/privacy/include/privacy_error.h index dd56f19e5..af25d0c18 100644 --- a/interfaces/innerkits/privacy/include/privacy_error.h +++ b/interfaces/innerkits/privacy/include/privacy_error.h @@ -63,6 +63,7 @@ enum PrivacyError { ERR_EDM_POLICY_CHECK_FAILED, ERR_PRIVACY_POLICY_CHECK_FAILED, ERR_REMOTE_CONNECTION, + ERR_ADD_DEATH_RECIPIENT_FAILED, }; } // namespace AccessToken } // namespace Security diff --git a/services/accesstokenmanager/main/cpp/src/callback/callback_manager.cpp b/services/accesstokenmanager/main/cpp/src/callback/callback_manager.cpp index bdb2c10c1..57480ea48 100644 --- a/services/accesstokenmanager/main/cpp/src/callback/callback_manager.cpp +++ b/services/accesstokenmanager/main/cpp/src/callback/callback_manager.cpp @@ -76,9 +76,9 @@ int32_t CallbackManager::AddCallback(const PermStateChangeScope& scopeRes, const ACCESSTOKEN_LOG_ERROR(LABEL, "Callback size has reached limitation"); return AccessTokenError::ERR_CALLBACKS_EXCEED_LIMITATION; } - int32_t ret = callback->AddDeathRecipient(callbackDeathRecipient_); - if (ret != ERR_NONE) { - ACCESSTOKEN_LOG_ERROR(LABEL, "add death recipient failed ret is %{public}d", ret); + if (!callback->AddDeathRecipient(callbackDeathRecipient_)) { + ACCESSTOKEN_LOG_ERROR(LABEL, "add death recipient failed."); + return AccessTokenError::ERR_ADD_DEATH_RECIPIENT_FAILED; } CallbackRecord recordInstance; @@ -87,7 +87,6 @@ int32_t CallbackManager::AddCallback(const PermStateChangeScope& scopeRes, const callbackInfoList_.emplace_back(recordInstance); - ACCESSTOKEN_LOG_INFO(LABEL, "RecordInstance is added"); return RET_SUCCESS; } diff --git a/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp b/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp index a33762a63..61864f6b3 100644 --- a/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp +++ b/services/accesstokenmanager/main/cpp/src/permission/permission_manager.cpp @@ -668,7 +668,6 @@ int32_t PermissionManager::ScopeFilter(const PermStateChangeScope& scopeSrc, Per int32_t PermissionManager::AddPermStateChangeCallback( const PermStateChangeScope& scope, const sptr& callback) { - ACCESSTOKEN_LOG_INFO(LABEL, "Called"); PermStateChangeScope scopeRes; int32_t result = ScopeFilter(scope, scopeRes); if (result != RET_SUCCESS) { diff --git a/services/accesstokenmanager/test/unittest/permission_manager_test.cpp b/services/accesstokenmanager/test/unittest/permission_manager_test.cpp index fbea6ad53..754f6c3bf 100644 --- a/services/accesstokenmanager/test/unittest/permission_manager_test.cpp +++ b/services/accesstokenmanager/test/unittest/permission_manager_test.cpp @@ -766,12 +766,18 @@ public: virtual ~PermChangeCallback() = default; void PermStateChangeCallback(PermStateChangeInfo& result) override; + bool AddDeathRecipient(const sptr& callback1) override; }; void PermChangeCallback::PermStateChangeCallback(PermStateChangeInfo& result) { } +bool PermChangeCallback::AddDeathRecipient(const sptr& callback1) +{ + return true; +} + /** * @tc.name: AddPermStateChangeCallback002 * @tc.desc: Test AddPermStateChangeCallback with exceed limitation. diff --git a/services/privacymanager/src/active/active_status_callback_manager.cpp b/services/privacymanager/src/active/active_status_callback_manager.cpp index ff5f794db..5e4cdb5ec 100644 --- a/services/privacymanager/src/active/active_status_callback_manager.cpp +++ b/services/privacymanager/src/active/active_status_callback_manager.cpp @@ -79,7 +79,10 @@ int32_t ActiveStatusCallbackManager::AddCallback( ACCESSTOKEN_LOG_ERROR(LABEL, "List size has reached max value"); return PrivacyError::ERR_CALLBACKS_EXCEED_LIMITATION; } - callback->AddDeathRecipient(callbackDeathRecipient_); + if (!callback->AddDeathRecipient(callbackDeathRecipient_)) { + ACCESSTOKEN_LOG_ERROR(LABEL, "add death recipient failed."); + return PrivacyError::ERR_ADD_DEATH_RECIPIENT_FAILED; + } CallbackData recordInstance; recordInstance.registerTokenId = regiterTokenId; diff --git a/services/privacymanager/test/unittest/permission_record_manager_test.cpp b/services/privacymanager/test/unittest/permission_record_manager_test.cpp index aa125a92e..4cb9820a9 100644 --- a/services/privacymanager/test/unittest/permission_record_manager_test.cpp +++ b/services/privacymanager/test/unittest/permission_record_manager_test.cpp @@ -239,6 +239,10 @@ public: } ActiveChangeType type_ = PERM_INACTIVE; + + bool AddDeathRecipient(const sptr& callback1) { + return true; + } }; /** @@ -256,7 +260,7 @@ HWTEST_F(PermissionRecordManagerTest, RegisterPermActiveStatusCallback002, TestS sptr callback = new (std::nothrow) PermActiveStatusChangeCallback(); ASSERT_NE(nullptr, callback); ASSERT_EQ(RET_SUCCESS, PermissionRecordManager::GetInstance().RegisterPermActiveStatusCallback( - GetSelfTokenID(), permList, callback->AsObject())); + GetSelfTokenID(), permList, callback->AsObject())); callbacks.emplace_back(callback); } -- Gitee