diff --git a/frameworks/ets/ets/application/Context.ets b/frameworks/ets/ets/application/Context.ets index f1edddfd74577d23b5f501e9997a5df33622a13c..a4ede4d61afa3a7a1498c9c388e526d5e591b76d 100644 --- a/frameworks/ets/ets/application/Context.ets +++ b/frameworks/ets/ets/application/Context.ets @@ -36,6 +36,10 @@ export class Context extends BaseContext { preferencesDir: string = ""; databaseDir: string = ""; cacheDir: string = ""; + cloudFileDir: string = ""; + distributedFilesDir: string = ""; + bundleCodeDir: string = ""; + resourceDir: string = ""; applicationInfo: ApplicationInfo; eventHub: EventHub = new EventHub(); resourceManager: resmgr.ResourceManager; diff --git a/frameworks/native/appkit/ability_runtime/context/sts_context_utils.cpp b/frameworks/native/appkit/ability_runtime/context/sts_context_utils.cpp index 40441a44542a991f6f3ac055fd73d9929add18f9..9873bad5a4d12a6fdd8160c6dfbe8de89640fa6d 100644 --- a/frameworks/native/appkit/ability_runtime/context/sts_context_utils.cpp +++ b/frameworks/native/appkit/ability_runtime/context/sts_context_utils.cpp @@ -39,6 +39,43 @@ namespace { constexpr const char* AREA_MODE_ENUM_NAME = "L@ohos/app/ability/contextConstant/contextConstant/AreaMode;"; constexpr const char* CONTEXT_CLASS_NAME = "Lapplication/Context/Context;"; +void BindContextDirInner(ani_env *aniEnv, ani_object contextObj, std::shared_ptr context) +{ + ani_status status = ANI_ERROR; + auto cloudFileDir = context->GetCloudFileDir(); + ani_string cloudFileDirString = nullptr; + aniEnv->String_NewUTF8(cloudFileDir.c_str(), cloudFileDir.size(), &cloudFileDirString); + if ((status = aniEnv->Object_SetFieldByName_Ref(contextObj, "cloudFileDir", cloudFileDirString)) != ANI_OK) { + TAG_LOGE(AAFwkTag::APPKIT, "cloudFileDir SetField status: %{public}d", status); + return; + } + + auto distributedFilesDir = context->GetDistributedFilesDir(); + ani_string distributedFilesDirString = nullptr; + aniEnv->String_NewUTF8(distributedFilesDir.c_str(), distributedFilesDir.size(), &distributedFilesDirString); + if ((status = aniEnv->Object_SetFieldByName_Ref(contextObj, "distributedFilesDir", + distributedFilesDirString)) != ANI_OK) { + TAG_LOGE(AAFwkTag::APPKIT, "distributedFilesDir SetField status: %{public}d", status); + return; + } + + auto bundleCodeDir = context->GetBundleCodeDir(); + ani_string bundleCodeDirString = nullptr; + aniEnv->String_NewUTF8(bundleCodeDir.c_str(), bundleCodeDir.size(), &bundleCodeDirString); + if ((status = aniEnv->Object_SetFieldByName_Ref(contextObj, "bundleCodeDir", bundleCodeDirString)) != ANI_OK) { + TAG_LOGE(AAFwkTag::APPKIT, "bundleCodeDir SetField status: %{public}d", status); + return; + } + + auto resourceDir = context->GetResourceDir(); + ani_string resourceDirString = nullptr; + aniEnv->String_NewUTF8(resourceDir.c_str(), resourceDir.size(), &resourceDirString); + if ((status = aniEnv->Object_SetFieldByName_Ref(contextObj, "resourceDir", resourceDirString)) != ANI_OK) { + TAG_LOGE(AAFwkTag::APPKIT, "resourceDir SetField status: %{public}d", status); + return; + } +} + void BindContextDir(ani_env *aniEnv, ani_object contextObj, std::shared_ptr context) { if (aniEnv == nullptr || context == nullptr) { @@ -85,6 +122,7 @@ void BindContextDir(ani_env *aniEnv, ani_object contextObj, std::shared_ptr context) -{ - ani_status status = ANI_ERROR; ani_field processNameField; if ((status = aniEnv->Class_FindField(contextClass, "processName", &processNameField)) != ANI_OK) { TAG_LOGE(AAFwkTag::APPKIT, "find processName failed status: %{public}d", status); diff --git a/interfaces/kits/native/appkit/ability_runtime/context/sts_context_utils.h b/interfaces/kits/native/appkit/ability_runtime/context/sts_context_utils.h index 1985510daf7a0e9f81b8cdc70897d5a10170d4cb..1a938047f5689045c38d98d946bc74d427e75dca 100644 --- a/interfaces/kits/native/appkit/ability_runtime/context/sts_context_utils.h +++ b/interfaces/kits/native/appkit/ability_runtime/context/sts_context_utils.h @@ -36,9 +36,6 @@ void BindResourceManager(ani_env* aniEnv, ani_class contextClass, ani_object con void BindParentProperty(ani_env* aniEnv, ani_class contextClass, ani_object contextObj, std::shared_ptr context); -void BindParentPropertyInner(ani_env* aniEnv, ani_class contextClass, ani_object contextObj, - std::shared_ptr context); - void BindContextDir(ani_env* aniEnv, ani_class contextClass, ani_object contextObj, std::shared_ptr context);