From 901f360433ad780db9cf575f3c402ea5bfb27598 Mon Sep 17 00:00:00 2001 From: wangjianqiang Date: Mon, 1 Aug 2022 18:01:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BF=94=E5=9B=9E=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangjianqiang --- .../src/js_file_access_ext_ability.cpp | 25 +++++++++++++---- .../FileExtensionAbility.ts | 27 ++++++++++++++++--- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/frameworks/innerkits/file_access/src/js_file_access_ext_ability.cpp b/frameworks/innerkits/file_access/src/js_file_access_ext_ability.cpp index d68feda8..9ec9a375 100644 --- a/frameworks/innerkits/file_access/src/js_file_access_ext_ability.cpp +++ b/frameworks/innerkits/file_access/src/js_file_access_ext_ability.cpp @@ -319,10 +319,16 @@ int JsFileAccessExtAbility::OpenFile(const Uri &uri, int flags) return *fd; } +struct Value { + std::string uri; + std::string message; + int code {0}; +}; + int JsFileAccessExtAbility::CreateFile(const Uri &parent, const std::string &displayName, Uri &newFile) { StartTrace(HITRACE_TAG_FILEMANAGEMENT, "CreateFile"); - auto uri = std::make_shared(); + auto valueVec = std::make_shared(); auto argParser = [parent, displayName](NativeEngine &engine, NativeValue *argv[], size_t &argc) -> bool { NativeValue *nativeParent = engine.CreateString(parent.ToString().c_str(), parent.ToString().length()); if (nativeParent == nullptr) { @@ -339,8 +345,11 @@ int JsFileAccessExtAbility::CreateFile(const Uri &parent, const std::string &dis argc = ARGC_TWO; return true; }; - auto retParser = [uri](NativeEngine &engine, NativeValue *result) -> bool { - bool ret = ConvertFromJsValue(engine, result, *uri); + auto retParser = [valueVec](NativeEngine &engine, NativeValue *result) -> bool { + NativeObject *obj = ConvertNativeValueTo(result); + bool ret = ConvertFromJsValue(engine, obj->GetProperty("uri"), valueVec->uri); + ret = ret && ConvertFromJsValue(engine, obj->GetProperty("message"), valueVec->message); + ret = ret && ConvertFromJsValue(engine, obj->GetProperty("code"), valueVec->code); if (!ret) { HILOG_ERROR("Convert js value fail."); } @@ -353,12 +362,18 @@ int JsFileAccessExtAbility::CreateFile(const Uri &parent, const std::string &dis FinishTrace(HITRACE_TAG_FILEMANAGEMENT); return errCode; } - if ((*uri).empty()) { + + HILOG_INFO("tag dsa ---------------12345------newFile:%{public}s",valueVec->uri.c_str()); + HILOG_INFO("tag dsa ---------------12345------message:%{public}s",valueVec->message.c_str()); + HILOG_INFO("tag dsa ---------------12345------code:%{public}d",valueVec->code); + + if ((valueVec->uri).empty()) { HILOG_ERROR("call CreateFile with return empty."); FinishTrace(HITRACE_TAG_FILEMANAGEMENT); return ERR_ERROR; } - newFile = Uri(*uri); + newFile = Uri(valueVec->uri); + FinishTrace(HITRACE_TAG_FILEMANAGEMENT); return errCode; } diff --git a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts index 121e2d4c..6e7727b1 100644 --- a/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts +++ b/services/file_extension_hap/entry/src/main/ets/FileExtensionAbility/FileExtensionAbility.ts @@ -170,19 +170,38 @@ export default class FileExtAbility extends Extension { createFile(parentUri, displayName) { if (!this.checkUri(parentUri)) { - return ''; + return { + uri: '', + message: 'checkUri fail', + code: -1, + }; + // return ''; } try { let newFileUri = this.genNewFileUri(parentUri, displayName); if (this.isFileExist(newFileUri)) { - return ''; + return { + uri: '', + message: 'file is exist', + code: -1, + }; + // return ''; } let path = this.getPath(newFileUri); fileio.openSync(path, CREATE_FILE_FLAGS, DEFAULT_MODE); - return newFileUri; + return { + uri: newFileUri, + message: '', + code: 0, + }; + // return newFileUri; } catch (e) { hilog.error(DOMAIN_CODE, TAG, 'createFile error ' + e.message); - return ''; + return { + uri: '', + message: e.message, + code: -1, + }; } } -- Gitee