From 6a1a2e06f7ae573871824075a2bec799ee9be8d5 Mon Sep 17 00:00:00 2001 From: cuiruibin Date: Tue, 2 Sep 2025 14:49:15 +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 --- .../task_signal_n_exporter.cpp | 35 +++++++++++++------ .../kits/js/src/mod_fs/properties/copy.cpp | 2 +- .../kits/native/task_signal/task_signal.cpp | 3 +- .../kits/native/task_signal/task_signal.h | 2 +- .../unittest/task_signal/task_signal_test.cpp | 3 +- 5 files changed, 31 insertions(+), 14 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..77a25725c 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 @@ -110,23 +110,38 @@ napi_value TaskSignalNExporter::OnCancel(napi_env env, napi_callback_info info) { HILOGD("TaskSignal OnCancel Func Run in."); NFuncArg funcArg(env, info); - if (!funcArg.InitArgs(NARG_CNT::ZERO)) { - HILOGE("Failed to get param when stop."); + if (!funcArg.InitArgs(NARG_CNT::ZERO, NARG_CNT::ONE)) { + HILOGE("Invalid number of parameters."); NError(EINVAL).ThrowErr(env); return nullptr; } + auto taskSignalEntity = NClass::GetEntityOf(env, funcArg.GetThisVar()); if (!taskSignalEntity || taskSignalEntity->taskSignal_ == nullptr) { - HILOGE("Failed to get watcherEntity when stop."); + HILOGE("Failed to get taskSignalEntity."); 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; + + if (funcArg.GetArgc() == 1) { + auto cbExec = [taskSignalEntity]() -> NError { + taskSignalEntity->taskSignal_->SetTaskSignalListener(taskSignalEntity); + return NError(NO_ERROR); + }; + + auto cbCompl = [](napi_env env, NError err) -> NVal { + return NVal::CreateUndefined(env); + }; + + const string procedureName = "OnCancel"; + NVal thisVar(env, funcArg.GetThisVar()); + NAsyncWorkCallback(env, thisVar, funcArg[0]).Schedule(procedureName, cbExec, cbCompl); + return NVal::CreateUndefined(env).val_; + } else { + taskSignalEntity->taskSignal_->SetTaskSignalListener(taskSignalEntity); + napi_value result = nullptr; + napi_get_null(env, &result); + return result; + } } } // 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 b800d5bc1..e2d0898a3 100644 --- a/interfaces/kits/js/src/mod_fs/properties/copy.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/copy.cpp @@ -378,7 +378,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