From ec7b2e853046bc7ec712be5918ceee579a5d1567 Mon Sep 17 00:00:00 2001 From: zhangzezhong Date: Tue, 24 Jun 2025 13:55:20 +0800 Subject: [PATCH] add ani context cloudFileDir distributedFilesDir bundleCodeDir Signed-off-by: zhangzezhong --- frameworks/ets/ets/application/Context.ets | 4 ++ .../context/sts_context_utils.cpp | 43 ++++++++++++++++--- .../context/sts_context_utils.h | 3 -- 3 files changed, 42 insertions(+), 8 deletions(-) diff --git a/frameworks/ets/ets/application/Context.ets b/frameworks/ets/ets/application/Context.ets index f1edddfd745..a4ede4d61af 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 40441a44542..9873bad5a4d 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 1985510daf7..1a938047f56 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); -- Gitee