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