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 //
17 // Created on 2024/8/7.
18 //
19 // Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
20 // please include "napi/native_api.h".
21 
22 #include "napi/native_api.h"
23 #include <bits/alltypes.h>
24 #include <GLES2/gl2.h>
25 #include <multimedia/player_framework/native_avcodec_base.h>
26 #include <native_image/native_image.h>
27 #include <native_window/external_window.h>
28 #include <native_buffer/native_buffer.h>
29 #include "ace/xcomponent/native_interface_xcomponent.h"
30 #include <string>
31 
32 #define SUCCESS 0
33 #define FAIL (-1)
34 
35 #define CONSTANT_2147483647 2147483647
36 #define CONSTANT_2147483648 2147483648
37 #define CONSTANT_NEG_2147483647 (-2147483647)
38 #define CONSTANT_NEG_2147483648 (-2147483648)
39 #define CONSTANT_NEG_9223372036854775807 (9223372036854775807)
40 #define CONSTANT_NEG_9223372036854775808 (-9223372036854775808)
41 
42 
43 #define CONSTANT_0 0
44 #define CONSTANT_1 1
45 #define CONSTANT_2 2
46 #define CONSTANT_3 3
47 #define CONSTANT_4 4
48 #define CONSTANT_5 5
49 #define CONSTANT_6 6
50 #define CONSTANT_7 7
51 #define CONSTANT_8 8
52 #define CONSTANT_60 60
53 #define CONSTANT_2999 2999
54 #define CONSTANT_3000 3000
55 #define CONSTANT_3001 3001
56 
57 #define CONSTANT_100 100
58 #define CONSTANT_1000 1000
59 #define CONSTANT_10000 10000
60 #define CONSTANT_100000 100000
61 #define CONSTANT_1000000 1000000
62 #define CONSTANT_10000000 10000000
63 #define CONSTANT_100000000 100000000
64 #define CONSTANT_1000000000 1000000000
65 
66 #define CONSTANT_1999999 1999999
67 #define CONSTANT_99999999 99999999
68 #define CONSTANT_99999999999999999 99999999999999999
69 #define CONSTANT_999999999999999999 999999999999999999
70 
71 #define CONSTANT_40001000 40001000
72 #define CONSTANT_50002000 50002000
73 #define CONSTANT_50102000 50102000
74 
75 struct result {
76     OH_NativeImage *image;
77     OHNativeWindow *nativeWindow;
78 };
79 
InitNativeWindow()80 static result InitNativeWindow()
81 {
82     struct result result1;
83     GLuint textureId;
84     glGenTextures(1, &textureId);
85     auto _image = OH_NativeImage_Create(textureId, GL_TEXTURE_2D);
86     result1.image = _image;
87     OHNativeWindow *_nativeWindow = OH_NativeImage_AcquireNativeWindow(_image);
88     result1.nativeWindow = _nativeWindow;
89     int code = SET_BUFFER_GEOMETRY;
90     int32_t width_ = 0x100;
91     int32_t height_ = 0x100;
92     int32_t ret = OH_NativeWindow_NativeWindowHandleOpt(_nativeWindow, code, width_, height_);
93     code = SET_USAGE;
94     int32_t usage = NATIVEBUFFER_USAGE_CPU_READ | NATIVEBUFFER_USAGE_CPU_WRITE | NATIVEBUFFER_USAGE_MEM_DMA;
95     ret = OH_NativeWindow_NativeWindowHandleOpt(_nativeWindow, code, usage);
96     return result1;
97 }
98 
DestroyNativeWindowImage(OH_NativeImage *image, OHNativeWindow *window)99 static void DestroyNativeWindowImage(OH_NativeImage *image, OHNativeWindow *window)
100 {
101     OH_NativeImage_Destroy(&image);
102     OH_NativeWindow_DestroyNativeWindow(window);
103 }
104 
testNativeWindowNativeWindowHandleOptSetGetFormatNormal(napi_env env, napi_callback_info info)105 napi_value testNativeWindowNativeWindowHandleOptSetGetFormatNormal(napi_env env, napi_callback_info info)
106 {
107     napi_value result = nullptr;
108     struct result result1 = InitNativeWindow();
109     OH_NativeImage *image = result1.image;
110     OHNativeWindow *nativeWindow = result1.nativeWindow;
111 
112     OH_NativeBuffer_Format arr[] = {
113         NATIVEBUFFER_PIXEL_FMT_CLUT8,        NATIVEBUFFER_PIXEL_FMT_CLUT1,        NATIVEBUFFER_PIXEL_FMT_CLUT4,
114         NATIVEBUFFER_PIXEL_FMT_RGB_565,      NATIVEBUFFER_PIXEL_FMT_RGBA_5658,    NATIVEBUFFER_PIXEL_FMT_RGBX_4444,
115         NATIVEBUFFER_PIXEL_FMT_RGBA_4444,    NATIVEBUFFER_PIXEL_FMT_RGB_444,      NATIVEBUFFER_PIXEL_FMT_RGBX_5551,
116         NATIVEBUFFER_PIXEL_FMT_RGBA_5551,    NATIVEBUFFER_PIXEL_FMT_RGB_555,      NATIVEBUFFER_PIXEL_FMT_RGBX_8888,
117         NATIVEBUFFER_PIXEL_FMT_RGBA_8888,    NATIVEBUFFER_PIXEL_FMT_RGB_888,      NATIVEBUFFER_PIXEL_FMT_BGR_565,
118         NATIVEBUFFER_PIXEL_FMT_BGRX_4444,    NATIVEBUFFER_PIXEL_FMT_BGRA_4444,    NATIVEBUFFER_PIXEL_FMT_BGRX_5551,
119         NATIVEBUFFER_PIXEL_FMT_BGRA_5551,    NATIVEBUFFER_PIXEL_FMT_BGRX_8888,    NATIVEBUFFER_PIXEL_FMT_BGRA_8888,
120         NATIVEBUFFER_PIXEL_FMT_YUV_422_I,    NATIVEBUFFER_PIXEL_FMT_YCBCR_422_SP, NATIVEBUFFER_PIXEL_FMT_YCRCB_422_SP,
121         NATIVEBUFFER_PIXEL_FMT_YCBCR_420_SP, NATIVEBUFFER_PIXEL_FMT_YCRCB_420_SP, NATIVEBUFFER_PIXEL_FMT_YCBCR_422_P,
122         NATIVEBUFFER_PIXEL_FMT_YCRCB_422_P,  NATIVEBUFFER_PIXEL_FMT_YCBCR_420_P,  NATIVEBUFFER_PIXEL_FMT_YCRCB_420_P,
123         NATIVEBUFFER_PIXEL_FMT_YUYV_422_PKG, NATIVEBUFFER_PIXEL_FMT_UYVY_422_PKG, NATIVEBUFFER_PIXEL_FMT_YVYU_422_PKG,
124         NATIVEBUFFER_PIXEL_FMT_VYUY_422_PKG, NATIVEBUFFER_PIXEL_FMT_RGBA_1010102, NATIVEBUFFER_PIXEL_FMT_YCBCR_P010,
125         NATIVEBUFFER_PIXEL_FMT_YCRCB_P010,   NATIVEBUFFER_PIXEL_FMT_RAW10,        NATIVEBUFFER_PIXEL_FMT_VENDER_MASK,
126         NATIVEBUFFER_PIXEL_FMT_BUTT};
127 
128     for (int i = 0; i < sizeof(arr) / sizeof(OH_NativeBuffer_Format); ++i) {
129         auto flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_FORMAT, arr[i]);
130         if (flag != 0) {
131             napi_create_int32(env, CONSTANT_1, &result);
132             return result;
133         }
134         int32_t format;
135         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_FORMAT, &format);
136         if (flag != 0) {
137             napi_create_int32(env, CONSTANT_2, &result);
138             return result;
139         }
140         if (format != arr[i]) {
141             napi_create_int32(env, CONSTANT_3, &result);
142             return result;
143         }
144     }
145 
146     DestroyNativeWindowImage(image, nativeWindow);
147     napi_create_int32(env, SUCCESS, &result);
148     return result;
149 }
150 
testNativeWindowNativeWindowHandleOptSetGetFormatAbnormal(napi_env env, napi_callback_info info)151 napi_value testNativeWindowNativeWindowHandleOptSetGetFormatAbnormal(napi_env env, napi_callback_info info)
152 {
153     napi_value result = nullptr;
154     struct result result1 = InitNativeWindow();
155     OH_NativeImage *image = result1.image;
156     OHNativeWindow *nativeWindow = result1.nativeWindow;
157     int32_t flag;
158     int32_t arr[] = {-CONSTANT_2147483648, -CONSTANT_2147483647, -CONSTANT_1000000, -CONSTANT_100,      -CONSTANT_1,
159                      CONSTANT_0,           CONSTANT_1,           CONSTANT_100000,   CONSTANT_2147483647};
160 
161     for (int i = 0; i < sizeof(arr) / sizeof(OH_NativeBuffer_Format); ++i) {
162         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_FORMAT, arr[i]);
163         if (flag != 0) {
164             napi_create_int32(env, (i + 1) * CONSTANT_1000 + CONSTANT_1, &result);
165             return result;
166         }
167         int32_t format;
168         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_FORMAT, &format);
169         if (flag != 0) {
170             napi_create_int32(env, (i + 1) * CONSTANT_1000 + CONSTANT_2, &result);
171             return result;
172         }
173         if (format != arr[i]) {
174             napi_create_int32(env, (i + 1) * CONSTANT_1000 + CONSTANT_3, &result);
175             return result;
176         }
177     }
178 
179     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_FORMAT, "ab%^!#8c");
180     if (flag != 0) { // 应为非0
181         napi_create_int32(env, CONSTANT_100000 + CONSTANT_1, &result);
182         return result;
183     }
184     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_FORMAT, NULL);
185     if (flag != 0) { // 应为成功
186         napi_create_int32(env, CONSTANT_100000 + CONSTANT_2, &result);
187         return result;
188     }
189     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_FORMAT);
190     if (flag != 0) { // 应为成功
191         napi_create_int32(env, CONSTANT_100000 + CONSTANT_3, &result);
192         return result;
193     }
194     DestroyNativeWindowImage(image, nativeWindow);
195     napi_create_int32(env, SUCCESS, &result);
196     return result;
197 }
198 
testNativeWindowNativeWindowHandleOptSetGetUsageNormal(napi_env env, napi_callback_info info)199 napi_value testNativeWindowNativeWindowHandleOptSetGetUsageNormal(napi_env env, napi_callback_info info)
200 {
201     napi_value result = nullptr;
202     struct result result1 = InitNativeWindow();
203     OH_NativeImage *image = result1.image;
204     OHNativeWindow *nativeWindow = result1.nativeWindow;
205     int32_t flag;
206     int32_t arr[] = {-CONSTANT_2147483648, -CONSTANT_1000, -CONSTANT_1,        CONSTANT_0,
207                      CONSTANT_1,           CONSTANT_1000,  CONSTANT_100000000, CONSTANT_2147483647};
208 
209     for (int i = 0; i < sizeof(arr) / sizeof(OH_NativeBuffer_Usage); ++i) {
210         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_USAGE, arr[i]);
211         if (flag != 0) {
212             napi_create_int32(env, (i + 1) * CONSTANT_1000 + CONSTANT_1, &result);
213             return result;
214         }
215         int32_t usage;
216         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_USAGE, &usage);
217         if (flag != 0) {
218             napi_create_int32(env, (i + 1) * CONSTANT_1000 + CONSTANT_2, &result);
219             return result;
220         }
221         if (usage != arr[i]) {
222             napi_create_int32(env, (i + 1) * CONSTANT_1000 + CONSTANT_3, &result);
223             return result;
224         }
225     }
226 
227     DestroyNativeWindowImage(image, nativeWindow);
228     napi_create_int32(env, SUCCESS, &result);
229     return result;
230 }
231 
testNativeWindowNativeWindowHandleOptSetGetUsageAbnormal(napi_env env, napi_callback_info info)232 napi_value testNativeWindowNativeWindowHandleOptSetGetUsageAbnormal(napi_env env, napi_callback_info info)
233 {
234     napi_value result = nullptr;
235     struct result result1 = InitNativeWindow();
236     OH_NativeImage *image = result1.image;
237     OHNativeWindow *nativeWindow = result1.nativeWindow;
238     int32_t flag;
239     long long arr[] = {-CONSTANT_999999999999999999, CONSTANT_999999999999999999};
240 
241     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
242         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_USAGE, arr[i]);
243         if (flag != 0) {
244             napi_create_int32(env, (i + 1) * CONSTANT_1000 + CONSTANT_1, &result);
245             return result;
246         }
247         int32_t usage;
248         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_USAGE, &usage);
249         if (flag != 0) {
250             napi_create_int32(env, (i + 1) * CONSTANT_1000 + CONSTANT_2, &result);
251             return result;
252         }
253         if (usage == arr[i]) { // 不应相同
254             napi_create_int32(env, (i + 1) * CONSTANT_1000 + CONSTANT_3, &result);
255             return result;
256         }
257     }
258 
259     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_USAGE, "");
260     if (flag != 0) {
261         napi_create_int32(env, CONSTANT_100000 + CONSTANT_1, &result);
262         return result;
263     }
264     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_USAGE, NULL);
265     if (flag != 0) {
266         napi_create_int32(env, CONSTANT_2 * CONSTANT_100000 + CONSTANT_1, &result);
267         return result;
268     }
269     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_USAGE);
270     if (flag != 0) {
271         napi_create_int32(env, CONSTANT_3 * CONSTANT_100000 + CONSTANT_1, &result);
272         return result;
273     }
274     DestroyNativeWindowImage(image, nativeWindow);
275     napi_create_int32(env, SUCCESS, &result);
276     return result;
277 }
278 
279 
testNativeWindowNativeWindowHandleOptSetGetStrideNormal(napi_env env, napi_callback_info info)280 napi_value testNativeWindowNativeWindowHandleOptSetGetStrideNormal(napi_env env, napi_callback_info info)
281 {
282     napi_value result = nullptr;
283 
284     int32_t flag;
285     struct result result1 = InitNativeWindow();
286     OH_NativeImage *image = result1.image;
287     OHNativeWindow *nativeWindow = result1.nativeWindow;
288     int32_t arr[] = {-CONSTANT_2147483647, -CONSTANT_1000, -CONSTANT_1,        CONSTANT_0,
289                      CONSTANT_1,           CONSTANT_1000,  CONSTANT_2147483647};
290     for (int i = 0; i < sizeof(arr) / sizeof(int32_t); ++i) {
291         int32_t stride;
292         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_STRIDE, arr[i]);
293         if (flag != 0) {
294             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
295             return result;
296         }
297         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_STRIDE, &stride);
298         if (flag != 0) {
299             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_2, &result);
300             return result;
301         }
302         if (arr[i] != stride) {
303             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_3, &result);
304             return result;
305         }
306     }
307 
308     DestroyNativeWindowImage(image, nativeWindow);
309     napi_create_int32(env, SUCCESS, &result);
310     return result;
311 }
312 
testNativeWindowNativeWindowHandleOptSetGetStrideAbnormal(napi_env env, napi_callback_info info)313 napi_value testNativeWindowNativeWindowHandleOptSetGetStrideAbnormal(napi_env env, napi_callback_info info)
314 {
315     napi_value result = nullptr;
316     int32_t flag;
317     int32_t stride;
318     struct result result1 = InitNativeWindow();
319     OH_NativeImage *image = result1.image;
320     OHNativeWindow *nativeWindow = result1.nativeWindow;
321 
322     long long arr[] = {-CONSTANT_999999999999999999, static_cast<long long>(CONSTANT_999999999999999999), 1LL << 63};
323     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
324         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_STRIDE, arr[i]);
325         if (flag != 0) {
326             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
327             return result;
328         }
329         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_STRIDE, &stride);
330         if (flag != 0) {
331             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_2, &result);
332             return result;
333         }
334         if (arr[i] == stride) {
335             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_3, &result);
336             return result;
337         }
338     }
339     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_STRIDE, NULL);
340     if (flag != 0) {
341         napi_create_int32(env, CONSTANT_100000 + CONSTANT_1, &result);
342         return result;
343     }
344     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_STRIDE, "sdasda213!");
345     if (flag != 0) {
346         napi_create_int32(env, CONSTANT_2 * CONSTANT_100000 + CONSTANT_1, &result);
347         return result;
348     }
349     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_STRIDE);
350     if (flag != 0) {
351         napi_create_int32(env, CONSTANT_3 * CONSTANT_100000 + CONSTANT_1, &result);
352         return result;
353     }
354     DestroyNativeWindowImage(image, nativeWindow);
355     napi_create_int32(env, SUCCESS, &result);
356     return result;
357 }
358 
359 
testNativeWindowNativeWindowHandleOptSetGetSwapIntervalNormal(napi_env env, napi_callback_info info)360 napi_value testNativeWindowNativeWindowHandleOptSetGetSwapIntervalNormal(napi_env env, napi_callback_info info)
361 {
362     napi_value result = nullptr;
363 
364     int32_t flag;
365     struct result result1 = InitNativeWindow();
366     OH_NativeImage *image = result1.image;
367     OHNativeWindow *nativeWindow = result1.nativeWindow;
368 
369     int32_t arr[] = {CONSTANT_0,          CONSTANT_100,        CONSTANT_1000,     CONSTANT_10000,    CONSTANT_1000000,
370                      CONSTANT_1000000000, CONSTANT_2147483647, -CONSTANT_1999999, -CONSTANT_99999999};
371     for (int i = 0; i < sizeof(arr) / sizeof(int32_t); ++i) {
372         int32_t interval;
373         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_SWAP_INTERVAL, arr[i]);
374         if (flag != 0) {
375             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
376             return result;
377         }
378         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_SWAP_INTERVAL, &interval);
379         if (flag != 0) {
380             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_2, &result);
381             return result;
382         }
383         if (arr[i] != interval) {
384             napi_create_int32(env, i, &result);
385             return result;
386         }
387     }
388 
389     DestroyNativeWindowImage(image, nativeWindow);
390     napi_create_int32(env, SUCCESS, &result);
391     return result;
392 }
393 
testNativeWindowNativeWindowHandleOptSetGetSwapIntervalAbnormal(napi_env env, napi_callback_info info)394 napi_value testNativeWindowNativeWindowHandleOptSetGetSwapIntervalAbnormal(napi_env env, napi_callback_info info)
395 {
396     napi_value result = nullptr;
397     int32_t flag;
398     int32_t stride;
399     struct result result1 = InitNativeWindow();
400     OH_NativeImage *image = result1.image;
401     OHNativeWindow *nativeWindow = result1.nativeWindow;
402 
403     long long arr[] = {-CONSTANT_99999999999999999, static_cast<long long>(CONSTANT_99999999999999999), 1LL << 63};
404     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
405         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_STRIDE, arr[i]);
406         if (flag != 0) {
407             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
408             return result;
409         }
410         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_STRIDE, &stride);
411         if (flag != 0) {
412             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_2, &result);
413             return result;
414         }
415         if (arr[i] == stride) {
416             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_3, &result);
417             return result;
418         }
419     }
420     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_STRIDE, NULL);
421     if (flag != 0) {
422         napi_create_int32(env, CONSTANT_100000 + CONSTANT_1, &result);
423         return result;
424     }
425     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_STRIDE, "sdasda213!");
426     if (flag != 0) {
427         napi_create_int32(env, CONSTANT_2 * CONSTANT_100000 + CONSTANT_1, &result);
428         return result;
429     }
430     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_STRIDE);
431     if (flag != 0) {
432         napi_create_int32(env, CONSTANT_3 * CONSTANT_100000 + CONSTANT_1, &result);
433         return result;
434     }
435     DestroyNativeWindowImage(image, nativeWindow);
436     napi_create_int32(env, SUCCESS, &result);
437     return result;
438 }
439 
440 
testNativeWindowNativeWindowHandleOptSetGetColorGamutNormal(napi_env env, napi_callback_info info)441 napi_value testNativeWindowNativeWindowHandleOptSetGetColorGamutNormal(napi_env env, napi_callback_info info)
442 {
443     napi_value result = nullptr;
444 
445     int32_t flag;
446     struct result result1 = InitNativeWindow();
447     OH_NativeImage *image = result1.image;
448     OHNativeWindow *nativeWindow = result1.nativeWindow;
449     int32_t arr[] = {-CONSTANT_2147483647, -CONSTANT_1000, -CONSTANT_1,        CONSTANT_0,
450                      CONSTANT_1,           CONSTANT_1000,  CONSTANT_2147483647};
451     for (int i = 0; i < sizeof(arr) / sizeof(int32_t); ++i) {
452         int32_t gamut;
453         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_COLOR_GAMUT, arr[i]);
454         if (flag != 0) {
455             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
456             return result;
457         }
458         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_COLOR_GAMUT, &gamut);
459         if (flag != 0) {
460             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_2, &result);
461             return result;
462         }
463         if (arr[i] != gamut) {
464             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_3, &result);
465             return result;
466         }
467     }
468 
469     DestroyNativeWindowImage(image, nativeWindow);
470     napi_create_int32(env, SUCCESS, &result);
471     return result;
472 }
473 
testNativeWindowNativeWindowHandleOptSetGetColorGamutAbnormal(napi_env env, napi_callback_info info)474 napi_value testNativeWindowNativeWindowHandleOptSetGetColorGamutAbnormal(napi_env env, napi_callback_info info)
475 {
476     napi_value result = nullptr;
477     int32_t flag;
478     int32_t gamut;
479     struct result result1 = InitNativeWindow();
480     OH_NativeImage *image = result1.image;
481     OHNativeWindow *nativeWindow = result1.nativeWindow;
482 
483     long long arr[] = {-CONSTANT_99999999999999999, static_cast<long long>(CONSTANT_99999999999999999), 1LL << 63};
484     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
485         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_COLOR_GAMUT, arr[i]);
486         if (flag != 0) {
487             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
488             return result;
489         }
490         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_COLOR_GAMUT, &gamut);
491         if (flag != 0) {
492             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_2, &result);
493             return result;
494         }
495         if (arr[i] == gamut) {
496             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_3, &result);
497             return result;
498         }
499     }
500     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_COLOR_GAMUT, NULL);
501     if (flag != 0) {
502         napi_create_int32(env, CONSTANT_100000 + CONSTANT_1, &result);
503         return result;
504     }
505     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_COLOR_GAMUT, "sdasda213!");
506     if (flag != 0) {
507         napi_create_int32(env, CONSTANT_2 * CONSTANT_100000 + CONSTANT_1, &result);
508         return result;
509     }
510     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_COLOR_GAMUT);
511     if (flag != 0) {
512         napi_create_int32(env, CONSTANT_3 * CONSTANT_100000 + CONSTANT_1, &result);
513         return result;
514     }
515     DestroyNativeWindowImage(image, nativeWindow);
516     napi_create_int32(env, SUCCESS, &result);
517     return result;
518 }
519 
520 
testNativeWindowNativeWindowHandleOptSetGetTransformNormal(napi_env env, napi_callback_info info)521 napi_value testNativeWindowNativeWindowHandleOptSetGetTransformNormal(napi_env env, napi_callback_info info)
522 {
523     napi_value result = nullptr;
524 
525     int32_t flag;
526     struct result result1 = InitNativeWindow();
527     OH_NativeImage *image = result1.image;
528     OHNativeWindow *nativeWindow = result1.nativeWindow;
529     int32_t arr[] = {-CONSTANT_2147483647, -CONSTANT_1000, -CONSTANT_1,        CONSTANT_0,
530                      CONSTANT_1,           CONSTANT_1000,  CONSTANT_2147483647};
531     for (int i = 0; i < sizeof(arr) / sizeof(int32_t); ++i) {
532         int32_t transform;
533         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_TRANSFORM, arr[i]);
534         if (flag != 0) {
535             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
536             return result;
537         }
538         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_TRANSFORM, &transform);
539         if (flag != 0) {
540             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_2, &result);
541             return result;
542         }
543         if (arr[i] != transform) {
544             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_3, &result);
545             return result;
546         }
547     }
548 
549     DestroyNativeWindowImage(image, nativeWindow);
550     napi_create_int32(env, SUCCESS, &result);
551     return result;
552 }
553 
testNativeWindowNativeWindowHandleOptSetGetTransformAbnormal(napi_env env, napi_callback_info info)554 napi_value testNativeWindowNativeWindowHandleOptSetGetTransformAbnormal(napi_env env, napi_callback_info info)
555 {
556     napi_value result = nullptr;
557     int32_t flag;
558     int32_t gamut;
559     struct result result1 = InitNativeWindow();
560     OH_NativeImage *image = result1.image;
561     OHNativeWindow *nativeWindow = result1.nativeWindow;
562 
563     long long arr[] = {-CONSTANT_99999999999999999, static_cast<long long>(CONSTANT_99999999999999999), 1LL << 63};
564     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
565         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_TRANSFORM, arr[i]);
566         if (flag != 0) {
567             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
568             return result;
569         }
570         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_TRANSFORM, &gamut);
571         if (flag != 0) {
572             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_2, &result);
573             return result;
574         }
575         if (arr[i] == gamut) {
576             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_3, &result);
577             return result;
578         }
579     }
580     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_TRANSFORM, NULL);
581     if (flag != 0) {
582         napi_create_int32(env, CONSTANT_100000 + CONSTANT_1, &result);
583         return result;
584     }
585     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_TRANSFORM, "sdasda213!");
586     if (flag != 0) {
587         napi_create_int32(env, CONSTANT_2 * CONSTANT_100000 + CONSTANT_1, &result);
588         return result;
589     }
590     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_TRANSFORM);
591     if (flag != 0) {
592         napi_create_int32(env, CONSTANT_3 * CONSTANT_100000 + CONSTANT_1, &result);
593         return result;
594     }
595     DestroyNativeWindowImage(image, nativeWindow);
596     napi_create_int32(env, SUCCESS, &result);
597     return result;
598 }
599 
600 
testNativeWindowNativeWindowHandleOptSetUiTimeStampNormal(napi_env env, napi_callback_info info)601 napi_value testNativeWindowNativeWindowHandleOptSetUiTimeStampNormal(napi_env env, napi_callback_info info)
602 {
603     napi_value result = nullptr;
604 
605     int32_t flag;
606     struct result result1 = InitNativeWindow();
607     OH_NativeImage *image = result1.image;
608     OHNativeWindow *nativeWindow = result1.nativeWindow;
609     uint64_t arr[] = {CONSTANT_0, CONSTANT_1, CONSTANT_1000, 1ULL << 63, CONSTANT_999999999999999999};
610     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
611         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_UI_TIMESTAMP, arr[i]);
612         if (flag != 0) {
613             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
614             return result;
615         }
616     }
617 
618     DestroyNativeWindowImage(image, nativeWindow);
619     napi_create_int32(env, SUCCESS, &result);
620     return result;
621 }
622 
testNativeWindowNativeWindowHandleOptSetUiTimeStampAbnormal(napi_env env, napi_callback_info info)623 napi_value testNativeWindowNativeWindowHandleOptSetUiTimeStampAbnormal(napi_env env, napi_callback_info info)
624 {
625     napi_value result = nullptr;
626 
627     int32_t flag;
628     struct result result1 = InitNativeWindow();
629     OH_NativeImage *image = result1.image;
630     OHNativeWindow *nativeWindow = result1.nativeWindow;
631     int64_t arr[] = {-CONSTANT_1, -CONSTANT_1000, -CONSTANT_1000000};
632     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
633         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_UI_TIMESTAMP, arr[i]);
634         if (flag != 0) {
635             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
636             return result;
637         }
638     }
639     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_UI_TIMESTAMP, "sdasda213!");
640     if (flag != 0) {
641         napi_create_int32(env, CONSTANT_100000 + CONSTANT_1, &result);
642         return result;
643     }
644     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_UI_TIMESTAMP, NULL);
645     if (flag != 0) {
646         napi_create_int32(env, CONSTANT_2 * CONSTANT_100000 + CONSTANT_1, &result);
647         return result;
648     }
649     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_UI_TIMESTAMP);
650     if (flag != 0) {
651         napi_create_int32(env, CONSTANT_3 * CONSTANT_100000 + CONSTANT_1, &result);
652         return result;
653     }
654     DestroyNativeWindowImage(image, nativeWindow);
655     napi_create_int32(env, SUCCESS, &result);
656     return result;
657 }
658 
659 
testNativeWindowNativeWindowHandleOptGetBufferQueueSize(napi_env env, napi_callback_info info)660 napi_value testNativeWindowNativeWindowHandleOptGetBufferQueueSize(napi_env env, napi_callback_info info)
661 {
662     napi_value result = nullptr;
663     struct result result1 = InitNativeWindow();
664     OH_NativeImage *image = result1.image;
665     OHNativeWindow *nativeWindow = result1.nativeWindow;
666     int32_t size;
667 
668     int32_t flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_BUFFERQUEUE_SIZE, &size);
669     if (flag != 0) {
670         napi_create_int32(env, CONSTANT_1, &result);
671         return result;
672     }
673     if (size != CONSTANT_3) {
674         napi_create_int32(env, CONSTANT_2, &result);
675         return result;
676     }
677 
678     DestroyNativeWindowImage(image, nativeWindow);
679     napi_create_int32(env, SUCCESS, &result);
680     return result;
681 }
682 
683 
testNativeWindowNativeWindowHandleOptSetHdrWhitePointBrightnessNormal(napi_env env, napi_callback_info info)684 napi_value testNativeWindowNativeWindowHandleOptSetHdrWhitePointBrightnessNormal(napi_env env,
685                                                                                  napi_callback_info info)
686 {
687     napi_value result = nullptr;
688     struct result result1 = InitNativeWindow();
689     OH_NativeImage *image = result1.image;
690     OHNativeWindow *nativeWindow = result1.nativeWindow;
691     int32_t brightness;
692 
693     float arr[] = {0.0f, 0.00001f, 0.5f, 0.123456f, 0.99999f, 1.0f};
694     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
695         int32_t flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_HDR_WHITE_POINT_BRIGHTNESS, brightness);
696         if (flag != 0) {
697             napi_create_int32(env, i + 1, &result);
698             return result;
699         }
700     }
701 
702     DestroyNativeWindowImage(image, nativeWindow);
703     napi_create_int32(env, SUCCESS, &result);
704     return result;
705 }
706 
707 
testNativeWindowNativeWindowHandleOptSetHdrWhitePointBrightnessAbnormal(napi_env env, napi_callback_info info)708 napi_value testNativeWindowNativeWindowHandleOptSetHdrWhitePointBrightnessAbnormal(napi_env env,
709                                                                                    napi_callback_info info)
710 {
711     napi_value result = nullptr;
712     struct result result1 = InitNativeWindow();
713     OH_NativeImage *image = result1.image;
714     OHNativeWindow *nativeWindow = result1.nativeWindow;
715     int32_t brightness;
716 
717     float arr[] = {-0.1f, 1.1f, -CONSTANT_100, 0, CONSTANT_100};
718     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
719         int32_t flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_HDR_WHITE_POINT_BRIGHTNESS, brightness);
720         if (flag != 0) {
721             napi_create_int32(env, i + 1, &result);
722             return result;
723         }
724     }
725     int32_t flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_HDR_WHITE_POINT_BRIGHTNESS, "test123@@#");
726     if (flag != 0) {
727         napi_create_int32(env, CONSTANT_1000 + CONSTANT_1, &result);
728         return result;
729     }
730     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_HDR_WHITE_POINT_BRIGHTNESS);
731     if (flag != 0) {
732         napi_create_int32(env, CONSTANT_1000 + CONSTANT_2, &result);
733         return result;
734     }
735     DestroyNativeWindowImage(image, nativeWindow);
736     napi_create_int32(env, SUCCESS, &result);
737     return result;
738 }
739 
740 
testNativeWindowNativeWindowHandleOptSetSdrWhitePointBrightnessNormal(napi_env env, napi_callback_info info)741 napi_value testNativeWindowNativeWindowHandleOptSetSdrWhitePointBrightnessNormal(napi_env env,
742                                                                                  napi_callback_info info)
743 {
744     napi_value result = nullptr;
745     struct result result1 = InitNativeWindow();
746     OH_NativeImage *image = result1.image;
747     OHNativeWindow *nativeWindow = result1.nativeWindow;
748     int32_t brightness;
749 
750     float arr[] = {0.0f, 0.00001f, 0.5f, 0.123456f, 0.99999f, 1.0f};
751     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
752         int32_t flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_SDR_WHITE_POINT_BRIGHTNESS, brightness);
753         if (flag != 0) {
754             napi_create_int32(env, i + 1, &result);
755             return result;
756         }
757     }
758 
759     DestroyNativeWindowImage(image, nativeWindow);
760     napi_create_int32(env, SUCCESS, &result);
761     return result;
762 }
763 
764 
testNativeWindowNativeWindowHandleOptSetSdrWhitePointBrightnessAbnormal(napi_env env, napi_callback_info info)765 napi_value testNativeWindowNativeWindowHandleOptSetSdrWhitePointBrightnessAbnormal(napi_env env,
766                                                                                    napi_callback_info info)
767 {
768     napi_value result = nullptr;
769     struct result result1 = InitNativeWindow();
770     OH_NativeImage *image = result1.image;
771     OHNativeWindow *nativeWindow = result1.nativeWindow;
772     int32_t brightness;
773 
774     float arr[] = {-0.1f, 1.1f, -CONSTANT_100, 0, CONSTANT_100};
775     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
776         int32_t flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_SDR_WHITE_POINT_BRIGHTNESS, brightness);
777         if (flag != 0) {
778             napi_create_int32(env, i + 1, &result);
779             return result;
780         }
781     }
782     int32_t flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_SDR_WHITE_POINT_BRIGHTNESS, "test123@@#");
783     if (flag != 0) {
784         napi_create_int32(env, CONSTANT_1000 + CONSTANT_1, &result);
785         return result;
786     }
787     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_SDR_WHITE_POINT_BRIGHTNESS);
788     if (flag != 0) {
789         napi_create_int32(env, CONSTANT_1000 + CONSTANT_2, &result);
790         return result;
791     }
792     DestroyNativeWindowImage(image, nativeWindow);
793     napi_create_int32(env, SUCCESS, &result);
794     return result;
795 }
796 
797 
testNativeWindowNativeWindowHandleOptSetGetSourceTypeNormal(napi_env env, napi_callback_info info)798 napi_value testNativeWindowNativeWindowHandleOptSetGetSourceTypeNormal(napi_env env, napi_callback_info info)
799 {
800     napi_value result = nullptr;
801     struct result result1 = InitNativeWindow();
802     OH_NativeImage *image = result1.image;
803     OHNativeWindow *nativeWindow = result1.nativeWindow;
804     int32_t sourceType;
805     int32_t flag;
806     for (int i = 0; i < sizeof(OHSurfaceSource); ++i) {
807         OHSurfaceSource surfaceSource = static_cast<OHSurfaceSource>(i);
808         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_SOURCE_TYPE, surfaceSource);
809         if (flag != 0) {
810             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
811             return result;
812         }
813         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_SOURCE_TYPE, &sourceType);
814         if (flag != 0) {
815             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_2, &result);
816             return result;
817         }
818         if (sourceType != surfaceSource) {
819             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_3, &result);
820             return result;
821         }
822     }
823 
824     DestroyNativeWindowImage(image, nativeWindow);
825     napi_create_int32(env, SUCCESS, &result);
826     return result;
827 }
828 
829 
testNativeWindowNativeWindowHandleOptSetGetSourceTypeAbnormal(napi_env env, napi_callback_info info)830 napi_value testNativeWindowNativeWindowHandleOptSetGetSourceTypeAbnormal(napi_env env, napi_callback_info info)
831 {
832     napi_value result = nullptr;
833 
834     int32_t flag;
835     struct result result1 = InitNativeWindow();
836     OH_NativeImage *image = result1.image;
837     OHNativeWindow *nativeWindow = result1.nativeWindow;
838     int64_t arr[] = {-CONSTANT_100, -CONSTANT_1, 0, CONSTANT_1000};
839     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
840         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_SOURCE_TYPE, arr[i]);
841         if (flag != 0) {
842             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
843             return result;
844         }
845         int32_t sourceType;
846         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_SOURCE_TYPE, &sourceType);
847         if (flag != 0) {
848             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_2, &result);
849             return result;
850         }
851         if (sourceType != arr[i]) {
852             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_3, &result);
853             return result;
854         }
855     }
856     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_SOURCE_TYPE, CONSTANT_999999999999999999);
857     if (flag != 0) {
858         napi_create_int32(env, CONSTANT_100000 + CONSTANT_1, &result);
859         return result;
860     }
861     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_SOURCE_TYPE, "sdasda213!");
862     if (flag != 0) {
863         napi_create_int32(env, CONSTANT_100000 + CONSTANT_2, &result);
864         return result;
865     }
866     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_SOURCE_TYPE, NULL);
867     if (flag != 0) {
868         napi_create_int32(env, CONSTANT_100000 + CONSTANT_3, &result);
869         return result;
870     }
871     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_SOURCE_TYPE);
872     if (flag != 0) {
873         napi_create_int32(env, CONSTANT_100000 + CONSTANT_4, &result);
874         return result;
875     }
876 
877     DestroyNativeWindowImage(image, nativeWindow);
878     napi_create_int32(env, SUCCESS, &result);
879     return result;
880 }
881 
882 
testNativeWindowNativeWindowHandleOptSetGetAppFrameworkTypeNormal(napi_env env, napi_callback_info info)883 napi_value testNativeWindowNativeWindowHandleOptSetGetAppFrameworkTypeNormal(napi_env env, napi_callback_info info)
884 {
885     napi_value result = nullptr;
886     int32_t flag;
887     char *frameworkType;
888     struct result result1 = InitNativeWindow();
889     OH_NativeImage *image = result1.image;
890     OHNativeWindow *nativeWindow = result1.nativeWindow;
891 
892     const char *arr[] = {NULL,       "",     "   ",      "0123",
893                          "应用框架", "Test", "!@#$%&*(", "这里一共是二十一个汉字这里一共是二十一个汉"};
894 
895     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
896         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_APP_FRAMEWORK_TYPE, arr[i]);
897         if (flag != 0) {
898             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
899             return result;
900         }
901         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_APP_FRAMEWORK_TYPE, &frameworkType);
902         if (flag != 0) {
903             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_2, &result);
904             return result;
905         }
906         if (arr[i] == frameworkType) {
907             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_3, &result);
908             return result;
909         }
910     }
911 
912     DestroyNativeWindowImage(image, nativeWindow);
913     napi_create_int32(env, SUCCESS, &result);
914     return result;
915 }
916 
917 
testNativeWindowNativeWindowHandleOptSetGetAppFrameworkTypeAbnormal(napi_env env, napi_callback_info info)918 napi_value testNativeWindowNativeWindowHandleOptSetGetAppFrameworkTypeAbnormal(napi_env env, napi_callback_info info)
919 {
920     napi_value result = nullptr;
921     int32_t flag;
922     char *frameworkType;
923     struct result result1 = InitNativeWindow();
924     OH_NativeImage *image = result1.image;
925     OHNativeWindow *nativeWindow = result1.nativeWindow;
926 
927     const char *arr[] = {"这里一共是二十二个汉字这里一共是二十二个汉字",
928                          "64test64!@#$%&*64test64test64aaa64test64!@#$%&*64test64test64aaa",
929                          "63test63!@#$%&*63test63test63aaa63test63!@#$%&*63test63test63aa",
930                          "65test65!@#$%&*65test65test65aaa65test65!@#$%&*65test65test65aaaa"};
931     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
932         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_APP_FRAMEWORK_TYPE, arr[i]);
933         if (flag == 0) {
934             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
935             return result;
936         }
937         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_APP_FRAMEWORK_TYPE, &frameworkType);
938         if (flag != 0) {
939             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_2, &result);
940             return result;
941         }
942     }
943 
944     DestroyNativeWindowImage(image, nativeWindow);
945     napi_create_int32(env, SUCCESS, &result);
946     return result;
947 }
948 
949 
testNativeWindowNativeWindowSetSetScalingModeV2Nullptr(napi_env env, napi_callback_info info)950 napi_value testNativeWindowNativeWindowSetSetScalingModeV2Nullptr(napi_env env, napi_callback_info info)
951 {
952     napi_value result = nullptr;
953     struct result result1 = InitNativeWindow();
954     OH_NativeImage *image = result1.image;
955     OHNativeWindow *nativeWindow = result1.nativeWindow;
956 
957     int32_t flag = OH_NativeWindow_NativeWindowSetScalingModeV2(nullptr, OH_SCALING_MODE_FREEZE_V2);
958     if (flag == 0) {
959         napi_create_int32(env, CONSTANT_1, &result);
960         return result;
961     }
962     flag = OH_NativeWindow_NativeWindowSetScalingModeV2(nativeWindow, static_cast<OHScalingModeV2>(CONSTANT_100));
963     if (flag == 0) {
964         napi_create_int32(env, CONSTANT_2, &result);
965         return result;
966     }
967 
968     DestroyNativeWindowImage(image, nativeWindow);
969     napi_create_int32(env, SUCCESS, &result);
970     return result;
971 }
972 
973 
testNativeWindowNativeWindowSetScalingModeV2ScalingMode(napi_env env, napi_callback_info info)974 napi_value testNativeWindowNativeWindowSetScalingModeV2ScalingMode(napi_env env, napi_callback_info info)
975 {
976     napi_value result = nullptr;
977     struct result result1 = InitNativeWindow();
978     OH_NativeImage *image = result1.image;
979     OHNativeWindow *nativeWindow = result1.nativeWindow;
980 
981     int32_t flag;
982     OHScalingModeV2 arr[] = {OH_SCALING_MODE_FREEZE_V2, OH_SCALING_MODE_SCALE_TO_WINDOW_V2,
983                              OH_SCALING_MODE_SCALE_CROP_V2, OH_SCALING_MODE_NO_SCALE_CROP_V2,
984                              OH_SCALING_MODE_SCALE_FIT_V2};
985     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
986         flag = OH_NativeWindow_NativeWindowSetScalingModeV2(nativeWindow, OH_SCALING_MODE_FREEZE_V2);
987         if (flag != 0) {
988             napi_create_int32(env, i + 1, &result);
989             return result;
990         }
991     }
992 
993     DestroyNativeWindowImage(image, nativeWindow);
994     napi_create_int32(env, SUCCESS, &result);
995     return result;
996 }
997 
testNativeWindowGetColorSpaceFirst(napi_env env, napi_callback_info info)998 napi_value testNativeWindowGetColorSpaceFirst(napi_env env, napi_callback_info info)
999 {
1000     napi_value result = nullptr;
1001     struct result result1 = InitNativeWindow();
1002     OH_NativeImage *image = result1.image;
1003     OHNativeWindow *nativeWindow = result1.nativeWindow;
1004     OHNativeWindowBuffer *windowBuffer = nullptr;
1005     int fenceFd;
1006     int32_t flag = OH_NativeWindow_NativeWindowRequestBuffer(nativeWindow, &windowBuffer, &fenceFd);
1007     if (flag != 0) {
1008         napi_create_int32(env, CONSTANT_1000 + CONSTANT_1, &result);
1009         return result;
1010     }
1011     OH_NativeBuffer_ColorSpace colorSpace;
1012     flag = OH_NativeWindow_GetColorSpace(nativeWindow, &colorSpace);
1013     if (flag != CONSTANT_50002000 && flag != CONSTANT_50102000) {
1014         napi_create_int32(env, flag, &result);
1015         return result;
1016     }
1017 
1018     DestroyNativeWindowImage(image, nativeWindow);
1019     napi_create_int32(env, SUCCESS, &result);
1020     return result;
1021 }
1022 
testNativeWindowSetColorSpaceNormal(napi_env env, napi_callback_info info)1023 napi_value testNativeWindowSetColorSpaceNormal(napi_env env, napi_callback_info info)
1024 {
1025     napi_value result = nullptr;
1026 
1027     int32_t flag;
1028     for (int i = 0; i < sizeof(OH_NativeBuffer_ColorSpace); ++i) {
1029         OH_NativeBuffer_ColorSpace colorspace1 = static_cast<OH_NativeBuffer_ColorSpace>(i);
1030         struct result result1 = InitNativeWindow();
1031         OH_NativeImage *image = result1.image;
1032         OHNativeWindow *nativeWindow = result1.nativeWindow;
1033         OHNativeWindowBuffer *nativeWindowBuffer = nullptr;
1034         int fenceFd;
1035         auto res = OH_NativeWindow_NativeWindowRequestBuffer(nativeWindow, &nativeWindowBuffer, &fenceFd);
1036         Region::Rect rect{
1037             .x = 0x100,
1038             .y = 0x100,
1039             .w = 0x100,
1040             .h = 0x100,
1041         };
1042         Region region{.rects = &rect};
1043         res = OH_NativeWindow_NativeWindowFlushBuffer(nativeWindow, nativeWindowBuffer, fenceFd, region);
1044         flag = OH_NativeWindow_SetColorSpace(nativeWindow, colorspace1);
1045         if (flag != 0) {
1046             napi_create_int32(env, CONSTANT_1000 * i + CONSTANT_1, &result);
1047             return result;
1048         }
1049         OH_NativeBuffer_ColorSpace colorSpace;
1050         flag = OH_NativeWindow_GetColorSpace(nativeWindow, &colorSpace);
1051         if (flag != 0) {
1052             napi_create_int32(env, CONSTANT_1000 * i + CONSTANT_2, &result);
1053             return result;
1054         }
1055         if (colorSpace != colorspace1) {
1056             napi_create_int32(env, CONSTANT_1000 * i + CONSTANT_3, &result);
1057             return result;
1058         }
1059         DestroyNativeWindowImage(image, nativeWindow);
1060     }
1061 
1062     napi_create_int32(env, SUCCESS, &result);
1063     return result;
1064 }
1065 
1066 
testNativeWindowSetColorSpaceNullptr(napi_env env, napi_callback_info info)1067 napi_value testNativeWindowSetColorSpaceNullptr(napi_env env, napi_callback_info info)
1068 {
1069     napi_value result = nullptr;
1070 
1071     int32_t flag = OH_NativeWindow_SetColorSpace(nullptr, OH_COLORSPACE_NONE);
1072     if (flag != CONSTANT_40001000) {
1073         napi_create_int32(env, FAIL, &result);
1074         return result;
1075     }
1076 
1077     napi_create_int32(env, SUCCESS, &result);
1078     return result;
1079 }
1080 
testNativeWindowSetColorSpaceAbnormal(napi_env env, napi_callback_info info)1081 napi_value testNativeWindowSetColorSpaceAbnormal(napi_env env, napi_callback_info info)
1082 {
1083     napi_value result = nullptr;
1084     struct result result1 = InitNativeWindow();
1085     OH_NativeImage *image = result1.image;
1086     OHNativeWindow *nativeWindow = result1.nativeWindow;
1087 
1088     int32_t flag =
1089         OH_NativeWindow_SetColorSpace(nativeWindow, static_cast<OH_NativeBuffer_ColorSpace>(CONSTANT_100000));
1090     if (flag != CONSTANT_40001000) {
1091         napi_create_int32(env, FAIL, &result);
1092         return result;
1093     }
1094 
1095     DestroyNativeWindowImage(image, nativeWindow);
1096     napi_create_int32(env, SUCCESS, &result);
1097     return result;
1098 }
1099 
1100 
testNativeWindowGetColorSpaceNullptr(napi_env env, napi_callback_info info)1101 napi_value testNativeWindowGetColorSpaceNullptr(napi_env env, napi_callback_info info)
1102 {
1103     napi_value result = nullptr;
1104 
1105     int32_t flag;
1106     OH_NativeBuffer_ColorSpace ret;
1107     flag = OH_NativeWindow_GetColorSpace(nullptr, &ret);
1108     if (flag != CONSTANT_40001000) {
1109         napi_create_int32(env, FAIL, &result);
1110         return result;
1111     }
1112 
1113     napi_create_int32(env, SUCCESS, &result);
1114     return result;
1115 }
1116 
1117 
testNativeWindowGetMetadataValueFirst(napi_env env, napi_callback_info info)1118 napi_value testNativeWindowGetMetadataValueFirst(napi_env env, napi_callback_info info)
1119 {
1120     napi_value result = nullptr;
1121 
1122     int32_t flag;
1123     struct result result1 = InitNativeWindow();
1124     OH_NativeImage *image = result1.image;
1125     OHNativeWindow *nativeWindow = result1.nativeWindow;
1126     int32_t ret1;
1127     uint8_t *ret2;
1128     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_METADATA_TYPE, &ret1, &ret2);
1129     if (flag != CONSTANT_50002000 && flag != CONSTANT_50102000) {
1130         napi_create_int32(env, FAIL, &result);
1131         return result;
1132     }
1133 
1134     DestroyNativeWindowImage(image, nativeWindow);
1135     napi_create_int32(env, SUCCESS, &result);
1136     return result;
1137 }
1138 
testNativeWindowSetDynamicMetadataValue1(napi_env env, napi_callback_info info, OHNativeWindow *nativeWindow)1139 napi_value testNativeWindowSetDynamicMetadataValue1(napi_env env, napi_callback_info info,
1140                                                     OHNativeWindow *nativeWindow)
1141 {
1142     napi_value result = nullptr;
1143     int32_t bufferSize;
1144     uint8_t *buffer;
1145     int32_t X = -1;
1146     uint8_t metaData[CONSTANT_60];
1147     auto flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, X, metaData);
1148     if (flag != CONSTANT_40001000) {
1149         napi_create_int32(env, CONSTANT_1000 + CONSTANT_1, &result);
1150         return result;
1151     }
1152     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, &bufferSize, &buffer);
1153     if (flag != CONSTANT_50002000 && flag != CONSTANT_50102000) {
1154         napi_create_int32(env, CONSTANT_1000 + CONSTANT_2, &result);
1155         return result;
1156     }
1157     // 2. X=0 set调用失败 get调用失败
1158     X = 0;
1159     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, X, metaData);
1160     if (flag != CONSTANT_40001000) {
1161         napi_create_int32(env, CONSTANT_2 * CONSTANT_1000 + CONSTANT_1, &result);
1162         return result;
1163     }
1164     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, &bufferSize, &buffer);
1165     if (flag != CONSTANT_50002000 && flag != CONSTANT_50102000) {
1166         napi_create_int32(env, CONSTANT_2 * CONSTANT_1000 + CONSTANT_2, &result);
1167         return result;
1168     }
1169     return result;
1170 }
1171 
testNativeWindowSetDynamicMetadataValue2(napi_env env, napi_callback_info info, OHNativeWindow *nativeWindow)1172 napi_value testNativeWindowSetDynamicMetadataValue2(napi_env env, napi_callback_info info,
1173                                                     OHNativeWindow *nativeWindow)
1174 {
1175     napi_value result = nullptr;
1176     int32_t bufferSize;
1177     uint8_t *buffer;
1178     uint8_t metaData[CONSTANT_60];
1179     int32_t X = 1; // 3. X=1 set调用成功 get调用成功 两者一致
1180     metaData[0] = static_cast<uint8_t>(0);
1181     int32_t flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, X, metaData);
1182     if (flag != 0) {
1183         napi_create_int32(env, CONSTANT_3 * CONSTANT_1000 + CONSTANT_1, &result);
1184         return result;
1185     }
1186     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, &bufferSize, &buffer);
1187     if (flag != 0) {
1188         napi_create_int32(env, CONSTANT_3 * CONSTANT_1000 + CONSTANT_2, &result);
1189         return result;
1190     }
1191     if (bufferSize != X) {
1192         napi_create_int32(env, CONSTANT_3 * CONSTANT_1000 + CONSTANT_3, &result);
1193         return result;
1194     }
1195     X = CONSTANT_60; // 4. X=60 set调用成功 get调用成功 两者一致
1196     for (int i = 0; i < X; ++i) {
1197         metaData[i] = static_cast<uint8_t>(i);
1198     }
1199     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, CONSTANT_60, metaData);
1200     if (flag != 0) {
1201         napi_create_int32(env, CONSTANT_4 * CONSTANT_1000 + CONSTANT_1, &result);
1202         return result;
1203     }
1204     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, &bufferSize, &buffer);
1205     if (flag != 0) {
1206         napi_create_int32(env, CONSTANT_4 * CONSTANT_1000 + CONSTANT_2, &result);
1207         return result;
1208     }
1209     if (bufferSize != X) {
1210         napi_create_int32(env, CONSTANT_4 * CONSTANT_1000 + CONSTANT_3, &result);
1211         return result;
1212     }
1213     return result;
1214 }
1215 
testNativeWindowSetDynamicMetadataValue3(napi_env env, napi_callback_info info, OHNativeWindow *nativeWindow)1216 napi_value testNativeWindowSetDynamicMetadataValue3(napi_env env, napi_callback_info info,
1217                                                     OHNativeWindow *nativeWindow)
1218 {
1219     napi_value result = nullptr;
1220     int32_t bufferSize;
1221     uint8_t *buffer;
1222     uint8_t metaData[CONSTANT_60];
1223     int32_t X = CONSTANT_2999;
1224     int32_t flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, X, metaData);
1225     if (flag != 0) {
1226         napi_create_int32(env, CONSTANT_5 * CONSTANT_1000 + CONSTANT_1, &result);
1227         return result;
1228     }
1229     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, &bufferSize, &buffer);
1230     if (flag != 0) {
1231         napi_create_int32(env, CONSTANT_5 * CONSTANT_1000 + CONSTANT_2, &result);
1232         return result;
1233     }
1234     if (bufferSize != X) {
1235         napi_create_int32(env, CONSTANT_5 * CONSTANT_1000 + CONSTANT_3, &result);
1236         return result;
1237     }
1238     X = CONSTANT_3000;
1239     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, X, metaData);
1240     if (flag != 0) {
1241         napi_create_int32(env, CONSTANT_6 * CONSTANT_1000 + CONSTANT_1, &result);
1242         return result;
1243     }
1244     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, &bufferSize, &buffer);
1245     if (flag != 0) {
1246         napi_create_int32(env, CONSTANT_6 * CONSTANT_1000 + CONSTANT_2, &result);
1247         return result;
1248     }
1249     if (bufferSize != X) {
1250         napi_create_int32(env, CONSTANT_6 * CONSTANT_1000 + CONSTANT_3, &result);
1251         return result;
1252     }
1253     return result;
1254 }
1255 
testNativeWindowSetDynamicMetadataValue4(napi_env env, napi_callback_info info, OHNativeWindow *nativeWindow)1256 napi_value testNativeWindowSetDynamicMetadataValue4(napi_env env, napi_callback_info info,
1257                                                     OHNativeWindow *nativeWindow)
1258 {
1259     napi_value result = nullptr;
1260     int32_t bufferSize;
1261     uint8_t *buffer;
1262     uint8_t metaData[CONSTANT_60];
1263     int32_t X = CONSTANT_3001;
1264     int32_t flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, X, metaData);
1265     if (flag != CONSTANT_40001000) {
1266         napi_create_int32(env, CONSTANT_7 * CONSTANT_1000 + CONSTANT_1, &result);
1267         return result;
1268     }
1269     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, &bufferSize, &buffer);
1270     if (flag != 0) {
1271         napi_create_int32(env, CONSTANT_7 * CONSTANT_1000 + CONSTANT_2, &result);
1272         return result;
1273     }
1274     X = CONSTANT_100000000;
1275     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, X, metaData);
1276     if (flag != CONSTANT_40001000) {
1277         napi_create_int32(env, CONSTANT_8 * CONSTANT_1000 + CONSTANT_1, &result);
1278         return result;
1279     }
1280     return result;
1281 }
1282 
testNativeWindowSetDynamicMetadataValue(napi_env env, napi_callback_info info)1283 napi_value testNativeWindowSetDynamicMetadataValue(napi_env env, napi_callback_info info)
1284 {
1285     napi_value result = nullptr;
1286     struct result result1 = InitNativeWindow();
1287     OH_NativeImage *image = result1.image;
1288     OHNativeWindow *nativeWindow = result1.nativeWindow;
1289     OHNativeWindowBuffer *nativeWindowBuffer = nullptr;
1290     int fenceFd;
1291     auto res = OH_NativeWindow_NativeWindowRequestBuffer(nativeWindow, &nativeWindowBuffer, &fenceFd);
1292     Region::Rect rect{.x = 0x100, .y = 0x100, .w = 0x100, .h = 0x100};
1293     Region region{.rects = &rect};
1294     res = OH_NativeWindow_NativeWindowFlushBuffer(nativeWindow, nativeWindowBuffer, fenceFd, region);
1295 
1296     result = testNativeWindowSetDynamicMetadataValue1(env, info, nativeWindow);
1297     if (result != nullptr) {
1298         return result;
1299     }
1300     result = testNativeWindowSetDynamicMetadataValue2(env, info, nativeWindow);
1301     if (result != nullptr) {
1302         return result;
1303     }
1304     result = testNativeWindowSetDynamicMetadataValue3(env, info, nativeWindow);
1305     if (result != nullptr) {
1306         return result;
1307     }
1308     result = testNativeWindowSetDynamicMetadataValue4(env, info, nativeWindow);
1309     if (result != nullptr) {
1310         return result;
1311     }
1312     DestroyNativeWindowImage(image, nativeWindow);
1313     napi_create_int32(env, SUCCESS, &result);
1314     return result;
1315 }
1316 
1317 
testNativeWindowSetMetadataValueTimes(napi_env env, napi_callback_info info)1318 napi_value testNativeWindowSetMetadataValueTimes(napi_env env, napi_callback_info info)
1319 {
1320     napi_value result = nullptr;
1321 
1322     int32_t flag;
1323     struct result result1 = InitNativeWindow();
1324     OH_NativeImage *image = result1.image;
1325     OHNativeWindow *nativeWindow = result1.nativeWindow;
1326     OHNativeWindowBuffer *nativeWindowBuffer = nullptr;
1327     int fenceFd;
1328     auto res = OH_NativeWindow_NativeWindowRequestBuffer(nativeWindow, &nativeWindowBuffer, &fenceFd);
1329     Region::Rect rect{
1330         .x = 0x100,
1331         .y = 0x100,
1332         .w = 0x100,
1333         .h = 0x100,
1334     };
1335     Region region{.rects = &rect};
1336     res = OH_NativeWindow_NativeWindowFlushBuffer(nativeWindow, nativeWindowBuffer, fenceFd, region);
1337     int32_t bufferSize;
1338     uint8_t *buffer;
1339     int32_t X = CONSTANT_60;
1340     uint8_t metaData[X];
1341     for (int j = 0; j < X; ++j) {
1342         metaData[j] = static_cast<uint8_t>(j);
1343     }
1344 
1345     for (int i = 0; i < CONSTANT_60; ++i) {
1346         flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, X, metaData);
1347         if (flag != 0) {
1348             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
1349             return result;
1350         }
1351         flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, &bufferSize, &buffer);
1352         if (flag != 0) {
1353             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_2, &result);
1354             return result;
1355         }
1356         if (bufferSize != X) {
1357             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_3, &result);
1358             return result;
1359         }
1360     }
1361 
1362     DestroyNativeWindowImage(image, nativeWindow);
1363     napi_create_int32(env, SUCCESS, &result);
1364     return result;
1365 }
1366 
1367 
testNativeWindowSetStaticMetadataValue1(napi_env env, napi_callback_info info, OHNativeWindow *nativeWindow)1368 napi_value testNativeWindowSetStaticMetadataValue1(napi_env env, napi_callback_info info,
1369                                                    OHNativeWindow *nativeWindow)
1370 {
1371     napi_value result = nullptr;
1372     int32_t bufferSize;
1373     uint8_t *buffer;
1374     uint8_t metaData[CONSTANT_60];
1375     // 1.
1376     int32_t X = -1;
1377     int32_t flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_STATIC_METADATA, X, metaData);
1378     if (flag != CONSTANT_40001000) {
1379         napi_create_int32(env, CONSTANT_1000 + CONSTANT_1, &result);
1380         return result;
1381     }
1382     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_STATIC_METADATA, &bufferSize, &buffer);
1383     if (flag != CONSTANT_50002000 && flag != CONSTANT_50102000) {
1384         napi_create_int32(env, CONSTANT_1000 + CONSTANT_2, &result);
1385         return result;
1386     }
1387     // 2. X=0 set调用失败 get调用失败
1388     X = 0;
1389     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_STATIC_METADATA, X, metaData);
1390     if (flag != CONSTANT_40001000) {
1391         napi_create_int32(env, CONSTANT_2 * CONSTANT_1000 + CONSTANT_1, &result);
1392         return result;
1393     }
1394     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_STATIC_METADATA, &bufferSize, &buffer);
1395     if (flag != CONSTANT_50002000 && flag != CONSTANT_50102000) {
1396         napi_create_int32(env, CONSTANT_2 * CONSTANT_1000 + CONSTANT_2, &result);
1397         return result;
1398     }
1399     return result;
1400 }
1401 
1402 
testNativeWindowSetStaticMetadataValue2(napi_env env, napi_callback_info info, OHNativeWindow *nativeWindow)1403 napi_value testNativeWindowSetStaticMetadataValue2(napi_env env, napi_callback_info info,
1404                                                    OHNativeWindow *nativeWindow)
1405 {
1406     napi_value result = nullptr;
1407     int32_t bufferSize;
1408     uint8_t *buffer;
1409     uint8_t metaData[CONSTANT_60];
1410     int32_t X = 1; // 3. X=1 set调用成功 get调用成功 两者一致
1411     metaData[0] = static_cast<uint8_t>(0);
1412     int32_t flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_STATIC_METADATA, X, metaData);
1413     if (flag != 0) {
1414         napi_create_int32(env, CONSTANT_3 * CONSTANT_1000 + CONSTANT_1, &result);
1415         return result;
1416     }
1417     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_STATIC_METADATA, &bufferSize, &buffer);
1418     if (flag != 0) {
1419         napi_create_int32(env, CONSTANT_3 * CONSTANT_1000 + CONSTANT_2, &result);
1420         return result;
1421     }
1422     if (bufferSize != X) {
1423         napi_create_int32(env, CONSTANT_3 * CONSTANT_1000 + CONSTANT_3, &result);
1424         return result;
1425     }
1426     X = CONSTANT_60; // 4.
1427     for (int i = 0; i < X; ++i) {
1428         metaData[i] = static_cast<uint8_t>(i);
1429     }
1430     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_STATIC_METADATA, CONSTANT_60, metaData);
1431     if (flag != 0) {
1432         napi_create_int32(env, CONSTANT_4 * CONSTANT_1000 + CONSTANT_1, &result);
1433         return result;
1434     }
1435     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_STATIC_METADATA, &bufferSize, &buffer);
1436     if (flag != 0) {
1437         napi_create_int32(env, CONSTANT_4 * CONSTANT_1000 + CONSTANT_2, &result);
1438         return result;
1439     }
1440     if (bufferSize != X) {
1441         napi_create_int32(env, CONSTANT_4 * CONSTANT_1000 + CONSTANT_3, &result);
1442         return result;
1443     }
1444     return result;
1445 }
1446 
testNativeWindowSetStaticMetadataValue3(napi_env env, napi_callback_info info, OHNativeWindow *nativeWindow)1447 napi_value testNativeWindowSetStaticMetadataValue3(napi_env env, napi_callback_info info,
1448                                                    OHNativeWindow *nativeWindow)
1449 {
1450     napi_value result = nullptr;
1451     int32_t bufferSize;
1452     uint8_t *buffer;
1453     uint8_t metaData[CONSTANT_60];
1454 
1455     int32_t X = CONSTANT_2999;
1456     int32_t flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_STATIC_METADATA, X, metaData);
1457     if (flag != 0) {
1458         napi_create_int32(env, CONSTANT_5 * CONSTANT_1000 + CONSTANT_1, &result);
1459         return result;
1460     }
1461     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_STATIC_METADATA, &bufferSize, &buffer);
1462     if (flag != 0) {
1463         napi_create_int32(env, CONSTANT_5 * CONSTANT_1000 + CONSTANT_2, &result);
1464         return result;
1465     }
1466     if (bufferSize != X) {
1467         napi_create_int32(env, CONSTANT_5 * CONSTANT_1000 + CONSTANT_3, &result);
1468         return result;
1469     }
1470     X = CONSTANT_3000;
1471     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_STATIC_METADATA, X, metaData);
1472     if (flag != 0) {
1473         napi_create_int32(env, CONSTANT_6 * CONSTANT_1000 + CONSTANT_1, &result);
1474         return result;
1475     }
1476     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_STATIC_METADATA, &bufferSize, &buffer);
1477     if (flag != 0) {
1478         napi_create_int32(env, CONSTANT_6 * CONSTANT_1000 + CONSTANT_2, &result);
1479         return result;
1480     }
1481     if (bufferSize != X) {
1482         napi_create_int32(env, CONSTANT_6 * CONSTANT_1000 + CONSTANT_3, &result);
1483         return result;
1484     }
1485     return result;
1486 }
1487 
testNativeWindowSetStaticMetadataValue4(napi_env env, napi_callback_info info, OHNativeWindow *nativeWindow)1488 napi_value testNativeWindowSetStaticMetadataValue4(napi_env env, napi_callback_info info,
1489                                                    OHNativeWindow *nativeWindow)
1490 {
1491     napi_value result = nullptr;
1492     int32_t bufferSize;
1493     uint8_t *buffer;
1494     uint8_t metaData[CONSTANT_60];
1495     int32_t X = CONSTANT_3001;
1496     int32_t flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_STATIC_METADATA, X, buffer);
1497     if (flag != CONSTANT_40001000) {
1498         napi_create_int32(env, CONSTANT_7 * CONSTANT_1000 + CONSTANT_1, &result);
1499         return result;
1500     }
1501     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_STATIC_METADATA, &bufferSize, &buffer);
1502     if (flag != 0) {
1503         napi_create_int32(env, CONSTANT_7 * CONSTANT_1000 + CONSTANT_2, &result);
1504         return result;
1505     }
1506     X = CONSTANT_100000000;
1507     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_STATIC_METADATA, X, metaData);
1508     if (flag != CONSTANT_40001000) {
1509         napi_create_int32(env, CONSTANT_8 * CONSTANT_1000 + CONSTANT_1, &result);
1510         return result;
1511     }
1512     return result;
1513 }
1514 
testNativeWindowSetStaticMetadataValue(napi_env env, napi_callback_info info)1515 napi_value testNativeWindowSetStaticMetadataValue(napi_env env, napi_callback_info info)
1516 {
1517     napi_value result = nullptr;
1518     struct result result1 = InitNativeWindow();
1519     OH_NativeImage *image = result1.image;
1520     OHNativeWindow *nativeWindow = result1.nativeWindow;
1521     OHNativeWindowBuffer *nativeWindowBuffer = nullptr;
1522     int fenceFd;
1523     auto res = OH_NativeWindow_NativeWindowRequestBuffer(nativeWindow, &nativeWindowBuffer, &fenceFd);
1524     Region::Rect rect{.x = 0x100, .y = 0x100, .w = 0x100, .h = 0x100};
1525     Region region{.rects = &rect};
1526     res = OH_NativeWindow_NativeWindowFlushBuffer(nativeWindow, nativeWindowBuffer, fenceFd, region);
1527 
1528     result = testNativeWindowSetStaticMetadataValue1(env, info, nativeWindow);
1529     if (result != nullptr) {
1530         return result;
1531     }
1532     result = testNativeWindowSetStaticMetadataValue2(env, info, nativeWindow);
1533     if (result != nullptr) {
1534         return result;
1535     }
1536     result = testNativeWindowSetStaticMetadataValue3(env, info, nativeWindow);
1537     if (result != nullptr) {
1538         return result;
1539     }
1540     result = testNativeWindowSetStaticMetadataValue4(env, info, nativeWindow);
1541     if (result != nullptr) {
1542         return result;
1543     }
1544     DestroyNativeWindowImage(image, nativeWindow);
1545     napi_create_int32(env, SUCCESS, &result);
1546     return result;
1547 }
1548 
testNativeWindowSetMetadataValue1(napi_env env, napi_callback_info info, OHNativeWindow *nativeWindow)1549 napi_value testNativeWindowSetMetadataValue1(napi_env env, napi_callback_info info, OHNativeWindow *nativeWindow)
1550 {
1551     napi_value result = nullptr;
1552     int32_t flag;
1553     int32_t bufferSize;
1554     uint8_t *buffer;
1555     int32_t X = -1;
1556     uint8_t metaData[CONSTANT_60];
1557     // 1.
1558     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_METADATA_TYPE, X, metaData);
1559     if (flag != CONSTANT_40001000) {
1560         napi_create_int32(env, CONSTANT_1000 + CONSTANT_1, &result);
1561         return result;
1562     }
1563     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_METADATA_TYPE, &bufferSize, &buffer);
1564     if (flag != CONSTANT_50002000 && flag != CONSTANT_50102000) {
1565         napi_create_int32(env, CONSTANT_1000 + CONSTANT_2, &result);
1566         return result;
1567     }
1568     // 2. X=0 set调用失败 get调用失败
1569     X = 0;
1570     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_METADATA_TYPE, X, metaData);
1571     if (flag != CONSTANT_40001000) {
1572         napi_create_int32(env, CONSTANT_2 * CONSTANT_1000 + CONSTANT_1, &result);
1573         return result;
1574     }
1575     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_METADATA_TYPE, &bufferSize, &buffer);
1576     if (flag != CONSTANT_50002000 && flag != CONSTANT_50102000) {
1577         napi_create_int32(env, CONSTANT_2 * CONSTANT_1000 + CONSTANT_2, &result);
1578         return result;
1579     }
1580     return result;
1581 }
1582 
testNativeWindowSetMetadataValue2(napi_env env, napi_callback_info info, OHNativeWindow *nativeWindow)1583 napi_value testNativeWindowSetMetadataValue2(napi_env env, napi_callback_info info, OHNativeWindow *nativeWindow)
1584 {
1585     napi_value result = nullptr;
1586     int32_t bufferSize;
1587     uint8_t *buffer;
1588     int32_t X = 1; // 3. X=1 set调用成功 get调用成功 两者一致
1589     uint8_t metaData[CONSTANT_60];
1590     metaData[0] = static_cast<uint8_t>(X);
1591     auto flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_METADATA_TYPE, X, metaData);
1592     if (flag != 0) {
1593         napi_create_int32(env, CONSTANT_3 * CONSTANT_1000 + CONSTANT_1, &result);
1594         return result;
1595     }
1596     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_METADATA_TYPE, &bufferSize, &buffer);
1597     if (flag != 0) {
1598         napi_create_int32(env, CONSTANT_3 * CONSTANT_1000 + CONSTANT_2, &result);
1599         return result;
1600     }
1601     if (bufferSize != CONSTANT_4) {
1602         napi_create_int32(env, CONSTANT_3 * CONSTANT_1000 + CONSTANT_3, &result);
1603         return result;
1604     }
1605     X = CONSTANT_4; // 4. X=60 set调用成功 get调用成功 两者一致
1606     for (int i = 0; i < X; ++i) {
1607         metaData[i] = static_cast<uint8_t>(i);
1608     }
1609     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_METADATA_TYPE, X, metaData);
1610     if (flag != 0) {
1611         napi_create_int32(env, CONSTANT_4 * CONSTANT_1000 + CONSTANT_1, &result);
1612         return result;
1613     }
1614     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_METADATA_TYPE, &bufferSize, &buffer);
1615     if (flag != 0) {
1616         napi_create_int32(env, CONSTANT_4 * CONSTANT_1000 + CONSTANT_2, &result);
1617         return result;
1618     }
1619     if (bufferSize != CONSTANT_4) {
1620         napi_create_int32(env, CONSTANT_4 * CONSTANT_1000 + CONSTANT_3, &result);
1621         return result;
1622     }
1623     return result;
1624 }
1625 
testNativeWindowSetMetadataValue3(napi_env env, napi_callback_info info, OHNativeWindow *nativeWindow)1626 napi_value testNativeWindowSetMetadataValue3(napi_env env, napi_callback_info info, OHNativeWindow *nativeWindow)
1627 {
1628     napi_value result = nullptr;
1629     int32_t flag;
1630     int32_t bufferSize;
1631     uint8_t *buffer;
1632     int32_t X = -1;
1633     uint8_t metaData[CONSTANT_60];
1634     // 5. X=2999 set调用成功 get调用成功 两者一致
1635     X = CONSTANT_2999;
1636     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_METADATA_TYPE, X, metaData);
1637     if (flag != 0) {
1638         napi_create_int32(env, CONSTANT_5 * CONSTANT_1000 + CONSTANT_1, &result);
1639         return result;
1640     }
1641     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_METADATA_TYPE, &bufferSize, &buffer);
1642     if (flag != 0) {
1643         napi_create_int32(env, CONSTANT_5 * CONSTANT_1000 + CONSTANT_2, &result);
1644         return result;
1645     }
1646     if (bufferSize != CONSTANT_4) {
1647         napi_create_int32(env, CONSTANT_5 * CONSTANT_1000 + CONSTANT_3, &result);
1648         return result;
1649     }
1650     // 6. X=3000 set调用成功 get调用成功 两者一致
1651     X = CONSTANT_3000;
1652     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_METADATA_TYPE, X, metaData);
1653     if (flag != 0) {
1654         napi_create_int32(env, CONSTANT_6 * CONSTANT_1000 + CONSTANT_1, &result);
1655         return result;
1656     }
1657     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_METADATA_TYPE, &bufferSize, &buffer);
1658     if (flag != 0) {
1659         napi_create_int32(env, CONSTANT_6 * CONSTANT_1000 + CONSTANT_2, &result);
1660         return result;
1661     }
1662     if (bufferSize != CONSTANT_4) {
1663         napi_create_int32(env, CONSTANT_6 * CONSTANT_1000 + CONSTANT_3, &result);
1664         return result;
1665     }
1666     return result;
1667 }
1668 
testNativeWindowSetMetadataValue4(napi_env env, napi_callback_info info, OHNativeWindow *nativeWindow)1669 napi_value testNativeWindowSetMetadataValue4(napi_env env, napi_callback_info info, OHNativeWindow *nativeWindow)
1670 {
1671     napi_value result = nullptr;
1672     int32_t flag;
1673     int32_t bufferSize;
1674     uint8_t *buffer;
1675     int32_t X = -1;
1676     uint8_t metaData[CONSTANT_60];
1677     // 7.
1678     X = CONSTANT_3001;
1679     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_METADATA_TYPE, X, metaData);
1680     if (flag != CONSTANT_40001000) {
1681         napi_create_int32(env, CONSTANT_7 * CONSTANT_1000 + CONSTANT_1, &result);
1682         return result;
1683     }
1684     flag = OH_NativeWindow_GetMetadataValue(nativeWindow, OH_HDR_METADATA_TYPE, &bufferSize, &buffer);
1685     if (flag != 0) {
1686         napi_create_int32(env, CONSTANT_7 * CONSTANT_1000 + CONSTANT_2, &result);
1687         return result;
1688     }
1689     // 8. X=100000000 set调用失败 get调用失败
1690     X = CONSTANT_100000000;
1691     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_METADATA_TYPE, X, metaData);
1692     if (flag != CONSTANT_40001000) {
1693         napi_create_int32(env, CONSTANT_8 * CONSTANT_1000 + CONSTANT_1, &result);
1694         return result;
1695     }
1696     return result;
1697 }
1698 
testNativeWindowSetMetadataValue(napi_env env, napi_callback_info info)1699 napi_value testNativeWindowSetMetadataValue(napi_env env, napi_callback_info info)
1700 {
1701     napi_value result = nullptr;
1702     struct result result1 = InitNativeWindow();
1703     OH_NativeImage *image = result1.image;
1704     OHNativeWindow *nativeWindow = result1.nativeWindow;
1705     OHNativeWindowBuffer *nativeWindowBuffer = nullptr;
1706     int fenceFd;
1707     auto flag = OH_NativeWindow_NativeWindowRequestBuffer(nativeWindow, &nativeWindowBuffer, &fenceFd);
1708     Region::Rect rect{.x = 0x100, .y = 0x100, .w = 0x100, .h = 0x100};
1709     Region region{.rects = &rect};
1710     flag = OH_NativeWindow_NativeWindowFlushBuffer(nativeWindow, nativeWindowBuffer, fenceFd, region);
1711 
1712     result = testNativeWindowSetMetadataValue1(env, info, nativeWindow);
1713     if (result != nullptr) {
1714         return result;
1715     }
1716     result = testNativeWindowSetMetadataValue2(env, info, nativeWindow);
1717     if (result != nullptr) {
1718         return result;
1719     }
1720     result = testNativeWindowSetMetadataValue3(env, info, nativeWindow);
1721     if (result != nullptr) {
1722         return result;
1723     }
1724     result = testNativeWindowSetMetadataValue4(env, info, nativeWindow);
1725     if (result != nullptr) {
1726         return result;
1727     }
1728     DestroyNativeWindowImage(image, nativeWindow);
1729     napi_create_int32(env, SUCCESS, &result);
1730     return result;
1731 }
1732 
1733 
testNativeWindowSetNullMetadataValue(napi_env env, napi_callback_info info)1734 napi_value testNativeWindowSetNullMetadataValue(napi_env env, napi_callback_info info)
1735 {
1736     napi_value result = nullptr;
1737 
1738     int32_t flag;
1739     struct result result1 = InitNativeWindow();
1740     OH_NativeImage *image = result1.image;
1741     OHNativeWindow *nativeWindow = result1.nativeWindow;
1742     uint8_t *buffer = new uint8_t[CONSTANT_60];
1743     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, static_cast<OH_NativeBuffer_MetadataKey>(CONSTANT_1000000),
1744                                             CONSTANT_60, buffer);
1745     if (flag != CONSTANT_50002000 && flag != CONSTANT_50102000) {
1746         napi_create_int32(env, FAIL, &result);
1747         return result;
1748     }
1749 
1750     DestroyNativeWindowImage(image, nativeWindow);
1751     napi_create_int32(env, SUCCESS, &result);
1752     return result;
1753 }
1754 
1755 
testNativeWindowSetMetadataValueNullptr(napi_env env, napi_callback_info info)1756 napi_value testNativeWindowSetMetadataValueNullptr(napi_env env, napi_callback_info info)
1757 {
1758     napi_value result = nullptr;
1759 
1760     int32_t flag;
1761     struct result result1 = InitNativeWindow();
1762     OH_NativeImage *image = result1.image;
1763     OHNativeWindow *nativeWindow = result1.nativeWindow;
1764     uint8_t *buffer = new uint8_t[CONSTANT_60];
1765     flag = OH_NativeWindow_SetMetadataValue(nullptr, OH_HDR_DYNAMIC_METADATA, CONSTANT_60, buffer);
1766     if (flag != CONSTANT_40001000) {
1767         napi_create_int32(env, 1, &result);
1768         return result;
1769     }
1770     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, CONSTANT_60, nullptr);
1771     if (flag != CONSTANT_40001000) {
1772         napi_create_int32(env, 1, &result);
1773         return result;
1774     }
1775 
1776     DestroyNativeWindowImage(image, nativeWindow);
1777     napi_create_int32(env, SUCCESS, &result);
1778     return result;
1779 }
1780 
1781 
testNativeWindowGetMetadataValueAbnormal(napi_env env, napi_callback_info info)1782 napi_value testNativeWindowGetMetadataValueAbnormal(napi_env env, napi_callback_info info)
1783 {
1784     napi_value result = nullptr;
1785 
1786     int32_t flag;
1787     struct result result1 = InitNativeWindow();
1788     OH_NativeImage *image = result1.image;
1789     OHNativeWindow *nativeWindow = result1.nativeWindow;
1790     uint8_t *buffer = new uint8_t[CONSTANT_60];
1791     flag = OH_NativeWindow_SetMetadataValue(nullptr, OH_HDR_DYNAMIC_METADATA, CONSTANT_60, buffer);
1792     if (flag != CONSTANT_40001000) {
1793         napi_create_int32(env, 1, &result);
1794         return result;
1795     }
1796     flag = OH_NativeWindow_SetMetadataValue(nativeWindow, OH_HDR_DYNAMIC_METADATA, CONSTANT_60, nullptr);
1797     if (flag != CONSTANT_40001000) {
1798         napi_create_int32(env, 1, &result);
1799         return result;
1800     }
1801 
1802     DestroyNativeWindowImage(image, nativeWindow);
1803     napi_create_int32(env, SUCCESS, &result);
1804     return result;
1805 }
1806 
testNativeWindowGetMetadataValueNullptr(napi_env env, napi_callback_info info)1807 napi_value testNativeWindowGetMetadataValueNullptr(napi_env env, napi_callback_info info)
1808 {
1809     napi_value result = nullptr;
1810 
1811     int32_t flag;
1812     struct result result1 = InitNativeWindow();
1813     OH_NativeImage *image = result1.image;
1814     OHNativeWindow *nativeWindow = result1.nativeWindow;
1815     uint8_t *buffer = new uint8_t[CONSTANT_60];
1816     int32_t ret1;
1817     uint8_t *ret2;
1818     // 1.
1819     flag = OH_NativeWindow_SetMetadataValue(nullptr, OH_HDR_DYNAMIC_METADATA, CONSTANT_60, buffer);
1820     if (flag != CONSTANT_40001000) {
1821         napi_create_int32(env, CONSTANT_1, &result);
1822         return result;
1823     }
1824     // 2.
1825     flag = OH_NativeWindow_GetMetadataValue(nullptr, OH_HDR_DYNAMIC_METADATA, &ret1, nullptr);
1826     if (flag != CONSTANT_40001000) {
1827         napi_create_int32(env, CONSTANT_2, &result);
1828         return result;
1829     }
1830     // 3.
1831     flag = OH_NativeWindow_GetMetadataValue(nullptr, OH_HDR_DYNAMIC_METADATA, nullptr, &ret2);
1832     if (flag != CONSTANT_40001000) {
1833         napi_create_int32(env, CONSTANT_3, &result);
1834         return result;
1835     }
1836     // 4.
1837     flag = OH_NativeWindow_GetMetadataValue(nullptr, OH_HDR_DYNAMIC_METADATA, &ret1, &ret2);
1838     if (flag != CONSTANT_40001000) {
1839         napi_create_int32(env, CONSTANT_4, &result);
1840         return result;
1841     }
1842     delete[] buffer;
1843 
1844     DestroyNativeWindowImage(image, nativeWindow);
1845     napi_create_int32(env, SUCCESS, &result);
1846     return result;
1847 }
1848 
testNativeWindowNativeWindowHandleOptSetDesiredPresentTimeStampNormal(napi_env env, napi_callback_info info)1849 napi_value testNativeWindowNativeWindowHandleOptSetDesiredPresentTimeStampNormal(napi_env env,
1850                                                                                  napi_callback_info info)
1851 {
1852     napi_value result = nullptr;
1853     int32_t flag;
1854     struct result result1 = InitNativeWindow();
1855     OH_NativeImage *image = result1.image;
1856     OHNativeWindow *nativeWindow = result1.nativeWindow;
1857     uint64_t arr[] = {CONSTANT_1, CONSTANT_1000, CONSTANT_1000000000, 1ULL << 63, CONSTANT_999999999999999999};
1858     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
1859         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_DESIRED_PRESENT_TIMESTAMP, arr[i]);
1860         if (flag != 0) {
1861             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
1862             return result;
1863         }
1864     }
1865 
1866     DestroyNativeWindowImage(image, nativeWindow);
1867     napi_create_int32(env, SUCCESS, &result);
1868     return result;
1869 }
1870 
testNativeWindowNativeWindowHandleOptSetDesiredPresentTimeStampAbNormal(napi_env env, napi_callback_info info)1871 napi_value testNativeWindowNativeWindowHandleOptSetDesiredPresentTimeStampAbNormal(napi_env env,
1872                                                                                    napi_callback_info info)
1873 {
1874     napi_value result = nullptr;
1875     int32_t flag;
1876     struct result result1 = InitNativeWindow();
1877     OH_NativeImage *image = result1.image;
1878     OHNativeWindow *nativeWindow = result1.nativeWindow;
1879     int64_t arr[] = {CONSTANT_0, -CONSTANT_1, -CONSTANT_1000, -CONSTANT_1000000, CONSTANT_NEG_9223372036854775807};
1880     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
1881         flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_DESIRED_PRESENT_TIMESTAMP, arr[i]);
1882         if (flag != 0) {
1883             napi_create_int32(env, CONSTANT_1000 * (i + 1) + CONSTANT_1, &result);
1884             return result;
1885         }
1886     }
1887     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_DESIRED_PRESENT_TIMESTAMP, "sdasda213!");
1888     if (flag != 0) {
1889         napi_create_int32(env, CONSTANT_100000 + CONSTANT_1, &result);
1890         return result;
1891     }
1892     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_DESIRED_PRESENT_TIMESTAMP, NULL);
1893     if (flag != 0) {
1894         napi_create_int32(env, CONSTANT_2 * CONSTANT_100000 + CONSTANT_1, &result);
1895         return result;
1896     }
1897     flag = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_DESIRED_PRESENT_TIMESTAMP);
1898     if (flag != 0) {
1899         napi_create_int32(env, CONSTANT_3 * CONSTANT_100000 + CONSTANT_1, &result);
1900         return result;
1901     }
1902     DestroyNativeWindowImage(image, nativeWindow);
1903     napi_create_int32(env, SUCCESS, &result);
1904     return result;
1905 }