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
16 #include <cstdio>
17 #include <fstream>
18
19 #include <gtest/gtest.h>
20
21 #include "common_event_data.h"
22 #include "common_event_subscribe_info.h"
23 #include "image_source.h"
24 #include "input_windows_manager_mock.h"
25 #include "i_preference_manager.h"
26 #include "knuckle_drawing_manager.h"
27 #include "libinput_mock.h"
28 #include "mmi_log.h"
29 #include "parameters.h"
30 #include "pixel_map.h"
31 #include "pointer_drawing_manager.h"
32 #include "pointer_event.h"
33
34 #undef MMI_LOG_TAG
35 #define MMI_LOG_TAG "PointerDrawingManagerTest"
36
37 namespace OHOS {
38 namespace MMI {
39 namespace {
40 using namespace testing::ext;
41 constexpr int32_t MOUSE_ICON_SIZE = 64;
42 constexpr uint32_t DEFAULT_ICON_COLOR { 0xFF };
43 constexpr int32_t MIDDLE_PIXEL_MAP_WIDTH { 400 };
44 constexpr int32_t MIDDLE_PIXEL_MAP_HEIGHT { 400 };
45 constexpr int32_t MAX_PIXEL_MAP_WIDTH { 600 };
46 constexpr int32_t MAX_PIXEL_MAP_HEIGHT { 600 };
47 constexpr int32_t INT32_BYTE { 4 };
48 constexpr int32_t WINDOW_ROTATE { 0 };
49 constexpr int32_t FOLDABLE_DEVICE { 2 };
50 constexpr int32_t MIN_POINTER_COLOR { 0x000000 };
51 const std::string MOUSE_FILE_NAME { "mouse_settings.xml" };
52 const int32_t ROTATE_POLICY = system::GetIntParameter("const.window.device.rotate_policy", 0);
53 const std::string IMAGE_POINTER_DEFAULT_PATH = "/system/etc/multimodalinput/mouse_icon/";
54 const std::string CURSOR_ICON_PATH = IMAGE_POINTER_DEFAULT_PATH + "Cursor_Circle.png";
55 const std::string CUSTOM_CURSOR_ICON_PATH = IMAGE_POINTER_DEFAULT_PATH + "Custom_Cursor_Circle.svg";
56 const std::string DEFAULT_ICON_PATH = IMAGE_POINTER_DEFAULT_PATH + "Default.svg";
57 constexpr int32_t AECH_DEVELOPER_DEFINED_STYLE { 47 };
58 constexpr int32_t AECH_DEVELOPER_DEFINED { 4 };
59 std::atomic<bool> g_isRsRestart;
60 } // namespace
61
62 class PointerDrawingManagerTest : public testing::Test {
63 public:
SetUpTestCase(void)64 static void SetUpTestCase(void) {};
TearDownTestCase(void)65 static void TearDownTestCase(void) {};
66 static std::shared_ptr<Media::PixelMap> CreatePixelMap(int32_t width, int32_t height);
SetUp(void)67 void SetUp(void) {}
TearDown(void)68 void TearDown(void) {}
69
70 std::unique_ptr<OHOS::Media::PixelMap> SetMouseIconTest(const std::string iconPath);
71
72 private:
73 };
74
SetMouseIconTest(const std::string iconPath)75 std::unique_ptr<OHOS::Media::PixelMap> PointerDrawingManagerTest::SetMouseIconTest(const std::string iconPath)
76 {
77 CALL_DEBUG_ENTER;
78 OHOS::Media::SourceOptions opts;
79 opts.formatHint = "image/svg+xml";
80 uint32_t ret = 0;
81 auto imageSource = OHOS::Media::ImageSource::CreateImageSource(iconPath, opts, ret);
82 CHKPP(imageSource);
83 std::set<std::string> formats;
84 ret = imageSource->GetSupportedFormats(formats);
85 MMI_HILOGD("Get supported format ret:%{public}u", ret);
86
87 OHOS::Media::DecodeOptions decodeOpts;
88 decodeOpts.desiredSize = {.width = MOUSE_ICON_SIZE, .height = MOUSE_ICON_SIZE};
89
90 std::unique_ptr<OHOS::Media::PixelMap> pixelMap = imageSource->CreatePixelMap(decodeOpts, ret);
91 CHKPL(pixelMap);
92 return pixelMap;
93 }
94
CreatePixelMap(int32_t width,int32_t height)95 std::shared_ptr<Media::PixelMap> PointerDrawingManagerTest::CreatePixelMap(int32_t width, int32_t height)
96 {
97 CALL_DEBUG_ENTER;
98 if (width <= 0 || width > MAX_PIXEL_MAP_WIDTH || height <= 0 || height > MAX_PIXEL_MAP_HEIGHT) {
99 return nullptr;
100 }
101 Media::InitializationOptions opts;
102 opts.size.height = height;
103 opts.size.width = width;
104 opts.pixelFormat = Media::PixelFormat::BGRA_8888;
105 opts.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_OPAQUE;
106 opts.scaleMode = Media::ScaleMode::FIT_TARGET_SIZE;
107
108 int32_t colorLen = width * height;
109 uint32_t *pixelColors = new (std::nothrow) uint32_t[colorLen];
110 CHKPP(pixelColors);
111 int32_t colorByteCount = colorLen * INT32_BYTE;
112 errno_t ret = memset_s(pixelColors, colorByteCount, DEFAULT_ICON_COLOR, colorByteCount);
113 if (ret != EOK) {
114 delete[] pixelColors;
115 return nullptr;
116 }
117 std::shared_ptr<Media::PixelMap> pixelMap = Media::PixelMap::Create(pixelColors, colorLen, opts);
118 if (pixelMap == nullptr) {
119 delete[] pixelColors;
120 return nullptr;
121 }
122 delete[] pixelColors;
123 return pixelMap;
124 }
125
126 /**
127 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_01
128 * @tc.desc: Test DrawPointerStyle
129 * @tc.type: FUNC
130 * @tc.require:
131 */
132 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_01, TestSize.Level1)
133 {
134 CALL_TEST_DEBUG;
135 PointerDrawingManager pointerDrawingManager;
136 pointerDrawingManager.hasDisplay_ = true;
137 pointerDrawingManager.hasPointerDevice_ = true;
138 pointerDrawingManager.surfaceNode_ = nullptr;
139
140 PointerStyle pointerStyle;
141 pointerStyle.id = 1;
142 pointerStyle.color = 1;
143 pointerStyle.size = 2;
144
145 int32_t ROTATE_POLICY;
146 ROTATE_POLICY = WINDOW_ROTATE;
147 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
148 }
149
150 /**
151 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_02
152 * @tc.desc: Test DrawManager
153 * @tc.type: FUNC
154 * @tc.require:
155 */
156 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_02, TestSize.Level1)
157 {
158 CALL_TEST_DEBUG;
159 PointerDrawingManager pointerDrawingManager;
160 pointerDrawingManager.hasDisplay_ = true;
161 pointerDrawingManager.hasPointerDevice_ = true;
162 pointerDrawingManager.surfaceNode_ = nullptr;
163
164 PointerStyle pointerStyle;
165 pointerStyle.id = 1;
166 pointerStyle.color = 1;
167 pointerStyle.size = 2;
168
169 int32_t ROTATE_POLICY;
170 ROTATE_POLICY = FOLDABLE_DEVICE;
171 pointerDrawingManager.lastPhysicalX_ = -1;
172 pointerDrawingManager.lastPhysicalY_ = -1;
173 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
174 }
175
176 /**
177 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_03
178 * @tc.desc: Test DrawManager
179 * @tc.type: FUNC
180 * @tc.require:
181 */
182 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_03, TestSize.Level1)
183 {
184 CALL_TEST_DEBUG;
185 PointerDrawingManager pointerDrawingManager;
186 pointerDrawingManager.hasDisplay_ = true;
187 pointerDrawingManager.hasPointerDevice_ = true;
188 pointerDrawingManager.surfaceNode_ = nullptr;
189
190 PointerStyle pointerStyle;
191 pointerStyle.id = 1;
192 pointerStyle.color = 1;
193 pointerStyle.size = 2;
194
195 int32_t ROTATE_POLICY;
196 ROTATE_POLICY = FOLDABLE_DEVICE;
197 pointerDrawingManager.lastPhysicalX_ = 1;
198 pointerDrawingManager.lastPhysicalY_ = -1;
199 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
200 }
201
202 /**
203 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_04
204 * @tc.desc: Test DrawManager
205 * @tc.type: FUNC
206 * @tc.require:
207 */
208 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_04, TestSize.Level1)
209 {
210 CALL_TEST_DEBUG;
211 PointerDrawingManager pointerDrawingManager;
212 pointerDrawingManager.hasDisplay_ = true;
213 pointerDrawingManager.hasPointerDevice_ = true;
214 pointerDrawingManager.surfaceNode_ = nullptr;
215
216 PointerStyle pointerStyle;
217 pointerStyle.id = 1;
218 pointerStyle.color = 1;
219 pointerStyle.size = 2;
220
221 int32_t ROTATE_POLICY;
222 ROTATE_POLICY = FOLDABLE_DEVICE;
223 pointerDrawingManager.lastPhysicalX_ = 2;
224 pointerDrawingManager.lastPhysicalY_ = 2;
225 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
226 }
227
228 /**
229 * @tc.name: InputWindowsManagerTest_SetPointerStyle_01
230 * @tc.desc: Test SetPointerStyle
231 * @tc.type: FUNC
232 * @tc.require:
233 */
234 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStyle_01, TestSize.Level1)
235 {
236 CALL_TEST_DEBUG;
237 PointerDrawingManager pointerDrawingManager;
238 bool isUiExtension = false;
239
240 PointerStyle pointerStyle;
241 pointerStyle.id = 1;
242 pointerStyle.color = 0;
243 pointerStyle.size = 2;
244
245 int32_t pid = 1;
246 int32_t windowId = -2;
247 bool ret = pointerDrawingManager.CheckPointerStyleParam(windowId, pointerStyle);
248 EXPECT_FALSE(ret);
249
250 int32_t ret2 = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle, isUiExtension);
251 EXPECT_EQ(ret2, RET_ERR);
252 }
253
254 /**
255 * @tc.name: InputWindowsManagerTest_SetPointerStyle_02
256 * @tc.desc: Test SetPointerStyle
257 * @tc.type: FUNC
258 * @tc.require:
259 */
260 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStyle_02, TestSize.Level1)
261 {
262 CALL_TEST_DEBUG;
263 PointerDrawingManager pointerDrawingManager;
264 bool isUiExtension = true;
265
266 PointerStyle pointerStyle;
267 pointerStyle.id = 1;
268 pointerStyle.color = 0;
269 pointerStyle.size = 2;
270
271 int32_t pid = 1;
272 int32_t windowId = GLOBAL_WINDOW_ID;
273 bool ret = pointerDrawingManager.CheckPointerStyleParam(windowId, pointerStyle);
274 EXPECT_TRUE(ret);
275
276 int32_t ret2 = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle, isUiExtension);
277 EXPECT_EQ(ret2, RET_OK);
278 }
279
280 /**
281 * @tc.name: InputWindowsManagerTest_SetPointerStylePreference_01
282 * @tc.desc: Test SetPointerStylePreference
283 * @tc.type: FUNC
284 * @tc.require:
285 */
286 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStylePreference_01, TestSize.Level1)
287 {
288 CALL_TEST_DEBUG;
289 PointerDrawingManager pointerDrawingManager;
290 PointerStyle pointerStyle;
291 pointerStyle.id = 1;
292 pointerStyle.color = 1;
293 pointerStyle.size = 2;
294
295 std::string name = "pointerStyle";
296 int32_t ret = PREFERENCES_MGR->SetIntValue(name, MOUSE_FILE_NAME, pointerStyle.id);
297 EXPECT_EQ(ret, RET_OK);
298
299 int32_t ret2 = pointerDrawingManager.SetPointerStylePreference(pointerStyle);
300 EXPECT_EQ(ret2, RET_OK);
301 }
302
303 /**
304 * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_01
305 * @tc.desc: Test SetMouseHotSpot
306 * @tc.type: FUNC
307 * @tc.require:
308 */
309 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_01, TestSize.Level1)
310 {
311 CALL_TEST_DEBUG;
312 PointerDrawingManager pointerDrawingManager;
313 int32_t pid = -1;
314 int32_t windowId = 2;
315 int32_t hotSpotX = 3;
316 int32_t hotSpotY = 4;
317 int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
318 ASSERT_EQ(ret, RET_ERR);
319 }
320
321 /**
322 * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_02
323 * @tc.desc: Test SetMouseHotSpot
324 * @tc.type: FUNC
325 * @tc.require:
326 */
327 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_02, TestSize.Level1)
328 {
329 CALL_TEST_DEBUG;
330 PointerDrawingManager pointerDrawingManager;
331 int32_t pid = 1;
332 int32_t windowId = -2;
333 int32_t hotSpotX = 3;
334 int32_t hotSpotY = 4;
335 int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
336 ASSERT_EQ(ret, RET_ERR);
337 }
338
339 /**
340 * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_03
341 * @tc.desc: Test SetMouseHotSpot
342 * @tc.type: FUNC
343 * @tc.require:
344 */
345 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_03, TestSize.Level1)
346 {
347 CALL_TEST_DEBUG;
348 PointerDrawingManager pointerDrawingManager;
349 int32_t pid = 1;
350 int32_t windowId = 2;
351 EXPECT_CALL(*WIN_MGR_MOCK, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_ERR));
352 int32_t hotSpotX = 3;
353 int32_t hotSpotY = 4;
354 int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
355 ASSERT_EQ(ret, RET_ERR);
356 }
357
358 /**
359 * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_04
360 * @tc.desc: Test SetMouseHotSpot
361 * @tc.type: FUNC
362 * @tc.require:
363 */
364 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_04, TestSize.Level1)
365 {
366 CALL_TEST_DEBUG;
367 PointerDrawingManager pointerDrawingManager;
368 int32_t pid = 1;
369 int32_t windowId = 2;
370 EXPECT_CALL(*WIN_MGR_MOCK, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_OK));
371 int32_t hotSpotX = -3;
372 int32_t hotSpotY = -4;
373 pointerDrawingManager.userIcon_ = nullptr;
374 int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
375 ASSERT_EQ(ret, RET_ERR);
376 }
377
378 /**
379 * @tc.name: InputWindowsManagerTest_SetMouseIcon_01
380 * @tc.desc: Test SetMouseIcon
381 * @tc.type: FUNC
382 * @tc.require:
383 */
384 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_01, TestSize.Level1)
385 {
386 CALL_TEST_DEBUG;
387 PointerDrawingManager pointerDrawingManager;
388 int32_t pid = -1;
389 int32_t windowId = -2;
390 CursorPixelMap curPixelMap;
391 int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, curPixelMap);
392 ASSERT_EQ(ret, RET_ERR);
393 }
394
395 /**
396 * @tc.name: InputWindowsManagerTest_SetMouseIcon_02
397 * @tc.desc: Test SetMouseIcon
398 * @tc.type: FUNC
399 * @tc.require:
400 */
401 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_02, TestSize.Level1)
402 {
403 CALL_TEST_DEBUG;
404 PointerDrawingManager pointerDrawingManager;
405 int32_t pid = 1;
406 int32_t windowId = -2;
407 CursorPixelMap curPixelMap;
408 int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, curPixelMap);
409 ASSERT_EQ(ret, RET_ERR);
410 }
411
412 /**
413 * @tc.name: InputWindowsManagerTest_SetMouseIcon_03
414 * @tc.desc: Test SetMouseIcon
415 * @tc.type: FUNC
416 * @tc.require:
417 */
418 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_03, TestSize.Level1)
419 {
420 CALL_TEST_DEBUG;
421 PointerDrawingManager pointerDrawingManager;
422 int32_t pid = 1;
423 int32_t windowId = 2;
424 PointerStyle style;
425 int32_t ret1 = pointerDrawingManager.SetPointerStyle(pid, windowId, style);
426 EXPECT_EQ(ret1, RET_OK);
427
428 CursorPixelMap curPixelMap;
429 int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, curPixelMap);
430 ASSERT_EQ(ret, RET_ERR);
431 }
432
433 /**
434 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection270_01
435 * @tc.desc: Test AdjustMouseFocusByDirection270
436 * @tc.type: FUNC
437 * @tc.require:
438 */
439 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection270_01, TestSize.Level1)
440 {
441 CALL_TEST_DEBUG;
442 PointerDrawingManager pointerDrawingManager;
443 ICON_TYPE iconType = ANGLE_SW;
444 int32_t physicalX = 150;
445 int32_t physicalY = 200;
446 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.AdjustMouseFocusByDirection270(iconType, physicalX, physicalY));
447 }
448
449 /**
450 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection270_02
451 * @tc.desc: Test AdjustMouseFocusByDirection270
452 * @tc.type: FUNC
453 * @tc.require:
454 */
455 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection270_02, TestSize.Level1)
456 {
457 CALL_TEST_DEBUG;
458 PointerDrawingManager pointerDrawingManager;
459 ICON_TYPE iconType = ANGLE_CENTER;
460 int32_t physicalX = 100;
461 int32_t physicalY = 150;
462 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.AdjustMouseFocusByDirection270(iconType, physicalX, physicalY));
463 }
464
465 /**
466 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection270_03
467 * @tc.desc: Test AdjustMouseFocusByDirection270
468 * @tc.type: FUNC
469 * @tc.require:
470 */
471 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection270_03, TestSize.Level1)
472 {
473 CALL_TEST_DEBUG;
474 PointerDrawingManager pointerDrawingManager;
475 ICON_TYPE iconType = ANGLE_NW_RIGHT;
476 int32_t physicalX = 50;
477 int32_t physicalY = 150;
478 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.AdjustMouseFocusByDirection270(iconType, physicalX, physicalY));
479 }
480
481 /**
482 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection270_04
483 * @tc.desc: Test AdjustMouseFocusByDirection270
484 * @tc.type: FUNC
485 * @tc.require:
486 */
487 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection270_04, TestSize.Level1)
488 {
489 CALL_TEST_DEBUG;
490 PointerDrawingManager pointerDrawingManager;
491 ICON_TYPE iconType = ANGLE_NW;
492 int32_t physicalX = 100;
493 int32_t physicalY = 50;
494 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.AdjustMouseFocusByDirection270(iconType, physicalX, physicalY));
495 }
496
497 /**
498 * @tc.name: InputWindowsManagerTest_DrawMovePointer_001
499 * @tc.desc: Test the funcation DrawMovePointer
500 * @tc.type: FUNC
501 * @tc.require:
502 */
503 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawMovePointer_001, TestSize.Level1)
504 {
505 CALL_TEST_DEBUG;
506 PointerDrawingManager manager;
507 uint64_t displayId = 1;
508 int32_t physicalX = 2;
509 int32_t physicalY = 3;
510 PointerStyle pointerStyle;
511 Direction direction = DIRECTION0;
512 manager.surfaceNode_ = nullptr;
513 int32_t ret = manager.DrawMovePointer(displayId, physicalX, physicalY, pointerStyle, direction);
514 EXPECT_EQ(ret, RET_ERR);
515 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
516 surfaceNodeConfig.SurfaceNodeName = "pointer window";
517 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
518 manager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
519 ASSERT_TRUE(manager.surfaceNode_ != nullptr);
520 ret = manager.DrawMovePointer(displayId, physicalX, physicalY, pointerStyle, direction);
521 EXPECT_EQ(ret, RET_OK);
522 }
523
524 /**
525 * @tc.name: InputWindowsManagerTest_DrawCursor_002
526 * @tc.desc: Test the funcation DrawCursor
527 * @tc.type: FUNC
528 * @tc.require:
529 */
530 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawCursor_002, TestSize.Level1)
531 {
532 CALL_TEST_DEBUG;
533 PointerDrawingManager manager;
534 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
535 surfaceNodeConfig.SurfaceNodeName = "pointer window";
536 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
537 manager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
538 ASSERT_TRUE(manager.surfaceNode_ != nullptr);
539 MOUSE_ICON mouseStyle = EAST;
540 int32_t ret = manager.DrawCursor(mouseStyle);
541 EXPECT_EQ(ret, RET_OK);
542 }
543
544 /**
545 * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_003
546 * @tc.desc: Test SetMouseHotSpot
547 * @tc.type: FUNC
548 * @tc.require:
549 */
550 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_003, TestSize.Level1)
551 {
552 CALL_TEST_DEBUG;
553 PointerDrawingManager pointerDrawingManager;
554 auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
555 int32_t pid = 1;
556 int32_t windowId = -2;
557 EXPECT_CALL(*winmgrmock, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_OK));
558 int32_t hotSpotX = -1;
559 int32_t hotSpotY = 2;
560 pointerDrawingManager.userIcon_ = nullptr;
561 int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
562 ASSERT_EQ(ret, RET_ERR);
563 hotSpotX = 1;
564 hotSpotY = -2;
565 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
566 ASSERT_EQ(ret, RET_ERR);
567 hotSpotX = 1;
568 hotSpotY = 2;
569 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
570 ASSERT_EQ(ret, RET_ERR);
571 pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
572 ASSERT_NE(pointerDrawingManager.userIcon_, nullptr);
573 hotSpotX = -1;
574 hotSpotY = 2;
575 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
576 ASSERT_EQ(ret, RET_ERR);
577 hotSpotX = -1;
578 hotSpotY = -2;
579 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
580 ASSERT_EQ(ret, RET_ERR);
581 hotSpotX = 1;
582 hotSpotY = -2;
583 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
584 ASSERT_EQ(ret, RET_ERR);
585 hotSpotX = 3;
586 hotSpotY = 4;
587 pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
588 ASSERT_NE(pointerDrawingManager.userIcon_, nullptr);
589 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
590 ASSERT_EQ(ret, RET_ERR);
591 testing::Mock::AllowLeak(winmgrmock.get());
592 }
593
594 /**
595 * @tc.name: InputWindowsManagerTest_SetPointerColor_002
596 * @tc.desc: Test SetPointerColor
597 * @tc.type: FUNC
598 * @tc.require:
599 */
600 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerColor_002, TestSize.Level1)
601 {
602 CALL_TEST_DEBUG;
603 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
604 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
605 surfaceNodeConfig.SurfaceNodeName = "pointer window";
606 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
607 pointerDrawingManager->surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
608 ASSERT_TRUE(pointerDrawingManager->surfaceNode_ != nullptr);
609 pointerDrawingManager->SetPointerColor(16777216);
610 int32_t color = pointerDrawingManager->GetPointerColor();
611 EXPECT_EQ(color, RET_OK);
612 }
613
614 /**
615 * @tc.name: InputWindowsManagerTest_UpdatePointerDevice_002
616 * @tc.desc: Test UpdatePointerDevice
617 * @tc.type: FUNC
618 * @tc.require:
619 */
620 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdatePointerDevice_002, TestSize.Level1)
621 {
622 CALL_TEST_DEBUG;
623 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
624 EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 0);
625 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(true, false, true));
626 EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 1);
627 pointerDrawingManager->surfaceNode_ = nullptr;
628 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(false, false, true));
629 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
630 surfaceNodeConfig.SurfaceNodeName = "pointer window";
631 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
632 pointerDrawingManager->surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
633 ASSERT_TRUE(pointerDrawingManager->surfaceNode_ != nullptr);
634 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(false, false, true));
635 }
636
637 /**
638 * @tc.name: InputWindowsManagerTest_DrawManager_005
639 * @tc.desc: Test DrawManager
640 * @tc.type: FUNC
641 * @tc.require:
642 */
643 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawManager_005, TestSize.Level1)
644 {
645 CALL_TEST_DEBUG;
646 PointerDrawingManager pointerDrawingManager;
647 auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
648 pointerDrawingManager.hasDisplay_ = true;
649 pointerDrawingManager.hasPointerDevice_ = true;
650 pointerDrawingManager.surfaceNode_ = nullptr;
651 EXPECT_CALL(*winmgrmock, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_ERR));
652 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
653 EXPECT_CALL(*winmgrmock, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_OK));
654 pointerDrawingManager.lastPhysicalX_ = -1;
655 pointerDrawingManager.lastPhysicalY_ = 1;
656 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
657 pointerDrawingManager.lastPhysicalX_ = 1;
658 pointerDrawingManager.lastPhysicalY_ = -1;
659 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
660 pointerDrawingManager.lastPhysicalX_ = -1;
661 pointerDrawingManager.lastPhysicalY_ = -1;
662 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
663 EXPECT_CALL(*winmgrmock, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_OK));
664 pointerDrawingManager.lastPhysicalX_ = 1;
665 pointerDrawingManager.lastPhysicalY_ = 1;
666 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
667 testing::Mock::AllowLeak(winmgrmock.get());
668 }
669
670 /**
671 * @tc.name: InputWindowsManagerTest_SetPointerVisible_002
672 * @tc.desc: Test SetPointerVisible
673 * @tc.type: FUNC
674 * @tc.require:
675 */
676 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerVisible_002, TestSize.Level1)
677 {
678 CALL_TEST_DEBUG;
679 auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
680 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
681 ExtraData data1;
682 data1.appended = true;
683 EXPECT_CALL(*winmgrmock, GetExtraData).WillRepeatedly(testing::Return(data1));
684 int32_t pid = 1;
685 bool visible = true;
686 int32_t priority = 0;
687 int32_t ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
688 ASSERT_EQ(ret, RET_OK);
689 visible = false;
690 priority = 0;
691 ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
692 ASSERT_EQ(ret, RET_OK);
693 visible = true;
694 priority = 1;
695 ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
696 ASSERT_EQ(ret, RET_OK);
697 visible = false;
698 priority = 1;
699 ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
700 ASSERT_EQ(ret, RET_OK);
701 ExtraData data2;
702 data2.appended = false;
703 EXPECT_CALL(*winmgrmock, GetExtraData).WillRepeatedly(testing::Return(data2));
704 visible = false;
705 priority = 0;
706 ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
707 ASSERT_EQ(ret, RET_OK);
708 visible = true;
709 priority = 1;
710 ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
711 ASSERT_EQ(ret, RET_OK);
712 visible = false;
713 priority = 1;
714 ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
715 ASSERT_EQ(ret, RET_OK);
716 testing::Mock::AllowLeak(winmgrmock.get());
717 }
718
719 /**
720 * @tc.name: InputWindowsManagerTest_SetPointerLocation_002
721 * @tc.desc: Test SetPointerLocation
722 * @tc.type: FUNC
723 * @tc.require:
724 */
725 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerLocation_002, TestSize.Level1)
726 {
727 CALL_TEST_DEBUG;
728 PointerDrawingManager pointerDrawingManager;
729 int32_t x = 100;
730 int32_t y = 100;
731 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
732 surfaceNodeConfig.SurfaceNodeName = "pointer window";
733 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
734 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
735 ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
736 uint64_t displayId = 0;
737 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.SetPointerLocation(x, y, displayId));
738 }
739
740 /**
741 * @tc.name: InputWindowsManagerTest_UpdateDefaultPointerStyle_002
742 * @tc.desc: Test UpdateDefaultPointerStyle
743 * @tc.type: FUNC
744 * @tc.require:
745 */
746 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdateDefaultPointerStyle_002, TestSize.Level1)
747 {
748 CALL_TEST_DEBUG;
749 auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
750 PointerDrawingManager pointerDrawingManager;
751 int32_t pid = 1;
752 int32_t windowId = -1;
753 PointerStyle pointerStyle;
754 pointerStyle.id = 0;
755 pointerStyle.color = 0;
756 pointerStyle.size = 2;
757 EXPECT_CALL(*winmgrmock, GetPointerStyle).WillRepeatedly(testing::Return(RET_ERR));
758 int32_t ret = pointerDrawingManager.UpdateDefaultPointerStyle(pid, windowId, pointerStyle);
759 EXPECT_EQ(ret, RET_OK);
760 testing::Mock::AllowLeak(winmgrmock.get());
761 }
762
763 /**
764 * @tc.name: InputWindowsManagerTest_GetPointerStyle_001
765 * @tc.desc: Test GetPointerStyle
766 * @tc.type: FUNC
767 * @tc.require:
768 */
769 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_GetPointerStyle_001, TestSize.Level1)
770 {
771 CALL_TEST_DEBUG;
772 auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
773 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
774 int32_t pid = 1;
775 int32_t windowId = 2;
776 bool isUiExtension = true;
777 PointerStyle pointerStyle;
778 EXPECT_CALL(*winmgrmock, GetPointerStyle).WillRepeatedly(testing::Return(RET_ERR));
779 int32_t ret = pointerDrawingManager->GetPointerStyle(pid, windowId, pointerStyle, isUiExtension);
780 EXPECT_EQ(ret, RET_OK);
781 testing::Mock::AllowLeak(winmgrmock.get());
782 }
783
784 /**
785 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_002
786 * @tc.desc: Test DrawPointerStyle
787 * @tc.type: FUNC
788 * @tc.require:
789 */
790 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_002, TestSize.Level1)
791 {
792 CALL_TEST_DEBUG;
793 PointerDrawingManager pointerDrawingManager;
794 PointerStyle pointerStyle;
795 pointerStyle.id = 0;
796 pointerStyle.color = 0;
797 pointerStyle.size = 2;
798 pointerDrawingManager.hasDisplay_ = false;
799 pointerDrawingManager.hasPointerDevice_ = true;
800 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
801 pointerDrawingManager.hasDisplay_ = true;
802 pointerDrawingManager.hasPointerDevice_ = false;
803 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
804 pointerDrawingManager.hasDisplay_ = false;
805 pointerDrawingManager.hasPointerDevice_ = false;
806 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
807 pointerDrawingManager.hasDisplay_ = true;
808 pointerDrawingManager.hasPointerDevice_ = true;
809 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
810 surfaceNodeConfig.SurfaceNodeName = "pointer window";
811 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
812 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
813 ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
814 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
815 pointerDrawingManager.hasDisplay_ = true;
816 pointerDrawingManager.hasPointerDevice_ = true;
817 pointerDrawingManager.surfaceNode_ = nullptr;
818 pointerDrawingManager.lastPhysicalX_ = -1;
819 pointerDrawingManager.lastPhysicalY_ = 1;
820 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
821 pointerDrawingManager.lastPhysicalX_ = 1;
822 pointerDrawingManager.lastPhysicalY_ = -1;
823 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
824 pointerDrawingManager.lastPhysicalX_ = -1;
825 pointerDrawingManager.lastPhysicalY_ = -1;
826 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
827 pointerDrawingManager.lastPhysicalX_ = 1;
828 pointerDrawingManager.lastPhysicalY_ = 1;
829 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
830 }
831
832 /**
833 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_003
834 * @tc.desc: Test DrawPointerStyle
835 * @tc.type: FUNC
836 * @tc.require:
837 */
838 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_003, TestSize.Level1)
839 {
840 CALL_TEST_DEBUG;
841 PointerDrawingManager pointerDrawingManager;
842 PointerStyle pointerStyle;
843 pointerStyle.id = 0;
844 pointerStyle.color = 0;
845 pointerStyle.size = 2;
846 pointerDrawingManager.hasDisplay_ = true;
847 pointerDrawingManager.hasPointerDevice_ = true;
848 pointerDrawingManager.surfaceNode_ = nullptr;
849 pointerDrawingManager.displayInfo_.displayDirection = DIRECTION0;
850 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
851 }
852
853 /**
854 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_004
855 * @tc.desc: Test DrawPointerStyle
856 * @tc.type: FUNC
857 * @tc.require:
858 */
859 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_004, TestSize.Level1)
860 {
861 CALL_TEST_DEBUG;
862 PointerDrawingManager pointerDrawingManager;
863 PointerStyle pointerStyle;
864 pointerStyle.id = 0;
865 pointerStyle.color = 0;
866 pointerStyle.size = 2;
867 pointerDrawingManager.hasDisplay_ = true;
868 pointerDrawingManager.hasPointerDevice_ = true;
869 pointerDrawingManager.surfaceNode_ = nullptr;
870 pointerDrawingManager.displayInfo_.displayDirection = DIRECTION90;
871 pointerDrawingManager.lastPhysicalX_ = -1;
872 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
873 }
874
875 /**
876 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_006
877 * @tc.desc: Test DrawPointerStyle
878 * @tc.type: FUNC
879 * @tc.require:
880 */
881 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_006, TestSize.Level1)
882 {
883 CALL_TEST_DEBUG;
884 PointerDrawingManager pointerDrawingManager;
885 PointerStyle pointerStyle;
886 pointerStyle.id = 0;
887 pointerStyle.color = 0;
888 pointerStyle.size = 2;
889 pointerDrawingManager.hasDisplay_ = true;
890 pointerDrawingManager.hasPointerDevice_ = true;
891 pointerDrawingManager.surfaceNode_ = nullptr;
892 pointerDrawingManager.displayInfo_.displayDirection = DIRECTION90;
893 pointerDrawingManager.lastPhysicalX_ = 2;
894 pointerDrawingManager.lastPhysicalY_ = 2;
895 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
896 }
897
898 /**
899 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_007
900 * @tc.desc: Test DrawPointerStyle
901 * @tc.type: FUNC
902 * @tc.require:
903 */
904 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_007, TestSize.Level1)
905 {
906 CALL_TEST_DEBUG;
907 PointerDrawingManager pointerDrawingManager;
908 PointerStyle pointerStyle;
909 pointerStyle.id = 0;
910 pointerStyle.color = 0;
911 pointerStyle.size = 2;
912 pointerDrawingManager.hasDisplay_ = false;
913 pointerDrawingManager.hasPointerDevice_ = true;
914 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
915 pointerDrawingManager.hasDisplay_ = true;
916 pointerDrawingManager.hasPointerDevice_ = false;
917 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
918 pointerDrawingManager.hasDisplay_ = false;
919 pointerDrawingManager.hasPointerDevice_ = false;
920 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
921 pointerDrawingManager.hasDisplay_ = true;
922 pointerDrawingManager.hasPointerDevice_ = true;
923 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
924 surfaceNodeConfig.SurfaceNodeName = "pointer window";
925 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
926 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
927 ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
928 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
929 pointerDrawingManager.hasDisplay_ = true;
930 pointerDrawingManager.hasPointerDevice_ = true;
931 pointerDrawingManager.surfaceNode_ = nullptr;
932 pointerDrawingManager.lastPhysicalX_ = -1;
933 pointerDrawingManager.lastPhysicalY_ = 1;
934 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
935 pointerDrawingManager.lastPhysicalX_ = 1;
936 pointerDrawingManager.lastPhysicalY_ = -1;
937 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
938 pointerDrawingManager.lastPhysicalX_ = -1;
939 pointerDrawingManager.lastPhysicalY_ = -1;
940 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
941 pointerDrawingManager.lastPhysicalX_ = 1;
942 pointerDrawingManager.lastPhysicalY_ = 1;
943 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
944 }
945
946 /**
947 * @tc.name: InputWindowsManagerTest_Init_001
948 * @tc.desc: Test Init
949 * @tc.type: FUNC
950 * @tc.require:
951 */
952 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_Init_001, TestSize.Level1)
953 {
954 CALL_TEST_DEBUG;
955 bool isSucess = IPointerDrawingManager::GetInstance()->Init();
956 EXPECT_EQ(isSucess, true);
957 IconStyle iconStyle = IPointerDrawingManager::GetInstance()->GetIconStyle(MOUSE_ICON(MOUSE_ICON::DEFAULT));
958 EXPECT_EQ(iconStyle.alignmentWay, 7);
959 }
960
961 /**
962 * @tc.name: InputWindowsManagerTest_SetMouseDisplayState_001
963 * @tc.desc: Test SetMouseDisplayState
964 * @tc.type: FUNC
965 * @tc.require:
966 */
967 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseDisplayState_001, TestSize.Level1)
968 {
969 CALL_TEST_DEBUG;
970 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
971 pointerDrawingManager->SetMouseDisplayState(true);
972 bool mouseDisplayState = pointerDrawingManager->GetMouseDisplayState();
973 EXPECT_EQ(mouseDisplayState, true);
974 }
975
976 /**
977 * @tc.name: InputWindowsManagerTest_UpdatePointerDevice_001
978 * @tc.desc: Test UpdatePointerDevice
979 * @tc.type: FUNC
980 * @tc.require:
981 */
982 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdatePointerDevice_001, TestSize.Level1)
983 {
984 CALL_TEST_DEBUG;
985 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
986 EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 0);
987 pointerDrawingManager->UpdatePointerDevice(true, true, true);
988 EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 1);
989 pointerDrawingManager->UpdatePointerDevice(false, true, true);
990 EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 0);
991 }
992
993 /**
994 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection0_001
995 * @tc.desc: Test AdjustMouseFocusByDirection0
996 * @tc.type: FUNC
997 * @tc.require:
998 */
999 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection0_001, TestSize.Level1)
1000 {
1001 CALL_TEST_DEBUG;
1002 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1003 pointerDrawingManager->imageWidth_ = 50;
1004 pointerDrawingManager->imageHeight_ = 50;
1005 pointerDrawingManager->userIconHotSpotX_ = 5;
1006 pointerDrawingManager->userIconHotSpotY_ = 5;
1007 int32_t physicalX = 100;
1008 int32_t physicalY = 100;
1009 pointerDrawingManager->AdjustMouseFocusByDirection0(ANGLE_SW, physicalX, physicalY);
1010 EXPECT_EQ(physicalX, 100);
1011 EXPECT_EQ(physicalY, 50);
1012 physicalX = 100;
1013 physicalY = 100;
1014 pointerDrawingManager->AdjustMouseFocusByDirection0(ANGLE_CENTER, physicalX, physicalY);
1015 EXPECT_EQ(physicalX, 75);
1016 EXPECT_EQ(physicalY, 75);
1017 physicalX = 100;
1018 physicalY = 100;
1019 pointerDrawingManager->AdjustMouseFocusByDirection0(ANGLE_NW_RIGHT, physicalX, physicalY);
1020 EXPECT_EQ(physicalY, 100);
1021 physicalX = 100;
1022 physicalY = 100;
1023 pointerDrawingManager->userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1024 pointerDrawingManager->currentMouseStyle_.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
1025 pointerDrawingManager->AdjustMouseFocusByDirection0(ANGLE_NW, physicalX, physicalY);
1026 physicalX = 100;
1027 physicalY = 100;
1028 pointerDrawingManager->AdjustMouseFocusByDirection0(ANGLE_E, physicalX, physicalY);
1029 EXPECT_EQ(physicalX, 100);
1030 EXPECT_EQ(physicalY, 100);
1031 }
1032
1033 /**
1034 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection90_001
1035 * @tc.desc: Test AdjustMouseFocusByDirection90
1036 * @tc.type: FUNC
1037 * @tc.require:
1038 */
1039 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection90_001, TestSize.Level1)
1040 {
1041 CALL_TEST_DEBUG;
1042 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1043 pointerDrawingManager->imageWidth_ = 50;
1044 pointerDrawingManager->imageHeight_ = 50;
1045 pointerDrawingManager->userIconHotSpotX_ = 5;
1046 pointerDrawingManager->userIconHotSpotY_ = 5;
1047 int32_t physicalX = 100;
1048 int32_t physicalY = 100;
1049 pointerDrawingManager->AdjustMouseFocusByDirection90(ANGLE_SW, physicalX, physicalY);
1050 EXPECT_EQ(physicalX, 100);
1051 EXPECT_EQ(physicalY, 150);
1052 physicalX = 100;
1053 physicalY = 100;
1054 pointerDrawingManager->AdjustMouseFocusByDirection90(ANGLE_CENTER, physicalX, physicalY);
1055 EXPECT_EQ(physicalX, 75);
1056 EXPECT_EQ(physicalY, 125);
1057 physicalX = 100;
1058 physicalY = 100;
1059 pointerDrawingManager->AdjustMouseFocusByDirection90(ANGLE_NW_RIGHT, physicalX, physicalY);
1060 physicalX = 100;
1061 physicalY = 100;
1062 pointerDrawingManager->userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1063 pointerDrawingManager->currentMouseStyle_.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
1064 pointerDrawingManager->AdjustMouseFocusByDirection90(ANGLE_NW, physicalX, physicalY);
1065 physicalX = 100;
1066 physicalY = 100;
1067 pointerDrawingManager->AdjustMouseFocusByDirection90(ANGLE_E, physicalX, physicalY);
1068 EXPECT_EQ(physicalX, 100);
1069 EXPECT_EQ(physicalY, 100);
1070 }
1071
1072 /**
1073 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection180_001
1074 * @tc.desc: Test AdjustMouseFocusByDirection180
1075 * @tc.type: FUNC
1076 * @tc.require:
1077 */
1078 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection180_001, TestSize.Level1)
1079 {
1080 CALL_TEST_DEBUG;
1081 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1082 pointerDrawingManager->imageWidth_ = 50;
1083 pointerDrawingManager->imageHeight_ = 50;
1084 pointerDrawingManager->userIconHotSpotX_ = 5;
1085 pointerDrawingManager->userIconHotSpotY_ = 5;
1086 int32_t physicalX = 100;
1087 int32_t physicalY = 100;
1088 pointerDrawingManager->AdjustMouseFocusByDirection180(ANGLE_SW, physicalX, physicalY);
1089 EXPECT_EQ(physicalX, 100);
1090 EXPECT_EQ(physicalY, 150);
1091 physicalX = 100;
1092 physicalY = 100;
1093 pointerDrawingManager->AdjustMouseFocusByDirection180(ANGLE_CENTER, physicalX, physicalY);
1094 EXPECT_EQ(physicalX, 125);
1095 EXPECT_EQ(physicalY, 125);
1096 physicalX = 100;
1097 physicalY = 100;
1098 pointerDrawingManager->AdjustMouseFocusByDirection180(ANGLE_NW_RIGHT, physicalX, physicalY);
1099 physicalX = 100;
1100 physicalY = 100;
1101 pointerDrawingManager->userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1102 pointerDrawingManager->currentMouseStyle_.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
1103 pointerDrawingManager->AdjustMouseFocusByDirection180(ANGLE_NW, physicalX, physicalY);
1104 physicalX = 100;
1105 physicalY = 100;
1106 pointerDrawingManager->AdjustMouseFocusByDirection180(ANGLE_E, physicalX, physicalY);
1107 EXPECT_EQ(physicalX, 100);
1108 EXPECT_EQ(physicalY, 100);
1109 }
1110
1111 /**
1112 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection270_001
1113 * @tc.desc: Test AdjustMouseFocusByDirection270
1114 * @tc.type: FUNC
1115 * @tc.require:
1116 */
1117 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection270_001, TestSize.Level1)
1118 {
1119 CALL_TEST_DEBUG;
1120 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1121 pointerDrawingManager->imageWidth_ = 50;
1122 pointerDrawingManager->imageHeight_ = 50;
1123 pointerDrawingManager->userIconHotSpotX_ = 5;
1124 pointerDrawingManager->userIconHotSpotY_ = 5;
1125 int32_t physicalX = 100;
1126 int32_t physicalY = 100;
1127 pointerDrawingManager->AdjustMouseFocusByDirection270(ANGLE_SW, physicalX, physicalY);
1128 EXPECT_EQ(physicalX, 100);
1129 EXPECT_EQ(physicalY, 50);
1130 physicalX = 100;
1131 physicalY = 100;
1132 pointerDrawingManager->AdjustMouseFocusByDirection270(ANGLE_CENTER, physicalX, physicalY);
1133 EXPECT_EQ(physicalX, 125);
1134 EXPECT_EQ(physicalY, 75);
1135 physicalX = 100;
1136 physicalY = 100;
1137 pointerDrawingManager->AdjustMouseFocusByDirection270(ANGLE_NW_RIGHT, physicalX, physicalY);
1138 physicalX = 100;
1139 physicalY = 100;
1140 pointerDrawingManager->userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1141 pointerDrawingManager->currentMouseStyle_.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
1142 pointerDrawingManager->AdjustMouseFocusByDirection270(ANGLE_NW, physicalX, physicalY);
1143 physicalX = 100;
1144 physicalY = 100;
1145 pointerDrawingManager->AdjustMouseFocusByDirection270(ANGLE_E, physicalX, physicalY);
1146 EXPECT_EQ(physicalX, 100);
1147 EXPECT_EQ(physicalY, 100);
1148 }
1149
1150 /**
1151 * @tc.name: InputWindowsManagerTest_AdjustMouseFocus_001
1152 * @tc.desc: Test AdjustMouseFocus
1153 * @tc.type: FUNC
1154 * @tc.require:
1155 */
1156 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocus_001, TestSize.Level1)
1157 {
1158 CALL_TEST_DEBUG;
1159 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1160 pointerDrawingManager->imageWidth_ = 50;
1161 pointerDrawingManager->imageHeight_ = 50;
1162 int32_t physicalX = 100;
1163 int32_t physicalY = 100;
1164 pointerDrawingManager->RotateDegree(DIRECTION0);
1165 pointerDrawingManager->AdjustMouseFocus(DIRECTION0, ANGLE_SW, physicalX, physicalY);
1166 EXPECT_EQ(physicalX, 100);
1167 EXPECT_EQ(physicalY, 50);
1168 physicalX = 100;
1169 physicalY = 100;
1170 pointerDrawingManager->RotateDegree(DIRECTION90);
1171 pointerDrawingManager->AdjustMouseFocus(DIRECTION90, ANGLE_SW, physicalX, physicalY);
1172 EXPECT_EQ(physicalX, 100);
1173 EXPECT_EQ(physicalY, 150);
1174 physicalX = 100;
1175 physicalY = 100;
1176 pointerDrawingManager->RotateDegree(DIRECTION180);
1177 pointerDrawingManager->AdjustMouseFocus(DIRECTION180, ANGLE_SW, physicalX, physicalY);
1178 EXPECT_EQ(physicalX, 100);
1179 EXPECT_EQ(physicalY, 150);
1180 physicalX = 100;
1181 physicalY = 100;
1182 pointerDrawingManager->RotateDegree(DIRECTION270);
1183 pointerDrawingManager->AdjustMouseFocus(DIRECTION270, ANGLE_SW, physicalX, physicalY);
1184 EXPECT_EQ(physicalX, 100);
1185 EXPECT_EQ(physicalY, 50);
1186 physicalX = 100;
1187 physicalY = 100;
1188 pointerDrawingManager->RotateDegree(static_cast<Direction>(4));
1189 pointerDrawingManager->AdjustMouseFocus(static_cast<Direction>(4), ANGLE_SW, physicalX, physicalY);
1190 EXPECT_EQ(physicalX, 100);
1191 EXPECT_EQ(physicalY, 100);
1192 }
1193
1194 /**
1195 * @tc.name: InputWindowsManagerTest_SetCursorLocation_001
1196 * @tc.desc: Test SetCursorLocation
1197 * @tc.type: FUNC
1198 * @tc.require:
1199 */
1200 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetCursorLocation_001, TestSize.Level1)
1201 {
1202 CALL_TEST_DEBUG;
1203 PointerDrawingManager pointerDrawingManager;
1204 auto align = pointerDrawingManager.MouseIcon2IconType(MOUSE_ICON(2));
1205 int32_t physicalX = 100;
1206 int32_t physicalY = 100;
1207 pointerDrawingManager.lastMouseStyle_.id = 2;
1208 auto visible = pointerDrawingManager.SetCursorLocation(physicalX, physicalY, align);
1209 EXPECT_EQ(visible, false);
1210 physicalX = 200;
1211 physicalY = 200;
1212 pointerDrawingManager.lastMouseStyle_.id = 4;
1213 visible = pointerDrawingManager.SetCursorLocation(physicalX, physicalY, align);
1214 EXPECT_EQ(visible, false);
1215 physicalX = 300;
1216 physicalY = 300;
1217 pointerDrawingManager.lastMouseStyle_.id = 8;
1218 visible = pointerDrawingManager.SetCursorLocation(physicalX, physicalY, align);
1219 EXPECT_EQ(visible, false);
1220 physicalX = 400;
1221 physicalY = 400;
1222 pointerDrawingManager.lastMouseStyle_.id = 12;
1223 visible = pointerDrawingManager.SetCursorLocation(physicalX, physicalY, align);
1224 EXPECT_EQ(visible, false);
1225 }
1226
1227 /**
1228 * @tc.name: InputWindowsManagerTest_SetHardwareCursorPosition_001
1229 * @tc.desc: Test SetHardwareCursorPosition
1230 * @tc.type: FUNC
1231 * @tc.require:
1232 */
1233 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetHardwareCursorPosition_001, TestSize.Level1)
1234 {
1235 CALL_TEST_DEBUG;
1236 PointerDrawingManager pointerDrawingManager;
1237 int32_t physicalX = 100;
1238 int32_t physicalY = 100;
1239 pointerDrawingManager.lastMouseStyle_.id = 2;
1240 ASSERT_NO_FATAL_FAILURE(
1241 pointerDrawingManager.SetHardwareCursorPosition(physicalX, physicalY, pointerDrawingManager.lastMouseStyle_));
1242 }
1243
1244 /**
1245 * @tc.name: InputWindowsManagerOneTest_GetMainScreenDisplayInfo
1246 * @tc.desc: Test GetMainScreenDisplayInfo
1247 * @tc.type: FUNC
1248 * @tc.require:
1249 */
1250 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerOneTest_GetMainScreenDisplayInfo, TestSize.Level0)
1251 {
1252 CALL_TEST_DEBUG;
1253 PointerDrawingManager pointerDrawingManager;
1254 OLD::DisplayGroupInfo displayGroupInfo;
1255 OLD::DisplayInfo mainScreenDisplayInfo;
1256 EXPECT_NO_FATAL_FAILURE(pointerDrawingManager.GetMainScreenDisplayInfo(displayGroupInfo, mainScreenDisplayInfo));
1257 displayGroupInfo.displaysInfo.push_back(mainScreenDisplayInfo);
1258 displayGroupInfo.displaysInfo.push_back(mainScreenDisplayInfo);
1259 EXPECT_NO_FATAL_FAILURE(pointerDrawingManager.GetMainScreenDisplayInfo(displayGroupInfo, mainScreenDisplayInfo));
1260 }
1261
1262 /**
1263 * @tc.name: InputWindowsManagerOneTest_CreatePointerWindowForScreenPointer
1264 * @tc.desc: Test CreatePointerWindowForScreenPointer
1265 * @tc.type: FUNC
1266 * @tc.require:
1267 */
1268 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerOneTest_CreatePointerWindowForScreenPointer, TestSize.Level0)
1269 {
1270 CALL_TEST_DEBUG;
1271 PointerDrawingManager pointerDrawingManager;
1272 pointerDrawingManager.displayInfo_.rsId = 2;
1273 int32_t rsId = 2;
1274 int32_t physicalX = 100;
1275 int32_t physicalY = 100;
1276 EXPECT_NO_FATAL_FAILURE(pointerDrawingManager.CreatePointerWindowForScreenPointer(rsId, physicalX, physicalY));
1277 }
1278
1279 /**
1280 * @tc.name: InputWindowsManagerOneTest_CreatePointerWindow
1281 * @tc.desc: Test CreatePointerWindow
1282 * @tc.type: FUNC
1283 * @tc.require:
1284 */
1285 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerOneTest_CreatePointerWindow, TestSize.Level0)
1286 {
1287 CALL_TEST_DEBUG;
1288 PointerDrawingManager pointerDrawingManager;
1289 int32_t rsId = 10;
1290 int32_t physicalX = 100;
1291 int32_t physicalY = 100;
1292 EXPECT_NO_FATAL_FAILURE(
1293 pointerDrawingManager.CreatePointerWindow(rsId, physicalX, physicalY, Direction::DIRECTION90));
1294 EXPECT_NO_FATAL_FAILURE(
1295 pointerDrawingManager.CreatePointerWindow(rsId, physicalX, physicalY, Direction::DIRECTION180));
1296 EXPECT_NO_FATAL_FAILURE(
1297 pointerDrawingManager.CreatePointerWindow(rsId, physicalX, physicalY, Direction::DIRECTION270));
1298 }
1299
1300 /**
1301 * @tc.name: InputWindowsManagerTest_IsWindowRotation_001
1302 * @tc.desc: Test IsWindowRotation
1303 * @tc.type: FUNC
1304 * @tc.require:
1305 */
1306 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_IsWindowRotation_001, TestSize.Level1)
1307 {
1308 CALL_TEST_DEBUG;
1309 PointerDrawingManager pointerDrawingManager;
1310 OLD::DisplayInfo displayInfo;
1311 displayInfo.direction = DIRECTION0;
1312 displayInfo.displayDirection = DIRECTION90;
1313 auto color = pointerDrawingManager.IsWindowRotation(&displayInfo);
1314 EXPECT_EQ(color, true);
1315 }
1316
1317 /**
1318 * @tc.name: InputWindowsManagerTest_SetPointerColor_001
1319 * @tc.desc: Test SetPointerColor
1320 * @tc.type: FUNC
1321 * @tc.require:
1322 */
1323 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerColor_001, TestSize.Level1)
1324 {
1325 CALL_TEST_DEBUG;
1326 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1327 pointerDrawingManager->SetPointerColor(-1);
1328 int32_t color = pointerDrawingManager->GetPointerColor();
1329 EXPECT_EQ(color, 0);
1330 pointerDrawingManager->SetPointerColor(16777216);
1331 color = pointerDrawingManager->GetPointerColor();
1332 EXPECT_EQ(color, 0);
1333 }
1334
1335 /**
1336 * @tc.name: InputWindowsManagerTest_SetPointerVisible_001
1337 * @tc.desc: Test SetPointerVisible
1338 * @tc.type: FUNC
1339 * @tc.require:
1340 */
1341 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerVisible_001, TestSize.Level1)
1342 {
1343 CALL_TEST_DEBUG;
1344 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1345 for (int32_t i = 1; i < 102; i++) {
1346 pointerDrawingManager->SetPointerVisible(i, false, 0, false);
1347 }
1348 bool visible = pointerDrawingManager->GetPointerVisible(1);
1349 EXPECT_EQ(visible, true);
1350 pointerDrawingManager->SetPointerVisible(11, true, 0, false);
1351 visible = pointerDrawingManager->GetPointerVisible(11);
1352 EXPECT_EQ(visible, true);
1353 }
1354
1355 /**
1356 * @tc.name: InputWindowsManagerTest_SetPointerStyle_001
1357 * @tc.desc: Test SetPointerStyle
1358 * @tc.type: FUNC
1359 * @tc.require:
1360 */
1361 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStyle_001, TestSize.Level1)
1362 {
1363 CALL_TEST_DEBUG;
1364 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1365 PointerStyle pointerStyle;
1366 pointerStyle.id = 0;
1367 pointerDrawingManager->SetPointerStyle(1, -1, pointerStyle);
1368 PointerStyle pointerStyleTmp;
1369 pointerDrawingManager->GetPointerStyle(1, -1, pointerStyleTmp);
1370 EXPECT_EQ(pointerStyleTmp.id, pointerStyle.id);
1371 }
1372
1373 /**
1374 * @tc.name: InputWindowsManagerTest_SetPointerSize_001
1375 * @tc.desc: Test SetPointerSize
1376 * @tc.type: FUNC
1377 * @tc.require:
1378 */
1379 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerSize_001, TestSize.Level1)
1380 {
1381 CALL_TEST_DEBUG;
1382 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1383 pointerDrawingManager->SetPointerSize(0);
1384 int32_t pointerSize = pointerDrawingManager->GetPointerSize();
1385 EXPECT_EQ(pointerSize, 0);
1386 pointerDrawingManager->SetPointerSize(8);
1387 pointerSize = pointerDrawingManager->GetPointerSize();
1388 EXPECT_EQ(pointerSize, 0);
1389 }
1390
1391 /**
1392 * @tc.name: InputWindowsManagerTest_FixCursorPosition_001
1393 * @tc.desc: Test FixCursorPosition
1394 * @tc.type: FUNC
1395 * @tc.require:
1396 */
1397 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_FixCursorPosition_001, TestSize.Level1)
1398 {
1399 CALL_TEST_DEBUG;
1400 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1401 pointerDrawingManager->displayInfo_.displayDirection = DIRECTION0;
1402 pointerDrawingManager->displayInfo_.direction = DIRECTION0;
1403 pointerDrawingManager->displayInfo_.width = 500;
1404 pointerDrawingManager->displayInfo_.height = 1100;
1405 pointerDrawingManager->imageWidth_ = 48;
1406 pointerDrawingManager->imageHeight_ = 48;
1407 int32_t physicalX = 500;
1408 int32_t physicalY = 1100;
1409 pointerDrawingManager->FixCursorPosition(physicalX, physicalY);
1410 EXPECT_NE(physicalX, 497);
1411 EXPECT_NE(physicalY, 1097);
1412 pointerDrawingManager->displayInfo_.direction = DIRECTION90;
1413 physicalX = 1100;
1414 physicalY = 500;
1415 pointerDrawingManager->FixCursorPosition(physicalX, physicalY);
1416 EXPECT_NE(physicalX, 1097);
1417 pointerDrawingManager->displayInfo_.displayDirection = DIRECTION90;
1418 pointerDrawingManager->displayInfo_.direction = DIRECTION0;
1419 physicalX = 500;
1420 physicalY = 1100;
1421 pointerDrawingManager->FixCursorPosition(physicalX, physicalY);
1422 EXPECT_NE(physicalX, 500);
1423 EXPECT_NE(physicalY, 497);
1424 }
1425
1426 /**
1427 * @tc.name: InputWindowsManagerTest_CreatePointerSwitchObserver_001
1428 * @tc.desc: Test CreatePointerSwitchObserver
1429 * @tc.type: FUNC
1430 * @tc.require:
1431 */
1432 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_CreatePointerSwitchObserver_001, TestSize.Level1)
1433 {
1434 CALL_TEST_DEBUG;
1435 PointerDrawingManager pointerDrawingManager;
1436 isMagicCursor item;
1437 item.isShow = true;
1438 item.name = "test";
1439 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.CreatePointerSwitchObserver(item));
1440 }
1441
1442 /**
1443 * @tc.name: InputWindowsManagerTest_DrawCursor_001
1444 * @tc.desc: Test DrawCursor
1445 * @tc.type: FUNC
1446 * @tc.require:
1447 */
1448 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawCursor_001, TestSize.Level1)
1449 {
1450 CALL_TEST_DEBUG;
1451 PointerDrawingManager pointerDrawingManager;
1452 MOUSE_ICON mouseStyle = EAST;
1453 int32_t ret = pointerDrawingManager.DrawCursor(mouseStyle);
1454 EXPECT_EQ(ret, RET_ERR);
1455 pointerDrawingManager.surfaceNode_ = nullptr;
1456 ret = pointerDrawingManager.DrawCursor(mouseStyle);
1457 EXPECT_EQ(ret, RET_ERR);
1458 }
1459
1460 /**
1461 * @tc.name: InputWindowsManagerTest_DrawLoadingPointerStyle_001
1462 * @tc.desc: Test DrawLoadingPointerStyle
1463 * @tc.type: FUNC
1464 * @tc.require:
1465 */
1466 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawLoadingPointerStyle_001, TestSize.Level1)
1467 {
1468 CALL_TEST_DEBUG;
1469 PointerDrawingManager pointerDrawingManager;
1470 MOUSE_ICON mouseStyle = EAST;
1471 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawLoadingPointerStyle(mouseStyle));
1472 }
1473
1474 /**
1475 * @tc.name: InputWindowsManagerTest_DrawRunningPointerAnimate_001
1476 * @tc.desc: Test DrawRunningPointerAnimate
1477 * @tc.type: FUNC
1478 * @tc.require:
1479 */
1480 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawRunningPointerAnimate_001, TestSize.Level1)
1481 {
1482 CALL_TEST_DEBUG;
1483 PointerDrawingManager pointerDrawingManager;
1484 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
1485 surfaceNodeConfig.SurfaceNodeName = "pointer window";
1486 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
1487 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
1488 pointerDrawingManager.surfaceNode_->SetFrameGravity(Rosen::Gravity::RESIZE_ASPECT_FILL);
1489 pointerDrawingManager.surfaceNode_->SetPositionZ(Rosen::RSSurfaceNode::POINTER_WINDOW_POSITION_Z);
1490 MOUSE_ICON mouseStyle = EAST;
1491 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawRunningPointerAnimate(mouseStyle));
1492 }
1493
1494 /**
1495 * @tc.name: InputWindowsManagerTest_GetLayer_001
1496 * @tc.desc: Test GetLayer
1497 * @tc.type: FUNC
1498 * @tc.require:
1499 */
1500 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_GetLayer_001, TestSize.Level1)
1501 {
1502 CALL_TEST_DEBUG;
1503 PointerDrawingManager pointerDrawingManager;
1504 pointerDrawingManager.surfaceNode_ = nullptr;
1505 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.GetLayer());
1506 }
1507
1508 /**
1509 * @tc.name: InputWindowsManagerTest_SetMouseIcon_001
1510 * @tc.desc: Test SetMouseIcon
1511 * @tc.type: FUNC
1512 * @tc.require:
1513 */
1514 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_001, TestSize.Level1)
1515 {
1516 CALL_TEST_DEBUG;
1517 PointerDrawingManager pointerDrawingManager;
1518 int32_t pid = -1;
1519 int32_t windowId = 1;
1520 CursorPixelMap curPixelMap;
1521 int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, curPixelMap);
1522 EXPECT_EQ(ret, RET_ERR);
1523 pid = 1;
1524 ret = pointerDrawingManager.SetMouseIcon(pid, windowId, curPixelMap);
1525 EXPECT_EQ(ret, RET_ERR);
1526 }
1527
1528 /**
1529 * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_001
1530 * @tc.desc: Test SetMouseHotSpot
1531 * @tc.type: FUNC
1532 * @tc.require:
1533 */
1534 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_001, TestSize.Level1)
1535 {
1536 CALL_TEST_DEBUG;
1537 PointerDrawingManager pointerDrawingManager;
1538 int32_t pid = -1;
1539 int32_t windowId = 1;
1540 int32_t hotSpotX = 100;
1541 int32_t hotSpotY = 100;
1542 int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1543 EXPECT_EQ(ret, RET_ERR);
1544 pid = 1;
1545 windowId = -1;
1546 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1547 EXPECT_EQ(ret, RET_ERR);
1548 pid = 1;
1549 windowId = 1;
1550 hotSpotX = -1;
1551 hotSpotY = -1;
1552 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1553 EXPECT_EQ(ret, RET_ERR);
1554 pid = 1;
1555 windowId = 1;
1556 hotSpotX = 100;
1557 hotSpotY = 100;
1558 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1559 EXPECT_EQ(ret, RET_ERR);
1560 }
1561
1562 /**
1563 * @tc.name: InputWindowsManagerTest_DecodeImageToPixelMap_001
1564 * @tc.desc: Test DecodeImageToPixelMap
1565 * @tc.type: FUNC
1566 * @tc.require:
1567 */
1568 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DecodeImageToPixelMap_001, TestSize.Level1)
1569 {
1570 CALL_TEST_DEBUG;
1571 PointerDrawingManager pointerDrawingManager;
1572 std::string iconPath = ("/system/etc/multimodalinput/mouse_icon/Loading_Left.svg");
1573 pointerDrawingManager.tempPointerColor_ = 1;
1574 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DecodeImageToPixelMap(MOUSE_ICON::RUNNING));
1575 }
1576
1577 /**
1578 * @tc.name: InputWindowsManagerTest_UpdatePointerVisible_001
1579 * @tc.desc: Test UpdatePointerVisible
1580 * @tc.type: FUNC
1581 * @tc.require:
1582 */
1583 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdatePointerVisible_001, TestSize.Level1)
1584 {
1585 CALL_TEST_DEBUG;
1586 PointerDrawingManager pointerDrawingManager;
1587 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
1588 surfaceNodeConfig.SurfaceNodeName = "pointer window";
1589 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
1590 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
1591 pointerDrawingManager.mouseDisplayState_ = true;
1592 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.UpdatePointerVisible());
1593 pointerDrawingManager.mouseDisplayState_ = false;
1594 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.UpdatePointerVisible());
1595 }
1596
1597 /**
1598 * @tc.name: InputWindowsManagerTest_IsPointerVisible_001
1599 * @tc.desc: Test IsPointerVisible
1600 * @tc.type: FUNC
1601 * @tc.require:
1602 */
1603 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_IsPointerVisible_001, TestSize.Level1)
1604 {
1605 CALL_TEST_DEBUG;
1606 PointerDrawingManager pointerDrawingManager;
1607 bool ret = pointerDrawingManager.IsPointerVisible();
1608 EXPECT_TRUE(ret);
1609 }
1610
1611 /**
1612 * @tc.name: InputWindowsManagerTest_DeletePointerVisible_001
1613 * @tc.desc: Test DeletePointerVisible
1614 * @tc.type: FUNC
1615 * @tc.require:
1616 */
1617 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DeletePointerVisible_001, TestSize.Level1)
1618 {
1619 CALL_TEST_DEBUG;
1620 PointerDrawingManager pointerDrawingManager;
1621 int32_t pid = 1;
1622 PointerDrawingManager::PidInfo info = {.pid = 1, .visible = true};
1623 pointerDrawingManager.pidInfos_.push_back(info);
1624 info = {.pid = 2, .visible = true};
1625 pointerDrawingManager.pidInfos_.push_back(info);
1626 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
1627 }
1628
1629 /**
1630 * @tc.name: InputWindowsManagerTest_SetPointerLocation_001
1631 * @tc.desc: Test SetPointerLocation
1632 * @tc.type: FUNC
1633 * @tc.require:
1634 */
1635 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerLocation_001, TestSize.Level1)
1636 {
1637 CALL_TEST_DEBUG;
1638 PointerDrawingManager pointerDrawingManager;
1639 int32_t x = 100;
1640 int32_t y = 100;
1641 uint64_t displayId = 0;
1642 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.SetPointerLocation(x, y, displayId));
1643 }
1644
1645 /**
1646 * @tc.name: InputWindowsManagerTest_UpdateDefaultPointerStyle_001
1647 * @tc.desc: Test UpdateDefaultPointerStyle
1648 * @tc.type: FUNC
1649 * @tc.require:
1650 */
1651 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdateDefaultPointerStyle_001, TestSize.Level1)
1652 {
1653 CALL_TEST_DEBUG;
1654 PointerDrawingManager pointerDrawingManager;
1655 int32_t pid = 1;
1656 int32_t windowId = 1;
1657 PointerStyle pointerStyle;
1658 pointerStyle.id = 0;
1659 pointerStyle.color = 0;
1660 pointerStyle.size = 2;
1661 int32_t ret = pointerDrawingManager.UpdateDefaultPointerStyle(pid, windowId, pointerStyle);
1662 EXPECT_EQ(ret, RET_OK);
1663 windowId = -1;
1664 ret = pointerDrawingManager.UpdateDefaultPointerStyle(pid, windowId, pointerStyle);
1665 EXPECT_EQ(ret, RET_OK);
1666 }
1667
1668 /**
1669 * @tc.name: InputWindowsManagerTest_UpdateIconPath_001
1670 * @tc.desc: Test UpdateIconPath
1671 * @tc.type: FUNC
1672 * @tc.require:
1673 */
1674 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdateIconPath_001, TestSize.Level1)
1675 {
1676 CALL_TEST_DEBUG;
1677 PointerDrawingManager pointerDrawingManager;
1678 MOUSE_ICON mouseStyle = EAST;
1679 std::string iconPath = "test";
1680 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.UpdateIconPath(mouseStyle, iconPath));
1681 }
1682
1683 /**
1684 * @tc.name: InputWindowsManagerTest_SetPointerStylePreference_001
1685 * @tc.desc: Test SetPointerStylePreference
1686 * @tc.type: FUNC
1687 * @tc.require:
1688 */
1689 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStylePreference_001, TestSize.Level1)
1690 {
1691 CALL_TEST_DEBUG;
1692 PointerDrawingManager pointerDrawingManager;
1693 PointerStyle pointerStyle;
1694 pointerStyle.id = 0;
1695 pointerStyle.color = 0;
1696 pointerStyle.size = 2;
1697 int32_t ret = pointerDrawingManager.SetPointerStylePreference(pointerStyle);
1698 EXPECT_EQ(ret, RET_OK);
1699 }
1700
1701 /**
1702 * @tc.name: InputWindowsManagerTest_CheckPointerStyleParam_001
1703 * @tc.desc: Test CheckPointerStyleParam
1704 * @tc.type: FUNC
1705 * @tc.require:
1706 */
1707 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_CheckPointerStyleParam_001, TestSize.Level1)
1708 {
1709 CALL_TEST_DEBUG;
1710 PointerDrawingManager pointerDrawingManager;
1711 PointerStyle pointerStyle;
1712 pointerStyle.id = EAST;
1713 pointerStyle.color = 0;
1714 pointerStyle.size = 2;
1715 int32_t windowId = -2;
1716 bool ret = pointerDrawingManager.CheckPointerStyleParam(windowId, pointerStyle);
1717 EXPECT_FALSE(ret);
1718 windowId = 1;
1719 ret = pointerDrawingManager.CheckPointerStyleParam(windowId, pointerStyle);
1720 EXPECT_TRUE(ret);
1721 }
1722
1723 /**
1724 * @tc.name: InputWindowsManagerTest_CheckMouseIconPath_001
1725 * @tc.desc: Test CheckMouseIconPath
1726 * @tc.type: FUNC
1727 * @tc.require:
1728 */
1729 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_CheckMouseIconPath_001, TestSize.Level1)
1730 {
1731 CALL_TEST_DEBUG;
1732 PointerDrawingManager pointerDrawingManager;
1733 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.CheckMouseIconPath());
1734 }
1735
1736 /**
1737 * @tc.name: InputWindowsManagerTest_DrawPixelmap_001
1738 * @tc.desc: Test DrawPixelmap
1739 * @tc.type: FUNC
1740 * @tc.require:
1741 */
1742 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPixelmap_001, TestSize.Level1)
1743 {
1744 CALL_TEST_DEBUG;
1745 PointerDrawingManager pointerDrawingManager;
1746 pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1747 OHOS::Rosen::Drawing::Canvas canvas;
1748 MOUSE_ICON mouseStyle = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
1749 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPixelmap(canvas, mouseStyle));
1750 }
1751
1752 /**
1753 * @tc.name: InputWindowsManagerTest_DrawPixelmap_002
1754 * @tc.desc: Test DrawPixelmap
1755 * @tc.type: FUNC
1756 * @tc.require:
1757 */
1758 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPixelmap_002, TestSize.Level1)
1759 {
1760 CALL_TEST_DEBUG;
1761 PointerDrawingManager pointerDrawingManager;
1762 pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1763 OHOS::Rosen::Drawing::Canvas canvas;
1764 MOUSE_ICON mouseStyle = MOUSE_ICON::RUNNING;
1765 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPixelmap(canvas, mouseStyle));
1766 }
1767
1768 /**
1769 * @tc.name: InputWindowsManagerTest_DrawPixelmap_003
1770 * @tc.desc: Test DrawPixelmap
1771 * @tc.type: FUNC
1772 * @tc.require:
1773 */
1774 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPixelmap_003, TestSize.Level1)
1775 {
1776 CALL_TEST_DEBUG;
1777 PointerDrawingManager pointerDrawingManager;
1778 pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1779 OHOS::Rosen::Drawing::Canvas canvas;
1780 MOUSE_ICON mouseStyle = MOUSE_ICON::WEST_EAST;
1781 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPixelmap(canvas, mouseStyle));
1782 }
1783
1784 /**
1785 * @tc.name: InputWindowsManagerTest_SetCustomCursor_001
1786 * @tc.desc: Test SetCustomCursor
1787 * @tc.type: FUNC
1788 * @tc.require:
1789 */
1790 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetCustomCursor_001, TestSize.Level1)
1791 {
1792 CALL_TEST_DEBUG;
1793 PointerDrawingManager pointerDrawingManager;
1794 const std::string iconPath = "/system/etc/multimodalinput/mouse_icon/North_South.svg";
1795 std::unique_ptr<OHOS::Media::PixelMap> pixelMap = SetMouseIconTest(iconPath);
1796 ASSERT_NE(pixelMap, nullptr);
1797 int32_t pid = -1;
1798 int32_t windowId = 1;
1799 int32_t focusX = 2;
1800 int32_t focusY = 3;
1801 CursorPixelMap curPixelMap;
1802 curPixelMap.pixelMap = (void *)pixelMap.get();
1803 int32_t ret = pointerDrawingManager.SetCustomCursor(curPixelMap, pid, windowId, focusX, focusY);
1804 ASSERT_EQ(ret, RET_ERR);
1805 }
1806
1807 /**
1808 * @tc.name: InputWindowsManagerTest_SetMouseIcon_002
1809 * @tc.desc: Test SetMouseIcon
1810 * @tc.type: FUNC
1811 * @tc.require:
1812 */
1813 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_002, TestSize.Level1)
1814 {
1815 CALL_TEST_DEBUG;
1816 PointerDrawingManager pointerDrawingManager;
1817 const std::string iconPath = "/system/etc/multimodalinput/mouse_icon/North_South.svg";
1818 std::unique_ptr<OHOS::Media::PixelMap> pixelMap = SetMouseIconTest(iconPath);
1819 ASSERT_NE(pixelMap, nullptr);
1820 int32_t pid = -1;
1821 int32_t windowId = 2;
1822 CursorPixelMap curPixelMap;
1823 curPixelMap.pixelMap = (void *)pixelMap.get();
1824 int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, curPixelMap);
1825 ASSERT_EQ(ret, RET_ERR);
1826 }
1827
1828 /**
1829 * @tc.name: InputWindowsManagerTest_SetMouseIcon_004
1830 * @tc.desc: Test SetMouseIcon
1831 * @tc.type: FUNC
1832 * @tc.require:
1833 */
1834 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_004, TestSize.Level1)
1835 {
1836 CALL_TEST_DEBUG;
1837 PointerDrawingManager pointerDrawingManager;
1838 const std::string iconPath = "/system/etc/multimodalinput/mouse_icon/North_South.svg";
1839 std::unique_ptr<OHOS::Media::PixelMap> pixelMap = SetMouseIconTest(iconPath);
1840 int32_t pid = 1;
1841 int32_t windowId = 2;
1842 CursorPixelMap curPixelMap;
1843 curPixelMap.pixelMap = (void *)pixelMap.release();
1844 int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, curPixelMap);
1845 ASSERT_EQ(ret, RET_OK);
1846 }
1847
1848 /**
1849 * @tc.name: InputWindowsManagerTest_SetMouseIcon_005
1850 * @tc.desc: Test SetMouseIcon
1851 * @tc.type: FUNC
1852 * @tc.require:
1853 */
1854 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_005, TestSize.Level1)
1855 {
1856 CALL_TEST_DEBUG;
1857 PointerDrawingManager pointerDrawingManager;
1858 const std::string iconPath = "/system/etc/multimodalinput/mouse_icon/North_South.svg";
1859 std::unique_ptr<OHOS::Media::PixelMap> pixelMap = SetMouseIconTest(iconPath);
1860 int32_t pid = 2;
1861 int32_t windowId = 2;
1862 CursorPixelMap curPixelMap;
1863 curPixelMap.pixelMap = (void *)pixelMap.release();
1864 int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, curPixelMap);
1865 ASSERT_EQ(ret, RET_OK);
1866 }
1867
1868
1869 /**
1870 * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_002
1871 * @tc.desc: Test SetMouseHotSpot
1872 * @tc.type: FUNC
1873 * @tc.require:
1874 */
1875 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_002, TestSize.Level1)
1876 {
1877 CALL_TEST_DEBUG;
1878 PointerDrawingManager pointerDrawingManager;
1879 int32_t pid = -1;
1880 int32_t windowId = 2;
1881 int32_t hotSpotX = 3;
1882 int32_t hotSpotY = 4;
1883 int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1884 ASSERT_EQ(ret, RET_ERR);
1885 pid = 1;
1886 windowId = -2;
1887 hotSpotX = 3;
1888 hotSpotY = 4;
1889 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1890 ASSERT_EQ(ret, RET_ERR);
1891 pid = 1;
1892 windowId = 2;
1893 hotSpotX = 3;
1894 hotSpotY = 4;
1895 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1896 ASSERT_EQ(ret, RET_ERR);
1897 pid = 2;
1898 windowId = 2;
1899 hotSpotX = -3;
1900 hotSpotY = -4;
1901 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1902 ASSERT_EQ(ret, RET_ERR);
1903 pid = 2;
1904 windowId = 2;
1905 hotSpotX = 3;
1906 hotSpotY = 4;
1907 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1908 ASSERT_EQ(ret, RET_ERR);
1909 }
1910
1911 /**
1912 * @tc.name: InputWindowsManagerTest_OnDisplayInfo_001
1913 * @tc.desc: Test OnDisplayInfo
1914 * @tc.type: FUNC
1915 * @tc.require:
1916 */
1917 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_OnDisplayInfo_001, TestSize.Level1)
1918 {
1919 CALL_TEST_DEBUG;
1920 PointerDrawingManager pointerDrawingManager;
1921 OLD::DisplayInfo displaysInfo;
1922 OLD::DisplayGroupInfo displayGroupInfo;
1923 displayGroupInfo.displaysInfo.push_back(displaysInfo);
1924 displayGroupInfo.focusWindowId = 0;
1925 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
1926 surfaceNodeConfig.SurfaceNodeName = "pointer window";
1927 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
1928 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
1929 pointerDrawingManager.surfaceNode_->SetFrameGravity(Rosen::Gravity::RESIZE_ASPECT_FILL);
1930 pointerDrawingManager.surfaceNode_->SetPositionZ(Rosen::RSSurfaceNode::POINTER_WINDOW_POSITION_Z);
1931 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo));
1932 }
1933
1934 /**
1935 * @tc.name: InputWindowsManagerTest_OnDisplayInfo_002
1936 * @tc.desc: Test OnDisplayInfo
1937 * @tc.type: FUNC
1938 * @tc.require:
1939 */
1940 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_OnDisplayInfo_002, TestSize.Level1)
1941 {
1942 CALL_TEST_DEBUG;
1943 PointerDrawingManager pointerDrawingManager;
1944 OLD::DisplayInfo displaysInfo;
1945 OLD::DisplayGroupInfo displayGroupInfo;
1946 displayGroupInfo.displaysInfo.push_back(displaysInfo);
1947 displayGroupInfo.focusWindowId = 0;
1948 pointerDrawingManager.surfaceNode_ = nullptr;
1949 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo));
1950 }
1951
1952 /**
1953 * @tc.name: InputWindowsManagerTest_DrawManager_004
1954 * @tc.desc: Test DrawManager
1955 * @tc.type: FUNC
1956 * @tc.require:
1957 */
1958 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawManager_004, TestSize.Level1)
1959 {
1960 CALL_TEST_DEBUG;
1961 PointerDrawingManager pointerDrawingManager;
1962 pointerDrawingManager.hasDisplay_ = false;
1963 pointerDrawingManager.hasPointerDevice_ = true;
1964 pointerDrawingManager.surfaceNode_ = nullptr;
1965 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
1966 }
1967
1968 /**
1969 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_005
1970 * @tc.desc: Test DrawPointerStyle
1971 * @tc.type: FUNC
1972 * @tc.require:
1973 */
1974 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_005, TestSize.Level1)
1975 {
1976 CALL_TEST_DEBUG;
1977 PointerDrawingManager pointerDrawingManager;
1978 PointerStyle pointerStyle;
1979 pointerStyle.id = 0;
1980 pointerStyle.color = 0;
1981 pointerStyle.size = 2;
1982 pointerDrawingManager.hasDisplay_ = false;
1983 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
1984 }
1985
1986 /**
1987 * @tc.name: PointerDrawingManagerTest_ConvertToColorSpace
1988 * @tc.desc: Test ConvertToColorSpace
1989 * @tc.type: FUNC
1990 * @tc.require:
1991 */
1992 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_ConvertToColorSpace, TestSize.Level1)
1993 {
1994 CALL_TEST_DEBUG;
1995 PointerDrawingManager pointerDrawingManager;
1996 Media::ColorSpace colorSpace = Media::ColorSpace::DISPLAY_P3;
1997 EXPECT_NE(pointerDrawingManager.ConvertToColorSpace(colorSpace), nullptr);
1998 colorSpace = Media::ColorSpace::LINEAR_SRGB;
1999 EXPECT_NE(pointerDrawingManager.ConvertToColorSpace(colorSpace), nullptr);
2000 colorSpace = Media::ColorSpace::SRGB;
2001 EXPECT_NE(pointerDrawingManager.ConvertToColorSpace(colorSpace), nullptr);
2002 colorSpace = static_cast<Media::ColorSpace>(5);
2003 EXPECT_NE(pointerDrawingManager.ConvertToColorSpace(colorSpace), nullptr);
2004 }
2005
2006 /**
2007 * @tc.name: PointerDrawingManagerTest_PixelFormatToColorType
2008 * @tc.desc: Test PixelFormatToColorType
2009 * @tc.type: FUNC
2010 * @tc.require:
2011 */
2012 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_PixelFormatToColorType, TestSize.Level1)
2013 {
2014 CALL_TEST_DEBUG;
2015 PointerDrawingManager pointerDrawingManager;
2016 Media::PixelFormat pixelFmt = Media::PixelFormat::RGB_565;
2017 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_RGB_565);
2018 pixelFmt = Media::PixelFormat::RGBA_8888;
2019 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_RGBA_8888);
2020 pixelFmt = Media::PixelFormat::BGRA_8888;
2021 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_BGRA_8888);
2022 pixelFmt = Media::PixelFormat::ALPHA_8;
2023 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_ALPHA_8);
2024 pixelFmt = Media::PixelFormat::RGBA_F16;
2025 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_RGBA_F16);
2026 pixelFmt = Media::PixelFormat::UNKNOWN;
2027 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
2028 pixelFmt = Media::PixelFormat::ARGB_8888;
2029 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
2030 pixelFmt = Media::PixelFormat::RGB_888;
2031 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
2032 pixelFmt = Media::PixelFormat::NV21;
2033 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
2034 pixelFmt = Media::PixelFormat::NV12;
2035 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
2036 pixelFmt = Media::PixelFormat::CMYK;
2037 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
2038 pixelFmt = static_cast<Media::PixelFormat>(100);
2039 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
2040 }
2041
2042 /**
2043 * @tc.name: PointerDrawingManagerTest__AlphaTypeToAlphaType
2044 * @tc.desc: Test AlphaTypeToAlphaType
2045 * @tc.type: Function
2046 * @tc.require:
2047 */
2048 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_AlphaTypeToAlphaType, TestSize.Level1)
2049 {
2050 CALL_TEST_DEBUG;
2051 PointerDrawingManager pointerDrawingManager;
2052 Media::AlphaType alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_UNKNOWN;
2053 EXPECT_EQ(pointerDrawingManager.AlphaTypeToAlphaType(alphaType), Rosen::Drawing::AlphaType::ALPHATYPE_UNKNOWN);
2054 alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_OPAQUE;
2055 EXPECT_EQ(pointerDrawingManager.AlphaTypeToAlphaType(alphaType), Rosen::Drawing::AlphaType::ALPHATYPE_OPAQUE);
2056 alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_PREMUL;
2057 EXPECT_EQ(pointerDrawingManager.AlphaTypeToAlphaType(alphaType), Rosen::Drawing::AlphaType::ALPHATYPE_PREMUL);
2058 alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_UNPREMUL;
2059 EXPECT_EQ(pointerDrawingManager.AlphaTypeToAlphaType(alphaType), Rosen::Drawing::AlphaType::ALPHATYPE_UNPREMUL);
2060 alphaType = static_cast<Media::AlphaType>(5);
2061 EXPECT_EQ(pointerDrawingManager.AlphaTypeToAlphaType(alphaType), Rosen::Drawing::AlphaType::ALPHATYPE_UNKNOWN);
2062 }
2063
2064 /**
2065 * @tc.name: PointerDrawingManagerTest_ExtractDrawingImage_001
2066 * @tc.desc: Test ExtractDrawingImage
2067 * @tc.type: FUNC
2068 * @tc.require:
2069 */
2070 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_ExtractDrawingImage_001, TestSize.Level1)
2071 {
2072 CALL_TEST_DEBUG;
2073 OHOS::Rosen::Drawing::Bitmap bitmap;
2074 OHOS::Rosen::Drawing::BitmapFormat format {
2075 OHOS::Rosen::Drawing::COLORTYPE_RGBA_8888, OHOS::Rosen::Drawing::ALPHATYPE_OPAQUE};
2076 PointerDrawingManager pointerDrawingManager;
2077 bitmap.Build(64, 64, format);
2078 OHOS::Rosen::Drawing::Canvas canvas(256, 256);
2079 canvas.Bind(bitmap);
2080 canvas.Clear(OHOS::Rosen::Drawing::Color::COLOR_TRANSPARENT);
2081 MOUSE_ICON mouseStyle = MOUSE_ICON::RUNNING_LEFT;
2082 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawImage(canvas, mouseStyle));
2083 }
2084
2085 /**
2086 * @tc.name: PointerDrawingManagerTest_ExtractDrawingImage_002
2087 * @tc.desc: Test ExtractDrawingImage
2088 * @tc.type: FUNC
2089 * @tc.require:
2090 */
2091 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_ExtractDrawingImage_002, TestSize.Level1)
2092 {
2093 CALL_TEST_DEBUG;
2094 OHOS::Rosen::Drawing::Bitmap bitmap;
2095 OHOS::Rosen::Drawing::BitmapFormat format {
2096 OHOS::Rosen::Drawing::COLORTYPE_RGBA_8888, OHOS::Rosen::Drawing::ALPHATYPE_OPAQUE};
2097 PointerDrawingManager pointerDrawingManager;
2098 bitmap.Build(64, 64, format);
2099 OHOS::Rosen::Drawing::Canvas canvas(256, 256);
2100 canvas.Bind(bitmap);
2101 canvas.Clear(OHOS::Rosen::Drawing::Color::COLOR_TRANSPARENT);
2102 MOUSE_ICON mouseStyle = MOUSE_ICON::RUNNING;
2103 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawImage(canvas, mouseStyle));
2104 }
2105
2106 /**
2107 * @tc.name: PointerDrawingManagerTest_ExtractDrawingImage_003
2108 * @tc.desc: Test ExtractDrawingImage
2109 * @tc.type: FUNC
2110 * @tc.require:
2111 */
2112 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_ExtractDrawingImage_003, TestSize.Level1)
2113 {
2114 CALL_TEST_DEBUG;
2115 OHOS::Rosen::Drawing::Bitmap bitmap;
2116 OHOS::Rosen::Drawing::BitmapFormat format {
2117 OHOS::Rosen::Drawing::COLORTYPE_RGBA_8888, OHOS::Rosen::Drawing::ALPHATYPE_OPAQUE};
2118 PointerDrawingManager pointerDrawingManager;
2119 bitmap.Build(64, 64, format);
2120 OHOS::Rosen::Drawing::Canvas canvas(256, 256);
2121 canvas.Bind(bitmap);
2122 canvas.Clear(OHOS::Rosen::Drawing::Color::COLOR_TRANSPARENT);
2123 MOUSE_ICON mouseStyle = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
2124 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawImage(canvas, mouseStyle));
2125 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.SetPointerLocation(200, 200, 0));
2126 }
2127
2128 /**
2129 * @tc.name: InputWindowsManagerTest_DrawPointer_001
2130 * @tc.desc: Test DrawPointer
2131 * @tc.type: FUNC
2132 * @tc.require:
2133 */
2134 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointer_001, TestSize.Level1)
2135 {
2136 CALL_TEST_DEBUG;
2137 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2138 PointerStyle pointerStyle;
2139 pointerStyle.id = 0;
2140 pointerDrawingManager->DrawPointer(1, 100, 100, pointerStyle, DIRECTION180);
2141 EXPECT_EQ(pointerDrawingManager->lastDirection_, DIRECTION180);
2142 pointerDrawingManager->DrawPointer(1, 200, 200, pointerStyle, DIRECTION270);
2143 EXPECT_EQ(pointerDrawingManager->lastDirection_, DIRECTION270);
2144 }
2145
2146 /**
2147 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_001
2148 * @tc.desc: Test DrawPointerStyle
2149 * @tc.type: FUNC
2150 * @tc.require:
2151 */
2152 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_001, TestSize.Level1)
2153 {
2154 CALL_TEST_DEBUG;
2155 PointerDrawingManager pointerDrawingManager;
2156 PointerStyle pointerStyle;
2157 pointerStyle.id = EAST;
2158 pointerStyle.color = 0;
2159 pointerStyle.size = 2;
2160 pointerDrawingManager.hasDisplay_ = true;
2161 pointerDrawingManager.hasPointerDevice_ = true;
2162 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
2163 pointerDrawingManager.lastPhysicalX_ = -1;
2164 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
2165 }
2166 /**
2167 * @tc.name: InputWindowsManagerTest_InitPointerCallback_001
2168 * @tc.desc: Test InitPointerCallback
2169 * @tc.type: FUNC
2170 * @tc.require:
2171 */
2172 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_InitPointerCallback_001, TestSize.Level1)
2173 {
2174 CALL_TEST_DEBUG;
2175 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2176 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->InitPointerCallback());
2177 }
2178
2179 /**
2180 * @tc.name: InputWindowsManagerTest_InitPointerObserver_001
2181 * @tc.desc: Test InitPointerObserver
2182 * @tc.type: FUNC
2183 * @tc.require:
2184 */
2185 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_InitPointerObserver_001, TestSize.Level1)
2186 {
2187 CALL_TEST_DEBUG;
2188 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2189 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->InitPointerObserver());
2190 }
2191
2192 #ifdef OHOS_BUILD_ENABLE_MAGICCURSOR
2193 /**
2194 * @tc.name: InputWindowsManagerTest_SetPixelMap
2195 * @tc.desc: Test SetPixelMap
2196 * @tc.type: FUNC
2197 * @tc.require:
2198 */
2199 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPixelMap, TestSize.Level1)
2200 {
2201 CALL_TEST_DEBUG;
2202 PointerDrawingManager manager;
2203 std::shared_ptr<OHOS::Media::PixelMap> pixelMap = CreatePixelMap(MIDDLE_PIXEL_MAP_WIDTH, MIDDLE_PIXEL_MAP_HEIGHT);
2204 ASSERT_NO_FATAL_FAILURE(manager.SetPixelMap(pixelMap));
2205 }
2206 #endif // OHOS_BUILD_ENABLE_MAGICCURSOR
2207
2208 /**
2209 * @tc.name: PointerDrawingManagerTest_SwitchPointerStyle
2210 * @tc.desc: Test SwitchPointerStyle
2211 * @tc.type: FUNC
2212 * @tc.require:
2213 */
2214 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_SwitchPointerStyle, TestSize.Level1)
2215 {
2216 CALL_TEST_DEBUG;
2217 PointerDrawingManager pointerDrawMgr;
2218 pointerDrawMgr.lastMouseStyle_.id = 2;
2219 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.SwitchPointerStyle());
2220 }
2221
2222 /**
2223 * @tc.name: PointerDrawingManagerTest_CreateMagicCursorChangeObserver
2224 * @tc.desc: Test CreateMagicCursorChangeObserver
2225 * @tc.type: FUNC
2226 * @tc.require:
2227 */
2228 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_CreateMagicCursorChangeObserver, TestSize.Level1)
2229 {
2230 CALL_TEST_DEBUG;
2231 PointerDrawingManager pointerDrawMgr;
2232 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.CreateMagicCursorChangeObserver());
2233 }
2234
2235 /**
2236 * @tc.name: PointerDrawingManagerTest_UpdateStyleOptions
2237 * @tc.desc: Test UpdateStyleOptions
2238 * @tc.type: FUNC
2239 * @tc.require:
2240 */
2241 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_UpdateStyleOptions, TestSize.Level1)
2242 {
2243 CALL_TEST_DEBUG;
2244 PointerDrawingManager pointerDrawMgr;
2245 pointerDrawMgr.pid_ = 100;
2246 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.UpdateStyleOptions());
2247 }
2248
2249 /**
2250 * @tc.name: PointerDrawingManagerTest_InitPointerObserver
2251 * @tc.desc: Test InitPointerObserver
2252 * @tc.type: FUNC
2253 * @tc.require:
2254 */
2255 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_InitPointerObserver, TestSize.Level1)
2256 {
2257 CALL_TEST_DEBUG;
2258 PointerDrawingManager pointerDrawMgr;
2259 pointerDrawMgr.hasInitObserver_ = true;
2260 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.InitPointerObserver());
2261
2262 pointerDrawMgr.hasInitObserver_ = false;
2263 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.InitPointerObserver());
2264 }
2265
2266 /**
2267 * @tc.name: PointerDrawingManagerTest_AdjustMouseFocusByDirection90
2268 * @tc.desc: Test AdjustMouseFocusByDirection90
2269 * @tc.type: FUNC
2270 * @tc.require:
2271 */
2272 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_AdjustMouseFocusByDirection90, TestSize.Level1)
2273 {
2274 CALL_TEST_DEBUG;
2275 PointerDrawingManager pointerDrawMgr;
2276 ICON_TYPE iconType = ANGLE_SW;
2277 int32_t physicalX = 500;
2278 int32_t physicalY = 500;
2279 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.AdjustMouseFocusByDirection90(iconType, physicalX, physicalY));
2280 iconType = ANGLE_CENTER;
2281 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.AdjustMouseFocusByDirection90(iconType, physicalX, physicalY));
2282 iconType = ANGLE_NW_RIGHT;
2283 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.AdjustMouseFocusByDirection90(iconType, physicalX, physicalY));
2284 iconType = ANGLE_NW;
2285 pointerDrawMgr.userIcon_ = CreatePixelMap(MIDDLE_PIXEL_MAP_WIDTH, MIDDLE_PIXEL_MAP_HEIGHT);
2286 ASSERT_NE(pointerDrawMgr.userIcon_, nullptr);
2287 pointerDrawMgr.currentMouseStyle_.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
2288 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.AdjustMouseFocusByDirection90(iconType, physicalX, physicalY));
2289 pointerDrawMgr.userIcon_ = nullptr;
2290 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.AdjustMouseFocusByDirection90(iconType, physicalX, physicalY));
2291 }
2292
2293 /**
2294 * @tc.name: InputWindowsManagerTest_UpdatePointerDevice_003
2295 * @tc.desc: Test UpdatePointerDevice
2296 * @tc.type: FUNC
2297 * @tc.require:
2298 */
2299 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdatePointerDevice_003, TestSize.Level1)
2300 {
2301 CALL_TEST_DEBUG;
2302 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2303 EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 100);
2304 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(true, false, true));
2305 pointerDrawingManager->UpdatePointerDevice(true, true, true);
2306 EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 100);
2307 pointerDrawingManager->surfaceNode_ = nullptr;
2308 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(false, false, true));
2309 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2310 surfaceNodeConfig.SurfaceNodeName = "pointer window";
2311 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2312 pointerDrawingManager->surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2313 ASSERT_TRUE(pointerDrawingManager->surfaceNode_ != nullptr);
2314 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(false, false, true));
2315 }
2316
2317 /**
2318 * @tc.name: InputWindowsManagerTest_DrawManager_001
2319 * @tc.desc: Test DrawManager
2320 * @tc.type: FUNC
2321 * @tc.require:
2322 */
2323 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawManager_001, TestSize.Level1)
2324 {
2325 CALL_TEST_DEBUG;
2326 PointerDrawingManager pointerDrawingManager;
2327 pointerDrawingManager.hasDisplay_ = false;
2328 pointerDrawingManager.hasPointerDevice_ = true;
2329 pointerDrawingManager.surfaceNode_ = nullptr;
2330 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2331 pointerDrawingManager.hasDisplay_ = true;
2332 pointerDrawingManager.hasPointerDevice_ = false;
2333 pointerDrawingManager.surfaceNode_ = nullptr;
2334 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2335 pointerDrawingManager.hasDisplay_ = false;
2336 pointerDrawingManager.hasPointerDevice_ = false;
2337 pointerDrawingManager.surfaceNode_ = nullptr;
2338 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2339 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2340 surfaceNodeConfig.SurfaceNodeName = "pointer window";
2341 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2342 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2343 ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
2344 pointerDrawingManager.hasDisplay_ = true;
2345 pointerDrawingManager.hasPointerDevice_ = true;
2346 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2347 pointerDrawingManager.hasDisplay_ = false;
2348 pointerDrawingManager.hasPointerDevice_ = true;
2349 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2350 pointerDrawingManager.hasDisplay_ = true;
2351 pointerDrawingManager.hasPointerDevice_ = false;
2352 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2353 pointerDrawingManager.hasDisplay_ = false;
2354 pointerDrawingManager.hasPointerDevice_ = false;
2355 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2356 pointerDrawingManager.hasDisplay_ = true;
2357 pointerDrawingManager.hasPointerDevice_ = true;
2358 pointerDrawingManager.surfaceNode_ = nullptr;
2359 pointerDrawingManager.lastPhysicalX_ = -1;
2360 pointerDrawingManager.lastPhysicalY_ = 1;
2361 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2362 pointerDrawingManager.lastPhysicalX_ = 1;
2363 pointerDrawingManager.lastPhysicalY_ = -1;
2364 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2365 pointerDrawingManager.lastPhysicalX_ = -1;
2366 pointerDrawingManager.lastPhysicalY_ = -1;
2367 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2368 pointerDrawingManager.lastPhysicalX_ = 1;
2369 pointerDrawingManager.lastPhysicalY_ = 1;
2370 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2371 }
2372
2373 /**
2374 * @tc.name: InputWindowsManagerTest_DrawManager_002
2375 * @tc.desc: Test DrawManager
2376 * @tc.type: FUNC
2377 * @tc.require:
2378 */
2379 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawManager_002, TestSize.Level1)
2380 {
2381 CALL_TEST_DEBUG;
2382 PointerDrawingManager pointerDrawingManager;
2383 pointerDrawingManager.hasDisplay_ = true;
2384 pointerDrawingManager.hasPointerDevice_ = true;
2385 pointerDrawingManager.surfaceNode_ = nullptr;
2386 pointerDrawingManager.displayInfo_.displayDirection = DIRECTION0;
2387 pointerDrawingManager.lastPhysicalX_ = -1;
2388 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2389 }
2390
2391 /**
2392 * @tc.name: InputWindowsManagerTest_DrawManager_003
2393 * @tc.desc: Test DrawManager
2394 * @tc.type: FUNC
2395 * @tc.require:
2396 */
2397 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawManager_003, TestSize.Level1)
2398 {
2399 CALL_TEST_DEBUG;
2400 PointerDrawingManager pointerDrawingManager;
2401 pointerDrawingManager.hasDisplay_ = true;
2402 pointerDrawingManager.hasPointerDevice_ = true;
2403 pointerDrawingManager.surfaceNode_ = nullptr;
2404 pointerDrawingManager.displayInfo_.displayDirection = DIRECTION90;
2405 pointerDrawingManager.lastPhysicalX_ = 2;
2406 pointerDrawingManager.lastPhysicalY_ = 2;
2407 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2408 }
2409
2410 /**
2411 * @tc.name: InputWindowsManagerTest_DeletePointerVisible_002
2412 * @tc.desc: Test DeletePointerVisible
2413 * @tc.type: FUNC
2414 * @tc.require:
2415 */
2416 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DeletePointerVisible_002, TestSize.Level1)
2417 {
2418 CALL_TEST_DEBUG;
2419 PointerDrawingManager pointerDrawingManager;
2420 int32_t pid = 1;
2421 pointerDrawingManager.surfaceNode_ = nullptr;
2422 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
2423 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2424 surfaceNodeConfig.SurfaceNodeName = "pointer window";
2425 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2426 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2427 ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
2428 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
2429 }
2430
2431 /**
2432 * @tc.name: InputWindowsManagerTest_DeletePointerVisible_003
2433 * @tc.desc: Test DeletePointerVisible
2434 * @tc.type: FUNC
2435 * @tc.require:
2436 */
2437 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DeletePointerVisible_003, TestSize.Level1)
2438 {
2439 CALL_TEST_DEBUG;
2440 PointerDrawingManager pointerDrawingManager;
2441 int32_t pid = 1;
2442 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
2443 PointerDrawingManager::PidInfo info = {.pid = 1, .visible = true};
2444 pointerDrawingManager.pidInfos_.push_back(info);
2445 info = {.pid = 2, .visible = true};
2446 pointerDrawingManager.pidInfos_.push_back(info);
2447 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
2448 pid = 5;
2449 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
2450 }
2451
2452 /**
2453 * @tc.name: InputWindowsManagerTest_UpdateDefaultPointerStyle_003
2454 * @tc.desc: Test UpdateDefaultPointerStyle
2455 * @tc.type: FUNC
2456 * @tc.require:
2457 */
2458 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdateDefaultPointerStyle_003, TestSize.Level1)
2459 {
2460 CALL_TEST_DEBUG;
2461 PointerDrawingManager pointerDrawingManager;
2462 int32_t pid = 1;
2463 int32_t windowId = 2;
2464 PointerStyle pointerStyle;
2465 pointerStyle.id = 0;
2466 pointerStyle.color = 0;
2467 pointerStyle.size = 2;
2468 bool isUiExtension = true;
2469 int32_t ret = pointerDrawingManager.UpdateDefaultPointerStyle(pid, windowId, pointerStyle, isUiExtension);
2470 EXPECT_EQ(ret, RET_OK);
2471 windowId = -1;
2472 ret = pointerDrawingManager.UpdateDefaultPointerStyle(pid, windowId, pointerStyle, isUiExtension);
2473 }
2474
2475 /**
2476 * @tc.name: PointerDrawingManagerTest_DrawScreenCenterPointer_001
2477 * @tc.desc: Test DrawScreenCenterPointer
2478 * @tc.type: FUNC
2479 * @tc.require:
2480 */
2481 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_DrawScreenCenterPointer_001, TestSize.Level1)
2482 {
2483 CALL_TEST_DEBUG;
2484 PointerDrawingManager pointerDrawingManager;
2485 PointerStyle pointerStyle;
2486 pointerStyle.id = 0;
2487 pointerStyle.color = 0;
2488 pointerStyle.size = 2;
2489 pointerDrawingManager.hasDisplay_ = true;
2490 pointerDrawingManager.hasPointerDevice_ = true;
2491 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2492 surfaceNodeConfig.SurfaceNodeName = "pointer window";
2493 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2494 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2495 ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
2496
2497 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawScreenCenterPointer(pointerStyle));
2498 }
2499
2500 /**
2501 * @tc.name: PointerDrawingManagerTest_DrawScreenCenterPointer_002
2502 * @tc.desc: Test DrawScreenCenterPointer
2503 * @tc.type: FUNC
2504 * @tc.require:
2505 */
2506 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_DrawScreenCenterPointer_002, TestSize.Level1)
2507 {
2508 CALL_TEST_DEBUG;
2509 PointerDrawingManager pointerDrawingManager;
2510 PointerStyle pointerStyle;
2511 pointerStyle.id = 0;
2512 pointerStyle.color = 0;
2513 pointerStyle.size = 2;
2514 pointerDrawingManager.hasDisplay_ = false;
2515 pointerDrawingManager.hasPointerDevice_ = true;
2516 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2517 surfaceNodeConfig.SurfaceNodeName = "pointer window";
2518 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2519 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2520 ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
2521
2522 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawScreenCenterPointer(pointerStyle));
2523 }
2524
2525 /**
2526 * @tc.name: PointerDrawingManagerTest_UpdateBindDisplayId_001
2527 * @tc.desc: Test UpdateBindDisplayId
2528 * @tc.type: FUNC
2529 * @tc.require:
2530 */
2531 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_UpdateBindDisplayId_001, TestSize.Level1)
2532 {
2533 CALL_TEST_DEBUG;
2534 PointerDrawingManager pointerDrawingManager;
2535 pointerDrawingManager.lastDisplayId_ = 0;
2536 uint64_t displayId = 0;
2537 pointerDrawingManager.UpdateBindDisplayId(displayId);
2538 EXPECT_EQ(pointerDrawingManager.lastDisplayId_, 0);
2539 EXPECT_EQ(pointerDrawingManager.screenId_, 0);
2540
2541 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2542 surfaceNodeConfig.SurfaceNodeName = "pointer window";
2543 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2544 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2545 ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
2546 pointerDrawingManager.UpdateBindDisplayId(displayId);
2547 EXPECT_EQ(pointerDrawingManager.lastDisplayId_, 0);
2548 EXPECT_EQ(pointerDrawingManager.screenId_, 0);
2549 displayId = 1;
2550 pointerDrawingManager.UpdateBindDisplayId(displayId);
2551 EXPECT_EQ(pointerDrawingManager.lastDisplayId_, 1);
2552 EXPECT_EQ(pointerDrawingManager.screenId_, 1);
2553 }
2554
2555 /**
2556 * @tc.name: PointerDrawingManagerTest_DestroyPointerWindow_001
2557 * @tc.desc: Test DestroyPointerWindow
2558 * @tc.type: FUNC
2559 * @tc.require:
2560 */
2561 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_DestroyPointerWindow_001, TestSize.Level1)
2562 {
2563 CALL_TEST_DEBUG;
2564 PointerDrawingManager pointerDrawingManager;
2565 pointerDrawingManager.delegateProxy_ = std::make_shared<DelegateInterface>(nullptr, nullptr);
2566 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2567 surfaceNodeConfig.SurfaceNodeName = "pointer window";
2568 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2569 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2570 ASSERT_NE(pointerDrawingManager.delegateProxy_, nullptr);
2571 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DestroyPointerWindow());
2572 pointerDrawingManager.surfaceNode_ = nullptr;
2573 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DestroyPointerWindow());
2574 }
2575
2576 /**
2577 * @tc.name: PointerDrawingManagerTest_SetMouseHotSpot_004
2578 * @tc.desc: Test SetMouseHotSpot
2579 * @tc.type: FUNC
2580 * @tc.require:
2581 */
2582 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_SetMouseHotSpot_004, TestSize.Level1)
2583 {
2584 CALL_TEST_DEBUG;
2585 PointerDrawingManager pointerDrawingManager;
2586 auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
2587 int32_t pid = 1;
2588 int32_t windowId = 2;
2589 EXPECT_CALL(*winmgrmock, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_OK));
2590 int32_t hotSpotX = 1;
2591 int32_t hotSpotY = 2;
2592 // userIcon_ == nullptr
2593 int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
2594 ASSERT_EQ(ret, RET_ERR);
2595 pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
2596 // hotSpotX < 0
2597 hotSpotX = -1;
2598 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
2599 ASSERT_EQ(ret, RET_ERR);
2600 // hotSpotY < 0
2601 hotSpotX = 1;
2602 hotSpotY = -2;
2603 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
2604 ASSERT_EQ(ret, RET_ERR);
2605 testing::Mock::AllowLeak(winmgrmock.get());
2606 }
2607
2608 /**
2609 * @tc.name: InputWindowsManagerTest_IsPointerVisible_002
2610 * @tc.desc: Test IsPointerVisible
2611 * @tc.type: FUNC
2612 * @tc.require:
2613 */
2614 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_IsPointerVisible_002, TestSize.Level1)
2615 {
2616 CALL_TEST_DEBUG;
2617 PointerDrawingManager pointerDrawingManager;
2618 pointerDrawingManager.pidInfos_.clear();
2619 pointerDrawingManager.pid_ = 0;
2620 PointerDrawingManager::PidInfo pidInfo;
2621 for (int32_t i = 1; i < 3; i++) {
2622 pidInfo.pid = 3 - i;
2623 pidInfo.visible = false;
2624 pointerDrawingManager.hapPidInfos_.push_back(pidInfo);
2625 }
2626 bool ret = pointerDrawingManager.IsPointerVisible();
2627 EXPECT_FALSE(ret);
2628 pointerDrawingManager.pid_ = 1;
2629 ret = pointerDrawingManager.IsPointerVisible();
2630 EXPECT_FALSE(ret);
2631 }
2632
2633 /**
2634 * @tc.name: InputWindowsManagerTest_SetPointerVisible_003
2635 * @tc.desc: Test SetPointerVisible
2636 * @tc.type: FUNC
2637 * @tc.require:
2638 */
2639 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerVisible_003, TestSize.Level1)
2640 {
2641 CALL_TEST_DEBUG;
2642 PointerDrawingManager pointerDrawingManager;
2643 int32_t pid = 102;
2644 int32_t priority = 1;
2645 bool visible = false;
2646 bool isHap = true;
2647 PointerDrawingManager::PidInfo pidInfo;
2648 for (int32_t i = 1; i < 101; i++) {
2649 pidInfo.pid = 3 - i;
2650 pidInfo.visible = false;
2651 pointerDrawingManager.hapPidInfos_.push_back(pidInfo);
2652 }
2653 int32_t ret = pointerDrawingManager.SetPointerVisible(pid, visible, priority, isHap);
2654 ASSERT_EQ(ret, RET_OK);
2655 pid = 103;
2656 ret = pointerDrawingManager.SetPointerVisible(pid, visible, priority, isHap);
2657 ASSERT_EQ(ret, RET_OK);
2658 pid = 10;
2659 ret = pointerDrawingManager.SetPointerVisible(pid, visible, priority, isHap);
2660 ASSERT_EQ(ret, RET_OK);
2661 }
2662
2663 /**
2664 * @tc.name: InputWindowsManagerTest_DrawMovePointer_002
2665 * @tc.desc: Test the funcation DrawMovePointer
2666 * @tc.type: FUNC
2667 * @tc.require:
2668 */
2669 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawMovePointer_002, TestSize.Level1)
2670 {
2671 CALL_TEST_DEBUG;
2672 PointerDrawingManager pointerDrawingManager;
2673 int32_t physicalX = 1;
2674 int32_t physicalY = 2;
2675 uint64_t displayId = 3;
2676 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawMovePointer(displayId, physicalX, physicalY));
2677 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2678 surfaceNodeConfig.SurfaceNodeName = "pointer window";
2679 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2680 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2681 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawMovePointer(displayId, physicalX, physicalY));
2682 }
2683
2684 /**
2685 * @tc.name: InputWindowsManagerTest_SetPointerStyle_002
2686 * @tc.desc: Test SetPointerStyle
2687 * @tc.type: FUNC
2688 * @tc.require:
2689 */
2690 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStyle_002, TestSize.Level1)
2691 {
2692 CALL_TEST_DEBUG;
2693 PointerDrawingManager pointerDrawingManager;
2694 PointerStyle pointerStyle;
2695 int32_t pid = 1;
2696 int32_t windowId = -2;
2697 int32_t ret = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle);
2698 ASSERT_EQ(ret, RET_ERR);
2699 windowId = -1;
2700 pointerStyle.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
2701 ret = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle);
2702 ASSERT_EQ(ret, RET_OK);
2703 windowId = 1;
2704 ret = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle);
2705 ASSERT_EQ(ret, RET_OK);
2706 IconStyle iconStyle;
2707 iconStyle.alignmentWay = 0;
2708 iconStyle.iconPath = "testpath";
2709 pointerDrawingManager.mouseIcons_.insert(std::make_pair(static_cast<MOUSE_ICON>(pointerStyle.id), iconStyle));
2710 ret = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle);
2711 ASSERT_EQ(ret, RET_OK);
2712 }
2713
2714 /**
2715 * @tc.name: InputWindowsManagerTest_branchCoverage
2716 * @tc.desc: Test SetPointerStyle
2717 * @tc.type: FUNC
2718 * @tc.require:
2719 */
2720 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_branchCoverage, TestSize.Level1)
2721 {
2722 PointerDrawingManager pointerDrawingManager;
2723 MOUSE_ICON mouseStyle = EAST;
2724 const std::string iconPath = "/system/etc/multimodalinput/mouse_icon/North_South.svg";
2725 std::unique_ptr<OHOS::Media::PixelMap> pixelMap = SetMouseIconTest(iconPath);
2726 ASSERT_NE(pixelMap, nullptr);
2727 pointerDrawingManager.UpdateIconPath(mouseStyle, iconPath);
2728
2729 pointerDrawingManager.surfaceNode_ = nullptr;
2730 auto ret = pointerDrawingManager.SkipPointerLayer(false);
2731 ASSERT_EQ(ret, RET_OK);
2732 pointerDrawingManager.canvasWidth_ = 0;
2733 pointerDrawingManager.cursorWidth_ = 1;
2734 pointerDrawingManager.canvasHeight_ = 0;
2735 pointerDrawingManager.cursorHeight_ = 1;
2736 pointerDrawingManager.SetSurfaceNodeBounds();
2737 ret = pointerDrawingManager.DrawNewDpiPointer();
2738 ASSERT_NE(ret, RET_OK);
2739 }
2740
2741 /**
2742 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusToSoftRenderOrigin_001
2743 * @tc.desc: Test AdjustMouseFocusToSoftRenderOrigin
2744 * @tc.type: FUNC
2745 * @tc.require:
2746 */
2747 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusToSoftRenderOrigin_001, TestSize.Level1)
2748 {
2749 CALL_TEST_DEBUG;
2750 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2751 pointerDrawingManager->imageWidth_ = 50;
2752 pointerDrawingManager->imageHeight_ = 50;
2753 int32_t physicalX = 100;
2754 int32_t physicalY = 100;
2755 pointerDrawingManager->RotateDegree(DIRECTION0);
2756 pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(
2757 DIRECTION0, MOUSE_ICON::TEXT_CURSOR, physicalX, physicalY);
2758 if (pointerDrawingManager->GetHardCursorEnabled()) {
2759 EXPECT_EQ(physicalX, 100);
2760 EXPECT_EQ(physicalY, 100);
2761 } else {
2762 EXPECT_EQ(physicalX, 75);
2763 EXPECT_EQ(physicalY, 75);
2764 }
2765 physicalX = 100;
2766 physicalY = 100;
2767 pointerDrawingManager->RotateDegree(DIRECTION90);
2768 pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(
2769 DIRECTION90, MOUSE_ICON::TEXT_CURSOR, physicalX, physicalY);
2770 if (pointerDrawingManager->GetHardCursorEnabled()) {
2771 EXPECT_EQ(physicalX, 100);
2772 EXPECT_EQ(physicalY, 100);
2773 } else {
2774 EXPECT_EQ(physicalX, 75);
2775 EXPECT_EQ(physicalY, 125);
2776 }
2777 physicalX = 100;
2778 physicalY = 100;
2779 pointerDrawingManager->RotateDegree(DIRECTION270);
2780 pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(
2781 DIRECTION270, MOUSE_ICON::TEXT_CURSOR, physicalX, physicalY);
2782 if (pointerDrawingManager->GetHardCursorEnabled()) {
2783 EXPECT_EQ(physicalX, 100);
2784 EXPECT_EQ(physicalY, 100);
2785 } else {
2786 EXPECT_EQ(physicalX, 125);
2787 EXPECT_EQ(physicalY, 75);
2788 }
2789 }
2790
2791 /**
2792 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusToSoftRenderOrigin_002
2793 * @tc.desc: Test AdjustMouseFocusToSoftRenderOrigin
2794 * @tc.type: FUNC
2795 * @tc.require:
2796 */
2797 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusToSoftRenderOrigin_002, TestSize.Level1)
2798 {
2799 CALL_TEST_DEBUG;
2800 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2801 pointerDrawingManager->imageWidth_ = 50;
2802 pointerDrawingManager->imageHeight_ = 50;
2803 pointerDrawingManager->UpdateIconPath(MOUSE_ICON::DEFAULT, CURSOR_ICON_PATH);
2804 int32_t physicalX = 100;
2805 int32_t physicalY = 100;
2806 pointerDrawingManager->RotateDegree(DIRECTION0);
2807 pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION0, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2808 if (pointerDrawingManager->GetHardCursorEnabled()) {
2809 EXPECT_EQ(physicalX, 100);
2810 EXPECT_EQ(physicalY, 100);
2811 } else {
2812 EXPECT_EQ(physicalX, 75);
2813 EXPECT_EQ(physicalY, 75);
2814 }
2815 physicalX = 100;
2816 physicalY = 100;
2817 pointerDrawingManager->RotateDegree(DIRECTION90);
2818 pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION90, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2819 if (pointerDrawingManager->GetHardCursorEnabled()) {
2820 EXPECT_EQ(physicalX, 100);
2821 EXPECT_EQ(physicalY, 100);
2822 } else {
2823 EXPECT_EQ(physicalX, 75);
2824 EXPECT_EQ(physicalY, 125);
2825 }
2826 physicalX = 100;
2827 physicalY = 100;
2828 pointerDrawingManager->RotateDegree(DIRECTION270);
2829 pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION270, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2830 if (pointerDrawingManager->GetHardCursorEnabled()) {
2831 EXPECT_EQ(physicalX, 100);
2832 EXPECT_EQ(physicalY, 100);
2833 } else {
2834 EXPECT_EQ(physicalX, 125);
2835 EXPECT_EQ(physicalY, 75);
2836 }
2837 }
2838
2839 /**
2840 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusToSoftRenderOrigin_003
2841 * @tc.desc: Test AdjustMouseFocusToSoftRenderOrigin
2842 * @tc.type: FUNC
2843 * @tc.require:
2844 */
2845 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusToSoftRenderOrigin_003, TestSize.Level1)
2846 {
2847 CALL_TEST_DEBUG;
2848 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2849 pointerDrawingManager->imageWidth_ = 50;
2850 pointerDrawingManager->imageHeight_ = 50;
2851 pointerDrawingManager->UpdateIconPath(MOUSE_ICON::DEFAULT, CUSTOM_CURSOR_ICON_PATH);
2852 int32_t physicalX = 100;
2853 int32_t physicalY = 100;
2854 pointerDrawingManager->RotateDegree(DIRECTION0);
2855 pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION0, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2856 if (pointerDrawingManager->GetHardCursorEnabled()) {
2857 EXPECT_EQ(physicalX, 100);
2858 EXPECT_EQ(physicalY, 100);
2859 } else {
2860 EXPECT_NE(physicalX, 75);
2861 EXPECT_NE(physicalY, 75);
2862 }
2863 physicalX = 100;
2864 physicalY = 100;
2865 pointerDrawingManager->RotateDegree(DIRECTION90);
2866 pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION90, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2867 if (pointerDrawingManager->GetHardCursorEnabled()) {
2868 EXPECT_EQ(physicalX, 100);
2869 EXPECT_EQ(physicalY, 100);
2870 } else {
2871 EXPECT_NE(physicalX, 75);
2872 EXPECT_NE(physicalY, 125);
2873 }
2874 physicalX = 100;
2875 physicalY = 100;
2876 pointerDrawingManager->RotateDegree(DIRECTION270);
2877 pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION270, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2878 if (pointerDrawingManager->GetHardCursorEnabled()) {
2879 EXPECT_EQ(physicalX, 100);
2880 EXPECT_EQ(physicalY, 100);
2881 } else {
2882 EXPECT_NE(physicalX, 125);
2883 EXPECT_NE(physicalY, 75);
2884 }
2885 }
2886
2887 /**
2888 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusToSoftRenderOrigin_004
2889 * @tc.desc: Test AdjustMouseFocusToSoftRenderOrigin
2890 * @tc.type: FUNC
2891 * @tc.require:
2892 */
2893 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusToSoftRenderOrigin_004, TestSize.Level1)
2894 {
2895 CALL_TEST_DEBUG;
2896 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2897 pointerDrawingManager->imageWidth_ = 50;
2898 pointerDrawingManager->imageHeight_ = 50;
2899 pointerDrawingManager->UpdateIconPath(MOUSE_ICON::DEFAULT, DEFAULT_ICON_PATH);
2900 int32_t physicalX = 100;
2901 int32_t physicalY = 100;
2902 pointerDrawingManager->RotateDegree(DIRECTION0);
2903 pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION0, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2904 EXPECT_EQ(physicalX, 100);
2905 EXPECT_EQ(physicalY, 100);
2906 physicalX = 100;
2907 physicalY = 100;
2908 pointerDrawingManager->RotateDegree(DIRECTION90);
2909 pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION90, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2910 EXPECT_EQ(physicalX, 100);
2911 EXPECT_EQ(physicalY, 100);
2912 physicalX = 100;
2913 physicalY = 100;
2914 pointerDrawingManager->RotateDegree(DIRECTION270);
2915 pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION270, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2916 EXPECT_EQ(physicalX, 100);
2917 EXPECT_EQ(physicalY, 100);
2918 }
2919
2920 /**
2921 * @tc.name: PointerDrawingManagerTest_UpdateMouseStyle
2922 * @tc.desc: Test UpdateMouseStyle
2923 * @tc.type: Function
2924 * @tc.require:
2925 */
2926 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_UpdateMouseStyle, TestSize.Level1)
2927 {
2928 CALL_TEST_DEBUG;
2929 PointerDrawingManager pointerDrawingManager;
2930 PointerStyle pointerStyle;
2931 pointerStyle.id = AECH_DEVELOPER_DEFINED_STYLE;
2932 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.UpdateMouseStyle());
2933 pointerStyle.id = AECH_DEVELOPER_DEFINED;
2934 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.UpdateMouseStyle());
2935 }
2936
2937 /**
2938 * @tc.name: PointerDrawingManagerTest_ConvertToColorSpace_001
2939 * @tc.desc: Test ConvertToColorSpace
2940 * @tc.type: Function
2941 * @tc.require:
2942 */
2943 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_ConvertToColorSpace_001, TestSize.Level1)
2944 {
2945 CALL_TEST_DEBUG;
2946 PointerDrawingManager pointerDrawingManager;
2947 Media::ColorSpace colorSpace = Media::ColorSpace::DISPLAY_P3;
2948 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.ConvertToColorSpace(colorSpace));
2949 colorSpace = Media::ColorSpace::LINEAR_SRGB;
2950 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.ConvertToColorSpace(colorSpace));
2951 colorSpace = Media::ColorSpace::ACES;
2952 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.ConvertToColorSpace(colorSpace));
2953 }
2954
2955 /**
2956 * @tc.name: PointerDrawingManagerTest_RegisterDisplayStatusReceiver_001
2957 * @tc.desc: Test RegisterDisplayStatusReceiver
2958 * @tc.type: Function
2959 * @tc.require:
2960 */
2961 HWTEST_F(PointerDrawingManagerTest, RegisterDisplayStatusReceiver_001, TestSize.Level1)
2962 {
2963 CALL_TEST_DEBUG;
2964 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2965 pointerDrawingManager->initDisplayStatusReceiverFlag_ = true;
2966 EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->RegisterDisplayStatusReceiver());
2967 }
2968
2969 /**
2970 * @tc.name: PointerDrawingManagerTest_RegisterDisplayStatusReceiver_002
2971 * @tc.desc: Test RegisterDisplayStatusReceiver
2972 * @tc.type: Function
2973 * @tc.require:
2974 */
2975 HWTEST_F(PointerDrawingManagerTest, RegisterDisplayStatusReceiver_002, TestSize.Level1)
2976 {
2977 CALL_TEST_DEBUG;
2978 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2979 pointerDrawingManager->initDisplayStatusReceiverFlag_ = false;
2980 EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->RegisterDisplayStatusReceiver());
2981 }
2982
2983 /**
2984 * @tc.name: PointerDrawingManagerTest_CalculateRenderDirection_001
2985 * @tc.desc: Test CalculateRenderDirection
2986 * @tc.type: Function
2987 * @tc.require:
2988 */
2989 HWTEST_F(PointerDrawingManagerTest, CalculateRenderDirection_001, TestSize.Level1)
2990 {
2991 CALL_TEST_DEBUG;
2992 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2993 pointerDrawingManager->displayInfo_.displayDirection = DIRECTION270;
2994 pointerDrawingManager->displayInfo_.direction = DIRECTION90;
2995 bool isHard = true;
2996 bool isWindowRotate = true;
2997 Direction ret = pointerDrawingManager->CalculateRenderDirection(isHard, isWindowRotate);
2998 ASSERT_EQ(ret, DIRECTION90);
2999 isHard = true;
3000 isWindowRotate = false;
3001 ret = pointerDrawingManager->CalculateRenderDirection(isHard, isWindowRotate);
3002 ASSERT_EQ(ret, DIRECTION90);
3003 isHard = false;
3004 isWindowRotate = true;
3005 ret = pointerDrawingManager->CalculateRenderDirection(isHard, isWindowRotate);
3006 ASSERT_EQ(ret, DIRECTION180);
3007 isHard = false;
3008 isWindowRotate = false;
3009 ret = pointerDrawingManager->CalculateRenderDirection(isHard, isWindowRotate);
3010 ASSERT_EQ(ret, DIRECTION0);
3011 }
3012
3013 /**
3014 * @tc.name: PointerDrawingManagerTest_CalculateRenderDirection_002
3015 * @tc.desc: Test CalculateRenderDirection
3016 * @tc.type: Function
3017 * @tc.require:
3018 */
3019 HWTEST_F(PointerDrawingManagerTest, CalculateRenderDirection_002, TestSize.Level1)
3020 {
3021 CALL_TEST_DEBUG;
3022 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
3023 pointerDrawingManager->displayInfo_.displayDirection = DIRECTION270;
3024 pointerDrawingManager->displayInfo_.direction = DIRECTION90;
3025 bool isHard = true;
3026 bool isWindowRotate = true;
3027 Direction ret = pointerDrawingManager->CalculateRenderDirection(isHard, isWindowRotate);
3028 ASSERT_EQ(ret, DIRECTION90);
3029 isHard = true;
3030 isWindowRotate = false;
3031 ret = pointerDrawingManager->CalculateRenderDirection(isHard, isWindowRotate);
3032 ASSERT_EQ(ret, DIRECTION90);
3033 isHard = false;
3034 isWindowRotate = true;
3035 ret = pointerDrawingManager->CalculateRenderDirection(isHard, isWindowRotate);
3036 ASSERT_EQ(ret, DIRECTION180);
3037 isHard = false;
3038 isWindowRotate = false;
3039 ret = pointerDrawingManager->CalculateRenderDirection(isHard, isWindowRotate);
3040 ASSERT_EQ(ret, DIRECTION0);
3041 }
3042
3043 /**
3044 * @tc.name: PointerDrawingManagerTest_UpdateMirrorScreens_001
3045 * @tc.desc: Test UpdateMirrorScreens
3046 * @tc.type: Function
3047 * @tc.require:
3048 */
3049 HWTEST_F(PointerDrawingManagerTest, UpdateMirrorScreens_001, TestSize.Level1)
3050 {
3051 CALL_TEST_DEBUG;
3052 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
3053 OLD::DisplayInfo displaysInfo;
3054 displaysInfo.rsId = 102;
3055 displaysInfo.direction = DIRECTION0;
3056 displaysInfo.displayDirection = DIRECTION0;
3057 displaysInfo.width = 400;
3058 displaysInfo.height = 300;
3059 pointerDrawingManager->displayInfo_.rsId = 100;
3060 pointerDrawingManager->displayInfo_.direction = DIRECTION0;
3061 pointerDrawingManager->displayInfo_.displayDirection = DIRECTION0;
3062 pointerDrawingManager->displayInfo_.width = 600;
3063 pointerDrawingManager->displayInfo_.height = 400;
3064 auto spMirror = std::make_shared<ScreenPointer>(
3065 pointerDrawingManager->hardwareCursorPointerManager_, pointerDrawingManager->handler_, displaysInfo);
3066 auto spMain = std::make_shared<ScreenPointer>(pointerDrawingManager->hardwareCursorPointerManager_,
3067 pointerDrawingManager->handler_, pointerDrawingManager->displayInfo_);
3068 spMirror->mode_ = mode_t::SCREEN_MIRROR;
3069 spMirror->displayDirection_ = DIRECTION0;
3070 pointerDrawingManager->screenPointers_[displaysInfo.rsId] = spMirror;
3071 pointerDrawingManager->screenPointers_[101] = nullptr;
3072 EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->UpdateMirrorScreens(spMain, pointerDrawingManager->displayInfo_));
3073 pointerDrawingManager->displayInfo_.direction = DIRECTION90;
3074 pointerDrawingManager->displayInfo_.displayDirection = DIRECTION270;
3075 EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->UpdateMirrorScreens(spMain, pointerDrawingManager->displayInfo_));
3076 }
3077
3078 /**
3079 * @tc.name: PointerDrawingManagerTest_SwitchPointerStyle_002
3080 * @tc.desc: Test SwitchPointerStyle
3081 * @tc.type: FUNC
3082 * @tc.require:
3083 */
3084 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_SwitchPointerStyle_002, TestSize.Level1)
3085 {
3086 CALL_TEST_DEBUG;
3087 PointerDrawingManager pointerDrawMgr;
3088 int32_t maxId = 49;
3089 std::vector<int32_t> vecStyleId;
3090 for (int32_t i = 0; i < maxId; i++) {
3091 vecStyleId.push_back(i);
3092 }
3093 vecStyleId.push_back(-100);
3094 vecStyleId.push_back(-101);
3095 vecStyleId.push_back(-1);
3096 for (size_t i = 0; i < vecStyleId.size(); i++) {
3097 pointerDrawMgr.lastMouseStyle_.id = vecStyleId[i];
3098 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.SwitchPointerStyle());
3099 }
3100 }
3101
3102 /**
3103 * @tc.name: InputWindowsManagerTest_GetMainScreenDisplayInfo_001
3104 * @tc.desc: Test GetMainScreenDisplayInfo
3105 * @tc.type: FUNC
3106 * @tc.require:
3107 */
3108 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_GetMainScreenDisplayInfo_001, TestSize.Level1)
3109 {
3110 CALL_TEST_DEBUG;
3111 PointerDrawingManager pointerDrawingManager;
3112 OLD::DisplayInfo displayInfo1;
3113 displayInfo1.id = 1;
3114 displayInfo1.x = 1;
3115 displayInfo1.y = 1;
3116 displayInfo1.width = 2;
3117 displayInfo1.height = 2;
3118 displayInfo1.dpi = 240;
3119 displayInfo1.name = "pp";
3120 displayInfo1.direction = DIRECTION0;
3121 displayInfo1.displaySourceMode = OHOS::MMI::DisplaySourceMode::SCREEN_MAIN;
3122
3123 OLD::DisplayInfo displayInfo2;
3124 displayInfo2.id = 2;
3125 displayInfo2.x = 1;
3126 displayInfo2.y = 1;
3127 displayInfo2.width = 2;
3128 displayInfo2.height = 2;
3129 displayInfo2.dpi = 240;
3130 displayInfo2.name = "pp";
3131 displayInfo2.uniq = "pp";
3132 displayInfo2.direction = DIRECTION0;
3133 displayInfo2.displaySourceMode = OHOS::MMI::DisplaySourceMode::SCREEN_EXPAND;
3134
3135 OLD::DisplayGroupInfo displayGroupInfo;
3136 displayGroupInfo.displaysInfo.push_back(displayInfo2);
3137 displayGroupInfo.displaysInfo.push_back(displayInfo1);
3138 OLD::DisplayInfo displayInfo = displayGroupInfo.displaysInfo[0];
3139 ASSERT_EQ(pointerDrawingManager.GetMainScreenDisplayInfo(displayGroupInfo, displayInfo), RET_OK);
3140 }
3141
3142 /**
3143 * @tc.name: InputWindowsManagerTest_UpdateMouseLayer
3144 * @tc.desc: Test UpdateMouseLayer
3145 * @tc.type: FUNC
3146 * @tc.require:
3147 */
3148 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdateMouseLayer, TestSize.Level1)
3149 {
3150 CALL_TEST_DEBUG;
3151 PointerDrawingManager pointerDrawingManager;
3152 PointerStyle pointerStyle;
3153 int32_t physicalX = 1;
3154 int32_t physicalY = 2;
3155 pointerDrawingManager.surfaceNode_ = nullptr;
3156 pointerDrawingManager.hardwareCursorPointerManager_->SetHdiServiceState(true);
3157 pointerDrawingManager.hardwareCursorPointerManager_->isEnableState_ = true;
3158 pointerDrawingManager.lastMouseStyle_.id = 2;
3159 ASSERT_EQ(pointerDrawingManager.UpdateMouseLayer(pointerStyle, physicalX, physicalY), RET_ERR);
3160 }
3161
3162 /**
3163 * @tc.name: PointerDrawingManagerExTest_UpdateMirrorScreens_001
3164 * @tc.desc: Test the funcation UpdateMirrorScreens
3165 * @tc.type: FUNC
3166 * @tc.require:
3167 */
3168 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerExTest_UpdateMirrorScreens_001, TestSize.Level1)
3169 {
3170 CALL_TEST_DEBUG;
3171 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
3172 hwcmgr_ptr_t hwcmgr = nullptr;
3173 handler_ptr_t handler = nullptr;
3174 OLD::DisplayInfo di;
3175 std::shared_ptr<ScreenPointer> screenpointer = std::make_shared<ScreenPointer>(hwcmgr, handler, di);
3176 OLD::DisplayInfo displaysInfo;
3177 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdateMirrorScreens(screenpointer, displaysInfo));
3178 }
3179
3180 /**
3181 * @tc.name: InputWindowsManagerTest_OnDisplayInfo_004
3182 * @tc.desc: Test OnDisplayInfo
3183 * @tc.type: FUNC
3184 * @tc.require:
3185 */
3186 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_OnDisplayInfo_004, TestSize.Level1)
3187 {
3188 CALL_TEST_DEBUG;
3189 PointerDrawingManager pointerDrawingManager;
3190 OLD::DisplayInfo displaysInfo;
3191 displaysInfo.rsId = 22;
3192 OLD::DisplayGroupInfo displayGroupInfo;
3193 displayGroupInfo.displaysInfo.push_back(displaysInfo);
3194 displayGroupInfo.focusWindowId = 0;
3195 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
3196 surfaceNodeConfig.SurfaceNodeName = "pointer window";
3197 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
3198 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
3199 pointerDrawingManager.surfaceNode_->SetFrameGravity(Rosen::Gravity::RESIZE_ASPECT_FILL);
3200 pointerDrawingManager.surfaceNode_->SetPositionZ(Rosen::RSSurfaceNode::POINTER_WINDOW_POSITION_Z);
3201 OLD::DisplayInfo displaysInfo_;
3202 displaysInfo_.rsId = 11;
3203 pointerDrawingManager.displayInfo_ = displaysInfo_;
3204 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo));
3205
3206 OLD::DisplayGroupInfo displayGroupInfo2;
3207 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo2));
3208
3209 OLD::DisplayInfo displaysInfo3;
3210 displaysInfo3.rsId = 33;
3211 OLD::DisplayGroupInfo displayGroupInfo3;
3212 displayGroupInfo3.displaysInfo.push_back(displaysInfo3);
3213 displayGroupInfo3.focusWindowId = 0;
3214 OLD::DisplayInfo displaysInfo33_;
3215 displaysInfo33_.rsId = 33;
3216 pointerDrawingManager.displayInfo_ = displaysInfo33_;
3217 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo3));
3218 }
3219
3220 /**
3221 * @tc.name: InputWindowsManagerTest_OnDisplayInfo_005
3222 * @tc.desc: Test OnDisplayInfo
3223 * @tc.type: FUNC
3224 * @tc.require:
3225 */
3226 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_OnDisplayInfo_005, TestSize.Level1)
3227 {
3228 CALL_TEST_DEBUG;
3229 PointerDrawingManager pointerDrawingManager;
3230 OLD::DisplayInfo displaysInfo;
3231 displaysInfo.rsId = 22;
3232 OLD::DisplayGroupInfo displayGroupInfo;
3233 displayGroupInfo.displaysInfo.push_back(displaysInfo);
3234 displayGroupInfo.focusWindowId = 0;
3235 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
3236 surfaceNodeConfig.SurfaceNodeName = "pointer window";
3237 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
3238 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
3239 pointerDrawingManager.surfaceNode_->SetFrameGravity(Rosen::Gravity::RESIZE_ASPECT_FILL);
3240 pointerDrawingManager.surfaceNode_->SetPositionZ(Rosen::RSSurfaceNode::POINTER_WINDOW_POSITION_Z);
3241 OLD::DisplayInfo displaysInfo_;
3242 displaysInfo_.rsId = 11;
3243 pointerDrawingManager.displayInfo_ = displaysInfo_;
3244 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo));
3245 }
3246
3247 /**
3248 * @tc.name: InputWindowsManagerTest_OnDisplayInfo_006
3249 * @tc.desc: Test OnDisplayInfo
3250 * @tc.type: FUNC
3251 * @tc.require:
3252 */
3253 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_OnDisplayInfo_006, TestSize.Level1)
3254 {
3255 CALL_TEST_DEBUG;
3256 PointerDrawingManager pointerDrawingManager;
3257 OLD::DisplayInfo displaysInfo;
3258 displaysInfo.rsId = 11;
3259 OLD::DisplayGroupInfo displayGroupInfo;
3260 displayGroupInfo.displaysInfo.push_back(displaysInfo);
3261 displayGroupInfo.focusWindowId = 0;
3262 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
3263 surfaceNodeConfig.SurfaceNodeName = "pointer window";
3264 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
3265 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
3266 pointerDrawingManager.surfaceNode_->SetFrameGravity(Rosen::Gravity::RESIZE_ASPECT_FILL);
3267 pointerDrawingManager.surfaceNode_->SetPositionZ(Rosen::RSSurfaceNode::POINTER_WINDOW_POSITION_Z);
3268 OLD::DisplayInfo displaysInfo_;
3269 displaysInfo_.rsId = 11;
3270 pointerDrawingManager.displayInfo_ = displaysInfo_;
3271 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo));
3272 }
3273
3274 /**
3275 * @tc.name: InputWindowsManagerTest_OnDisplayInfo_007
3276 * @tc.desc: Test OnDisplayInfo
3277 * @tc.type: FUNC
3278 * @tc.require:
3279 */
3280 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_OnDisplayInfo_007, TestSize.Level1)
3281 {
3282 CALL_TEST_DEBUG;
3283 PointerDrawingManager pointerDrawingManager;
3284 OLD::DisplayInfo displaysInfo;
3285 displaysInfo.rsId = 11;
3286 displaysInfo.displaySourceMode = OHOS::MMI::DisplaySourceMode::SCREEN_EXTEND;
3287 OLD::DisplayGroupInfo displayGroupInfo;
3288 displayGroupInfo.displaysInfo.push_back(displaysInfo);
3289 displayGroupInfo.focusWindowId = 0;
3290 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
3291 surfaceNodeConfig.SurfaceNodeName = "pointer window";
3292 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
3293 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
3294 pointerDrawingManager.surfaceNode_->SetFrameGravity(Rosen::Gravity::RESIZE_ASPECT_FILL);
3295 pointerDrawingManager.surfaceNode_->SetPositionZ(Rosen::RSSurfaceNode::POINTER_WINDOW_POSITION_Z);
3296 OLD::DisplayInfo displaysInfo_;
3297 displaysInfo_.rsId = 11;
3298 displaysInfo_.displaySourceMode = OHOS::MMI::DisplaySourceMode::SCREEN_MAIN;
3299 pointerDrawingManager.displayInfo_ = displaysInfo_;
3300 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo));
3301 }
3302
3303 /**
3304 * @tc.name: InputWindowsManagerTest_OnDisplayInfo_008
3305 * @tc.desc: Test OnDisplayInfo
3306 * @tc.type: FUNC
3307 * @tc.require:
3308 */
3309 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_OnDisplayInfo_008, TestSize.Level1)
3310 {
3311 CALL_TEST_DEBUG;
3312 PointerDrawingManager pointerDrawingManager;
3313 OLD::DisplayInfo displaysInfo;
3314 displaysInfo.rsId = 11;
3315 displaysInfo.displaySourceMode = OHOS::MMI::DisplaySourceMode::SCREEN_MAIN;
3316 OLD::DisplayGroupInfo displayGroupInfo;
3317 displayGroupInfo.displaysInfo.push_back(displaysInfo);
3318 displayGroupInfo.focusWindowId = 0;
3319 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
3320 surfaceNodeConfig.SurfaceNodeName = "pointer window";
3321 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
3322 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
3323 pointerDrawingManager.surfaceNode_->SetFrameGravity(Rosen::Gravity::RESIZE_ASPECT_FILL);
3324 pointerDrawingManager.surfaceNode_->SetPositionZ(Rosen::RSSurfaceNode::POINTER_WINDOW_POSITION_Z);
3325 OLD::DisplayInfo displaysInfo_;
3326 displaysInfo_.rsId = 11;
3327 displaysInfo_.displaySourceMode = OHOS::MMI::DisplaySourceMode::SCREEN_MAIN;
3328 pointerDrawingManager.displayInfo_ = displaysInfo_;
3329 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo));
3330 }
3331
3332 /**
3333 * @tc.name: InputWindowsManagerTest_CreatePointerWindowForScreenPointer_003
3334 * @tc.desc: Test CreatePointerWindowForScreenPointer
3335 * @tc.type: FUNC
3336 * @tc.require:
3337 */
3338 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_CreatePointerWindowForScreenPointer_003, TestSize.Level1)
3339 {
3340 CALL_TEST_DEBUG;
3341 OLD::DisplayInfo displayInfo_;
3342 std::unordered_map<uint32_t, std::shared_ptr<ScreenPointer>> screenPointers_;
3343
3344 int32_t rsId = 1;
3345 int32_t physicalX = 0;
3346 int32_t physicalY = 0;
3347 auto sp = std::make_shared<ScreenPointer>(nullptr, nullptr, displayInfo_);
3348 auto pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
3349 pointerDrawingManager->screenPointers_[rsId] = sp;
3350 OLD::DisplayInfo displaysInfo_;
3351 displaysInfo_.rsId = 1;
3352 pointerDrawingManager->displayInfo_ = displaysInfo_;
3353 g_isRsRestart.store(false);
3354 int32_t result = pointerDrawingManager->CreatePointerWindowForScreenPointer(rsId, physicalX, physicalY);
3355 EXPECT_EQ(result, RET_ERR);
3356 }
3357
3358 /**
3359 * @tc.name: InputWindowsManagerTest_CreatePointerWindowForScreenPointer_004
3360 * @tc.desc: Test CreatePointerWindowForScreenPointer
3361 * @tc.type: FUNC
3362 * @tc.require:
3363 */
3364 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_CreatePointerWindowForScreenPointer_004, TestSize.Level1)
3365 {
3366 CALL_TEST_DEBUG;
3367 OLD::DisplayInfo displayInfo_;
3368 std::unordered_map<uint32_t, std::shared_ptr<ScreenPointer>> screenPointers_;
3369
3370 int32_t rsId = 1;
3371 int32_t physicalX = 0;
3372 int32_t physicalY = 0;
3373 auto sp = std::make_shared<ScreenPointer>(nullptr, nullptr, displayInfo_);
3374 auto pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
3375 pointerDrawingManager->screenPointers_[rsId] = sp;
3376 OLD::DisplayInfo displaysInfo_;
3377 displaysInfo_.rsId = 2;
3378 pointerDrawingManager->displayInfo_ = displaysInfo_;
3379 g_isRsRestart.store(false);
3380 int32_t result = pointerDrawingManager->CreatePointerWindowForScreenPointer(rsId, physicalX, physicalY);
3381 EXPECT_NE(result, RET_OK);
3382 }
3383
3384 /**
3385 * @tc.name: InputWindowsManagerTest_CreatePointerWindowForScreenPointer_005
3386 * @tc.desc: Test CreatePointerWindowForScreenPointer
3387 * @tc.type: FUNC
3388 * @tc.require:
3389 */
3390 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_CreatePointerWindowForScreenPointer_005, TestSize.Level1)
3391 {
3392 CALL_TEST_DEBUG;
3393 OLD::DisplayInfo displayInfo_;
3394 std::unordered_map<uint32_t, std::shared_ptr<ScreenPointer>> screenPointers_;
3395
3396 int32_t rsId = 2;
3397 int32_t physicalX = 0;
3398 int32_t physicalY = 0;
3399 auto sp = std::make_shared<ScreenPointer>(nullptr, nullptr, displayInfo_);
3400 auto pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
3401 pointerDrawingManager->screenPointers_[rsId] = sp;
3402
3403 g_isRsRestart.store(false);
3404 int32_t result = pointerDrawingManager->CreatePointerWindowForScreenPointer(rsId, physicalX, physicalY);
3405 EXPECT_NE(result, RET_OK);
3406 }
3407
3408 /**
3409 * @tc.name: InputWindowsManagerTest_DrawMovePointer_003
3410 * @tc.desc: Test the funcation DrawMovePointer
3411 * @tc.type: FUNC
3412 * @tc.require:
3413 */
3414 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawMovePointer_003, TestSize.Level1)
3415 {
3416 CALL_TEST_DEBUG;
3417 PointerDrawingManager manager;
3418 PointerStyle pointerStyle;
3419
3420 int32_t displayId = 1;
3421 int32_t physicalX = 2;
3422 int32_t physicalY = 3;
3423 auto align = manager.MouseIcon2IconType(MOUSE_ICON(2));
3424 Direction direction = DIRECTION0;
3425 manager.surfaceNode_ = nullptr;
3426 int32_t ret = manager.DrawMovePointer(displayId, physicalX, physicalY, pointerStyle, direction);
3427 EXPECT_EQ(ret, RET_ERR);
3428 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
3429 surfaceNodeConfig.SurfaceNodeName = "pointer window";
3430 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
3431 manager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
3432 ASSERT_TRUE(manager.surfaceNode_ != nullptr);
3433 auto setlot = manager.SetCursorLocation(physicalX, physicalY, align);
3434 EXPECT_EQ(setlot, true);
3435 ret = manager.DrawMovePointer(displayId, physicalX, physicalY, pointerStyle, direction);
3436 EXPECT_EQ(ret, RET_OK);
3437 }
3438
3439 /**
3440 * @tc.name: InputWindowsManagerTest_SetPointerSize_002
3441 * @tc.desc: Test SetPointerSize
3442 * @tc.type: FUNC
3443 * @tc.require:
3444 */
3445 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerSize_002, TestSize.Level1)
3446 {
3447 CALL_TEST_DEBUG;
3448 PointerDrawingManager pointerDrawMgr;
3449 pointerDrawMgr.hardwareCursorPointerManager_->SetHdiServiceState(true);
3450 pointerDrawMgr.hardwareCursorPointerManager_->isEnableState_ = true;
3451 pointerDrawMgr.lastMouseStyle_.id = 2;
3452 ASSERT_EQ(pointerDrawMgr.SetPointerSize(0), RET_OK);
3453 }
3454
3455 /**
3456 * @tc.name: PointerDrawingManagerTest_UpdateBindDisplayId_002
3457 * @tc.desc: Test UpdateBindDisplayId
3458 * @tc.type: FUNC
3459 * @tc.require:
3460 */
3461 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_UpdateBindDisplayId_002, TestSize.Level1)
3462 {
3463 CALL_TEST_DEBUG;
3464 PointerDrawingManager pointerDrawingManager;
3465 pointerDrawingManager.lastDisplayId_ = 0;
3466 pointerDrawingManager.surfaceNode_ = nullptr;
3467 int32_t displayId = 1;
3468 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.UpdateBindDisplayId(displayId));
3469 }
3470
3471 /**
3472 * @tc.name: InputWindowsManagerTest_LoadCursorSvgWithColor_001
3473 * @tc.desc: Test LoadCursorSvgWithColor
3474 * @tc.type: FUNC
3475 * @tc.require:
3476 */
3477 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_LoadCursorSvgWithColor_001, TestSize.Level1)
3478 {
3479 CALL_TEST_DEBUG;
3480 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
3481 auto type = MOUSE_ICON::DEFAULT;
3482 EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->LoadCursorSvgWithColor(type, MIN_POINTER_COLOR));
3483 }
3484
3485 /**
3486 * @tc.name: InputWindowsManagerTest_AoutPointer_001
3487 * @tc.desc: Test AoutPointer
3488 * @tc.type: FUNC
3489 * @tc.require:
3490 */
3491 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AoutPointer_001, TestSize.Level1)
3492 {
3493 CALL_TEST_DEBUG;
3494 auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
3495 EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->SetPointerColor(MIN_POINTER_COLOR));
3496 EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->SetPointerSize(1));
3497 EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(true, true, false));
3498 pointerDrawingManager->pidInfos_.clear();
3499 EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->DeletePointerVisible(0));
3500 PointerDrawingManager::PidInfo pidInfo1{1, false};
3501 PointerDrawingManager::PidInfo pidInfo2{0, false};
3502 pointerDrawingManager->hapPidInfos_.push_back(pidInfo1);
3503 pointerDrawingManager->hapPidInfos_.push_back(pidInfo2);
3504 pointerDrawingManager->pid_ = 0;
3505 EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->GetPointerVisible(0));
3506 EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->SetPointerVisible(0, true, 0, true));
3507 PointerStyle pointerStyle;
3508 EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->SetPointerStylePreference(pointerStyle));
3509 }
3510 } // namespace MMI
3511 } // namespace OHOS