diff --git a/frameworks/accesstoken/include/i_accesstoken_manager.h b/frameworks/accesstoken/include/i_accesstoken_manager.h index d5216bf647b3a3e34ed332314c8ad51d14ca6067..77bd670d656b454783c132625c8d8d28fc146543 100644 --- a/frameworks/accesstoken/include/i_accesstoken_manager.h +++ b/frameworks/accesstoken/include/i_accesstoken_manager.h @@ -67,6 +67,7 @@ public: virtual int32_t RegisterPermStateChangeCallback( const PermStateChangeScopeParcel& scope, const sptr& callback) = 0; virtual int32_t UnRegisterPermStateChangeCallback(const sptr& callback) = 0; + virtual int32_t ReloadNativeTokenInfo() = 0; #ifdef TOKEN_SYNC_ENABLE virtual int GetHapTokenInfoFromRemote(AccessTokenID tokenID, @@ -115,6 +116,7 @@ public: GET_PERMISSION_OPER_STATE = 0xff31, REGISTER_PERM_STATE_CHANGE_CALLBACK = 0xff32, UNREGISTER_PERM_STATE_CHANGE_CALLBACK = 0xff33, + RELOAD_NATIVE_TOKEN_INFO = 0xff34, }; }; } // namespace AccessToken diff --git a/interfaces/innerkits/accesstoken/include/accesstoken_kit.h b/interfaces/innerkits/accesstoken/include/accesstoken_kit.h index ba1ebc0ebae558272e164f2edc049accf3052336..3f16dd7c23419fb93137ba27b9c86a4adc156e36 100644 --- a/interfaces/innerkits/accesstoken/include/accesstoken_kit.h +++ b/interfaces/innerkits/accesstoken/include/accesstoken_kit.h @@ -63,6 +63,7 @@ public: const std::shared_ptr& callback); static int32_t UnRegisterPermStateChangeCallback(const std::shared_ptr& callback); static int32_t GetHapDlpFlag(AccessTokenID tokenID); + static int32_t ReloadNativeTokenInfo(); #ifdef TOKEN_SYNC_ENABLE static int GetHapTokenInfoFromRemote(AccessTokenID tokenID, HapTokenInfoForSync& hapSync); diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp b/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp index 73a0e5ce837b8750cac77b26cb219967132338df..0f4424a86475fada1b5e7154ac8af4d7f46f7a72 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp +++ b/interfaces/innerkits/accesstoken/src/accesstoken_kit.cpp @@ -321,6 +321,11 @@ int32_t AccessTokenKit::GetHapDlpFlag(AccessTokenID tokenID) return (int32_t)(idInner->dlpFlag); } +int32_t AccessTokenKit::ReloadNativeTokenInfo() +{ + return AccessTokenManagerClient::GetInstance().ReloadNativeTokenInfo(); +} + #ifdef TOKEN_SYNC_ENABLE int AccessTokenKit::GetHapTokenInfoFromRemote(AccessTokenID tokenID, HapTokenInfoForSync& hapSync) { diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp index 59fea9d5492bc56dd023a5a2d87570d4f9068b95..87986493e33d09d727f7b43f8a440f4e9bf3aa5a 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.cpp @@ -366,6 +366,15 @@ int AccessTokenManagerClient::GetNativeTokenInfo(AccessTokenID tokenID, NativeTo nativeTokenInfoRes = nativeTokenInfoParcel.nativeTokenInfoParams; return res; } +int32_t AccessTokenManagerClient::ReloadNativeTokenInfo() +{ + auto proxy = GetProxy(); + if (proxy == nullptr) { + ACCESSTOKEN_LOG_ERROR(LABEL, "proxy is null"); + return -2; + } + return proxy->ReloadNativeTokenInfo(); +} #ifdef TOKEN_SYNC_ENABLE int AccessTokenManagerClient::GetHapTokenInfoFromRemote(AccessTokenID tokenID, HapTokenInfoForSync& hapSync) diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h index 8a0e14df3336098fe0699e87bb5652cb4b0b151d..3dd564d32d97997144c37c51845fc5c46d81eb49 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_client.h @@ -64,10 +64,12 @@ public: AccessTokenID tokenID, const std::string& appIDDesc, int32_t apiVersion, const HapPolicyParams& policy); int GetHapTokenInfo(AccessTokenID tokenID, HapTokenInfo& hapTokenInfoRes); int GetNativeTokenInfo(AccessTokenID tokenID, NativeTokenInfo& nativeTokenInfoRes); + int32_t ReloadNativeTokenInfo(); int32_t RegisterPermStateChangeCallback( const std::shared_ptr& customizedCallback); int32_t UnRegisterPermStateChangeCallback( const std::shared_ptr& customizedCb); + #ifdef TOKEN_SYNC_ENABLE int GetHapTokenInfoFromRemote(AccessTokenID tokenID, HapTokenInfoForSync& hapSync); diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp index 078f8e4e8303993a35b15650245b5b14ac244827..852d633972488b8e0d3fb6d9f69432171098ff1b 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.cpp @@ -774,6 +774,28 @@ int AccessTokenManagerProxy::UpdateHapToken( return result; } +int32_t AccessTokenManagerProxy::ReloadNativeTokenInfo() +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + sptr remote = Remote(); + if (remote == nullptr) { + ACCESSTOKEN_LOG_ERROR(LABEL, "remote service null."); + return RET_FAILED; + } + int32_t requestResult = remote->SendRequest( + static_cast(IAccessTokenManager::InterfaceCode::RELOAD_NATIVE_TOKEN_INFO), data, reply, option); + if (requestResult != NO_ERROR) { + ACCESSTOKEN_LOG_ERROR(LABEL, "request fail, result: %{public}d", requestResult); + return RET_FAILED; + } + + int32_t result = reply.ReadInt32(); + ACCESSTOKEN_LOG_INFO(LABEL, "result from server data = %{public}d", result); + return result; +} + #ifdef TOKEN_SYNC_ENABLE int AccessTokenManagerProxy::GetHapTokenInfoFromRemote(AccessTokenID tokenID, HapTokenInfoForSyncParcel& hapSyncParcel) diff --git a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h index 809061d35d05cd394cb33188e16ebf1bfef055ef..24c0b7b8457291091395893b32eaa8d7499021fa 100644 --- a/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h +++ b/interfaces/innerkits/accesstoken/src/accesstoken_manager_proxy.h @@ -61,6 +61,7 @@ public: const HapPolicyParcel& policyPar) override; int GetHapTokenInfo(AccessTokenID tokenID, HapTokenInfoParcel& hapTokenInfoRes) override; int GetNativeTokenInfo(AccessTokenID tokenID, NativeTokenInfoParcel& nativeTokenInfoRes) override; + int32_t ReloadNativeTokenInfo() override; int32_t RegisterPermStateChangeCallback( const PermStateChangeScopeParcel& scope, const sptr& callback) override; int32_t UnRegisterPermStateChangeCallback(const sptr& callback) override; diff --git a/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.cpp b/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.cpp index e4544897fe4f2ecfa587d2ce3e1fc43048d12c0e..f7c91edfa52e09b6cdde16e985c805dbc9dc96eb 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.cpp +++ b/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.cpp @@ -1329,6 +1329,18 @@ HWTEST_F(AccessTokenKitTest, GetHapTokenID004, TestSize.Level1) ASSERT_EQ(0, tokenID); } +/** + * @tc.name: ReloadNativeTokenInfo001 + * @tc.desc: cannot get hap tokenid with invalid bundlename. + * @tc.type: FUNC + * @tc.require:AR000GK6TH + */ +HWTEST_F(AccessTokenKitTest, ReloadNativeTokenInfo001, TestSize.Level1) +{ + int32_t Info = AccessTokenKit::ReloadNativeTokenInfo(); + ASSERT_EQ(RET_SUCCESS, Info); +} + /** * @tc.name: AllocHapToken001 * @tc.desc: alloc a tokenId successfully, delete it successfully the first time and fail to delte it again. diff --git a/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.h b/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.h index 46b4fe8c35e0352004df152adead70cb2e788167..9392a6a75b706dd7c5d19d0f0bdf19d042e16c6b 100644 --- a/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.h +++ b/interfaces/innerkits/accesstoken/test/unittest/src/accesstoken_kit_test.h @@ -56,6 +56,7 @@ public: std::vector& permissionStateFulls, int32_t apiVersion); void DeleteTestToken() const; void AllocTestToken() const; + uint64_t selfTokenId_; std::string udid_; std::string networkId_; diff --git a/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h b/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h index 2b46210f17abee76a7783b2370990cbb3b2edf68..10298ae0970b6db90d67b8febfe2b3a4e8710760 100644 --- a/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h +++ b/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_service.h @@ -65,6 +65,7 @@ public: int32_t RegisterPermStateChangeCallback( const PermStateChangeScopeParcel& scope, const sptr& callback) override; int32_t UnRegisterPermStateChangeCallback(const sptr& callback) override; + int32_t ReloadNativeTokenInfo() override; #ifdef TOKEN_SYNC_ENABLE int GetHapTokenInfoFromRemote(AccessTokenID tokenID, HapTokenInfoForSyncParcel& hapSyncParcel) override; diff --git a/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_stub.h b/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_stub.h index e95fa76f9324f036f53b23e64dbac58691f7a69f..4d30ad445d355fa54480bfb1a843113ad05d5529 100644 --- a/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_stub.h +++ b/services/accesstokenmanager/main/cpp/include/service/accesstoken_manager_stub.h @@ -56,6 +56,7 @@ private: void GetTokenTypeInner(MessageParcel& data, MessageParcel& reply); void RegisterPermStateChangeCallbackInner(MessageParcel& data, MessageParcel& reply); void UnRegisterPermStateChangeCallbackInner(MessageParcel& data, MessageParcel& reply); + void ReloadNativeTokenInfoInner(MessageParcel& data, MessageParcel& reply); #ifdef TOKEN_SYNC_ENABLE void GetHapTokenInfoFromRemoteInner(MessageParcel& data, MessageParcel& reply); diff --git a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp index 7065736bf3a084376c5f500adcf6e51485b3cd5d..e77b1fb84c0132259ecd9278cb753bd007046007 100644 --- a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp +++ b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_service.cpp @@ -319,7 +319,10 @@ int AccessTokenManagerService::GetNativeTokenInfo(AccessTokenID tokenID, NativeT return AccessTokenInfoManager::GetInstance().GetNativeTokenInfo(tokenID, InfoParcel.nativeTokenInfoParams); } - +int32_t AccessTokenManagerService::ReloadNativeTokenInfo() +{ + return RET_SUCCESS; +} #ifdef TOKEN_SYNC_ENABLE int AccessTokenManagerService::GetHapTokenInfoFromRemote(AccessTokenID tokenID, HapTokenInfoForSyncParcel& hapSyncParcel) diff --git a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_stub.cpp b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_stub.cpp index 5039f472f188d8ff01e5e46683368308927258e7..0575e434ea3e93e352bbc8677b7a8b06a452d36c 100644 --- a/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_stub.cpp +++ b/services/accesstokenmanager/main/cpp/src/service/accesstoken_manager_stub.cpp @@ -349,6 +349,12 @@ void AccessTokenManagerStub::UnRegisterPermStateChangeCallbackInner(MessageParce reply.WriteInt32(result); } +void AccessTokenManagerStub::ReloadNativeTokenInfoInner(MessageParcel& data, MessageParcel& reply) +{ + int32_t result = this->ReloadNativeTokenInfo(); + reply.WriteInt32(result); +} + #ifdef TOKEN_SYNC_ENABLE void AccessTokenManagerStub::GetHapTokenInfoFromRemoteInner(MessageParcel& data, MessageParcel& reply) { @@ -546,7 +552,8 @@ AccessTokenManagerStub::AccessTokenManagerStub() &AccessTokenManagerStub::GetHapTokenInfoInner; requestFuncMap_[static_cast(IAccessTokenManager::InterfaceCode::UPDATE_HAP_TOKEN)] = &AccessTokenManagerStub::UpdateHapTokenInner; - + requestFuncMap_[static_cast(IAccessTokenManager::InterfaceCode::RELOAD_NATIVE_TOKEN_INFO)] = + &AccessTokenManagerStub::ReloadNativeTokenInfoInner; #ifdef TOKEN_SYNC_ENABLE requestFuncMap_[static_cast(IAccessTokenManager::InterfaceCode::GET_HAP_TOKEN_FROM_REMOTE)] = &AccessTokenManagerStub::GetHapTokenInfoFromRemoteInner; diff --git a/services/accesstokenmanager/main/cpp/src/token/native_token_receptor.cpp b/services/accesstokenmanager/main/cpp/src/token/native_token_receptor.cpp index aaa4527364d66fb97bd8270f859803aca1fc6579..0b81a6b7173374d193f2880bb64b16ef84aef8de 100644 --- a/services/accesstokenmanager/main/cpp/src/token/native_token_receptor.cpp +++ b/services/accesstokenmanager/main/cpp/src/token/native_token_receptor.cpp @@ -197,11 +197,6 @@ int NativeTokenReceptor::ReadCfgFile(std::string& nativeRawData) int NativeTokenReceptor::Init() { - if (ready_) { - ACCESSTOKEN_LOG_ERROR(LABEL, "native token has been inited."); - return RET_SUCCESS; - } - std::string nativeRawData; int ret = ReadCfgFile(nativeRawData); if (ret != RET_SUCCESS) { @@ -216,7 +211,6 @@ int NativeTokenReceptor::Init() } AccessTokenInfoManager::GetInstance().ProcessNativeTokenInfos(tokenInfos); - ready_ = true; ACCESSTOKEN_LOG_INFO(LABEL, "init ok."); return RET_SUCCESS; }