1 /*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "napi_inner_print.h"
17 #include "napi_print_ext.h"
18 #include "napi_print_task.h"
19 #ifdef PDFIUM_ENABLE
20 #include "napi_print_pdf_render.h"
21 #endif // PDFIUM_ENABLE
22 #include "print_constant.h"
23 #include "print_log.h"
24
25 using namespace OHOS::Print;
26
27 static constexpr const char *FUNCTION_PRINT = "print";
28 static constexpr const char *FUNCTION_QUERY_EXT = "queryAllPrinterExtensionInfos";
29 static constexpr const char *FUNCTION_START_DISCOVERY = "startDiscoverPrinter";
30 static constexpr const char *FUNCTION_STOP_DISCOVERY = "stopDiscoverPrinter";
31 static constexpr const char *FUNCTION_CONNECT_PRINT = "connectPrinter";
32 static constexpr const char *FUNCTION_DISCONNECT_PRINT = "disconnectPrinter";
33 static constexpr const char *FUNCTION_START_PRINT = "startPrintJob";
34 static constexpr const char *FUNCTION_CANCEL_PRINT = "cancelPrintJob";
35 static constexpr const char *FUNCTION_REQUEST_PREVIEW = "requestPrintPreview";
36 static constexpr const char *FUNCTION_QUERY_CAPABILITY = "queryPrinterCapability";
37 static constexpr const char *FUNCTION_QUERY_ALL_PRINTJOB = "queryAllPrintJobs";
38 static constexpr const char *FUNCTION_QUERY_PRINTJOB_LIST = "queryPrintJobList";
39 static constexpr const char *FUNCTION_QUERY_PRINTJOB_BYID = "queryPrintJobById";
40 static constexpr const char *FUNCTION_REGISTER_EVENT = "on";
41 static constexpr const char *FUNCTION_UNREGISTER_EVENT = "off";
42 static constexpr const char *FUNCTION_ADD_PRINTER = "addPrinters";
43 static constexpr const char *FUNCTION_REMOVE_PRINTER = "removePrinters";
44 static constexpr const char *FUNCTION_UPDATE_PRINTER = "updatePrinters";
45 static constexpr const char *FUNCTION_UPDATE_PRINTER_STATE = "updatePrinterState";
46 static constexpr const char *FUNCTION_UPDATE_JOB_STATE = "updatePrintJobState";
47 static constexpr const char *FUNCTION_UPDATE_EXTENSION_INFO = "updateExtensionInfo";
48 static constexpr const char *FUNCTION_NATIVE_ADD_PRINTER_TO_CUPS = "addPrinterToCups";
49 static constexpr const char *FUNCTION_QUERY_CAPABILITY_BY_URI = "queryPrinterCapabilityByUri";
50 static constexpr const char *FUNCTION_START_GET_PRINT_FILE = "startGettingPrintFile";
51 static constexpr const char *FUNCTION_NOTIFY_PRINT_SERVICE = "notifyPrintService";
52 static constexpr const char *FUNCTION_QUERY_ADDED_PRINTER = "getAddedPrinters";
53 static constexpr const char *FUNCTION_QUERY_PRINTER_INFO_BY_PRINTER_ID = "getPrinterInfoById";
54 static constexpr const char *FUNCTION_NOTIFY_PRINT_SERVICE_EVENT = "notifyPrintServiceEvent";
55 static constexpr const char *FUNCTION_GET_PRINTER_PREFERENCE = "getPrinterPreference";
56 static constexpr const char *FUNCTION_SET_PRINTER_PREFERENCE = "setPrinterPreference";
57 static constexpr const char *FUNCTION_SET_DEFAULT_PRINTER = "setDefaultPrinter";
58 static constexpr const char *FUNCTION_DELETE_PRINTER_FROM_CUPS = "deletePrinterFromCups";
59
60 #define PRINT_NAPI_METHOD(name, func) \
61 { \
62 name, 0, func, 0, 0, 0, napi_default, 0 \
63 }
64
65 #define PRINT_NAPI_PROPERTY(name, val) \
66 { \
67 (name), nullptr, nullptr, nullptr, nullptr, val, napi_static, nullptr \
68 }
69
SetEnumProperty(napi_env env,napi_value object,const std::string & name,uint32_t value)70 static void SetEnumProperty(napi_env env, napi_value object, const std::string &name, uint32_t value)
71 {
72 napi_value tempValue = nullptr;
73 napi_create_int32(env, value, &tempValue);
74 napi_set_named_property(env, object, name.c_str(), tempValue);
75 }
76
NapiCreateDirectionModeEnum(napi_env env)77 static napi_value NapiCreateDirectionModeEnum(napi_env env)
78 {
79 napi_value object = nullptr;
80 napi_create_object(env, &object);
81 SetEnumProperty(env, object, "DIRECTION_MODE_AUTO", static_cast<int32_t>(DIRECTION_MODE_AUTO));
82 SetEnumProperty(env, object, "DIRECTION_MODE_PORTRAIT", static_cast<int32_t>(DIRECTION_MODE_PORTRAIT));
83 SetEnumProperty(env, object, "DIRECTION_MODE_LANDSCAPE", static_cast<int32_t>(DIRECTION_MODE_LANDSCAPE));
84 return object;
85 }
86
NapiCreateColorModeEnum(napi_env env)87 static napi_value NapiCreateColorModeEnum(napi_env env)
88 {
89 napi_value object = nullptr;
90 napi_create_object(env, &object);
91 SetEnumProperty(env, object, "COLOR_MODE_MONOCHROME", static_cast<int32_t>(PRINT_COLOR_MODE_MONOCHROME));
92 SetEnumProperty(env, object, "COLOR_MODE_COLOR", static_cast<int32_t>(PRINT_COLOR_MODE_COLOR));
93 return object;
94 }
95
NapiCreateDuplexModeEnum(napi_env env)96 static napi_value NapiCreateDuplexModeEnum(napi_env env)
97 {
98 napi_value object = nullptr;
99 napi_create_object(env, &object);
100 SetEnumProperty(env, object, "DUPLEX_MODE_NONE", static_cast<int32_t>(DUPLEX_MODE_NONE));
101 SetEnumProperty(env, object, "DUPLEX_MODE_LONG_EDGE", static_cast<int32_t>(DUPLEX_MODE_LONG_EDGE));
102 SetEnumProperty(env, object, "DUPLEX_MODE_SHORT_EDGE", static_cast<int32_t>(DUPLEX_MODE_SHORT_EDGE));
103 return object;
104 }
105
NapiCreatePageTypeEnum(napi_env env)106 static napi_value NapiCreatePageTypeEnum(napi_env env)
107 {
108 napi_value object = nullptr;
109 napi_create_object(env, &object);
110 SetEnumProperty(env, object, "PAGE_ISO_A3", static_cast<int32_t>(PAGE_ISO_A3));
111 SetEnumProperty(env, object, "PAGE_ISO_A4", static_cast<int32_t>(PAGE_ISO_A4));
112 SetEnumProperty(env, object, "PAGE_ISO_A5", static_cast<int32_t>(PAGE_ISO_A5));
113 SetEnumProperty(env, object, "PAGE_JIS_B5", static_cast<int32_t>(PAGE_JIS_B5));
114 SetEnumProperty(env, object, "PAGE_ISO_C5", static_cast<int32_t>(PAGE_ISO_C5));
115 SetEnumProperty(env, object, "PAGE_ISO_DL", static_cast<int32_t>(PAGE_ISO_DL));
116 SetEnumProperty(env, object, "PAGE_LETTER", static_cast<int32_t>(PAGE_LETTER));
117 SetEnumProperty(env, object, "PAGE_LEGAL", static_cast<int32_t>(PAGE_LEGAL));
118 SetEnumProperty(env, object, "PAGE_PHOTO_4X6", static_cast<int32_t>(PAGE_PHOTO_4X6));
119 SetEnumProperty(env, object, "PAGE_PHOTO_5X7", static_cast<int32_t>(PAGE_PHOTO_5X7));
120 SetEnumProperty(env, object, "PAGE_INT_DL_ENVELOPE", static_cast<int32_t>(PAGE_INT_DL_ENVELOPE));
121 SetEnumProperty(env, object, "PAGE_B_TABLOID", static_cast<int32_t>(PAGE_B_TABLOID));
122 return object;
123 }
124
NapiCreateDocumentAdapterStateEnum(napi_env env)125 static napi_value NapiCreateDocumentAdapterStateEnum(napi_env env)
126 {
127 napi_value object = nullptr;
128 napi_create_object(env, &object);
129 SetEnumProperty(env, object, "PREVIEW_DESTROY", static_cast<int32_t>(PREVIEW_ABILITY_DESTROY));
130 SetEnumProperty(env, object, "PRINT_TASK_SUCCEED", static_cast<int32_t>(PRINT_TASK_SUCCEED));
131 SetEnumProperty(env, object, "PRINT_TASK_FAIL", static_cast<int32_t>(PRINT_TASK_FAIL));
132 SetEnumProperty(env, object, "PRINT_TASK_CANCEL", static_cast<int32_t>(PRINT_TASK_CANCEL));
133 SetEnumProperty(env, object, "PRINT_TASK_BLOCK", static_cast<int32_t>(PRINT_TASK_BLOCK));
134 return object;
135 }
136
NapiCreateFileCreationStateEnum(napi_env env)137 static napi_value NapiCreateFileCreationStateEnum(napi_env env)
138 {
139 napi_value object = nullptr;
140 napi_create_object(env, &object);
141 SetEnumProperty(env, object, "PRINT_FILE_CREATED", static_cast<int32_t>(PRINT_FILE_CREATED_SUCCESS));
142 SetEnumProperty(env, object, "PRINT_FILE_CREATION_FAILED", static_cast<int32_t>(PRINT_FILE_CREATED_FAIL));
143 SetEnumProperty(env, object, "PRINT_FILE_CREATED_UNRENDERED",
144 static_cast<int32_t>(PRINT_FILE_CREATED_SUCCESS_UNRENDERED));
145 return object;
146 }
147
NapiCreatePrinterStateEnum(napi_env env)148 static napi_value NapiCreatePrinterStateEnum(napi_env env)
149 {
150 napi_value object = nullptr;
151 napi_create_object(env, &object);
152 SetEnumProperty(env, object, "PRINTER_ADDED", static_cast<int32_t>(PRINTER_ADDED));
153 SetEnumProperty(env, object, "PRINTER_REMOVED", static_cast<int32_t>(PRINTER_REMOVED));
154 SetEnumProperty(env, object, "PRINTER_CAPABILITY_UPDATED", static_cast<int32_t>(PRINTER_UPDATE_CAP));
155 SetEnumProperty(env, object, "PRINTER_CONNECTED", static_cast<int32_t>(PRINTER_CONNECTED));
156 SetEnumProperty(env, object, "PRINTER_DISCONNECTED", static_cast<int32_t>(PRINTER_DISCONNECTED));
157 SetEnumProperty(env, object, "PRINTER_RUNNING", static_cast<int32_t>(PRINTER_RUNNING));
158 return object;
159 }
160
NapiCreatePrintJobStateEnum(napi_env env)161 static napi_value NapiCreatePrintJobStateEnum(napi_env env)
162 {
163 napi_value object = nullptr;
164 napi_create_object(env, &object);
165 SetEnumProperty(env, object, "PRINT_JOB_PREPARE", static_cast<int32_t>(PRINT_JOB_PREPARED));
166 SetEnumProperty(env, object, "PRINT_JOB_QUEUED", static_cast<int32_t>(PRINT_JOB_QUEUED));
167 SetEnumProperty(env, object, "PRINT_JOB_RUNNING", static_cast<int32_t>(PRINT_JOB_RUNNING));
168 SetEnumProperty(env, object, "PRINT_JOB_BLOCKED", static_cast<int32_t>(PRINT_JOB_BLOCKED));
169 SetEnumProperty(env, object, "PRINT_JOB_COMPLETED", static_cast<int32_t>(PRINT_JOB_COMPLETED));
170 return object;
171 }
172
NapiCreatePrintJobSubStateEnum(napi_env env)173 static napi_value NapiCreatePrintJobSubStateEnum(napi_env env)
174 {
175 napi_value object = nullptr;
176 napi_create_object(env, &object);
177 SetEnumProperty(env, object, "PRINT_JOB_COMPLETED_SUCCESS", static_cast<int32_t>(PRINT_JOB_COMPLETED_SUCCESS));
178 SetEnumProperty(env, object, "PRINT_JOB_COMPLETED_FAILED", static_cast<int32_t>(PRINT_JOB_COMPLETED_FAILED));
179 SetEnumProperty(env, object, "PRINT_JOB_COMPLETED_CANCELLED", static_cast<int32_t>(PRINT_JOB_COMPLETED_CANCELLED));
180 SetEnumProperty(env, object, "PRINT_JOB_COMPLETED_FILE_CORRUPTED",
181 static_cast<int32_t>(PRINT_JOB_COMPLETED_FILE_CORRUPT));
182 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_OFFLINE", static_cast<int32_t>(PRINT_JOB_BLOCKED_OFFLINE));
183 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_BUSY", static_cast<int32_t>(PRINT_JOB_BLOCKED_BUSY));
184 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_CANCELLED", static_cast<int32_t>(PRINT_JOB_BLOCKED_CANCELLED));
185 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_OUT_OF_PAPER", static_cast<int32_t>(PRINT_JOB_BLOCKED_OUT_OF_PAPER));
186 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_OUT_OF_INK", static_cast<int32_t>(PRINT_JOB_BLOCKED_OUT_OF_INK));
187 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_OUT_OF_TONER", static_cast<int32_t>(PRINT_JOB_BLOCKED_OUT_OF_TONER));
188 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_JAMMED", static_cast<int32_t>(PRINT_JOB_BLOCKED_JAMMED));
189 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_DOOR_OPEN", static_cast<int32_t>(PRINT_JOB_BLOCKED_DOOR_OPEN));
190 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_SERVICE_REQUEST",
191 static_cast<int32_t>(PRINT_JOB_BLOCKED_SERVICE_REQUEST));
192 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_LOW_ON_INK", static_cast<int32_t>(PRINT_JOB_BLOCKED_LOW_ON_INK));
193 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_LOW_ON_TONER", static_cast<int32_t>(PRINT_JOB_BLOCKED_LOW_ON_TONER));
194 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_REALLY_LOW_ON_INK",
195 static_cast<int32_t>(PRINT_JOB_BLOCKED_REALLY_LOW_ON_INK));
196 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_BAD_CERTIFICATE",
197 static_cast<int32_t>(PRINT_JOB_BLOCKED_BAD_CERTIFICATE));
198 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_ACCOUNT_ERROR",
199 static_cast<int32_t>(PRINT_JOB_BLOCKED_ACCOUNT_ERROR));
200 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_PRINT_PERMISSION_ERROR",
201 static_cast<int32_t>(PRINT_JOB_BLOCKED_PRINT_PERMISSION_ERROR));
202 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_PRINT_COLOR_PERMISSION_ERROR",
203 static_cast<int32_t>(PRINT_JOB_BLOCKED_PRINT_COLOR_PERMISSION_ERROR));
204 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_NETWORK_ERROR",
205 static_cast<int32_t>(PRINT_JOB_BLOCKED_NETWORK_ERROR));
206 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_SERVER_CONNECTION_ERROR",
207 static_cast<int32_t>(PRINT_JOB_BLOCKED_SERVER_CONNECTION_ERROR));
208 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_LARGE_FILE_ERROR",
209 static_cast<int32_t>(PRINT_JOB_BLOCKED_LARGE_FILE_ERROR));
210 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_FILE_PARSING_ERROR",
211 static_cast<int32_t>(PRINT_JOB_BLOCKED_FILE_PARSING_ERROR));
212 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_SLOW_FILE_CONVERSION",
213 static_cast<int32_t>(PRINT_JOB_BLOCKED_SLOW_FILE_CONVERSION));
214 SetEnumProperty(env, object, "PRINT_JOB_RUNNING_UPLOADING_FILES",
215 static_cast<int32_t>(PRINT_JOB_RUNNING_UPLOADING_FILES));
216 SetEnumProperty(env, object, "PRINT_JOB_RUNNING_CONVERTING_FILES",
217 static_cast<int32_t>(PRINT_JOB_RUNNING_CONVERTING_FILES));
218 SetEnumProperty(env, object, "PRINT_JOB_BLOCK_UNKNOWN", static_cast<int32_t>(PRINT_JOB_BLOCKED_UNKNOWN));
219 return object;
220 }
221
NapiCreatePrintErrorCodeEnum(napi_env env)222 static napi_value NapiCreatePrintErrorCodeEnum(napi_env env)
223 {
224 napi_value object = nullptr;
225 napi_create_object(env, &object);
226 SetEnumProperty(env, object, "E_PRINT_NONE", static_cast<int32_t>(E_PRINT_NONE));
227 SetEnumProperty(env, object, "E_PRINT_NO_PERMISSION", static_cast<int32_t>(E_PRINT_NO_PERMISSION));
228 SetEnumProperty(env, object, "E_PRINT_INVALID_PARAMETER", static_cast<int32_t>(E_PRINT_INVALID_PARAMETER));
229 SetEnumProperty(env, object, "E_PRINT_GENERIC_FAILURE", static_cast<int32_t>(E_PRINT_GENERIC_FAILURE));
230 SetEnumProperty(env, object, "E_PRINT_RPC_FAILURE", static_cast<int32_t>(E_PRINT_RPC_FAILURE));
231 SetEnumProperty(env, object, "E_PRINT_SERVER_FAILURE", static_cast<int32_t>(E_PRINT_SERVER_FAILURE));
232 SetEnumProperty(env, object, "E_PRINT_INVALID_EXTENSION", static_cast<int32_t>(E_PRINT_INVALID_EXTENSION));
233 SetEnumProperty(env, object, "E_PRINT_INVALID_PRINTER", static_cast<int32_t>(E_PRINT_INVALID_PRINTER));
234 SetEnumProperty(env, object, "E_PRINT_INVALID_PRINT_JOB", static_cast<int32_t>(E_PRINT_INVALID_PRINTJOB));
235 SetEnumProperty(env, object, "E_PRINT_FILE_IO", static_cast<int32_t>(E_PRINT_FILE_IO));
236 return object;
237 }
238
NapiCreatePrintStatusEnum(napi_env env)239 static napi_value NapiCreatePrintStatusEnum(napi_env env)
240 {
241 napi_value object = nullptr;
242 napi_create_object(env, &object);
243 SetEnumProperty(env, object, "PRINTER_STATUS_IDLE", static_cast<int32_t>(PRINTER_STATUS_IDLE));
244 SetEnumProperty(env, object, "PRINTER_STATUS_BUSY", static_cast<int32_t>(PRINTER_STATUS_BUSY));
245 SetEnumProperty(env, object, "PRINTER_STATUS_UNAVAILABLE", static_cast<int32_t>(PRINTER_STATUS_UNAVAILABLE));
246 return object;
247 }
248
NapiCreatePrintEventEnum(napi_env env)249 static napi_value NapiCreatePrintEventEnum(napi_env env)
250 {
251 napi_value object = nullptr;
252 napi_create_object(env, &object);
253 SetEnumProperty(env, object, "PRINTER_EVENT_ADDED", static_cast<int32_t>(PRINTER_EVENT_ADDED));
254 SetEnumProperty(env, object, "PRINTER_EVENT_DELETED", static_cast<int32_t>(PRINTER_EVENT_DELETED));
255 SetEnumProperty(env, object, "PRINTER_EVENT_STATE_CHANGED", static_cast<int32_t>(PRINTER_EVENT_STATE_CHANGED));
256 SetEnumProperty(env, object, "PRINTER_EVENT_INFO_CHANGED", static_cast<int32_t>(PRINTER_EVENT_INFO_CHANGED));
257 return object;
258 }
259
NapiCreateApplicationEventEnum(napi_env env)260 static napi_value NapiCreateApplicationEventEnum(napi_env env)
261 {
262 napi_value object = nullptr;
263 napi_create_object(env, &object);
264 SetEnumProperty(env, object, "APPLICATION_CREATED", static_cast<int32_t>(APPLICATION_CREATED));
265 SetEnumProperty(
266 env, object, "APPLICATION_CLOSED_FOR_STARTED", static_cast<int32_t>(APPLICATION_CLOSED_FOR_STARTED));
267 SetEnumProperty(
268 env, object, "APPLICATION_CLOSED_FOR_CANCELED", static_cast<int32_t>(APPLICATION_CLOSED_FOR_CANCELED));
269 return object;
270 }
271
NapiCreateDefaultPrinterTypeEnum(napi_env env)272 static napi_value NapiCreateDefaultPrinterTypeEnum(napi_env env)
273 {
274 napi_value object = nullptr;
275 napi_create_object(env, &object);
276 SetEnumProperty(
277 env, object, "DEFAULT_PRINTER_TYPE_SETTED_BY_USER", static_cast<int32_t>(DEFAULT_PRINTER_TYPE_SETTED_BY_USER));
278 SetEnumProperty(env,
279 object,
280 "DEFAULT_PRINTER_TYPE_LAST_USED_PRINTER",
281 static_cast<int32_t>(DEFAULT_PRINTER_TYPE_LAST_USED_PRINTER));
282 return object;
283 }
284
Init(napi_env env,napi_value exports)285 static napi_value Init(napi_env env, napi_value exports)
286 {
287 napi_property_descriptor desc[] = {
288 PRINT_NAPI_PROPERTY("PrintDirectionMode", NapiCreateDirectionModeEnum(env)),
289 PRINT_NAPI_PROPERTY("PrintColorMode", NapiCreateColorModeEnum(env)),
290 PRINT_NAPI_PROPERTY("PrintDuplexMode", NapiCreateDuplexModeEnum(env)),
291 PRINT_NAPI_PROPERTY("PrintPageType", NapiCreatePageTypeEnum(env)),
292 PRINT_NAPI_PROPERTY("PrintDocumentAdapterState", NapiCreateDocumentAdapterStateEnum(env)),
293 PRINT_NAPI_PROPERTY("PrintFileCreationState", NapiCreateFileCreationStateEnum(env)),
294 PRINT_NAPI_PROPERTY("PrinterState", NapiCreatePrinterStateEnum(env)),
295 PRINT_NAPI_PROPERTY("PrintJobState", NapiCreatePrintJobStateEnum(env)),
296 PRINT_NAPI_PROPERTY("PrintJobSubState", NapiCreatePrintJobSubStateEnum(env)),
297 PRINT_NAPI_PROPERTY("PrintErrorCode", NapiCreatePrintErrorCodeEnum(env)),
298 PRINT_NAPI_PROPERTY("PrinterStatus", NapiCreatePrintStatusEnum(env)),
299 PRINT_NAPI_PROPERTY("PrinterEvent", NapiCreatePrintEventEnum(env)),
300 PRINT_NAPI_PROPERTY("ApplicationEvent", NapiCreateApplicationEventEnum(env)),
301 PRINT_NAPI_PROPERTY("DefaultPrinterType", NapiCreateDefaultPrinterTypeEnum(env)),
302
303 PRINT_NAPI_METHOD(FUNCTION_PRINT, NapiPrintTask::Print),
304 PRINT_NAPI_METHOD(FUNCTION_QUERY_EXT, NapiInnerPrint::QueryExtensionInfo),
305 PRINT_NAPI_METHOD(FUNCTION_START_DISCOVERY, NapiInnerPrint::StartDiscovery),
306 PRINT_NAPI_METHOD(FUNCTION_STOP_DISCOVERY, NapiInnerPrint::StopDiscovery),
307 PRINT_NAPI_METHOD(FUNCTION_CONNECT_PRINT, NapiInnerPrint::ConnectPrinter),
308 PRINT_NAPI_METHOD(FUNCTION_DISCONNECT_PRINT, NapiInnerPrint::DisconnectPrinter),
309 PRINT_NAPI_METHOD(FUNCTION_START_PRINT, NapiInnerPrint::StartPrintJob),
310 PRINT_NAPI_METHOD(FUNCTION_CANCEL_PRINT, NapiInnerPrint::CancelPrintJob),
311 PRINT_NAPI_METHOD(FUNCTION_REQUEST_PREVIEW, NapiInnerPrint::RequestPreview),
312 PRINT_NAPI_METHOD(FUNCTION_QUERY_CAPABILITY, NapiInnerPrint::QueryCapability),
313 PRINT_NAPI_METHOD(FUNCTION_QUERY_ALL_PRINTJOB, NapiInnerPrint::QueryAllPrintJob),
314 PRINT_NAPI_METHOD(FUNCTION_QUERY_PRINTJOB_LIST, NapiInnerPrint::QueryAllPrintJob),
315 PRINT_NAPI_METHOD(FUNCTION_QUERY_PRINTJOB_BYID, NapiInnerPrint::QueryPrintJobById),
316 PRINT_NAPI_METHOD(FUNCTION_REGISTER_EVENT, NapiInnerPrint::On),
317 PRINT_NAPI_METHOD(FUNCTION_UNREGISTER_EVENT, NapiInnerPrint::Off),
318 PRINT_NAPI_METHOD(FUNCTION_ADD_PRINTER, NapiPrintExt::AddPrinters),
319 PRINT_NAPI_METHOD(FUNCTION_REMOVE_PRINTER, NapiPrintExt::RemovePrinters),
320 PRINT_NAPI_METHOD(FUNCTION_UPDATE_PRINTER, NapiPrintExt::UpdatePrinters),
321 PRINT_NAPI_METHOD(FUNCTION_UPDATE_PRINTER_STATE, NapiPrintExt::UpdatePrinterState),
322 PRINT_NAPI_METHOD(FUNCTION_UPDATE_JOB_STATE, NapiPrintExt::UpdatePrintJobStateOnlyForSystemApp),
323 PRINT_NAPI_METHOD(FUNCTION_UPDATE_EXTENSION_INFO, NapiPrintExt::UpdateExtensionInfo),
324 PRINT_NAPI_METHOD(FUNCTION_NATIVE_ADD_PRINTER_TO_CUPS, NapiPrintExt::AddPrinterToCups),
325 PRINT_NAPI_METHOD(FUNCTION_QUERY_CAPABILITY_BY_URI, NapiPrintExt::QueryPrinterCapabilityByUri),
326 PRINT_NAPI_METHOD(FUNCTION_START_GET_PRINT_FILE, NapiInnerPrint::StartGetPrintFile),
327 PRINT_NAPI_METHOD(FUNCTION_NOTIFY_PRINT_SERVICE, NapiInnerPrint::NotifyPrintService),
328 PRINT_NAPI_METHOD(FUNCTION_QUERY_ADDED_PRINTER, NapiInnerPrint::QueryAddedPrinter),
329 PRINT_NAPI_METHOD(FUNCTION_QUERY_PRINTER_INFO_BY_PRINTER_ID, NapiInnerPrint::QueryPrinterInfoByPrinterId),
330 PRINT_NAPI_METHOD(FUNCTION_NOTIFY_PRINT_SERVICE_EVENT, NapiInnerPrint::NotifyPrintServiceEvent),
331 PRINT_NAPI_METHOD(FUNCTION_GET_PRINTER_PREFERENCE, NapiInnerPrint::GetPrinterPreference),
332 PRINT_NAPI_METHOD(FUNCTION_SET_PRINTER_PREFERENCE, NapiInnerPrint::SetPrinterPreference),
333 PRINT_NAPI_METHOD(FUNCTION_SET_DEFAULT_PRINTER, NapiInnerPrint::SetDefaultPrinter),
334 PRINT_NAPI_METHOD(FUNCTION_DELETE_PRINTER_FROM_CUPS, NapiPrintExt::DeletePrinterFromCups),
335 };
336
337 napi_status status = napi_define_properties(env, exports, sizeof(desc) / sizeof(napi_property_descriptor), desc);
338 PRINT_HILOGD("init print module %{public}d", status);
339 return exports;
340 }
341
RegisterModule()342 static __attribute__((constructor)) void RegisterModule()
343 {
344 static napi_module module = { .nm_version = 1,
345 .nm_flags = 0,
346 .nm_filename = nullptr,
347 .nm_register_func = Init,
348 .nm_modname = "print",
349 .nm_priv = ((void *)0),
350 .reserved = { 0 } };
351 napi_module_register(&module);
352 PRINT_HILOGD("module register print");
353 }
354