From f56e8a778425cc66d0d1fe31bd018b5342e48a19 Mon Sep 17 00:00:00 2001 From: wlh2624_DS <1968860844@qq.com> Date: Sat, 23 May 2026 18:51:20 +0800 Subject: [PATCH] new cross user embeddedUI Co-Authored-By: Agent Signed-off-by: wlh2624_DS <1968860844@qq.com> --- .../ui_extension_record_factory.h | 5 + .../extension_record_factory.cpp | 22 ---- .../ui_extension_record_factory.cpp | 112 +++++++++++++++++- .../common/include/permission_constants.h | 1 + .../common/include/permission_verification.h | 1 + .../common/src/permission_verification.cpp | 10 ++ .../extensionrecordmanager_fuzzer/BUILD.gn | 2 + .../extensionrecordmanagera_fuzzer/BUILD.gn | 2 + .../extensionrecordmanagerb_fuzzer/BUILD.gn | 2 + .../extensionrecordmanagerc_fuzzer/BUILD.gn | 2 + .../uiextensionrecordfactory_fuzzer/BUILD.gn | 2 + .../mock/src/mock_permission_verification.cpp | 5 + .../mock/src/mock_permission_verification.cpp | 5 + .../BUILD.gn | 1 + .../include/mock_permission_verification.h | 3 +- .../mock/src/mock_permission_verification.cpp | 4 + .../extension_record_manager_test/BUILD.gn | 2 + .../ui_extension_record_factory_test/BUILD.gn | 1 + .../BUILD.gn | 1 + 19 files changed, 159 insertions(+), 24 deletions(-) diff --git a/services/abilitymgr/include/ui_extension_record/ui_extension_record_factory.h b/services/abilitymgr/include/ui_extension_record/ui_extension_record_factory.h index 3d3c12db9e..0aabeca5c4 100644 --- a/services/abilitymgr/include/ui_extension_record/ui_extension_record_factory.h +++ b/services/abilitymgr/include/ui_extension_record/ui_extension_record_factory.h @@ -34,6 +34,11 @@ public: private: void CreateDebugRecord( const AAFwk::AbilityRequest &abilityRequest, std::shared_ptr abilityRecord); + int32_t EmbeddedUIPreCheck(const AAFwk::AbilityRequest &abilityRequest, const std::string &hostBundleName); + bool CheckAllowCrossUserEmbeddedUI(const AAFwk::AbilityRequest &abilityRequest, const std::string &hostBundleName); + int32_t CheckHostBundleName(const AAFwk::AbilityRequest &abilityRequest, const std::string &hostBundleName); + bool IsInAllowList(const std::vector &extensionInfos, + const std::string &extensionName, const std::string &callerAppIdentifier); }; } // namespace AbilityRuntime } // namespace OHOS diff --git a/services/abilitymgr/src/extension_record/extension_record_factory.cpp b/services/abilitymgr/src/extension_record/extension_record_factory.cpp index 17b2b83f7a..c9cf16f46d 100644 --- a/services/abilitymgr/src/extension_record/extension_record_factory.cpp +++ b/services/abilitymgr/src/extension_record/extension_record_factory.cpp @@ -75,29 +75,7 @@ int32_t ExtensionRecordFactory::PreCheck(const AAFwk::AbilityRequest &abilityReq if (preCheckFlag == 0) { return ERR_OK; } - if ((preCheckFlag & PRE_CHECK_FLAG_CALLED_WITHIN_THE_BUNDLE) && - hostBundleName != AbilityConfig::SCENEBOARD_BUNDLE_NAME) { - if (hostBundleName != abilityRequest.abilityInfo.applicationName) { - if (abilityRequest.isTargetPlugin && abilityRequest.hostBundleName == hostBundleName && - abilityRequest.abilityInfo.extensionAbilityType == ExtensionAbilityType::EMBEDDED_UI) { - return ERR_OK; - } - TAG_LOGW(AAFwkTag::ABILITYMGR, "not called"); - return ERR_INVALID_VALUE; - } - // There may exist preload extension, the session info is nullptr - if (abilityRequest.sessionInfo != nullptr) { - auto callerToken = abilityRequest.sessionInfo->callerToken; - auto callerAbilityRecord = AAFwk::Token::GetAbilityRecordByToken(callerToken); - CHECK_POINTER_AND_RETURN(callerAbilityRecord, ERR_INVALID_VALUE); - AppExecFwk::AbilityInfo abilityInfo = callerAbilityRecord->GetAbilityInfo(); - if (abilityInfo.type != AbilityType::PAGE) { - TAG_LOGW(AAFwkTag::ABILITYMGR, "not UIAbility"); - return ERR_INVALID_VALUE; - } - } - } if (preCheckFlag & PRE_CHECK_FLAG_MULTIPLE_PROCESSES) { if (!AppUtils::GetInstance().IsMultiProcessModel()) { TAG_LOGW(AAFwkTag::ABILITYMGR, "not multi process model"); diff --git a/services/abilitymgr/src/ui_extension_record/ui_extension_record_factory.cpp b/services/abilitymgr/src/ui_extension_record/ui_extension_record_factory.cpp index 33200d885f..d6a46a8822 100644 --- a/services/abilitymgr/src/ui_extension_record/ui_extension_record_factory.cpp +++ b/services/abilitymgr/src/ui_extension_record/ui_extension_record_factory.cpp @@ -18,6 +18,8 @@ #include "hilog_tag_wrapper.h" #include "multi_instance_utils.h" #include "ui_extension_record.h" +#include "permission_verification.h" +#include "ability_util.h" namespace OHOS { namespace AbilityRuntime { @@ -47,10 +49,118 @@ bool UIExtensionRecordFactory::NeedReuse(const AAFwk::AbilityRequest &abilityReq return true; } + +bool UIExtensionRecordFactory::IsInAllowList(const std::vector &extensionInfos, + const std::string &extensionName, const std::string &callerAppIdentifier) +{ + for (const AppExecFwk::ExtensionAbilityInfo &info : extensionInfos) { + if (info.type == AppExecFwk::ExtensionAbilityType::EMBEDDED_UI && info.name == extensionName) { + auto it = std::find_if(info.appIdentifierAllowList.begin(), + info.appIdentifierAllowList.end(), + [callerAppIdentifier](const std::string &allowAppId) { + return allowAppId == callerAppIdentifier || allowAppId == "allow_all"; + }); + return it != info.appIdentifierAllowList.end(); + } + } + return false; +} + +bool UIExtensionRecordFactory::CheckAllowCrossUserEmbeddedUI( + const AAFwk::AbilityRequest &abilityRequest, const std::string &hostBundleName) +{ + if (!AAFwk::PermissionVerification::GetInstance()->VerifySupportCrossAppEmbedForOaPermission()) { + TAG_LOGD(AAFwkTag::ABILITYMGR, "no permission to cross user embeddedUI"); + return false; + } + + auto bms = AAFwk::AbilityUtil::GetBundleManagerHelper(); + CHECK_POINTER_AND_RETURN(bms, false); + std::string callerAppIdentifier = abilityRequest.want.GetStringParam(AAFwk::Want::PARAM_RESV_CALLER_APP_IDENTIFIER); + if (callerAppIdentifier.empty()) { + AppExecFwk::SignatureInfo signatureInfo; + if (IN_PROCESS_CALL(bms->GetSignatureInfoByBundleName(hostBundleName, signatureInfo)) != ERR_OK) { + TAG_LOGE(AAFwkTag::ABILITYMGR, + "bms GetSignatureInfoByBundleName error, bundleName: %{public}s", + hostBundleName.c_str()); + return false; + }; + callerAppIdentifier = signatureInfo.appIdentifier; + } + AppExecFwk::BundleInfo targetBundleInfo; + std::string targetBundleName = abilityRequest.abilityInfo.bundleName; + if (!IN_PROCESS_CALL(bms->GetBundleInfo(targetBundleName, + AppExecFwk::BundleFlag::GET_BUNDLE_WITH_EXTENSION_INFO, + targetBundleInfo, + abilityRequest.userId))) { + TAG_LOGE(AAFwkTag::ABILITYMGR, "bms GetBundleInfo error, BundleFlag: GET_BUNDLE_WITH_EXTENSION_INFO"); + return false; + } + + if (IsInAllowList(targetBundleInfo.extensionInfos, abilityRequest.abilityInfo.name, callerAppIdentifier)) { + TAG_LOGI(AAFwkTag::ABILITYMGR, "allow cross user embeddedUI bundleName:%{public}s", hostBundleName.c_str()); + return true; + } + return false; +} + +int32_t UIExtensionRecordFactory::CheckHostBundleName( + const AAFwk::AbilityRequest &abilityRequest, const std::string &hostBundleName) +{ + if (hostBundleName == abilityRequest.abilityInfo.applicationName || + CheckAllowCrossUserEmbeddedUI(abilityRequest, hostBundleName) || + (abilityRequest.isTargetPlugin && abilityRequest.hostBundleName == hostBundleName)) { + return ERR_OK; + } + + TAG_LOGW(AAFwkTag::ABILITYMGR, "not called"); + return ERR_INVALID_VALUE; +} + +int32_t UIExtensionRecordFactory::EmbeddedUIPreCheck( + const AAFwk::AbilityRequest &abilityRequest, const std::string &hostBundleName) +{ + if (hostBundleName == AAFwk::AbilityConfig::SCENEBOARD_BUNDLE_NAME) { + return ERR_OK; + } + + auto result = CheckHostBundleName(abilityRequest, hostBundleName); + if (result != ERR_OK) { + TAG_LOGE(AAFwkTag::ABILITYMGR, "PreCheck error:%{public}d", result); + return result; + } + + // There may exist preload extension, the session info is nullptr + if (abilityRequest.sessionInfo != nullptr) { + auto callerToken = abilityRequest.sessionInfo->callerToken; + auto callerAbilityRecord = AAFwk::Token::GetAbilityRecordByToken(callerToken); + CHECK_POINTER_AND_RETURN(callerAbilityRecord, ERR_INVALID_VALUE); + AppExecFwk::AbilityInfo abilityInfo = callerAbilityRecord->GetAbilityInfo(); + if (abilityInfo.type != AppExecFwk::AbilityType::PAGE) { + TAG_LOGW(AAFwkTag::ABILITYMGR, "not UIAbility"); + return ERR_INVALID_VALUE; + } + } + return ERR_OK; +} + int32_t UIExtensionRecordFactory::PreCheck( const AAFwk::AbilityRequest &abilityRequest, const std::string &hostBundleName) { - return ExtensionRecordFactory::PreCheck(abilityRequest, hostBundleName); + auto result = ExtensionRecordFactory::PreCheck(abilityRequest, hostBundleName); + if (result != ERR_OK) { + TAG_LOGE(AAFwkTag::ABILITYMGR, "PreCheck error:%{public}d", result); + return result; + } + if (abilityRequest.abilityInfo.extensionAbilityType == AppExecFwk::ExtensionAbilityType::EMBEDDED_UI) { + result = EmbeddedUIPreCheck(abilityRequest, hostBundleName); + if (result != ERR_OK) { + TAG_LOGE(AAFwkTag::ABILITYMGR, "EmbeddedUIPreCheck error:%{public}d", result); + return result; + } + } + + return ERR_OK; } int32_t UIExtensionRecordFactory::CreateRecord( diff --git a/services/common/include/permission_constants.h b/services/common/include/permission_constants.h index 9b2d1a4f65..2d4ecd7d62 100644 --- a/services/common/include/permission_constants.h +++ b/services/common/include/permission_constants.h @@ -33,6 +33,7 @@ constexpr const char* PERMISSION_UPDATE_APP_CONFIGURATION = "ohos.permission.UPD constexpr const char* PERMISSION_INSTALL_BUNDLE = "ohos.permission.INSTALL_BUNDLE"; constexpr const char* PERMISSION_LISTEN_BUNDLE_CHANGE = "ohos.permission.LISTEN_BUNDLE_CHANGE"; constexpr const char* PERMISSION_GET_BUNDLE_INFO_PRIVILEGED = "ohos.permission.GET_BUNDLE_INFO_PRIVILEGED"; +constexpr const char* PERMISSION_SUPPORT_CROSS_APP_EMBED_FOR_OA = "ohos.permission.SUPPORT_CROSS_APP_EMBED_FOR_OA"; constexpr const char* PERMISSION_START_INVISIBLE_ABILITY = "ohos.permission.START_INVISIBLE_ABILITY"; constexpr const char* PERMISSION_START_ABILITIES_FROM_BACKGROUND = "ohos.permission.START_ABILITIES_FROM_BACKGROUND"; constexpr const char* PERMISSION_START_ABILIIES_FROM_BACKGROUND = "ohos.permission.START_ABILIIES_FROM_BACKGROUND"; diff --git a/services/common/include/permission_verification.h b/services/common/include/permission_verification.h index 8402226ff2..9b90e44b7c 100644 --- a/services/common/include/permission_verification.h +++ b/services/common/include/permission_verification.h @@ -133,6 +133,7 @@ struct VerificationInfo { bool VerifyCustomSandbox(uint32_t accessTokenId) const; + bool VerifySupportCrossAppEmbedForOaPermission() const; private: DISALLOW_COPY_AND_MOVE(PermissionVerification); diff --git a/services/common/src/permission_verification.cpp b/services/common/src/permission_verification.cpp index e0d645be7c..6c30ab2946 100644 --- a/services/common/src/permission_verification.cpp +++ b/services/common/src/permission_verification.cpp @@ -264,6 +264,16 @@ bool PermissionVerification::VerifyGetBundleInfoPrivilegedPermission() const return false; } +bool PermissionVerification::VerifySupportCrossAppEmbedForOaPermission() const +{ + if (VerifyCallingPermission(PermissionConstants::PERMISSION_SUPPORT_CROSS_APP_EMBED_FOR_OA)) { + TAG_LOGI(AAFwkTag::DEFAULT, + "Permission %{public}s granted", PermissionConstants::PERMISSION_SUPPORT_CROSS_APP_EMBED_FOR_OA); + return true; + } + return false; +} + bool PermissionVerification::VerifyStartRecentAbilityPermission() const { if (VerifyCallingPermission(PermissionConstants::PERMISSION_START_RECENT_ABILITY)) { diff --git a/test/fuzztest/extensionrecordmanager_fuzzer/BUILD.gn b/test/fuzztest/extensionrecordmanager_fuzzer/BUILD.gn index 834c4286e9..3db0f9d36a 100644 --- a/test/fuzztest/extensionrecordmanager_fuzzer/BUILD.gn +++ b/test/fuzztest/extensionrecordmanager_fuzzer/BUILD.gn @@ -69,11 +69,13 @@ ohos_fuzztest("ExtensionRecordManagerFuzzTest") { "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/ability_manager:ability_start_options", "${ability_runtime_native_path}/ability/native:abilitykit_native", + "${ability_runtime_native_path}/appkit:appkit_manager_helper", "${ability_runtime_path}/utils/global/common:runtime_utils", "${ability_runtime_path}/utils/server/startup:startup_util", "${ability_runtime_services_path}/abilitymgr:abilityms", "${ability_runtime_services_path}/common:task_handler_wrap", "${ability_runtime_services_path}/common:hisysevent_report", + "${ability_runtime_services_path}/common:perm_verification", ] external_deps = [ diff --git a/test/fuzztest/extensionrecordmanagera_fuzzer/BUILD.gn b/test/fuzztest/extensionrecordmanagera_fuzzer/BUILD.gn index 77f8cfa8d7..238497cc6f 100755 --- a/test/fuzztest/extensionrecordmanagera_fuzzer/BUILD.gn +++ b/test/fuzztest/extensionrecordmanagera_fuzzer/BUILD.gn @@ -68,11 +68,13 @@ ohos_fuzztest("ExtensionRecordManageraFuzzTest") { "${ability_runtime_innerkits_path}/ability_manager:ability_start_options", "${ability_runtime_innerkits_path}/deps_wrapper:ability_deps_wrapper", "${ability_runtime_native_path}/ability/native:abilitykit_native", + "${ability_runtime_native_path}/appkit:appkit_manager_helper", "${ability_runtime_path}/utils/global/common:runtime_utils", "${ability_runtime_path}/utils/server/startup:startup_util", "${ability_runtime_services_path}/abilitymgr:abilityms", "${ability_runtime_services_path}/common:task_handler_wrap", "${ability_runtime_services_path}/common:hisysevent_report", + "${ability_runtime_services_path}/common:perm_verification", ] external_deps = [ diff --git a/test/fuzztest/extensionrecordmanagerb_fuzzer/BUILD.gn b/test/fuzztest/extensionrecordmanagerb_fuzzer/BUILD.gn index 450f336a29..a543443523 100755 --- a/test/fuzztest/extensionrecordmanagerb_fuzzer/BUILD.gn +++ b/test/fuzztest/extensionrecordmanagerb_fuzzer/BUILD.gn @@ -71,11 +71,13 @@ ohos_fuzztest("ExtensionRecordManagerbFuzzTest") { "${ability_runtime_innerkits_path}/ability_manager:ability_start_options", "${ability_runtime_innerkits_path}/deps_wrapper:ability_deps_wrapper", "${ability_runtime_native_path}/ability/native:abilitykit_native", + "${ability_runtime_native_path}/appkit:appkit_manager_helper", "${ability_runtime_path}/utils/global/common:runtime_utils", "${ability_runtime_path}/utils/server/startup:startup_util", "${ability_runtime_services_path}/abilitymgr:abilityms", "${ability_runtime_services_path}/common:task_handler_wrap", "${ability_runtime_services_path}/common:hisysevent_report", + "${ability_runtime_services_path}/common:perm_verification", ] external_deps = [ diff --git a/test/fuzztest/extensionrecordmanagerc_fuzzer/BUILD.gn b/test/fuzztest/extensionrecordmanagerc_fuzzer/BUILD.gn index 97859469d8..a31f1cecb0 100755 --- a/test/fuzztest/extensionrecordmanagerc_fuzzer/BUILD.gn +++ b/test/fuzztest/extensionrecordmanagerc_fuzzer/BUILD.gn @@ -71,11 +71,13 @@ ohos_fuzztest("ExtensionRecordManagercFuzzTest") { "${ability_runtime_innerkits_path}/ability_manager:ability_start_options", "${ability_runtime_innerkits_path}/deps_wrapper:ability_deps_wrapper", "${ability_runtime_native_path}/ability/native:abilitykit_native", + "${ability_runtime_native_path}/appkit:appkit_manager_helper", "${ability_runtime_path}/utils/global/common:runtime_utils", "${ability_runtime_path}/utils/server/startup:startup_util", "${ability_runtime_services_path}/abilitymgr:abilityms", "${ability_runtime_services_path}/common:task_handler_wrap", "${ability_runtime_services_path}/common:hisysevent_report", + "${ability_runtime_services_path}/common:perm_verification", ] external_deps = [ diff --git a/test/fuzztest/uiextensionrecordfactory_fuzzer/BUILD.gn b/test/fuzztest/uiextensionrecordfactory_fuzzer/BUILD.gn index 30db906fad..484b61b2e0 100644 --- a/test/fuzztest/uiextensionrecordfactory_fuzzer/BUILD.gn +++ b/test/fuzztest/uiextensionrecordfactory_fuzzer/BUILD.gn @@ -53,7 +53,9 @@ ohos_fuzztest("UIExtensionRecordFactoryFuzzTest") { "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/ability_manager:ability_start_options", "${ability_runtime_native_path}/ability/native:abilitykit_native", + "${ability_runtime_native_path}/appkit:appkit_manager_helper", "${ability_runtime_services_path}/abilitymgr:abilityms", + "${ability_runtime_services_path}/common:perm_verification", ] external_deps = [ diff --git a/test/unittest/ability_manager_service_first_test/mock/src/mock_permission_verification.cpp b/test/unittest/ability_manager_service_first_test/mock/src/mock_permission_verification.cpp index c4fa41dbe4..8fca54bba4 100644 --- a/test/unittest/ability_manager_service_first_test/mock/src/mock_permission_verification.cpp +++ b/test/unittest/ability_manager_service_first_test/mock/src/mock_permission_verification.cpp @@ -312,5 +312,10 @@ int PermissionVerification::CheckCallModularObjectExtensionPermission( { return ERR_OK; } + +bool PermissionVerification::VerifySupportCrossAppEmbedForOaPermission() const +{ + return true; +} } // namespace AAFwk } // namespace OHOS \ No newline at end of file diff --git a/test/unittest/ability_manager_service_sixth_test/mock/src/mock_permission_verification.cpp b/test/unittest/ability_manager_service_sixth_test/mock/src/mock_permission_verification.cpp index de2866e315..b365359d12 100644 --- a/test/unittest/ability_manager_service_sixth_test/mock/src/mock_permission_verification.cpp +++ b/test/unittest/ability_manager_service_sixth_test/mock/src/mock_permission_verification.cpp @@ -313,5 +313,10 @@ int PermissionVerification::CheckCallModularObjectExtensionPermission( { return ERR_OK; } + +bool PermissionVerification::VerifySupportCrossAppEmbedForOaPermission() const +{ + return true; +} } // namespace AAFwk } // namespace OHOS \ No newline at end of file diff --git a/test/unittest/ui_extension/extension_record_manager_second_test/BUILD.gn b/test/unittest/ui_extension/extension_record_manager_second_test/BUILD.gn index 1973e5c704..a0ff372643 100644 --- a/test/unittest/ui_extension/extension_record_manager_second_test/BUILD.gn +++ b/test/unittest/ui_extension/extension_record_manager_second_test/BUILD.gn @@ -77,6 +77,7 @@ ohos_unittest("extension_record_manager_second_test") { "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/ability_manager:ability_start_options", "${ability_runtime_native_path}/ability/native:abilitykit_native", + "${ability_runtime_native_path}/appkit:appkit_manager_helper", "${ability_runtime_path}/utils/global/common:runtime_utils", "${ability_runtime_path}/utils/server/startup:startup_util", "${ability_runtime_services_path}/abilitymgr:abilityms", diff --git a/test/unittest/ui_extension/extension_record_manager_second_test/mock/include/mock_permission_verification.h b/test/unittest/ui_extension/extension_record_manager_second_test/mock/include/mock_permission_verification.h index 59bf31adf5..e21005669c 100644 --- a/test/unittest/ui_extension/extension_record_manager_second_test/mock/include/mock_permission_verification.h +++ b/test/unittest/ui_extension/extension_record_manager_second_test/mock/include/mock_permission_verification.h @@ -93,7 +93,8 @@ public: bool JudgeCallerIsAllowedToUseSystemAPI() const; bool JudgeCallerIsAllowedToUseSystemAPIByTokenId(uint64_t specifiedFullTokenId) const; bool IsSystemAppCall() const; + bool VerifySupportCrossAppEmbedForOaPermission() const; }; } // namespace AAFwk } // namespace OHOS -#endif // OHOS_ABILITY_RUNTIME_PERMISSION_VERIFICATION_H \ No newline at end of file +#endif // OHOS_ABILITY_RUNTIME_PERMISSION_VERIFICATION_H diff --git a/test/unittest/ui_extension/extension_record_manager_second_test/mock/src/mock_permission_verification.cpp b/test/unittest/ui_extension/extension_record_manager_second_test/mock/src/mock_permission_verification.cpp index a4cdcad419..5298201b16 100644 --- a/test/unittest/ui_extension/extension_record_manager_second_test/mock/src/mock_permission_verification.cpp +++ b/test/unittest/ui_extension/extension_record_manager_second_test/mock/src/mock_permission_verification.cpp @@ -124,5 +124,9 @@ bool PermissionVerification::IsSystemAppCall() const { return true; } +bool PermissionVerification::VerifySupportCrossAppEmbedForOaPermission() const +{ + return true; +} } // namespace AAFwk } // namespace OHOS diff --git a/test/unittest/ui_extension/extension_record_manager_test/BUILD.gn b/test/unittest/ui_extension/extension_record_manager_test/BUILD.gn index ff172ab2b6..c4f1ff359d 100755 --- a/test/unittest/ui_extension/extension_record_manager_test/BUILD.gn +++ b/test/unittest/ui_extension/extension_record_manager_test/BUILD.gn @@ -67,9 +67,11 @@ ohos_unittest("extension_record_manager_test") { "${ability_runtime_innerkits_path}/ability_manager:ability_manager", "${ability_runtime_innerkits_path}/ability_manager:ability_start_options", "${ability_runtime_native_path}/ability/native:abilitykit_native", + "${ability_runtime_native_path}/appkit:appkit_manager_helper", "${ability_runtime_path}/utils/global/common:runtime_utils", "${ability_runtime_path}/utils/server/startup:startup_util", "${ability_runtime_services_path}/abilitymgr:abilityms", + "${ability_runtime_services_path}/common:perm_verification", ] external_deps = [ diff --git a/test/unittest/ui_extension_record_factory_test/BUILD.gn b/test/unittest/ui_extension_record_factory_test/BUILD.gn index 4c218ea291..f1377ac8c5 100644 --- a/test/unittest/ui_extension_record_factory_test/BUILD.gn +++ b/test/unittest/ui_extension_record_factory_test/BUILD.gn @@ -65,6 +65,7 @@ ohos_unittest("ui_extension_record_factory_test") { "${ability_runtime_native_path}/ability/native:auto_startup_callback", "${ability_runtime_native_path}/ability/native:ui_extension", "${ability_runtime_native_path}/appkit:app_context", + "${ability_runtime_native_path}/appkit:appkit_manager_helper", "${ability_runtime_native_path}/appkit:appkit_native", "${ability_runtime_services_path}/abilitymgr:abilityms", "${ability_runtime_services_path}/abilitymgr:mission_list", diff --git a/test/unittest/window_focus_changed_listener_test/BUILD.gn b/test/unittest/window_focus_changed_listener_test/BUILD.gn index b576b188cd..a0116a7656 100644 --- a/test/unittest/window_focus_changed_listener_test/BUILD.gn +++ b/test/unittest/window_focus_changed_listener_test/BUILD.gn @@ -67,6 +67,7 @@ ohos_unittest("window_focus_changed_listener_test") { "${ability_runtime_native_path}/ability/native:auto_startup_callback", "${ability_runtime_native_path}/ability/native:ui_extension", "${ability_runtime_native_path}/appkit:app_context", + "${ability_runtime_native_path}/appkit:appkit_manager_helper", "${ability_runtime_native_path}/appkit:appkit_native", "${ability_runtime_services_path}/abilitymgr:abilityms", "${ability_runtime_services_path}/abilitymgr:mission_list",