• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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