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 a07cbca78a..760f1566d1 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/ability/native/test/mock/include/mock_ability_manager_clientex.cpp b/frameworks/kits/ability/native/test/mock/include/mock_ability_manager_clientex.cpp index 4521d3f915..80d78caeb8 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/frameworks/kits/test/mock/AMS/mock_ability_manager_client.cpp b/frameworks/kits/test/mock/AMS/mock_ability_manager_client.cpp index a4d709e9bb..fcc3a285d7 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/ability_manager/include/ability_manager_client.h b/interfaces/innerkits/ability_manager/include/ability_manager_client.h index 4e03b3fe77..7b1d833abb 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 86e8f890aa..e499e0c191 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 1250bdf8d2..67f229e95f 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; + if (mgrHolder_) { + return mgrHolder_->ConnectAppMgrService(); } - remote_ = serviceManager_->GetAppMgrService(); - if (!remote_) { - return AppMgrResultCode::ERROR_SERVICE_NOT_READY; - } - 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 1c05f76dfa..5b2149f4c9 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 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 e13fa96d21..399904ac1d 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_; } /* diff --git a/services/appmgr/test/BUILD.gn b/services/appmgr/test/BUILD.gn index 8ec4e9fcd9..ce42d6113a 100644 --- a/services/appmgr/test/BUILD.gn +++ b/services/appmgr/test/BUILD.gn @@ -120,7 +120,8 @@ 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", 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 db7e36154a..505bb5d6db 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 3d5ed40bfb..7b7acab043 100644 --- a/tools/test/moduletest/aa/aa_command_dump_module_test.cpp +++ b/tools/test/moduletest/aa/aa_command_dump_module_test.cpp @@ -61,11 +61,11 @@ 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(); - 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 3dcc94938e..21d57fb65a 100644 --- a/tools/test/moduletest/aa/aa_command_start_module_test.cpp +++ b/tools/test/moduletest/aa/aa_command_start_module_test.cpp @@ -61,11 +61,11 @@ 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(); - 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 761d18e5ae..d120dd23c6 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,11 +61,11 @@ 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(); - 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 3f2e6884e5..304c3c6d46 100644 --- a/tools/test/unittest/aa/aa_command_dump_test.cpp +++ b/tools/test/unittest/aa/aa_command_dump_test.cpp @@ -66,11 +66,11 @@ 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(); - 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 893aa06d56..e5b024c53a 100644 --- a/tools/test/unittest/aa/aa_command_dumpsys_test.cpp +++ b/tools/test/unittest/aa/aa_command_dumpsys_test.cpp @@ -65,11 +65,11 @@ 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(); - 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 683addbb9b..c0dda5ee80 100644 --- a/tools/test/unittest/aa/aa_command_screen_test.cpp +++ b/tools/test/unittest/aa/aa_command_screen_test.cpp @@ -61,11 +61,11 @@ 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(); - 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 9dc8f1359a..a22fd037e8 100644 --- a/tools/test/unittest/aa/aa_command_start_test.cpp +++ b/tools/test/unittest/aa/aa_command_start_test.cpp @@ -61,11 +61,11 @@ 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(); - 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 d6efcbc444..d07378c1e1 100644 --- a/tools/test/unittest/aa/aa_command_stop_service_test.cpp +++ b/tools/test/unittest/aa/aa_command_stop_service_test.cpp @@ -61,11 +61,11 @@ 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(); - 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 bab69473e0..588035e56a 100644 --- a/tools/test/unittest/aa/aa_command_test.cpp +++ b/tools/test/unittest/aa/aa_command_test.cpp @@ -59,11 +59,11 @@ 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(); - managerClientPtr->remoteObject_ = managerStubPtr; + managerClientPtr->proxy_ = managerStubPtr; } /**