• 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 <cstddef>
17 #include <cstdint>
18 #include <cstdio>
19 #define LOG_TAG "PipWindow"
20 #include <hilog/log.h>
21 #include <window_manager/oh_window_pip.h>
22 #include <chrono>
23 #include <thread>
24 
25 constexpr int32_t TWO = 2;
26 constexpr int32_t THREE = 3;
27 constexpr int32_t FOUR = 4;
28 constexpr int32_t FIVE = 5;
29 constexpr int32_t SIX = 6;
30 constexpr int32_t SEVEN = 7;
31 constexpr int32_t EIGHT = 8;
32 constexpr int32_t NINE = 9;
33 constexpr int32_t SIXTEEN = 16;
34 constexpr int32_t ONE_ZERO_ONE = 101;
35 constexpr int32_t ONE_ZERO_TWO = 102;
36 constexpr int32_t TWO_ZERO_ONE = 201;
37 constexpr int32_t TWO_ZERO_TWO = 202;
38 constexpr int32_t TWO_ZERO_THREE = 203;
39 constexpr int32_t TWO_ZERO_FOUR = 204;
40 constexpr int32_t THREE_ZERO_ONE = 301;
41 constexpr int32_t THREE_ZERO_TWO = 302;
42 constexpr int32_t THREE_ZERO_THREE = 303;
43 constexpr int32_t THREE_ZERO_FOUR = 304;
44 constexpr int32_t FOUR_ZERO_ONE = 401;
45 constexpr int32_t FOUR_ZERO_TWO = 402;
46 constexpr int32_t FAIL = -1;
47 constexpr int32_t SUCCESS = 0;
48 constexpr int32_t WIDTH = 50;
49 constexpr int32_t HEIGHT = 50;
50 constexpr int32_t RECT_VALUE = 1000;
51 int32_t g_timer1 = 0;
52 int32_t g_timer2 = 0;
53 int32_t g_timer3 = 0;
54 int32_t g_timer4 = 0;
55 int32_t g_timer5 = 0;
56 int32_t g_timer6 = 0;
57 int32_t g_timer7 = 0;
58 int32_t g_timer8 = 0;
59 
TestPipTemplateTypeEnum(napi_env env,napi_callback_info info)60 static napi_value TestPipTemplateTypeEnum(napi_env env, napi_callback_info info)
61 {
62     napi_value result;
63     napi_create_object(env, &result);
64     napi_value enum1;
65     napi_create_int32(env, PictureInPicture_PipTemplateType::VIDEO_PLAY, &enum1);
66     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipTemplateType::VIDEO_PLAY=%{public}d",
67         PictureInPicture_PipTemplateType::VIDEO_PLAY);
68     napi_set_named_property(env, result, "VIDEO_PLAY", enum1);
69     napi_value enum2;
70     napi_create_int32(env, PictureInPicture_PipTemplateType::VIDEO_CALL, &enum2);
71     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipTemplateType::VIDEO_CALL=%{public}d",
72         PictureInPicture_PipTemplateType::VIDEO_CALL);
73     napi_set_named_property(env, result, "VIDEO_CALL", enum2);
74     napi_value enum3;
75     napi_create_int32(env, PictureInPicture_PipTemplateType::VIDEO_MEETING, &enum3);
76     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipTemplateType::VIDEO_MEETING=%{public}d",
77         PictureInPicture_PipTemplateType::VIDEO_MEETING);
78     napi_set_named_property(env, result, "VIDEO_MEETING", enum3);
79     napi_value enum4;
80     napi_create_int32(env, PictureInPicture_PipTemplateType::VIDEO_LIVE, &enum4);
81     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipTemplateType::VIDEO_LIVE=%{public}d",
82         PictureInPicture_PipTemplateType::VIDEO_LIVE);
83     napi_set_named_property(env, result, "VIDEO_LIVE", enum4);
84     return result;
85 }
86 
TestPipControlGroupEnum(napi_env env,napi_callback_info info)87 static napi_value TestPipControlGroupEnum(napi_env env, napi_callback_info info)
88 {
89     napi_value result;
90     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlGroup::VIDEO_PLAY_VIDEO_PREVIOUS_NEXT=%{public}d",
91         PictureInPicture_PipControlGroup::VIDEO_PLAY_VIDEO_PREVIOUS_NEXT);
92     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD=%{public}d",
93         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD);
94     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlGroup::VIDEO_CALL_MICROPHONE_SWITCH=%{public}d",
95         PictureInPicture_PipControlGroup::VIDEO_CALL_MICROPHONE_SWITCH);
96     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlGroup::VIDEO_CALL_HANG_UP_BUTTON=%{public}d",
97         PictureInPicture_PipControlGroup::VIDEO_CALL_HANG_UP_BUTTON);
98     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlGroup::VIDEO_CALL_CAMERA_SWITCH=%{public}d",
99         PictureInPicture_PipControlGroup::VIDEO_CALL_CAMERA_SWITCH);
100     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlGroup::VIDEO_CALL_MUTE_SWITCH=%{public}d",
101         PictureInPicture_PipControlGroup::VIDEO_CALL_MUTE_SWITCH);
102     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlGroup::VIDEO_MEETING_HANG_UP_BUTTON=%{public}d",
103         PictureInPicture_PipControlGroup::VIDEO_MEETING_HANG_UP_BUTTON);
104     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlGroup::VIDEO_MEETING_CAMERA_SWITCH=%{public}d",
105         PictureInPicture_PipControlGroup::VIDEO_MEETING_CAMERA_SWITCH);
106     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlGroup::VIDEO_MEETING_MUTE_SWITCH=%{public}d",
107         PictureInPicture_PipControlGroup::VIDEO_MEETING_MUTE_SWITCH);
108     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlGroup::VIDEO_MEETING_MICROPHONE_SWITCH=%{public}d",
109         PictureInPicture_PipControlGroup::VIDEO_MEETING_MICROPHONE_SWITCH);
110     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlGroup::VIDEO_LIVE_VIDEO_PLAY_PAUSE=%{public}d",
111         PictureInPicture_PipControlGroup::VIDEO_LIVE_VIDEO_PLAY_PAUSE);
112     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlGroup::VIDEO_LIVE_MUTE_SWITCH=%{public}d",
113         PictureInPicture_PipControlGroup::VIDEO_LIVE_MUTE_SWITCH);
114     if (PictureInPicture_PipControlGroup::VIDEO_PLAY_VIDEO_PREVIOUS_NEXT != ONE_ZERO_ONE ||
115         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD != ONE_ZERO_TWO ||
116         PictureInPicture_PipControlGroup::VIDEO_CALL_MICROPHONE_SWITCH != TWO_ZERO_ONE ||
117         PictureInPicture_PipControlGroup::VIDEO_CALL_HANG_UP_BUTTON != TWO_ZERO_TWO ||
118         PictureInPicture_PipControlGroup::VIDEO_CALL_CAMERA_SWITCH != TWO_ZERO_THREE ||
119         PictureInPicture_PipControlGroup::VIDEO_CALL_MUTE_SWITCH != TWO_ZERO_FOUR ||
120         PictureInPicture_PipControlGroup::VIDEO_MEETING_HANG_UP_BUTTON != THREE_ZERO_ONE ||
121         PictureInPicture_PipControlGroup::VIDEO_MEETING_CAMERA_SWITCH != THREE_ZERO_TWO ||
122         PictureInPicture_PipControlGroup::VIDEO_MEETING_MUTE_SWITCH != THREE_ZERO_THREE ||
123         PictureInPicture_PipControlGroup::VIDEO_MEETING_MICROPHONE_SWITCH != THREE_ZERO_FOUR ||
124         PictureInPicture_PipControlGroup::VIDEO_LIVE_VIDEO_PLAY_PAUSE != FOUR_ZERO_ONE ||
125         PictureInPicture_PipControlGroup::VIDEO_LIVE_MUTE_SWITCH != FOUR_ZERO_TWO) {
126             napi_create_int32(env, FAIL, &result);
127             return result;
128     }
129     napi_create_int32(env, SUCCESS, &result);
130     return result;
131 }
132 
TestPipControlTypeEnum(napi_env env,napi_callback_info info)133 static napi_value TestPipControlTypeEnum(napi_env env, napi_callback_info info)
134 {
135     napi_value result;
136     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlType::VIDEO_PLAY_PAUSE=%{public}d",
137         PictureInPicture_PipControlType::VIDEO_PLAY_PAUSE);
138     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlType::VIDEO_PREVIOUS=%{public}d",
139         PictureInPicture_PipControlType::VIDEO_PREVIOUS);
140     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlType::VIDEO_NEXT=%{public}d",
141         PictureInPicture_PipControlType::VIDEO_NEXT);
142     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlType::FAST_FORWARD=%{public}d",
143         PictureInPicture_PipControlType::FAST_FORWARD);
144     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlType::FAST_BACKWARD=%{public}d",
145         PictureInPicture_PipControlType::FAST_BACKWARD);
146     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlType::HANG_UP_BUTTON=%{public}d",
147         PictureInPicture_PipControlType::HANG_UP_BUTTON);
148     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlType::MICROPHONE_SWITCH=%{public}d",
149         PictureInPicture_PipControlType::MICROPHONE_SWITCH);
150     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlType::CAMERA_SWITCH=%{public}d",
151         PictureInPicture_PipControlType::CAMERA_SWITCH);
152     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlType::MUTE_SWITCH=%{public}d",
153         PictureInPicture_PipControlType::MUTE_SWITCH);
154 
155     if (PictureInPicture_PipControlType::VIDEO_PLAY_PAUSE != 0 ||
156         PictureInPicture_PipControlType::VIDEO_PREVIOUS != 1 ||
157         PictureInPicture_PipControlType::VIDEO_NEXT != TWO ||
158         PictureInPicture_PipControlType::FAST_FORWARD != THREE ||
159         PictureInPicture_PipControlType::FAST_BACKWARD != FOUR ||
160         PictureInPicture_PipControlType::HANG_UP_BUTTON != FIVE ||
161         PictureInPicture_PipControlType::MICROPHONE_SWITCH != SIX ||
162         PictureInPicture_PipControlType::CAMERA_SWITCH != SEVEN ||
163         PictureInPicture_PipControlType::MUTE_SWITCH != EIGHT) {
164             napi_create_int32(env, FAIL, &result);
165             return result;
166     }
167     napi_create_int32(env, SUCCESS, &result);
168     return result;
169 }
170 
TestPipControlStatusEnum(napi_env env,napi_callback_info info)171 static napi_value TestPipControlStatusEnum(napi_env env, napi_callback_info info)
172 {
173     napi_value result;
174     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlStatus::PLAY=%{public}d",
175         PictureInPicture_PipControlStatus::PLAY);
176     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlStatus::PAUSE=%{public}d",
177         PictureInPicture_PipControlStatus::PAUSE);
178     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlStatus::OPEN=%{public}d",
179         PictureInPicture_PipControlStatus::OPEN);
180     OH_LOG_INFO(LOG_APP, "PictureInPicture_PipControlStatus::CLOSE=%{public}d",
181         PictureInPicture_PipControlStatus::CLOSE);
182 
183     if (PictureInPicture_PipControlStatus::PLAY != 1 ||
184         PictureInPicture_PipControlStatus::PAUSE != 0 ||
185         PictureInPicture_PipControlStatus::OPEN != 1 ||
186         PictureInPicture_PipControlStatus::CLOSE != 0) {
187             napi_create_int32(env, FAIL, &result);
188             return result;
189     }
190     napi_create_int32(env, SUCCESS, &result);
191     return result;
192 }
193 
TestCreatePip(napi_env env,napi_callback_info info)194 static napi_value TestCreatePip(napi_env env, napi_callback_info info)
195 {
196     size_t argc = 1;
197     napi_value args[1] = { nullptr };
198     uint32_t mainWindowId;
199     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
200     napi_get_value_uint32(env, args[0], &mainWindowId);
201     OH_LOG_INFO(LOG_APP, "TestCreatePip mainWindowId =%{public}d.", mainWindowId);
202     napi_value result;
203     PictureInPicture_PipControlGroup controlGroup[1] = {
204         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
205     };
206     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
207     PictureInPicture_PipConfig pipConfig;
208     OH_PictureInPicture_CreatePipConfig(&pipConfig);
209     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
210     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
211     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
212     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
213     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
214     uint32_t controllerId = 0;
215     int32_t ret = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
216     OH_LOG_INFO(LOG_APP, "TestCreatePip ret=%{public}d", ret);
217     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
218     napi_create_int32(env, ret, &result);
219     return result;
220 }
221 
TestCreatePip_ControllerId_Nullptr(napi_env env,napi_callback_info info)222 static napi_value TestCreatePip_ControllerId_Nullptr(napi_env env, napi_callback_info info)
223 {
224     size_t argc = 1;
225     napi_value args[1] = { nullptr };
226     uint32_t mainWindowId;
227     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
228     napi_get_value_uint32(env, args[0], &mainWindowId);
229     OH_LOG_INFO(LOG_APP, "TestCreatePip_ControllerId_Nullptr mainWindowId =%{public}d.", mainWindowId);
230     napi_value result;
231     PictureInPicture_PipControlGroup controlGroup[1] = {
232         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
233     };
234     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
235     PictureInPicture_PipConfig pipConfig;
236     OH_PictureInPicture_CreatePipConfig(&pipConfig);
237     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
238     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
239     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
240     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
241     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
242     uint32_t controllerId = 0;
243     int32_t ret = OH_PictureInPicture_CreatePip(pipConfig, nullptr);
244     OH_LOG_INFO(LOG_APP, "TestCreatePip_ControllerId_Nullptr ret=%{public}d", ret);
245     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
246     napi_create_int32(env, ret, &result);
247     return result;
248 }
249 
TestCreatePip_SetPipMainWindowId_Zero(napi_env env,napi_callback_info info)250 static napi_value TestCreatePip_SetPipMainWindowId_Zero(napi_env env, napi_callback_info info)
251 {
252     size_t argc = 1;
253     napi_value args[1] = { nullptr };
254     uint32_t mainWindowId;
255     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
256     napi_get_value_uint32(env, args[0], &mainWindowId);
257     OH_LOG_INFO(LOG_APP, "TestCreatePip_SetPipMainWindowId_Zero mainWindowId =%{public}d.", mainWindowId);
258     napi_value result;
259     PictureInPicture_PipControlGroup controlGroup[1] = {
260         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
261     };
262     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
263     PictureInPicture_PipConfig pipConfig;
264     OH_PictureInPicture_CreatePipConfig(&pipConfig);
265     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
266     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
267     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
268     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
269     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
270     uint32_t controllerId = 0;
271     int32_t ret = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
272     OH_LOG_INFO(LOG_APP, "TestCreatePip_SetPipMainWindowId_Zero ret=%{public}d", ret);
273     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
274 
275     napi_create_int32(env, ret, &result);
276     return result;
277 }
278 
TestCreatePip_SetErrPipTemplateType(napi_env env,napi_callback_info info)279 static napi_value TestCreatePip_SetErrPipTemplateType(napi_env env, napi_callback_info info)
280 {
281     size_t argc = 1;
282     napi_value args[1] = { nullptr };
283     uint32_t mainWindowId;
284     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
285     napi_get_value_uint32(env, args[0], &mainWindowId);
286     OH_LOG_INFO(LOG_APP, "TestCreatePip_SetErrPipTemplateType mainWindowId =%{public}d.", mainWindowId);
287     napi_value result;
288     PictureInPicture_PipControlGroup controlGroup[1] = {
289         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
290     };
291     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_CALL;
292     PictureInPicture_PipConfig pipConfig;
293     OH_PictureInPicture_CreatePipConfig(&pipConfig);
294     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
295     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
296     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
297     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
298     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
299     uint32_t controllerId = 0;
300     int32_t ret = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
301     OH_LOG_INFO(LOG_APP, "TestCreatePip_SetErrPipTemplateType ret=%{public}d", ret);
302     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
303 
304     napi_create_int32(env, ret, &result);
305     return result;
306 }
307 
TestStartStopPip(napi_env env,napi_callback_info info)308 static napi_value TestStartStopPip(napi_env env, napi_callback_info info)
309 {
310     size_t argc = 1;
311     napi_value args[1] = { nullptr };
312     uint32_t mainWindowId;
313     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
314     napi_get_value_uint32(env, args[0], &mainWindowId);
315     OH_LOG_INFO(LOG_APP, "TestStartStopPip mainWindowId =%{public}d.", mainWindowId);
316     napi_value result;
317     PictureInPicture_PipControlGroup controlGroup[1] = {
318         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
319     };
320     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
321     PictureInPicture_PipConfig pipConfig;
322     OH_PictureInPicture_CreatePipConfig(&pipConfig);
323     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
324     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
325     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
326     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
327     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
328     uint32_t controllerId = 0;
329     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
330     OH_LOG_INFO(LOG_APP, "TestStartStopPip res=%{public}d", res);
331     if (res != 0) {
332         napi_create_int32(env, res, &result);
333         return result;
334     }
335     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
336     int32_t ret = OH_PictureInPicture_StartPip(controllerId);
337     OH_LOG_INFO(LOG_APP, "TestStartStopPip ret=%{public}d", ret);
338     OH_PictureInPicture_StopPip(controllerId);
339 
340     napi_create_int32(env, ret, &result);
341     return result;
342 }
343 
TestStartPipRepeat(napi_env env,napi_callback_info info)344 static napi_value TestStartPipRepeat(napi_env env, napi_callback_info info)
345 {
346     size_t argc = 1;
347     napi_value args[1] = { nullptr };
348     uint32_t mainWindowId;
349     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
350     napi_get_value_uint32(env, args[0], &mainWindowId);
351     OH_LOG_INFO(LOG_APP, "TestStartPipRepeat mainWindowId =%{public}d.", mainWindowId);
352     napi_value result;
353     PictureInPicture_PipControlGroup controlGroup[1] = {
354         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
355     };
356     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
357     PictureInPicture_PipConfig pipConfig;
358     OH_PictureInPicture_CreatePipConfig(&pipConfig);
359     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
360     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
361     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
362     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
363     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
364     uint32_t controllerId = 0;
365     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
366     OH_LOG_INFO(LOG_APP, "TestStartPipRepeat res=%{public}d", res);
367     if (res != 0) {
368         napi_create_int32(env, res, &result);
369         return result;
370     }
371     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
372     OH_PictureInPicture_StartPip(controllerId);
373     int32_t ret = OH_PictureInPicture_StartPip(controllerId);
374     OH_LOG_INFO(LOG_APP, "TestStartPipRepeat ret=%{public}d", ret);
375     OH_PictureInPicture_StopPip(controllerId);
376 
377     napi_create_int32(env, ret, &result);
378     return result;
379 }
380 
TestStopPipRepeat(napi_env env,napi_callback_info info)381 static napi_value TestStopPipRepeat(napi_env env, napi_callback_info info)
382 {
383     size_t argc = 1;
384     napi_value args[1] = { nullptr };
385     uint32_t mainWindowId;
386     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
387     napi_get_value_uint32(env, args[0], &mainWindowId);
388     OH_LOG_INFO(LOG_APP, "TestStopPipRepeat mainWindowId =%{public}d.", mainWindowId);
389     napi_value result;
390     PictureInPicture_PipControlGroup controlGroup[1] = {
391         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
392     };
393     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
394     PictureInPicture_PipConfig pipConfig;
395     OH_PictureInPicture_CreatePipConfig(&pipConfig);
396     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
397     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
398     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
399     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
400     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
401     uint32_t controllerId = 0;
402     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
403     OH_LOG_INFO(LOG_APP, "TestStopPipRepeat res=%{public}d", res);
404     if (res != 0) {
405         napi_create_int32(env, res, &result);
406         return result;
407     }
408     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
409     OH_PictureInPicture_StartPip(controllerId);
410     int32_t ret = OH_PictureInPicture_StopPip(controllerId);
411     OH_LOG_INFO(LOG_APP, "TestStopPipRepeat ret=%{public}d", ret);
412     std::this_thread::sleep_for(std::chrono::seconds(1));
413     ret = OH_PictureInPicture_StopPip(controllerId);
414     OH_LOG_INFO(LOG_APP, "TestStopPipRepeat 2 ret=%{public}d", ret);
415 
416     napi_create_int32(env, ret, &result);
417     return result;
418 }
419 
TestDeletePipWithStopPip(napi_env env,napi_callback_info info)420 static napi_value TestDeletePipWithStopPip(napi_env env, napi_callback_info info)
421 {
422     size_t argc = 1;
423     napi_value args[1] = { nullptr };
424     uint32_t mainWindowId;
425     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
426     napi_get_value_uint32(env, args[0], &mainWindowId);
427     OH_LOG_INFO(LOG_APP, "TestDeletePipWithStopPip mainWindowId =%{public}d.", mainWindowId);
428     napi_value result;
429     PictureInPicture_PipControlGroup controlGroup[1] = {
430         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
431     };
432     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
433     PictureInPicture_PipConfig pipConfig;
434     OH_PictureInPicture_CreatePipConfig(&pipConfig);
435     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
436     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
437     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
438     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
439     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
440     uint32_t controllerId = 0;
441     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
442     OH_LOG_INFO(LOG_APP, "TestDeletePipWithStopPip res=%{public}d", res);
443     if (res != 0) {
444         napi_create_int32(env, res, &result);
445         return result;
446     }
447     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
448     OH_PictureInPicture_StartPip(controllerId);
449     OH_PictureInPicture_StopPip(controllerId);
450     int32_t ret = OH_PictureInPicture_DeletePip(controllerId);
451     OH_LOG_INFO(LOG_APP, "TestDeletePipWithStopPip ret=%{public}d", ret);
452 
453     napi_create_int32(env, ret, &result);
454     return result;
455 }
456 
TestDeletePipWithoutStopPip(napi_env env,napi_callback_info info)457 static napi_value TestDeletePipWithoutStopPip(napi_env env, napi_callback_info info)
458 {
459     size_t argc = 1;
460     napi_value args[1] = { nullptr };
461     uint32_t mainWindowId;
462     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
463     napi_get_value_uint32(env, args[0], &mainWindowId);
464     OH_LOG_INFO(LOG_APP, "TestDeletePipWithoutStopPip mainWindowId =%{public}d.", mainWindowId);
465     napi_value result;
466     PictureInPicture_PipControlGroup controlGroup[1] = {
467         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
468     };
469     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
470     PictureInPicture_PipConfig pipConfig;
471     OH_PictureInPicture_CreatePipConfig(&pipConfig);
472     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
473     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
474     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
475     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
476     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
477     uint32_t controllerId = 0;
478     OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
479     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
480     OH_PictureInPicture_StartPip(controllerId);
481     int32_t ret = OH_PictureInPicture_DeletePip(controllerId);
482     OH_LOG_INFO(LOG_APP, "TestDeletePipWithoutStopPip ret=%{public}d", ret);
483     napi_create_int32(env, ret, &result);
484     return result;
485 }
486 
TestUpdatePipContentSize(napi_env env,napi_callback_info info)487 static napi_value TestUpdatePipContentSize(napi_env env, napi_callback_info info)
488 {
489     size_t argc = 1;
490     napi_value args[1] = { nullptr };
491     uint32_t mainWindowId;
492     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
493     napi_get_value_uint32(env, args[0], &mainWindowId);
494     OH_LOG_INFO(LOG_APP, "TestUpdatePipContentSize mainWindowId =%{public}d.", mainWindowId);
495     napi_value result;
496     PictureInPicture_PipControlGroup controlGroup[1] = {
497         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
498     };
499     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
500     PictureInPicture_PipConfig pipConfig;
501     OH_PictureInPicture_CreatePipConfig(&pipConfig);
502     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
503     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
504     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
505     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
506     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
507     uint32_t controllerId = 0;
508     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
509     OH_LOG_INFO(LOG_APP, "TestUpdatePipContentSize res=%{public}d", res);
510     if (res != 0) {
511         napi_create_int32(env, res, &result);
512         return result;
513     }
514     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
515     OH_PictureInPicture_StartPip(controllerId);
516     int32_t ret = OH_PictureInPicture_UpdatePipContentSize(controllerId, 1, 1);
517     OH_LOG_INFO(LOG_APP, "TestUpdatePipContentSize ret=%{public}d", ret);
518     OH_PictureInPicture_StopPip(controllerId);
519     OH_PictureInPicture_DeletePip(controllerId);
520 
521     napi_create_int32(env, ret, &result);
522     return result;
523 }
524 
TestUpdatePipContentStatus(napi_env env,napi_callback_info info)525 static napi_value TestUpdatePipContentStatus(napi_env env, napi_callback_info info)
526 {
527     size_t argc = 1;
528     napi_value args[1] = { nullptr };
529     uint32_t mainWindowId;
530     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
531     napi_get_value_uint32(env, args[0], &mainWindowId);
532     napi_value result;
533     PictureInPicture_PipControlGroup controlGroup[1] = {
534         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
535     };
536     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
537     PictureInPicture_PipConfig pipConfig;
538     OH_PictureInPicture_CreatePipConfig(&pipConfig);
539     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
540     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
541     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
542     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
543     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
544     uint32_t controllerId = 0;
545     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
546     OH_LOG_INFO(LOG_APP, "TestUpdatePipContentStatus res=%{public}d", res);
547     if (res != 0) {
548         napi_create_int32(env, res, &result);
549         return result;
550     }
551     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
552 
553     int32_t ret0 = OH_PictureInPicture_StartPip(controllerId);
554     OH_LOG_INFO(LOG_APP, "TestUpdatePipContentStatus ret0=%{public}d", ret0);
555     uint32_t controlType = 0;
556     uint32_t status2 = 0;
557     uint32_t status = 1;
558     int32_t ret = OH_PictureInPicture_UpdatePipControlStatus(controllerId,
559         static_cast<PictureInPicture_PipControlType>(controlType),
560         static_cast<PictureInPicture_PipControlStatus>(status));
561     OH_LOG_INFO(LOG_APP, "TestUpdatePipContentStatus ret=%{public}d", ret);
562     int32_t ret2 = OH_PictureInPicture_SetPipControlEnabled(controllerId,
563         static_cast<PictureInPicture_PipControlType>(controlType), status2);
564     OH_LOG_INFO(LOG_APP, "TestUpdatePipContentStatus ret2=%{public}d", ret2);
565     if (ret != 0 || ret2 != 0 || ret0 != 0) {
566         napi_create_int32(env, ret0 == 0? (ret == 0? ret2: ret): ret0, &result);
567         return result;
568     }
569     OH_PictureInPicture_StopPip(controllerId);
570     OH_PictureInPicture_DeletePip(controllerId);
571     napi_create_int32(env, SUCCESS, &result);
572     return result;
573 }
574 
TestUpdatePipContentEnabled(napi_env env,napi_callback_info info)575 static napi_value TestUpdatePipContentEnabled(napi_env env, napi_callback_info info)
576 {
577     size_t argc = 1;
578     napi_value args[1] = { nullptr };
579     uint32_t mainWindowId;
580     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
581     napi_get_value_uint32(env, args[0], &mainWindowId);
582     napi_value result;
583     PictureInPicture_PipControlGroup controlGroup[1] = {
584         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
585     };
586     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
587     PictureInPicture_PipConfig pipConfig;
588     OH_PictureInPicture_CreatePipConfig(&pipConfig);
589     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
590     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
591     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
592     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
593     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
594     uint32_t controllerId = 0;
595     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
596     OH_LOG_INFO(LOG_APP, "TestUpdatePipContentEnabled res=%{public}d", res);
597     if (res != 0) {
598         napi_create_int32(env, res, &result);
599         return result;
600     }
601     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
602 
603     int32_t ret0 = OH_PictureInPicture_StartPip(0);
604     OH_LOG_INFO(LOG_APP, "TestUpdatePipContentEnabled ret0=%{public}d", ret0);
605     if (ret0 != 0) {
606         napi_create_int32(env, ret0, &result);
607         return result;
608     }
609     uint32_t controlType = 0;
610     int32_t ret = OH_PictureInPicture_SetPipControlEnabled(controllerId,
611         static_cast<PictureInPicture_PipControlType>(controlType), 1);
612     OH_LOG_INFO(LOG_APP, "TestUpdatePipContentEnabled ret=%{public}d", ret);
613     int32_t ret2 = OH_PictureInPicture_SetPipControlEnabled(controllerId,
614         static_cast<PictureInPicture_PipControlType>(controlType), 0);
615     OH_LOG_INFO(LOG_APP, "TestUpdatePipContentEnabled ret2=%{public}d", ret2);
616     if (ret != 0 || ret2 != 0) {
617         napi_create_int32(env, ret == 0? ret2: ret, &result);
618         return result;
619     }
620 
621     OH_PictureInPicture_StopPip(controllerId);
622     OH_PictureInPicture_DeletePip(controllerId);
623     napi_create_int32(env, SUCCESS, &result);
624     return result;
625 }
626 
WebPipStartPipCallback1(uint32_t controllerId,uint8_t requestId,uint64_t surfaceId)627 void WebPipStartPipCallback1(uint32_t controllerId, uint8_t requestId, uint64_t surfaceId)
628 {
629     g_timer1++;
630     OH_LOG_INFO(LOG_APP, "WebPipStartPipCallback1 controllerId=%{public}lu.", controllerId);
631     OH_LOG_INFO(LOG_APP, "WebPipStartPipCallback1 requestId=%{public}lu.", requestId);
632     OH_LOG_INFO(LOG_APP, "WebPipStartPipCallback1 surfaceId=%{public}lu.", surfaceId);
633 }
634 
WebPipStartPipUnRegisterCallback1(uint32_t controllerId,uint8_t requestId,uint64_t surfaceId)635 void WebPipStartPipUnRegisterCallback1(uint32_t controllerId, uint8_t requestId, uint64_t surfaceId)
636 {
637     g_timer1--;
638     OH_LOG_INFO(LOG_APP, "WebPipStartPipUnRegisterCallback1 controllerId=%{public}lu.", controllerId);
639     OH_LOG_INFO(LOG_APP, "WebPipStartPipUnRegisterCallback1 requestId=%{public}lu.", requestId);
640     OH_LOG_INFO(LOG_APP, "WebPipStartPipUnRegisterCallback1 surfaceId=%{public}lu.", surfaceId);
641 }
642 
WebPipStartPipCallback2(uint32_t controllerId,uint8_t requestId,uint64_t surfaceId)643 void WebPipStartPipCallback2(uint32_t controllerId, uint8_t requestId, uint64_t surfaceId)
644 {
645     g_timer2++;
646     OH_LOG_INFO(LOG_APP, "WebPipStartPipCallback2 controllerId=%{public}lu.", controllerId);
647     OH_LOG_INFO(LOG_APP, "WebPipStartPipCallback2 requestId=%{public}lu.", requestId);
648     OH_LOG_INFO(LOG_APP, "WebPipStartPipCallback2 surfaceId=%{public}lu.", surfaceId);
649 }
650 
WebPipStartPipUnRegisterCallback2(uint32_t controllerId,uint8_t requestId,uint64_t surfaceId)651 void WebPipStartPipUnRegisterCallback2(uint32_t controllerId, uint8_t requestId, uint64_t surfaceId)
652 {
653     g_timer2--;
654     OH_LOG_INFO(LOG_APP, "WebPipStartPipUnRegisterCallback2 controllerId=%{public}lu.", controllerId);
655     OH_LOG_INFO(LOG_APP, "WebPipStartPipUnRegisterCallback2 requestId=%{public}lu.", requestId);
656     OH_LOG_INFO(LOG_APP, "WebPipStartPipUnRegisterCallback2 surfaceId=%{public}lu.", surfaceId);
657 }
658 
TestRegisterStartPipCallback(napi_env env,napi_callback_info info)659 static napi_value TestRegisterStartPipCallback(napi_env env, napi_callback_info info)
660 {
661     size_t argc = 1;
662     napi_value args[1] = { nullptr };
663     uint32_t mainWindowId;
664     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
665     napi_get_value_uint32(env, args[0], &mainWindowId);
666     OH_LOG_INFO(LOG_APP, "TestRegisterStartPipCallback mainWindowId =%{public}d.", mainWindowId);
667     napi_value result;
668     PictureInPicture_PipControlGroup controlGroup[1] = {
669         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
670     };
671     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
672     PictureInPicture_PipConfig pipConfig;
673     OH_PictureInPicture_CreatePipConfig(&pipConfig);
674     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
675     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
676     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
677     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
678     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
679     uint32_t controllerId = 0;
680     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
681     OH_LOG_INFO(LOG_APP, "TestRegisterStartPipCallback res=%{public}d", res);
682     if (res != 0) {
683         napi_create_int32(env, res, &result);
684         return result;
685     }
686     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
687 
688     OH_PictureInPicture_RegisterStartPipCallback(controllerId, WebPipStartPipCallback1);
689 
690     int32_t ret = OH_PictureInPicture_StartPip(0);
691     OH_LOG_INFO(LOG_APP, "TestRegisterStartPipCallback OH_PictureInPicture_StartPip ret=%{public}d", ret);
692 
693     ret = OH_PictureInPicture_StopPip(controllerId);
694     OH_LOG_INFO(LOG_APP, "TestRegisterStartPipCallback OH_PictureInPicture_StopPip ret=%{public}d", ret);
695     ret = OH_PictureInPicture_DeletePip(controllerId);
696     OH_LOG_INFO(LOG_APP, "TestRegisterStartPipCallback OH_PictureInPicture_DeletePip ret=%{public}d", ret);
697 
698     OH_LOG_INFO(LOG_APP, "TestRegisterStartPipCallback g_timer1=%{public}d", g_timer1);
699     if (ret != 0 || g_timer1 != 1) {
700         napi_create_int32(env, ret == 0? g_timer1: ret, &result);
701         return result;
702     }
703     OH_PictureInPicture_UnregisterStartPipCallback(controllerId, WebPipStartPipUnRegisterCallback1);
704     napi_create_int32(env, SUCCESS, &result);
705     return result;
706 }
707 
TestTwoRegisterStartPipCallback(napi_env env,napi_callback_info info)708 static napi_value TestTwoRegisterStartPipCallback(napi_env env, napi_callback_info info)
709 {
710     size_t argc = 1;
711     napi_value args[1] = { nullptr };
712     uint32_t mainWindowId;
713     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
714     napi_get_value_uint32(env, args[0], &mainWindowId);
715     OH_LOG_INFO(LOG_APP, "TestTwoRegisterStartPipCallback mainWindowId =%{public}d.", mainWindowId);
716     napi_value result;
717     PictureInPicture_PipControlGroup controlGroup[1] = {
718         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
719     };
720     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
721     PictureInPicture_PipConfig pipConfig;
722     OH_PictureInPicture_CreatePipConfig(&pipConfig);
723     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
724     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
725     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
726     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
727     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
728     uint32_t controllerId = 0;
729     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
730     OH_LOG_INFO(LOG_APP, "TestTwoRegisterStartPipCallback res=%{public}d", res);
731     if (res != 0) {
732         napi_create_int32(env, res, &result);
733         return result;
734     }
735     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
736 
737     OH_PictureInPicture_RegisterStartPipCallback(controllerId, WebPipStartPipCallback1);
738     OH_PictureInPicture_RegisterStartPipCallback(controllerId, WebPipStartPipCallback2);
739 
740     int32_t ret = OH_PictureInPicture_StartPip(0);
741     OH_LOG_INFO(LOG_APP, "TestTwoRegisterStartPipCallback OH_PictureInPicture_StartPip ret=%{public}d", ret);
742 
743     ret = OH_PictureInPicture_StopPip(controllerId);
744     OH_LOG_INFO(LOG_APP, "TestTwoRegisterStartPipCallback OH_PictureInPicture_StopPip ret=%{public}d", ret);
745     ret = OH_PictureInPicture_DeletePip(controllerId);
746     OH_LOG_INFO(LOG_APP, "TestTwoRegisterStartPipCallback OH_PictureInPicture_DeletePip ret=%{public}d", ret);
747 
748     OH_LOG_INFO(LOG_APP, "TestTwoRegisterStartPipCallback g_timer1=%{public}d", g_timer1);
749     OH_LOG_INFO(LOG_APP, "TestTwoRegisterStartPipCallback g_timer2=%{public}d", g_timer2);
750     if (ret != 0 || g_timer1 != 1 || g_timer2 != 1) {
751         napi_create_int32(env, ret == 0? (g_timer1 == 1? g_timer2: g_timer1): ret, &result);
752         return result;
753     }
754     OH_PictureInPicture_UnregisterStartPipCallback(controllerId, WebPipStartPipUnRegisterCallback1);
755     OH_PictureInPicture_UnregisterStartPipCallback(controllerId, WebPipStartPipUnRegisterCallback2);
756     napi_create_int32(env, SUCCESS, &result);
757     return result;
758 }
759 
TestUnregisterStartPipCallback(napi_env env,napi_callback_info info)760 static napi_value TestUnregisterStartPipCallback(napi_env env, napi_callback_info info)
761 {
762     size_t argc = 1;
763     napi_value args[1] = { nullptr };
764     uint32_t mainWindowId;
765     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
766     napi_get_value_uint32(env, args[0], &mainWindowId);
767     OH_LOG_INFO(LOG_APP, "TestUnregisterStartPipCallback mainWindowId =%{public}d.", mainWindowId);
768     napi_value result;
769     PictureInPicture_PipControlGroup controlGroup[1] = {
770         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
771     };
772     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
773     PictureInPicture_PipConfig pipConfig;
774     OH_PictureInPicture_CreatePipConfig(&pipConfig);
775     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
776     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
777     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
778     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
779     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
780     uint32_t controllerId = 0;
781     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
782     OH_LOG_INFO(LOG_APP, "TestUnregisterStartPipCallback res=%{public}d", res);
783     if (res != 0) {
784         napi_create_int32(env, res, &result);
785         return result;
786     }
787     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
788 
789     OH_PictureInPicture_RegisterStartPipCallback(controllerId, WebPipStartPipCallback1);
790     OH_PictureInPicture_RegisterStartPipCallback(controllerId, WebPipStartPipCallback2);
791     OH_PictureInPicture_UnregisterStartPipCallback(controllerId, WebPipStartPipUnRegisterCallback1);
792 
793     int32_t ret = OH_PictureInPicture_StartPip(0);
794     OH_LOG_INFO(LOG_APP, "TestUnregisterStartPipCallback OH_PictureInPicture_StartPip ret=%{public}d", ret);
795 
796     ret = OH_PictureInPicture_StopPip(controllerId);
797     OH_LOG_INFO(LOG_APP, "TestUnregisterStartPipCallback OH_PictureInPicture_StopPip ret=%{public}d", ret);
798     ret = OH_PictureInPicture_DeletePip(controllerId);
799     OH_LOG_INFO(LOG_APP, "TestUnregisterStartPipCallback OH_PictureInPicture_DeletePip ret=%{public}d", ret);
800 
801     OH_LOG_INFO(LOG_APP, "TestUnregisterStartPipCallback g_timer1=%{public}d", g_timer1);
802     OH_LOG_INFO(LOG_APP, "TestUnregisterStartPipCallback g_timer2=%{public}d", g_timer2);
803     if (ret != 0 || g_timer1 != 0 || g_timer2 != 1) {
804         napi_create_int32(env, ret == 0? (g_timer1 == 0? g_timer2: g_timer1): ret, &result);
805         return result;
806     }
807     OH_PictureInPicture_UnregisterStartPipCallback(controllerId, WebPipStartPipUnRegisterCallback2);
808     napi_create_int32(env, SUCCESS, &result);
809     return result;
810 }
811 
TestUnregisterAllStartPipCallbacks(napi_env env,napi_callback_info info)812 static napi_value TestUnregisterAllStartPipCallbacks(napi_env env, napi_callback_info info)
813 {
814     size_t argc = 1;
815     napi_value args[1] = { nullptr };
816     uint32_t mainWindowId;
817     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
818     napi_get_value_uint32(env, args[0], &mainWindowId);
819     OH_LOG_INFO(LOG_APP, "TestUnregisterAllStartPipCallbacks mainWindowId =%{public}d.", mainWindowId);
820     napi_value result;
821     PictureInPicture_PipControlGroup controlGroup[1] = {
822         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
823     };
824     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
825     PictureInPicture_PipConfig pipConfig;
826     OH_PictureInPicture_CreatePipConfig(&pipConfig);
827     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
828     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
829     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
830     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
831     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
832     uint32_t controllerId = 0;
833     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
834     OH_LOG_INFO(LOG_APP, "TestUnregisterAllStartPipCallbacks res=%{public}d", res);
835     if (res != 0) {
836         napi_create_int32(env, res, &result);
837         return result;
838     }
839     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
840 
841     OH_PictureInPicture_RegisterStartPipCallback(controllerId, WebPipStartPipCallback1);
842     OH_PictureInPicture_RegisterStartPipCallback(controllerId, WebPipStartPipCallback2);
843     OH_PictureInPicture_UnregisterAllStartPipCallbacks(controllerId);
844 
845     int32_t ret = OH_PictureInPicture_StartPip(0);
846     OH_LOG_INFO(LOG_APP, "TestUnregisterAllStartPipCallbacks OH_PictureInPicture_StartPip ret=%{public}d", ret);
847 
848     ret = OH_PictureInPicture_StopPip(controllerId);
849     OH_LOG_INFO(LOG_APP, "TestUnregisterAllStartPipCallbacks OH_PictureInPicture_StopPip ret=%{public}d", ret);
850     ret = OH_PictureInPicture_DeletePip(controllerId);
851     OH_LOG_INFO(LOG_APP, "TestUnregisterAllStartPipCallbacks OH_PictureInPicture_DeletePip ret=%{public}d", ret);
852 
853     OH_LOG_INFO(LOG_APP, "TestUnregisterStartPipCallback g_timer1=%{public}d", g_timer1);
854     OH_LOG_INFO(LOG_APP, "TestUnregisterStartPipCallback g_timer2=%{public}d", g_timer2);
855     if (ret != 0 || g_timer1 != 0 || g_timer2 != 0) {
856         napi_create_int32(env, ret == 0? (g_timer1 == 0? g_timer2: g_timer1): ret, &result);
857         return result;
858     }
859     napi_create_int32(env, SUCCESS, &result);
860     return result;
861 }
862 
WebPipResizeCallback1(uint32_t controllerId,uint32_t width,uint32_t height,double scale)863 void WebPipResizeCallback1(uint32_t controllerId, uint32_t width, uint32_t height, double scale)
864 {
865     g_timer3++;
866     OH_LOG_INFO(LOG_APP, "WebPipResizeCallback1 controllerId=%{public}lu.", controllerId);
867     OH_LOG_INFO(LOG_APP, "WebPipResizeCallback1 width=%{public}lu.", width);
868     OH_LOG_INFO(LOG_APP, "WebPipResizeCallback1 height=%{public}lu.", height);
869     OH_LOG_INFO(LOG_APP, "WebPipResizeCallback1 scale=%{public}lu.", scale);
870 }
871 
WebPipResizeUnRegisterCallback1(uint32_t controllerId,uint32_t width,uint32_t height,double scale)872 void WebPipResizeUnRegisterCallback1(uint32_t controllerId, uint32_t width, uint32_t height, double scale)
873 {
874     g_timer3--;
875     OH_LOG_INFO(LOG_APP, "WebPipResizeUnRegisterCallback1 controllerId=%{public}lu.", controllerId);
876     OH_LOG_INFO(LOG_APP, "WebPipResizeUnRegisterCallback1 width=%{public}lu.", width);
877     OH_LOG_INFO(LOG_APP, "WebPipResizeUnRegisterCallback1 height=%{public}lu.", height);
878     OH_LOG_INFO(LOG_APP, "WebPipResizeUnRegisterCallback1 scale=%{public}lu.", scale);
879 }
880 
WebPipResizeCallback2(uint32_t controllerId,uint32_t width,uint32_t height,double scale)881 void WebPipResizeCallback2(uint32_t controllerId, uint32_t width, uint32_t height, double scale)
882 {
883     g_timer4++;
884     OH_LOG_INFO(LOG_APP, "WebPipResizeCallback2 controllerId=%{public}lu.", controllerId);
885     OH_LOG_INFO(LOG_APP, "WebPipResizeCallback2 width=%{public}lu.", width);
886     OH_LOG_INFO(LOG_APP, "WebPipResizeCallback2 height=%{public}lu.", height);
887     OH_LOG_INFO(LOG_APP, "WebPipResizeCallback2 scale=%{public}lu.", scale);
888 }
889 
WebPipResizeUnRegisterCallback2(uint32_t controllerId,uint32_t width,uint32_t height,double scale)890 void WebPipResizeUnRegisterCallback2(uint32_t controllerId, uint32_t width, uint32_t height, double scale)
891 {
892     g_timer4--;
893     OH_LOG_INFO(LOG_APP, "WebPipResizeUnRegisterCallback2 controllerId=%{public}lu.", controllerId);
894     OH_LOG_INFO(LOG_APP, "WebPipResizeUnRegisterCallback2 width=%{public}lu.", width);
895     OH_LOG_INFO(LOG_APP, "WebPipResizeUnRegisterCallback2 height=%{public}lu.", height);
896     OH_LOG_INFO(LOG_APP, "WebPipResizeUnRegisterCallback2 scale=%{public}lu.", scale);
897 }
898 
TestRegisterResizeListener(napi_env env,napi_callback_info info)899 static napi_value TestRegisterResizeListener(napi_env env, napi_callback_info info)
900 {
901     size_t argc = 1;
902     napi_value args[1] = { nullptr };
903     uint32_t mainWindowId;
904     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
905     napi_get_value_uint32(env, args[0], &mainWindowId);
906     OH_LOG_INFO(LOG_APP, "TestRegisterResizeListener mainWindowId =%{public}d.", mainWindowId);
907     napi_value result;
908     PictureInPicture_PipControlGroup controlGroup[1] = {
909         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
910     };
911     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
912     PictureInPicture_PipConfig pipConfig;
913     OH_PictureInPicture_CreatePipConfig(&pipConfig);
914     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
915     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
916     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
917     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
918     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
919     uint32_t controllerId = 0;
920     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
921     OH_LOG_INFO(LOG_APP, "TestRegisterResizeListener res=%{public}d", res);
922     if (res != 0) {
923         napi_create_int32(env, res, &result);
924         return result;
925     }
926     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
927 
928     OH_PictureInPicture_RegisterResizeListener(controllerId, WebPipResizeCallback1);
929 
930     int32_t ret = OH_PictureInPicture_StartPip(0);
931     OH_LOG_INFO(LOG_APP, "TestRegisterResizeListener OH_PictureInPicture_StartPip ret=%{public}d", ret);
932     ret = OH_PictureInPicture_UpdatePipContentSize(controllerId, WIDTH, HEIGHT);
933     OH_LOG_INFO(LOG_APP, "TestRegisterResizeListener OH_PictureInPicture_UpdatePipContentSize ret=%{public}d", ret);
934 
935     ret = OH_PictureInPicture_StopPip(controllerId);
936     OH_LOG_INFO(LOG_APP, "TestRegisterResizeListener OH_PictureInPicture_StopPip ret=%{public}d", ret);
937     ret = OH_PictureInPicture_DeletePip(controllerId);
938     OH_LOG_INFO(LOG_APP, "TestRegisterResizeListener OH_PictureInPicture_DeletePip ret=%{public}d", ret);
939 
940     OH_LOG_INFO(LOG_APP, "TestRegisterResizeListener g_timer3=%{public}d", g_timer3);
941     if (ret != 0 || g_timer3 != 1) {
942         napi_create_int32(env, ret == 0? g_timer3: ret, &result);
943         return result;
944     }
945     OH_PictureInPicture_UnregisterResizeListener(controllerId, WebPipResizeUnRegisterCallback1);
946     napi_create_int32(env, SUCCESS, &result);
947     return result;
948 }
949 
TestTwoRegisterResizeListener(napi_env env,napi_callback_info info)950 static napi_value TestTwoRegisterResizeListener(napi_env env, napi_callback_info info)
951 {
952     size_t argc = 1;
953     napi_value args[1] = { nullptr };
954     uint32_t mainWindowId;
955     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
956     napi_get_value_uint32(env, args[0], &mainWindowId);
957     OH_LOG_INFO(LOG_APP, "TestTwoRegisterResizeListener mainWindowId =%{public}d.", mainWindowId);
958     napi_value result;
959     PictureInPicture_PipControlGroup controlGroup[1] = {
960         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
961     };
962     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
963     PictureInPicture_PipConfig pipConfig;
964     OH_PictureInPicture_CreatePipConfig(&pipConfig);
965     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
966     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
967     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
968     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
969     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
970     uint32_t controllerId = 0;
971     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
972     OH_LOG_INFO(LOG_APP, "TestTwoRegisterResizeListener res=%{public}d", res);
973     if (res != 0) {
974         napi_create_int32(env, res, &result);
975         return result;
976     }
977     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
978 
979     OH_PictureInPicture_RegisterResizeListener(controllerId, WebPipResizeCallback1);
980     OH_PictureInPicture_RegisterResizeListener(controllerId, WebPipResizeCallback2);
981 
982     int32_t ret = OH_PictureInPicture_StartPip(0);
983     OH_LOG_INFO(LOG_APP, "TestTwoRegisterResizeListener OH_PictureInPicture_StartPip ret=%{public}d", ret);
984     ret = OH_PictureInPicture_UpdatePipContentSize(controllerId, WIDTH, HEIGHT);
985     OH_LOG_INFO(LOG_APP, "TestTwoRegisterResizeListener OH_PictureInPicture_UpdatePipContentSize ret=%{public}d", ret);
986 
987     ret = OH_PictureInPicture_StopPip(controllerId);
988     OH_LOG_INFO(LOG_APP, "TestTwoRegisterResizeListener OH_PictureInPicture_StopPip ret=%{public}d", ret);
989     ret = OH_PictureInPicture_DeletePip(controllerId);
990     OH_LOG_INFO(LOG_APP, "TestTwoRegisterResizeListener OH_PictureInPicture_DeletePip ret=%{public}d", ret);
991 
992     OH_LOG_INFO(LOG_APP, "TestTwoRegisterResizeListener g_timer3=%{public}d", g_timer3);
993     OH_LOG_INFO(LOG_APP, "TestTwoRegisterResizeListener g_timer4=%{public}d", g_timer4);
994     if (ret != 0 || g_timer3 != 1 || g_timer4 != 1) {
995         napi_create_int32(env, ret == 0? (g_timer3 == 1? g_timer4: g_timer3): ret, &result);
996         return result;
997     }
998     OH_PictureInPicture_UnregisterResizeListener(controllerId, WebPipResizeUnRegisterCallback1);
999     OH_PictureInPicture_UnregisterResizeListener(controllerId, WebPipResizeUnRegisterCallback2);
1000     napi_create_int32(env, SUCCESS, &result);
1001     return result;
1002 }
1003 
TestUnregisterResizeListener(napi_env env,napi_callback_info info)1004 static napi_value TestUnregisterResizeListener(napi_env env, napi_callback_info info)
1005 {
1006     size_t argc = 1;
1007     napi_value args[1] = { nullptr };
1008     uint32_t mainWindowId;
1009     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1010     napi_get_value_uint32(env, args[0], &mainWindowId);
1011     OH_LOG_INFO(LOG_APP, "TestUnregisterResizeListener mainWindowId =%{public}d.", mainWindowId);
1012     napi_value result;
1013     PictureInPicture_PipControlGroup controlGroup[1] = {
1014         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
1015     };
1016     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
1017     PictureInPicture_PipConfig pipConfig;
1018     OH_PictureInPicture_CreatePipConfig(&pipConfig);
1019     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
1020     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
1021     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
1022     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
1023     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
1024     uint32_t controllerId = 0;
1025     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
1026     OH_LOG_INFO(LOG_APP, "TestUnregisterResizeListener res=%{public}d", res);
1027     if (res != 0) {
1028         napi_create_int32(env, res, &result);
1029         return result;
1030     }
1031     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
1032 
1033     OH_PictureInPicture_RegisterResizeListener(controllerId, WebPipResizeCallback1);
1034     OH_PictureInPicture_RegisterResizeListener(controllerId, WebPipResizeCallback2);
1035     OH_PictureInPicture_UnregisterResizeListener(controllerId, WebPipResizeUnRegisterCallback1);
1036 
1037     int32_t ret = OH_PictureInPicture_StartPip(0);
1038     OH_LOG_INFO(LOG_APP, "TestUnregisterResizeListener OH_PictureInPicture_StartPip ret=%{public}d", ret);
1039     ret = OH_PictureInPicture_UpdatePipContentSize(controllerId, WIDTH, HEIGHT);
1040     OH_LOG_INFO(LOG_APP, "TestUnregisterResizeListener OH_PictureInPicture_UpdatePipContentSize ret=%{public}d", ret);
1041 
1042     ret = OH_PictureInPicture_StopPip(controllerId);
1043     OH_LOG_INFO(LOG_APP, "TestUnregisterResizeListener OH_PictureInPicture_StopPip ret=%{public}d", ret);
1044     ret = OH_PictureInPicture_DeletePip(controllerId);
1045     OH_LOG_INFO(LOG_APP, "TestUnregisterResizeListener OH_PictureInPicture_DeletePip ret=%{public}d", ret);
1046 
1047     OH_LOG_INFO(LOG_APP, "TestUnregisterResizeListener g_timer3=%{public}d", g_timer3);
1048     OH_LOG_INFO(LOG_APP, "TestUnregisterResizeListener g_timer4=%{public}d", g_timer4);
1049     if (ret != 0 || g_timer3 != 0 || g_timer4 != 1) {
1050         napi_create_int32(env, ret == 0? (g_timer3 == 0? g_timer4: g_timer3): ret, &result);
1051         return result;
1052     }
1053     OH_PictureInPicture_UnregisterResizeListener(controllerId, WebPipResizeUnRegisterCallback2);
1054     napi_create_int32(env, SUCCESS, &result);
1055     return result;
1056 }
1057 
TestUnregisterAllResizeListeners(napi_env env,napi_callback_info info)1058 static napi_value TestUnregisterAllResizeListeners(napi_env env, napi_callback_info info)
1059 {
1060     size_t argc = 1;
1061     napi_value args[1] = { nullptr };
1062     uint32_t mainWindowId;
1063     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1064     napi_get_value_uint32(env, args[0], &mainWindowId);
1065     OH_LOG_INFO(LOG_APP, "TestUnregisterAllResizeListeners mainWindowId =%{public}d.", mainWindowId);
1066     napi_value result;
1067     PictureInPicture_PipControlGroup controlGroup[1] = {
1068         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
1069     };
1070     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
1071     PictureInPicture_PipConfig pipConfig;
1072     OH_PictureInPicture_CreatePipConfig(&pipConfig);
1073     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
1074     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
1075     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
1076     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
1077     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
1078     uint32_t controllerId = 0;
1079     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
1080     OH_LOG_INFO(LOG_APP, "TestUnregisterAllResizeListeners res=%{public}d", res);
1081     if (res != 0) {
1082         napi_create_int32(env, res, &result);
1083         return result;
1084     }
1085     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
1086 
1087     OH_PictureInPicture_RegisterResizeListener(controllerId, WebPipResizeCallback1);
1088     OH_PictureInPicture_RegisterResizeListener(controllerId, WebPipResizeCallback1);
1089     OH_PictureInPicture_UnregisterAllResizeListeners(controllerId);
1090 
1091     int32_t ret = OH_PictureInPicture_StartPip(0);
1092     OH_LOG_INFO(LOG_APP, "TestUnregisterAllResizeListeners OH_PictureInPicture_StartPip ret=%{public}d", ret);
1093     ret = OH_PictureInPicture_UpdatePipContentSize(controllerId, WIDTH, HEIGHT);
1094     OH_LOG_INFO(LOG_APP, "TestUnregisterAllResizeListeners UpdatePipContentSize ret=%{public}d", ret);
1095 
1096     ret = OH_PictureInPicture_StopPip(controllerId);
1097     OH_LOG_INFO(LOG_APP, "TestUnregisterAllResizeListeners OH_PictureInPicture_StopPip ret=%{public}d", ret);
1098     ret = OH_PictureInPicture_DeletePip(controllerId);
1099     OH_LOG_INFO(LOG_APP, "TestUnregisterAllResizeListeners OH_PictureInPicture_DeletePip ret=%{public}d", ret);
1100 
1101     OH_LOG_INFO(LOG_APP, "TestUnregisterAllResizeListeners g_timer3=%{public}d", g_timer3);
1102     OH_LOG_INFO(LOG_APP, "TestUnregisterAllResizeListeners g_timer4=%{public}d", g_timer4);
1103     if (ret != 0 || g_timer3 != 0 || g_timer4 != 0) {
1104         napi_create_int32(env, ret == 0? (g_timer3 == 0? g_timer4: g_timer3): ret, &result);
1105         return result;
1106     }
1107     napi_create_int32(env, SUCCESS, &result);
1108     return result;
1109 }
1110 
WebPipControlEventCallback1(uint32_t controllerId,PictureInPicture_PipControlType controlType,PictureInPicture_PipControlStatus status)1111 void WebPipControlEventCallback1(uint32_t controllerId, PictureInPicture_PipControlType controlType,
1112     PictureInPicture_PipControlStatus status)
1113 {
1114     g_timer5++;
1115     OH_LOG_INFO(LOG_APP, "WebPipControlEventCallback1 controllerId=%{public}lu.", controllerId);
1116     OH_LOG_INFO(LOG_APP, "WebPipControlEventCallback1 controlType=%{public}lu.", controlType);
1117     OH_LOG_INFO(LOG_APP, "WebPipControlEventCallback1 status=%{public}lu.", status);
1118 }
1119 
WebPipControlEventUnRegisterCallback1(uint32_t controllerId,PictureInPicture_PipControlType controlType,PictureInPicture_PipControlStatus status)1120 void WebPipControlEventUnRegisterCallback1(uint32_t controllerId, PictureInPicture_PipControlType controlType,
1121     PictureInPicture_PipControlStatus status)
1122 {
1123     g_timer5--;
1124     OH_LOG_INFO(LOG_APP, "WebPipControlEventUnRegisterCallback1 controllerId=%{public}lu.", controllerId);
1125     OH_LOG_INFO(LOG_APP, "WebPipControlEventUnRegisterCallback1 controlType=%{public}lu.", controlType);
1126     OH_LOG_INFO(LOG_APP, "WebPipControlEventUnRegisterCallback1 status=%{public}lu.", status);
1127 }
1128 
WebPipControlEventCallback2(uint32_t controllerId,PictureInPicture_PipControlType controlType,PictureInPicture_PipControlStatus status)1129 void WebPipControlEventCallback2(uint32_t controllerId, PictureInPicture_PipControlType controlType,
1130     PictureInPicture_PipControlStatus status)
1131 {
1132     g_timer6++;
1133     OH_LOG_INFO(LOG_APP, "WebPipControlEventCallback2 controllerId=%{public}lu.", controllerId);
1134     OH_LOG_INFO(LOG_APP, "WebPipControlEventCallback2 controlType=%{public}lu.", controlType);
1135     OH_LOG_INFO(LOG_APP, "WebPipControlEventCallback2 status=%{public}lu.", status);
1136 }
1137 
WebPipControlEventUnRegisterCallback2(uint32_t controllerId,PictureInPicture_PipControlType controlType,PictureInPicture_PipControlStatus status)1138 void WebPipControlEventUnRegisterCallback2(uint32_t controllerId, PictureInPicture_PipControlType controlType,
1139     PictureInPicture_PipControlStatus status)
1140 {
1141     g_timer6--;
1142     OH_LOG_INFO(LOG_APP, "WebPipControlEventUnRegisterCallback2 controllerId=%{public}lu.", controllerId);
1143     OH_LOG_INFO(LOG_APP, "WebPipControlEventUnRegisterCallback2 controlType=%{public}lu.", controlType);
1144     OH_LOG_INFO(LOG_APP, "WebPipControlEventUnRegisterCallback2 status=%{public}lu.", status);
1145 }
1146 
TestRegisterControlEventListener(napi_env env,napi_callback_info info)1147 static napi_value TestRegisterControlEventListener(napi_env env, napi_callback_info info)
1148 {
1149     size_t argc = 1;
1150     napi_value args[1] = { nullptr };
1151     uint32_t mainWindowId;
1152     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1153     napi_get_value_uint32(env, args[0], &mainWindowId);
1154     OH_LOG_INFO(LOG_APP, "TestRegisterControlEventListener mainWindowId =%{public}d.", mainWindowId);
1155     napi_value result;
1156     PictureInPicture_PipControlGroup controlGroup[1] = {
1157         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
1158     };
1159     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
1160     PictureInPicture_PipConfig pipConfig;
1161     OH_PictureInPicture_CreatePipConfig(&pipConfig);
1162     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
1163     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
1164     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
1165     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
1166     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
1167     uint32_t controllerId = 0;
1168     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
1169     OH_LOG_INFO(LOG_APP, "TestRegisterControlEventListener res=%{public}d", res);
1170     if (res != 0) {
1171         napi_create_int32(env, res, &result);
1172         return result;
1173     }
1174     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
1175 
1176     OH_PictureInPicture_RegisterControlEventListener(controllerId, WebPipControlEventCallback1);
1177 
1178     int32_t ret = OH_PictureInPicture_StartPip(0);
1179     OH_LOG_INFO(LOG_APP, "TestRegisterControlEventListener OH_PictureInPicture_StartPip ret=%{public}d", ret);
1180     ret = OH_PictureInPicture_UpdatePipContentSize(controllerId, WIDTH, HEIGHT);
1181     OH_LOG_INFO(LOG_APP, "TestRegisterControlEventListener UpdatePipContentSize ret=%{public}d", ret);
1182 
1183     ret = OH_PictureInPicture_StopPip(controllerId);
1184     OH_LOG_INFO(LOG_APP, "TestRegisterControlEventListener OH_PictureInPicture_StopPip ret=%{public}d", ret);
1185     ret = OH_PictureInPicture_DeletePip(controllerId);
1186     OH_LOG_INFO(LOG_APP, "OH_PictureInPicture_DeletePip ret=%{public}d", ret);
1187 
1188     OH_LOG_INFO(LOG_APP, "TestRegisterControlEventListener g_timer5=%{public}d", g_timer5);
1189     if (ret != 0 || g_timer5 != 1) {
1190         napi_create_int32(env, ret == 0? g_timer5: ret, &result);
1191         return result;
1192     }
1193     OH_PictureInPicture_UnregisterControlEventListener(controllerId, WebPipControlEventUnRegisterCallback1);
1194     napi_create_int32(env, SUCCESS, &result);
1195     return result;
1196 }
1197 
TestUnregisterControlEventListener(napi_env env,napi_callback_info info)1198 static napi_value TestUnregisterControlEventListener(napi_env env, napi_callback_info info)
1199 {
1200     size_t argc = 1;
1201     napi_value args[1] = { nullptr };
1202     uint32_t mainWindowId;
1203     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1204     napi_get_value_uint32(env, args[0], &mainWindowId);
1205     OH_LOG_INFO(LOG_APP, "TestUnregisterControlEventListener mainWindowId =%{public}d.", mainWindowId);
1206     napi_value result;
1207     PictureInPicture_PipControlGroup controlGroup[1] = {
1208         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
1209     };
1210     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
1211     PictureInPicture_PipConfig pipConfig;
1212     OH_PictureInPicture_CreatePipConfig(&pipConfig);
1213     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
1214     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
1215     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
1216     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
1217     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
1218     uint32_t controllerId = 0;
1219     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
1220     OH_LOG_INFO(LOG_APP, "TestUnregisterControlEventListener res=%{public}d", res);
1221     if (res != 0) {
1222         napi_create_int32(env, res, &result);
1223         return result;
1224     }
1225     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
1226 
1227     OH_PictureInPicture_RegisterControlEventListener(controllerId, WebPipControlEventCallback1);
1228     OH_PictureInPicture_RegisterControlEventListener(controllerId, WebPipControlEventCallback2);
1229     OH_PictureInPicture_UnregisterControlEventListener(controllerId, WebPipControlEventUnRegisterCallback1);
1230 
1231     int32_t ret = OH_PictureInPicture_StartPip(0);
1232     OH_LOG_INFO(LOG_APP, "TestUnregisterControlEventListener OH_PictureInPicture_StartPip ret=%{public}d", ret);
1233     ret = OH_PictureInPicture_UpdatePipContentSize(controllerId, WIDTH, HEIGHT);
1234     OH_LOG_INFO(LOG_APP, "TestUnregisterControlEventListener UpdatePipContentSize ret=%{public}d", ret);
1235 
1236     ret = OH_PictureInPicture_StopPip(controllerId);
1237     OH_LOG_INFO(LOG_APP, "TestUnregisterControlEventListener OH_PictureInPicture_StopPip ret=%{public}d", ret);
1238     ret = OH_PictureInPicture_DeletePip(controllerId);
1239     OH_LOG_INFO(LOG_APP, "TestUnregisterControlEventListener OH_PictureInPicture_DeletePip ret=%{public}d", ret);
1240 
1241     OH_LOG_INFO(LOG_APP, "TestUnregisterControlEventListener g_timer5=%{public}d", g_timer5);
1242     OH_LOG_INFO(LOG_APP, "TestUnregisterControlEventListener g_timer6=%{public}d", g_timer6);
1243     if (ret != 0 || g_timer5 != 0 || g_timer6 != 1) {
1244         napi_create_int32(env, ret == 0? (g_timer5 == 0? g_timer6: g_timer5): ret, &result);
1245         return result;
1246     }
1247     OH_PictureInPicture_UnregisterControlEventListener(controllerId, WebPipControlEventUnRegisterCallback2);
1248     napi_create_int32(env, SUCCESS, &result);
1249     return result;
1250 }
1251 
TestUnregisterAllControlEventListeners(napi_env env,napi_callback_info info)1252 static napi_value TestUnregisterAllControlEventListeners(napi_env env, napi_callback_info info)
1253 {
1254     size_t argc = 1;
1255     napi_value args[1] = { nullptr };
1256     uint32_t mainWindowId;
1257     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1258     napi_get_value_uint32(env, args[0], &mainWindowId);
1259     OH_LOG_INFO(LOG_APP, "TestUnregisterAllControlEventListeners mainWindowId =%{public}d.", mainWindowId);
1260     napi_value result;
1261     PictureInPicture_PipControlGroup controlGroup[1] = {
1262         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
1263     };
1264     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
1265     PictureInPicture_PipConfig pipConfig;
1266     OH_PictureInPicture_CreatePipConfig(&pipConfig);
1267     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
1268     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
1269     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
1270     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
1271     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
1272     uint32_t controllerId = 0;
1273     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
1274     OH_LOG_INFO(LOG_APP, "TestUnregisterAllControlEventListeners res=%{public}d", res);
1275     if (res != 0) {
1276         napi_create_int32(env, res, &result);
1277         return result;
1278     }
1279     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
1280 
1281     OH_PictureInPicture_RegisterControlEventListener(controllerId, WebPipControlEventCallback1);
1282     OH_PictureInPicture_RegisterControlEventListener(controllerId, WebPipControlEventCallback2);
1283     OH_PictureInPicture_UnregisterAllControlEventListeners(controllerId);
1284 
1285     int32_t ret = OH_PictureInPicture_StartPip(0);
1286     OH_LOG_INFO(LOG_APP, "TestUnregisterAllControlEventListeners OH_PictureInPicture_StartPip ret=%{public}d", ret);
1287     ret = OH_PictureInPicture_UpdatePipContentSize(controllerId, WIDTH, HEIGHT);
1288     OH_LOG_INFO(LOG_APP, "TestUnregisterAllControlEventListeners UpdatePipContentSize ret=%{public}d", ret);
1289 
1290     ret = OH_PictureInPicture_StopPip(controllerId);
1291     OH_LOG_INFO(LOG_APP, "TestUnregisterAllControlEventListeners OH_PictureInPicture_StopPip ret=%{public}d", ret);
1292     ret = OH_PictureInPicture_DeletePip(controllerId);
1293     OH_LOG_INFO(LOG_APP, "TestUnregisterAllControlEventListeners OH_PictureInPicture_DeletePip ret=%{public}d", ret);
1294 
1295     OH_LOG_INFO(LOG_APP, "TestUnregisterAllControlEventListeners g_timer5=%{public}d", g_timer5);
1296     OH_LOG_INFO(LOG_APP, "TestUnregisterAllControlEventListeners g_timer6=%{public}d", g_timer6);
1297     if (ret != 0 || g_timer5 != 0 || g_timer6 != 0) {
1298         napi_create_int32(env, ret == 0? (g_timer5 == 0? g_timer6: g_timer5): ret, &result);
1299         return result;
1300     }
1301     napi_create_int32(env, SUCCESS, &result);
1302     return result;
1303 }
1304 
WebPipLifecycleCallback1(uint32_t controllerId,PictureInPicture_PipState state,int32_t errcode)1305 void WebPipLifecycleCallback1(uint32_t controllerId, PictureInPicture_PipState state, int32_t errcode)
1306 {
1307     g_timer7++;
1308     OH_LOG_INFO(LOG_APP, "WebPipLifecycleCallback1 controllerId=%{public}lu.", controllerId);
1309     OH_LOG_INFO(LOG_APP, "WebPipLifecycleCallback1 state=%{public}lu.", state);
1310     OH_LOG_INFO(LOG_APP, "WebPipLifecycleCallback1 errcode=%{public}lu.", errcode);
1311 }
1312 
WebPipLifecycleUnRegisterCallback1(uint32_t controllerId,PictureInPicture_PipState state,int32_t errcode)1313 void WebPipLifecycleUnRegisterCallback1(uint32_t controllerId, PictureInPicture_PipState state, int32_t errcode)
1314 {
1315     g_timer7 = g_timer7 - TWO;
1316     OH_LOG_INFO(LOG_APP, "WebPipLifecycleUnRegisterCallback1 controllerId=%{public}lu.", controllerId);
1317     OH_LOG_INFO(LOG_APP, "WebPipLifecycleUnRegisterCallback1 state=%{public}lu.", state);
1318     OH_LOG_INFO(LOG_APP, "WebPipLifecycleUnRegisterCallback1 errcode=%{public}lu.", errcode);
1319 }
1320 
WebPipLifecycleCallback2(uint32_t controllerId,PictureInPicture_PipState state,int32_t errcode)1321 void WebPipLifecycleCallback2(uint32_t controllerId, PictureInPicture_PipState state, int32_t errcode)
1322 {
1323     g_timer8++;
1324     OH_LOG_INFO(LOG_APP, "WebPipLifecycleCallback2 controllerId=%{public}lu.", controllerId);
1325     OH_LOG_INFO(LOG_APP, "WebPipLifecycleCallback2 state=%{public}lu.", state);
1326     OH_LOG_INFO(LOG_APP, "WebPipLifecycleCallback2 errcode=%{public}lu.", errcode);
1327 }
1328 
WebPipLifecycleUnRegisterCallback2(uint32_t controllerId,PictureInPicture_PipState state,int32_t errcode)1329 void WebPipLifecycleUnRegisterCallback2(uint32_t controllerId, PictureInPicture_PipState state, int32_t errcode)
1330 {
1331     g_timer8 = g_timer8 - TWO;
1332     OH_LOG_INFO(LOG_APP, "WebPipLifecycleUnRegisterCallback2 controllerId=%{public}lu.", controllerId);
1333     OH_LOG_INFO(LOG_APP, "WebPipLifecycleUnRegisterCallback2 state=%{public}lu.", state);
1334     OH_LOG_INFO(LOG_APP, "WebPipLifecycleUnRegisterCallback2 errcode=%{public}lu.", errcode);
1335 }
1336 
TestRegisterLifeCycleListener(napi_env env,napi_callback_info info)1337 static napi_value TestRegisterLifeCycleListener(napi_env env, napi_callback_info info)
1338 {
1339     size_t argc = 1;
1340     napi_value args[1] = { nullptr };
1341     uint32_t mainWindowId;
1342     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1343     napi_get_value_uint32(env, args[0], &mainWindowId);
1344     OH_LOG_INFO(LOG_APP, "TestRegisterLifeCycleListener mainWindowId =%{public}d.", mainWindowId);
1345     napi_value result;
1346     PictureInPicture_PipControlGroup controlGroup[1] = {
1347         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
1348     };
1349     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
1350     PictureInPicture_PipConfig pipConfig;
1351     OH_PictureInPicture_CreatePipConfig(&pipConfig);
1352     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
1353     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
1354     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
1355     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
1356     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
1357     uint32_t controllerId = 0;
1358     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
1359     OH_LOG_INFO(LOG_APP, "TestRegisterLifeCycleListener res=%{public}d", res);
1360     if (res != 0) {
1361         napi_create_int32(env, res, &result);
1362         return result;
1363     }
1364     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
1365 
1366     OH_PictureInPicture_RegisterLifecycleListener(controllerId, WebPipLifecycleCallback1);
1367 
1368     int32_t ret = OH_PictureInPicture_StartPip(0);
1369     OH_LOG_INFO(LOG_APP, "TestRegisterLifeCycleListener OH_PictureInPicture_StartPip ret=%{public}d", ret);
1370 
1371     ret = OH_PictureInPicture_StopPip(controllerId);
1372     OH_LOG_INFO(LOG_APP, "TestRegisterLifeCycleListener OH_PictureInPicture_StopPip ret=%{public}d", ret);
1373     ret = OH_PictureInPicture_DeletePip(controllerId);
1374     OH_LOG_INFO(LOG_APP, "TestRegisterLifeCycleListener OH_PictureInPicture_DeletePip ret=%{public}d", ret);
1375 
1376     OH_LOG_INFO(LOG_APP, "TestRegisterResizeListener g_timer7=%{public}d", g_timer7);
1377     if (ret != 0 || g_timer7 != TWO) {
1378         napi_create_int32(env, ret == 0? g_timer7: ret, &result);
1379         return result;
1380     }
1381     OH_PictureInPicture_UnregisterLifecycleListener(controllerId, WebPipLifecycleUnRegisterCallback1);
1382     napi_create_int32(env, SUCCESS, &result);
1383     return result;
1384 }
1385 
TestTwoRegisterLifeCycleListener(napi_env env,napi_callback_info info)1386 static napi_value TestTwoRegisterLifeCycleListener(napi_env env, napi_callback_info info)
1387 {
1388     size_t argc = 1;
1389     napi_value args[1] = { nullptr };
1390     uint32_t mainWindowId;
1391     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1392     napi_get_value_uint32(env, args[0], &mainWindowId);
1393     OH_LOG_INFO(LOG_APP, "TestTwoRegisterLifeCycleListener mainWindowId =%{public}d.", mainWindowId);
1394     napi_value result;
1395     PictureInPicture_PipControlGroup controlGroup[1] = {
1396         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
1397     };
1398     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
1399     PictureInPicture_PipConfig pipConfig;
1400     OH_PictureInPicture_CreatePipConfig(&pipConfig);
1401     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
1402     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
1403     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
1404     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
1405     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
1406     uint32_t controllerId = 0;
1407     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
1408     OH_LOG_INFO(LOG_APP, "TestTwoRegisterLifeCycleListener res=%{public}d", res);
1409     if (res != 0) {
1410         napi_create_int32(env, res, &result);
1411         return result;
1412     }
1413     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
1414 
1415     OH_PictureInPicture_RegisterLifecycleListener(controllerId, WebPipLifecycleCallback1);
1416     OH_PictureInPicture_RegisterLifecycleListener(controllerId, WebPipLifecycleCallback2);
1417 
1418     int32_t ret = OH_PictureInPicture_StartPip(0);
1419     OH_LOG_INFO(LOG_APP, "TestTwoRegisterLifeCycleListener OH_PictureInPicture_StartPip ret=%{public}d", ret);
1420 
1421     ret = OH_PictureInPicture_StopPip(controllerId);
1422     OH_LOG_INFO(LOG_APP, "TestTwoRegisterLifeCycleListener OH_PictureInPicture_StopPip ret=%{public}d", ret);
1423     ret = OH_PictureInPicture_DeletePip(controllerId);
1424     OH_LOG_INFO(LOG_APP, "TestTwoRegisterLifeCycleListener OH_PictureInPicture_DeletePip ret=%{public}d", ret);
1425 
1426     OH_LOG_INFO(LOG_APP, "TestTwoRegisterLifeCycleListener g_timer7=%{public}d", g_timer7);
1427     OH_LOG_INFO(LOG_APP, "TestTwoRegisterLifeCycleListener g_timer8=%{public}d", g_timer8);
1428     if (ret != 0 || g_timer7 != TWO || g_timer8 != TWO) {
1429         napi_create_int32(env, ret == 0? (g_timer7 == TWO? g_timer8: g_timer7): ret, &result);
1430         return result;
1431     }
1432     OH_PictureInPicture_UnregisterLifecycleListener(controllerId, WebPipLifecycleUnRegisterCallback1);
1433     OH_PictureInPicture_UnregisterLifecycleListener(controllerId, WebPipLifecycleUnRegisterCallback2);
1434     napi_create_int32(env, SUCCESS, &result);
1435     return result;
1436 }
1437 
TestUnregisterLifeCycleListener(napi_env env,napi_callback_info info)1438 static napi_value TestUnregisterLifeCycleListener(napi_env env, napi_callback_info info)
1439 {
1440     size_t argc = 1;
1441     napi_value args[1] = { nullptr };
1442     uint32_t mainWindowId;
1443     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1444     napi_get_value_uint32(env, args[0], &mainWindowId);
1445     OH_LOG_INFO(LOG_APP, "TestUnregisterLifeCycleListener mainWindowId =%{public}d.", mainWindowId);
1446     napi_value result;
1447     PictureInPicture_PipControlGroup controlGroup[1] = {
1448         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
1449     };
1450     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
1451     PictureInPicture_PipConfig pipConfig;
1452     OH_PictureInPicture_CreatePipConfig(&pipConfig);
1453     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
1454     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
1455     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
1456     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
1457     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
1458     uint32_t controllerId = 0;
1459     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
1460     OH_LOG_INFO(LOG_APP, "TestUnregisterLifeCycleListener res=%{public}d", res);
1461     if (res != 0) {
1462         napi_create_int32(env, res, &result);
1463         return result;
1464     }
1465     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
1466 
1467     OH_PictureInPicture_RegisterLifecycleListener(controllerId, WebPipLifecycleCallback1);
1468     OH_PictureInPicture_RegisterLifecycleListener(controllerId, WebPipLifecycleCallback2);
1469     OH_PictureInPicture_UnregisterLifecycleListener(controllerId, WebPipLifecycleUnRegisterCallback1);
1470 
1471     int32_t ret = OH_PictureInPicture_StartPip(0);
1472     OH_LOG_INFO(LOG_APP, "TestUnregisterLifeCycleListener OH_PictureInPicture_StartPip ret=%{public}d", ret);
1473 
1474     ret = OH_PictureInPicture_StopPip(controllerId);
1475     OH_LOG_INFO(LOG_APP, "TestUnregisterLifeCycleListener OH_PictureInPicture_StopPip ret=%{public}d", ret);
1476     ret = OH_PictureInPicture_DeletePip(controllerId);
1477     OH_LOG_INFO(LOG_APP, "TestUnregisterLifeCycleListener OH_PictureInPicture_DeletePip ret=%{public}d", ret);
1478 
1479     OH_LOG_INFO(LOG_APP, "TestUnregisterLifeCycleListener g_timer7=%{public}d", g_timer7);
1480     OH_LOG_INFO(LOG_APP, "TestUnregisterLifeCycleListener g_timer8=%{public}d", g_timer8);
1481     if (ret != 0 || g_timer7 != 0 || g_timer8 != TWO) {
1482         napi_create_int32(env, ret == 0? (g_timer7 == 0? g_timer8: g_timer7): ret, &result);
1483         return result;
1484     }
1485     OH_PictureInPicture_UnregisterLifecycleListener(controllerId, WebPipLifecycleUnRegisterCallback2);
1486     napi_create_int32(env, SUCCESS, &result);
1487     return result;
1488 }
1489 
TestUnregisterAllLifeCycleListeners(napi_env env,napi_callback_info info)1490 static napi_value TestUnregisterAllLifeCycleListeners(napi_env env, napi_callback_info info)
1491 {
1492     size_t argc = 1;
1493     napi_value args[1] = { nullptr };
1494     uint32_t mainWindowId;
1495     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1496     napi_get_value_uint32(env, args[0], &mainWindowId);
1497     OH_LOG_INFO(LOG_APP, "TestUnregisterAllLifeCycleListeners mainWindowId =%{public}d.", mainWindowId);
1498     napi_value result;
1499     PictureInPicture_PipControlGroup controlGroup[1] = {
1500         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
1501     };
1502     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
1503     PictureInPicture_PipConfig pipConfig;
1504     OH_PictureInPicture_CreatePipConfig(&pipConfig);
1505     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
1506     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
1507     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
1508     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
1509     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
1510     uint32_t controllerId = 0;
1511     int32_t res = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
1512     OH_LOG_INFO(LOG_APP, "TestUnregisterAllLifeCycleListeners res=%{public}d", res);
1513     if (res != 0) {
1514         napi_create_int32(env, res, &result);
1515         return result;
1516     }
1517     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
1518 
1519     OH_PictureInPicture_RegisterLifecycleListener(controllerId, WebPipLifecycleCallback1);
1520     OH_PictureInPicture_RegisterLifecycleListener(controllerId, WebPipLifecycleCallback2);
1521     OH_PictureInPicture_UnregisterAllLifecycleListeners(controllerId);
1522 
1523     int32_t ret = OH_PictureInPicture_StartPip(0);
1524     OH_LOG_INFO(LOG_APP, "TestUnregisterAllLifeCycleListeners OH_PictureInPicture_StartPip ret=%{public}d", ret);
1525 
1526     ret = OH_PictureInPicture_StopPip(controllerId);
1527     OH_LOG_INFO(LOG_APP, "TestUnregisterAllLifeCycleListeners OH_PictureInPicture_StopPip ret=%{public}d", ret);
1528     ret = OH_PictureInPicture_DeletePip(controllerId);
1529     OH_LOG_INFO(LOG_APP, "TestUnregisterAllLifeCycleListeners OH_PictureInPicture_DeletePip ret=%{public}d", ret);
1530 
1531     OH_LOG_INFO(LOG_APP, "TestUnregisterAllLifeCycleListeners g_timer7=%{public}d", g_timer7);
1532     OH_LOG_INFO(LOG_APP, "TestUnregisterAllLifeCycleListeners g_timer8=%{public}d", g_timer8);
1533     if (ret != 0 || g_timer7 != 0 || g_timer8 != 0) {
1534         napi_create_int32(env, ret == 0? (g_timer7 == 0? g_timer8: g_timer7): ret, &result);
1535         return result;
1536     }
1537     napi_create_int32(env, SUCCESS, &result);
1538     return result;
1539 }
1540 
TestSetPipInitialSurfaceRect(napi_env env,napi_callback_info info)1541 static napi_value TestSetPipInitialSurfaceRect(napi_env env, napi_callback_info info)
1542 {
1543     size_t argc = 1;
1544     napi_value args[1] = { nullptr };
1545     uint32_t mainWindowId;
1546     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1547     napi_get_value_uint32(env, args[0], &mainWindowId);
1548     OH_LOG_INFO(LOG_APP, "TestSetPipInitialSurfaceRect mainWindowId =%{public}d.", mainWindowId);
1549     napi_value result;
1550     PictureInPicture_PipControlGroup controlGroup[1] = {
1551         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
1552     };
1553     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
1554     PictureInPicture_PipConfig pipConfig;
1555     OH_PictureInPicture_CreatePipConfig(&pipConfig);
1556     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
1557     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
1558     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
1559     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
1560     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
1561     uint32_t controllerId = 0;
1562     int32_t ret = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
1563     OH_LOG_INFO(LOG_APP, "TestSetPipInitialSurfaceRect ret=%{public}d", ret);
1564     int32_t res = OH_PictureInPicture_SetPipInitialSurfaceRect(controllerId, RECT_VALUE, RECT_VALUE,
1565         RECT_VALUE, RECT_VALUE);
1566     OH_LOG_INFO(LOG_APP, "TestSetPipInitialSurfaceRect res=%{public}d", res);
1567     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
1568     if (ret != 0 || res != 0) {
1569         napi_create_int32(env, ret == 0? res: ret, &result);
1570         return result;
1571     }
1572     napi_create_int32(env, SUCCESS, &result);
1573     return result;
1574 }
1575 
TestSetPipInitialSurfaceRectwithInvalidWidth(napi_env env,napi_callback_info info)1576 static napi_value TestSetPipInitialSurfaceRectwithInvalidWidth(napi_env env, napi_callback_info info)
1577 {
1578     size_t argc = 1;
1579     napi_value args[1] = { nullptr };
1580     uint32_t mainWindowId;
1581     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1582     napi_get_value_uint32(env, args[0], &mainWindowId);
1583     OH_LOG_INFO(LOG_APP, "TestSetPipInitialSurfaceRectwithInvalidWidth mainWindowId =%{public}d.", mainWindowId);
1584     napi_value result;
1585     PictureInPicture_PipControlGroup controlGroup[1] = {
1586         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
1587     };
1588     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
1589     PictureInPicture_PipConfig pipConfig;
1590     OH_PictureInPicture_CreatePipConfig(&pipConfig);
1591     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
1592     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
1593     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
1594     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
1595     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
1596     uint32_t controllerId = 0;
1597     int32_t ret = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
1598     OH_LOG_INFO(LOG_APP, "TestSetPipInitialSurfaceRectwithInvalidWidth ret=%{public}d", ret);
1599     int32_t res = OH_PictureInPicture_SetPipInitialSurfaceRect(controllerId, RECT_VALUE, RECT_VALUE, 0, RECT_VALUE);
1600     OH_LOG_INFO(LOG_APP, "TestSetPipInitialSurfaceRectwithInvalidWidth res=%{public}d", res);
1601     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
1602     if (ret != 0) {
1603         napi_create_int32(env, ret, &result);
1604         return result;
1605     }
1606     napi_create_int32(env, res, &result);
1607     return result;
1608 }
1609 
TestUnsetPipInitialSurfaceRect(napi_env env,napi_callback_info info)1610 static napi_value TestUnsetPipInitialSurfaceRect(napi_env env, napi_callback_info info)
1611 {
1612     size_t argc = 1;
1613     napi_value args[1] = { nullptr };
1614     uint32_t mainWindowId;
1615     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1616     napi_get_value_uint32(env, args[0], &mainWindowId);
1617     OH_LOG_INFO(LOG_APP, "TestUnsetPipInitialSurfaceRect mainWindowId =%{public}d.", mainWindowId);
1618     napi_value result;
1619     PictureInPicture_PipControlGroup controlGroup[1] = {
1620         PictureInPicture_PipControlGroup::VIDEO_PLAY_FAST_FORWARD_BACKWARD
1621     };
1622     PictureInPicture_PipTemplateType pipTemplateType = PictureInPicture_PipTemplateType::VIDEO_PLAY;
1623     PictureInPicture_PipConfig pipConfig;
1624     OH_PictureInPicture_CreatePipConfig(&pipConfig);
1625     OH_PictureInPicture_SetPipMainWindowId(pipConfig, mainWindowId);
1626     OH_PictureInPicture_SetPipTemplateType(pipConfig, pipTemplateType);
1627     OH_PictureInPicture_SetPipRect(pipConfig, NINE, SIXTEEN);
1628     OH_PictureInPicture_SetPipControlGroup(pipConfig, controlGroup, 1);
1629     OH_PictureInPicture_SetPipNapiEnv(pipConfig, env);
1630     uint32_t controllerId = 0;
1631     int32_t ret = OH_PictureInPicture_CreatePip(pipConfig, &controllerId);
1632     OH_LOG_INFO(LOG_APP, "TestUnsetPipInitialSurfaceRect ret=%{public}d", ret);
1633     int32_t res = OH_PictureInPicture_SetPipInitialSurfaceRect(controllerId, RECT_VALUE, RECT_VALUE,
1634         RECT_VALUE, RECT_VALUE);
1635     int32_t res1 = OH_PictureInPicture_UnsetPipInitialSurfaceRect(controllerId);
1636     OH_LOG_INFO(LOG_APP, "TestUnsetPipInitialSurfaceRect res=%{public}d", res);
1637     OH_LOG_INFO(LOG_APP, "TestUnsetPipInitialSurfaceRect res1=%{public}d", res1);
1638     OH_PictureInPicture_DestroyPipConfig(&pipConfig);
1639     if (ret != 0 || res1 != 0) {
1640         napi_create_int32(env, ret == 0? res1: ret, &result);
1641         return result;
1642     }
1643     napi_create_int32(env, SUCCESS, &result);
1644     return result;
1645 }
1646 
pipWindowInit(napi_env env,napi_value exports)1647 static napi_value pipWindowInit(napi_env env, napi_value exports)
1648 {
1649     napi_property_descriptor desc[] = {
1650         { "testPipTemplateTypeEnum", nullptr, TestPipTemplateTypeEnum,
1651             nullptr, nullptr, nullptr, napi_default, nullptr },
1652         { "testPipControlGroupEnum", nullptr, TestPipControlGroupEnum,
1653             nullptr, nullptr, nullptr, napi_default, nullptr },
1654         { "testPipControlTypeEnum", nullptr, TestPipControlTypeEnum,
1655             nullptr, nullptr, nullptr, napi_default, nullptr },
1656         { "testPipControlStatusEnum", nullptr, TestPipControlStatusEnum,
1657             nullptr, nullptr, nullptr, napi_default, nullptr },
1658         { "testCreatePip", nullptr, TestCreatePip, nullptr, nullptr, nullptr, napi_default, nullptr },
1659         { "testCreatePip_ControllerId_Nullptr", nullptr, TestCreatePip_ControllerId_Nullptr,
1660             nullptr, nullptr, nullptr, napi_default, nullptr },
1661         { "testCreatePip_SetPipMainWindowId_Zero", nullptr, TestCreatePip_SetPipMainWindowId_Zero,
1662             nullptr, nullptr, nullptr, napi_default, nullptr },
1663         { "testCreatePip_SetErrPipTemplateType", nullptr, TestCreatePip_SetErrPipTemplateType,
1664             nullptr, nullptr, nullptr, napi_default, nullptr },
1665         { "testStartStopPip", nullptr, TestStartStopPip, nullptr, nullptr, nullptr, napi_default, nullptr },
1666         { "testStartPipRepeat", nullptr, TestStartPipRepeat, nullptr, nullptr, nullptr, napi_default, nullptr },
1667         { "testStopPipRepeat", nullptr, TestStopPipRepeat, nullptr, nullptr, nullptr, napi_default, nullptr },
1668         { "testDeletePipWithStopPip", nullptr, TestDeletePipWithStopPip,
1669             nullptr, nullptr, nullptr, napi_default, nullptr },
1670         { "testDeletePipWithoutStopPip", nullptr, TestDeletePipWithoutStopPip,
1671             nullptr, nullptr, nullptr, napi_default, nullptr },
1672         { "testUpdatePipContentSize", nullptr, TestUpdatePipContentSize,
1673             nullptr, nullptr, nullptr, napi_default, nullptr },
1674         { "testUpdatePipContentStatus", nullptr, TestUpdatePipContentStatus,
1675             nullptr, nullptr, nullptr, napi_default, nullptr },
1676         { "testUpdatePipContentEnabled", nullptr, TestUpdatePipContentEnabled,
1677             nullptr, nullptr, nullptr, napi_default, nullptr },
1678         { "testRegisterStartPipCallback", nullptr, TestRegisterStartPipCallback,
1679             nullptr, nullptr, nullptr, napi_default, nullptr },
1680         { "testTwoRegisterStartPipCallback", nullptr, TestTwoRegisterStartPipCallback,
1681             nullptr, nullptr, nullptr, napi_default, nullptr },
1682         { "testUnregisterStartPipCallback", nullptr, TestUnregisterStartPipCallback,
1683             nullptr, nullptr, nullptr, napi_default, nullptr },
1684         { "testUnregisterAllStartPipCallbacks", nullptr, TestUnregisterAllStartPipCallbacks,
1685             nullptr, nullptr, nullptr, napi_default, nullptr },
1686         { "testRegisterResizeListener", nullptr, TestRegisterResizeListener,
1687             nullptr, nullptr, nullptr, napi_default, nullptr },
1688         { "testTwoRegisterResizeListener", nullptr, TestTwoRegisterResizeListener,
1689             nullptr, nullptr, nullptr, napi_default, nullptr },
1690         { "testUnregisterResizeListener", nullptr, TestUnregisterResizeListener,
1691             nullptr, nullptr, nullptr, napi_default, nullptr },
1692     };
1693     napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
1694     return exports;
1695 }
1696 
1697 EXTERN_C_START
Init(napi_env env,napi_value exports)1698 static napi_value Init(napi_env env, napi_value exports)
1699 {
1700     pipWindowInit(env, exports);
1701     napi_property_descriptor desc[] = {
1702         { "testUnregisterAllResizeListeners", nullptr, TestUnregisterAllResizeListeners,
1703             nullptr, nullptr, nullptr, napi_default, nullptr },
1704         { "testRegisterControlEventListener", nullptr, TestRegisterControlEventListener,
1705             nullptr, nullptr, nullptr, napi_default, nullptr },
1706         { "testUnregisterControlEventListener", nullptr, TestUnregisterControlEventListener,
1707             nullptr, nullptr, nullptr, napi_default, nullptr },
1708         { "testUnregisterAllControlEventListeners", nullptr, TestUnregisterAllControlEventListeners,
1709             nullptr, nullptr, nullptr, napi_default, nullptr },
1710         { "testRegisterLifeCycleListener", nullptr, TestRegisterLifeCycleListener,
1711             nullptr, nullptr, nullptr, napi_default, nullptr },
1712         { "testTwoRegisterLifeCycleListener", nullptr, TestTwoRegisterLifeCycleListener,
1713             nullptr, nullptr, nullptr, napi_default, nullptr },
1714         { "testUnregisterLifeCycleListener", nullptr, TestUnregisterLifeCycleListener,
1715             nullptr, nullptr, nullptr, napi_default, nullptr },
1716         { "testUnregisterAllLifeCycleListeners", nullptr, TestUnregisterAllLifeCycleListeners,
1717             nullptr, nullptr, nullptr, napi_default, nullptr },
1718         { "testSetPipInitialSurfaceRect", nullptr, TestSetPipInitialSurfaceRect,
1719             nullptr, nullptr, nullptr, napi_default, nullptr },
1720         { "testSetPipInitialSurfaceRectwithInvalidWidth", nullptr, TestSetPipInitialSurfaceRectwithInvalidWidth,
1721             nullptr, nullptr, nullptr, napi_default, nullptr },
1722         { "testUnsetPipInitialSurfaceRect", nullptr, TestUnsetPipInitialSurfaceRect,
1723             nullptr, nullptr, nullptr, napi_default, nullptr },
1724     };
1725     napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
1726     return exports;
1727 }
1728 EXTERN_C_END
1729 
1730 static napi_module demoModule = {
1731     .nm_version = 1,
1732     .nm_flags = 0,
1733     .nm_filename = nullptr,
1734     .nm_register_func = Init,
1735     .nm_modname = "entry",
1736     .nm_priv = ((void*)0),
1737     .reserved = { 0 },
1738 };
1739 
RegisterEntryModule(void)1740 extern "C" __attribute__((constructor)) void RegisterEntryModule(void)
1741 {
1742     napi_module_register(&demoModule);
1743 }
1744