From 7abd074b82e3d55cca6aa75d68cb4184c9e36b77 Mon Sep 17 00:00:00 2001 From: caochunlei Date: Mon, 14 Mar 2022 20:51:30 +0800 Subject: [PATCH 1/7] caochunlei1@huawei.com Signed-off-by: caochunlei --- .../include/ability_manager_client.h | 17 +- .../include/appmgr/app_mgr_client.h | 4 +- .../app_manager/src/appmgr/app_mgr_client.cpp | 170 ++++-- .../abilitymgr/src/ability_manager_client.cpp | 513 +++++++++--------- 4 files changed, 403 insertions(+), 301 deletions(-) diff --git a/interfaces/innerkits/ability_manager/include/ability_manager_client.h b/interfaces/innerkits/ability_manager/include/ability_manager_client.h index 4e03b3fe77d..7b1d833abb0 100644 --- a/interfaces/innerkits/ability_manager/include/ability_manager_client.h +++ b/interfaces/innerkits/ability_manager/include/ability_manager_client.h @@ -809,9 +809,22 @@ public: ErrCode BlockAppService(); private: - static std::mutex mutex_; + class AbilityMgrDeathRecipient : public IRemoteObject::DeathRecipient { + public: + AbilityMgrDeathRecipient() = default; + ~AbilityMgrDeathRecipient() = default; + void OnRemoteDied(const wptr& remote) override; + private: + DISALLOW_COPY_AND_MOVE(AbilityMgrDeathRecipient); + }; + + sptr GetAbilityManager(); + void ResetProxy(const wptr& remote); + + static std::recursive_mutex mutex_; static std::shared_ptr instance_; - sptr remoteObject_; + sptr proxy_; + sptr deathRecipient_; }; } // namespace AAFwk } // namespace OHOS diff --git a/interfaces/innerkits/app_manager/include/appmgr/app_mgr_client.h b/interfaces/innerkits/app_manager/include/appmgr/app_mgr_client.h index 86e8f890aa6..e499e0c1918 100644 --- a/interfaces/innerkits/app_manager/include/appmgr/app_mgr_client.h +++ b/interfaces/innerkits/app_manager/include/appmgr/app_mgr_client.h @@ -34,6 +34,7 @@ namespace OHOS { namespace AppExecFwk { class AppServiceManager; class Configuration; +class AppMgrRemoteHolder; class AppMgrClient { public: AppMgrClient(); @@ -270,8 +271,7 @@ private: void SetServiceManager(std::unique_ptr serviceMgr); private: - std::unique_ptr serviceManager_; - sptr remote_; + std::shared_ptr mgrHolder_; }; } // namespace AppExecFwk } // namespace OHOS diff --git a/interfaces/innerkits/app_manager/src/appmgr/app_mgr_client.cpp b/interfaces/innerkits/app_manager/src/appmgr/app_mgr_client.cpp index 1250bdf8d2d..00f5a7f1b05 100644 --- a/interfaces/innerkits/app_manager/src/appmgr/app_mgr_client.cpp +++ b/interfaces/innerkits/app_manager/src/appmgr/app_mgr_client.cpp @@ -28,6 +28,91 @@ namespace OHOS { namespace AppExecFwk { +class AppMgrRemoteHolder : public std::enable_shared_from_this{ +public: + AppMgrRemoteHolder() = default; + + virtual ~AppMgrRemoteHolder() = default; + + void SetServiceManager(std::unique_ptr serviceMgr) + { + std::lock_guard lock(mutex_); + serviceManager_ = std::move(serviceMgr); + } + + AppMgrResultCode ConnectAppMgrService() + { + std::lock_guard lock(mutex_); + if (!serviceManager_) { + return AppMgrResultCode::ERROR_SERVICE_NOT_READY; + } + remote_ = serviceManager_->GetAppMgrService(); + if (!remote_) { + return AppMgrResultCode::ERROR_SERVICE_NOT_READY; + } + + auto me = shared_from_this(); + deathRecipient_ = sptr(new AppMgrDeathRecipient(me)); + if (deathRecipient_ == nullptr) { + HILOG_ERROR("%{public}s :Failed to create AppMgrDeathRecipient!", __func__); + return AppMgrResultCode::ERROR_SERVICE_NOT_READY;; + } + if ((remote_->IsProxyObject()) && (!remote_->AddDeathRecipient(deathRecipient_))) { + HILOG_ERROR("%{public}s :Add death recipient to AppMgrService failed.", __func__); + return AppMgrResultCode::ERROR_SERVICE_NOT_READY; + } + + return AppMgrResultCode::RESULT_OK; + } + + sptr GetRemoteObject() + { + std::lock_guard lock(mutex_); + if (!remote_) { + (void) ConnectAppMgrService(); + } + return remote_; + } + +private: + void HandleRemoteDied(const wptr& remote) + { + std::lock_guard lock(mutex_); + if (!remote_) { + return; + } + + if (remote_ == remote.promote()) { + remote_->RemoveDeathRecipient(deathRecipient_); + remote_ = nullptr; + } + } + + class AppMgrDeathRecipient : public IRemoteObject::DeathRecipient { + public: + explicit AppMgrDeathRecipient(const std::shared_ptr& holder) : owner_(holder) {} + + virtual ~AppMgrDeathRecipient() = default; + + void OnRemoteDied(const wptr& remote) override + { + std::shared_ptr holder = owner_.lock(); + if (holder) { + holder->HandleRemoteDied(remote); + } + } + + private: + std::weak_ptr owner_; + }; + +private: + std::unique_ptr serviceManager_; + sptr remote_; + std::recursive_mutex mutex_; + sptr deathRecipient_; +}; + AppMgrClient::AppMgrClient() { SetServiceManager(std::make_unique()); @@ -39,7 +124,7 @@ AppMgrClient::~AppMgrClient() AppMgrResultCode AppMgrClient::LoadAbility(const sptr &token, const sptr &preToken, const AbilityInfo &abilityInfo, const ApplicationInfo &appInfo, const AAFwk::Want &want) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { sptr amsService = service->GetAmsMgr(); if (amsService != nullptr) { @@ -56,7 +141,7 @@ AppMgrResultCode AppMgrClient::LoadAbility(const sptr &token, con AppMgrResultCode AppMgrClient::TerminateAbility(const sptr &token) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { sptr amsService = service->GetAmsMgr(); if (amsService != nullptr) { @@ -69,7 +154,7 @@ AppMgrResultCode AppMgrClient::TerminateAbility(const sptr &token AppMgrResultCode AppMgrClient::UpdateAbilityState(const sptr &token, const AbilityState state) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { sptr amsService = service->GetAmsMgr(); if (amsService != nullptr) { @@ -82,7 +167,7 @@ AppMgrResultCode AppMgrClient::UpdateAbilityState(const sptr &tok AppMgrResultCode AppMgrClient::UpdateExtensionState(const sptr &token, const ExtensionState state) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { sptr amsService = service->GetAmsMgr(); if (amsService != nullptr) { @@ -95,7 +180,7 @@ AppMgrResultCode AppMgrClient::UpdateExtensionState(const sptr &t AppMgrResultCode AppMgrClient::RegisterAppStateCallback(const sptr &callback) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { sptr amsService = service->GetAmsMgr(); if (amsService != nullptr) { @@ -110,7 +195,7 @@ AppMgrResultCode AppMgrClient::AbilityBehaviorAnalysis(const sptr const sptr &preToken, const int32_t visibility, const int32_t perceptibility, const int32_t connectionState) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { sptr amsService = service->GetAmsMgr(); if (amsService != nullptr) { @@ -123,7 +208,7 @@ AppMgrResultCode AppMgrClient::AbilityBehaviorAnalysis(const sptr AppMgrResultCode AppMgrClient::KillProcessByAbilityToken(const sptr &token) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { sptr amsService = service->GetAmsMgr(); if (amsService != nullptr) { @@ -136,7 +221,7 @@ AppMgrResultCode AppMgrClient::KillProcessByAbilityToken(const sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { sptr amsService = service->GetAmsMgr(); if (amsService != nullptr) { @@ -149,7 +234,7 @@ AppMgrResultCode AppMgrClient::KillProcessesByUserId(int32_t userId) AppMgrResultCode AppMgrClient::KillApplication(const std::string &bundleName) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { sptr amsService = service->GetAmsMgr(); if (amsService != nullptr) { @@ -165,7 +250,7 @@ AppMgrResultCode AppMgrClient::KillApplication(const std::string &bundleName) AppMgrResultCode AppMgrClient::KillApplicationByUid(const std::string &bundleName, const int uid) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { sptr amsService = service->GetAmsMgr(); if (amsService != nullptr) { @@ -181,7 +266,7 @@ AppMgrResultCode AppMgrClient::KillApplicationByUid(const std::string &bundleNam AppMgrResultCode AppMgrClient::ClearUpApplicationData(const std::string &bundleName) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { int32_t result = service->ClearUpApplicationData(bundleName); if (result == ERR_OK) { @@ -194,7 +279,7 @@ AppMgrResultCode AppMgrClient::ClearUpApplicationData(const std::string &bundleN AppMgrResultCode AppMgrClient::GetAllRunningProcesses(std::vector &info) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { int32_t result = service->GetAllRunningProcesses(info); if (result == ERR_OK) { @@ -207,7 +292,7 @@ AppMgrResultCode AppMgrClient::GetAllRunningProcesses(std::vector &info, int32_t userId) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { int32_t result = service->GetProcessRunningInfosByUserId(info, userId); if (result == ERR_OK) { @@ -220,7 +305,7 @@ AppMgrResultCode AppMgrClient::GetProcessRunningInfosByUserId(std::vector service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { sptr amsService = service->GetAmsMgr(); if (amsService != nullptr) { @@ -236,24 +321,23 @@ AppMgrResultCode AppMgrClient::GetConfiguration(Configuration& config) AppMgrResultCode AppMgrClient::ConnectAppMgrService() { - if (!serviceManager_) { - return AppMgrResultCode::ERROR_SERVICE_NOT_READY; - } - remote_ = serviceManager_->GetAppMgrService(); - if (!remote_) { - return AppMgrResultCode::ERROR_SERVICE_NOT_READY; + if (mgrHolder_) { + return mgrHolder_->ConnectAppMgrService(); } - return AppMgrResultCode::RESULT_OK; + return AppMgrResultCode::ERROR_SERVICE_NOT_READY; } void AppMgrClient::SetServiceManager(std::unique_ptr serviceMgr) { - serviceManager_ = std::move(serviceMgr); + if (!mgrHolder_) { + mgrHolder_ = std::make_shared(); + } + mgrHolder_->SetServiceManager(std::move(serviceMgr)); } void AppMgrClient::AbilityAttachTimeOut(const sptr &token) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service == nullptr) { return; } @@ -266,7 +350,7 @@ void AppMgrClient::AbilityAttachTimeOut(const sptr &token) void AppMgrClient::PrepareTerminate(const sptr &token) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service == nullptr) { return; } @@ -283,7 +367,7 @@ void AppMgrClient::PrepareTerminate(const sptr &token) */ void AppMgrClient::GetSystemMemoryAttr(SystemMemoryAttr &memoryInfo, std::string &strConfig) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service == nullptr) { HILOG_ERROR("service is nullptr"); return; @@ -294,7 +378,7 @@ void AppMgrClient::GetSystemMemoryAttr(SystemMemoryAttr &memoryInfo, std::string void AppMgrClient::GetRunningProcessInfoByToken(const sptr &token, AppExecFwk::RunningProcessInfo &info) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { sptr amsService = service->GetAmsMgr(); if (amsService != nullptr) { @@ -305,7 +389,7 @@ void AppMgrClient::GetRunningProcessInfoByToken(const sptr &token void AppMgrClient::AddAbilityStageDone(const int32_t recordId) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service == nullptr) { HILOG_ERROR("service is nullptr"); return; @@ -316,7 +400,7 @@ void AppMgrClient::AddAbilityStageDone(const int32_t recordId) void AppMgrClient::StartupResidentProcess(const std::vector &bundleInfos) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service == nullptr) { HILOG_ERROR("service is nullptr"); return; @@ -328,7 +412,7 @@ void AppMgrClient::StartupResidentProcess(const std::vector &observer, const BundleInfo &bundleInfo) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service == nullptr) { HILOG_ERROR("service is nullptr"); return AppMgrResultCode::ERROR_SERVICE_NOT_READY; @@ -339,7 +423,7 @@ int AppMgrClient::StartUserTestProcess(const AAFwk::Want &want, const sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service == nullptr) { HILOG_ERROR("service is nullptr"); return AppMgrResultCode::ERROR_SERVICE_NOT_READY; @@ -349,7 +433,7 @@ int AppMgrClient::FinishUserTest( void AppMgrClient::StartSpecifiedAbility(const AAFwk::Want &want, const AppExecFwk::AbilityInfo &abilityInfo) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service == nullptr) { return; } @@ -362,7 +446,7 @@ void AppMgrClient::StartSpecifiedAbility(const AAFwk::Want &want, const AppExecF void AppMgrClient::RegisterStartSpecifiedAbilityResponse(const sptr &response) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service == nullptr) { return; } @@ -375,7 +459,7 @@ void AppMgrClient::RegisterStartSpecifiedAbilityResponse(const sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service == nullptr) { HILOG_ERROR("service is nullptr"); return; @@ -386,7 +470,7 @@ void AppMgrClient::ScheduleAcceptWantDone(const int32_t recordId, const AAFwk::W AppMgrResultCode AppMgrClient::UpdateConfiguration(const Configuration &config) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service == nullptr) { return AppMgrResultCode::ERROR_SERVICE_NOT_CONNECTED; } @@ -400,7 +484,7 @@ AppMgrResultCode AppMgrClient::UpdateConfiguration(const Configuration &config) int AppMgrClient::GetAbilityRecordsByProcessID(const int pid, std::vector> &tokens) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service == nullptr) { HILOG_ERROR("service is nullptr"); return AppMgrResultCode::ERROR_SERVICE_NOT_CONNECTED; @@ -412,11 +496,7 @@ int AppMgrClient::GetAbilityRecordsByProcessID(const int pid, std::vector service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { return service->StartRenderProcess(renderParam, ipcFd, sharedFd, renderPid); } @@ -430,11 +510,7 @@ void AppMgrClient::AttachRenderProcess(const sptr &renderSched return; } - if (!remote_) { - ConnectAppMgrService(); - } - - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service != nullptr) { HILOG_INFO("AttachRenderProcess"); service->AttachRenderProcess(renderScheduler->AsObject()); @@ -443,7 +519,7 @@ void AppMgrClient::AttachRenderProcess(const sptr &renderSched void AppMgrClient::PostANRTaskByProcessID(const pid_t pid) { - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service == nullptr) { HILOG_ERROR("service is nullptr"); return; @@ -455,7 +531,7 @@ void AppMgrClient::PostANRTaskByProcessID(const pid_t pid) int AppMgrClient::BlockAppService() { HILOG_INFO("%{public}s", __func__); - sptr service = iface_cast(remote_); + sptr service = iface_cast(mgrHolder_->GetRemoteObject()); if (service == nullptr) { HILOG_ERROR("service is nullptr"); return AppMgrResultCode::ERROR_SERVICE_NOT_READY; diff --git a/services/abilitymgr/src/ability_manager_client.cpp b/services/abilitymgr/src/ability_manager_client.cpp index 1c05f76dfab..fda87ef38d9 100644 --- a/services/abilitymgr/src/ability_manager_client.cpp +++ b/services/abilitymgr/src/ability_manager_client.cpp @@ -28,28 +28,24 @@ namespace OHOS { namespace AAFwk { std::shared_ptr AbilityManagerClient::instance_ = nullptr; -std::mutex AbilityManagerClient::mutex_; +std::recursive_mutex AbilityManagerClient::mutex_; -#define CHECK_REMOTE_OBJECT(object) \ - if (!object) { \ - if (ERR_OK != Connect()) { \ - HILOG_ERROR("ability service can't connect."); \ - return; \ - } \ +#define CHECK_POINTER_RETURN(object) \ + if (!object) { \ + HILOG_ERROR("proxy is nullptr"); \ + return; \ } -#define CHECK_REMOTE_OBJECT_AND_RETURN(object, value) \ - if (!object) { \ - if (ERR_OK != Connect()) { \ - HILOG_ERROR("ability service can't connect."); \ - return value; \ - } \ +#define CHECK_POINTER_RETURN_NOT_CONNECTED(object) \ + if (!object) { \ + HILOG_ERROR("proxy is nullptr."); \ + return ABILITY_SERVICE_NOT_CONNECTED; \ } std::shared_ptr AbilityManagerClient::GetInstance() { if (instance_ == nullptr) { - std::lock_guard lock_l(mutex_); + std::lock_guard lock_l(mutex_); if (instance_ == nullptr) { instance_ = std::make_shared(); } @@ -66,157 +62,159 @@ AbilityManagerClient::~AbilityManagerClient() ErrCode AbilityManagerClient::AttachAbilityThread( const sptr &scheduler, const sptr &token) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->AttachAbilityThread(scheduler, token); } ErrCode AbilityManagerClient::AbilityTransitionDone(const sptr &token, int state, const PacMap &saveData) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->AbilityTransitionDone(token, state, saveData); } ErrCode AbilityManagerClient::ScheduleConnectAbilityDone( const sptr &token, const sptr &remoteObject) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->ScheduleConnectAbilityDone(token, remoteObject); } ErrCode AbilityManagerClient::ScheduleDisconnectAbilityDone(const sptr &token) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->ScheduleDisconnectAbilityDone(token); } ErrCode AbilityManagerClient::ScheduleCommandAbilityDone(const sptr &token) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->ScheduleCommandAbilityDone(token); } void AbilityManagerClient::AddWindowInfo(const sptr &token, int32_t windowToken) { - CHECK_REMOTE_OBJECT(remoteObject_); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN(abms); abms->AddWindowInfo(token, windowToken); } ErrCode AbilityManagerClient::StartAbility(const Want &want, int requestCode, int32_t userId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->StartAbility(want, userId, requestCode); } ErrCode AbilityManagerClient::StartAbility( const Want &want, const sptr &callerToken, int requestCode, int32_t userId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); HILOG_INFO("%{public}s called, bundleName=%{public}s, abilityName=%{public}s, userId=%{public}d", __func__, want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(), userId); - sptr abms = iface_cast(remoteObject_); return abms->StartAbility(want, callerToken, userId, requestCode); } ErrCode AbilityManagerClient::StartAbility(const Want &want, const AbilityStartSetting &abilityStartSetting, const sptr &callerToken, int requestCode, int32_t userId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->StartAbility(want, abilityStartSetting, callerToken, userId, requestCode); } ErrCode AbilityManagerClient::StartAbility(const Want &want, const StartOptions &startOptions, const sptr &callerToken, int requestCode, int32_t userId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); HILOG_INFO("%{public}s called, bundleName=%{public}s, abilityName=%{public}s", __func__, want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str()); HILOG_INFO("%{public}s called, userId=%{public}d, windowMode_=%{public}d, displayId_=%{public}d", __func__, userId, startOptions.GetWindowMode(), startOptions.GetDisplayID()); - sptr abms = iface_cast(remoteObject_); return abms->StartAbility(want, startOptions, callerToken, userId, requestCode); } ErrCode AbilityManagerClient::TerminateAbility(const sptr &token, int resultCode, const Want *resultWant) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->TerminateAbility(token, resultCode, resultWant); } ErrCode AbilityManagerClient::TerminateAbility(const sptr &callerToken, int requestCode) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->TerminateAbilityByCaller(callerToken, requestCode); } ErrCode AbilityManagerClient::TerminateAbilityResult(const sptr &token, int startId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->TerminateAbilityResult(token, startId); } ErrCode AbilityManagerClient::CloseAbility(const sptr &token, int resultCode, const Want *resultWant) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->CloseAbility(token, resultCode, resultWant); } ErrCode AbilityManagerClient::MinimizeAbility(const sptr &token, bool fromUser) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); HILOG_INFO("%{public}s called, fromUser=%{public}d", __func__, fromUser); - sptr abms = iface_cast(remoteObject_); return abms->MinimizeAbility(token, fromUser); } ErrCode AbilityManagerClient::ConnectAbility( const Want &want, const sptr &connect, const sptr &callerToken, int32_t userId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); HILOG_INFO("%{public}s called, bundleName=%{public}s, abilityName=%{public}s, userId=%{public}d", __func__, want.GetElement().GetBundleName().c_str(), want.GetElement().GetAbilityName().c_str(), userId); - sptr abms = iface_cast(remoteObject_); return abms->ConnectAbility(want, connect, callerToken, userId); } ErrCode AbilityManagerClient::DisconnectAbility(const sptr &connect) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->DisconnectAbility(connect); } sptr AbilityManagerClient::AcquireDataAbility( const Uri &uri, bool tryBind, const sptr &callerToken) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, nullptr); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + if (!abms) { + return nullptr; + } return abms->AcquireDataAbility(uri, tryBind, callerToken); } ErrCode AbilityManagerClient::ReleaseDataAbility( sptr dataAbilityScheduler, const sptr &callerToken) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->ReleaseDataAbility(dataAbilityScheduler, callerToken); } ErrCode AbilityManagerClient::DumpState(const std::string &args, std::vector &state) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); abms->DumpState(args, state); return ERR_OK; } @@ -224,16 +222,16 @@ ErrCode AbilityManagerClient::DumpState(const std::string &args, std::vector& state, bool isClient, bool isUserID, int UserID) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); abms->DumpSysState(args, state, isClient, isUserID, UserID); return ERR_OK; } ErrCode AbilityManagerClient::Connect() { - std::lock_guard lock(mutex_); - if (remoteObject_ != nullptr) { + std::lock_guard lock(mutex_); + if (proxy_ != nullptr) { return ERR_OK; } sptr systemManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); @@ -241,42 +239,54 @@ ErrCode AbilityManagerClient::Connect() HILOG_ERROR("Fail to get registry."); return GET_ABILITY_SERVICE_FAILED; } - remoteObject_ = systemManager->GetSystemAbility(ABILITY_MGR_SERVICE_ID); - if (remoteObject_ == nullptr) { + sptr remoteObj = systemManager->GetSystemAbility(ABILITY_MGR_SERVICE_ID); + if (remoteObj == nullptr) { HILOG_ERROR("Fail to connect ability manager service."); return GET_ABILITY_SERVICE_FAILED; } + + deathRecipient_ = sptr(new AbilityMgrDeathRecipient()); + if (deathRecipient_ == nullptr) { + HILOG_ERROR("%{public}s :Failed to create AbilityMgrDeathRecipient!", __func__); + return GET_ABILITY_SERVICE_FAILED; + } + if ((remoteObj->IsProxyObject()) && (!remoteObj->AddDeathRecipient(deathRecipient_))) { + HILOG_ERROR("%{public}s :Add death recipient to AbilityManagerService failed.", __func__); + return GET_ABILITY_SERVICE_FAILED; + } + + proxy_ = iface_cast(remoteObj); HILOG_DEBUG("Connect ability manager service success."); return ERR_OK; } ErrCode AbilityManagerClient::GetAllStackInfo(StackInfo &stackInfo) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->GetAllStackInfo(stackInfo); } ErrCode AbilityManagerClient::StopServiceAbility(const Want &want) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->StopServiceAbility(want); } ErrCode AbilityManagerClient::GetRecentMissions( const int32_t numMax, const int32_t flags, std::vector &recentList) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->GetRecentMissions(numMax, flags, recentList); } ErrCode AbilityManagerClient::GetMissionSnapshot(const int32_t missionId, MissionSnapshot &missionSnapshot) { #ifdef SUPPORT_GRAPHICS - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); MissionPixelMap missionPixelMap; int ret = abms->GetMissionSnapshot(missionId, missionPixelMap); if (ret == ERR_OK) { @@ -315,22 +325,22 @@ ErrCode AbilityManagerClient::GetMissionSnapshot(const int32_t missionId, Missio ErrCode AbilityManagerClient::MoveMissionToTop(int32_t missionId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->MoveMissionToTop(missionId); } ErrCode AbilityManagerClient::MoveMissionToEnd(const sptr &token, const bool nonFirst) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->MoveMissionToEnd(token, nonFirst); } ErrCode AbilityManagerClient::RemoveMissions(std::vector missionId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); int error = ERR_OK; for (auto it : missionId) { error = abms->RemoveMission(it); @@ -346,23 +356,23 @@ ErrCode AbilityManagerClient::RemoveMissions(std::vector missionId) ErrCode AbilityManagerClient::KillProcess(const std::string &bundleName) { HILOG_INFO("[%{public}s(%{public}s)] enter", __FILE__, __FUNCTION__); - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->KillProcess(bundleName); } ErrCode AbilityManagerClient::ForceTimeoutForTest(const std::string &abilityName, const std::string &state) { HILOG_INFO("[%{public}s(%{public}s)] enter", __FILE__, __FUNCTION__); - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->ForceTimeoutForTest(abilityName, state); } ErrCode AbilityManagerClient::ClearUpApplicationData(const std::string &bundleName) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->ClearUpApplicationData(bundleName); } @@ -372,8 +382,8 @@ ErrCode AbilityManagerClient::IsFirstInMission(const sptr &token) HILOG_ERROR("token is nullptr"); return ERR_NULL_OBJECT; } - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); if (!(abms->IsFirstInMission(token))) { return NO_FIRST_IN_MISSION; } @@ -382,190 +392,192 @@ ErrCode AbilityManagerClient::IsFirstInMission(const sptr &token) ErrCode AbilityManagerClient::MoveMissionToFloatingStack(const MissionOption &missionOption) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->MoveMissionToFloatingStack(missionOption); } ErrCode AbilityManagerClient::MoveMissionToSplitScreenStack( const MissionOption &primary, const MissionOption &secondary) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->MoveMissionToSplitScreenStack(primary, secondary); } ErrCode AbilityManagerClient::MinimizeMultiWindow(int missionId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->MinimizeMultiWindow(missionId); } ErrCode AbilityManagerClient::MaximizeMultiWindow(int missionId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->MaximizeMultiWindow(missionId); } ErrCode AbilityManagerClient::ChangeFocusAbility( const sptr &lostFocusToken, const sptr &getFocusToken) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->ChangeFocusAbility(lostFocusToken, getFocusToken); } ErrCode AbilityManagerClient::GetFloatingMissions(std::vector &list) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->GetFloatingMissions(list); } ErrCode AbilityManagerClient::CloseMultiWindow(int missionId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->CloseMultiWindow(missionId); } ErrCode AbilityManagerClient::SetMissionStackSetting(const StackSetting &stackSetting) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->SetMissionStackSetting(stackSetting); } ErrCode AbilityManagerClient::PowerOff() { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->PowerOff(); } ErrCode AbilityManagerClient::PowerOn() { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->PowerOn(); } ErrCode AbilityManagerClient::LockMission(int missionId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->LockMission(missionId); } ErrCode AbilityManagerClient::UnlockMission(int missionId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->UnlockMission(missionId); } ErrCode AbilityManagerClient::SetMissionDescriptionInfo( const sptr &token, const MissionDescriptionInfo &description) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->SetMissionDescriptionInfo(token, description); } ErrCode AbilityManagerClient::GetMissionLockModeState() { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->GetMissionLockModeState(); } ErrCode AbilityManagerClient::UpdateConfiguration(const AppExecFwk::Configuration &config) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->UpdateConfiguration(config); } sptr AbilityManagerClient::GetWantSender( const WantSenderInfo &wantSenderInfo, const sptr &callerToken) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, nullptr); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + if (!abms) { + return nullptr; + } return abms->GetWantSender(wantSenderInfo, callerToken); } ErrCode AbilityManagerClient::SendWantSender(const sptr &target, const SenderInfo &senderInfo) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->SendWantSender(target, senderInfo); } void AbilityManagerClient::CancelWantSender(const sptr &sender) { - CHECK_REMOTE_OBJECT(remoteObject_); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN(abms); abms->CancelWantSender(sender); } ErrCode AbilityManagerClient::GetPendingWantUid(const sptr &target, int32_t &uid) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); if (target == nullptr) { HILOG_ERROR("target is nullptr."); return ABILITY_SERVICE_NOT_CONNECTED; } - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); uid = abms->GetPendingWantUid(target); return ERR_OK; } ErrCode AbilityManagerClient::GetPendingWantUserId(const sptr &target, int32_t &userId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); if (target == nullptr) { HILOG_ERROR("target is nullptr."); return ABILITY_SERVICE_NOT_CONNECTED; } - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); userId = abms->GetPendingWantUserId(target); return ERR_OK; } ErrCode AbilityManagerClient::GetPendingWantBundleName(const sptr &target, std::string &bundleName) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); if (target == nullptr) { HILOG_ERROR("target is nullptr."); return ABILITY_SERVICE_NOT_CONNECTED; } - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); bundleName = abms->GetPendingWantBundleName(target); return ERR_OK; } ErrCode AbilityManagerClient::GetPendingWantCode(const sptr &target, int32_t &code) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); if (target == nullptr) { HILOG_ERROR("target is nullptr."); return ABILITY_SERVICE_NOT_CONNECTED; } - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); code = abms->GetPendingWantCode(target); return ERR_OK; } ErrCode AbilityManagerClient::GetPendingWantType(const sptr &target, int32_t &type) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); if (target == nullptr) { HILOG_ERROR("target is nullptr."); return ABILITY_SERVICE_NOT_CONNECTED; } - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); type = abms->GetPendingWantType(target); type < 0 ? type = 0 : type; return ERR_OK; @@ -573,7 +585,6 @@ ErrCode AbilityManagerClient::GetPendingWantType(const sptr &target void AbilityManagerClient::RegisterCancelListener(const sptr &sender, const sptr &recevier) { - CHECK_REMOTE_OBJECT(remoteObject_); if (sender == nullptr) { HILOG_ERROR("sender is nullptr."); return; @@ -582,14 +593,14 @@ void AbilityManagerClient::RegisterCancelListener(const sptr &sende HILOG_ERROR("recevier is nullptr."); return; } - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN(abms); abms->RegisterCancelListener(sender, recevier); } void AbilityManagerClient::UnregisterCancelListener( const sptr &sender, const sptr &recevier) { - CHECK_REMOTE_OBJECT(remoteObject_); if (sender == nullptr) { HILOG_ERROR("sender is nullptr."); return; @@ -598,13 +609,13 @@ void AbilityManagerClient::UnregisterCancelListener( HILOG_ERROR("recevier is nullptr."); return; } - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN(abms); abms->UnregisterCancelListener(sender, recevier); } ErrCode AbilityManagerClient::GetPendingRequestWant(const sptr &target, std::shared_ptr &want) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); if (target == nullptr) { HILOG_ERROR("target is nullptr."); return ABILITY_SERVICE_NOT_CONNECTED; @@ -613,13 +624,13 @@ ErrCode AbilityManagerClient::GetPendingRequestWant(const sptr &tar HILOG_ERROR("want is nullptr."); return ABILITY_SERVICE_NOT_CONNECTED; } - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->GetPendingRequestWant(target, want); } ErrCode AbilityManagerClient::GetWantSenderInfo(const sptr &target, std::shared_ptr &info) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); if (target == nullptr) { HILOG_ERROR("target is nullptr."); return ABILITY_SERVICE_NOT_CONNECTED; @@ -628,14 +639,15 @@ ErrCode AbilityManagerClient::GetWantSenderInfo(const sptr &target, HILOG_ERROR("info is nullptr."); return ABILITY_SERVICE_NOT_CONNECTED; } - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->GetWantSenderInfo(target, info); } ErrCode AbilityManagerClient::SetShowOnLockScreen(bool isAllow) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->SetShowOnLockScreen(isAllow); } @@ -645,10 +657,9 @@ ErrCode AbilityManagerClient::SetShowOnLockScreen(bool isAllow) */ void AbilityManagerClient::GetSystemMemoryAttr(AppExecFwk::SystemMemoryAttr &memoryInfo) { - CHECK_REMOTE_OBJECT(remoteObject_); - auto abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN(abms); abms->GetSystemMemoryAttr(memoryInfo); - return; } ErrCode AbilityManagerClient::ContinueMission(const std::string &srcDeviceId, const std::string &dstDeviceId, @@ -658,9 +669,9 @@ ErrCode AbilityManagerClient::ContinueMission(const std::string &srcDeviceId, co HILOG_ERROR("srcDeviceId or dstDeviceId or callback is null!"); return ERR_INVALID_VALUE; } - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); int result = abms->ContinueMission(srcDeviceId, dstDeviceId, missionId, callback, wantParams); return result; } @@ -668,9 +679,8 @@ ErrCode AbilityManagerClient::ContinueMission(const std::string &srcDeviceId, co ErrCode AbilityManagerClient::StartContinuation(const Want &want, const sptr &abilityToken, int32_t status) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); int result = abms->StartContinuation(want, abilityToken, status); return result; } @@ -678,121 +688,103 @@ ErrCode AbilityManagerClient::StartContinuation(const Want &want, const sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN(abms); abms->NotifyCompleteContinuation(deviceId, sessionId, isSuccess); } ErrCode AbilityManagerClient::LockMissionForCleanup(int32_t missionId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->LockMissionForCleanup(missionId); } ErrCode AbilityManagerClient::UnlockMissionForCleanup(int32_t missionId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->UnlockMissionForCleanup(missionId); } ErrCode AbilityManagerClient::RegisterMissionListener(const sptr &listener) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->RegisterMissionListener(listener); } ErrCode AbilityManagerClient::UnRegisterMissionListener(const sptr &listener) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->UnRegisterMissionListener(listener); } ErrCode AbilityManagerClient::RegisterMissionListener(const std::string &deviceId, const sptr &listener) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, REGISTER_REMOTE_MISSION_LISTENER_FAIL); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->RegisterMissionListener(deviceId, listener); } ErrCode AbilityManagerClient::UnRegisterMissionListener(const std::string &deviceId, const sptr &listener) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, UNREGISTER_REMOTE_MISSION_LISTENER_FAIL); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->UnRegisterMissionListener(deviceId, listener); } ErrCode AbilityManagerClient::GetMissionInfos(const std::string& deviceId, int32_t numMax, std::vector &missionInfos) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->GetMissionInfos(deviceId, numMax, missionInfos); } ErrCode AbilityManagerClient::GetMissionInfo(const std::string& deviceId, int32_t missionId, MissionInfo &missionInfo) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->GetMissionInfo(deviceId, missionId, missionInfo); } ErrCode AbilityManagerClient::CleanMission(int32_t missionId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->CleanMission(missionId); } ErrCode AbilityManagerClient::CleanAllMissions() { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->CleanAllMissions(); } ErrCode AbilityManagerClient::MoveMissionToFront(int32_t missionId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->MoveMissionToFront(missionId); } ErrCode AbilityManagerClient::MoveMissionToFront(int32_t missionId, const StartOptions &startOptions) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->MoveMissionToFront(missionId, startOptions); } ErrCode AbilityManagerClient::GetMissionIdByToken(const sptr &token, int32_t &missionId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); - if (!abms) { - HILOG_ERROR("ability manager service connect failed!"); - return ABILITY_SERVICE_NOT_CONNECTED; - } - + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); missionId = abms->GetMissionIdByToken(token); if (missionId <= 0) { HILOG_ERROR("get missionid by token failed!"); @@ -804,8 +796,8 @@ ErrCode AbilityManagerClient::GetMissionIdByToken(const sptr &tok ErrCode AbilityManagerClient::StartAbilityByCall( const Want &want, const sptr &connect, const sptr &callToken) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); HILOG_DEBUG("AbilityManagerClient::StartAbilityByCall called."); return abms->StartAbilityByCall(want, connect, callToken); } @@ -813,29 +805,29 @@ ErrCode AbilityManagerClient::StartAbilityByCall( ErrCode AbilityManagerClient::ReleaseAbility( const sptr &connect, const AppExecFwk::ElementName &element) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->ReleaseAbility(connect, element); } ErrCode AbilityManagerClient::GetAbilityRunningInfos(std::vector &info) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->GetAbilityRunningInfos(info); } ErrCode AbilityManagerClient::GetExtensionRunningInfos(int upperLimit, std::vector &info) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->GetExtensionRunningInfos(upperLimit, info); } ErrCode AbilityManagerClient::GetProcessRunningInfos(std::vector &info) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->GetProcessRunningInfos(info); } @@ -848,8 +840,8 @@ ErrCode AbilityManagerClient::GetProcessRunningInfos(std::vector(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->StartSyncRemoteMissions(devId, fixConflict, tag); } /** @@ -859,142 +851,163 @@ ErrCode AbilityManagerClient::StartSyncRemoteMissions(const std::string &devId, */ ErrCode AbilityManagerClient::StopSyncRemoteMissions(const std::string &devId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - auto abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->StopSyncRemoteMissions(devId); } ErrCode AbilityManagerClient::StartUser(int accountId) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->StartUser(accountId); } ErrCode AbilityManagerClient::StopUser(int accountId, const sptr &callback) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->StopUser(accountId, callback); } ErrCode AbilityManagerClient::RegisterSnapshotHandler(const sptr& handler) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - auto abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->RegisterSnapshotHandler(handler); } ErrCode AbilityManagerClient::GetMissionSnapshot(const std::string& deviceId, int32_t missionId, MissionSnapshot& snapshot) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - auto abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->GetMissionSnapshot(deviceId, missionId, snapshot); } ErrCode AbilityManagerClient::StartUserTest(const Want &want, const sptr &observer) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->StartUserTest(want, observer); } ErrCode AbilityManagerClient::FinishUserTest( const std::string &msg, const int &resultCode, const std::string &bundleName) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->FinishUserTest(msg, resultCode, bundleName); } ErrCode AbilityManagerClient::GetCurrentTopAbility(sptr &token) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->GetCurrentTopAbility(token); } ErrCode AbilityManagerClient::DelegatorDoAbilityForeground(const sptr &token) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->DelegatorDoAbilityForeground(token); } ErrCode AbilityManagerClient::DelegatorDoAbilityBackground(const sptr &token) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->DelegatorDoAbilityBackground(token); } ErrCode AbilityManagerClient::SetMissionLabel(const sptr &token, const std::string& label) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - auto abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->SetMissionLabel(token, label); } ErrCode AbilityManagerClient::DoAbilityForeground(const sptr &token, uint32_t flag) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->DoAbilityForeground(token, flag); } ErrCode AbilityManagerClient::DoAbilityBackground(const sptr &token, uint32_t flag) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->DoAbilityBackground(token, flag); } ErrCode AbilityManagerClient::SetAbilityController(const sptr &abilityController, bool imAStabilityTest) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->SetAbilityController(abilityController, imAStabilityTest); } ErrCode AbilityManagerClient::SendANRProcessID(int pid) { - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->SendANRProcessID(pid); } ErrCode AbilityManagerClient::BlockAmsService() { HILOG_INFO("[%{public}s(%{public}s)] enter", __FILE__, __FUNCTION__); - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->BlockAmsService(); } ErrCode AbilityManagerClient::BlockAbility(int32_t abilityRecordId) { HILOG_INFO("[%{public}s(%{public}s)] enter", __FILE__, __FUNCTION__); - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->BlockAbility(abilityRecordId); } ErrCode AbilityManagerClient::BlockAppService() { HILOG_INFO("[%{public}s(%{public}s)] enter", __FILE__, __FUNCTION__); - CHECK_REMOTE_OBJECT_AND_RETURN(remoteObject_, ABILITY_SERVICE_NOT_CONNECTED); - sptr abms = iface_cast(remoteObject_); + auto abms = GetAbilityManager(); + CHECK_POINTER_RETURN_NOT_CONNECTED(abms); return abms->BlockAppService(); - return 0; +} + +sptr AbilityManagerClient::GetAbilityManager() +{ + std::lock_guard lock(mutex_); + if (!proxy_) { + (void)Connect(); + } + + return proxy_; +} + +void AbilityManagerClient::ResetProxy(const wptr& remote) +{ + std::lock_guard lock(mutex_); + if (!proxy_) { + return; + } + + auto serviceRemote = proxy_->AsObject(); + if ((serviceRemote != nullptr) && (serviceRemote == remote.promote())) { + serviceRemote->RemoveDeathRecipient(deathRecipient_); + proxy_ = nullptr; + } +} + +void AbilityManagerClient::AbilityMgrDeathRecipient::OnRemoteDied(const wptr& remote) +{ + HILOG_INFO("AbilityMgrDeathRecipient handle remote died."); + AbilityManagerClient::GetInstance()->ResetProxy(remote); } } // namespace AAFwk -} // namespace AAFwk +} // namespace OHOS -- Gitee From c9c071c4f98a60d59e8741886da9eaca77102bdb Mon Sep 17 00:00:00 2001 From: caochunlei Date: Tue, 15 Mar 2022 09:46:47 +0800 Subject: [PATCH 2/7] caochunlei1@huawei.com Signed-off-by: caochunlei --- services/appmgr/test/BUILD.gn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/appmgr/test/BUILD.gn b/services/appmgr/test/BUILD.gn index 8ec4e9fcd96..ee9c9db6d25 100644 --- a/services/appmgr/test/BUILD.gn +++ b/services/appmgr/test/BUILD.gn @@ -120,7 +120,7 @@ group("unittest") { "unittest/ams_ability_running_record_test:unittest", "unittest/ams_app_death_recipient_test:unittest", "unittest/ams_app_life_cycle_test:unittest", - "unittest/ams_app_mgr_client_test:unittest", + # "unittest/ams_app_mgr_client_test:unittest", "unittest/ams_app_running_record_test:unittest", "unittest/ams_app_state_callback_test:unittest", "unittest/ams_app_workflow_test:unittest", -- Gitee From a7b2bf69bc328c806f6921f023ec488248be91bf Mon Sep 17 00:00:00 2001 From: caochunlei Date: Tue, 15 Mar 2022 16:29:24 +0800 Subject: [PATCH 3/7] caochunlei1@huawei.com Signed-off-by: caochunlei --- .../test/mock/AMS/mock_ability_manager_client.cpp | 1 + frameworks/kits/test/mock/AMS/mock_ability_manager_client.cpp | 1 + .../innerkits/app_manager/src/appmgr/app_mgr_client.cpp | 4 ++-- services/abilitymgr/src/ability_manager_client.cpp | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/frameworks/kits/ability/ability_runtime/test/mock/AMS/mock_ability_manager_client.cpp b/frameworks/kits/ability/ability_runtime/test/mock/AMS/mock_ability_manager_client.cpp index a07cbca78a6..760f1566d1c 100644 --- a/frameworks/kits/ability/ability_runtime/test/mock/AMS/mock_ability_manager_client.cpp +++ b/frameworks/kits/ability/ability_runtime/test/mock/AMS/mock_ability_manager_client.cpp @@ -27,6 +27,7 @@ namespace OHOS { namespace AAFwk { std::shared_ptr mockMTInstance_ = nullptr; std::mutex mockMTMutex_; +sptr remoteObject_; std::shared_ptr AbilityManagerClient::GetInstance() { diff --git a/frameworks/kits/test/mock/AMS/mock_ability_manager_client.cpp b/frameworks/kits/test/mock/AMS/mock_ability_manager_client.cpp index a4d709e9bb9..fcc3a285d79 100644 --- a/frameworks/kits/test/mock/AMS/mock_ability_manager_client.cpp +++ b/frameworks/kits/test/mock/AMS/mock_ability_manager_client.cpp @@ -27,6 +27,7 @@ namespace OHOS { namespace AAFwk { std::shared_ptr mockMTInstance_ = nullptr; std::mutex mockMTMutex_; +sptr remoteObject_; std::shared_ptr AbilityManagerClient::GetInstance() { diff --git a/interfaces/innerkits/app_manager/src/appmgr/app_mgr_client.cpp b/interfaces/innerkits/app_manager/src/appmgr/app_mgr_client.cpp index 00f5a7f1b05..67f229e95fb 100644 --- a/interfaces/innerkits/app_manager/src/appmgr/app_mgr_client.cpp +++ b/interfaces/innerkits/app_manager/src/appmgr/app_mgr_client.cpp @@ -28,7 +28,7 @@ namespace OHOS { namespace AppExecFwk { -class AppMgrRemoteHolder : public std::enable_shared_from_this{ +class AppMgrRemoteHolder : public std::enable_shared_from_this { public: AppMgrRemoteHolder() = default; @@ -55,7 +55,7 @@ public: deathRecipient_ = sptr(new AppMgrDeathRecipient(me)); if (deathRecipient_ == nullptr) { HILOG_ERROR("%{public}s :Failed to create AppMgrDeathRecipient!", __func__); - return AppMgrResultCode::ERROR_SERVICE_NOT_READY;; + return AppMgrResultCode::ERROR_SERVICE_NOT_READY; } if ((remote_->IsProxyObject()) && (!remote_->AddDeathRecipient(deathRecipient_))) { HILOG_ERROR("%{public}s :Add death recipient to AppMgrService failed.", __func__); diff --git a/services/abilitymgr/src/ability_manager_client.cpp b/services/abilitymgr/src/ability_manager_client.cpp index fda87ef38d9..5b2149f4c90 100644 --- a/services/abilitymgr/src/ability_manager_client.cpp +++ b/services/abilitymgr/src/ability_manager_client.cpp @@ -39,7 +39,7 @@ std::recursive_mutex AbilityManagerClient::mutex_; #define CHECK_POINTER_RETURN_NOT_CONNECTED(object) \ if (!object) { \ HILOG_ERROR("proxy is nullptr."); \ - return ABILITY_SERVICE_NOT_CONNECTED; \ + return ABILITY_SERVICE_NOT_CONNECTED; \ } std::shared_ptr AbilityManagerClient::GetInstance() -- Gitee From e49f4cd3553901e4ed41a6dde1acff3a262243ee Mon Sep 17 00:00:00 2001 From: caochunlei Date: Tue, 15 Mar 2022 20:44:48 +0800 Subject: [PATCH 4/7] caochunlei1@huawei.com Signed-off-by: caochunlei --- .../ability_manager_client_test/ability_manager_client_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/abilitymgr/test/unittest/phone/ability_manager_client_test/ability_manager_client_test.cpp b/services/abilitymgr/test/unittest/phone/ability_manager_client_test/ability_manager_client_test.cpp index e13fa96d214..399904ac1d7 100644 --- a/services/abilitymgr/test/unittest/phone/ability_manager_client_test/ability_manager_client_test.cpp +++ b/services/abilitymgr/test/unittest/phone/ability_manager_client_test/ability_manager_client_test.cpp @@ -54,7 +54,7 @@ void AbilityManagerClientTest::SetUp() { client_ = std::make_shared(); mock_ = new AbilityManagerStubTestMock(); - client_->remoteObject_ = mock_; + client_->proxy_ = mock_; } /* -- Gitee From 1638f487eea10a3a4d929641b627350cc66ccd14 Mon Sep 17 00:00:00 2001 From: caochunlei Date: Tue, 15 Mar 2022 21:27:57 +0800 Subject: [PATCH 5/7] caochunlei1@huawei.com Signed-off-by: caochunlei --- .../native/test/mock/include/mock_ability_manager_clientex.cpp | 1 + .../panding_want_manager_test/panding_want_manager_test.cpp | 2 +- tools/test/moduletest/aa/aa_command_dump_module_test.cpp | 2 +- tools/test/moduletest/aa/aa_command_start_module_test.cpp | 2 +- .../test/moduletest/aa/aa_command_stop_service_module_test.cpp | 2 +- tools/test/unittest/aa/aa_command_dump_test.cpp | 2 +- tools/test/unittest/aa/aa_command_dumpsys_test.cpp | 2 +- tools/test/unittest/aa/aa_command_screen_test.cpp | 2 +- tools/test/unittest/aa/aa_command_start_test.cpp | 2 +- tools/test/unittest/aa/aa_command_stop_service_test.cpp | 2 +- tools/test/unittest/aa/aa_command_test.cpp | 2 +- 11 files changed, 11 insertions(+), 10 deletions(-) diff --git a/frameworks/kits/ability/native/test/mock/include/mock_ability_manager_clientex.cpp b/frameworks/kits/ability/native/test/mock/include/mock_ability_manager_clientex.cpp index 4521d3f9158..80d78caeb88 100644 --- a/frameworks/kits/ability/native/test/mock/include/mock_ability_manager_clientex.cpp +++ b/frameworks/kits/ability/native/test/mock/include/mock_ability_manager_clientex.cpp @@ -27,6 +27,7 @@ namespace OHOS { namespace AAFwk { std::shared_ptr mockInstanceEx_ = nullptr; std::mutex mockMutexEx_; +sptr remoteObject_; std::shared_ptr AbilityManagerClient::GetInstance() { diff --git a/services/test/moduletest/panding_want_manager_test/panding_want_manager_test.cpp b/services/test/moduletest/panding_want_manager_test/panding_want_manager_test.cpp index db7e36154ab..505bb5d6db9 100644 --- a/services/test/moduletest/panding_want_manager_test/panding_want_manager_test.cpp +++ b/services/test/moduletest/panding_want_manager_test/panding_want_manager_test.cpp @@ -111,7 +111,7 @@ void PandingWantManagerTest::SetUp() amsSerice = new MockAbilityMgrService(); } AbilityManagerClient::GetInstance(); - AbilityManagerClient::GetInstance()->remoteObject_ = amsSerice; + AbilityManagerClient::GetInstance()->proxy_ = amsSerice; } void PandingWantManagerTest::TearDown() diff --git a/tools/test/moduletest/aa/aa_command_dump_module_test.cpp b/tools/test/moduletest/aa/aa_command_dump_module_test.cpp index 3d5ed40bfbb..255fbe38139 100644 --- a/tools/test/moduletest/aa/aa_command_dump_module_test.cpp +++ b/tools/test/moduletest/aa/aa_command_dump_module_test.cpp @@ -65,7 +65,7 @@ void AaCommandDumpModuleTest::MakeMockObjects() const // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); - managerClientPtr->remoteObject_ = managerStubPtr; + managerClientPtr->proxy_ = managerStubPtr; } /** diff --git a/tools/test/moduletest/aa/aa_command_start_module_test.cpp b/tools/test/moduletest/aa/aa_command_start_module_test.cpp index 3dcc94938e8..557d5a91380 100644 --- a/tools/test/moduletest/aa/aa_command_start_module_test.cpp +++ b/tools/test/moduletest/aa/aa_command_start_module_test.cpp @@ -65,7 +65,7 @@ void AaCommandStartModuleTest::MakeMockObjects() const // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); - managerClientPtr->remoteObject_ = managerStubPtr; + managerClientPtr->proxy_ = managerStubPtr; } /** diff --git a/tools/test/moduletest/aa/aa_command_stop_service_module_test.cpp b/tools/test/moduletest/aa/aa_command_stop_service_module_test.cpp index 761d18e5aea..1998ed4b6b6 100644 --- a/tools/test/moduletest/aa/aa_command_stop_service_module_test.cpp +++ b/tools/test/moduletest/aa/aa_command_stop_service_module_test.cpp @@ -65,7 +65,7 @@ void AaCommandStopServiceModuleTest::MakeMockObjects() const // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); - managerClientPtr->remoteObject_ = managerStubPtr; + managerClientPtr->proxy_ = managerStubPtr; } /** diff --git a/tools/test/unittest/aa/aa_command_dump_test.cpp b/tools/test/unittest/aa/aa_command_dump_test.cpp index 3f2e6884e57..0ccec4678c5 100644 --- a/tools/test/unittest/aa/aa_command_dump_test.cpp +++ b/tools/test/unittest/aa/aa_command_dump_test.cpp @@ -70,7 +70,7 @@ void AaCommandDumpTest::MakeMockObjects() const // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); - managerClientPtr->remoteObject_ = managerStubPtr; + managerClientPtr->proxy_ = managerStubPtr; } /** diff --git a/tools/test/unittest/aa/aa_command_dumpsys_test.cpp b/tools/test/unittest/aa/aa_command_dumpsys_test.cpp index 893aa06d564..3e67ac25128 100644 --- a/tools/test/unittest/aa/aa_command_dumpsys_test.cpp +++ b/tools/test/unittest/aa/aa_command_dumpsys_test.cpp @@ -69,7 +69,7 @@ void AaCommandDumpsysTest::MakeMockObjects() const // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); - managerClientPtr->remoteObject_ = managerStubPtr; + managerClientPtr->proxy_ = managerStubPtr; } /** diff --git a/tools/test/unittest/aa/aa_command_screen_test.cpp b/tools/test/unittest/aa/aa_command_screen_test.cpp index 683addbb9b4..b757ec60d14 100644 --- a/tools/test/unittest/aa/aa_command_screen_test.cpp +++ b/tools/test/unittest/aa/aa_command_screen_test.cpp @@ -65,7 +65,7 @@ void AaCommandScreenTest::MakeMockObjects() const // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); - managerClientPtr->remoteObject_ = managerStubPtr; + managerClientPtr->proxy_ = managerStubPtr; } /** diff --git a/tools/test/unittest/aa/aa_command_start_test.cpp b/tools/test/unittest/aa/aa_command_start_test.cpp index 9dc8f1359a5..750242fe73c 100644 --- a/tools/test/unittest/aa/aa_command_start_test.cpp +++ b/tools/test/unittest/aa/aa_command_start_test.cpp @@ -65,7 +65,7 @@ void AaCommandStartTest::MakeMockObjects() const // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); - managerClientPtr->remoteObject_ = managerStubPtr; + managerClientPtr->proxy_ = managerStubPtr; } /** diff --git a/tools/test/unittest/aa/aa_command_stop_service_test.cpp b/tools/test/unittest/aa/aa_command_stop_service_test.cpp index d6efcbc444c..884c2926261 100644 --- a/tools/test/unittest/aa/aa_command_stop_service_test.cpp +++ b/tools/test/unittest/aa/aa_command_stop_service_test.cpp @@ -65,7 +65,7 @@ void AaCommandStopServiceTest::MakeMockObjects() const // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); - managerClientPtr->remoteObject_ = managerStubPtr; + managerClientPtr->proxy_ = managerStubPtr; } /** diff --git a/tools/test/unittest/aa/aa_command_test.cpp b/tools/test/unittest/aa/aa_command_test.cpp index bab69473e01..3b0aa93b9f1 100644 --- a/tools/test/unittest/aa/aa_command_test.cpp +++ b/tools/test/unittest/aa/aa_command_test.cpp @@ -63,7 +63,7 @@ void AaCommandTest::MakeMockObjects() const // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); - managerClientPtr->remoteObject_ = managerStubPtr; + managerClientPtr->proxy_ = managerStubPtr; } /** -- Gitee From cfb8df9d695b99861f1f600cf8bffb36f13d8b7f Mon Sep 17 00:00:00 2001 From: caochunlei Date: Tue, 15 Mar 2022 22:21:13 +0800 Subject: [PATCH 6/7] caochunlei1@huawei.com Signed-off-by: caochunlei --- tools/test/moduletest/aa/aa_command_start_module_test.cpp | 2 +- .../test/moduletest/aa/aa_command_stop_service_module_test.cpp | 2 +- tools/test/unittest/aa/aa_command_dump_test.cpp | 2 +- tools/test/unittest/aa/aa_command_dumpsys_test.cpp | 2 +- tools/test/unittest/aa/aa_command_screen_test.cpp | 2 +- tools/test/unittest/aa/aa_command_start_test.cpp | 2 +- tools/test/unittest/aa/aa_command_stop_service_test.cpp | 2 +- tools/test/unittest/aa/aa_command_test.cpp | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/test/moduletest/aa/aa_command_start_module_test.cpp b/tools/test/moduletest/aa/aa_command_start_module_test.cpp index 557d5a91380..21d57fb65aa 100644 --- a/tools/test/moduletest/aa/aa_command_start_module_test.cpp +++ b/tools/test/moduletest/aa/aa_command_start_module_test.cpp @@ -61,7 +61,7 @@ void AaCommandStartModuleTest::TearDown() void AaCommandStartModuleTest::MakeMockObjects() const { // mock a stub - auto managerStubPtr = sptr(new MockAbilityManagerStub()); + auto managerStubPtr = sptr(new MockAbilityManagerStub()); // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); diff --git a/tools/test/moduletest/aa/aa_command_stop_service_module_test.cpp b/tools/test/moduletest/aa/aa_command_stop_service_module_test.cpp index 1998ed4b6b6..d120dd23c66 100644 --- a/tools/test/moduletest/aa/aa_command_stop_service_module_test.cpp +++ b/tools/test/moduletest/aa/aa_command_stop_service_module_test.cpp @@ -61,7 +61,7 @@ void AaCommandStopServiceModuleTest::TearDown() void AaCommandStopServiceModuleTest::MakeMockObjects() const { // mock a stub - auto managerStubPtr = sptr(new MockAbilityManagerStub()); + auto managerStubPtr = sptr(new MockAbilityManagerStub()); // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); diff --git a/tools/test/unittest/aa/aa_command_dump_test.cpp b/tools/test/unittest/aa/aa_command_dump_test.cpp index 0ccec4678c5..304c3c6d467 100644 --- a/tools/test/unittest/aa/aa_command_dump_test.cpp +++ b/tools/test/unittest/aa/aa_command_dump_test.cpp @@ -66,7 +66,7 @@ void AaCommandDumpTest::TearDown() void AaCommandDumpTest::MakeMockObjects() const { // mock a stub - auto managerStubPtr = sptr(new MockAbilityManagerStub()); + auto managerStubPtr = sptr(new MockAbilityManagerStub()); // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); diff --git a/tools/test/unittest/aa/aa_command_dumpsys_test.cpp b/tools/test/unittest/aa/aa_command_dumpsys_test.cpp index 3e67ac25128..e5b024c53a3 100644 --- a/tools/test/unittest/aa/aa_command_dumpsys_test.cpp +++ b/tools/test/unittest/aa/aa_command_dumpsys_test.cpp @@ -65,7 +65,7 @@ void AaCommandDumpsysTest::TearDown() void AaCommandDumpsysTest::MakeMockObjects() const { // mock a stub - auto managerStubPtr = sptr(new MockAbilityManagerStub()); + auto managerStubPtr = sptr(new MockAbilityManagerStub()); // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); diff --git a/tools/test/unittest/aa/aa_command_screen_test.cpp b/tools/test/unittest/aa/aa_command_screen_test.cpp index b757ec60d14..c0dda5ee80c 100644 --- a/tools/test/unittest/aa/aa_command_screen_test.cpp +++ b/tools/test/unittest/aa/aa_command_screen_test.cpp @@ -61,7 +61,7 @@ void AaCommandScreenTest::TearDown() void AaCommandScreenTest::MakeMockObjects() const { // mock a stub - auto managerStubPtr = sptr(new MockAbilityManagerStub()); + auto managerStubPtr = sptr(new MockAbilityManagerStub()); // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); diff --git a/tools/test/unittest/aa/aa_command_start_test.cpp b/tools/test/unittest/aa/aa_command_start_test.cpp index 750242fe73c..a22fd037e89 100644 --- a/tools/test/unittest/aa/aa_command_start_test.cpp +++ b/tools/test/unittest/aa/aa_command_start_test.cpp @@ -61,7 +61,7 @@ void AaCommandStartTest::TearDown() void AaCommandStartTest::MakeMockObjects() const { // mock a stub - auto managerStubPtr = sptr(new MockAbilityManagerStub()); + auto managerStubPtr = sptr(new MockAbilityManagerStub()); // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); diff --git a/tools/test/unittest/aa/aa_command_stop_service_test.cpp b/tools/test/unittest/aa/aa_command_stop_service_test.cpp index 884c2926261..d07378c1e15 100644 --- a/tools/test/unittest/aa/aa_command_stop_service_test.cpp +++ b/tools/test/unittest/aa/aa_command_stop_service_test.cpp @@ -61,7 +61,7 @@ void AaCommandStopServiceTest::TearDown() void AaCommandStopServiceTest::MakeMockObjects() const { // mock a stub - auto managerStubPtr = sptr(new MockAbilityManagerStub()); + auto managerStubPtr = sptr(new MockAbilityManagerStub()); // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); diff --git a/tools/test/unittest/aa/aa_command_test.cpp b/tools/test/unittest/aa/aa_command_test.cpp index 3b0aa93b9f1..588035e56a4 100644 --- a/tools/test/unittest/aa/aa_command_test.cpp +++ b/tools/test/unittest/aa/aa_command_test.cpp @@ -59,7 +59,7 @@ void AaCommandTest::TearDown() void AaCommandTest::MakeMockObjects() const { // mock a stub - auto managerStubPtr = sptr(new MockAbilityManagerStub()); + auto managerStubPtr = sptr(new MockAbilityManagerStub()); // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); -- Gitee From fedb899314fa92b94d8b46ef6bc353f72ae07ba1 Mon Sep 17 00:00:00 2001 From: caochunlei Date: Wed, 16 Mar 2022 14:46:23 +0800 Subject: [PATCH 7/7] caochunlei1@huawei.com Signed-off-by: caochunlei --- services/appmgr/test/BUILD.gn | 1 + tools/test/moduletest/aa/aa_command_dump_module_test.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/services/appmgr/test/BUILD.gn b/services/appmgr/test/BUILD.gn index ee9c9db6d25..ce42d6113ad 100644 --- a/services/appmgr/test/BUILD.gn +++ b/services/appmgr/test/BUILD.gn @@ -120,6 +120,7 @@ group("unittest") { "unittest/ams_ability_running_record_test:unittest", "unittest/ams_app_death_recipient_test:unittest", "unittest/ams_app_life_cycle_test:unittest", + # "unittest/ams_app_mgr_client_test:unittest", "unittest/ams_app_running_record_test:unittest", "unittest/ams_app_state_callback_test:unittest", diff --git a/tools/test/moduletest/aa/aa_command_dump_module_test.cpp b/tools/test/moduletest/aa/aa_command_dump_module_test.cpp index 255fbe38139..7b7acab0439 100644 --- a/tools/test/moduletest/aa/aa_command_dump_module_test.cpp +++ b/tools/test/moduletest/aa/aa_command_dump_module_test.cpp @@ -61,7 +61,7 @@ void AaCommandDumpModuleTest::TearDown() void AaCommandDumpModuleTest::MakeMockObjects() const { // mock a stub - auto managerStubPtr = sptr(new MockAbilityManagerStub()); + auto managerStubPtr = sptr(new MockAbilityManagerStub()); // set the mock stub auto managerClientPtr = AbilityManagerClient::GetInstance(); -- Gitee