1 /*
2 * Copyright (c) 2025 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 "ErrorCodeTest.h"
17 #include <cstdint>
18 #include <native_buffer/native_buffer.h>
19 #include <native_image/native_image.h>
20 #include <native_vsync/graphic_error_code.h>
21 #include <native_buffer/graphic_error_code.h>
22 #include <native_vsync/native_vsync.h>
23 #include <native_drawing/drawing_error_code.h>
24 #include <native_drawing/drawing_record_cmd.h>
25 #include <native_buffer/native_buffer.h>
26
addErrorCodeTest(std::vector<napi_property_descriptor> & descData)27 void addErrorCodeTest(std::vector<napi_property_descriptor>& descData)
28 {
29 descData.push_back({"OHNativeErrorCodeOK", nullptr, OH_OHNativeErrorCodeOK,
30 nullptr, nullptr, nullptr, napi_default, nullptr});
31 descData.push_back({"OHNativeErrorCodeInvalid", nullptr, OH_OHNativeErrorCodeInvalid,
32 nullptr, nullptr, nullptr, napi_default, nullptr});
33 descData.push_back({"OHDrawingBufferErrorCodeOK", nullptr, OH_Drawing_BufferErrorCodeOK,
34 nullptr, nullptr, nullptr, napi_default, nullptr});
35 descData.push_back({"OHNativeErrorCodeBufferInvalid", nullptr, OH_OHNativeErrorCodeBufferInvalid,
36 nullptr, nullptr, nullptr, napi_default, nullptr});
37 descData.push_back({"OHNativeErrorCodeBufferSupport", nullptr, OH_OHNativeErrorCodeBufferSupport,
38 nullptr, nullptr, nullptr, napi_default, nullptr});
39 descData.push_back({"OHDrawingBufferHDIError", nullptr, OH_Drawing_BufferHDIError,
40 nullptr, nullptr, nullptr, napi_default, nullptr});
41 descData.push_back({"OHNativeErrorCodeImageSupport", nullptr, OH_OHNativeErrorCodeImageSupport,
42 nullptr, nullptr, nullptr, napi_default, nullptr});
43 descData.push_back({"OHNativeErrorCodeImageNoBuffer", nullptr, OH_OHNativeErrorCodeImageNoBuffer,
44 nullptr, nullptr, nullptr, napi_default, nullptr});
45 descData.push_back({"OHNativeErrorCodeVSyncOk", nullptr, OH_OHNativeErrorCodeVSyncOk,
46 nullptr, nullptr, nullptr, napi_default, nullptr});
47 descData.push_back({"OHNativeErrorCodeVSyncInvalid", nullptr, OH_OHNativeErrorCodeVSyncInvalid,
48 nullptr, nullptr, nullptr, napi_default, nullptr});
49 descData.push_back({"OHNativeErrorCodeWindowInvalid", nullptr, OH_OHNativeErrorCodeWindowInvalid,
50 nullptr, nullptr, nullptr, napi_default, nullptr});
51 descData.push_back({"OHNativeErrorCodeWindowOk", nullptr, OH_OHNativeErrorCodeWindowOk,
52 nullptr, nullptr, nullptr, napi_default, nullptr});
53 descData.push_back({"OHDrawingErrorCodeSuccess", nullptr, OH_Drawing_DrawingErrorCodeSuccess,
54 nullptr, nullptr, nullptr, napi_default, nullptr});
55 }
56
OH_OHNativeErrorCodeOK(napi_env env,napi_callback_info info)57 napi_value OH_OHNativeErrorCodeOK(napi_env env, napi_callback_info info)
58 {
59 napi_value result;
60 OH_NativeImage* image = OH_NativeImage_Create(0, 0);
61 int32_t errorCode = OH_NativeImage_SetDropBufferMode(image, true);
62 napi_create_int32(env, errorCode == NATIVE_ERROR_OK, &result);
63 return result;
64 }
65
OH_OHNativeErrorCodeInvalid(napi_env env,napi_callback_info info)66 napi_value OH_OHNativeErrorCodeInvalid(napi_env env, napi_callback_info info)
67 {
68 napi_value result;
69 OH_NativeImage* image = nullptr;
70 int32_t errorCode = OH_NativeImage_SetDropBufferMode(image, true);
71 napi_create_int32(env, errorCode == NATIVE_ERROR_INVALID_ARGUMENTS, &result);
72 return result;
73 }
74
OH_Drawing_BufferErrorCodeOK(napi_env env,napi_callback_info info)75 napi_value OH_Drawing_BufferErrorCodeOK(napi_env env, napi_callback_info info)
76 {
77 napi_value result;
78 OH_NativeBuffer_Planes outPlanes;
79 OH_NativeBuffer_Config config = {
80 .width = 0x100,
81 .height = 0x100,
82 .format = 12,
83 .usage = (1ULL << 0) | (1ULL << 1) | (1ULL << 3),
84 };
85 OH_NativeBuffer* buffer = OH_NativeBuffer_Alloc(&config);
86 int32_t res = OH_NativeBuffer_Unmap(buffer);
87 napi_create_int32(env, res == NATIVE_ERROR_OK, &result);
88 return result;
89 }
90
OH_OHNativeErrorCodeBufferInvalid(napi_env env,napi_callback_info info)91 napi_value OH_OHNativeErrorCodeBufferInvalid(napi_env env, napi_callback_info info)
92 {
93 napi_value result;
94 OH_NativeBuffer_ColorSpace colorSpace;
95 int32_t res = OH_NativeBuffer_GetColorSpace(nullptr, &colorSpace);
96 napi_create_int32(env, res == NATIVE_ERROR_INVALID_ARGUMENTS, &result);
97 return result;
98 }
99
OH_OHNativeErrorCodeBufferSupport(napi_env env,napi_callback_info info)100 napi_value OH_OHNativeErrorCodeBufferSupport(napi_env env, napi_callback_info info)
101 {
102 napi_value result;
103 OH_NativeBuffer_Config config = {
104 .width = 0x100,
105 .height = 0x100,
106 .format = 12,
107 .usage = (1ULL << 0) | (1ULL << 1) | (1ULL << 3) | (1ULL << 4) | (1ULL << 5) | (1ULL << 6)|(1ULL << 7),
108 };
109 OH_NativeBuffer* buffer = OH_NativeBuffer_Alloc(&config);
110 int32_t size = 10;
111 uint8_t *metadata = new uint8_t(size);
112 int32_t res = OH_NativeBuffer_SetMetadataValue(buffer, OH_HDR_STATIC_METADATA, size, metadata);
113 napi_create_int32(env, res == NATIVE_ERROR_UNSUPPORTED, &result);
114 return result;
115 }
116
OH_Drawing_BufferHDIError(napi_env env,napi_callback_info info)117 napi_value OH_Drawing_BufferHDIError(napi_env env, napi_callback_info info)
118 {
119 napi_value result;
120 OH_NativeBuffer_Planes outPlanes;
121 OH_NativeBuffer_Config config = {
122 .width = 0x100,
123 .height = 0x100,
124 .format = 12,
125 .usage = (1ULL << 0) | (1ULL << 1) | (1ULL << 3),
126 };
127 OH_NativeBuffer* buffer = OH_NativeBuffer_Alloc(&config);
128 void *virAddr = nullptr;
129 int32_t res = OH_NativeBuffer_MapPlanes(buffer, &virAddr, &outPlanes);
130 napi_create_int32(env, res == NATIVE_ERROR_HDI_ERROR, &result);
131 return result;
132 }
133
OH_OHNativeErrorCodeImageSupport(napi_env env,napi_callback_info info)134 napi_value OH_OHNativeErrorCodeImageSupport(napi_env env, napi_callback_info info)
135 {
136 napi_value result;
137 OH_NativeImage* pimg = OH_ConsumerSurface_Create();
138 int32_t res = OH_ConsumerSurface_SetDefaultUsage(pimg, 800000000000);
139
140 napi_create_int32(env, res == NATIVE_ERROR_OK, &result);
141 return result;
142 }
143
OH_OHNativeErrorCodeImageNoBuffer(napi_env env,napi_callback_info info)144 napi_value OH_OHNativeErrorCodeImageNoBuffer(napi_env env, napi_callback_info info)
145 {
146 napi_value result;
147 OH_NativeImage* image = OH_NativeImage_Create(0, 0);
148 OHNativeWindowBuffer* nativeWindowBuffer = nullptr;
149 int fenceFd = 0;
150 int32_t errorCode = OH_NativeImage_AcquireNativeWindowBuffer(image, &nativeWindowBuffer, &fenceFd);
151 napi_create_int32(env, errorCode == NATIVE_ERROR_NO_BUFFER, &result);
152 return result;
153 }
154
OH_OHNativeErrorCodeVSyncOk(napi_env env,napi_callback_info info)155 napi_value OH_OHNativeErrorCodeVSyncOk(napi_env env, napi_callback_info info)
156 {
157 napi_value result;
158 OH_NativeVSync* nativeVsync = OH_NativeVSync_Create("Test", 4);
159 OH_NativeVSync_FrameCallback callback = [](long long timestamp, void *data) {};
160 void* data = nullptr;
161 int32_t res = OH_NativeVSync_RequestFrame(nativeVsync, callback, data);
162 int32_t res2 = OH_NativeVSync_DVSyncSwitch(nativeVsync, true);
163 napi_create_int32(env, res == NATIVE_ERROR_OK, &result);
164 return result;
165 }
OH_OHNativeErrorCodeVSyncInvalid(napi_env env,napi_callback_info info)166 napi_value OH_OHNativeErrorCodeVSyncInvalid(napi_env env, napi_callback_info info)
167 {
168 napi_value result;
169 OH_NativeVSync* nativeVsync = nullptr;
170 OH_NativeVSync_FrameCallback callback = [](long long timestamp, void* data) {};
171 void* data = nullptr;
172 int32_t res = OH_NativeVSync_RequestFrame(nativeVsync, callback, data);
173 napi_create_int32(env, res == NATIVE_ERROR_INVALID_ARGUMENTS, &result);
174 return result;
175 }
176
177
OH_OHNativeErrorCodeWindowOk(napi_env env,napi_callback_info info)178 napi_value OH_OHNativeErrorCodeWindowOk(napi_env env, napi_callback_info info)
179 {
180 napi_value result;
181 uint32_t textureId = 1;
182 uint32_t textureTarget = 2;
183 OH_NativeImage* image = OH_NativeImage_Create(textureId, textureTarget);
184 OHNativeWindow* winNative = OH_NativeImage_AcquireNativeWindow(image);
185 int32_t size = 0;
186 uint8_t *metadata = nullptr;
187 int32_t res = OH_NativeWindow_GetMetadataValue(winNative, OH_HDR_METADATA_TYPE, &size, &metadata);
188 napi_create_int32(env, res == NATIVE_ERROR_UNSUPPORTED, &result);
189 return result;
190 }
191
OH_OHNativeErrorCodeWindowConsumerDisConnected(napi_env env,napi_callback_info info)192 napi_value OH_OHNativeErrorCodeWindowConsumerDisConnected(napi_env env, napi_callback_info info)
193 {
194 napi_value result;
195 uint32_t textureId = 1;
196 uint32_t textureTarget = 2;
197 OH_NativeImage* image = OH_NativeImage_Create(textureId, textureTarget);
198 OHNativeWindow* winNative = OH_NativeImage_AcquireNativeWindow(image);
199 int32_t res = OH_NativeWindow_CleanCache(winNative);
200 napi_create_int32(env, res == NATIVE_ERROR_CONSUMER_DISCONNECTED, &result);
201 return result;
202 }
203
OH_OHNativeErrorCodeWindowInvalid(napi_env env,napi_callback_info info)204 napi_value OH_OHNativeErrorCodeWindowInvalid(napi_env env, napi_callback_info info)
205 {
206 napi_value result;
207 int32_t res = OH_NativeWindow_WriteToParcel(nullptr, nullptr);
208 napi_create_int32(env, res == NATIVE_ERROR_INVALID_ARGUMENTS, &result);
209 return result;
210 }
211
OH_Drawing_DrawingErrorCodeSuccess(napi_env env,napi_callback_info info)212 napi_value OH_Drawing_DrawingErrorCodeSuccess(napi_env env, napi_callback_info info)
213 {
214 napi_value result;
215 OH_Drawing_RecordCmdUtils* recordCmdUtils = OH_Drawing_RecordCmdUtilsCreate();
216 OH_Drawing_RecordCmd* recordCmd;
217 OH_Drawing_ErrorCode errCode = OH_Drawing_RecordCmdUtilsFinishRecording(recordCmdUtils, &recordCmd);
218 napi_create_int32(env, errCode == OH_DRAWING_ERROR_ALLOCATION_FAILED, &result);
219 return result;
220 }
221