diff --git a/frameworks/kits/ability/native/include/form_runtime/js_form_extension.h b/frameworks/kits/ability/native/include/form_runtime/js_form_extension.h index 03324f275e5b9e04f96692607f82144556977206..3b85c24306c92b8b6a918ef875c50644d02643f6 100644 --- a/frameworks/kits/ability/native/include/form_runtime/js_form_extension.h +++ b/frameworks/kits/ability/native/include/form_runtime/js_form_extension.h @@ -57,6 +57,8 @@ public: private: NativeValue* CallObjectMethod(const char* name, NativeValue* const* argv = nullptr, size_t argc = 0); + void GetSrcPath(std::string &srcPath); + JsRuntime& jsRuntime_; std::unique_ptr jsObj_; sptr providerRemoteObject_ = nullptr; diff --git a/frameworks/kits/ability/native/src/form_runtime/js_form_extension.cpp b/frameworks/kits/ability/native/src/form_runtime/js_form_extension.cpp index 9e8cc7c6a1d5b152d55fc25b50c4e0790fb01805..2870b3adf88c0d7097f973277a4b1b4c58e40581 100644 --- a/frameworks/kits/ability/native/src/form_runtime/js_form_extension.cpp +++ b/frameworks/kits/ability/native/src/form_runtime/js_form_extension.cpp @@ -49,12 +49,12 @@ void JsFormExtension::Init(const std::shared_ptr &record, { HILOG_INFO("JsFormExtension::Init begin."); FormExtension::Init(record, application, handler, token); - std::string srcPath(Extension::abilityInfo_->package); - srcPath.append("/assets/js/"); - if (!Extension::abilityInfo_->srcPath.empty()) { - srcPath.append(Extension::abilityInfo_->srcPath).append("/"); + std::string srcPath; + GetSrcPath(srcPath); + if (srcPath.empty()) { + HILOG_ERROR("Failed to get srcPath"); + return; } - srcPath.append(Extension::abilityInfo_->name).append(".abc"); std::string moduleName(Extension::abilityInfo_->moduleName); moduleName.append("::").append(abilityInfo_->name); @@ -266,5 +266,26 @@ NativeValue* JsFormExtension::CallObjectMethod(const char* name, NativeValue* co HILOG_INFO("JsFormExtension::CallFunction(%{public}s), success", name); return handleScope.Escape(nativeEngine.CallFunction(value, method, argv, argc)); } + +void JsFormExtension::GetSrcPath(std::string &srcPath) +{ + if (!Extension::abilityInfo_->isModuleJson) { + /* temporary compatibility api8 + config.json */ + srcPath.append(Extension::abilityInfo_->package); + srcPath.append("/assets/js/"); + if (!Extension::abilityInfo_->srcPath.empty()) { + srcPath.append(Extension::abilityInfo_->srcPath); + } + srcPath.append("/").append(Extension::abilityInfo_->name).append(".abc"); + return; + } + + if (!Extension::abilityInfo_->srcEntrance.empty()) { + srcPath.append(Extension::abilityInfo_->moduleName + "/"); + srcPath.append(Extension::abilityInfo_->srcEntrance); + srcPath.erase(srcPath.rfind('.')); + srcPath.append(".abc"); + } +} } // namespace AbilityRuntime } // namespace OHOS \ No newline at end of file diff --git a/services/formmgr/src/form_mgr_adapter.cpp b/services/formmgr/src/form_mgr_adapter.cpp index 66abcf4432a6b089efa563c9a66821f7701eb468..3d9477f1af05bd5bb62a0b8b7ba48d2ca8b1ee4e 100644 --- a/services/formmgr/src/form_mgr_adapter.cpp +++ b/services/formmgr/src/form_mgr_adapter.cpp @@ -730,6 +730,10 @@ ErrCode FormMgrAdapter::GetFormConfigInfo(const Want &want, FormItemInfo &formCo APP_LOGE("addForm can not find target form info"); return errCode; } + if (!formInfo.IsValid()) { + APP_LOGE("The form info is invalid"); + return ERR_APPEXECFWK_FORM_GET_INFO_FAILED; + } errCode = GetFormItemInfo(want, bundleInfo, formInfo, formConfigInfo); if (errCode != ERR_OK) {