1 /*
2 * Copyright (c) 2023 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/native_api.h"
17 #include <GLES2/gl2.h>
18 #include <IPCKit/ipc_cparcel.h>
19 #include <ctime>
20 #include <native_buffer/native_buffer.h>
21 #include <native_image/native_image.h>
22 #include <native_window/external_window.h>
23 #include "nativewindow.h"
24 #include "hilog/log.h"
25
26 #define SUCCESS 0
27 #define FAIL (-1)
28
29 napi_property_descriptor desc[] = {
30 // native window test
31 {"testNativeWindowCreateNativeWindowNullptr", nullptr, testNativeWindowCreateNativeWindowNullptr, nullptr, nullptr,
32 nullptr, napi_default, nullptr},
33 {"testNativeWindowDestroyNativeWindowNullptr", nullptr, testNativeWindowDestroyNativeWindowNullptr, nullptr,
34 nullptr, nullptr, napi_default, nullptr},
35 {"testNativeWindowGetSurfaceIdNullptr", nullptr, testNativeWindowGetSurfaceIdNullptr, nullptr, nullptr, nullptr,
36 napi_default, nullptr},
37 {"testNativeWindowCreateNativeWindowFromSurfaceIdNullptr", nullptr,
38 testNativeWindowCreateNativeWindowFromSurfaceIdNullptr, nullptr, nullptr, nullptr, napi_default, nullptr},
39 {"testNativeWindowCreateNativeWindowFromSurfaceIdNormal", nullptr,
40 testNativeWindowCreateNativeWindowFromSurfaceIdNormal, nullptr, nullptr, nullptr, napi_default, nullptr},
41 {"testNativeWindowCreateNativeWindowFromSurfaceIdSurfaceId", nullptr,
42 testNativeWindowCreateNativeWindowFromSurfaceIdSurfaceId, nullptr, nullptr, nullptr, napi_default, nullptr},
43
44 {"testNativeWindowCreateNativeWindowBufferFromNativeBufferNullptr", nullptr,
45 testNativeWindowCreateNativeWindowBufferFromNativeBufferNullptr, nullptr, nullptr, nullptr, napi_default, nullptr},
46 {"testNativeWindowCreateNativeWindowBufferFromSurfaceBufferNullptr", nullptr,
47 testNativeWindowCreateNativeWindowBufferFromSurfaceBufferNullptr, nullptr, nullptr, nullptr, napi_default,
48 nullptr},
49 {"testNativeWindowDestroyNativeWindowBufferNullptr", nullptr, testNativeWindowDestroyNativeWindowBufferNullptr,
50 nullptr, nullptr, nullptr, napi_default, nullptr},
51 {"testNativeWindowGetBufferHandleFromNativeNullptr", nullptr, testNativeWindowGetBufferHandleFromNativeNullptr,
52 nullptr, nullptr, nullptr, napi_default, nullptr},
53 {"testNativeWindowCreateNativeWindowBufferFromNativeBufferNormal", nullptr,
54 testNativeWindowCreateNativeWindowBufferFromNativeBufferNormal, nullptr, nullptr, nullptr, napi_default, nullptr},
55 {"testNativeWindowCreateNativeWindowBufferFromNativeBufferMuch", nullptr,
56 testNativeWindowCreateNativeWindowBufferFromNativeBufferMuch, nullptr, nullptr, nullptr, napi_default, nullptr},
57
58 {"testNativeWindowNativeWindowRequestBufferNullptr", nullptr, testNativeWindowNativeWindowRequestBufferNullptr,
59 nullptr, nullptr, nullptr, napi_default, nullptr},
60 {"testNativeWindowNativeWindowAbortBufferNullptr", nullptr, testNativeWindowNativeWindowAbortBufferNullptr, nullptr,
61 nullptr, nullptr, napi_default, nullptr},
62 {"testNativeWindowNativeWindowRequestAbortBufferNormal", nullptr,
63 testNativeWindowNativeWindowRequestAbortBufferNormal, nullptr, nullptr, nullptr, napi_default, nullptr},
64 {"testNativeWindowNativeWindowRequestAbortBufferAbnormal", nullptr,
65 testNativeWindowNativeWindowRequestAbortBufferAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
66 {"testNativeWindowNativeWindowRequestBufferFenceFdNormal", nullptr,
67 testNativeWindowNativeWindowRequestBufferFenceFdNormal, nullptr, nullptr, nullptr, napi_default, nullptr},
68 {"testNativeWindowNativeWindowRequestBufferFenceFdAbnormal", nullptr,
69 testNativeWindowNativeWindowRequestBufferFenceFdAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
70 {"testNativeWindowNativeWindowRequestAbortBufferMax", nullptr, testNativeWindowNativeWindowRequestAbortBufferMax,
71 nullptr, nullptr, nullptr, napi_default, nullptr},
72 {"testNativeWindowNativeWindowRequestAbortBufferErrorCode", nullptr,
73 testNativeWindowNativeWindowRequestAbortBufferErrorCode, nullptr, nullptr, nullptr, napi_default, nullptr},
74
75 {"testNativeWindowWriteToParcelErrptr", nullptr, testNativeWindowWriteToParcelErrptr, nullptr, nullptr, nullptr,
76 napi_default, nullptr},
77 {"testNativeWindowReadFromParcelErrptr", nullptr, testNativeWindowReadFromParcelErrptr, nullptr, nullptr, nullptr,
78 napi_default, nullptr},
79 {"testNativeWindowWRParcelNormal", nullptr, testNativeWindowWRParcelNormal, nullptr, nullptr, nullptr, napi_default,
80 nullptr},
81 {"testNativeWindowWriteToParcelAbNormal", nullptr, testNativeWindowWriteToParcelAbNormal, nullptr, nullptr, nullptr,
82 napi_default, nullptr},
83 {"testNativeWindowReadFromParcelAbNormal", nullptr, testNativeWindowReadFromParcelAbNormal, nullptr, nullptr,
84 nullptr, napi_default, nullptr},
85 {"testNativeWindowWRParcelDifferent", nullptr, testNativeWindowWRParcelDifferent, nullptr, nullptr, nullptr,
86 napi_default, nullptr},
87
88 {"testNativeWindowNativeWindowFlushBufferNullptr", nullptr, testNativeWindowNativeWindowFlushBufferNullptr, nullptr,
89 nullptr, nullptr, napi_default, nullptr},
90 {"testNativeWindowNativeWindowFlushBufferNormal", nullptr, testNativeWindowNativeWindowFlushBufferNormal, nullptr,
91 nullptr, nullptr, napi_default, nullptr},
92 {"testNativeWindowNativeWindowFlushBufferAbnormal", nullptr, testNativeWindowNativeWindowFlushBufferAbnormal,
93 nullptr, nullptr, nullptr, napi_default, nullptr},
94 {"testNativeWindowGetLastFlushedBufferV2Nullptr", nullptr, testNativeWindowGetLastFlushedBufferV2Nullptr, nullptr,
95 nullptr, nullptr, napi_default, nullptr},
96 {"testNativeWindowGetLastFlushedBufferNullptr", nullptr, testNativeWindowGetLastFlushedBufferNullptr, nullptr,
97 nullptr, nullptr, napi_default, nullptr},
98 {"testNativeWindowGetLastFlushedBufferV2Normal", nullptr, testNativeWindowGetLastFlushedBufferV2Normal, nullptr,
99 nullptr, nullptr, napi_default, nullptr},
100 {"testNativeWindowGetLastFlushedBufferNormal", nullptr, testNativeWindowGetLastFlushedBufferNormal, nullptr,
101 nullptr, nullptr, napi_default, nullptr},
102
103 {"testNativeWindowSetBufferHold", nullptr, testNativeWindowSetBufferHold, nullptr, nullptr, nullptr, napi_default,
104 nullptr},
105 {"testNativeWindowGetNativeObjectMagicNullptr", nullptr, testNativeWindowGetNativeObjectMagicNullptr, nullptr,
106 nullptr, nullptr, napi_default, nullptr},
107 {"testNativeWindowGetNativeObjectMagicNormal", nullptr, testNativeWindowGetNativeObjectMagicNormal, nullptr,
108 nullptr, nullptr, napi_default, nullptr},
109 {"testNativeWindowNativeObjectReferenceNullptr", nullptr, testNativeWindowNativeObjectReferenceNullptr, nullptr,
110 nullptr, nullptr, napi_default, nullptr},
111 {"testNativeWindowNativeObjectReferenceNormal", nullptr, testNativeWindowNativeObjectReferenceNormal, nullptr,
112 nullptr, nullptr, napi_default, nullptr},
113 {"testNativeWindowNativeObjectUnreferenceNullptr", nullptr, testNativeWindowNativeObjectUnreferenceNullptr, nullptr,
114 nullptr, nullptr, napi_default, nullptr},
115 {"testNativeWindowNativeObjectUnreferenceNormal", nullptr, testNativeWindowNativeObjectUnreferenceNormal, nullptr,
116 nullptr, nullptr, napi_default, nullptr},
117 {"testNativeWindowNativeWindowAttachBufferNullptr", nullptr, testNativeWindowNativeWindowAttachBufferNullptr,
118 nullptr, nullptr, nullptr, napi_default, nullptr},
119 {"testNativeWindowNativeWindowDetachBufferNullptr", nullptr, testNativeWindowNativeWindowDetachBufferNullptr,
120 nullptr, nullptr, nullptr, napi_default, nullptr},
121 {"testNativeWindowNativeWindowDetachBufferNormal", nullptr, testNativeWindowNativeWindowDetachBufferNormal, nullptr,
122 nullptr, nullptr, napi_default, nullptr},
123 {"testNativeWindowNativeWindowAttachBufferErrorCode", nullptr, testNativeWindowNativeWindowAttachBufferErrorCode,
124 nullptr, nullptr, nullptr, napi_default, nullptr},
125
126 {"testNativeWindowNativeWindowAttachBufferNormal", nullptr, testNativeWindowNativeWindowAttachBufferNormal, nullptr,
127 nullptr, nullptr, napi_default, nullptr},
128 {"testNativeWindowNativeWindowDetachBufferErrorCode", nullptr, testNativeWindowNativeWindowDetachBufferErrorCode,
129 nullptr, nullptr, nullptr, napi_default, nullptr},
130
131 {"testNativeWindowNativeWindowAtDetachDifferentBufferNormal", nullptr,
132 testNativeWindowNativeWindowAtDetachDifferentBufferNormal, nullptr, nullptr, nullptr, napi_default, nullptr},
133 {"testNativeWindowNativeWindowAtDetachDifferentBufferAbnormal", nullptr,
134 testNativeWindowNativeWindowAtDetachDifferentBufferAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
135 {"testNativeWindowNativeWindowHandleOptNullptr", nullptr, testNativeWindowNativeWindowHandleOptNullptr, nullptr,
136 nullptr, nullptr, napi_default, nullptr},
137 {"testNativeWindowNativeWindowHandleOptSetGetBufferGeometryNormal", nullptr,
138 testNativeWindowNativeWindowHandleOptSetGetBufferGeometryNormal, nullptr, nullptr, nullptr, napi_default, nullptr},
139 {"testNativeWindowNativeWindowHandleOptSetGetBufferGeometryAbnormal", nullptr,
140 testNativeWindowNativeWindowHandleOptSetGetBufferGeometryAbnormal, nullptr, nullptr, nullptr, napi_default,
141 nullptr},
142 {"testNativeWindowNativeWindowHandleOptSetGetFormatNormal", nullptr,
143 testNativeWindowNativeWindowHandleOptSetGetFormatNormal, nullptr, nullptr, nullptr, napi_default, nullptr},
144 {"testNativeWindowNativeWindowHandleOptSetGetFormatAbnormal", nullptr,
145 testNativeWindowNativeWindowHandleOptSetGetFormatAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
146 {"testNativeWindowNativeWindowHandleOptSetGetUsageNormal", nullptr,
147 testNativeWindowNativeWindowHandleOptSetGetUsageNormal, nullptr, nullptr, nullptr, napi_default, nullptr},
148 {"testNativeWindowNativeWindowHandleOptSetGetUsageAbnormal", nullptr,
149 testNativeWindowNativeWindowHandleOptSetGetUsageAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
150 {"testNativeWindowNativeWindowHandleOptSetGetStrideNormal", nullptr,
151 testNativeWindowNativeWindowHandleOptSetGetStrideNormal, nullptr, nullptr, nullptr, napi_default, nullptr},
152 {"testNativeWindowNativeWindowHandleOptSetGetStrideAbnormal", nullptr,
153 testNativeWindowNativeWindowHandleOptSetGetStrideAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
154 {"testNativeWindowNativeWindowHandleOptSetGetSwapIntervalNormal", nullptr,
155 testNativeWindowNativeWindowHandleOptSetGetSwapIntervalNormal, nullptr, nullptr, nullptr, napi_default, nullptr},
156 {"testNativeWindowNativeWindowHandleOptSetGetSwapIntervalAbnormal", nullptr,
157 testNativeWindowNativeWindowHandleOptSetGetSwapIntervalAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
158 {"testNativeWindowNativeWindowHandleOptSetGetColorGamutNormal", nullptr,
159 testNativeWindowNativeWindowHandleOptSetGetColorGamutNormal, nullptr, nullptr, nullptr, napi_default, nullptr},
160 {"testNativeWindowNativeWindowHandleOptSetGetColorGamutAbnormal", nullptr,
161 testNativeWindowNativeWindowHandleOptSetGetColorGamutAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
162 {"testNativeWindowNativeWindowHandleOptSetGetTransformNormal", nullptr,
163 testNativeWindowNativeWindowHandleOptSetGetTransformNormal, nullptr, nullptr, nullptr, napi_default, nullptr},
164 {"testNativeWindowNativeWindowHandleOptSetGetTransformAbnormal", nullptr,
165 testNativeWindowNativeWindowHandleOptSetGetTransformAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
166 {"testNativeWindowNativeWindowHandleOptSetUiTimeStampNormal", nullptr,
167 testNativeWindowNativeWindowHandleOptSetUiTimeStampNormal, nullptr, nullptr, nullptr, napi_default, nullptr},
168 {"testNativeWindowNativeWindowHandleOptSetUiTimeStampAbnormal", nullptr,
169 testNativeWindowNativeWindowHandleOptSetUiTimeStampAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
170 {"testNativeWindowNativeWindowHandleOptGetBufferQueueSize", nullptr,
171 testNativeWindowNativeWindowHandleOptGetBufferQueueSize, nullptr, nullptr, nullptr, napi_default, nullptr},
172 {"testNativeWindowNativeWindowHandleOptSetHdrWhitePointBrightnessNormal", nullptr,
173 testNativeWindowNativeWindowHandleOptSetHdrWhitePointBrightnessNormal, nullptr, nullptr, nullptr, napi_default,
174 nullptr},
175 {"testNativeWindowNativeWindowHandleOptSetHdrWhitePointBrightnessAbnormal", nullptr,
176 testNativeWindowNativeWindowHandleOptSetHdrWhitePointBrightnessAbnormal, nullptr, nullptr, nullptr, napi_default,
177 nullptr},
178 {"testNativeWindowNativeWindowHandleOptSetSdrWhitePointBrightnessNormal", nullptr,
179 testNativeWindowNativeWindowHandleOptSetSdrWhitePointBrightnessNormal, nullptr, nullptr, nullptr, napi_default,
180 nullptr},
181 {"testNativeWindowNativeWindowHandleOptSetSdrWhitePointBrightnessAbnormal", nullptr,
182 testNativeWindowNativeWindowHandleOptSetSdrWhitePointBrightnessAbnormal, nullptr, nullptr, nullptr, napi_default,
183 nullptr},
184 {"testNativeWindowNativeWindowHandleOptSetGetSourceTypeNormal", nullptr,
185 testNativeWindowNativeWindowHandleOptSetGetSourceTypeNormal, nullptr, nullptr, nullptr, napi_default, nullptr},
186 {"testNativeWindowNativeWindowHandleOptSetGetSourceTypeAbnormal", nullptr,
187 testNativeWindowNativeWindowHandleOptSetGetSourceTypeAbnormal, nullptr, nullptr, nullptr, napi_default, nullptr},
188 {"testNativeWindowNativeWindowHandleOptSetGetAppFrameworkTypeNormal", nullptr,
189 testNativeWindowNativeWindowHandleOptSetGetAppFrameworkTypeNormal, nullptr, nullptr, nullptr, napi_default,
190 nullptr},
191 {"testNativeWindowNativeWindowHandleOptSetGetAppFrameworkTypeAbnormal", nullptr,
192 testNativeWindowNativeWindowHandleOptSetGetAppFrameworkTypeAbnormal, nullptr, nullptr, nullptr, napi_default,
193 nullptr},
194 {"testNativeWindowNativeWindowSetSetScalingModeV2Nullptr", nullptr,
195 testNativeWindowNativeWindowSetSetScalingModeV2Nullptr, nullptr, nullptr, nullptr, napi_default, nullptr},
196 {"testNativeWindowNativeWindowSetScalingModeV2ScalingMode", nullptr,
197 testNativeWindowNativeWindowSetScalingModeV2ScalingMode, nullptr, nullptr, nullptr, napi_default, nullptr},
198 {"testNativeWindowGetColorSpaceFirst", nullptr, testNativeWindowGetColorSpaceFirst, nullptr, nullptr, nullptr,
199 napi_default, nullptr},
200 {"testNativeWindowSetColorSpaceNormal", nullptr, testNativeWindowSetColorSpaceNormal, nullptr, nullptr, nullptr,
201 napi_default, nullptr},
202 {"testNativeWindowSetColorSpaceNullptr", nullptr, testNativeWindowSetColorSpaceNullptr, nullptr, nullptr, nullptr,
203 napi_default, nullptr},
204 {"testNativeWindowSetColorSpaceAbnormal", nullptr, testNativeWindowSetColorSpaceAbnormal, nullptr, nullptr, nullptr,
205 napi_default, nullptr},
206 {"testNativeWindowGetMetadataValueFirst", nullptr, testNativeWindowGetMetadataValueFirst, nullptr, nullptr, nullptr,
207 napi_default, nullptr},
208 {"testNativeWindowSetDynamicMetadataValue", nullptr, testNativeWindowSetDynamicMetadataValue, nullptr, nullptr,
209 nullptr, napi_default, nullptr},
210 {"testNativeWindowSetMetadataValueTimes", nullptr, testNativeWindowSetMetadataValueTimes, nullptr, nullptr, nullptr,
211 napi_default, nullptr},
212 {"testNativeWindowSetStaticMetadataValue", nullptr, testNativeWindowSetStaticMetadataValue, nullptr, nullptr,
213 nullptr, napi_default, nullptr},
214 {"testNativeWindowSetMetadataValue", nullptr, testNativeWindowSetMetadataValue, nullptr, nullptr, nullptr,
215 napi_default, nullptr},
216 {"testNativeWindowSetNullMetadataValue", nullptr, testNativeWindowSetNullMetadataValue, nullptr, nullptr, nullptr,
217 napi_default, nullptr},
218 {"testNativeWindowSetMetadataValueNullptr", nullptr, testNativeWindowSetMetadataValueNullptr, nullptr, nullptr,
219 nullptr, napi_default, nullptr},
220 {"testNativeWindowGetMetadataValueAbnormal", nullptr, testNativeWindowGetMetadataValueAbnormal, nullptr, nullptr,
221 nullptr, napi_default, nullptr},
222 {"testNativeWindowGetMetadataValueNullptr", nullptr, testNativeWindowGetMetadataValueNullptr, nullptr, nullptr,
223 nullptr, napi_default, nullptr},
224 {"testNativeWindowNativeWindowFlushBufferErrorCode", nullptr, testNativeWindowNativeWindowFlushBufferErrorCode,
225 nullptr, nullptr, nullptr, napi_default, nullptr},
226 {"testNativeWindowGetColorSpaceNullptr", nullptr, testNativeWindowGetColorSpaceNullptr, nullptr, nullptr, nullptr,
227 napi_default, nullptr},
228 {"testNativeWindowNativeWindowHandleOptSetDesiredPresentTimeStampNormal", nullptr,
229 testNativeWindowNativeWindowHandleOptSetDesiredPresentTimeStampNormal, nullptr, nullptr, nullptr, napi_default,
230 nullptr},
231 {"testNativeWindowNativeWindowHandleOptSetDesiredPresentTimeStampAbNormal", nullptr,
232 testNativeWindowNativeWindowHandleOptSetDesiredPresentTimeStampAbNormal, nullptr, nullptr, nullptr, napi_default,
233 nullptr}};
234
235 EXTERN_C_START
Init(napi_env env, napi_value exports)236 static napi_value Init(napi_env env, napi_value exports)
237 {
238 napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
239 return exports;
240 }
241 EXTERN_C_END
242
243 static napi_module demoModule = {
244 .nm_version = 1,
245 .nm_flags = 0,
246 .nm_filename = nullptr,
247 .nm_register_func = Init,
248 .nm_modname = "nativewindow",
249 .nm_priv = ((void *)0),
250 .reserved = {0},
251 };
252
RegisterModule(void)253 extern "C" __attribute__((constructor)) void RegisterModule(void) { napi_module_register(&demoModule); };
254