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 fb1d9a2dababab1a2459bb151ed35b88ccd3b65c..7c171fa904c248f8187e319c36cd025eaf3e4ba7 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 be96aeace245a4de940fc8094464a909d941f7a5..b89a50dd507e364410c18f075e107bcb14c9f2ad 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 cf0fd9d174baa1992436b4945cdd7806f7f42da7..1243caadddcbb35a3808ab58720afdc1ae913ad1 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 40a91e7e75d156697b5b28d69d88495780aef42a..30955dce79431ff0a46e97f6199cb8c90313c07f 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 fad6cbfc23853deef22d77ffeacff48415fecbca..64bd1aefa20786aeed8d2dd79323ce65e3a0cf7e 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); }