From 0dda79a8d83db878ae4c5b906f8272d71d0dae27 Mon Sep 17 00:00:00 2001 From: cuiruibin Date: Mon, 7 Jul 2025 11:49:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=96=E6=B6=88copy=E8=BF=9B=E5=BA=A6?= =?UTF-8?q?=E7=A4=BA=E4=BE=8B=E4=BB=A3=E7=A0=81=E5=BC=82=E5=B8=B8=20Signed?= =?UTF-8?q?-off-by:=20cuiruibin=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../class_tasksignal/task_signal_n_exporter.cpp | 14 ++++++++++---- interfaces/kits/js/src/mod_fs/properties/copy.cpp | 2 +- interfaces/kits/native/task_signal/task_signal.cpp | 3 ++- interfaces/kits/native/task_signal/task_signal.h | 2 +- .../test/unittest/task_signal/task_signal_test.cpp | 3 ++- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/interfaces/kits/js/src/mod_fs/class_tasksignal/task_signal_n_exporter.cpp b/interfaces/kits/js/src/mod_fs/class_tasksignal/task_signal_n_exporter.cpp index fb1d9a2da..7c171fa90 100644 --- a/interfaces/kits/js/src/mod_fs/class_tasksignal/task_signal_n_exporter.cpp +++ b/interfaces/kits/js/src/mod_fs/class_tasksignal/task_signal_n_exporter.cpp @@ -121,12 +121,18 @@ napi_value TaskSignalNExporter::OnCancel(napi_env env, napi_callback_info info) NError(EINVAL).ThrowErr(env); return nullptr; } - taskSignalEntity->taskSignal_->SetTaskSignalListener(taskSignalEntity); auto callbackContext = std::make_shared(NVal(env, funcArg[0])); callbackContext->env_ = env; taskSignalEntity->callbackContext_ = callbackContext; - napi_value result = nullptr; - napi_get_null(env, &result); - return result; + auto cbExec = [taskSignalEntity]() -> NError { + taskSignalEntity->taskSignal_->SetTaskSignalListener(taskSignalEntity); + return NError(NO_ERROR); + }; + auto cbCompl = [callbackContext](napi_env env, NError err) -> NVal { + return NVal::CreateUTF8String(env, callbackContext->filePath_); + }; + const string procedureName = "OnCancel"; + NVal thisVar(env, funcArg.GetThisVar()); + return NAsyncWorkPromise(env, thisVar).Schedule(procedureName, cbExec, cbCompl).val_; } } // namespace OHOS::FileManagement::ModuleFileIO \ No newline at end of file diff --git a/interfaces/kits/js/src/mod_fs/properties/copy.cpp b/interfaces/kits/js/src/mod_fs/properties/copy.cpp index be96aeace..b89a50dd5 100644 --- a/interfaces/kits/js/src/mod_fs/properties/copy.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/copy.cpp @@ -376,7 +376,7 @@ int32_t Copy::ExecCopy(std::shared_ptr infos, std::shared_ptrtaskSignal != nullptr) { infos->taskSignal->MarkDfsTask(); - infos->taskSignal->SetCopyTaskUri(infos->srcUri, infos->destUri); + infos->taskSignal->SetCopyTaskUri(infos->srcUri, infos->destUri, infos->srcPath); } LOGI("Copy begin"); auto result = Storage::DistributedFile::FileCopyManager::GetInstance()->Copy(infos->srcUri, infos->destUri, diff --git a/interfaces/kits/native/task_signal/task_signal.cpp b/interfaces/kits/native/task_signal/task_signal.cpp index cf0fd9d17..1243caadd 100644 --- a/interfaces/kits/native/task_signal/task_signal.cpp +++ b/interfaces/kits/native/task_signal/task_signal.cpp @@ -100,10 +100,11 @@ void TaskSignal::SetFileInfoOfRemoteTask(const std::string &sessionName, const s filePath_ = filePath; } -void TaskSignal::SetCopyTaskUri(const std::string &srcUri, const std::string &dstUri) +void TaskSignal::SetCopyTaskUri(const std::string &srcUri, const std::string &dstUri, const std::string &srcPath) { srcUri_ = srcUri; dstUri_ = dstUri; + filePath_ = srcPath; } } // namespace ModuleTaskSignal } // namespace DistributedFS diff --git a/interfaces/kits/native/task_signal/task_signal.h b/interfaces/kits/native/task_signal/task_signal.h index 40a91e7e7..30955dce7 100644 --- a/interfaces/kits/native/task_signal/task_signal.h +++ b/interfaces/kits/native/task_signal/task_signal.h @@ -37,7 +37,7 @@ public: void MarkRemoteTask(); void SetFileInfoOfRemoteTask(const std::string &sessionName, const std::string &filePath); void MarkDfsTask(); - void SetCopyTaskUri(const std::string &srcUri, const std::string &dstUri); + void SetCopyTaskUri(const std::string &srcUri, const std::string &dstUri, const std::string &srcPath); std::atomic_bool needCancel_{ false }; std::atomic_bool remoteTask_{ false }; std::atomic_bool dfsCopyTask_{ false }; diff --git a/interfaces/test/unittest/task_signal/task_signal_test.cpp b/interfaces/test/unittest/task_signal/task_signal_test.cpp index fad6cbfc2..64bd1aefa 100644 --- a/interfaces/test/unittest/task_signal/task_signal_test.cpp +++ b/interfaces/test/unittest/task_signal/task_signal_test.cpp @@ -148,9 +148,10 @@ HWTEST_F(TaskSignalTest, Task_Signal_MarkDfsTask_0000, testing::ext::TestSize.Le GTEST_LOG_(INFO) << "TaskSignalTest-begin Task_Signal_MarkDfsTask_0000"; auto signal = std::make_shared(); signal->MarkDfsTask(); + std::string srcPath = "/data/test/data.txt"; std::string localUri = "/data/test/test.txt"; std::string dstUri = "/data/test/test.txt"; - signal->SetCopyTaskUri(localUri, dstUri); + signal->SetCopyTaskUri(localUri, dstUri, srcPath); auto ret = signal->Cancel(); EXPECT_EQ(ret, 0); } -- Gitee