From 14a01d78a1d43395e702e348573c2b0c6328cb9e Mon Sep 17 00:00:00 2001 From: yuanyulu Date: Tue, 24 Oct 2023 18:03:59 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0js=E5=B1=82=E6=96=B0?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=85=A5=E5=8F=A3=E6=8E=A5=E5=8F=A3=20Signed?= =?UTF-8?q?-off-by:yuanyulu@huawei.com?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yuanyulu --- .../include/iprint_ipc_interface_code.h | 3 +- .../innerkitsimpl/include/iprint_service.h | 1 + .../include/print_manager_client.h | 1 + .../include/print_service_proxy.h | 1 + .../src/print_manager_client.cpp | 11 ++ .../innerkitsimpl/src/print_service_proxy.cpp | 16 ++ .../kits/napi/include/napi_inner_print.h | 2 +- .../kits/napi/include/napi_print_task.h | 2 + interfaces/kits/napi/include/print_task.h | 8 +- interfaces/kits/napi/src/napi_inner_print.cpp | 71 ++++---- interfaces/kits/napi/src/napi_print_task.cpp | 171 ++++++++++++++---- interfaces/kits/napi/src/print_module.cpp | 2 + interfaces/kits/napi/src/print_task.cpp | 24 +++ services/include/print_service_ability.h | 1 + services/include/print_service_stub.h | 1 + services/src/print_service_ability.cpp | 15 ++ services/src/print_service_stub.cpp | 13 ++ .../service_test/mock/mock_print_service.h | 4 + 18 files changed, 274 insertions(+), 73 deletions(-) diff --git a/frameworks/innerkitsimpl/include/iprint_ipc_interface_code.h b/frameworks/innerkitsimpl/include/iprint_ipc_interface_code.h index dce94b6c..bcb58534 100644 --- a/frameworks/innerkitsimpl/include/iprint_ipc_interface_code.h +++ b/frameworks/innerkitsimpl/include/iprint_ipc_interface_code.h @@ -46,7 +46,8 @@ namespace OHOS::Print { CMD_ADDPRINTERTOCUPS, CMD_QUERYPRINTERCAPABILITYBYURI, CMD_STARTPRINTJOB_BY_ADAPTER, - CMD_START_GET_FILE + CMD_START_GET_FILE, + CMD_NOTIFY_PRINT_SERVICE, }; } // namespace OHOS:Print #endif // PRINT_SERVICE_INTERFACE_H diff --git a/frameworks/innerkitsimpl/include/iprint_service.h b/frameworks/innerkitsimpl/include/iprint_service.h index c4a66736..37cebeb8 100644 --- a/frameworks/innerkitsimpl/include/iprint_service.h +++ b/frameworks/innerkitsimpl/include/iprint_service.h @@ -66,6 +66,7 @@ public: const sptr &token) = 0; virtual int32_t StartGetPrintFile(const std::string &jobId, const PrintAttributes &printAttributes, const uint32_t fd) = 0; + virtual int32_t NotifyPrintService(const std::string &jobId, const std::string &type) = 0; }; } // namespace OHOS::Print #endif // PRINT_SERVICE_INTERFACE_H \ No newline at end of file diff --git a/frameworks/innerkitsimpl/include/print_manager_client.h b/frameworks/innerkitsimpl/include/print_manager_client.h index 9f122474..de7792cb 100644 --- a/frameworks/innerkitsimpl/include/print_manager_client.h +++ b/frameworks/innerkitsimpl/include/print_manager_client.h @@ -73,6 +73,7 @@ public: const PrintAttributes &printAttributes, void* contextToken); int32_t StartGetPrintFile(const std::string &jobId, const PrintAttributes &printAttributes, const uint32_t fd); + int32_t NotifyPrintService(const std::string &jobId, const std::string &type); int32_t RegisterExtCallback(const std::string &extensionId, uint32_t callbackId, PrintExtCallback cb); int32_t RegisterExtCallback(const std::string &extensionId, uint32_t callbackId, PrintJobCallback cb); diff --git a/frameworks/innerkitsimpl/include/print_service_proxy.h b/frameworks/innerkitsimpl/include/print_service_proxy.h index 6ca4e234..00426514 100644 --- a/frameworks/innerkitsimpl/include/print_service_proxy.h +++ b/frameworks/innerkitsimpl/include/print_service_proxy.h @@ -60,6 +60,7 @@ public: const sptr &token) override; int32_t StartGetPrintFile(const std::string &jobId, const PrintAttributes &printAttributes, const uint32_t fd) override; + int32_t NotifyPrintService(const std::string &jobId, const std::string &type) override; private: int32_t GetResult(int retCode, MessageParcel &reply); diff --git a/frameworks/innerkitsimpl/src/print_manager_client.cpp b/frameworks/innerkitsimpl/src/print_manager_client.cpp index a2dfd6c6..0e1ccdfd 100644 --- a/frameworks/innerkitsimpl/src/print_manager_client.cpp +++ b/frameworks/innerkitsimpl/src/print_manager_client.cpp @@ -380,6 +380,17 @@ int32_t PrintManagerClient::StartGetPrintFile(const std::string &jobId, const Pr return CALL_COMMON_CLIENT(func); } +int32_t PrintManagerClient::NotifyPrintService(const std::string &jobId, const std::string &type) +{ + PRINT_HILOGD("PrintManagerClient NotifyPrintService start."); + int32_t ret = E_PRINT_RPC_FAILURE; + if (LoadServer() && GetPrintServiceProxy()) { + ret = printServiceProxy_->NotifyPrintService(jobId, type); + PRINT_HILOGD("PrintManagerClient NotifyPrintService out ret = [%{public}d].", ret); + } + return ret; +} + int32_t PrintManagerClient::runBase(const char* callerFunName, std::function)> func) { PRINT_HILOGI("PrintManagerClient %{public}s start.", callerFunName); diff --git a/frameworks/innerkitsimpl/src/print_service_proxy.cpp b/frameworks/innerkitsimpl/src/print_service_proxy.cpp index 1809c9ca..dd9f7e61 100644 --- a/frameworks/innerkitsimpl/src/print_service_proxy.cpp +++ b/frameworks/innerkitsimpl/src/print_service_proxy.cpp @@ -534,6 +534,22 @@ int32_t PrintServiceProxy::StartGetPrintFile(const std::string &jobId, const Pri return ret; } +int32_t PrintServiceProxy::NotifyPrintService(const std::string &jobId, const std::string &type) +{ + PRINT_HILOGD("PrintServiceProxy::NotifyPrintService in"); + MessageParcel data, reply; + MessageOption option; + + data.WriteInterfaceToken(GetDescriptor()); + data.WriteString(jobId); + data.WriteString(type); + int32_t ret = Remote()->SendRequest( + OHOS::Print::IPrintInterfaceCode::CMD_NOTIFY_PRINT_SERVICE, data, reply, option); + ret = GetResult(ret, reply); + PRINT_HILOGD("PrintServiceProxy NotifyPrintService out. ret = [%{public}d]", ret); + return ret; +} + int32_t PrintServiceProxy::UnregisterAllExtCallback(const std::string &extensionId) { PRINT_HILOGD("PrintServiceProxy::UnregisterAllExtCallback in"); diff --git a/interfaces/kits/napi/include/napi_inner_print.h b/interfaces/kits/napi/include/napi_inner_print.h index b7654143..b354ca64 100644 --- a/interfaces/kits/napi/include/napi_inner_print.h +++ b/interfaces/kits/napi/include/napi_inner_print.h @@ -44,8 +44,8 @@ public: static napi_value QueryPrintJobById(napi_env env, napi_callback_info info); static napi_value On(napi_env env, napi_callback_info info); static napi_value Off(napi_env env, napi_callback_info info); - static napi_value PrintByAdapter(napi_env env, napi_callback_info info); static napi_value StartGetPrintFile(napi_env env, napi_callback_info info); + static napi_value NotifyPrintService(napi_env env, napi_callback_info info); private: static bool IsSupportType(const std::string& type); diff --git a/interfaces/kits/napi/include/napi_print_task.h b/interfaces/kits/napi/include/napi_print_task.h index f5674bb4..a7794c46 100644 --- a/interfaces/kits/napi/include/napi_print_task.h +++ b/interfaces/kits/napi/include/napi_print_task.h @@ -43,6 +43,8 @@ private: static napi_value WrapVoidToJS(napi_env env); static napi_status VerifyParameters(napi_env env, size_t argc, napi_value *argv, const std::shared_ptr context); + static napi_value PrintByAdapter(napi_env env, napi_callback_info info); + static napi_value ParsePrintAdapterParameter(napi_env env, size_t argc, napi_value *argv, napi_value self); private: static __thread napi_ref globalCtor; diff --git a/interfaces/kits/napi/include/print_task.h b/interfaces/kits/napi/include/print_task.h index dd62bf2f..b25a9a5c 100644 --- a/interfaces/kits/napi/include/print_task.h +++ b/interfaces/kits/napi/include/print_task.h @@ -31,9 +31,12 @@ namespace OHOS::Print { class PrintTask { public: explicit PrintTask(const std::vector &fileList, const sptr &callerToken_); + PrintTask(const std::string &printJobName_, const sptr &printAdapterCallback_, + const std::shared_ptr &printAttributes_, const sptr &calllerToken_); ~PrintTask(); uint32_t Start(); + uint32_t StartPrintAdapter(); void Stop(); const std::string &GetId() const; static napi_value On(napi_env env, napi_callback_info info); @@ -58,7 +61,10 @@ private: std::vector fdList_; std::map supportEvents_; uint32_t pathType_ = 0; - sptr callerToken_; + sptr callerToken_ = nullptr; + std::string printJobName_;; + sptr printAdapterCallback_ = nullptr; + std::shared_ptr printAttributes_ = nullptr; enum FilePathType { FD_UNDEFINED, FD_PATH, diff --git a/interfaces/kits/napi/src/napi_inner_print.cpp b/interfaces/kits/napi/src/napi_inner_print.cpp index 33a6f327..2fe461dd 100644 --- a/interfaces/kits/napi/src/napi_inner_print.cpp +++ b/interfaces/kits/napi/src/napi_inner_print.cpp @@ -513,45 +513,44 @@ napi_value NapiInnerPrint::StartGetPrintFile(napi_env env, napi_callback_info in return nullptr; } -napi_value NapiInnerPrint::PrintByAdapter(napi_env env, napi_callback_info info) +napi_value NapiInnerPrint::NotifyPrintService(napi_env env, napi_callback_info info) { - PRINT_HILOGI("PrintByAdapter start ---->"); - napi_value argv[NapiPrintUtils::MAX_ARGC] = { nullptr }; - size_t argc = NapiPrintUtils::GetJsVal(env, info, argv, NapiPrintUtils::MAX_ARGC); - PRINT_ASSERT(env, argc == NapiPrintUtils::ARGC_FOUR || argc == NapiPrintUtils::ARGC_THREE, - "PrintByAdapter need 3 or 4 parameter!"); - - napi_valuetype valuetype; - PRINT_CALL(env, napi_typeof(env, argv[0], &valuetype)); - PRINT_ASSERT(env, valuetype == napi_string, "type is not a string"); - std::string printJobName = NapiPrintUtils::GetStringFromValueUtf8(env, argv[0]); - PRINT_HILOGD("printJobName : %{public}s", printJobName.c_str()); - - uint32_t type = argc == NapiPrintUtils::ARGC_FOUR ? - NapiPrintUtils::GetUint32FromValue(env, argv[NapiPrintUtils::ARGC_THREE]) : 0; - sptr callback = nullptr; - if (type == 0) { - napi_ref adapterRef = NapiPrintUtils::CreateReference(env, argv[1]); - callback = new (std::nothrow) PrintCallback(env, adapterRef); - } else { - PrintDocumentAdapter *adapter = new PrintDocumentInnerAdapter(); - callback = new (std::nothrow) PrintCallback(adapter); - } - - if (callback == nullptr) { - PRINT_HILOGE("create print callback object fail"); - return nullptr; - } - - if (static_cast(argc) > NapiPrintUtils::INDEX_TWO) { - auto printAttributes = PrintAttributesHelper::BuildFromJs(env, argv[NapiPrintUtils::INDEX_TWO]); - int32_t ret = PrintManagerClient::GetInstance()->Print(printJobName, callback, *printAttributes); + PRINT_HILOGD("Enter NotifyPrintService---->"); + auto context = std::make_shared(); + auto input = [context](napi_env env, size_t argc, napi_value *argv, napi_value self) -> napi_status { + PRINT_ASSERT_BASE(env, argc == NapiPrintUtils::ARGC_TWO, " should 2 parameter!", napi_invalid_arg); + napi_valuetype valuetype; + PRINT_CALL_BASE(env, napi_typeof(env, argv[0], &valuetype), napi_invalid_arg); + PRINT_ASSERT_BASE(env, valuetype == napi_string, "jobId is not a string", napi_string_expected); + PRINT_CALL_BASE(env, napi_typeof(env, argv[1], &valuetype), napi_invalid_arg); + PRINT_ASSERT_BASE(env, valuetype == napi_string, "info type is not a string", napi_string_expected); + std::string jobId = NapiPrintUtils::GetStringFromValueUtf8(env, argv[0]); + std::string type = NapiPrintUtils::GetStringFromValueUtf8(env, argv[1]); + if (jobId == "" || type == "") { + PRINT_HILOGE("Parse jobId error"); + context->SetErrorIndex(E_PRINT_INVALID_PARAMETER); + return napi_invalid_arg; + } + context->jobId = jobId; + context->type = type; + return napi_ok; + }; + auto output = [context](napi_env env, napi_value *result) -> napi_status { + napi_status status = napi_get_boolean(env, context->result, result); + PRINT_HILOGD("context->result = %{public}d", context->result); + return status; + }; + auto exec = [context](PrintAsyncCall::Context *ctx) { + int32_t ret = PrintManagerClient::GetInstance()->NotifyPrintService(context->jobId, context->type); + context->result = ret == E_PRINT_NONE; if (ret != E_PRINT_NONE) { - PRINT_HILOGE("Failed to register event"); - return nullptr; + PRINT_HILOGE("Failed to unregister event"); + context->SetErrorIndex(ret); } - } - return nullptr; + }; + context->SetAction(std::move(input), std::move(output)); + PrintAsyncCall asyncCall(env, info, std::dynamic_pointer_cast(context)); + return asyncCall.Call(env, exec); } bool NapiInnerPrint::IsSupportType(const std::string& type) diff --git a/interfaces/kits/napi/src/napi_print_task.cpp b/interfaces/kits/napi/src/napi_print_task.cpp index 6837e61e..3eeeea3e 100644 --- a/interfaces/kits/napi/src/napi_print_task.cpp +++ b/interfaces/kits/napi/src/napi_print_task.cpp @@ -21,6 +21,9 @@ #include "print_manager_client.h" #include "print_task.h" #include "napi_print_task.h" +#include "print_attributes_helper.h" +#include "print_callback.h" +#include "iprint_callback.h" static constexpr const char *FUNCTION_ON = "on"; static constexpr const char *FUNCTION_OFF = "off"; @@ -36,8 +39,8 @@ napi_value NapiPrintTask::Print(napi_env env, napi_callback_info info) size_t paramCount = NapiPrintUtils::GetJsVal(env, info, argv, NapiPrintUtils::MAX_ARGC); napi_valuetype type; PRINT_CALL(env, napi_typeof(env, argv[0], &type)); - if ((paramCount == NapiPrintUtils::ARGC_FOUR || paramCount == NapiPrintUtils::ARGC_THREE) && type == napi_string) { - return NapiInnerPrint::PrintByAdapter(env, info); + if ((paramCount > NapiPrintUtils::ARGC_THREE) && type == napi_string) { + return PrintByAdapter(env, info); } auto context = std::make_shared(); @@ -85,6 +88,93 @@ napi_value NapiPrintTask::Print(napi_env env, napi_callback_info info) return asyncCall.Call(env); } +napi_value NapiPrintTask::PrintByAdapter(napi_env env, napi_callback_info info) +{ + PRINT_HILOGD("PrintByAdapter start ---->"); + auto context = std::make_shared(); + auto input = [context](napi_env env, size_t argc, napi_value *argv, napi_value self) -> napi_status { + PRINT_ASSERT_BASE(env, argc == NapiPrintUtils::ARGC_FOUR, "need 4 parameter!", napi_invalid_arg); + napi_status checkStatus = VerifyParameters(env, argc, argv, context); + if (checkStatus != napi_ok) { + return checkStatus; + } + + napi_value proxy = nullptr; + napi_status status = napi_new_instance(env, GetCtor(env), argc, argv, &proxy); + if ((proxy == nullptr) || (status != napi_ok)) { + PRINT_HILOGE("Failed to create print task"); + context->SetErrorIndex(E_PRINT_GENERIC_FAILURE); + return napi_generic_failure; + } + + PrintTask *task; + PRINT_CALL_BASE(env, napi_unwrap(env, proxy, reinterpret_cast(&task)), napi_invalid_arg); + uint32_t ret = E_PRINT_GENERIC_FAILURE; + if (task != nullptr) { + ret = task->StartPrintAdapter(); + } + if (ret != E_PRINT_NONE) { + PRINT_HILOGE("Failed to start print task"); + context->SetErrorIndex(ret); + return napi_generic_failure; + } + napi_create_reference(env, proxy, 1, &(context->ref)); + return napi_ok; + }; + auto output = [context](napi_env env, napi_value *result) -> napi_status { + if (context->ref == nullptr) { + *result = NapiPrintUtils::GetUndefined(env); + return napi_generic_failure; + } + napi_status status = napi_get_reference_value(env, context->ref, result); + napi_delete_reference(env, context->ref); + return status; + }; + context->SetAction(std::move(input), std::move(output)); + PrintAsyncCall asyncCall(env, info, std::dynamic_pointer_cast(context)); + return asyncCall.Call(env); +} + +napi_value NapiPrintTask::ParsePrintAdapterParameter(napi_env env, size_t argc, napi_value *argv, napi_value self); +{ + if (argc > NapiPrintUtils::ARGC_THREE && argc > NapiPrintUtils::ARGC_TWO) { + std::string printJobName = NapiPrintUtils::GetStringFromValueUtf8(env, argv[0]) + + napi_ref adapterRef = NapiPrintUtils::CreateReference(env, argv[1]); + sptr callback = new (std::nothrow) PrintCallback(env, adapterRef); + + std::shared_ptr printAttributes; + printAttributes = PrintAttributesHelper::BuildFromJs(env, argv[NapiPrintUtils::ARGC_TWO]); + if (callback == nullptr || printAttributes == nullptr) { + PRINT_HILOGE("printAdapter paramter error"); + } + + std::shared_ptr abilityContext; + sptr callerToken; + if (GetAbilityContext(env, argv[NapiPrintUtils::ARGC_THREE], abilityContext) != nullptr) { + callerToken = abilityContext->GetToken(); + } + auto task = new (std::nothrow) PrintTask(printJobName, callback, PrintAttributes, callerToken); + + if (task == nullptr) { + PRINT_HILOGE("print task fail"); + return nullptr; + } + auto finalize = [](napi_env env, void *data, void *hint) { + PRINT_HILOGD("destructed print task"); + PrintTask *task = reinterpret_cast(data); + delete task; + }; + if (napi_wrap(env, self, task, finalize, nullptr, nullptr) != napi_ok) { + finalize(env, task, nullptr); + return nullptr; + } + PRINT_HILOGD("Succeed to allocate print task"); + return self; + } + return nullptr; +} + napi_value NapiPrintTask::GetAbilityContext( napi_env env, napi_value value, std::shared_ptr &abilityContext) { @@ -142,42 +232,46 @@ napi_value NapiPrintTask::Initialize(napi_env env, napi_callback_info info) napi_value argv[NapiPrintUtils::MAX_ARGC] = { nullptr }; PRINT_CALL(env, napi_get_cb_info(env, info, &argc, argv, &self, nullptr)); - std::vector printfiles; - uint32_t arrayReLength = 0; - PRINT_CALL(env, napi_get_array_length(env, argv[0], &arrayReLength)); - for (uint32_t index = 0; index < arrayReLength; index++) { - napi_value filesValue; - napi_get_element(env, argv[0], index, &filesValue); - std::string files = NapiPrintUtils::GetStringFromValueUtf8(env, filesValue); - PRINT_HILOGD("file[%{public}d] %{private}s.", index, files.c_str()); - if (IsValidFile(files)) { - printfiles.emplace_back(files); + if (argc > NapiPrintUtils::ARGC_THREE) { + return ParsePrintAdapterParameter(env, argc, argv, self); + } else { + std::vector printfiles; + uint32_t arrayReLength = 0; + PRINT_CALL(env, napi_get_array_length(env, argv[0], &arrayReLength)); + for (uint32_t index = 0; index < arrayReLength; index++) { + napi_value filesValue; + napi_get_element(env, argv[0], index, &filesValue); + std::string files = NapiPrintUtils::GetStringFromValueUtf8(env, filesValue); + PRINT_HILOGD("file[%{public}d] %{private}s.", index, files.c_str()); + if (IsValidFile(files)) { + printfiles.emplace_back(files); + } } - } - std::shared_ptr abilityContext; - sptr callerToken; - if (argc == NapiPrintUtils::ARGC_TWO && GetAbilityContext(env, argv[1], abilityContext) != nullptr) { - callerToken = abilityContext->GetToken(); - PRINT_HILOGI("get callerToken:%{public}s", callerToken !=nullptr ? "success" : "failed"); - } + std::shared_ptr abilityContext; + sptr callerToken; + if (argc == NapiPrintUtils::ARGC_TWO && GetAbilityContext(env, argv[1], abilityContext) != nullptr) { + callerToken = abilityContext->GetToken(); + PRINT_HILOGI("get callerToken:%{public}s", callerToken !=nullptr ? "success" : "failed"); + } - auto task = new (std::nothrow) PrintTask(printfiles, callerToken); - if (task == nullptr) { - PRINT_HILOGE("print task fail"); - return nullptr; - } - auto finalize = [](napi_env env, void *data, void *hint) { - PRINT_HILOGD("destructed print task"); - PrintTask *task = reinterpret_cast(data); - delete task; - }; - if (napi_wrap(env, self, task, finalize, nullptr, nullptr) != napi_ok) { - finalize(env, task, nullptr); - return nullptr; + auto task = new (std::nothrow) PrintTask(printfiles, callerToken); + if (task == nullptr) { + PRINT_HILOGE("print task fail"); + return nullptr; + } + auto finalize = [](napi_env env, void *data, void *hint) { + PRINT_HILOGD("destructed print task"); + PrintTask *task = reinterpret_cast(data); + delete task; + }; + if (napi_wrap(env, self, task, finalize, nullptr, nullptr) != napi_ok) { + finalize(env, task, nullptr); + return nullptr; + } + PRINT_HILOGD("Succeed to allocate print task"); + return self; } - PRINT_HILOGD("Succeed to allocate print task"); - return self; } bool NapiPrintTask::IsValidFile(const std::string &fileName) @@ -202,6 +296,15 @@ bool NapiPrintTask::IsValidFile(const std::string &fileName) napi_status NapiPrintTask::VerifyParameters(napi_env env, size_t argc, napi_value *argv, const std::shared_ptr context) { + if (argc > NapiPrintUtils::ARGC_THREE) { + std::shared_ptr abilityContext; + if (GetAbilityContext(env, argv[NapiPrintUtils::ARGC_THREE], abilityContext) == nulptr) { + PRINT_HILOGE("Print adapter Ability Context is null"); + context->SetErrorIndex(E_PRINT_INVALID_PARAMETER); + return napi_invalid_arg; + } + return napi_ok; + } bool isFileArray = false; napi_is_array(env, argv[0], &isFileArray); diff --git a/interfaces/kits/napi/src/print_module.cpp b/interfaces/kits/napi/src/print_module.cpp index cca1bc72..4c402abf 100644 --- a/interfaces/kits/napi/src/print_module.cpp +++ b/interfaces/kits/napi/src/print_module.cpp @@ -44,6 +44,7 @@ static constexpr const char *FUNCTION_UPDATE_EXTENSION_INFO = "updateExtensionIn static constexpr const char *FUNCTION_NATIVE_ADD_PRINTER_TO_CUPS = "addPrinterToCups"; static constexpr const char *FUNCTION_QUERY_CAPABILITY_BY_URI = "queryPrinterCapabilityByUri"; static constexpr const char *FUNCTION_START_GET_PRINT_FILE = "startGetPrintFile"; +static constexpr const char *FUNCTION_NOTIFY_PRINT_SERVICE = "notifyPrintService"; static constexpr const char *PROPERTY_PRINTER_ADD = "PRINTER_ADDED"; static constexpr const char *PROPERTY_PRINTER_REMOVE = "PRINTER_REMOVED"; @@ -299,6 +300,7 @@ static napi_value Init(napi_env env, napi_value exports) PRINT_NAPI_METHOD(FUNCTION_NATIVE_ADD_PRINTER_TO_CUPS, NapiPrintExt::AddPrinterToCups), PRINT_NAPI_METHOD(FUNCTION_QUERY_CAPABILITY_BY_URI, NapiPrintExt::QueryPrinterCapabilityByUri), PRINT_NAPI_METHOD(FUNCTION_START_GET_PRINT_FILE, NapiInnerPrint::StartGetPrintFile), + PRINT_NAPI_METHOD(FUNCTION_NOTIFY_PRINT_SERVICE, NapiInnerPrint::NotifyPrintService), }; napi_status status = napi_define_properties(env, exports, sizeof(desc) / sizeof(napi_property_descriptor), desc); diff --git a/interfaces/kits/napi/src/print_task.cpp b/interfaces/kits/napi/src/print_task.cpp index 15aa52d8..d17b0be0 100644 --- a/interfaces/kits/napi/src/print_task.cpp +++ b/interfaces/kits/napi/src/print_task.cpp @@ -55,6 +55,20 @@ PrintTask::PrintTask(const std::vector &innerList, const sptr &innerPrintAdapterCallback_, + const std::shared_ptr &innerPrintAttributes_, const sptr &innerCalllerToken_) + : taskId_("") +{ + supportEvents_[EVENT_BLOCK] = true; + supportEvents_[EVENT_SUCCESS] = true; + supportEvents_[EVENT_FAIL] = true; + supportEvents_[EVENT_CANCEL] = true; + printJobName_ = innerPrintJobName_; + printAdapterCallback_ = innerPrintAdapterCallback_; + printAttributes = innerPrintAttributes_; + callerToken_ = innerCallerToken_; +} + PrintTask::~PrintTask() { supportEvents_.clear(); @@ -86,6 +100,16 @@ uint32_t PrintTask::Start() } } +uint32_t PrintTask::StartPrintAdapter() +{ + if (printAdapterCallback_ != nullptr && printAttributes_ != nullptr && callerToken_ != nullptr) { + PRINT_HILOGI("call client's StartPrintAdapter interface."); + return PrintManagerClient::GetINstance()->Print( + printJobName_, printAdapterCallback_, *printAttributes_, static_cast(callerToken_)); + } + return E_PRINT_INVALID_PARAMETER; +} + void PrintTask::Stop() { PrintManagerClient::GetInstance()->StopPrint(taskId_); diff --git a/services/include/print_service_ability.h b/services/include/print_service_ability.h index fff472cc..95f15ac7 100644 --- a/services/include/print_service_ability.h +++ b/services/include/print_service_ability.h @@ -86,6 +86,7 @@ public: const sptr &token) override; int32_t StartGetPrintFile(const std::string &jobId, const PrintAttributes &printAttributes, const uint32_t fd) override; + int32_t Off(const std::string &jobId, const std::string &type) override; protected: void OnStart() override; diff --git a/services/include/print_service_stub.h b/services/include/print_service_stub.h index 66aefa3f..7907b0fc 100644 --- a/services/include/print_service_stub.h +++ b/services/include/print_service_stub.h @@ -58,6 +58,7 @@ private: bool OnQueryPrinterCapabilityByUri(MessageParcel &data, MessageParcel &reply); bool OnPrintByAdapter(MessageParcel &data, MessageParcel &reply); bool OnStartGetPrintFile(MessageParcel &data, MessageParcel &reply); + bool OnNotifyPrintService(MessageParcel &data, MessageParcel &reply); private: using PrintCmdHandler = bool (PrintServiceStub::*)(MessageParcel &, MessageParcel &); diff --git a/services/src/print_service_ability.cpp b/services/src/print_service_ability.cpp index f913c89d..4bd0dd99 100644 --- a/services/src/print_service_ability.cpp +++ b/services/src/print_service_ability.cpp @@ -1593,6 +1593,21 @@ int32_t PrintServiceAbility::StartGetPrintFile(const std::string &jobId, const P return E_PRINT_NONE; } +int32_t PrintServiceAbility::NotifyPrintService(const std::string &jobId, const std::string &type) +{ + std::string permission = PERMISSION_NAME_PRINT_JOB + if (!CheckPermission(permission)) { + PRINT_HILOGE("no permission to access print service"); + return E_PRINT_NO_PERMISSION; + } + + if (type == "0") { + PRINT_HILOGI("Notify Spooler Closed jobId : %{public}s", jobId.c_str()); + return E_PRINT_NONE; + } + return E_PRINT_INVALID_PARAMETER; + } + void PrintServiceAbility::notifyAdapterJobChanged(const std::string jobId, const uint32_t state, const uint32_t subState) { diff --git a/services/src/print_service_stub.cpp b/services/src/print_service_stub.cpp index 2db1b471..857dbec8 100644 --- a/services/src/print_service_stub.cpp +++ b/services/src/print_service_stub.cpp @@ -56,6 +56,7 @@ PrintServiceStub::PrintServiceStub() &PrintServiceStub::OnQueryPrinterCapabilityByUri; cmdMap_[OHOS::Print::IPrintInterfaceCode::CMD_STARTPRINTJOB_BY_ADAPTER] = &PrintServiceStub::OnPrintByAdapter; cmdMap_[OHOS::Print::IPrintInterfaceCode::CMD_START_GET_FILE] = &PrintServiceStub::OnStartGetPrintFile; + cmdMap_[OHOS::Print::IPrintInterfaceCode::CMD_NOTIFY_PRINT_SERVICE] = &PrintServiceStub::OnNotifyPrintService; } int32_t PrintServiceStub::OnRemoteRequest( @@ -505,4 +506,16 @@ bool PrintServiceStub::OnStartGetPrintFile(MessageParcel &data, MessageParcel &r PRINT_HILOGI("PrintServiceStub::OnStartGetPrintFile out"); return ret == E_PRINT_NONE; } + +bool PrintServiceStub::OnNotifyPrintService(MessageParcel &data, MessageParcel &reply) +{ + PRINT_HILOGD("PrintServiceStub::OnNotifyPrintService in"); + std::string jobId = data.ReadString(); + std::string type = data.ReadString(); + PRINT_HILOGD("PrintServiceStub::OnNotifyPrintService type=%{public}s ", type.c_str()); + int32_t ret = NotifyPrintService(jobId, type); + reply.WriteInt32(ret); + PRINT_HILOGD("PrintServiceStub::OnNotifyPrintService out"); + return ret == E_PRINT_NONE; +} } // namespace OHOS::Print diff --git a/test/unittest/service_test/mock/mock_print_service.h b/test/unittest/service_test/mock/mock_print_service.h index d093aa10..807fc879 100644 --- a/test/unittest/service_test/mock/mock_print_service.h +++ b/test/unittest/service_test/mock/mock_print_service.h @@ -145,6 +145,10 @@ public: { return E_PRINT_NONE; } + int32_t NotifyPrintService(const std::string &taskId, const std::string &type) override + { + return E_PRINT_NONE; + } }; class MockPrintService final : public DummyPrintServiceStub { -- Gitee From 396b3b4e67f74d1c1dfe55755d4e38685dacadfd Mon Sep 17 00:00:00 2001 From: yuanyulu Date: Tue, 24 Oct 2023 18:16:58 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0js=E5=B1=82=E6=96=B0?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=85=A5=E5=8F=A3=E6=8E=A5=E5=8F=A3=20Signed?= =?UTF-8?q?-off-by:yuanyulu@huawei.com?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yuanyulu --- interfaces/kits/napi/include/print_task.h | 4 ++-- interfaces/kits/napi/src/napi_inner_print.cpp | 8 ++++---- interfaces/kits/napi/src/napi_print_task.cpp | 18 +++++++++--------- interfaces/kits/napi/src/print_task.cpp | 6 +++--- services/include/print_service_ability.h | 2 +- services/src/print_service_ability.cpp | 4 ++-- services/src/print_service_stub.cpp | 3 ++- .../service_test/mock/mock_print_service.h | 2 +- 8 files changed, 24 insertions(+), 23 deletions(-) diff --git a/interfaces/kits/napi/include/print_task.h b/interfaces/kits/napi/include/print_task.h index b25a9a5c..0b69aa16 100644 --- a/interfaces/kits/napi/include/print_task.h +++ b/interfaces/kits/napi/include/print_task.h @@ -32,7 +32,7 @@ class PrintTask { public: explicit PrintTask(const std::vector &fileList, const sptr &callerToken_); PrintTask(const std::string &printJobName_, const sptr &printAdapterCallback_, - const std::shared_ptr &printAttributes_, const sptr &calllerToken_); + const std::shared_ptr &printAttributes_, const sptr &callerToken_); ~PrintTask(); uint32_t Start(); @@ -62,7 +62,7 @@ private: std::map supportEvents_; uint32_t pathType_ = 0; sptr callerToken_ = nullptr; - std::string printJobName_;; + std::string printJobName_; sptr printAdapterCallback_ = nullptr; std::shared_ptr printAttributes_ = nullptr; enum FilePathType { diff --git a/interfaces/kits/napi/src/napi_inner_print.cpp b/interfaces/kits/napi/src/napi_inner_print.cpp index 2fe461dd..9b912c2f 100644 --- a/interfaces/kits/napi/src/napi_inner_print.cpp +++ b/interfaces/kits/napi/src/napi_inner_print.cpp @@ -515,7 +515,7 @@ napi_value NapiInnerPrint::StartGetPrintFile(napi_env env, napi_callback_info in napi_value NapiInnerPrint::NotifyPrintService(napi_env env, napi_callback_info info) { - PRINT_HILOGD("Enter NotifyPrintService---->"); + PRINT_HILOGI("Enter NotifyPrintService---->"); auto context = std::make_shared(); auto input = [context](napi_env env, size_t argc, napi_value *argv, napi_value self) -> napi_status { PRINT_ASSERT_BASE(env, argc == NapiPrintUtils::ARGC_TWO, " should 2 parameter!", napi_invalid_arg); @@ -527,7 +527,7 @@ napi_value NapiInnerPrint::NotifyPrintService(napi_env env, napi_callback_info i std::string jobId = NapiPrintUtils::GetStringFromValueUtf8(env, argv[0]); std::string type = NapiPrintUtils::GetStringFromValueUtf8(env, argv[1]); if (jobId == "" || type == "") { - PRINT_HILOGE("Parse jobId error"); + PRINT_HILOGE("Parse JobId error!"); context->SetErrorIndex(E_PRINT_INVALID_PARAMETER); return napi_invalid_arg; } @@ -537,14 +537,14 @@ napi_value NapiInnerPrint::NotifyPrintService(napi_env env, napi_callback_info i }; auto output = [context](napi_env env, napi_value *result) -> napi_status { napi_status status = napi_get_boolean(env, context->result, result); - PRINT_HILOGD("context->result = %{public}d", context->result); + PRINT_HILOGD("output ---- [%{public}s], status[%{public}d]", context->result ? "true" : "false", status); return status; }; auto exec = [context](PrintAsyncCall::Context *ctx) { int32_t ret = PrintManagerClient::GetInstance()->NotifyPrintService(context->jobId, context->type); context->result = ret == E_PRINT_NONE; if (ret != E_PRINT_NONE) { - PRINT_HILOGE("Failed to unregister event"); + PRINT_HILOGE("Failed to NotifyPrintService"); context->SetErrorIndex(ret); } }; diff --git a/interfaces/kits/napi/src/napi_print_task.cpp b/interfaces/kits/napi/src/napi_print_task.cpp index 3eeeea3e..a516603b 100644 --- a/interfaces/kits/napi/src/napi_print_task.cpp +++ b/interfaces/kits/napi/src/napi_print_task.cpp @@ -90,7 +90,7 @@ napi_value NapiPrintTask::Print(napi_env env, napi_callback_info info) napi_value NapiPrintTask::PrintByAdapter(napi_env env, napi_callback_info info) { - PRINT_HILOGD("PrintByAdapter start ---->"); + PRINT_HILOGI("PrintByAdapter start ---->"); auto context = std::make_shared(); auto input = [context](napi_env env, size_t argc, napi_value *argv, napi_value self) -> napi_status { PRINT_ASSERT_BASE(env, argc == NapiPrintUtils::ARGC_FOUR, "need 4 parameter!", napi_invalid_arg); @@ -135,10 +135,10 @@ napi_value NapiPrintTask::PrintByAdapter(napi_env env, napi_callback_info info) return asyncCall.Call(env); } -napi_value NapiPrintTask::ParsePrintAdapterParameter(napi_env env, size_t argc, napi_value *argv, napi_value self); +napi_value NapiPrintTask::ParsePrintAdapterParameter(napi_env env, size_t argc, napi_value *argv, napi_value self) { if (argc > NapiPrintUtils::ARGC_THREE && argc > NapiPrintUtils::ARGC_TWO) { - std::string printJobName = NapiPrintUtils::GetStringFromValueUtf8(env, argv[0]) + std::string printJobName = NapiPrintUtils::GetStringFromValueUtf8(env, argv[0]); napi_ref adapterRef = NapiPrintUtils::CreateReference(env, argv[1]); sptr callback = new (std::nothrow) PrintCallback(env, adapterRef); @@ -147,14 +147,15 @@ napi_value NapiPrintTask::ParsePrintAdapterParameter(napi_env env, size_t argc, printAttributes = PrintAttributesHelper::BuildFromJs(env, argv[NapiPrintUtils::ARGC_TWO]); if (callback == nullptr || printAttributes == nullptr) { PRINT_HILOGE("printAdapter paramter error"); + return nullptr; } std::shared_ptr abilityContext; - sptr callerToken; + sptr callerToken = nullptr; if (GetAbilityContext(env, argv[NapiPrintUtils::ARGC_THREE], abilityContext) != nullptr) { callerToken = abilityContext->GetToken(); } - auto task = new (std::nothrow) PrintTask(printJobName, callback, PrintAttributes, callerToken); + auto task = new (std::nothrow) PrintTask(printJobName, callback, printAttributes, callerToken); if (task == nullptr) { PRINT_HILOGE("print task fail"); @@ -252,9 +253,8 @@ napi_value NapiPrintTask::Initialize(napi_env env, napi_callback_info info) sptr callerToken; if (argc == NapiPrintUtils::ARGC_TWO && GetAbilityContext(env, argv[1], abilityContext) != nullptr) { callerToken = abilityContext->GetToken(); - PRINT_HILOGI("get callerToken:%{public}s", callerToken !=nullptr ? "success" : "failed"); + PRINT_HILOGI("get callerToken:%{public}s", callerToken != nullptr ? "success" : "failed"); } - auto task = new (std::nothrow) PrintTask(printfiles, callerToken); if (task == nullptr) { PRINT_HILOGE("print task fail"); @@ -298,8 +298,8 @@ napi_status NapiPrintTask::VerifyParameters(napi_env env, size_t argc, napi_valu { if (argc > NapiPrintUtils::ARGC_THREE) { std::shared_ptr abilityContext; - if (GetAbilityContext(env, argv[NapiPrintUtils::ARGC_THREE], abilityContext) == nulptr) { - PRINT_HILOGE("Print adapter Ability Context is null"); + if (GetAbilityContext(env, argv[NapiPrintUtils::ARGC_THREE], abilityContext) == nullptr) { + PRINT_HILOGE("Print adapter Ability Context is null."); context->SetErrorIndex(E_PRINT_INVALID_PARAMETER); return napi_invalid_arg; } diff --git a/interfaces/kits/napi/src/print_task.cpp b/interfaces/kits/napi/src/print_task.cpp index d17b0be0..67c7249a 100644 --- a/interfaces/kits/napi/src/print_task.cpp +++ b/interfaces/kits/napi/src/print_task.cpp @@ -56,7 +56,7 @@ PrintTask::PrintTask(const std::vector &innerList, const sptr &innerPrintAdapterCallback_, - const std::shared_ptr &innerPrintAttributes_, const sptr &innerCalllerToken_) + const std::shared_ptr &innerPrintAttributes_, const sptr &innerCallerToken_) : taskId_("") { supportEvents_[EVENT_BLOCK] = true; @@ -65,7 +65,7 @@ PrintTask::PrintTask(const std::string &innerPrintJobName_, const sptrPrint( + return PrintManagerClient::GetInstance()->Print( printJobName_, printAdapterCallback_, *printAttributes_, static_cast(callerToken_)); } return E_PRINT_INVALID_PARAMETER; diff --git a/services/include/print_service_ability.h b/services/include/print_service_ability.h index 95f15ac7..6e817947 100644 --- a/services/include/print_service_ability.h +++ b/services/include/print_service_ability.h @@ -86,7 +86,7 @@ public: const sptr &token) override; int32_t StartGetPrintFile(const std::string &jobId, const PrintAttributes &printAttributes, const uint32_t fd) override; - int32_t Off(const std::string &jobId, const std::string &type) override; + int32_t NotifyPrintService(const std::string &jobId, const std::string &type) override; protected: void OnStart() override; diff --git a/services/src/print_service_ability.cpp b/services/src/print_service_ability.cpp index 4bd0dd99..6acf58e0 100644 --- a/services/src/print_service_ability.cpp +++ b/services/src/print_service_ability.cpp @@ -1595,7 +1595,7 @@ int32_t PrintServiceAbility::StartGetPrintFile(const std::string &jobId, const P int32_t PrintServiceAbility::NotifyPrintService(const std::string &jobId, const std::string &type) { - std::string permission = PERMISSION_NAME_PRINT_JOB + std::string permission = PERMISSION_NAME_PRINT_JOB; if (!CheckPermission(permission)) { PRINT_HILOGE("no permission to access print service"); return E_PRINT_NO_PERMISSION; @@ -1606,7 +1606,7 @@ int32_t PrintServiceAbility::NotifyPrintService(const std::string &jobId, const return E_PRINT_NONE; } return E_PRINT_INVALID_PARAMETER; - } +} void PrintServiceAbility::notifyAdapterJobChanged(const std::string jobId, const uint32_t state, const uint32_t subState) diff --git a/services/src/print_service_stub.cpp b/services/src/print_service_stub.cpp index 857dbec8..55ce4046 100644 --- a/services/src/print_service_stub.cpp +++ b/services/src/print_service_stub.cpp @@ -512,7 +512,8 @@ bool PrintServiceStub::OnNotifyPrintService(MessageParcel &data, MessageParcel & PRINT_HILOGD("PrintServiceStub::OnNotifyPrintService in"); std::string jobId = data.ReadString(); std::string type = data.ReadString(); - PRINT_HILOGD("PrintServiceStub::OnNotifyPrintService type=%{public}s ", type.c_str()); + PRINT_HILOGD( + "PrintServiceStub::OnNotifyPrintService jobId=%{public}s type=%{public}s ", jobId.c_str(), type.c_str()); int32_t ret = NotifyPrintService(jobId, type); reply.WriteInt32(ret); PRINT_HILOGD("PrintServiceStub::OnNotifyPrintService out"); diff --git a/test/unittest/service_test/mock/mock_print_service.h b/test/unittest/service_test/mock/mock_print_service.h index 807fc879..5a91a933 100644 --- a/test/unittest/service_test/mock/mock_print_service.h +++ b/test/unittest/service_test/mock/mock_print_service.h @@ -145,7 +145,7 @@ public: { return E_PRINT_NONE; } - int32_t NotifyPrintService(const std::string &taskId, const std::string &type) override + int32_t NotifyPrintService(const std::string &jobId, const std::string &type) override { return E_PRINT_NONE; } -- Gitee From 8475f7c1303b4c1b25c22d09d21ef1da8eaf8635 Mon Sep 17 00:00:00 2001 From: yuanyulu Date: Tue, 24 Oct 2023 18:22:38 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0js=E5=B1=82=E6=96=B0?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=85=A5=E5=8F=A3=E6=8E=A5=E5=8F=A3=20Signed?= =?UTF-8?q?-off-by:yuanyulu@huawei.com?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yuanyulu --- interfaces/kits/napi/src/napi_print_task.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/interfaces/kits/napi/src/napi_print_task.cpp b/interfaces/kits/napi/src/napi_print_task.cpp index a516603b..9c0e525b 100644 --- a/interfaces/kits/napi/src/napi_print_task.cpp +++ b/interfaces/kits/napi/src/napi_print_task.cpp @@ -305,6 +305,7 @@ napi_status NapiPrintTask::VerifyParameters(napi_env env, size_t argc, napi_valu } return napi_ok; } + bool isFileArray = false; napi_is_array(env, argv[0], &isFileArray); -- Gitee From e00796ec01ad157c346bd694e4b335c174dd1ece Mon Sep 17 00:00:00 2001 From: yuanyulu Date: Tue, 24 Oct 2023 18:25:58 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0js=E5=B1=82=E6=96=B0?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=85=A5=E5=8F=A3=E6=8E=A5=E5=8F=A3=20Signed?= =?UTF-8?q?-off-by:yuanyulu@huawei.com?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yuanyulu --- interfaces/kits/napi/src/napi_print_task.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/kits/napi/src/napi_print_task.cpp b/interfaces/kits/napi/src/napi_print_task.cpp index 9c0e525b..0eb20127 100644 --- a/interfaces/kits/napi/src/napi_print_task.cpp +++ b/interfaces/kits/napi/src/napi_print_task.cpp @@ -139,7 +139,7 @@ napi_value NapiPrintTask::ParsePrintAdapterParameter(napi_env env, size_t argc, { if (argc > NapiPrintUtils::ARGC_THREE && argc > NapiPrintUtils::ARGC_TWO) { std::string printJobName = NapiPrintUtils::GetStringFromValueUtf8(env, argv[0]); - + napi_ref adapterRef = NapiPrintUtils::CreateReference(env, argv[1]); sptr callback = new (std::nothrow) PrintCallback(env, adapterRef); -- Gitee From 7857b451564d2ae32be500728728a54b2ce5b0f9 Mon Sep 17 00:00:00 2001 From: yuanyulu Date: Tue, 24 Oct 2023 18:26:52 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0js=E5=B1=82=E6=96=B0?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=85=A5=E5=8F=A3=E6=8E=A5=E5=8F=A3=20Signed?= =?UTF-8?q?-off-by:yuanyulu@huawei.com?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yuanyulu --- interfaces/kits/napi/src/napi_print_task.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interfaces/kits/napi/src/napi_print_task.cpp b/interfaces/kits/napi/src/napi_print_task.cpp index 0eb20127..b6b9fc36 100644 --- a/interfaces/kits/napi/src/napi_print_task.cpp +++ b/interfaces/kits/napi/src/napi_print_task.cpp @@ -139,7 +139,7 @@ napi_value NapiPrintTask::ParsePrintAdapterParameter(napi_env env, size_t argc, { if (argc > NapiPrintUtils::ARGC_THREE && argc > NapiPrintUtils::ARGC_TWO) { std::string printJobName = NapiPrintUtils::GetStringFromValueUtf8(env, argv[0]); - + napi_ref adapterRef = NapiPrintUtils::CreateReference(env, argv[1]); sptr callback = new (std::nothrow) PrintCallback(env, adapterRef); @@ -232,7 +232,7 @@ napi_value NapiPrintTask::Initialize(napi_env env, napi_callback_info info) size_t argc = NapiPrintUtils::MAX_ARGC; napi_value argv[NapiPrintUtils::MAX_ARGC] = { nullptr }; PRINT_CALL(env, napi_get_cb_info(env, info, &argc, argv, &self, nullptr)); - + if (argc > NapiPrintUtils::ARGC_THREE) { return ParsePrintAdapterParameter(env, argc, argv, self); } else { -- Gitee From f69b4e1cad6a51d0ae423b4809a2384e83f1d585 Mon Sep 17 00:00:00 2001 From: yuanyulu Date: Tue, 24 Oct 2023 18:29:29 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0js=E5=B1=82=E6=96=B0?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=85=A5=E5=8F=A3=E6=8E=A5=E5=8F=A3=20Signed?= =?UTF-8?q?-off-by:yuanyulu@huawei.com?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yuanyulu --- interfaces/kits/napi/src/napi_print_task.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interfaces/kits/napi/src/napi_print_task.cpp b/interfaces/kits/napi/src/napi_print_task.cpp index b6b9fc36..0cb972b3 100644 --- a/interfaces/kits/napi/src/napi_print_task.cpp +++ b/interfaces/kits/napi/src/napi_print_task.cpp @@ -139,7 +139,7 @@ napi_value NapiPrintTask::ParsePrintAdapterParameter(napi_env env, size_t argc, { if (argc > NapiPrintUtils::ARGC_THREE && argc > NapiPrintUtils::ARGC_TWO) { std::string printJobName = NapiPrintUtils::GetStringFromValueUtf8(env, argv[0]); - + napi_ref adapterRef = NapiPrintUtils::CreateReference(env, argv[1]); sptr callback = new (std::nothrow) PrintCallback(env, adapterRef); -- Gitee