• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 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 <string>
17 
18 #include "napi/native_api.h"
19 #include <BasicServicesKit/ohprint.h>
20 
21 #define TEST_PRINTER "testPrinter"
22 
23 static constexpr size_t ARG_SIZE_ONE = 1;
24 static constexpr int32_t ERROR_COMMON = -1;
25 
PrinterDiscoveryCallback(Print_DiscoveryEvent event,const Print_PrinterInfo * printerInfo)26 static void PrinterDiscoveryCallback(Print_DiscoveryEvent event, const Print_PrinterInfo *printerInfo)
27 {
28 }
29 
PrinterChangeCallback(Print_PrinterEvent event,const Print_PrinterInfo * printerInfo)30 static void PrinterChangeCallback(Print_PrinterEvent event, const Print_PrinterInfo *printerInfo)
31 {
32 }
33 
OnStartLayoutWrite(const char * jobId,uint32_t fd,const Print_PrintAttributes * oldAttrs,const Print_PrintAttributes * newAttrs,Print_WriteResultCallback writeCallback)34 static void OnStartLayoutWrite(const char *jobId,
35                                uint32_t fd,
36                                const Print_PrintAttributes *oldAttrs,
37                                const Print_PrintAttributes *newAttrs,
38                                Print_WriteResultCallback writeCallback)
39 {
40 }
41 
OnJobStateChanged(const char * jobId,uint32_t state)42 static void OnJobStateChanged(const char* jobId, uint32_t state)
43 {
44 }
45 
OHPrintInit(napi_env env,napi_callback_info info)46 static napi_value OHPrintInit(napi_env env, napi_callback_info info)
47 {
48     napi_value result = nullptr;
49     Print_ErrorCode errorCode = OH_Print_Init();
50     errorCode = OH_Print_Release();
51     napi_create_int32(env, static_cast<int32_t>(errorCode), &result);
52     return result;
53 }
54 
OHPrintListener(napi_env env,napi_callback_info info)55 static napi_value OHPrintListener(napi_env env, napi_callback_info info)
56 {
57     napi_value result = nullptr;
58     Print_ErrorCode errorCode = OH_Print_Init();
59     OH_Print_RegisterPrinterChangeListener(PrinterChangeCallback);
60     OH_Print_UnregisterPrinterChangeListener();
61     errorCode = OH_Print_Release();
62     napi_create_int32(env, static_cast<int32_t>(errorCode), &result);
63     return result;
64 }
65 
OHPrintDiscovery(napi_env env,napi_callback_info info)66 static napi_value OHPrintDiscovery(napi_env env, napi_callback_info info)
67 {
68     napi_value result = nullptr;
69     Print_ErrorCode errorCode = OH_Print_Init();
70     errorCode = OH_Print_StartPrinterDiscovery(PrinterDiscoveryCallback);
71     OH_Print_StopPrinterDiscovery();
72     errorCode = OH_Print_Release();
73     napi_create_int32(env, static_cast<int32_t>(errorCode), &result);
74     return result;
75 }
76 
OHPrintConnect(napi_env env,napi_callback_info info)77 static napi_value OHPrintConnect(napi_env env, napi_callback_info info)
78 {
79     napi_value result = nullptr;
80     Print_ErrorCode errorCode = OH_Print_Init();
81     OH_Print_RegisterPrinterChangeListener(PrinterChangeCallback);
82     OH_Print_ConnectPrinter(TEST_PRINTER);
83     OH_Print_UnregisterPrinterChangeListener();
84     errorCode = OH_Print_Release();
85     napi_create_int32(env, static_cast<int32_t>(errorCode), &result);
86     return result;
87 }
88 
OHPrintJob(napi_env env,napi_callback_info info)89 static napi_value OHPrintJob(napi_env env, napi_callback_info info)
90 {
91     napi_value result = nullptr;
92     Print_ErrorCode errorCode = OH_Print_Init();
93     OH_Print_StartPrintJob(nullptr);
94     errorCode = OH_Print_Release();
95     napi_create_int32(env, static_cast<int32_t>(errorCode), &result);
96     return result;
97 }
98 
OHPrintList(napi_env env,napi_callback_info info)99 static napi_value OHPrintList(napi_env env, napi_callback_info info)
100 {
101     napi_value result = nullptr;
102     Print_ErrorCode errorCode = OH_Print_Init();
103     Print_StringList list = {0};
104     errorCode = OH_Print_QueryPrinterList(&list);
105     errorCode = OH_Print_LaunchPrinterManager();
106     OH_Print_ReleasePrinterList(&list);
107     errorCode = OH_Print_Release();
108     napi_create_int32(env, static_cast<int32_t>(errorCode), &result);
109     return result;
110 }
111 
OHPrintInfo(napi_env env,napi_callback_info info)112 static napi_value OHPrintInfo(napi_env env, napi_callback_info info)
113 {
114     napi_value result = nullptr;
115     Print_ErrorCode errorCode = OH_Print_Init();
116     Print_PrinterInfo *printerInfo = nullptr;
117     errorCode = OH_Print_QueryPrinterInfo(TEST_PRINTER, &printerInfo);
118     OH_Print_ReleasePrinterInfo(printerInfo);
119     printerInfo = nullptr;
120     errorCode = OH_Print_Release();
121     napi_create_int32(env, static_cast<int32_t>(errorCode), &result);
122     return result;
123 }
124 
OHPrintProperty(napi_env env,napi_callback_info info)125 static napi_value OHPrintProperty(napi_env env, napi_callback_info info)
126 {
127     napi_value result = nullptr;
128     Print_ErrorCode errorCode = OH_Print_Init();
129     Print_StringList key = {0};
130     Print_PropertyList value = {0};
131     errorCode = OH_Print_QueryPrinterProperties(TEST_PRINTER, &key, &value);
132     errorCode = OH_Print_UpdatePrinterProperties(TEST_PRINTER, &value);
133     errorCode = OH_Print_RestorePrinterProperties(TEST_PRINTER, &key);
134     OH_Print_ReleasePrinterProperties(&value);
135     errorCode = OH_Print_Release();
136     napi_create_int32(env, static_cast<int32_t>(errorCode), &result);
137     return result;
138 }
139 
OHPrintStartPrintByNative(napi_env env,napi_callback_info info)140 static napi_value OHPrintStartPrintByNative(napi_env env, napi_callback_info info)
141 {
142     napi_value result = nullptr;
143     size_t argc = ARG_SIZE_ONE;
144     napi_value args[ARG_SIZE_ONE] = { nullptr };
145     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
146     if (argc != ARG_SIZE_ONE) {
147         napi_create_int32(env, ERROR_COMMON, &result);
148         return result;
149     }
150     void* context = nullptr;
151     napi_status status = napi_unwrap(env, args[0], &context);
152     if (status != napi_ok) {
153         napi_create_int32(env, ERROR_COMMON, &result);
154         return result;
155     }
156 
157     napi_value statgeMode = nullptr;
158     napi_get_named_property(env, args[0], "stageMode", &statgeMode);
159     bool isStageMode = false;
160     napi_get_value_bool(env, statgeMode, &isStageMode);
161     if (!isStageMode) {
162         napi_create_int32(env, ERROR_COMMON, &result);
163         return result;
164     }
165 
166     std::string printJobName = "MyPrintTest";
167     Print_PrintDocCallback cb;
168     cb.startLayoutWriteCb = OnStartLayoutWrite;
169     cb.jobStateChangedCb = OnJobStateChanged;
170     Print_ErrorCode errorCode = OH_Print_StartPrintByNative(printJobName.c_str(), cb, context);
171     napi_create_int32(env, static_cast<int32_t>(errorCode), &result);
172     return result;
173 }