diff --git a/ability_base/frameworks/native/want/src/element_name.cpp b/ability_base/frameworks/native/want/src/element_name.cpp index 584cc7091260912394dc22af847aa7bdba778ae2..cae5e7942f0a29cd9de8c73a736cef6a6893d5dd 100644 --- a/ability_base/frameworks/native/want/src/element_name.cpp +++ b/ability_base/frameworks/native/want/src/element_name.cpp @@ -80,11 +80,6 @@ ElementName::~ElementName() } std::string ElementName::GetURI() const -{ - return deviceId_ + "/" + bundleName_ + "/" + abilityName_; -} - -std::string ElementName::GetElementNameURI() const { return deviceId_ + "/" + bundleName_ + "/" + moduleName_ + "/" + abilityName_; } diff --git a/ability_base/interfaces/inner_api/want/include/element_name.h b/ability_base/interfaces/inner_api/want/include/element_name.h index 0c1912c62876b45399ce83612aa5a345c57785ee..387bee70afd2bfba68df99bc3fe2a4aa3b8e7fe3 100644 --- a/ability_base/interfaces/inner_api/want/include/element_name.h +++ b/ability_base/interfaces/inner_api/want/include/element_name.h @@ -33,7 +33,6 @@ public: ~ElementName(); std::string GetURI() const; - std::string GetElementNameURI() const; bool operator==(const ElementName &element) const; diff --git a/form_runtime/services/src/form_acquire_connection.cpp b/form_runtime/services/src/form_acquire_connection.cpp index 58788db94aaee69bb0dc043e7930cacb23a16a2f..f7b86c36010fd7f53789803c9c86730bc18253f3 100644 --- a/form_runtime/services/src/form_acquire_connection.cpp +++ b/form_runtime/services/src/form_acquire_connection.cpp @@ -65,7 +65,8 @@ void FormAcquireConnection::OnAbilityConnectDone( want.SetParam(Constants::ACQUIRE_TYPE, Constants::ACQUIRE_TYPE_CREATE_FORM); } want.SetParam(Constants::FORM_CONNECT_ID, this->GetConnectId()); - want.SetElementName(info_.GetDeviceId(), info_.GetProviderBundleName(), info_.GetAbilityName()); + want.SetElementName(info_.GetDeviceId(), info_.GetProviderBundleName(), + info_.GetAbilityName(), info_.GetModuleName()); HILOG_INFO("%{public}s , deviceId: %{public}s, bundleName: %{public}s, abilityName: %{public}s.", __func__, info_.GetDeviceId().c_str(), info_.GetProviderBundleName().c_str(), info_.GetAbilityName().c_str()); diff --git a/frameworks/kits/ability/ability_runtime/include/connection_manager.h b/frameworks/kits/ability/ability_runtime/include/connection_manager.h index cd7e8e0ac50f46ebc1ae4b74d6e236f29ebee2d9..2dc67352f586eda8393336f6f48800466853667d 100644 --- a/frameworks/kits/ability/ability_runtime/include/connection_manager.h +++ b/frameworks/kits/ability/ability_runtime/include/connection_manager.h @@ -51,10 +51,15 @@ struct ConnectionInfo { } if (connectCaller == that.connectCaller && connectReceiver.GetBundleName() == that.connectReceiver.GetBundleName() && - connectReceiver.GetAbilityName() < that.connectReceiver.GetAbilityName()) { + connectReceiver.GetModuleName() < that.connectReceiver.GetModuleName()) { + return true; + } + if (connectCaller == that.connectCaller && + connectReceiver.GetBundleName() == that.connectReceiver.GetBundleName() && + connectReceiver.GetModuleName() == that.connectReceiver.GetModuleName() && + connectReceiver.GetAbilityName() == that.connectReceiver.GetAbilityName()) { return true; } - return false; } }; diff --git a/frameworks/kits/ability/ability_runtime/src/connection_manager.cpp b/frameworks/kits/ability/ability_runtime/src/connection_manager.cpp index a0b5fb5b373def30c9e89bc123c73a459086d031..69dcbaa938a3fbe75dbb501a501d050fc8291d8a 100644 --- a/frameworks/kits/ability/ability_runtime/src/connection_manager.cpp +++ b/frameworks/kits/ability/ability_runtime/src/connection_manager.cpp @@ -60,7 +60,8 @@ ErrCode ConnectionManager::ConnectAbilityInner(const sptr &connec std::vector>>::value_type &obj) { return connectCaller == obj.first.connectCaller && connectReceiver.GetBundleName() == obj.first.connectReceiver.GetBundleName() && - connectReceiver.GetAbilityName() == obj.first.connectReceiver.GetAbilityName(); + connectReceiver.GetAbilityName() == obj.first.connectReceiver.GetAbilityName() && + connectReceiver.GetModuleName() == obj.first.connectReceiver.GetModuleName(); }); if (item != abilityConnections_.end()) { std::vector> callbacks = item->second; @@ -109,7 +110,8 @@ ErrCode ConnectionManager::DisconnectAbility(const sptr &connectC const std::map>>::value_type &obj) { return connectCaller == obj.first.connectCaller && connectReceiver.GetBundleName() == obj.first.connectReceiver.GetBundleName() && - connectReceiver.GetAbilityName() == obj.first.connectReceiver.GetAbilityName(); + connectReceiver.GetAbilityName() == obj.first.connectReceiver.GetAbilityName() && + connectReceiver.GetModuleName() == obj.first.connectReceiver.GetModuleName(); }); if (item != abilityConnections_.end()) { std::vector> callbacks = item->second; @@ -228,7 +230,8 @@ bool ConnectionManager::IsConnectReceiverEqual(const AppExecFwk::ElementName &co const AppExecFwk::ElementName &connectReceiverOther) { return connectReceiver.GetBundleName() == connectReceiverOther.GetBundleName() && - connectReceiver.GetAbilityName() == connectReceiverOther.GetAbilityName(); + connectReceiver.GetAbilityName() == connectReceiverOther.GetAbilityName() && + connectReceiver.GetModuleName() == connectReceiverOther.GetModuleName(); } ErrCode ConnectionManager::HandleCallbackTimeOut(const sptr &connectCaller, const AAFwk::Want &want, diff --git a/frameworks/kits/ability/native/include/ability_context.h b/frameworks/kits/ability/native/include/ability_context.h index b48d0669525cd378fb5f7c42e1cf75044b743257..56a60aa6d2bf8622d8ec7cd0ed6c8242aedf0f27 100644 --- a/frameworks/kits/ability/native/include/ability_context.h +++ b/frameworks/kits/ability/native/include/ability_context.h @@ -442,7 +442,8 @@ public: * * @param abilityName abilityName of the calling ability */ - void SetCallingContext(const std::string &deviceId, const std::string &bundleName, const std::string &abilityName); + void SetCallingContext(const std::string &deviceId, const std::string &bundleName, + const std::string &abilityName, const std::string &moduleName = ""); /** * @brief Obtains information about the caller of this ability. @@ -587,6 +588,7 @@ protected: std::string callingDeviceId_; std::string callingBundleName_; std::string callingAbilityName_; + std::string callingModuleName_; std::map, sptr> abilityConnectionMap_; private: diff --git a/frameworks/kits/ability/native/include/ability_impl.h b/frameworks/kits/ability/native/include/ability_impl.h index ba6a91159f7f3231e11967b13142b3579f83a9a4..25203ae02810e06a9399d26fab59c5ba7f9020d2 100644 --- a/frameworks/kits/ability/native/include/ability_impl.h +++ b/frameworks/kits/ability/native/include/ability_impl.h @@ -248,7 +248,8 @@ public: * * @param deviceId abilityName of the calling ability */ - void SetCallingContext(const std::string &deviceId, const std::string &bundleName, const std::string &abilityName); + void SetCallingContext(const std::string &deviceId, const std::string &bundleName, + const std::string &abilityName, const std::string &moduleName); /** * @brief Converts the given uri that refer to the Data ability into a normalized URI. A normalized URI can be used diff --git a/frameworks/kits/ability/native/src/ability_context.cpp b/frameworks/kits/ability/native/src/ability_context.cpp index 89f5c50618eb01cdfd2426bf0603c7bca4617923..068fc72ba3e499514df85087dd002d7689abfb04 100644 --- a/frameworks/kits/ability/native/src/ability_context.cpp +++ b/frameworks/kits/ability/native/src/ability_context.cpp @@ -145,6 +145,7 @@ std::shared_ptr AbilityContext::GetElementName() elementName->SetAbilityName(info->name); elementName->SetBundleName(info->bundleName); elementName->SetDeviceID(info->deviceId); + elementName->SetModuleName(info->moduleName); HILOG_INFO("%{public}s end.", __func__); return elementName; } @@ -161,6 +162,7 @@ std::shared_ptr AbilityContext::GetCallingAbility() elementName->SetAbilityName(callingAbilityName_); elementName->SetBundleName(callingBundleName_); elementName->SetDeviceID(callingDeviceId_); + elementName->SetModuleName(callingModuleName_); HILOG_INFO("%{public}s end.", __func__); return elementName; } @@ -439,12 +441,13 @@ bool AbilityContext::DeleteFile(const std::string &fileName) return ContextContainer::DeleteFile(fileName); } -void AbilityContext::SetCallingContext( - const std::string &deviceId, const std::string &bundleName, const std::string &abilityName) +void AbilityContext::SetCallingContext(const std::string &deviceId, const std::string &bundleName, + const std::string &abilityName, const std::string &moduleName) { callingDeviceId_ = deviceId; callingBundleName_ = bundleName; callingAbilityName_ = abilityName; + callingModuleName_ = moduleName; } Uri AbilityContext::GetCaller() diff --git a/frameworks/kits/ability/native/src/ability_impl.cpp b/frameworks/kits/ability/native/src/ability_impl.cpp index a881cb3b285e7683d2734aaa0033ef1f0dab448e..c1730a7e56143194afd423205f97014ff27f6417 100644 --- a/frameworks/kits/ability/native/src/ability_impl.cpp +++ b/frameworks/kits/ability/native/src/ability_impl.cpp @@ -605,11 +605,11 @@ PacMap &AbilityImpl::GetRestoreData() * * @param deviceId abilityName of the calling ability */ -void AbilityImpl::SetCallingContext( - const std::string &deviceId, const std::string &bundleName, const std::string &abilityName) +void AbilityImpl::SetCallingContext(const std::string &deviceId, const std::string &bundleName, + const std::string &abilityName, const std::string &moduleName) { if (ability_ != nullptr) { - ability_->SetCallingContext(deviceId, bundleName, abilityName); + ability_->SetCallingContext(deviceId, bundleName, abilityName, moduleName); } } diff --git a/frameworks/kits/ability/native/src/ability_runtime/js_ability_context.cpp b/frameworks/kits/ability/native/src/ability_runtime/js_ability_context.cpp index 1889ed662210eabba5ebfeda7a64a6de181b32f7..1a696f9472f78ed4fec6a688c458f0ec74d7a35b 100644 --- a/frameworks/kits/ability/native/src/ability_runtime/js_ability_context.cpp +++ b/frameworks/kits/ability/native/src/ability_runtime/js_ability_context.cpp @@ -1246,11 +1246,13 @@ void JSAbilityConnection::HandleOnAbilityDisconnectDone(const AppExecFwk::Elemen HILOG_INFO("OnAbilityDisconnectDone abilityConnects_.size:%{public}zu", abilityConnects_.size()); std::string bundleName = element.GetBundleName(); std::string abilityName = element.GetAbilityName(); + std::string moduleName = element.GetModuleName(); auto item = std::find_if(abilityConnects_.begin(), abilityConnects_.end(), - [bundleName, abilityName] ( + [bundleName, abilityName, moduleName] ( const std::map>::value_type &obj) { return (bundleName == obj.first.want.GetBundle()) && - (abilityName == obj.first.want.GetElement().GetAbilityName()); + (abilityName == obj.first.want.GetElement().GetAbilityName()) && + (moduleName == obj.first.want.GetElement().GetModuleName()); }); if (item != abilityConnects_.end()) { // match bundlename && abilityname diff --git a/frameworks/kits/ability/native/src/ability_thread.cpp b/frameworks/kits/ability/native/src/ability_thread.cpp index e185681f669570b88bf07b029c79c62c6e7a3d33..1a2b1ed83b92984cbb44246293316407250ea175 100644 --- a/frameworks/kits/ability/native/src/ability_thread.cpp +++ b/frameworks/kits/ability/native/src/ability_thread.cpp @@ -446,7 +446,8 @@ void AbilityThread::HandleAbilityTransaction(const Want &want, const LifeCycleSt abilityImpl_->SetCallingContext(lifeCycleStateInfo.caller.deviceId, lifeCycleStateInfo.caller.bundleName, - lifeCycleStateInfo.caller.abilityName); + lifeCycleStateInfo.caller.abilityName, + lifeCycleStateInfo.caller.moduleName); abilityImpl_->HandleAbilityTransaction(want, lifeCycleStateInfo); HILOG_INFO("Handle ability transaction end."); } diff --git a/frameworks/kits/ability/native/src/continuation/distributed/continuation_handler.cpp b/frameworks/kits/ability/native/src/continuation/distributed/continuation_handler.cpp index ff37a81ca01838ec41caf80ea305dc5954f1597b..8c327893cbe0dca2a9c3a6fdd051fb06c95616e6 100644 --- a/frameworks/kits/ability/native/src/continuation/distributed/continuation_handler.cpp +++ b/frameworks/kits/ability/native/src/continuation/distributed/continuation_handler.cpp @@ -67,7 +67,7 @@ bool ContinuationHandler::HandleStartContinuationWithStack(const sptrbundleName, abilityInfo_->name); + want.SetElementName(deviceId, abilityInfo_->bundleName, abilityInfo_->name, abilityInfo_->moduleName); int result = AAFwk::AbilityManagerClient::GetInstance()->StartContinuation(want, token, status); if (result != ERR_OK) { @@ -118,7 +118,7 @@ bool ContinuationHandler::HandleStartContinuation(const sptr &tok } Want want = SetWantParams(wantParams); - want.SetElementName(deviceId, abilityInfo_->bundleName, abilityInfo_->name); + want.SetElementName(deviceId, abilityInfo_->bundleName, abilityInfo_->name, abilityInfo_->moduleName); int result = AAFwk::AbilityManagerClient::GetInstance()->StartContinuation(want, token, 0); if (result != 0) { @@ -260,7 +260,7 @@ Want ContinuationHandler::SetWantParams(const WantParams &wantParams) HILOG_INFO("SetWantParams: Reversible."); want.AddFlags(Want::FLAG_ABILITY_CONTINUATION_REVERSIBLE); } - ElementName element("", abilityInfo_->bundleName, abilityInfo_->name); + ElementName element("", abilityInfo_->bundleName, abilityInfo_->name, abilityInfo_->moduleName); want.SetElement(element); HILOG_INFO("%{public}s called end", __func__); return want; diff --git a/frameworks/kits/ability/native/src/js_service_extension_context.cpp b/frameworks/kits/ability/native/src/js_service_extension_context.cpp index 1085ba61e577d27dad64a513047bfdf088a2d28b..d05f76ca9d0ccd20f4d60faaae98a6aff1efd600 100644 --- a/frameworks/kits/ability/native/src/js_service_extension_context.cpp +++ b/frameworks/kits/ability/native/src/js_service_extension_context.cpp @@ -825,12 +825,14 @@ void JSServiceExtensionConnection::HandleOnAbilityDisconnectDone(const AppExecFw HILOG_INFO("OnAbilityDisconnectDone connects_.size:%{public}zu", connects_.size()); std::string bundleName = element.GetBundleName(); std::string abilityName = element.GetAbilityName(); + std::string moduleName = element.GetModuleName(); auto item = std::find_if(connects_.begin(), connects_.end(), - [bundleName, abilityName]( + [bundleName, abilityName, moduleName]( const std::map>::value_type &obj) { return (bundleName == obj.first.want.GetBundle()) && - (abilityName == obj.first.want.GetElement().GetAbilityName()); + (abilityName == obj.first.want.GetElement().GetAbilityName()) && + (moduleName == obj.first.want.GetElement().GetModuleName()); }); if (item != connects_.end()) { // match bundlename && abilityname diff --git a/frameworks/kits/ability/native/test/unittest/ability_context_test.cpp b/frameworks/kits/ability/native/test/unittest/ability_context_test.cpp index 3708ebb5097a5211b074ae7d518e94d6d386d905..39efa80b8ca2d561c370ae1a6acfa9037a8dd039 100644 --- a/frameworks/kits/ability/native/test/unittest/ability_context_test.cpp +++ b/frameworks/kits/ability/native/test/unittest/ability_context_test.cpp @@ -130,7 +130,7 @@ HWTEST_F(AbilityContextTest, AaFwk_AbilityContext_GetCallingAbility_0100, Functi ability->Init(abilityInfo, nullptr, handler, nullptr); ability->StartAbilityForResult(want, -1); - ability->SetCallingContext("", "", std::string("App.System.Test.AbilityName_0127")); + ability->SetCallingContext("", "", std::string("App.System.Test.AbilityName_0127"), ""); std::shared_ptr elementNameTest = ability->GetCallingAbility(); std::string abilityName; if (elementNameTest != nullptr) { @@ -455,7 +455,7 @@ HWTEST_F(AbilityContextTest, AaFwk_AbilityContext_GetCallingBundle_0200, Functio std::shared_ptr ability = std::make_shared(); ability->Init(abilityInfo, nullptr, handler, nullptr); ability->StartAbilityForResult(want, -1); - ability->SetCallingContext("", "BundleName", ""); + ability->SetCallingContext("", "BundleName", "", ""); EXPECT_STREQ(bundleName.c_str(), ability->GetCallingBundle().c_str()); } diff --git a/frameworks/kits/appkit/native/app/src/context_deal.cpp b/frameworks/kits/appkit/native/app/src/context_deal.cpp index 967062878914ec3c70dfc5376aaaed304a6a5660..8a815ae0999baf90726109aabcd69c61eea86b3b 100644 --- a/frameworks/kits/appkit/native/app/src/context_deal.cpp +++ b/frameworks/kits/appkit/native/app/src/context_deal.cpp @@ -717,6 +717,7 @@ std::shared_ptr ContextDeal::GetHapModuleInfo() ElementName name; name.SetBundleName(GetBundleName()); name.SetAbilityName(abilityInfo_->name); + name.SetModuleName(abilityInfo_->moduleName); want.SetElement(name); std::vector abilityInfos; bool isSuc = ptr->QueryAbilityInfos(want, abilityInfos); diff --git a/interfaces/innerkits/ability_manager/include/caller_info.h b/interfaces/innerkits/ability_manager/include/caller_info.h index f877b3c94a7a8ae15c624b619c2eb5b4964c0244..b165326012f1f6ecc1101ae23646aa850f98ae5d 100644 --- a/interfaces/innerkits/ability_manager/include/caller_info.h +++ b/interfaces/innerkits/ability_manager/include/caller_info.h @@ -31,6 +31,7 @@ struct CallerInfo : public Parcelable { std::string deviceId; std::string bundleName; std::string abilityName; + std::string moduleName; bool ReadFromParcel(Parcel &parcel); virtual bool Marshalling(Parcel &parcel) const override; diff --git a/interfaces/kits/napi/aafwk/feature_ability/js_feature_ability.cpp b/interfaces/kits/napi/aafwk/feature_ability/js_feature_ability.cpp index 49941a37b7f0b30b0f248dff5367086c45c78363..12d9a67c702d3d002510d25a13159f94c9fb5830 100644 --- a/interfaces/kits/napi/aafwk/feature_ability/js_feature_ability.cpp +++ b/interfaces/kits/napi/aafwk/feature_ability/js_feature_ability.cpp @@ -362,7 +362,7 @@ Want JsFeatureAbility::GetWant(DistributeReqParam &requestParam) if (!requestParam.GetBundleName().empty() && !requestParam.GetAbilityName().empty()) { want.SetElementName(requestParam.GetNetworkId(), requestParam.GetBundleName(), - requestParam.GetAbilityName()); + requestParam.GetAbilityName(), requestParam.GetModuleName()); } else { want.SetAction(requestParam.GetAction()); for (auto entity : requestParam.GetEntities()) { diff --git a/services/abilitymgr/include/ability_util.h b/services/abilitymgr/include/ability_util.h index 12cc9d80d971c12710f5838d8da6289e3c047bc6..bae48ab909e88dfc11b4b8d811138877719d6b8a 100644 --- a/services/abilitymgr/include/ability_util.h +++ b/services/abilitymgr/include/ability_util.h @@ -108,10 +108,12 @@ static constexpr unsigned int CHANGE_CONFIG_DENSITY = 0x00000010; return false; } -[[maybe_unused]] static std::string ConvertBundleNameSingleton(const std::string &bundleName, const std::string &name) +[[maybe_unused]] static std::string ConvertBundleNameSingleton(const std::string &bundleName, const std::string &name, + const std::string &moduleName) { - std::string strName = - AbilityConfig::MISSION_NAME_MARK_HEAD + bundleName + AbilityConfig::MISSION_NAME_SEPARATOR + name; + std::string strName = AbilityConfig::MISSION_NAME_MARK_HEAD + bundleName + + AbilityConfig::MISSION_NAME_SEPARATOR + moduleName + + AbilityConfig::MISSION_NAME_SEPARATOR + name; return strName; } diff --git a/services/abilitymgr/src/ability_connect_manager.cpp b/services/abilitymgr/src/ability_connect_manager.cpp index fb17aa856fcb92e2135febeddcce67efa7ff60e7..79be86365722b850eed573a954136a13b57ee7cf 100644 --- a/services/abilitymgr/src/ability_connect_manager.cpp +++ b/services/abilitymgr/src/ability_connect_manager.cpp @@ -97,7 +97,8 @@ int AbilityConnectManager::TerminateAbilityResult(const sptr &tok int AbilityConnectManager::StartAbilityLocked(const AbilityRequest &abilityRequest) { HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); - HILOG_INFO("Start ability locked, ability_name: %{public}s", abilityRequest.want.GetElement().GetURI().c_str()); + HILOG_INFO("Start ability locked, ability_name: %{public}s", + abilityRequest.want.GetElement().GetURI().c_str()); std::shared_ptr targetService; bool isLoadedAbility = false; @@ -173,8 +174,8 @@ int AbilityConnectManager::StopServiceAbilityLocked(const AbilityRequest &abilit { HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); HILOG_INFO("Stop service ability locked."); - AppExecFwk::ElementName element( - abilityRequest.abilityInfo.deviceId, abilityRequest.abilityInfo.bundleName, abilityRequest.abilityInfo.name); + AppExecFwk::ElementName element(abilityRequest.abilityInfo.deviceId, abilityRequest.abilityInfo.bundleName, + abilityRequest.abilityInfo.name, abilityRequest.abilityInfo.moduleName); auto abilityRecord = GetServiceRecordByElementName(element.GetURI()); CHECK_POINTER_AND_RETURN(abilityRecord, ERR_INVALID_VALUE); @@ -202,8 +203,8 @@ void AbilityConnectManager::GetOrCreateServiceRecord(const AbilityRequest &abili const bool isCreatedByConnect, std::shared_ptr &targetService, bool &isLoadedAbility) { HITRACE_METER_NAME(HITRACE_TAG_ABILITY_MANAGER, __PRETTY_FUNCTION__); - AppExecFwk::ElementName element( - abilityRequest.abilityInfo.deviceId, abilityRequest.abilityInfo.bundleName, abilityRequest.abilityInfo.name); + AppExecFwk::ElementName element(abilityRequest.abilityInfo.deviceId, abilityRequest.abilityInfo.bundleName, + abilityRequest.abilityInfo.name, abilityRequest.abilityInfo.moduleName); auto serviceMapIter = serviceMap_.find(element.GetURI()); if (serviceMapIter == serviceMap_.end()) { targetService = AbilityRecord::CreateAbilityRecord(abilityRequest); diff --git a/services/abilitymgr/src/ability_manager_service.cpp b/services/abilitymgr/src/ability_manager_service.cpp index 0155f80a33a299d1cf2bbee006e32c0299e0784c..6d2c3044c3592409d753809d5c31fb65d25de601 100644 --- a/services/abilitymgr/src/ability_manager_service.cpp +++ b/services/abilitymgr/src/ability_manager_service.cpp @@ -2489,6 +2489,9 @@ int AbilityManagerService::GenerateAbilityRequest( HILOG_DEBUG("GenerateAbilityRequest end, app name: %{public}s, bundle name: %{public}s, uid: %{public}d.", request.appInfo.name.c_str(), request.appInfo.bundleName.c_str(), request.uid); + HILOG_INFO("GenerateAbilityRequest, moduleName: %{public}s.", request.abilityInfo.moduleName.c_str()); + request.want.SetModuleName(request.abilityInfo.moduleName); + return ERR_OK; } @@ -2536,6 +2539,9 @@ int AbilityManagerService::GenerateExtensionAbilityRequest( HILOG_DEBUG("GenerateAbilityRequest end, app name: %{public}s, bundle name: %{public}s, uid: %{public}d.", request.appInfo.name.c_str(), request.appInfo.bundleName.c_str(), request.uid); + HILOG_INFO("GenerateExtensionAbilityRequest, moduleName: %{public}s.", request.abilityInfo.moduleName.c_str()); + request.want.SetModuleName(request.abilityInfo.moduleName); + return ERR_OK; } diff --git a/services/abilitymgr/src/call_record.cpp b/services/abilitymgr/src/call_record.cpp index 9c880f270e257e37464d4646926bec78af26d42c..7de7a9e16d5516a98d00a9a4420eb7edce4f5a58 100644 --- a/services/abilitymgr/src/call_record.cpp +++ b/services/abilitymgr/src/call_record.cpp @@ -101,7 +101,8 @@ AppExecFwk::ElementName CallRecord::GetTargetServiceName() const std::shared_ptr tmpService = service_.lock(); if (tmpService) { const AppExecFwk::AbilityInfo &abilityInfo = tmpService->GetAbilityInfo(); - AppExecFwk::ElementName element(abilityInfo.deviceId, abilityInfo.bundleName, abilityInfo.name); + AppExecFwk::ElementName element(abilityInfo.deviceId, abilityInfo.bundleName, + abilityInfo.name, abilityInfo.moduleName); return element; } return AppExecFwk::ElementName(); @@ -122,7 +123,8 @@ bool CallRecord::SchedulerConnectDone() } const AppExecFwk::AbilityInfo &abilityInfo = tmpService->GetAbilityInfo(); - AppExecFwk::ElementName element(abilityInfo.deviceId, abilityInfo.bundleName, abilityInfo.name); + AppExecFwk::ElementName element(abilityInfo.deviceId, abilityInfo.bundleName, + abilityInfo.name, abilityInfo.moduleName); connCallback_->OnAbilityConnectDone(element, callRemoteObject_, ERR_OK); state_ = CallState::REQUESTED; @@ -141,7 +143,8 @@ bool CallRecord::SchedulerDisConnectDone() } const AppExecFwk::AbilityInfo &abilityInfo = tmpService->GetAbilityInfo(); - AppExecFwk::ElementName element(abilityInfo.deviceId, abilityInfo.bundleName, abilityInfo.name); + AppExecFwk::ElementName element(abilityInfo.deviceId, abilityInfo.bundleName, + abilityInfo.name, abilityInfo.moduleName); connCallback_->OnAbilityDisconnectDone(element, ERR_OK); return true; @@ -173,7 +176,7 @@ void CallRecord::Dump(std::vector &info) const if (abilityRecord) { AppExecFwk::ElementName element( abilityRecord->GetAbilityInfo().deviceId, abilityRecord->GetAbilityInfo().bundleName, - abilityRecord->GetAbilityInfo().name); + abilityRecord->GetAbilityInfo().name, abilityRecord->GetAbilityInfo().moduleName); tempstr += " uri [" + element.GetURI() + "]" + "\n"; } diff --git a/services/abilitymgr/src/caller_info.cpp b/services/abilitymgr/src/caller_info.cpp index a39a9843e2cf6929e953718c53a23d46f19ce251..2b9e02c31e1f69c08bfb4f5f03cd47a63fe98620 100644 --- a/services/abilitymgr/src/caller_info.cpp +++ b/services/abilitymgr/src/caller_info.cpp @@ -28,6 +28,7 @@ bool CallerInfo::ReadFromParcel(Parcel &parcel) deviceId = Str16ToStr8(parcel.ReadString16()); bundleName = Str16ToStr8(parcel.ReadString16()); abilityName = Str16ToStr8(parcel.ReadString16()); + moduleName = Str16ToStr8(parcel.ReadString16()); return true; } @@ -59,6 +60,10 @@ bool CallerInfo::Marshalling(Parcel &parcel) const if (!parcel.WriteString16(Str8ToStr16(abilityName))) { return false; } + // write moduleName + if (!parcel.WriteString16(Str8ToStr16(moduleName))) { + return false; + } return true; } diff --git a/services/abilitymgr/src/connection_record.cpp b/services/abilitymgr/src/connection_record.cpp index a83c6b509c45c0f02383c640fe02fc9671e0f485..c173b4303a924ed2a54cdc5bdb0dd520d3840223 100644 --- a/services/abilitymgr/src/connection_record.cpp +++ b/services/abilitymgr/src/connection_record.cpp @@ -120,7 +120,8 @@ void ConnectionRecord::CompleteConnect(int resultCode) targetService_->SetAbilityState(AbilityState::ACTIVE); } const AppExecFwk::AbilityInfo &abilityInfo = targetService_->GetAbilityInfo(); - AppExecFwk::ElementName element(abilityInfo.deviceId, abilityInfo.bundleName, abilityInfo.name); + AppExecFwk::ElementName element(abilityInfo.deviceId, abilityInfo.bundleName, + abilityInfo.name, abilityInfo.moduleName); auto remoteObject = targetService_->GetConnRemoteObject(); if (connCallback_) { connCallback_->OnAbilityConnectDone(element, remoteObject, resultCode); @@ -135,7 +136,8 @@ void ConnectionRecord::CompleteDisconnect(int resultCode, bool isDied) } CHECK_POINTER(targetService_); const AppExecFwk::AbilityInfo &abilityInfo = targetService_->GetAbilityInfo(); - AppExecFwk::ElementName element(abilityInfo.deviceId, abilityInfo.bundleName, abilityInfo.name); + AppExecFwk::ElementName element(abilityInfo.deviceId, abilityInfo.bundleName, + abilityInfo.name, abilityInfo.moduleName); if (connCallback_) { connCallback_->OnAbilityDisconnectDone(element, isDied ? (resultCode - 1) : resultCode); } diff --git a/services/abilitymgr/src/free_install_manager.cpp b/services/abilitymgr/src/free_install_manager.cpp index eeabbe679747528f008d3ab1f7fe77acedd64249..94385c15d8148816409e2af37f60f7d3ba90b21e 100644 --- a/services/abilitymgr/src/free_install_manager.cpp +++ b/services/abilitymgr/src/free_install_manager.cpp @@ -67,12 +67,12 @@ bool FreeInstallManager::IsTopAbility(const sptr &callerToken) } AppExecFwk::ElementName callerElementName = caller->GetWant().GetElement(); - std::string callerBundleName; - std::string callerAbilityName; - callerBundleName = callerElementName.GetBundleName(); - callerAbilityName = callerElementName.GetAbilityName(); + std::string callerBundleName = callerElementName.GetBundleName(); + std::string callerAbilityName = callerElementName.GetAbilityName(); + std::string callerModuleName = callerElementName.GetModuleName(); if (elementName.GetBundleName().compare(callerBundleName) == 0 && - elementName.GetAbilityName().compare(callerAbilityName) == 0) { + elementName.GetAbilityName().compare(callerAbilityName) == 0 && + elementName.GetModuleName().compare(callerModuleName) == 0) { HILOG_INFO("The ability is top ability."); return true; } diff --git a/services/abilitymgr/src/mission_list.cpp b/services/abilitymgr/src/mission_list.cpp index 110eca59050d62aacfb01e9b2b8d96096436701a..566302ebd94bcd08c39bbe4543363016a6b6bf70 100644 --- a/services/abilitymgr/src/mission_list.cpp +++ b/services/abilitymgr/src/mission_list.cpp @@ -215,7 +215,8 @@ std::shared_ptr MissionList::GetAbilityRecordByName(const AppExec for (auto mission : missions_) { if (mission) { const AppExecFwk::AbilityInfo &abilityInfo = mission->GetAbilityRecord()->GetAbilityInfo(); - AppExecFwk::ElementName localElement(abilityInfo.deviceId, abilityInfo.bundleName, abilityInfo.name); + AppExecFwk::ElementName localElement(abilityInfo.deviceId, abilityInfo.bundleName, + abilityInfo.name, abilityInfo.moduleName); if (localElement == element) { return mission->GetAbilityRecord(); } diff --git a/services/abilitymgr/src/mission_list_manager.cpp b/services/abilitymgr/src/mission_list_manager.cpp index 2f9609ced086d194fa80491702c95d22e9694193..b9008e3c351b2a794c69321a9fe620012fb35a4a 100644 --- a/services/abilitymgr/src/mission_list_manager.cpp +++ b/services/abilitymgr/src/mission_list_manager.cpp @@ -339,7 +339,8 @@ void MissionListManager::GetTargetMissionAndAbility(const AbilityRequest &abilit // no reused mission, create a new one. bool isSingleton = abilityRequest.abilityInfo.launchMode == AppExecFwk::LaunchMode::SINGLETON; std::string missionName = isSingleton ? AbilityUtil::ConvertBundleNameSingleton( - abilityRequest.abilityInfo.bundleName, abilityRequest.abilityInfo.name) : abilityRequest.abilityInfo.bundleName; + abilityRequest.abilityInfo.bundleName, abilityRequest.abilityInfo.name, abilityRequest.abilityInfo.moduleName) : + abilityRequest.abilityInfo.bundleName; // try reuse mission info InnerMissionInfo info; @@ -483,7 +484,7 @@ std::shared_ptr MissionListManager::GetReusedMission(const AbilityReque std::shared_ptr reUsedMission = nullptr; std::string missionName = AbilityUtil::ConvertBundleNameSingleton(abilityRequest.abilityInfo.bundleName, - abilityRequest.abilityInfo.name); + abilityRequest.abilityInfo.name, abilityRequest.abilityInfo.moduleName); // find launcher first. if (abilityRequest.abilityInfo.applicationInfo.isLauncherApp) { diff --git a/services/appmgr/include/app_running_record.h b/services/appmgr/include/app_running_record.h index aac2ff3933333f45d68c0c6c76278cd21ac7b65e..c8e9bf7dbd6eabb81b0d7f40db1b56d85428c41a 100644 --- a/services/appmgr/include/app_running_record.h +++ b/services/appmgr/include/app_running_record.h @@ -238,7 +238,7 @@ public: * @return the ability record. */ std::shared_ptr GetAbilityRunningRecord( - const std::string &abilityName, int32_t ownerUserId = -1) const; + const std::string &abilityName, const std::string &moduleName, int32_t ownerUserId = -1) const; std::shared_ptr GetAbilityRunningRecord(const int64_t eventId) const; diff --git a/services/appmgr/src/app_mgr_service_inner.cpp b/services/appmgr/src/app_mgr_service_inner.cpp index 5f92df429ea632d9e663928a9a7351a99ad537b2..840145d969fa964fdde71427349dcaea5f216ea2 100644 --- a/services/appmgr/src/app_mgr_service_inner.cpp +++ b/services/appmgr/src/app_mgr_service_inner.cpp @@ -1015,7 +1015,8 @@ void AppMgrServiceInner::StartAbility(const sptr &token, const sp if (want) { ownerUserId = want->GetIntParam(ABILITY_OWNER_USERID, -1); } - auto abilityRecord = appRecord->GetAbilityRunningRecord(abilityInfo->name, ownerUserId); + auto abilityRecord = appRecord->GetAbilityRunningRecord(abilityInfo->name, + abilityInfo->moduleName, ownerUserId); if (abilityRecord) { HILOG_WARN("same ability info in singleton launch mode, will not add ability"); return; diff --git a/services/appmgr/src/app_running_record.cpp b/services/appmgr/src/app_running_record.cpp index bc9fb54b196883cab46e1fc814bc0618e5e59389..ba03a19da4532822fa86102090144cd167856bb7 100644 --- a/services/appmgr/src/app_running_record.cpp +++ b/services/appmgr/src/app_running_record.cpp @@ -237,11 +237,14 @@ sptr AppRunningRecord::GetApplicationClient() const } std::shared_ptr AppRunningRecord::GetAbilityRunningRecord( - const std::string &abilityName, int32_t ownerUserId) const + const std::string &abilityName, const std::string &moduleName, int32_t ownerUserId) const { HILOG_INFO("Get ability running record by ability name."); auto moduleRecordList = GetAllModuleRecord(); for (const auto &moduleRecord : moduleRecordList) { + if (!moduleName.empty() && moduleRecord->GetModuleName() != moduleName) { + continue; + } auto abilityRecord = moduleRecord->GetAbilityRunningRecord(abilityName, ownerUserId); if (abilityRecord) { return abilityRecord; diff --git a/services/appmgr/test/unittest/ams_app_running_record_test/ams_app_running_record_test.cpp b/services/appmgr/test/unittest/ams_app_running_record_test/ams_app_running_record_test.cpp index 7b9cffb5173828c94b020720969ea5c252e4f07c..1290d22e74238decf537f6c3c573eb0995251654 100644 --- a/services/appmgr/test/unittest/ams_app_running_record_test/ams_app_running_record_test.cpp +++ b/services/appmgr/test/unittest/ams_app_running_record_test/ams_app_running_record_test.cpp @@ -766,7 +766,7 @@ HWTEST_F(AmsAppRunningRecordTest, LaunchAbilityForApp_001, TestSize.Level1) EXPECT_TRUE(service_ != nullptr); std::shared_ptr record = service_->CreateAppRunningRecord( GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr); - auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName()); + auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName(), hapModuleInfo.moduleName); EXPECT_TRUE(abilityRecord != nullptr); EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(1); @@ -809,7 +809,7 @@ HWTEST_F(AmsAppRunningRecordTest, LaunchAbilityForApp_002, TestSize.Level1) std::shared_ptr record = service_->CreateAppRunningRecord( GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr); - auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName()); + auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName(), hapModuleInfo.moduleName); EXPECT_TRUE(abilityRecord != nullptr); sptr token2 = new (std::nothrow) MockAbilityToken(); @@ -861,7 +861,7 @@ HWTEST_F(AmsAppRunningRecordTest, LaunchAbilityForApp_003, TestSize.Level1) GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr); record->SetState(ApplicationState::APP_STATE_READY); record->SetApplicationClient(GetMockedAppSchedulerClient()); - auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName()); + auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName(), hapModuleInfo.moduleName); EXPECT_TRUE(abilityRecord != nullptr); EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(0); @@ -905,7 +905,7 @@ HWTEST_F(AmsAppRunningRecordTest, LaunchAbilityForApp_004, TestSize.Level1) std::shared_ptr record = service_->CreateAppRunningRecord( GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr); - auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName()); + auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName(), hapModuleInfo.moduleName); EXPECT_TRUE(abilityRecord != nullptr); EXPECT_CALL(*mockAppSchedulerClient_, ScheduleLaunchApplication(_, _)).Times(1); @@ -953,7 +953,7 @@ HWTEST_F(AmsAppRunningRecordTest, LaunchAbilityForApp_005, TestSize.Level1) std::shared_ptr record = service_->CreateAppRunningRecord( GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr); - auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName()); + auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName(), hapModuleInfo.moduleName); EXPECT_TRUE(abilityRecord != nullptr); sptr token2 = new (std::nothrow) MockAbilityToken(); @@ -1022,7 +1022,7 @@ HWTEST_F(AmsAppRunningRecordTest, TerminateAbility_002, TestSize.Level1) std::shared_ptr record = service_->CreateAppRunningRecord( GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr); - auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName()); + auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName(), hapModuleInfo.moduleName); EXPECT_TRUE(abilityRecord != nullptr); EXPECT_CALL(*mockAppSchedulerClient_, ScheduleCleanAbility(_)).Times(0); @@ -1075,11 +1075,11 @@ HWTEST_F(AmsAppRunningRecordTest, GetAbilityRunningRecord_001, TestSize.Level1) std::shared_ptr record = service_->CreateAppRunningRecord( GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr); - auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName()); + auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName(), hapModuleInfo.moduleName); EXPECT_TRUE(abilityRecord != nullptr); std::string abilityName = "not_exist_ability_name"; - EXPECT_EQ(nullptr, record->GetAbilityRunningRecord(abilityName)); + EXPECT_EQ(nullptr, record->GetAbilityRunningRecord(abilityName, hapModuleInfo.moduleName)); HILOG_INFO("AmsAppRunningRecordTest GetAbilityRunningRecord_001 end"); } @@ -1163,7 +1163,7 @@ HWTEST_F(AmsAppRunningRecordTest, OnAbilityStateChanged_001, TestSize.Level1) GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr); auto moduleRecord = record->GetModuleRecordByModuleName(appInfo->bundleName, hapModuleInfo.moduleName); EXPECT_TRUE(moduleRecord != nullptr); - auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName()); + auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName(), hapModuleInfo.moduleName); EXPECT_TRUE(abilityRecord != nullptr); sptr callback = new (std::nothrow) MockAppStateCallback(); @@ -1663,13 +1663,13 @@ HWTEST_F(AmsAppRunningRecordTest, Specified_LaunchApplication_001, TestSize.Leve EXPECT_TRUE(service_ != nullptr); std::shared_ptr record = service_->CreateAppRunningRecord( GetMockToken(), nullptr, appInfo, abilityInfo, GetTestProcessName(), bundleInfo, hapModuleInfo, nullptr); - auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName()); + auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName(), hapModuleInfo.moduleName); EXPECT_TRUE(abilityRecord != nullptr); record->SetApplicationClient(GetMockedAppSchedulerClient()); record->isSpecifiedAbility_ = true; service_->LaunchApplication(record); - auto ability = record->GetAbilityRunningRecord(GetTestAbilityName()); + auto ability = record->GetAbilityRunningRecord(GetTestAbilityName(), hapModuleInfo.moduleName); EXPECT_TRUE(ability->GetState() != AbilityState::ABILITY_STATE_READY); } } // namespace AppExecFwk diff --git a/services/test/moduletest/common/ams/app_running_processes_info_module_test/app_running_processes_info_module_test.cpp b/services/test/moduletest/common/ams/app_running_processes_info_module_test/app_running_processes_info_module_test.cpp index eb7f33ce15ddfaf06726f7510738bf636ee961ad..1510bb71ca06bac869accb35dc457355c8838820 100644 --- a/services/test/moduletest/common/ams/app_running_processes_info_module_test/app_running_processes_info_module_test.cpp +++ b/services/test/moduletest/common/ams/app_running_processes_info_module_test/app_running_processes_info_module_test.cpp @@ -103,7 +103,7 @@ protected: EXPECT_TRUE(appInfo != nullptr) << "appInfo is nullptr!"; EXPECT_TRUE(abilityInfo != nullptr) << "abilityInfo is nullptr!"; EXPECT_TRUE(record != nullptr) << "record is nullptr!"; - auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName(index)); + auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName(index), abilityInfo->moduleName); int32_t id = record->GetRecordId(); auto name = record->GetName(); sptr token = abilityRecord->GetToken(); @@ -116,7 +116,8 @@ protected: auto appRecordFromServ = service_->appRunningManager_->CheckAppRunningRecordIsExist( appInfo->name, processName, appInfo->uid, bundleInfo); EXPECT_TRUE(appRecordFromServ); - auto abilityRecordFromServ = appRecordFromServ->GetAbilityRunningRecord(GetTestAbilityName(index)); + auto abilityRecordFromServ = appRecordFromServ->GetAbilityRunningRecord(GetTestAbilityName(index), + abilityInfo->moduleName); int32_t idFromServ = appRecordFromServ->GetRecordId(); sptr tokenFromServ = abilityRecordFromServ->GetToken(); auto nameFromServ = appRecordFromServ->GetName(); diff --git a/services/test/moduletest/common/ams/app_running_record_test/ams_app_running_record_module_test.cpp b/services/test/moduletest/common/ams/app_running_record_test/ams_app_running_record_module_test.cpp index 79166efa620d728cd9d7f7f91780895ca81e19cc..dc5cfc26ae76d941fd8f44d92163eeac918ca92f 100644 --- a/services/test/moduletest/common/ams/app_running_record_test/ams_app_running_record_module_test.cpp +++ b/services/test/moduletest/common/ams/app_running_record_test/ams_app_running_record_module_test.cpp @@ -103,7 +103,7 @@ protected: EXPECT_TRUE(appInfo != nullptr) << "appInfo is nullptr!"; EXPECT_TRUE(abilityInfo != nullptr) << "abilityInfo is nullptr!"; EXPECT_TRUE(record != nullptr) << "record is nullptr!"; - auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName(index)); + auto abilityRecord = record->GetAbilityRunningRecord(GetTestAbilityName(index), abilityInfo->moduleName); int32_t id = record->GetRecordId(); auto name = record->GetName(); sptr token = abilityRecord->GetToken(); @@ -116,7 +116,8 @@ protected: auto appRecordFromServ = service_->appRunningManager_->CheckAppRunningRecordIsExist( appInfo->name, processName, appInfo->uid, bundleInfo); EXPECT_TRUE(appRecordFromServ); - auto abilityRecordFromServ = appRecordFromServ->GetAbilityRunningRecord(GetTestAbilityName(index)); + auto abilityRecordFromServ = appRecordFromServ->GetAbilityRunningRecord(GetTestAbilityName(index), + abilityInfo->moduleName); int32_t idFromServ = appRecordFromServ->GetRecordId(); sptr tokenFromServ = abilityRecordFromServ->GetToken(); auto nameFromServ = appRecordFromServ->GetName(); diff --git a/services/test/moduletest/common/ams/app_service_flow_test/ams_app_service_flow_module_test.cpp b/services/test/moduletest/common/ams/app_service_flow_test/ams_app_service_flow_module_test.cpp index 35eb9e7270dcd96ac6324a65c4061c943b4c0877..077df28386634424bd8721a14adb3dfba94cda00 100644 --- a/services/test/moduletest/common/ams/app_service_flow_test/ams_app_service_flow_module_test.cpp +++ b/services/test/moduletest/common/ams/app_service_flow_test/ams_app_service_flow_module_test.cpp @@ -47,13 +47,13 @@ struct TestApplicationPreRunningRecord { {} sptr GetToken(const std::string &abilityName) const { - auto abilityRecord = appRecord_->GetAbilityRunningRecord(abilityName); + auto abilityRecord = appRecord_->GetAbilityRunningRecord(abilityName, ""); return abilityRecord ? abilityRecord->GetToken() : nullptr; } std::shared_ptr GetAbility(const std::string &abilityName) const { - return appRecord_->GetAbilityRunningRecord(abilityName); + return appRecord_->GetAbilityRunningRecord(abilityName, ""); } virtual ~TestApplicationPreRunningRecord() diff --git a/services/test/moduletest/on_new_want_module_test/on_new_want_module_test.cpp b/services/test/moduletest/on_new_want_module_test/on_new_want_module_test.cpp index 680af98a028362b5ea7f2d8c38ad6e79dd043a97..cd642c4514eeb755865edd5ecbe8ea36b5dd6d3c 100644 --- a/services/test/moduletest/on_new_want_module_test/on_new_want_module_test.cpp +++ b/services/test/moduletest/on_new_want_module_test/on_new_want_module_test.cpp @@ -42,20 +42,21 @@ public: static void TearDownTestCase(); void SetUp(); void TearDown(); - AbilityInfo CreateAbilityInfo( - const std::string &name, const std::string &appName, const std::string &bundleName, bool mode); + AbilityInfo CreateAbilityInfo(const std::string &name, const std::string &appName, const std::string &bundleName, + const std::string &moduleName, bool mode); ApplicationInfo CreateAppInfo(const std::string &appName, const std::string &name); inline static std::shared_ptr abilityMgrServ_ {nullptr}; }; -AbilityInfo OnNewWantModuleTest::CreateAbilityInfo( - const std::string &name, const std::string &appName, const std::string &bundleName, bool mode) +AbilityInfo OnNewWantModuleTest::CreateAbilityInfo(const std::string &name, const std::string &appName, + const std::string &bundleName, const std::string &moduleName, bool mode) { AbilityInfo abilityInfo; abilityInfo.visible = true; abilityInfo.name = name; abilityInfo.applicationName = appName; abilityInfo.bundleName = bundleName; + abilityInfo.moduleName = moduleName; abilityInfo.applicationInfo.bundleName = bundleName; abilityInfo.applicationName = "com.ix.hiMusic"; abilityInfo.applicationInfo.name = "com.ix.hiMusic"; @@ -112,21 +113,22 @@ HWTEST_F(OnNewWantModuleTest, Startability_001, TestSize.Level1) std::string abilityName = "MusicAbility"; std::string appName = "test_app"; std::string bundleName = "com.ix.hiMusic"; + std::string moduleName = "entry"; Want want; - ElementName element("device", "com.ix.hiMusic", "MusicAbility"); + ElementName element("device", "com.ix.hiMusic", "MusicAbility", "entry"); want.SetElement(element); AbilityRequest abilityRequest; abilityRequest.want = want; - abilityRequest.abilityInfo = CreateAbilityInfo(abilityName, appName, bundleName, true); + abilityRequest.abilityInfo = CreateAbilityInfo(abilityName, appName, bundleName, moduleName, true); abilityRequest.appInfo = CreateAppInfo(appName, bundleName); std::shared_ptr abilityRecord = AbilityRecord::CreateAbilityRecord(abilityRequest); abilityRecord->SetAbilityState(OHOS::AAFwk::AbilityState::FOREGROUND); - std::string missionName = - AbilityUtil::ConvertBundleNameSingleton(abilityRequest.abilityInfo.bundleName, abilityRequest.abilityInfo.name); + std::string missionName = AbilityUtil::ConvertBundleNameSingleton(abilityRequest.abilityInfo.bundleName, + abilityRequest.abilityInfo.name, abilityRequest.abilityInfo.moduleName); std::shared_ptr mission = std::make_shared(1, abilityRecord, missionName); missionListManager->Init(); @@ -152,21 +154,22 @@ HWTEST_F(OnNewWantModuleTest, Startability_002, TestSize.Level1) std::string abilityName = "MusicAbility"; std::string appName = "test_app"; std::string bundleName = "com.ix.hiMusic"; + std::string moduleName = "entry"; Want want; - ElementName element("device", "com.ix.hiMusic", "MusicAbility"); + ElementName element("device", "com.ix.hiMusic", "MusicAbility", "entry"); want.SetElement(element); AbilityRequest abilityRequest; abilityRequest.want = want; - abilityRequest.abilityInfo = CreateAbilityInfo(abilityName, appName, bundleName, false); + abilityRequest.abilityInfo = CreateAbilityInfo(abilityName, appName, bundleName, moduleName, false); abilityRequest.appInfo = CreateAppInfo(appName, bundleName); std::shared_ptr abilityRecord = AbilityRecord::CreateAbilityRecord(abilityRequest); abilityRecord->SetAbilityState(OHOS::AAFwk::AbilityState::FOREGROUND); - std::string missionName = - AbilityUtil::ConvertBundleNameSingleton(abilityRequest.abilityInfo.bundleName, abilityRequest.abilityInfo.name); + std::string missionName = AbilityUtil::ConvertBundleNameSingleton(abilityRequest.abilityInfo.bundleName, + abilityRequest.abilityInfo.name, abilityRequest.abilityInfo.moduleName); std::shared_ptr mission = std::make_shared(1, abilityRecord, missionName); missionListManager->Init();