From aaa2ee3b6b0cc84d740ac079c1af5f923fcb4944 Mon Sep 17 00:00:00 2001 From: liweifeng Date: Tue, 26 Sep 2023 19:51:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=A3=80=E8=A7=86=E4=BF=AE?= =?UTF-8?q?=E6=94=B9,=E5=A2=9E=E5=8A=A0=E6=8C=87=E9=92=88=E5=88=A4?= =?UTF-8?q?=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liweifeng Change-Id: Idaea8dbcf929e66774130c52c4476a7d7bc0afbe --- services/include/form_task_mgr.h | 6 ++-- services/src/form_task_mgr.cpp | 55 ++++++++++++++++++++------------ 2 files changed, 39 insertions(+), 22 deletions(-) diff --git a/services/include/form_task_mgr.h b/services/include/form_task_mgr.h index 276556da77..76e425745b 100644 --- a/services/include/form_task_mgr.h +++ b/services/include/form_task_mgr.h @@ -180,7 +180,7 @@ public: */ void PostAcquireStateTaskToHost(AppExecFwk::FormState state, const AAFwk::Want &want, const sptr &remoteObject); - + /** * @brief Post acquire form data message to form host(task). * @param wantParams Indicates the data information acquired by the form. @@ -326,7 +326,7 @@ private: */ void AcquireFormDataBack(const AAFwk::WantParams &wantParams, int64_t requestCode, const sptr &remoteObject); - + /** * @brief Acquire form data to form provider. * @param formId The Id of the form. @@ -388,6 +388,8 @@ private: int64_t formId, const std::string &compId, const std::string &uid, const sptr &remoteObject); void OnUnlock(const sptr &remoteObject); + + void RemoveConnection(int32_t connectId); private: std::shared_ptr serialQueue_ = nullptr; }; diff --git a/services/src/form_task_mgr.cpp b/services/src/form_task_mgr.cpp index c838a2401e..7e02317528 100644 --- a/services/src/form_task_mgr.cpp +++ b/services/src/form_task_mgr.cpp @@ -461,13 +461,13 @@ void FormTaskMgr::NotifyFormUpdate(const int64_t formId, const Want &want, const auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0); sptr formProviderProxy = iface_cast(remoteObject); if (formProviderProxy == nullptr) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("%{public}s fail, failed to get formProviderProxy", __func__); return; } int error = formProviderProxy->NotifyFormUpdate(formId, want, FormSupplyCallback::GetInstance()); if (error != ERR_OK) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("%{public}s fail, Failed to notify form update.", __func__); } } @@ -489,14 +489,14 @@ void FormTaskMgr::EventNotify(const std::vector &formEvents, const int3 auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0); sptr formProviderProxy = iface_cast(remoteObject); if (formProviderProxy == nullptr) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("%{public}s fail, failed to get formProviderProxy", __func__); return; } int error = formProviderProxy->EventNotify(formEvents, formVisibleType, want, FormSupplyCallback::GetInstance()); if (error != ERR_OK) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("%{public}s fail, Failed to send event notify.", __func__); } } @@ -516,14 +516,14 @@ void FormTaskMgr::NotifyCastTemp(const int64_t formId, const Want &want, const s auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0); sptr formProviderProxy = iface_cast(remoteObject); if (formProviderProxy == nullptr) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("%{public}s fail, failed to get formProviderProxy", __func__); return; } int error = formProviderProxy->NotifyFormCastTempForm(formId, want, FormSupplyCallback::GetInstance()); if (error != ERR_OK) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("%{public}s fail, Failed to get acquire provider form info", __func__); } } @@ -603,7 +603,7 @@ void FormTaskMgr::ProviderBatchDelete(std::set &formIds, const Want &wa auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0); sptr formProviderProxy = iface_cast(remoteObject); if (formProviderProxy == nullptr) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("%{public}s fail, Failed to get formProviderProxy", __func__); return; } @@ -611,7 +611,7 @@ void FormTaskMgr::ProviderBatchDelete(std::set &formIds, const Want &wa vFormIds.assign(formIds.begin(), formIds.end()); int error = formProviderProxy->NotifyFormsDelete(vFormIds, want, FormSupplyCallback::GetInstance()); if (error != ERR_OK) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("%{public}s failed", __func__); } } @@ -629,14 +629,14 @@ void FormTaskMgr::FireFormEvent(const int64_t formId, const std::string &message auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0); sptr formProviderProxy = iface_cast(remoteObject); if (formProviderProxy == nullptr) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("%{public}s, Failed to get formProviderProxy", __func__); return; } int error = formProviderProxy->FireFormEvent(formId, message, want, FormSupplyCallback::GetInstance()); if (error != ERR_OK) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("%{public}s, Failed to fire message event to form provider", __func__); } HILOG_INFO("%{public}s end", __func__); @@ -656,14 +656,14 @@ void FormTaskMgr::AcquireState(const Want &wantArg, const std::string &provider, auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0); sptr formProviderProxy = iface_cast(remoteObject); if (formProviderProxy == nullptr) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("%{public}s, Failed to get formProviderProxy", __func__); return; } int error = formProviderProxy->AcquireState(wantArg, provider, want, FormSupplyCallback::GetInstance()); if (error != ERR_OK) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("%{public}s, Failed to acquire form state to form provider", __func__); } HILOG_INFO("%{public}s end", __func__); @@ -682,17 +682,17 @@ void FormTaskMgr::AcquireFormData(const int64_t formId, const Want &want, const int64_t requestCode = static_cast(want.GetLongParam(Constants::FORM_ACQUIRE_DATA_REQUEST_CODE, 0)); sptr formProviderProxy = iface_cast(remoteObject); if (formProviderProxy == nullptr) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("Failed to get formProviderProxy"); return; } int error = formProviderProxy->AcquireFormData(formId, FormSupplyCallback::GetInstance(), requestCode); if (error != ERR_OK) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("Failed to acquire form state to form provider"); } - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_INFO("end"); } @@ -789,7 +789,12 @@ FormJsInfo FormTaskMgr::CreateFormJsInfo(const int64_t formId, const FormRecord void FormTaskMgr::FormShareSendResponse(int64_t formShareRequestCode, int32_t result) { - DelayedSingleton::GetInstance()->SendResponse(formShareRequestCode, result); + auto formShareMgr = DelayedSingleton::GetInstance(); + if (formShareMgr == nullptr) { + HILOG_ERROR("formShareMgr is nullptr."); + return; + } + formShareMgr->SendResponse(formShareRequestCode, result); } void FormTaskMgr::PostRenderForm(const FormRecord &formRecord, const Want &want, @@ -814,7 +819,7 @@ void FormTaskMgr::RenderForm(const FormRecord &formRecord, const Want &want, con auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0); sptr remoteFormRender = iface_cast(remoteObject); if (remoteFormRender == nullptr) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("%{public}s fail, Failed to get form render proxy.", __func__); return; } @@ -822,7 +827,7 @@ void FormTaskMgr::RenderForm(const FormRecord &formRecord, const Want &want, con FormJsInfo formJsInfo = CreateFormJsInfo(formRecord.formId, formRecord); int32_t error = remoteFormRender->RenderForm(formJsInfo, want, FormSupplyCallback::GetInstance()); if (error != ERR_OK) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("%{public}s fail, Failed to add form renderer", __func__); return; } @@ -853,7 +858,7 @@ void FormTaskMgr::StopRenderingForm( auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0); sptr remoteFormDeleteRender = iface_cast(remoteObject); if (remoteFormDeleteRender == nullptr) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("%{public}s fail, Failed to get form render proxy.", __func__); return; } @@ -861,7 +866,7 @@ void FormTaskMgr::StopRenderingForm( FormJsInfo formJsInfo = CreateFormJsInfo(formRecord.formId, formRecord); int32_t error = remoteFormDeleteRender->StopRenderingForm(formJsInfo, want, FormSupplyCallback::GetInstance()); if (error != ERR_OK) { - FormSupplyCallback::GetInstance()->RemoveConnection(connectId); + RemoveConnection(connectId); HILOG_ERROR("%{public}s fail, Failed to add form renderer", __func__); return; } @@ -971,5 +976,15 @@ void FormTaskMgr::PostOnUnlock(const sptr &remoteObject) serialQueue_->ScheduleTask(FORM_TASK_DELAY_TIME, task); HILOG_DEBUG("end"); } + +void FormTaskMgr::RemoveConnection(int32_t connectId) +{ + auto formSupplyCallback = FormSupplyCallback::GetInstance(); + if (formSupplyCallback == nullptr) { + HILOG_ERROR("formSupplyCallback is nullptr."); + return; + } + formSupplyCallback->RemoveConnection(connectId); +} } // namespace AppExecFwk } // namespace OHOS -- Gitee