1 /*
2 * Copyright (C) 2024 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 <cstdio>
16 #include "napi/native_api.h"
17 #include "window_manager/oh_window_comm.h"
18 #include "window_manager/oh_window.h"
19 #include "window_manager/oh_window_event_filter.h"
20 #include "multimodalinput/oh_input_manager.h"
21 #include "multimodalinput/oh_key_code.h"
22 #include <bits/alltypes.h>
23 #include <hilog/log.h>
24 #include <string>
25 #include <type_traits>
26 #include "multimedia/image_framework/image/pixelmap_native.h"
27 #include "multimedia/image_framework/image/image_packer_native.h"
28 #include "native_drawing/drawing_pixel_map.h"
29 #include <cstdint>
30 #include <memory>
31 #include <unistd.h>
32 #include <future>
33 #define Check_Napi_Create_Object_Return_If_Null(env,objValue)\
34 do{ \
35 napi_create_object((env),&(objValue)); \
36 if((objValue) == nullptr){ \
37 return nullptr; \
38 } \
39 }while (0)
40
41 static int keyCode1 = -1;
filterESC(Input_KeyEvent * event)42 static bool filterESC(Input_KeyEvent *event){
43 auto keyCode = OH_Input_GetKeyEventKeyCode(event);
44 auto actionTime = OH_Input_GetKeyEventActionTime(event);
45 auto action = OH_Input_GetKeyEventAction(event);
46 return keyCode == keyCode1;
47 }
48
49 constexpr int32_t TWO = 2;
50 constexpr int32_t THREE = 3;
51 constexpr int32_t FOUR = 4;
52 constexpr int32_t FIVE = 5;
53 constexpr int32_t SIX = 6;
54 constexpr int32_t TEN = 10;
55
filterKeyCode(napi_env env,napi_callback_info info)56 static napi_value filterKeyCode(napi_env env, napi_callback_info info){
57 size_t argc = 2;
58 napi_value args[2] = {nullptr};
59 napi_get_cb_info(env, info, &argc, args,nullptr, nullptr);
60
61 napi_valuetype valuetype0;
62 napi_typeof(env, args[0], &valuetype0);
63
64 int32_t windowId;
65 napi_get_value_int32(env, args[0], &windowId);
66 int32_t keyCode;
67 napi_get_value_int32(env, args[1], &keyCode);
68 keyCode1 = keyCode;
69 auto result = OH_NativeWindowManager_RegisterKeyEventFilter(windowId, filterESC);
70 napi_value res;
71 napi_create_int32(env, result, &res);
72 return res;
73 }
unFilterKeyCode(napi_env env,napi_callback_info info)74 static napi_value unFilterKeyCode(napi_env env, napi_callback_info info) {
75 size_t argc = 1;
76 napi_value args[1] = {nullptr};
77 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
78 napi_valuetype valuetype0;
79 napi_typeof(env, args[0], &valuetype0);
80
81 int32_t windowId;
82 napi_get_value_int32(env, args[0], &windowId);
83
84 auto result = OH_NativeWindowManager_UnregisterKeyEventFilter(windowId);
85 napi_value res;
86 napi_create_int32(env, result, &res);
87 return res;
88 }
89
IsWindowShown(napi_env env,napi_callback_info info)90 static napi_value IsWindowShown(napi_env env, napi_callback_info info) {
91 size_t argc = 1;
92 napi_value args[1] = {nullptr};
93 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
94 napi_valuetype valuetype0;
95 napi_typeof(env, args[0], &valuetype0);
96
97 int32_t windowId;
98 napi_get_value_int32(env, args[0], &windowId);
99
100 napi_value retValue;
101 napi_create_object(env,&retValue);
102 napi_value resultCode;
103 napi_value isShowWindow;
104
105 bool isShow = false;
106 int32_t resultInt32 = OH_WindowManager_IsWindowShown(static_cast<int>(windowId),&isShow);
107 napi_create_int32(env,resultInt32,&resultCode);
108 napi_create_int32(env,(int)isShow,&isShowWindow);
109 napi_set_named_property(env,retValue,"isShow",isShowWindow);
110 napi_set_named_property(env,retValue,"resultCode",resultCode);
111 return retValue;
112 }
113
ShowWindow(napi_env env,napi_callback_info info)114 static napi_value ShowWindow(napi_env env, napi_callback_info info) {
115 size_t argc = 1;
116 napi_value args[1] = {nullptr};
117 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
118 napi_valuetype valuetype0;
119 napi_typeof(env, args[0], &valuetype0);
120
121 int32_t windowId;
122 napi_get_value_int32(env, args[0], &windowId);
123
124 napi_value retValue;
125 napi_create_object(env,&retValue);
126 napi_value resultCode;
127
128 int32_t resultInt32 = OH_WindowManager_ShowWindow(static_cast<int>(windowId));
129 napi_create_int32(env,resultInt32,&resultCode);
130 napi_set_named_property(env,retValue,"resultCode",resultCode);
131 return retValue;
132 }
133
SetWindowStatusBarEnabled(napi_env env,napi_callback_info info)134 static napi_value SetWindowStatusBarEnabled(napi_env env, napi_callback_info info) {
135 size_t argc = 4;
136 napi_value args[4] = {nullptr};
137 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
138
139 int32_t windowId;
140 napi_get_value_int32(env, args[0], &windowId);
141
142 bool enabled = false;
143 napi_get_value_bool(env, args[1], &enabled);
144
145 bool enableAnimation = false;
146 napi_get_value_bool(env, args[2], &enableAnimation);
147
148 napi_value resultCode;
149
150 auto res = OH_WindowManager_SetWindowStatusBarEnabled(windowId,enabled,enableAnimation);
151 napi_create_int32(env,res,&resultCode);
152 return resultCode;
153 }
154
SetWindowNavigationBarEnabled(napi_env env,napi_callback_info info)155 static napi_value SetWindowNavigationBarEnabled(napi_env env, napi_callback_info info) {
156 size_t argc = 4;
157 napi_value args[4] = {nullptr};
158 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
159
160 int32_t windowId;
161 napi_get_value_int32(env, args[0], &windowId);
162
163 bool enabled = false;
164 napi_get_value_bool(env, args[1], &enabled);
165
166 bool enableAnimation = false;
167 napi_get_value_bool(env, args[2], &enableAnimation);
168
169 napi_value resultCode;
170
171 auto res = OH_WindowManager_SetWindowNavigationBarEnabled(windowId,enabled,enableAnimation);
172 napi_create_int32(env,res,&resultCode);
173 return resultCode;
174 }
175
SetWindowStatusBarColor(napi_env env,napi_callback_info info)176 static napi_value SetWindowStatusBarColor(napi_env env, napi_callback_info info) {
177 size_t argc = 4;
178 napi_value args[4] = {nullptr};
179 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
180
181 int32_t windowId;
182 napi_get_value_int32(env, args[0], &windowId);
183
184 int32_t color;
185 napi_get_value_int32(env, args[1], &color);
186
187 napi_value resultCode;
188
189 auto res = OH_WindowManager_SetWindowStatusBarColor(windowId,color);
190 napi_create_int32(env,res,&resultCode);
191 return resultCode;
192 }
193
CreateJsNumber(napi_env env,double value)194 inline napi_value CreateJsNumber(napi_env env,double value){
195 napi_value result = nullptr;
196 napi_create_double(env,value,&result);
197 return result;
198 }
199
200 template<class T>
ConvertFromJsValue(napi_env env,napi_value jsValue,T & value)201 bool ConvertFromJsValue(napi_env env,napi_value jsValue,T& value){
202 if(jsValue == nullptr){
203 return false;
204 }
205
206 using ValueType = std::remove_cv_t<std::remove_reference_t<T>>;
207 napi_value result = nullptr;
208 if constexpr (std::is_same_v<ValueType,bool>){
209 return napi_get_value_bool(env,jsValue,nullptr) == napi_ok;
210 }else if constexpr(std::is_arithmetic_v<ValueType>){
211 return ConvertFromJsNumber(env,jsValue,value);
212 }else if constexpr(std::is_same_v<ValueType,std::string>){
213 size_t len = 0;
214 if(napi_get_value_string_utf8(env,jsValue,nullptr,0,&len)!=napi_ok){
215 return false;
216 }
217 auto buffer = std::make_unique<char[]>(len + 1);
218 size_t strLength = 0;
219 if(napi_get_value_string_utf8(env,jsValue,buffer.get(),len+1,&strLength)==napi_ok){
220 value = buffer.get();
221 return true;
222 }
223 return false;
224 }else if constexpr(std::is_enum_v<ValueType>){
225 std::make_signed_t<ValueType> numberValue = 0;
226 if(!ConvertFromJsNumber(env,jsValue,numberValue)){
227 return true;
228 }
229 value = static_cast<ValueType>(numberValue);
230 return true;
231 }
232 return false;
233 }
234
235 template<class T>
CreateJsValue(napi_env env,const T & value)236 napi_value CreateJsValue(napi_env env,const T& value){
237 using ValueType = std::remove_cv_t<std::remove_reference_t<T>>;
238 napi_value result = nullptr;
239 if constexpr (std::is_same_v<ValueType,bool>){
240 napi_get_boolean(env,value,&result);
241 return result;
242 }else if constexpr(std::is_arithmetic_v<ValueType>){
243 return CreateJsNumber(env,value);
244 }else if constexpr(std::is_same_v<ValueType,std::string>){
245 napi_create_string_utf8(env,value.c_str(),value.length(),&result);
246 return result;
247 }else if constexpr(std::is_enum_v<ValueType>){
248 return CreateJsNumber(env,static_cast<std::make_signed_t<ValueType>>(value));
249 }else if constexpr(std::is_same_v<ValueType,const char*>){
250 (value != nullptr)?napi_create_string_utf8(env,value,strlen(value),&result):
251 napi_get_undefined(env,&result);
252 return result;
253 }else {
254 return result;
255 }
256 }
257
GetRectAndConvertToJsValue(napi_env env,const WindowManager_Rect & rect)258 napi_value GetRectAndConvertToJsValue(napi_env env, const WindowManager_Rect& rect){
259 napi_value objValue = nullptr;
260 Check_Napi_Create_Object_Return_If_Null(env,objValue);
261
262 napi_set_named_property(env,objValue,"left",CreateJsValue(env,rect.posX));
263 napi_set_named_property(env,objValue,"top",CreateJsValue(env,rect.posY));
264 napi_set_named_property(env,objValue,"width",CreateJsValue(env,rect.width));
265 napi_set_named_property(env,objValue,"height",CreateJsValue(env,rect.height));
266 return objValue;
267 }
268
ConvertAvoidAreaToJsValue(napi_env env,WindowManager_AvoidArea * avoidArea)269 napi_value ConvertAvoidAreaToJsValue(napi_env env, WindowManager_AvoidArea* avoidArea){
270 napi_value objValue = nullptr;
271 Check_Napi_Create_Object_Return_If_Null(env,objValue);
272
273 napi_set_named_property(env,objValue,"leftRect",GetRectAndConvertToJsValue(env,avoidArea->leftRect));
274 napi_set_named_property(env,objValue,"topRect",GetRectAndConvertToJsValue(env,avoidArea->topRect));
275 napi_set_named_property(env,objValue,"rightRect",GetRectAndConvertToJsValue(env,avoidArea->rightRect));
276 napi_set_named_property(env,objValue,"bottomRect",GetRectAndConvertToJsValue(env,avoidArea->bottomRect));
277 return objValue;
278 }
279
GetAvoidAreaByType(napi_env env,napi_callback_info info)280 static napi_value GetAvoidAreaByType(napi_env env, napi_callback_info info) {
281 size_t argc = 2;
282 napi_value args[2] = {nullptr};
283 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
284
285 int32_t windowId;
286 napi_get_value_int32(env, args[0], &windowId);
287
288 int32_t resultValue = 0;
289 napi_get_value_int32(env, args[1], &resultValue);
290
291 WindowManager_AvoidAreaType avoidAreaType = static_cast<WindowManager_AvoidAreaType>(resultValue);
292 WindowManager_AvoidArea* avoidArea = new WindowManager_AvoidArea();
293
294 auto res = OH_WindowManager_GetWindowAvoidArea(windowId,avoidAreaType,avoidArea);
295 if(res == 0){
296 napi_value avoidAreaObj = ConvertAvoidAreaToJsValue(env,avoidArea);
297 return avoidAreaObj;
298 }else{
299 napi_value resultValue;
300 napi_create_int32(env,res,&resultValue);
301 return resultValue;
302 }
303
304 }
305
SetBackgroundColor(napi_env env,napi_callback_info info)306 static napi_value SetBackgroundColor(napi_env env, napi_callback_info info) {
307 size_t argc = 4;
308 napi_value args[4] = {nullptr};
309 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
310
311 int32_t windowId;
312 napi_get_value_int32(env, args[0], &windowId);
313
314 std::string color;
315 ConvertFromJsValue(env,args[1],color);
316
317 auto res = OH_WindowManager_SetWindowBackgroundColor(windowId,color.c_str());
318 napi_value resultValue;
319 napi_create_int32(env,res,&resultValue);
320 return resultValue;
321 }
322
SetBrightness(napi_env env,napi_callback_info info)323 static napi_value SetBrightness(napi_env env, napi_callback_info info) {
324 size_t argc = 4;
325 napi_value args[4] = {nullptr};
326 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
327
328 int32_t windowId;
329 napi_get_value_int32(env, args[0], &windowId);
330
331 double brightness;
332 napi_get_value_double(env,args[1],&brightness);
333
334 auto res = OH_WindowManager_SetWindowBrightness(windowId,brightness);
335 napi_value resultValue;
336 napi_create_int32(env,res,&resultValue);
337 return resultValue;
338 }
339
SetKeepScreenOn(napi_env env,napi_callback_info info)340 static napi_value SetKeepScreenOn(napi_env env, napi_callback_info info) {
341 size_t argc = 4;
342 napi_value args[4] = {nullptr};
343 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
344
345 int32_t windowId;
346 napi_get_value_int32(env, args[0], &windowId);
347
348 bool isKeepScreenOn;
349 napi_get_value_bool(env,args[1],&isKeepScreenOn);
350
351 auto res = OH_WindowManager_SetWindowKeepScreenOn(windowId,isKeepScreenOn);
352 napi_value resultValue;
353 napi_create_int32(env,res,&resultValue);
354 return resultValue;
355 }
356
SetWindowPrivacyMode(napi_env env,napi_callback_info info)357 static napi_value SetWindowPrivacyMode(napi_env env, napi_callback_info info) {
358 size_t argc = 4;
359 napi_value args[4] = {nullptr};
360 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
361
362 int32_t windowId;
363 napi_get_value_int32(env, args[0], &windowId);
364
365 bool isPrivacy;
366 napi_get_value_bool(env,args[1],&isPrivacy);
367
368 auto res = OH_WindowManager_SetWindowPrivacyMode(windowId,isPrivacy);
369 napi_value resultValue;
370 napi_create_int32(env,res,&resultValue);
371 return resultValue;
372 }
373
Snapshot(napi_env env,napi_callback_info info)374 static napi_value Snapshot(napi_env env, napi_callback_info info) {
375 size_t argc = 1;
376 napi_value args[1] = {nullptr};
377 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
378
379 int32_t windowId;
380 napi_get_value_int32(env, args[0], &windowId);
381 OH_PixelmapNative* pixelMap;
382
383 OH_Pixelmap_InitializationOptions* createOpts;
384 OH_PixelmapInitializationOptions_Create(&createOpts);
385 OH_PixelmapInitializationOptions_SetWidth(createOpts,6);
386 OH_PixelmapInitializationOptions_SetHeight(createOpts,4);
387 OH_PixelmapInitializationOptions_SetPixelFormat(createOpts,PIXEL_FORMAT_RGBA_8888);
388 OH_PixelmapInitializationOptions_SetAlphaType(createOpts,PIXELMAP_ALPHA_TYPE_UNKNOWN);
389
390 auto d = OH_PixelmapNative_CreateEmptyPixelmap(createOpts,&pixelMap);
391 OH_LOG_INFO(LOG_APP,"OH_PixelmapNative_CreateEmptyPixelmap pixelMap %{public}d",pixelMap);
392
393 auto res = OH_WindowManager_Snapshot(windowId,pixelMap);
394 OH_LOG_INFO(LOG_APP,"OH_WindowManager_Snapshot res=%{public}d.",res);
395 if(res == 0){
396 napi_value pixelValue;
397 Image_ErrorCode ans = OH_PixelmapNative_ConvertPixelmapNativeToNapi(env,pixelMap,&pixelValue);
398 OH_PixelmapNative_Release(pixelMap);
399 return pixelValue;
400
401 }else{
402 napi_value resultValue;
403 napi_create_int32(env,res,&resultValue);
404 return resultValue;
405 }
406 }
407
SetWindowFocusable(napi_env env,napi_callback_info info)408 static napi_value SetWindowFocusable(napi_env env, napi_callback_info info) {
409 size_t argc = 4;
410 napi_value args[4] = {nullptr};
411 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
412
413 int32_t windowId;
414 napi_get_value_int32(env, args[0], &windowId);
415
416 bool isFocusable;
417 napi_get_value_bool(env,args[1],&isFocusable);
418
419 auto res = OH_WindowManager_SetWindowFocusable(windowId,isFocusable);
420 napi_value resultValue;
421 napi_create_int32(env,res,&resultValue);
422 return resultValue;
423 }
424
SetWindowTouchable(napi_env env,napi_callback_info info)425 static napi_value SetWindowTouchable(napi_env env, napi_callback_info info) {
426 size_t argc = 4;
427 napi_value args[4] = {nullptr};
428 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
429
430 int32_t windowId;
431 napi_get_value_int32(env, args[0], &windowId);
432
433 bool isTouchable;
434 napi_get_value_bool(env,args[1],&isTouchable);
435
436 auto res = OH_WindowManager_SetWindowTouchable(windowId,isTouchable);
437 napi_value resultValue;
438 napi_create_int32(env,res,&resultValue);
439 return resultValue;
440 }
441
CreateJsWindowPropertiesObject(napi_env env,WindowManager_WindowProperties * windowProperties)442 napi_value CreateJsWindowPropertiesObject(napi_env env, WindowManager_WindowProperties* windowProperties){
443 napi_value objValue = nullptr;
444 Check_Napi_Create_Object_Return_If_Null(env,objValue);
445
446 napi_value windowRectObj = GetRectAndConvertToJsValue(env,windowProperties->windowRect);
447 napi_set_named_property(env,objValue,"windowRect",windowRectObj);
448 napi_value drawableRectObj = GetRectAndConvertToJsValue(env,windowProperties->drawableRect);
449 napi_set_named_property(env,objValue,"drawableRect",drawableRectObj);
450 napi_set_named_property(env,objValue,"type",CreateJsValue(env,windowProperties->type));
451 napi_set_named_property(env,objValue,"isLayoutFullScreen",CreateJsValue(env,windowProperties->isLayoutFullScreen));
452 napi_set_named_property(env,objValue,"isFullScreen",CreateJsValue(env,windowProperties->isFullScreen));
453 napi_set_named_property(env,objValue,"touchable",CreateJsValue(env,windowProperties->touchable));
454 napi_set_named_property(env,objValue,"focusable",CreateJsValue(env,windowProperties->focusable));
455 napi_set_named_property(env,objValue,"isPrivacyMode",CreateJsValue(env,windowProperties->isPrivacyMode));
456 napi_set_named_property(env,objValue,"isKeepScreenOn",CreateJsValue(env,windowProperties->isKeepScreenOn));
457 napi_set_named_property(env,objValue,"brightness",CreateJsValue(env,windowProperties->brightness));
458 napi_set_named_property(env,objValue,"isTransparent",CreateJsValue(env,windowProperties->isTransparent));
459 napi_set_named_property(env,objValue,"id",CreateJsValue(env,windowProperties->id));
460 napi_set_named_property(env,objValue,"displayId",CreateJsValue(env,static_cast<int64_t>(windowProperties->displayId)));
461 return objValue;
462 }
463
GetWindowPorperties(napi_env env,napi_callback_info info)464 static napi_value GetWindowPorperties(napi_env env, napi_callback_info info) {
465 size_t argc = 4;
466 napi_value args[4] = {nullptr};
467 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
468
469 int32_t windowId;
470 napi_get_value_int32(env, args[0], &windowId);
471 WindowManager_WindowProperties* windowProperties = new WindowManager_WindowProperties();
472
473 auto res = OH_WindowManager_GetWindowProperties(windowId,windowProperties);
474 if(res == 0){
475 auto objValue = CreateJsWindowPropertiesObject(env,windowProperties);
476 return objValue;
477 }else{
478 napi_value resultValue;
479 napi_create_int32(env,res,&resultValue);
480 return resultValue;
481 }
482 }
483
484 //设置鼠标过滤函数
filterMouseEvent(Input_MouseEvent * mouseEvent)485 static bool filterMouseEvent(Input_MouseEvent* mouseEvent){
486 int32_t action = OH_Input_GetMouseEventAction(mouseEvent);
487 int32_t displayX = OH_Input_GetMouseEventDisplayX(mouseEvent);
488 int32_t displayY = OH_Input_GetMouseEventDisplayY(mouseEvent);
489 int32_t mouseButton = OH_Input_GetMouseEventButton(mouseEvent);
490 int32_t actionTime = OH_Input_GetMouseEventActionTime(mouseEvent);
491 static bool flag = false;
492 OH_LOG_INFO(LogType::LOG_APP,"testTag filterMouseEvent in action=%{public}d displayX=%{public}d "
493 "displayY=%{public}d mouseButton=%{public}d actionTime=%{public}ld ",action,displayX,displayY,mouseButton,actionTime);
494 //过滤鼠标右键按下
495 if(mouseButton == Input_MouseEventButton::MOUSE_BUTTON_RIGHT){
496 flag = true;
497
498 }else{
499 flag = false;
500 }
501 return flag;
502 }
503
registerMouseFilter(napi_env env,napi_callback_info info)504 static napi_value registerMouseFilter(napi_env env, napi_callback_info info){
505 size_t argc = 1;
506 napi_value args[1] = {nullptr};
507 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
508
509 int32_t windowId;
510 napi_get_value_int32(env, args[0], &windowId);
511
512 auto res = OH_NativeWindowManager_RegisterMouseEventFilter(windowId,filterMouseEvent);
513 napi_value resultValue;
514 napi_create_int32(env,res,&resultValue);
515 return resultValue;
516 }
517
clearMouseFilter(napi_env env,napi_callback_info info)518 static napi_value clearMouseFilter(napi_env env, napi_callback_info info){
519 size_t argc = 1;
520 napi_value args[1] = {nullptr};
521 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
522
523 int32_t windowId;
524 napi_get_value_int32(env, args[0], &windowId);
525
526 auto res = OH_NativeWindowManager_UnregisterMouseEventFilter(windowId);
527 napi_value resultValue;
528 napi_create_int32(env,res,&resultValue);
529 return resultValue;
530 }
531
532 //设置触摸过滤函数
filterTouchEvent(Input_TouchEvent * touchEvent)533 static bool filterTouchEvent(Input_TouchEvent* touchEvent){
534 int32_t action = OH_Input_GetTouchEventAction(touchEvent);
535 int32_t displayX = OH_Input_GetTouchEventDisplayX(touchEvent);
536 int32_t displayY = OH_Input_GetTouchEventDisplayY(touchEvent);
537 int32_t id = OH_Input_GetTouchEventFingerId(touchEvent);
538 int32_t actionTime = OH_Input_GetTouchEventActionTime(touchEvent);
539 static bool flag = false;
540 OH_LOG_INFO(LogType::LOG_APP,"testTag filterTouchEvent in action=%{public}d displayX=%{public}d "
541 "displayY=%{public}d mouseButton=%{public}d actionTime=%{public}ld ",action,displayX,displayY,id,actionTime);
542 //过滤触摸移动事件
543 if(action == Input_TouchEventAction::TOUCH_ACTION_MOVE){
544 flag = true;
545
546 }else{
547 flag = false;
548 }
549 return flag;
550 }
551
registerTouchFilter(napi_env env,napi_callback_info info)552 static napi_value registerTouchFilter(napi_env env, napi_callback_info info){
553 size_t argc = 1;
554 napi_value args[1] = {nullptr};
555 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
556
557 int32_t windowId;
558 napi_get_value_int32(env, args[0], &windowId);
559
560 auto res = OH_NativeWindowManager_RegisterTouchEventFilter(windowId,filterTouchEvent);
561 napi_value resultValue;
562 napi_create_int32(env,res,&resultValue);
563 return resultValue;
564 }
565
clearTouchFilter(napi_env env,napi_callback_info info)566 static napi_value clearTouchFilter(napi_env env, napi_callback_info info){
567 size_t argc = 1;
568 napi_value args[1] = {nullptr};
569 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
570
571 int32_t windowId;
572 napi_get_value_int32(env, args[0], &windowId);
573
574 auto res = OH_NativeWindowManager_UnregisterTouchEventFilter(windowId);
575 napi_value resultValue;
576 napi_create_int32(env,res,&resultValue);
577 return resultValue;
578 }
579
580
CreateJsWindowLayoutInfoObject(napi_env env,const WindowManager_Rect & rect)581 napi_value CreateJsWindowLayoutInfoObject(napi_env env,const WindowManager_Rect& rect){
582 napi_value objValue = nullptr;
583 Check_Napi_Create_Object_Return_If_Null(env,objValue);
584 napi_set_named_property(env,objValue,"rect",GetRectAndConvertToJsValue(env,rect));
585 return objValue;
586 }
587
getAllWIndowLayOutInfo(napi_env env,napi_callback_info info)588 static napi_value getAllWIndowLayOutInfo(napi_env env, napi_callback_info info){
589 size_t argc = 4;
590 napi_value args[4] = {nullptr};
591 napi_get_cb_info(env, info, &argc, args,nullptr,nullptr);
592
593 int32_t displayId;
594 napi_get_value_int32(env, args[0], &displayId);
595 WindowManager_Rect** windowLayoutInfo = (WindowManager_Rect**)malloc(sizeof(WindowManager_Rect));
596 size_t* windowLayoutInfoSize = (size_t*)malloc(sizeof(size_t));
597 auto res = OH_WindowManager_GetAllWindowLayoutInfoList(displayId,windowLayoutInfo,windowLayoutInfoSize);
598
599 if(res != 0){
600 napi_value resultValue;
601 napi_create_int32(env,res,&resultValue);
602 return resultValue;
603 }else{
604 napi_value arrayValue = nullptr;
605 napi_create_array_with_length(env,*windowLayoutInfoSize,&arrayValue);
606 for(size_t i = 0;i < *windowLayoutInfoSize;i++){
607 OH_LOG_INFO(LOG_APP,"*windowLayoutInfoSize : %{public}d",*windowLayoutInfoSize);
608 napi_set_element(env,arrayValue,i,CreateJsWindowLayoutInfoObject(env,*(windowLayoutInfo[0]+i)));
609 }
610 OH_WindowManager_ReleaseAllWindowLayoutInfoList(*windowLayoutInfo);
611 *windowLayoutInfo = NULL;
612 windowLayoutInfo = NULL;
613 return arrayValue;
614 }
615
616 }
617
TestInjectTouchEventwithTouchEventNullptr(napi_env env,napi_callback_info info)618 static napi_value TestInjectTouchEventwithTouchEventNullptr(napi_env env, napi_callback_info info)
619 {
620 size_t argc = 1;
621 napi_value args[1] = {nullptr};
622 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
623
624 int32_t windowId;
625 napi_get_value_int32(env, args[0], &windowId);
626
627 auto res = OH_WindowManager_InjectTouchEvent(windowId, nullptr, 0, 0);
628 napi_value resultValue;
629 napi_create_int32(env, res, &resultValue);
630 return resultValue;
631 }
632
TestInjectTouchEventwithTouchEventActionOutofRange(napi_env env,napi_callback_info info)633 static napi_value TestInjectTouchEventwithTouchEventActionOutofRange(napi_env env, napi_callback_info info)
634 {
635 size_t argc = 1;
636 napi_value args[1] = {nullptr};
637 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
638
639 int32_t windowId;
640 napi_get_value_int32(env, args[0], &windowId);
641
642 int32_t windowX = 0;
643 int32_t windowY = 0;
644
645 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
646 OH_Input_SetTouchEventAction(touchEvent1, TEN);
647 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
648 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
649 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
650 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
651 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
652
653 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
654 napi_value resultValue;
655 napi_create_int32(env, res, &resultValue);
656 return resultValue;
657 }
658
TestInjectTouchEventwithWindowidNotloadcontent(napi_env env,napi_callback_info info)659 static napi_value TestInjectTouchEventwithWindowidNotloadcontent(napi_env env, napi_callback_info info)
660 {
661 size_t argc = 1;
662 napi_value args[1] = {nullptr};
663 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
664
665 int32_t windowId;
666 napi_get_value_int32(env, args[0], &windowId);
667
668 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
669 OH_Input_SetTouchEventAction(touchEvent1, 1);
670 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
671 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
672 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
673 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
674 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
675 int32_t windowX = 0;
676 int32_t windowY = 0;
677 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
678 napi_value resultValue;
679 napi_create_int32(env, res, &resultValue);
680 return resultValue;
681 }
682
TestInjectTouchEventwithDestoryedSubwindow(napi_env env,napi_callback_info info)683 static napi_value TestInjectTouchEventwithDestoryedSubwindow(napi_env env, napi_callback_info info)
684 {
685 size_t argc = 1;
686 napi_value args[1] = {nullptr};
687 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
688
689 int32_t windowId;
690 napi_get_value_int32(env, args[0], &windowId);
691
692 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
693 OH_Input_SetTouchEventAction(touchEvent1, 1);
694 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
695 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
696 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
697 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
698 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
699 int32_t windowX = 0;
700 int32_t windowY = 0;
701 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
702 napi_value resultValue;
703 napi_create_int32(env, res, &resultValue);
704 return resultValue;
705 }
706
TestInjectTouchEventwithWindowXWindowYBeyondScreen(napi_env env,napi_callback_info info)707 static napi_value TestInjectTouchEventwithWindowXWindowYBeyondScreen(napi_env env, napi_callback_info info)
708 {
709 size_t argc = THREE;
710 napi_value args[THREE] = {nullptr};
711 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
712
713 int32_t windowId;
714 napi_get_value_int32(env, args[0], &windowId);
715 int32_t windowX = 0;
716 int32_t windowY = 0;
717 napi_get_value_int32(env, args[1], &windowX);
718 napi_get_value_int32(env, args[TWO], &windowY);
719
720 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
721 OH_Input_SetTouchEventAction(touchEvent1, THREE);
722 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
723 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
724 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
725 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
726 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
727
728 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
729 napi_value resultValue;
730 napi_create_int32(env, res, &resultValue);
731 return resultValue;
732 }
733
TestInjectTouchEventwithFloatWindowXWindowY(napi_env env,napi_callback_info info)734 static napi_value TestInjectTouchEventwithFloatWindowXWindowY(napi_env env, napi_callback_info info)
735 {
736 size_t argc = THREE;
737 napi_value args[THREE] = {nullptr};
738 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
739
740 int32_t windowId;
741 napi_get_value_int32(env, args[0], &windowId);
742 double windowX = 0;
743 double windowY = 0;
744 napi_get_value_double(env, args[1], &windowX);
745 napi_get_value_double(env, args[TWO], &windowY);
746
747 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
748 OH_Input_SetTouchEventAction(touchEvent1, THREE);
749 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
750 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
751 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
752 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
753 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
754
755 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
756 napi_value resultValue;
757 napi_create_int32(env, res, &resultValue);
758 return resultValue;
759 }
760
TestInjectTouchEventwithNonExistedWindowID(napi_env env,napi_callback_info info)761 static napi_value TestInjectTouchEventwithNonExistedWindowID(napi_env env, napi_callback_info info)
762 {
763 size_t argc = 1;
764 napi_value args[1] = {nullptr};
765 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
766
767 int32_t windowId;
768 napi_get_value_int32(env, args[0], &windowId);
769 int32_t windowX = 0;
770 int32_t windowY = 0;
771
772 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
773 OH_Input_SetTouchEventAction(touchEvent1, THREE);
774 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
775 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
776 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
777 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
778 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
779 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
780 napi_value resultValue;
781 napi_create_int32(env, res, &resultValue);
782 return resultValue;
783 }
784
TestInjectTouchEventwithFloatWindowID(napi_env env,napi_callback_info info)785 static napi_value TestInjectTouchEventwithFloatWindowID(napi_env env, napi_callback_info info)
786 {
787 size_t argc = THREE;
788 napi_value args[THREE] = {nullptr};
789 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
790
791 double windowId;
792 napi_get_value_double(env, args[0], &windowId);
793 int32_t windowX = 0;
794 int32_t windowY = 0;
795 napi_get_value_int32(env, args[1], &windowX);
796 napi_get_value_int32(env, args[TWO], &windowY);
797
798 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
799 // OH_WindowManager_InjectTouchEvent中触屏事件为1、3,触屏抬起 ?
800 OH_Input_SetTouchEventAction(touchEvent1, 1);
801 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
802 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
803 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
804 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
805 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
806 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
807 OH_Input_SetTouchEventAction(touchEvent1, THREE);
808 res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
809 napi_value resultValue;
810 napi_create_int32(env, res, &resultValue);
811 return resultValue;
812 }
813
TestInjectTouchEventwithNegativeWindowID(napi_env env,napi_callback_info info)814 static napi_value TestInjectTouchEventwithNegativeWindowID(napi_env env, napi_callback_info info)
815 {
816 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
817 OH_Input_SetTouchEventAction(touchEvent1, THREE);
818 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
819 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
820 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
821 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
822 OH_Input_SetTouchEventWindowId(touchEvent1, -1);
823 int32_t windowX = 0;
824 int32_t windowY = 0;
825 auto res = OH_WindowManager_InjectTouchEvent(-1, touchEvent1, windowX, windowY);
826 napi_value resultValue;
827 napi_create_int32(env, res, &resultValue);
828 return resultValue;
829 }
830
TestInjectTouchEventwithTouchActionCancel(napi_env env,napi_callback_info info)831 static napi_value TestInjectTouchEventwithTouchActionCancel(napi_env env, napi_callback_info info)
832 {
833 size_t argc = THREE;
834 napi_value args[THREE] = {nullptr};
835 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
836
837 int32_t windowId;
838 napi_get_value_int32(env, args[0], &windowId);
839 double windowX = 0;
840 double windowY = 0;
841 napi_get_value_double(env, args[1], &windowX);
842 napi_get_value_double(env, args[TWO], &windowY);
843
844 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
845 OH_Input_SetTouchEventAction(touchEvent1, 0);
846 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
847 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
848 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
849 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
850 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
851 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
852 napi_value resultValue;
853 napi_create_int32(env, res, &resultValue);
854 return resultValue;
855 }
856
TestInjectTouchEventwithTouchActionDown(napi_env env,napi_callback_info info)857 static napi_value TestInjectTouchEventwithTouchActionDown(napi_env env, napi_callback_info info)
858 {
859 size_t argc = THREE;
860 napi_value args[THREE] = {nullptr};
861 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
862
863 int32_t windowId;
864 napi_get_value_int32(env, args[0], &windowId);
865 double windowX = 0;
866 double windowY = 0;
867 napi_get_value_double(env, args[1], &windowX);
868 napi_get_value_double(env, args[TWO], &windowY);
869
870 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
871 OH_Input_SetTouchEventAction(touchEvent1, 1);
872 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
873 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
874 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
875 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
876 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
877 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
878 napi_value resultValue;
879 napi_create_int32(env, res, &resultValue);
880 return resultValue;
881 }
882
TestInjectTouchEventwithTouchActionMove(napi_env env,napi_callback_info info)883 static napi_value TestInjectTouchEventwithTouchActionMove(napi_env env, napi_callback_info info)
884 {
885 size_t argc = THREE;
886 napi_value args[THREE] = {nullptr};
887 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
888
889 int32_t windowId;
890 napi_get_value_int32(env, args[0], &windowId);
891 double windowX = 0;
892 double windowY = 0;
893 napi_get_value_double(env, args[1], &windowX);
894 napi_get_value_double(env, args[TWO], &windowY);
895
896 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
897 OH_Input_SetTouchEventAction(touchEvent1, TWO);
898 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
899 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
900 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
901 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
902 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
903 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
904 napi_value resultValue;
905 napi_create_int32(env, res, &resultValue);
906 return resultValue;
907 }
908
TestInjectTouchEventwithTouchActionUp(napi_env env,napi_callback_info info)909 static napi_value TestInjectTouchEventwithTouchActionUp(napi_env env, napi_callback_info info)
910 {
911 size_t argc = THREE;
912 napi_value args[THREE] = {nullptr};
913 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
914
915 int32_t windowId;
916 napi_get_value_int32(env, args[0], &windowId);
917 double windowX = 0;
918 double windowY = 0;
919 napi_get_value_double(env, args[1], &windowX);
920 napi_get_value_double(env, args[TWO], &windowY);
921
922 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
923 OH_Input_SetTouchEventAction(touchEvent1, THREE);
924 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
925 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
926 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
927 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
928 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
929 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
930 napi_value resultValue;
931 napi_create_int32(env, res, &resultValue);
932 return resultValue;
933 }
934
TestInjectTouchEventwithMainWindowClick(napi_env env,napi_callback_info info)935 static napi_value TestInjectTouchEventwithMainWindowClick(napi_env env, napi_callback_info info)
936 {
937 size_t argc = THREE;
938 napi_value args[THREE] = {nullptr};
939 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
940
941 int32_t windowId;
942 napi_get_value_int32(env, args[0], &windowId);
943 double windowX = 0;
944 double windowY = 0;
945 napi_get_value_double(env, args[1], &windowX);
946 napi_get_value_double(env, args[TWO], &windowY);
947
948 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
949 OH_Input_SetTouchEventAction(touchEvent1, 1);
950 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
951 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
952 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
953 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
954 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
955 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
956 OH_Input_SetTouchEventAction(touchEvent1, THREE);
957 res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
958 napi_value resultValue;
959 napi_create_int32(env, res, &resultValue);
960 return resultValue;
961 }
962
TestInjectTouchEventwithSubWindowClick(napi_env env,napi_callback_info info)963 static napi_value TestInjectTouchEventwithSubWindowClick(napi_env env, napi_callback_info info)
964 {
965 size_t argc = THREE;
966 napi_value args[THREE] = {nullptr};
967 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
968
969 int32_t windowId;
970 napi_get_value_int32(env, args[0], &windowId);
971 double windowX = 0;
972 double windowY = 0;
973 napi_get_value_double(env, args[1], &windowX);
974 napi_get_value_double(env, args[TWO], &windowY);
975
976 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
977 OH_Input_SetTouchEventAction(touchEvent1, 1);
978 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
979 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
980 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
981 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
982 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
983 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
984 OH_Input_SetTouchEventAction(touchEvent1, THREE);
985 res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
986 napi_value resultValue;
987 napi_create_int32(env, res, &resultValue);
988 return resultValue;
989 }
990
TestInjectTouchEventwithDialogWindowClick(napi_env env,napi_callback_info info)991 static napi_value TestInjectTouchEventwithDialogWindowClick(napi_env env, napi_callback_info info)
992 {
993 size_t argc = THREE;
994 napi_value args[THREE] = {nullptr};
995 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
996
997 int32_t windowId;
998 napi_get_value_int32(env, args[0], &windowId);
999 double windowX = 0;
1000 double windowY = 0;
1001 napi_get_value_double(env, args[1], &windowX);
1002 napi_get_value_double(env, args[TWO], &windowY);
1003
1004 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
1005 OH_Input_SetTouchEventAction(touchEvent1, 1);
1006 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
1007 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
1008 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
1009 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
1010 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
1011 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
1012 OH_Input_SetTouchEventAction(touchEvent1, THREE);
1013 res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
1014 napi_value resultValue;
1015 napi_create_int32(env, res, &resultValue);
1016 return resultValue;
1017 }
1018
TestInjectTouchEventwithSubWindowSlide(napi_env env,napi_callback_info info)1019 static napi_value TestInjectTouchEventwithSubWindowSlide(napi_env env, napi_callback_info info)
1020 {
1021 size_t argc = THREE;
1022 napi_value args[THREE] = {nullptr};
1023 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1024
1025 int32_t windowId;
1026 napi_get_value_int32(env, args[0], &windowId);
1027 double windowX = 0;
1028 double windowY = 0;
1029 napi_get_value_double(env, args[1], &windowX);
1030 napi_get_value_double(env, args[TWO], &windowY);
1031
1032 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
1033 OH_Input_SetTouchEventAction(touchEvent1, 1);
1034 OH_Input_SetTouchEventFingerId(touchEvent1, 0);
1035 OH_Input_SetTouchEventDisplayX(touchEvent1, windowX);
1036 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
1037 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
1038 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
1039 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
1040
1041 Input_TouchEvent *touchEvent2 = OH_Input_CreateTouchEvent();
1042 OH_Input_SetTouchEventAction(touchEvent2, 2);
1043 OH_Input_SetTouchEventFingerId(touchEvent2, 0);
1044 OH_Input_SetTouchEventDisplayX(touchEvent2, windowX+20);
1045 OH_Input_SetTouchEventDisplayY(touchEvent2, 0);
1046 OH_Input_SetTouchEventActionTime(touchEvent2, 0);
1047 OH_Input_SetTouchEventWindowId(touchEvent2, windowId);
1048 res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent2, windowX+20, windowY);
1049
1050 Input_TouchEvent *touchEvent3 = OH_Input_CreateTouchEvent();
1051 OH_Input_SetTouchEventAction(touchEvent3, 3);
1052 OH_Input_SetTouchEventFingerId(touchEvent3, 0);
1053 OH_Input_SetTouchEventDisplayX(touchEvent3, windowX+30);
1054 OH_Input_SetTouchEventDisplayY(touchEvent3, 0);
1055 OH_Input_SetTouchEventActionTime(touchEvent3, 0);
1056 OH_Input_SetTouchEventWindowId(touchEvent3, windowId);
1057 res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent3, windowX+30, windowY);
1058 napi_value resultValue;
1059 napi_create_int32(env, res, &resultValue);
1060 return resultValue;
1061 }
1062
TestInjectTouchEventwithSubWindowEdgeSlide(napi_env env,napi_callback_info info)1063 static napi_value TestInjectTouchEventwithSubWindowEdgeSlide(napi_env env, napi_callback_info info)
1064 {
1065 size_t argc = THREE;
1066 napi_value args[THREE] = {nullptr};
1067 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1068
1069 int32_t windowId;
1070 napi_get_value_int32(env, args[0], &windowId);
1071 double windowX = 0;
1072 double windowY = 0;
1073 napi_get_value_double(env, args[1], &windowX);
1074 napi_get_value_double(env, args[TWO], &windowY);
1075
1076 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
1077 OH_Input_SetTouchEventAction(touchEvent1, 1);
1078 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
1079 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
1080 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
1081 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
1082 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
1083 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
1084 OH_Input_SetTouchEventAction(touchEvent1, TWO);
1085 res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
1086 OH_Input_SetTouchEventAction(touchEvent1, THREE);
1087 res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
1088 napi_value resultValue;
1089 napi_create_int32(env, res, &resultValue);
1090 return resultValue;
1091 }
1092
1093
TestInjectTouchEventwithSubWindowButtonDownCancle(napi_env env,napi_callback_info info)1094 static napi_value TestInjectTouchEventwithSubWindowButtonDownCancle(napi_env env, napi_callback_info info)
1095 {
1096 size_t argc = THREE;
1097 napi_value args[THREE] = {nullptr};
1098 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1099
1100 int32_t windowId;
1101 napi_get_value_int32(env, args[0], &windowId);
1102 double windowX = 0;
1103 double windowY = 0;
1104 napi_get_value_double(env, args[1], &windowX);
1105 napi_get_value_double(env, args[TWO], &windowY);
1106
1107 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
1108 OH_Input_SetTouchEventAction(touchEvent1, 1);
1109 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
1110 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
1111 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
1112 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
1113 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
1114 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
1115 OH_Input_SetTouchEventAction(touchEvent1, 0);
1116 res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
1117 napi_value resultValue;
1118 napi_create_int32(env, res, &resultValue);
1119 return resultValue;
1120 }
1121
TestInjectTouchEventwithSubWindowSlideDownCancle(napi_env env,napi_callback_info info)1122 static napi_value TestInjectTouchEventwithSubWindowSlideDownCancle(napi_env env, napi_callback_info info)
1123 {
1124 size_t argc = THREE;
1125 napi_value args[THREE] = {nullptr};
1126 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1127
1128 int32_t windowId;
1129 napi_get_value_int32(env, args[0], &windowId);
1130 double windowX = 0;
1131 double windowY = 0;
1132 napi_get_value_double(env, args[1], &windowX);
1133 napi_get_value_double(env, args[TWO], &windowY);
1134
1135 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
1136 OH_Input_SetTouchEventAction(touchEvent1, 1);
1137 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
1138 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
1139 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
1140 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
1141 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
1142 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
1143 OH_Input_SetTouchEventAction(touchEvent1, 0);
1144 res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
1145 napi_value resultValue;
1146 napi_create_int32(env, res, &resultValue);
1147 return resultValue;
1148 }
1149
TestInjectTouchEventwithHideSubWindowDown(napi_env env,napi_callback_info info)1150 static napi_value TestInjectTouchEventwithHideSubWindowDown(napi_env env, napi_callback_info info)
1151 {
1152 size_t argc = THREE;
1153 napi_value args[THREE] = {nullptr};
1154 napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1155
1156 int32_t windowId;
1157 napi_get_value_int32(env, args[0], &windowId);
1158 double windowX = 0;
1159 double windowY = 0;
1160 napi_get_value_double(env, args[1], &windowX);
1161 napi_get_value_double(env, args[TWO], &windowY);
1162
1163 Input_TouchEvent *touchEvent1 = OH_Input_CreateTouchEvent();
1164 OH_Input_SetTouchEventAction(touchEvent1, 1);
1165 OH_Input_SetTouchEventFingerId(touchEvent1, 1);
1166 OH_Input_SetTouchEventDisplayX(touchEvent1, 0);
1167 OH_Input_SetTouchEventDisplayY(touchEvent1, 0);
1168 OH_Input_SetTouchEventActionTime(touchEvent1, 0);
1169 OH_Input_SetTouchEventWindowId(touchEvent1, windowId);
1170 auto res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
1171 OH_Input_SetTouchEventAction(touchEvent1, THREE);
1172 res = OH_WindowManager_InjectTouchEvent(windowId, touchEvent1, windowX, windowY);
1173 napi_value resultValue;
1174 napi_create_int32(env, res, &resultValue);
1175 return resultValue;
1176 }
1177
injectTouchEventInit(napi_env env,napi_value exports)1178 static napi_value injectTouchEventInit(napi_env env, napi_value exports)
1179 {
1180 napi_property_descriptor desc[] = {
1181 {"testInjectTouchEventwithWindowXWindowYBeyondScreen", nullptr,
1182 TestInjectTouchEventwithWindowXWindowYBeyondScreen, nullptr, nullptr, nullptr, napi_default, nullptr},
1183 {"testInjectTouchEventwithFloatWindowXWindowY", nullptr,
1184 TestInjectTouchEventwithFloatWindowXWindowY, nullptr, nullptr, nullptr, napi_default, nullptr},
1185 {"testInjectTouchEventwithNonExistedWindowID", nullptr, TestInjectTouchEventwithNonExistedWindowID,
1186 nullptr, nullptr, nullptr, napi_default, nullptr},
1187 {"testInjectTouchEventwithFloatWindowID", nullptr, TestInjectTouchEventwithFloatWindowID,
1188 nullptr, nullptr, nullptr, napi_default, nullptr},
1189 {"testInjectTouchEventwithNegativeWindowID", nullptr, TestInjectTouchEventwithNegativeWindowID,
1190 nullptr, nullptr, nullptr, napi_default, nullptr},
1191 {"testInjectTouchEventwithTouchActionCancel", nullptr, TestInjectTouchEventwithTouchActionCancel,
1192 nullptr, nullptr, nullptr, napi_default, nullptr},
1193 {"testInjectTouchEventwithTouchActionDown", nullptr, TestInjectTouchEventwithTouchActionDown,
1194 nullptr, nullptr, nullptr, napi_default, nullptr},
1195 {"testInjectTouchEventwithTouchActionMove", nullptr, TestInjectTouchEventwithTouchActionMove,
1196 nullptr, nullptr, nullptr, napi_default, nullptr},
1197 {"testInjectTouchEventwithTouchActionUp", nullptr, TestInjectTouchEventwithTouchActionUp,
1198 nullptr, nullptr, nullptr, napi_default, nullptr},
1199 {"testInjectTouchEventwithMainWindowClick", nullptr, TestInjectTouchEventwithMainWindowClick,
1200 nullptr, nullptr, nullptr, napi_default, nullptr},
1201 {"testInjectTouchEventwithSubWindowClick", nullptr, TestInjectTouchEventwithSubWindowClick,
1202 nullptr, nullptr, nullptr, napi_default, nullptr},
1203 {"testInjectTouchEventwithDialogWindowClick", nullptr, TestInjectTouchEventwithDialogWindowClick,
1204 nullptr, nullptr, nullptr, napi_default, nullptr},
1205 {"testInjectTouchEventwithSubWindowSlide", nullptr, TestInjectTouchEventwithSubWindowSlide,
1206 nullptr, nullptr, nullptr, napi_default, nullptr},
1207 {"testInjectTouchEventwithSubWindowEdgeSlide", nullptr, TestInjectTouchEventwithSubWindowEdgeSlide,
1208 nullptr, nullptr, nullptr, napi_default, nullptr},
1209 {"testInjectTouchEventwithSubWindowButtonDownCancle", nullptr,
1210 TestInjectTouchEventwithSubWindowButtonDownCancle, nullptr, nullptr, nullptr, napi_default, nullptr},
1211 {"testInjectTouchEventwithSubWindowSlideDownCancle", nullptr, TestInjectTouchEventwithSubWindowSlideDownCancle,
1212 nullptr, nullptr, nullptr, napi_default, nullptr},
1213 {"testInjectTouchEventwithHideSubWindowDown", nullptr, TestInjectTouchEventwithHideSubWindowDown,
1214 nullptr, nullptr, nullptr, napi_default, nullptr},
1215 };
1216 napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
1217 return exports;
1218 }
1219
1220 EXTERN_C_START
Init(napi_env env,napi_value exports)1221 static napi_value Init(napi_env env, napi_value exports)
1222 {
1223 injectTouchEventInit(env, exports);
1224 napi_property_descriptor desc[] = {
1225 {"filterKeyCode", nullptr, filterKeyCode, nullptr, nullptr, nullptr, napi_default, nullptr},
1226 {"unFilterKeyCode", nullptr, unFilterKeyCode, nullptr, nullptr, nullptr, napi_default, nullptr},
1227 {"isWindowShown", nullptr, IsWindowShown, nullptr, nullptr, nullptr, napi_default, nullptr},
1228 {"showWindow", nullptr, ShowWindow, nullptr, nullptr, nullptr, napi_default, nullptr},
1229 {"setWindowStatusBarEnabled", nullptr, SetWindowStatusBarEnabled, nullptr, nullptr, nullptr, napi_default, nullptr},
1230 {"setWindowNavigationBarEnabled", nullptr, SetWindowNavigationBarEnabled, nullptr, nullptr, nullptr, napi_default, nullptr},
1231 {"setWindowStatusBarColor", nullptr, SetWindowStatusBarColor, nullptr, nullptr, nullptr, napi_default, nullptr},
1232 {"getAvoidAreaByType", nullptr, GetAvoidAreaByType, nullptr, nullptr, nullptr, napi_default, nullptr},
1233 {"setBackgroundColor", nullptr, SetBackgroundColor, nullptr, nullptr, nullptr, napi_default, nullptr},
1234 {"setBrightness", nullptr, SetBrightness, nullptr, nullptr, nullptr, napi_default, nullptr},
1235 {"setKeepScreenOn", nullptr, SetKeepScreenOn, nullptr, nullptr, nullptr, napi_default, nullptr},
1236 {"setWindowPrivacyMode", nullptr, SetWindowPrivacyMode, nullptr, nullptr, nullptr, napi_default, nullptr},
1237 {"snapshot", nullptr, Snapshot, nullptr, nullptr, nullptr, napi_default, nullptr},
1238 {"setWindowFocusable", nullptr, SetWindowFocusable, nullptr, nullptr, nullptr, napi_default, nullptr},
1239 {"setWindowTouchable", nullptr, SetWindowTouchable, nullptr, nullptr, nullptr, napi_default, nullptr},
1240 {"getWindowPorperties", nullptr, GetWindowPorperties, nullptr, nullptr, nullptr, napi_default, nullptr},
1241 {"registerMouseFilter", nullptr, registerMouseFilter, nullptr, nullptr, nullptr, napi_default, nullptr},
1242 {"clearMouseFilter", nullptr, clearMouseFilter, nullptr, nullptr, nullptr, napi_default, nullptr},
1243 {"registerTouchFilter", nullptr, registerTouchFilter, nullptr, nullptr, nullptr, napi_default, nullptr},
1244 {"clearTouchFilter", nullptr, clearTouchFilter, nullptr, nullptr, nullptr, napi_default, nullptr},
1245 {"getAllWIndowLayOutInfo", nullptr, getAllWIndowLayOutInfo, nullptr, nullptr, nullptr, napi_default, nullptr},
1246 {"testInjectTouchEventwithTouchEventNullptr", nullptr, TestInjectTouchEventwithTouchEventNullptr,
1247 nullptr, nullptr, nullptr, napi_default, nullptr},
1248 {"testInjectTouchEventwithTouchEventActionOutofRange", nullptr,
1249 TestInjectTouchEventwithTouchEventActionOutofRange, nullptr, nullptr, nullptr, napi_default, nullptr},
1250 {"testInjectTouchEventwithWindowidNotloadcontent", nullptr, TestInjectTouchEventwithWindowidNotloadcontent,
1251 nullptr, nullptr, nullptr, napi_default, nullptr},
1252 {"testInjectTouchEventwithDestoryedSubwindow", nullptr, TestInjectTouchEventwithDestoryedSubwindow,
1253 nullptr, nullptr, nullptr, napi_default, nullptr},
1254 };
1255 napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
1256 return exports;
1257 }
1258 EXTERN_C_END
1259
1260 static napi_module demoModule = {
1261 .nm_version = 1,
1262 .nm_flags = 0,
1263 .nm_filename = nullptr,
1264 .nm_register_func = Init,
1265 .nm_modname = "entry",
1266 .nm_priv = ((void*)0),
1267 .reserved = { 0 },
1268 };
1269
RegisterEntryModule(void)1270 extern "C" __attribute__((constructor)) void RegisterEntryModule(void)
1271 {
1272 napi_module_register(&demoModule);
1273 }
1274