• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "napi/native_api.h"
16 #include <cstdint>
17 #include <hilog/log.h>
18 #include <multimedia/player_framework/native_avcodec_base.h>
19 #include <native_image/native_image.h>
20 #include <native_window/external_window.h>
21 #include <native_window/graphic_error_code.h>
22 #include <native_buffer/native_buffer.h>
23 #include "ace/xcomponent/native_interface_xcomponent.h"
24 #include "ExternalWindowTest.h"
25 #include "nativewindow.h"
26 #define SUCCESS 0
27 #define CONSTANT_100000 100000
28 #define CONSTANT_60 60
addExternalWindowTest(std::vector<napi_property_descriptor> & descData)29 void addExternalWindowTest(std::vector<napi_property_descriptor>& descData)
30 {
31     descData.push_back({"testOHScalingModeToWindow", nullptr, testOHScalingModeToWindow,
32             nullptr, nullptr, nullptr, napi_default, nullptr});
33     descData.push_back({"testOHScalingModeCrop", nullptr, testOHScalingModeCrop,
34             nullptr, nullptr, nullptr, napi_default, nullptr});
35     descData.push_back({"testOHScalingModeNoCrop", nullptr, testOHScalingModeNoCrop,
36              nullptr, nullptr, nullptr, napi_default, nullptr});
37     descData.push_back({"testOhMetakeyRedPrimaryY", nullptr, testOhMetakeyRedPrimaryY,
38             nullptr, nullptr, nullptr, napi_default, nullptr});
39     descData.push_back({"testOhMetakeyGreenPrimaryX", nullptr, testOhMetakeyGreenPrimaryX,
40             nullptr, nullptr, nullptr, napi_default, nullptr});
41     descData.push_back({"testOhMetakeyGreenPrimaryY", nullptr, testOhMetakeyGreenPrimaryY,
42             nullptr, nullptr, nullptr, napi_default, nullptr});
43     descData.push_back({"testOhMetakeyBluePrimaryX", nullptr, testOhMetakeyBluePrimaryX,
44             nullptr, nullptr, nullptr, napi_default, nullptr});
45     descData.push_back({"testOhMetakeyBluePrimaryY", nullptr, testOhMetakeyBluePrimaryY,
46             nullptr, nullptr, nullptr, napi_default, nullptr});
47     descData.push_back({"testOhMetakeyWhitePrimaryX", nullptr, testOhMetakeyWhitePrimaryX,
48             nullptr, nullptr, nullptr, napi_default, nullptr});
49     descData.push_back({"testOhMetakeyWhitePrimaryY", nullptr, testOhMetakeyWhitePrimaryY,
50             nullptr, nullptr, nullptr, napi_default, nullptr});
51     descData.push_back({"testOhMetakeyMaxLuminance", nullptr, testOhMetakeyMaxLuminance,
52             nullptr, nullptr, nullptr, napi_default, nullptr});
53     descData.push_back({"testOhMetakeyMinLuminance", nullptr, testOhMetakeyMinLuminance,
54             nullptr, nullptr, nullptr, napi_default, nullptr});
55     descData.push_back({"testOhMetakeyMaxContentLightLevel", nullptr, testOhMetakeyMaxContentLightLevel,
56             nullptr, nullptr, nullptr, napi_default, nullptr});
57     descData.push_back({"testOhMetakeyMaxFrameAverageLightLevel", nullptr, testOhMetakeyMaxFrameAverageLightLevel,
58             nullptr, nullptr, nullptr, napi_default, nullptr});
59     descData.push_back({"testOhMetakeyHdrVivid", nullptr, testOhMetakeyHdrVivid,
60             nullptr, nullptr, nullptr, napi_default, nullptr});
61     descData.push_back({"testNativeWindowWTParcelSuccess", nullptr, testNativeWindowWTParcelSuccess,
62         nullptr, nullptr, nullptr, napi_default, nullptr});
63     descData.push_back({"testNativeWindowWTParcelInvalidArguments", nullptr, testNativeWindowWTParcelInvalidArguments,
64         nullptr, nullptr, nullptr, napi_default, nullptr});
65     descData.push_back({"testNativeWindowRFParcelSuccess", nullptr, testNativeWindowRFParcelSuccess,
66         nullptr, nullptr, nullptr, napi_default, nullptr});
67     descData.push_back({"testNativeWindowRFParcelInvalidArguments", nullptr, testNativeWindowRFParcelInvalidArguments,
68         nullptr, nullptr, nullptr, napi_default, nullptr});
69     descData.push_back({"testNativeWindowWindowHandleOptSetTimeOut", nullptr, testNativeWindowWindowHandleOptSetTimeOut,
70         nullptr, nullptr, nullptr, napi_default, nullptr});
71     descData.push_back({"testNativeWindowWindowHandleOptGetTimeOut", nullptr, testNativeWindowWindowHandleOptGetTimeOut,
72         nullptr, nullptr, nullptr, napi_default, nullptr});
73 }
testOHScalingModeToWindow(napi_env env,napi_callback_info info)74 napi_value testOHScalingModeToWindow(napi_env env, napi_callback_info info)
75 {
76     napi_value result = nullptr;
77     InitNativeWindow *initNative = new InitNativeWindow();
78     OHNativeWindow *nativeWindow = nullptr;
79     nativeWindow = initNative->returnNativeWindow();
80     uint32_t sequence = 1000;
81     int32_t res = OH_NativeWindow_NativeWindowSetScalingMode(nullptr, sequence, OH_SCALING_MODE_SCALE_TO_WINDOW);
82     delete initNative;
83     napi_create_int32(env, res, &result);
84     return result;
85 }
86 
testOHScalingModeCrop(napi_env env,napi_callback_info info)87 napi_value testOHScalingModeCrop(napi_env env, napi_callback_info info)
88 {
89     napi_value result = nullptr;
90     InitNativeWindow *initNative = new InitNativeWindow();
91     OHNativeWindow *nativeWindow = nullptr;
92     uint32_t sequence = 1000;
93     nativeWindow = initNative->returnNativeWindow();
94     int32_t res = OH_NativeWindow_NativeWindowSetScalingMode(nullptr, sequence, OH_SCALING_MODE_SCALE_CROP);
95     napi_create_int32(env, res, &result);
96     return result;
97 }
98 
testOHScalingModeNoCrop(napi_env env,napi_callback_info info)99 napi_value testOHScalingModeNoCrop(napi_env env, napi_callback_info info)
100 {
101     napi_value result = nullptr;
102     InitNativeWindow *initNative = new InitNativeWindow();
103     OHNativeWindow *nativeWindow = nullptr;
104     uint32_t sequence = 1000;
105     nativeWindow = initNative->returnNativeWindow();
106     int32_t res = OH_NativeWindow_NativeWindowSetScalingMode(nullptr, sequence, OH_SCALING_MODE_NO_SCALE_CROP);
107     napi_create_int32(env, res, &result);
108     return result;
109 }
110 
testOhMetakeyRedPrimaryY(napi_env env,napi_callback_info info)111 napi_value testOhMetakeyRedPrimaryY(napi_env env, napi_callback_info info)
112 {
113     napi_value result = nullptr;
114     InitNativeWindow *initNative = new InitNativeWindow();
115     uint32_t sequence = 1000;
116     const OHHDRMetaData metaData[] = {{OH_METAKEY_RED_PRIMARY_Y, 0}};
117     OHNativeWindow *nativeWindow = nullptr;
118     nativeWindow = initNative->returnNativeWindow();
119     int32_t res = OH_NativeWindow_NativeWindowSetMetaData(nullptr, sequence, sizeof(metaData), metaData);
120     napi_create_int32(env, res, &result);
121     return result;
122 }
123 
testOhMetakeyGreenPrimaryX(napi_env env,napi_callback_info info)124 napi_value testOhMetakeyGreenPrimaryX(napi_env env, napi_callback_info info)
125 {
126     napi_value result = nullptr;
127     InitNativeWindow *initNative = new InitNativeWindow();
128     uint32_t sequence = 1000;
129     const OHHDRMetaData metaData[] = {{OH_METAKEY_GREEN_PRIMARY_X, 0}};
130     OHNativeWindow *nativeWindow = nullptr;
131     nativeWindow = initNative->returnNativeWindow();
132     int32_t res = OH_NativeWindow_NativeWindowSetMetaData(nullptr, sequence, sizeof(metaData), metaData);
133     napi_create_int32(env, res, &result);
134     return result;
135 }
136 
testOhMetakeyGreenPrimaryY(napi_env env,napi_callback_info info)137 napi_value testOhMetakeyGreenPrimaryY(napi_env env, napi_callback_info info)
138 {
139     napi_value result = nullptr;
140     InitNativeWindow *initNative = new InitNativeWindow();
141     uint32_t sequence = 1000;
142     const OHHDRMetaData metaData[] = {{OH_METAKEY_GREEN_PRIMARY_Y, 0}};
143     OHNativeWindow *nativeWindow = nullptr;
144     nativeWindow = initNative->returnNativeWindow();
145     int32_t res = OH_NativeWindow_NativeWindowSetMetaData(nullptr, sequence, sizeof(metaData), metaData);
146     napi_create_int32(env, res, &result);
147     return result;
148 }
149 
testOhMetakeyBluePrimaryX(napi_env env,napi_callback_info info)150 napi_value testOhMetakeyBluePrimaryX(napi_env env, napi_callback_info info)
151 {
152     napi_value result = nullptr;
153     InitNativeWindow *initNative = new InitNativeWindow();
154     uint32_t sequence = 1000;
155     const OHHDRMetaData metaData[] = {{OH_METAKEY_BLUE_PRIMARY_X, 0}};
156     OHNativeWindow *nativeWindow = nullptr;
157     nativeWindow = initNative->returnNativeWindow();
158     int32_t res = OH_NativeWindow_NativeWindowSetMetaData(nullptr, sequence, sizeof(metaData), metaData);
159     napi_create_int32(env, res, &result);
160     return result;
161 }
162 
testOhMetakeyBluePrimaryY(napi_env env,napi_callback_info info)163 napi_value testOhMetakeyBluePrimaryY(napi_env env, napi_callback_info info)
164 {
165     napi_value result = nullptr;
166     InitNativeWindow *initNative = new InitNativeWindow();
167     uint32_t sequence = 1000;
168     const OHHDRMetaData metaData[] = {{OH_METAKEY_BLUE_PRIMARY_Y, 0}};
169     OHNativeWindow *nativeWindow = nullptr;
170     nativeWindow = initNative->returnNativeWindow();
171     int32_t res = OH_NativeWindow_NativeWindowSetMetaData(nullptr, sequence, sizeof(metaData), metaData);
172     napi_create_int32(env, res, &result);
173     return result;
174 }
175 
testOhMetakeyWhitePrimaryX(napi_env env,napi_callback_info info)176 napi_value testOhMetakeyWhitePrimaryX(napi_env env, napi_callback_info info)
177 {
178     napi_value result = nullptr;
179     InitNativeWindow *initNative = new InitNativeWindow();
180     uint32_t sequence = 1000;
181     const OHHDRMetaData metaData[] = {{OH_METAKEY_WHITE_PRIMARY_X, 0}};
182     OHNativeWindow *nativeWindow = nullptr;
183     nativeWindow = initNative->returnNativeWindow();
184     int32_t res = OH_NativeWindow_NativeWindowSetMetaData(nullptr, sequence, sizeof(metaData), metaData);
185     napi_create_int32(env, res, &result);
186     return result;
187 }
188 
testOhMetakeyWhitePrimaryY(napi_env env,napi_callback_info info)189 napi_value testOhMetakeyWhitePrimaryY(napi_env env, napi_callback_info info)
190 {
191     napi_value result = nullptr;
192     InitNativeWindow *initNative = new InitNativeWindow();
193     uint32_t sequence = 1000;
194     const OHHDRMetaData metaData[] = {{OH_METAKEY_WHITE_PRIMARY_Y, 0}};
195     OHNativeWindow *nativeWindow = nullptr;
196     nativeWindow = initNative->returnNativeWindow();
197     int32_t res = OH_NativeWindow_NativeWindowSetMetaData(nullptr, sequence, sizeof(metaData), metaData);
198     napi_create_int32(env, res, &result);
199     return result;
200 }
201 
testOhMetakeyMaxLuminance(napi_env env,napi_callback_info info)202 napi_value testOhMetakeyMaxLuminance(napi_env env, napi_callback_info info)
203 {
204     napi_value result = nullptr;
205     InitNativeWindow *initNative = new InitNativeWindow();
206     uint32_t sequence = 1000;
207     const OHHDRMetaData metaData[] = {{OH_METAKEY_MAX_LUMINANCE, 0}};
208     OHNativeWindow *nativeWindow = nullptr;
209     nativeWindow = initNative->returnNativeWindow();
210     int32_t res = OH_NativeWindow_NativeWindowSetMetaData(nullptr, sequence, sizeof(metaData), metaData);
211     napi_create_int32(env, res, &result);
212     return result;
213 }
214 
testOhMetakeyMinLuminance(napi_env env,napi_callback_info info)215 napi_value testOhMetakeyMinLuminance(napi_env env, napi_callback_info info)
216 {
217     napi_value result = nullptr;
218     InitNativeWindow *initNative = new InitNativeWindow();
219     uint32_t sequence = 1000;
220     const OHHDRMetaData metaData[] = {{OH_METAKEY_MIN_LUMINANCE, 0}};
221     OHNativeWindow *nativeWindow = nullptr;
222     nativeWindow = initNative->returnNativeWindow();
223     int32_t res = OH_NativeWindow_NativeWindowSetMetaData(nullptr, sequence, sizeof(metaData), metaData);
224     napi_create_int32(env, res, &result);
225     return result;
226 }
227 
testOhMetakeyMaxContentLightLevel(napi_env env,napi_callback_info info)228 napi_value testOhMetakeyMaxContentLightLevel(napi_env env, napi_callback_info info)
229 {
230     napi_value result = nullptr;
231     InitNativeWindow *initNative = new InitNativeWindow();
232     uint32_t sequence = 1000;
233     const OHHDRMetaData metaData[] = {{OH_METAKEY_MAX_CONTENT_LIGHT_LEVEL, 0}};
234     OHNativeWindow *nativeWindow = nullptr;
235     nativeWindow = initNative->returnNativeWindow();
236     int32_t res = OH_NativeWindow_NativeWindowSetMetaData(nullptr, sequence, sizeof(metaData), metaData);
237     napi_create_int32(env, res, &result);
238     return result;
239 }
240 
testOhMetakeyMaxFrameAverageLightLevel(napi_env env,napi_callback_info info)241 napi_value testOhMetakeyMaxFrameAverageLightLevel(napi_env env, napi_callback_info info)
242 {
243     napi_value result = nullptr;
244     InitNativeWindow *initNative = new InitNativeWindow();
245     uint32_t sequence = 1000;
246     const OHHDRMetaData metaData[] = {{OH_METAKEY_MAX_FRAME_AVERAGE_LIGHT_LEVEL, 0}};
247     OHNativeWindow *nativeWindow = nullptr;
248     nativeWindow = initNative->returnNativeWindow();
249     int32_t res = OH_NativeWindow_NativeWindowSetMetaData(nullptr, sequence, sizeof(metaData), metaData);
250     napi_create_int32(env, res, &result);
251     return result;
252 }
253 
testOhMetakeyHdrVivid(napi_env env,napi_callback_info info)254 napi_value testOhMetakeyHdrVivid(napi_env env, napi_callback_info info)
255 {
256     napi_value result = nullptr;
257     InitNativeWindow *initNative = new InitNativeWindow();
258     uint32_t sequence = 1000;
259     const OHHDRMetaData metaData[] = {{OH_METAKEY_HDR_VIVID, 0}};
260     OHNativeWindow *nativeWindow = nullptr;
261     nativeWindow = initNative->returnNativeWindow();
262     int32_t res = OH_NativeWindow_NativeWindowSetMetaData(nullptr, sequence, sizeof(metaData), metaData);
263     napi_create_int32(env, res, &result);
264     return result;
265 }
266 
testNativeWindowWTParcelSuccess(napi_env env,napi_callback_info info)267 napi_value testNativeWindowWTParcelSuccess(napi_env env, napi_callback_info info)
268 {
269     napi_value result = nullptr;
270     InitNativeWindow* initNative = new InitNativeWindow();
271     OHNativeWindow *nativeWindow = nullptr;
272     nativeWindow = initNative->returnNativeWindow();
273     OHIPCParcel *parcel = OH_IPCParcel_Create();
274     int32_t res = OH_NativeWindow_WriteToParcel(nativeWindow, parcel);
275     napi_create_int32(env, res, &result);
276     return result;
277 }
278 
testNativeWindowWTParcelInvalidArguments(napi_env env,napi_callback_info info)279 napi_value testNativeWindowWTParcelInvalidArguments(napi_env env, napi_callback_info info)
280 {
281     napi_value result = nullptr;
282     InitNativeWindow* initNative = new InitNativeWindow();
283     OHNativeWindow *nativeWindow = nullptr;
284     nativeWindow = initNative->returnNativeWindow();
285     int32_t res = OH_NativeWindow_WriteToParcel(nativeWindow, nullptr);
286     napi_create_int32(env, res, &result);
287     return result;
288 }
289 
testNativeWindowRFParcelSuccess(napi_env env,napi_callback_info info)290 napi_value testNativeWindowRFParcelSuccess(napi_env env, napi_callback_info info)
291 {
292     napi_value result = nullptr;
293     InitNativeWindow* initNative = new InitNativeWindow();
294     OHNativeWindow *nativeWindow = nullptr;
295     nativeWindow = initNative->returnNativeWindow();
296     OHIPCParcel *parcel = OH_IPCParcel_Create();
297     OH_NativeWindow_WriteToParcel(nativeWindow, parcel);
298     int32_t res = OH_NativeWindow_ReadFromParcel(parcel, &nativeWindow);
299     napi_create_int32(env, res, &result);
300     return result;
301 }
302 
testNativeWindowRFParcelInvalidArguments(napi_env env,napi_callback_info info)303 napi_value testNativeWindowRFParcelInvalidArguments(napi_env env, napi_callback_info info)
304 {
305     napi_value result = nullptr;
306     InitNativeWindow* initNative = new InitNativeWindow();
307     OHNativeWindow *nativeWindow = nullptr;
308     nativeWindow = initNative->returnNativeWindow();
309     int32_t res = OH_NativeWindow_ReadFromParcel(nullptr, nullptr);
310     napi_create_int32(env, res, &result);
311     return result;
312 }
313 
testNativeWindowWindowHandleOptSetTimeOut(napi_env env,napi_callback_info info)314 napi_value testNativeWindowWindowHandleOptSetTimeOut(napi_env env, napi_callback_info info)
315 {
316     napi_value result = nullptr;
317     int32_t flag;
318     int32_t timeout = 5000;
319     InitNativeWindow* initNative = new InitNativeWindow();
320     OHNativeWindow *nativeWindow = nullptr;
321     nativeWindow = initNative->returnNativeWindow();
322     int32_t res = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, SET_TIMEOUT, &timeout);
323     delete initNative;
324     napi_create_int32(env, res, &result);
325     return result;
326 }
327 
testNativeWindowWindowHandleOptGetTimeOut(napi_env env,napi_callback_info info)328 napi_value testNativeWindowWindowHandleOptGetTimeOut(napi_env env, napi_callback_info info)
329 {
330     napi_value result = nullptr;
331     int32_t timeout = 5000;
332     InitNativeWindow* initNative = new InitNativeWindow();
333     OHNativeWindow *nativeWindow = nullptr;
334     nativeWindow = initNative->returnNativeWindow();
335     int32_t res = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, GET_TIMEOUT, &timeout);
336     delete initNative;
337     napi_create_int32(env, res, &result);
338     return result;
339 }