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 "image_source.h"
22 #include "input_windows_manager_mock.h"
23 #include "i_preference_manager.h"
24 #include "knuckle_drawing_manager.h"
25 #include "libinput_mock.h"
26 #include "mmi_log.h"
27 #include "parameters.h"
28 #include "pixel_map.h"
29 #include "pointer_drawing_manager.h"
30 #include "pointer_event.h"
31
32 #undef MMI_LOG_TAG
33 #define MMI_LOG_TAG "PointerDrawingManagerTest"
34
35 namespace OHOS {
36 namespace MMI {
37 namespace {
38 using namespace testing::ext;
39 constexpr int32_t MOUSE_ICON_SIZE = 64;
40 constexpr uint32_t DEFAULT_ICON_COLOR { 0xFF };
41 constexpr int32_t MIDDLE_PIXEL_MAP_WIDTH { 400 };
42 constexpr int32_t MIDDLE_PIXEL_MAP_HEIGHT { 400 };
43 constexpr int32_t MAX_PIXEL_MAP_WIDTH { 600 };
44 constexpr int32_t MAX_PIXEL_MAP_HEIGHT { 600 };
45 constexpr int32_t INT32_BYTE { 4 };
46 constexpr int32_t WINDOW_ROTATE { 0 };
47 constexpr int32_t FOLDABLE_DEVICE { 2 };
48 const std::string MOUSE_FILE_NAME { "mouse_settings.xml" };
49 const int32_t ROTATE_POLICY = system::GetIntParameter("const.window.device.rotate_policy", 0);
50 } // namespace
51
52 class PointerDrawingManagerTest : public testing::Test {
53 public:
SetUpTestCase(void)54 static void SetUpTestCase(void) {};
TearDownTestCase(void)55 static void TearDownTestCase(void) {};
56 static std::shared_ptr<Media::PixelMap> CreatePixelMap(int32_t width, int32_t height);
SetUp(void)57 void SetUp(void)
58 {}
TearDown(void)59 void TearDown(void)
60 {}
61
62 std::unique_ptr<OHOS::Media::PixelMap> SetMouseIconTest(const std::string iconPath);
63 private:
64 };
65
SetMouseIconTest(const std::string iconPath)66 std::unique_ptr<OHOS::Media::PixelMap> PointerDrawingManagerTest::SetMouseIconTest(const std::string iconPath)
67 {
68 CALL_DEBUG_ENTER;
69 OHOS::Media::SourceOptions opts;
70 opts.formatHint = "image/svg+xml";
71 uint32_t ret = 0;
72 auto imageSource = OHOS::Media::ImageSource::CreateImageSource(iconPath, opts, ret);
73 CHKPP(imageSource);
74 std::set<std::string> formats;
75 ret = imageSource->GetSupportedFormats(formats);
76 MMI_HILOGD("Get supported format ret:%{public}u", ret);
77
78 OHOS::Media::DecodeOptions decodeOpts;
79 decodeOpts.desiredSize = {.width = MOUSE_ICON_SIZE, .height = MOUSE_ICON_SIZE};
80
81 std::unique_ptr<OHOS::Media::PixelMap> pixelMap = imageSource->CreatePixelMap(decodeOpts, ret);
82 CHKPL(pixelMap);
83 return pixelMap;
84 }
85
CreatePixelMap(int32_t width,int32_t height)86 std::shared_ptr<Media::PixelMap> PointerDrawingManagerTest::CreatePixelMap(int32_t width, int32_t height)
87 {
88 CALL_DEBUG_ENTER;
89 if (width <= 0 || width > MAX_PIXEL_MAP_WIDTH || height <= 0 || height > MAX_PIXEL_MAP_HEIGHT) {
90 return nullptr;
91 }
92 Media::InitializationOptions opts;
93 opts.size.height = height;
94 opts.size.width = width;
95 opts.pixelFormat = Media::PixelFormat::BGRA_8888;
96 opts.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_OPAQUE;
97 opts.scaleMode = Media::ScaleMode::FIT_TARGET_SIZE;
98
99 int32_t colorLen = width * height;
100 uint32_t *pixelColors = new (std::nothrow) uint32_t[colorLen];
101 CHKPP(pixelColors);
102 int32_t colorByteCount = colorLen * INT32_BYTE;
103 errno_t ret = memset_s(pixelColors, colorByteCount, DEFAULT_ICON_COLOR, colorByteCount);
104 if (ret != EOK) {
105 delete[] pixelColors;
106 return nullptr;
107 }
108 std::shared_ptr<Media::PixelMap> pixelMap = Media::PixelMap::Create(pixelColors, colorLen, opts);
109 if (pixelMap == nullptr) {
110 delete[] pixelColors;
111 return nullptr;
112 }
113 delete[] pixelColors;
114 return pixelMap;
115 }
116
117 /**
118 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_01
119 * @tc.desc: Test DrawPointerStyle
120 * @tc.type: FUNC
121 * @tc.require:
122 */
123 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_01, TestSize.Level1)
124 {
125 CALL_TEST_DEBUG;
126 PointerDrawingManager pointerDrawingManager;
127 pointerDrawingManager.hasDisplay_ = true;
128 pointerDrawingManager.hasPointerDevice_ = true;
129 pointerDrawingManager.surfaceNode_ = nullptr;
130
131 PointerStyle pointerStyle;
132 pointerStyle.id = 1;
133 pointerStyle.color = 1;
134 pointerStyle.size = 2;
135
136 int32_t ROTATE_POLICY;
137 ROTATE_POLICY = WINDOW_ROTATE;
138 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
139 }
140
141 /**
142 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_02
143 * @tc.desc: Test DrawManager
144 * @tc.type: FUNC
145 * @tc.require:
146 */
147 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_02, TestSize.Level1)
148 {
149 CALL_TEST_DEBUG;
150 PointerDrawingManager pointerDrawingManager;
151 pointerDrawingManager.hasDisplay_ = true;
152 pointerDrawingManager.hasPointerDevice_ = true;
153 pointerDrawingManager.surfaceNode_ = nullptr;
154
155 PointerStyle pointerStyle;
156 pointerStyle.id = 1;
157 pointerStyle.color = 1;
158 pointerStyle.size = 2;
159
160 int32_t ROTATE_POLICY;
161 ROTATE_POLICY = FOLDABLE_DEVICE;
162 pointerDrawingManager.lastPhysicalX_ = -1;
163 pointerDrawingManager.lastPhysicalY_ = -1;
164 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
165 }
166
167 /**
168 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_03
169 * @tc.desc: Test DrawManager
170 * @tc.type: FUNC
171 * @tc.require:
172 */
173 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_03, TestSize.Level1)
174 {
175 CALL_TEST_DEBUG;
176 PointerDrawingManager pointerDrawingManager;
177 pointerDrawingManager.hasDisplay_ = true;
178 pointerDrawingManager.hasPointerDevice_ = true;
179 pointerDrawingManager.surfaceNode_ = nullptr;
180
181 PointerStyle pointerStyle;
182 pointerStyle.id = 1;
183 pointerStyle.color = 1;
184 pointerStyle.size = 2;
185
186 int32_t ROTATE_POLICY;
187 ROTATE_POLICY = FOLDABLE_DEVICE;
188 pointerDrawingManager.lastPhysicalX_ = 1;
189 pointerDrawingManager.lastPhysicalY_ = -1;
190 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
191 }
192
193 /**
194 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_04
195 * @tc.desc: Test DrawManager
196 * @tc.type: FUNC
197 * @tc.require:
198 */
199 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_04, TestSize.Level1)
200 {
201 CALL_TEST_DEBUG;
202 PointerDrawingManager pointerDrawingManager;
203 pointerDrawingManager.hasDisplay_ = true;
204 pointerDrawingManager.hasPointerDevice_ = true;
205 pointerDrawingManager.surfaceNode_ = nullptr;
206
207 PointerStyle pointerStyle;
208 pointerStyle.id = 1;
209 pointerStyle.color = 1;
210 pointerStyle.size = 2;
211
212 int32_t ROTATE_POLICY;
213 ROTATE_POLICY = FOLDABLE_DEVICE;
214 pointerDrawingManager.lastPhysicalX_ = 2;
215 pointerDrawingManager.lastPhysicalY_ = 2;
216 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
217 }
218
219 /**
220 * @tc.name: InputWindowsManagerTest_SetPointerStyle_01
221 * @tc.desc: Test SetPointerStyle
222 * @tc.type: FUNC
223 * @tc.require:
224 */
225 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStyle_01, TestSize.Level1)
226 {
227 CALL_TEST_DEBUG;
228 PointerDrawingManager pointerDrawingManager;
229 bool isUiExtension = false;
230
231 PointerStyle pointerStyle;
232 pointerStyle.id = 1;
233 pointerStyle.color = 0;
234 pointerStyle.size = 2;
235
236 int32_t pid = 1;
237 int32_t windowId = -2;
238 bool ret = pointerDrawingManager.CheckPointerStyleParam(windowId, pointerStyle);
239 EXPECT_FALSE(ret);
240
241 int32_t ret2 = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle, isUiExtension);
242 EXPECT_EQ(ret2, RET_ERR);
243 }
244
245 /**
246 * @tc.name: InputWindowsManagerTest_SetPointerStyle_02
247 * @tc.desc: Test SetPointerStyle
248 * @tc.type: FUNC
249 * @tc.require:
250 */
251 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStyle_02, TestSize.Level1)
252 {
253 CALL_TEST_DEBUG;
254 PointerDrawingManager pointerDrawingManager;
255 bool isUiExtension = true;
256
257 PointerStyle pointerStyle;
258 pointerStyle.id = 1;
259 pointerStyle.color = 0;
260 pointerStyle.size = 2;
261
262 int32_t pid = 1;
263 int32_t windowId = GLOBAL_WINDOW_ID;
264 bool ret = pointerDrawingManager.CheckPointerStyleParam(windowId, pointerStyle);
265 EXPECT_TRUE(ret);
266
267 int32_t ret2 = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle, isUiExtension);
268 EXPECT_EQ(ret2, RET_OK);
269 }
270
271 /**
272 * @tc.name: InputWindowsManagerTest_SetPointerStylePreference_01
273 * @tc.desc: Test SetPointerStylePreference
274 * @tc.type: FUNC
275 * @tc.require:
276 */
277 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStylePreference_01, TestSize.Level1)
278 {
279 CALL_TEST_DEBUG;
280 PointerDrawingManager pointerDrawingManager;
281 PointerStyle pointerStyle;
282 pointerStyle.id = 1;
283 pointerStyle.color = 1;
284 pointerStyle.size = 2;
285
286 std::string name = "pointerStyle";
287 int32_t ret = PREFERENCES_MGR->SetIntValue(name, MOUSE_FILE_NAME, pointerStyle.id);
288 EXPECT_EQ(ret, RET_OK);
289
290 int32_t ret2 = pointerDrawingManager.SetPointerStylePreference(pointerStyle);
291 EXPECT_EQ(ret2, RET_OK);
292 }
293
294 /**
295 * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_01
296 * @tc.desc: Test SetMouseHotSpot
297 * @tc.type: FUNC
298 * @tc.require:
299 */
300 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_01, TestSize.Level1)
301 {
302 CALL_TEST_DEBUG;
303 PointerDrawingManager pointerDrawingManager;
304 int32_t pid = -1;
305 int32_t windowId = 2;
306 int32_t hotSpotX = 3;
307 int32_t hotSpotY = 4;
308 int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
309 ASSERT_EQ(ret, RET_ERR);
310 }
311
312 /**
313 * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_02
314 * @tc.desc: Test SetMouseHotSpot
315 * @tc.type: FUNC
316 * @tc.require:
317 */
318 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_02, TestSize.Level1)
319 {
320 CALL_TEST_DEBUG;
321 PointerDrawingManager pointerDrawingManager;
322 int32_t pid = 1;
323 int32_t windowId = -2;
324 int32_t hotSpotX = 3;
325 int32_t hotSpotY = 4;
326 int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
327 ASSERT_EQ(ret, RET_ERR);
328 }
329
330 /**
331 * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_03
332 * @tc.desc: Test SetMouseHotSpot
333 * @tc.type: FUNC
334 * @tc.require:
335 */
336 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_03, TestSize.Level1)
337 {
338 CALL_TEST_DEBUG;
339 PointerDrawingManager pointerDrawingManager;
340 int32_t pid = 1;
341 int32_t windowId = 2;
342 EXPECT_CALL(*WIN_MGR_MOCK, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_ERR));
343 int32_t hotSpotX = 3;
344 int32_t hotSpotY = 4;
345 int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
346 ASSERT_EQ(ret, RET_ERR);
347 }
348
349 /**
350 * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_04
351 * @tc.desc: Test SetMouseHotSpot
352 * @tc.type: FUNC
353 * @tc.require:
354 */
355 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_04, TestSize.Level1)
356 {
357 CALL_TEST_DEBUG;
358 PointerDrawingManager pointerDrawingManager;
359 int32_t pid = 1;
360 int32_t windowId = 2;
361 EXPECT_CALL(*WIN_MGR_MOCK, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_OK));
362 int32_t hotSpotX = -3;
363 int32_t hotSpotY = -4;
364 pointerDrawingManager.userIcon_ = nullptr;
365 int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
366 ASSERT_EQ(ret, RET_ERR);
367 }
368
369 /**
370 * @tc.name: InputWindowsManagerTest_SetMouseIcon_01
371 * @tc.desc: Test SetMouseIcon
372 * @tc.type: FUNC
373 * @tc.require:
374 */
375 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_01, TestSize.Level1)
376 {
377 CALL_TEST_DEBUG;
378 PointerDrawingManager pointerDrawingManager;
379 int32_t pid = -1;
380 int32_t windowId = -2;
381 void* pixelMap = nullptr;
382 int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, pixelMap);
383 ASSERT_EQ(ret, RET_ERR);
384 }
385
386 /**
387 * @tc.name: InputWindowsManagerTest_SetMouseIcon_02
388 * @tc.desc: Test SetMouseIcon
389 * @tc.type: FUNC
390 * @tc.require:
391 */
392 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_02, TestSize.Level1)
393 {
394 CALL_TEST_DEBUG;
395 PointerDrawingManager pointerDrawingManager;
396 int32_t pid = 1;
397 int32_t windowId = -2;
398 void* pixelMap = nullptr;
399 int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, pixelMap);
400 ASSERT_EQ(ret, RET_ERR);
401 }
402
403 /**
404 * @tc.name: InputWindowsManagerTest_SetMouseIcon_03
405 * @tc.desc: Test SetMouseIcon
406 * @tc.type: FUNC
407 * @tc.require:
408 */
409 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_03, TestSize.Level1)
410 {
411 CALL_TEST_DEBUG;
412 PointerDrawingManager pointerDrawingManager;
413 int32_t pid = 1;
414 int32_t windowId = 2;
415 PointerStyle style;
416 int32_t ret1 = pointerDrawingManager.SetPointerStyle(pid, windowId, style);
417 EXPECT_EQ(ret1, RET_ERR);
418
419 void* pixelMap = nullptr;
420 int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, pixelMap);
421 ASSERT_EQ(ret, RET_ERR);
422 }
423
424 /**
425 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection270_01
426 * @tc.desc: Test AdjustMouseFocusByDirection270
427 * @tc.type: FUNC
428 * @tc.require:
429 */
430 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection270_01, TestSize.Level1)
431 {
432 CALL_TEST_DEBUG;
433 PointerDrawingManager pointerDrawingManager;
434 ICON_TYPE iconType = ANGLE_SW;
435 int32_t physicalX = 150;
436 int32_t physicalY = 200;
437 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.AdjustMouseFocusByDirection270(iconType, physicalX, physicalY));
438 }
439
440 /**
441 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection270_02
442 * @tc.desc: Test AdjustMouseFocusByDirection270
443 * @tc.type: FUNC
444 * @tc.require:
445 */
446 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection270_02, TestSize.Level1)
447 {
448 CALL_TEST_DEBUG;
449 PointerDrawingManager pointerDrawingManager;
450 ICON_TYPE iconType = ANGLE_CENTER;
451 int32_t physicalX = 100;
452 int32_t physicalY = 150;
453 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.AdjustMouseFocusByDirection270(iconType, physicalX, physicalY));
454 }
455
456 /**
457 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection270_03
458 * @tc.desc: Test AdjustMouseFocusByDirection270
459 * @tc.type: FUNC
460 * @tc.require:
461 */
462 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection270_03, TestSize.Level1)
463 {
464 CALL_TEST_DEBUG;
465 PointerDrawingManager pointerDrawingManager;
466 ICON_TYPE iconType = ANGLE_NW_RIGHT;
467 int32_t physicalX = 50;
468 int32_t physicalY = 150;
469 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.AdjustMouseFocusByDirection270(iconType, physicalX, physicalY));
470 }
471
472 /**
473 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection270_04
474 * @tc.desc: Test AdjustMouseFocusByDirection270
475 * @tc.type: FUNC
476 * @tc.require:
477 */
478 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection270_04, TestSize.Level1)
479 {
480 CALL_TEST_DEBUG;
481 PointerDrawingManager pointerDrawingManager;
482 ICON_TYPE iconType = ANGLE_NW;
483 int32_t physicalX = 100;
484 int32_t physicalY = 50;
485 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.AdjustMouseFocusByDirection270(iconType, physicalX, physicalY));
486 }
487
488 /**
489 * @tc.name: InputWindowsManagerTest_DrawMovePointer_001
490 * @tc.desc: Test the funcation DrawMovePointer
491 * @tc.type: FUNC
492 * @tc.require:
493 */
494 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawMovePointer_001, TestSize.Level1)
495 {
496 CALL_TEST_DEBUG;
497 PointerDrawingManager manager;
498 int32_t displayId = 1;
499 int32_t physicalX = 2;
500 int32_t physicalY = 3;
501 PointerStyle pointerStyle;
502 Direction direction = DIRECTION0;
503 manager.surfaceNode_ = nullptr;
504 int32_t ret = manager.DrawMovePointer(displayId, physicalX, physicalY, pointerStyle, direction);
505 EXPECT_EQ(ret, RET_ERR);
506 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
507 surfaceNodeConfig.SurfaceNodeName = "pointer window";
508 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
509 manager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
510 ASSERT_TRUE(manager.surfaceNode_ != nullptr);
511 ret = manager.DrawMovePointer(displayId, physicalX, physicalY, pointerStyle, direction);
512 EXPECT_EQ(ret, RET_OK);
513 }
514
515 /**
516 * @tc.name: InputWindowsManagerTest_DrawCursor_002
517 * @tc.desc: Test the funcation DrawCursor
518 * @tc.type: FUNC
519 * @tc.require:
520 */
521 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawCursor_002, TestSize.Level1)
522 {
523 CALL_TEST_DEBUG;
524 PointerDrawingManager manager;
525 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
526 surfaceNodeConfig.SurfaceNodeName = "pointer window";
527 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
528 manager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
529 ASSERT_TRUE(manager.surfaceNode_ != nullptr);
530 MOUSE_ICON mouseStyle = EAST;
531 int32_t ret = manager.DrawCursor(mouseStyle);
532 EXPECT_EQ(ret, RET_OK);
533 }
534
535 /**
536 * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_003
537 * @tc.desc: Test SetMouseHotSpot
538 * @tc.type: FUNC
539 * @tc.require:
540 */
541 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_003, TestSize.Level1)
542 {
543 CALL_TEST_DEBUG;
544 PointerDrawingManager pointerDrawingManager;
545 auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
546 int32_t pid = 1;
547 int32_t windowId = -2;
548 EXPECT_CALL(*winmgrmock, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_OK));
549 int32_t hotSpotX = -1;
550 int32_t hotSpotY = 2;
551 pointerDrawingManager.userIcon_ = nullptr;
552 int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
553 ASSERT_EQ(ret, RET_ERR);
554 hotSpotX = 1;
555 hotSpotY = -2;
556 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
557 ASSERT_EQ(ret, RET_ERR);
558 hotSpotX = 1;
559 hotSpotY = 2;
560 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
561 ASSERT_EQ(ret, RET_ERR);
562 pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
563 ASSERT_NE(pointerDrawingManager.userIcon_, nullptr);
564 hotSpotX = -1;
565 hotSpotY = 2;
566 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
567 ASSERT_EQ(ret, RET_ERR);
568 hotSpotX = -1;
569 hotSpotY = -2;
570 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
571 ASSERT_EQ(ret, RET_ERR);
572 hotSpotX = 1;
573 hotSpotY = -2;
574 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
575 ASSERT_EQ(ret, RET_ERR);
576 hotSpotX = 3;
577 hotSpotY = 4;
578 pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
579 ASSERT_NE(pointerDrawingManager.userIcon_, nullptr);
580 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
581 ASSERT_EQ(ret, RET_ERR);
582 testing::Mock::AllowLeak(winmgrmock.get());
583 }
584
585 /**
586 * @tc.name: InputWindowsManagerTest_SetPointerColor_002
587 * @tc.desc: Test SetPointerColor
588 * @tc.type: FUNC
589 * @tc.require:
590 */
591 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerColor_002, TestSize.Level1)
592 {
593 CALL_TEST_DEBUG;
594 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
595 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
596 surfaceNodeConfig.SurfaceNodeName = "pointer window";
597 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
598 pointerDrawingManager->surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
599 ASSERT_TRUE(pointerDrawingManager->surfaceNode_ != nullptr);
600 pointerDrawingManager->SetPointerColor(16777216);
601 int32_t color = pointerDrawingManager->GetPointerColor();
602 EXPECT_EQ(color, RET_OK);
603 }
604
605 /**
606 * @tc.name: InputWindowsManagerTest_UpdatePointerDevice_002
607 * @tc.desc: Test UpdatePointerDevice
608 * @tc.type: FUNC
609 * @tc.require:
610 */
611 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdatePointerDevice_002, TestSize.Level1)
612 {
613 CALL_TEST_DEBUG;
614 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
615 EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 0);
616 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(true, false, true));
617 EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 1);
618 pointerDrawingManager->surfaceNode_ = nullptr;
619 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(false, false, true));
620 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
621 surfaceNodeConfig.SurfaceNodeName = "pointer window";
622 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
623 pointerDrawingManager->surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
624 ASSERT_TRUE(pointerDrawingManager->surfaceNode_ != nullptr);
625 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(false, false, true));
626 }
627
628 /**
629 * @tc.name: InputWindowsManagerTest_DrawManager_005
630 * @tc.desc: Test DrawManager
631 * @tc.type: FUNC
632 * @tc.require:
633 */
634 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawManager_005, TestSize.Level1)
635 {
636 CALL_TEST_DEBUG;
637 PointerDrawingManager pointerDrawingManager;
638 auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
639 pointerDrawingManager.hasDisplay_ = true;
640 pointerDrawingManager.hasPointerDevice_ = true;
641 pointerDrawingManager.surfaceNode_ = nullptr;
642 EXPECT_CALL(*winmgrmock, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_ERR));
643 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
644 EXPECT_CALL(*winmgrmock, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_OK));
645 pointerDrawingManager.lastPhysicalX_ = -1;
646 pointerDrawingManager.lastPhysicalY_ = 1;
647 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
648 pointerDrawingManager.lastPhysicalX_ = 1;
649 pointerDrawingManager.lastPhysicalY_ = -1;
650 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
651 pointerDrawingManager.lastPhysicalX_ = -1;
652 pointerDrawingManager.lastPhysicalY_ = -1;
653 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
654 EXPECT_CALL(*winmgrmock, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_OK));
655 pointerDrawingManager.lastPhysicalX_ = 1;
656 pointerDrawingManager.lastPhysicalY_ = 1;
657 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
658 testing::Mock::AllowLeak(winmgrmock.get());
659 }
660
661 /**
662 * @tc.name: InputWindowsManagerTest_SetPointerVisible_002
663 * @tc.desc: Test SetPointerVisible
664 * @tc.type: FUNC
665 * @tc.require:
666 */
667 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerVisible_002, TestSize.Level1)
668 {
669 CALL_TEST_DEBUG;
670 auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
671 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
672 EXPECT_CALL(*winmgrmock, GetExtraData).WillRepeatedly(testing::Return(ExtraData{true}));
673 int32_t pid = 1;
674 bool visible = true;
675 int32_t priority = 0;
676 int32_t ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
677 ASSERT_EQ(ret, RET_OK);
678 visible = false;
679 priority = 0;
680 ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
681 ASSERT_EQ(ret, RET_OK);
682 visible = true;
683 priority = 1;
684 ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
685 ASSERT_EQ(ret, RET_OK);
686 visible = false;
687 priority = 1;
688 ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
689 ASSERT_EQ(ret, RET_OK);
690 EXPECT_CALL(*winmgrmock, GetExtraData).WillRepeatedly(testing::Return(ExtraData{false}));
691 visible = false;
692 priority = 0;
693 ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
694 ASSERT_EQ(ret, RET_OK);
695 visible = true;
696 priority = 1;
697 ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
698 ASSERT_EQ(ret, RET_OK);
699 visible = false;
700 priority = 1;
701 ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
702 ASSERT_EQ(ret, RET_OK);
703 testing::Mock::AllowLeak(winmgrmock.get());
704 }
705
706 /**
707 * @tc.name: InputWindowsManagerTest_SetPointerLocation_002
708 * @tc.desc: Test SetPointerLocation
709 * @tc.type: FUNC
710 * @tc.require:
711 */
712 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerLocation_002, TestSize.Level1)
713 {
714 CALL_TEST_DEBUG;
715 PointerDrawingManager pointerDrawingManager;
716 int32_t x = 100;
717 int32_t y = 100;
718 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
719 surfaceNodeConfig.SurfaceNodeName = "pointer window";
720 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
721 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
722 ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
723 int32_t displayId = 0;
724 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.SetPointerLocation(x, y, displayId));
725 }
726
727 /**
728 * @tc.name: InputWindowsManagerTest_UpdateDefaultPointerStyle_002
729 * @tc.desc: Test UpdateDefaultPointerStyle
730 * @tc.type: FUNC
731 * @tc.require:
732 */
733 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdateDefaultPointerStyle_002, TestSize.Level1)
734 {
735 CALL_TEST_DEBUG;
736 auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
737 PointerDrawingManager pointerDrawingManager;
738 int32_t pid = 1;
739 int32_t windowId = -1;
740 PointerStyle pointerStyle;
741 pointerStyle.id = 0;
742 pointerStyle.color = 0;
743 pointerStyle.size = 2;
744 EXPECT_CALL(*winmgrmock, GetPointerStyle).WillRepeatedly(testing::Return(RET_ERR));
745 int32_t ret = pointerDrawingManager.UpdateDefaultPointerStyle(pid, windowId, pointerStyle);
746 EXPECT_EQ(ret, RET_OK);
747 testing::Mock::AllowLeak(winmgrmock.get());
748 }
749
750 /**
751 * @tc.name: InputWindowsManagerTest_GetPointerStyle_001
752 * @tc.desc: Test GetPointerStyle
753 * @tc.type: FUNC
754 * @tc.require:
755 */
756 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_GetPointerStyle_001, TestSize.Level1)
757 {
758 CALL_TEST_DEBUG;
759 auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
760 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
761 int32_t pid = 1;
762 int32_t windowId = 2;
763 bool isUiExtension = true;
764 PointerStyle pointerStyle;
765 EXPECT_CALL(*winmgrmock, GetPointerStyle).WillRepeatedly(testing::Return(RET_ERR));
766 int32_t ret = pointerDrawingManager->GetPointerStyle(pid, windowId, pointerStyle, isUiExtension);
767 EXPECT_EQ(ret, RET_OK);
768 testing::Mock::AllowLeak(winmgrmock.get());
769 }
770
771 /**
772 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_002
773 * @tc.desc: Test DrawPointerStyle
774 * @tc.type: FUNC
775 * @tc.require:
776 */
777 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_002, TestSize.Level1)
778 {
779 CALL_TEST_DEBUG;
780 PointerDrawingManager pointerDrawingManager;
781 PointerStyle pointerStyle;
782 pointerStyle.id = 0;
783 pointerStyle.color = 0;
784 pointerStyle.size = 2;
785 pointerDrawingManager.hasDisplay_ = false;
786 pointerDrawingManager.hasPointerDevice_ = true;
787 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
788 pointerDrawingManager.hasDisplay_ = true;
789 pointerDrawingManager.hasPointerDevice_ = false;
790 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
791 pointerDrawingManager.hasDisplay_ = false;
792 pointerDrawingManager.hasPointerDevice_ = false;
793 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
794 pointerDrawingManager.hasDisplay_ = true;
795 pointerDrawingManager.hasPointerDevice_ = true;
796 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
797 surfaceNodeConfig.SurfaceNodeName = "pointer window";
798 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
799 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
800 ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
801 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
802 pointerDrawingManager.hasDisplay_ = true;
803 pointerDrawingManager.hasPointerDevice_ = true;
804 pointerDrawingManager.surfaceNode_ = nullptr;
805 pointerDrawingManager.lastPhysicalX_ = -1;
806 pointerDrawingManager.lastPhysicalY_ = 1;
807 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
808 pointerDrawingManager.lastPhysicalX_ = 1;
809 pointerDrawingManager.lastPhysicalY_ = -1;
810 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
811 pointerDrawingManager.lastPhysicalX_ = -1;
812 pointerDrawingManager.lastPhysicalY_ = -1;
813 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
814 pointerDrawingManager.lastPhysicalX_ = 1;
815 pointerDrawingManager.lastPhysicalY_ = 1;
816 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
817 }
818
819 /**
820 * @tc.name: InputWindowsManagerTest_Init_001
821 * @tc.desc: Test Init
822 * @tc.type: FUNC
823 * @tc.require:
824 */
825 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_Init_001, TestSize.Level1)
826 {
827 CALL_TEST_DEBUG;
828 bool isSucess = IPointerDrawingManager::GetInstance()->Init();
829 EXPECT_EQ(isSucess, true);
830 IconStyle iconStyle = IPointerDrawingManager::GetInstance()->GetIconStyle(MOUSE_ICON(MOUSE_ICON::DEFAULT));
831 EXPECT_EQ(iconStyle.alignmentWay, 7);
832 }
833
834 /**
835 * @tc.name: InputWindowsManagerTest_SetMouseDisplayState_001
836 * @tc.desc: Test SetMouseDisplayState
837 * @tc.type: FUNC
838 * @tc.require:
839 */
840 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseDisplayState_001, TestSize.Level1)
841 {
842 CALL_TEST_DEBUG;
843 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
844 pointerDrawingManager->SetMouseDisplayState(true);
845 bool mouseDisplayState = pointerDrawingManager->GetMouseDisplayState();
846 EXPECT_EQ(mouseDisplayState, true);
847 }
848
849 /**
850 * @tc.name: InputWindowsManagerTest_UpdatePointerDevice_001
851 * @tc.desc: Test UpdatePointerDevice
852 * @tc.type: FUNC
853 * @tc.require:
854 */
855 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdatePointerDevice_001, TestSize.Level1)
856 {
857 CALL_TEST_DEBUG;
858 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
859 EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 0);
860 pointerDrawingManager->UpdatePointerDevice(true, true, true);
861 EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 1);
862 pointerDrawingManager->UpdatePointerDevice(false, true, true);
863 EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 0);
864 }
865
866 /**
867 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection0_001
868 * @tc.desc: Test AdjustMouseFocusByDirection0
869 * @tc.type: FUNC
870 * @tc.require:
871 */
872 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection0_001, TestSize.Level1)
873 {
874 CALL_TEST_DEBUG;
875 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
876 pointerDrawingManager->imageWidth_ = 50;
877 pointerDrawingManager->imageHeight_ = 50;
878 pointerDrawingManager->userIconHotSpotX_ = 5;
879 pointerDrawingManager->userIconHotSpotY_ = 5;
880 int32_t physicalX = 100;
881 int32_t physicalY = 100;
882 pointerDrawingManager->AdjustMouseFocusByDirection0(ANGLE_SW, physicalX, physicalY);
883 EXPECT_EQ(physicalX, 100);
884 EXPECT_EQ(physicalY, 50);
885 physicalX = 100;
886 physicalY = 100;
887 pointerDrawingManager->AdjustMouseFocusByDirection0(ANGLE_CENTER, physicalX, physicalY);
888 EXPECT_EQ(physicalX, 75);
889 EXPECT_EQ(physicalY, 75);
890 physicalX = 100;
891 physicalY = 100;
892 pointerDrawingManager->AdjustMouseFocusByDirection0(ANGLE_NW_RIGHT, physicalX, physicalY);
893 EXPECT_EQ(physicalX, 92);
894 EXPECT_EQ(physicalY, 100);
895 physicalX = 100;
896 physicalY = 100;
897 pointerDrawingManager->userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
898 pointerDrawingManager->currentMouseStyle_.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
899 pointerDrawingManager->AdjustMouseFocusByDirection0(ANGLE_NW, physicalX, physicalY);
900 EXPECT_EQ(physicalX, 100);
901 EXPECT_EQ(physicalY, 100);
902 physicalX = 100;
903 physicalY = 100;
904 pointerDrawingManager->AdjustMouseFocusByDirection0(ANGLE_E, physicalX, physicalY);
905 EXPECT_EQ(physicalX, 100);
906 EXPECT_EQ(physicalY, 100);
907 }
908
909 /**
910 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection90_001
911 * @tc.desc: Test AdjustMouseFocusByDirection90
912 * @tc.type: FUNC
913 * @tc.require:
914 */
915 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection90_001, TestSize.Level1)
916 {
917 CALL_TEST_DEBUG;
918 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
919 pointerDrawingManager->imageWidth_ = 50;
920 pointerDrawingManager->imageHeight_ = 50;
921 pointerDrawingManager->userIconHotSpotX_ = 5;
922 pointerDrawingManager->userIconHotSpotY_ = 5;
923 int32_t physicalX = 100;
924 int32_t physicalY = 100;
925 pointerDrawingManager->AdjustMouseFocusByDirection90(ANGLE_SW, physicalX, physicalY);
926 EXPECT_EQ(physicalX, 100);
927 EXPECT_EQ(physicalY, 150);
928 physicalX = 100;
929 physicalY = 100;
930 pointerDrawingManager->AdjustMouseFocusByDirection90(ANGLE_CENTER, physicalX, physicalY);
931 EXPECT_EQ(physicalX, 75);
932 EXPECT_EQ(physicalY, 125);
933 physicalX = 100;
934 physicalY = 100;
935 pointerDrawingManager->AdjustMouseFocusByDirection90(ANGLE_NW_RIGHT, physicalX, physicalY);
936 EXPECT_EQ(physicalX, 92);
937 EXPECT_EQ(physicalY, 100);
938 physicalX = 100;
939 physicalY = 100;
940 pointerDrawingManager->userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
941 pointerDrawingManager->currentMouseStyle_.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
942 pointerDrawingManager->AdjustMouseFocusByDirection90(ANGLE_NW, physicalX, physicalY);
943 EXPECT_EQ(physicalX, 100);
944 EXPECT_EQ(physicalY, 100);
945 physicalX = 100;
946 physicalY = 100;
947 pointerDrawingManager->AdjustMouseFocusByDirection90(ANGLE_E, physicalX, physicalY);
948 EXPECT_EQ(physicalX, 100);
949 EXPECT_EQ(physicalY, 100);
950 }
951
952 /**
953 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection180_001
954 * @tc.desc: Test AdjustMouseFocusByDirection180
955 * @tc.type: FUNC
956 * @tc.require:
957 */
958 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection180_001, TestSize.Level1)
959 {
960 CALL_TEST_DEBUG;
961 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
962 pointerDrawingManager->imageWidth_ = 50;
963 pointerDrawingManager->imageHeight_ = 50;
964 pointerDrawingManager->userIconHotSpotX_ = 5;
965 pointerDrawingManager->userIconHotSpotY_ = 5;
966 int32_t physicalX = 100;
967 int32_t physicalY = 100;
968 pointerDrawingManager->AdjustMouseFocusByDirection180(ANGLE_SW, physicalX, physicalY);
969 EXPECT_EQ(physicalX, 100);
970 EXPECT_EQ(physicalY, 150);
971 physicalX = 100;
972 physicalY = 100;
973 pointerDrawingManager->AdjustMouseFocusByDirection180(ANGLE_CENTER, physicalX, physicalY);
974 EXPECT_EQ(physicalX, 125);
975 EXPECT_EQ(physicalY, 125);
976 physicalX = 100;
977 physicalY = 100;
978 pointerDrawingManager->AdjustMouseFocusByDirection180(ANGLE_NW_RIGHT, physicalX, physicalY);
979 EXPECT_EQ(physicalX, 107);
980 EXPECT_EQ(physicalY, 100);
981 physicalX = 100;
982 physicalY = 100;
983 pointerDrawingManager->userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
984 pointerDrawingManager->currentMouseStyle_.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
985 pointerDrawingManager->AdjustMouseFocusByDirection180(ANGLE_NW, physicalX, physicalY);
986 EXPECT_EQ(physicalX, 100);
987 EXPECT_EQ(physicalY, 100);
988 physicalX = 100;
989 physicalY = 100;
990 pointerDrawingManager->AdjustMouseFocusByDirection180(ANGLE_E, physicalX, physicalY);
991 EXPECT_EQ(physicalX, 100);
992 EXPECT_EQ(physicalY, 100);
993 }
994
995 /**
996 * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection270_001
997 * @tc.desc: Test AdjustMouseFocusByDirection270
998 * @tc.type: FUNC
999 * @tc.require:
1000 */
1001 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection270_001, TestSize.Level1)
1002 {
1003 CALL_TEST_DEBUG;
1004 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
1005 pointerDrawingManager->imageWidth_ = 50;
1006 pointerDrawingManager->imageHeight_ = 50;
1007 pointerDrawingManager->userIconHotSpotX_ = 5;
1008 pointerDrawingManager->userIconHotSpotY_ = 5;
1009 int32_t physicalX = 100;
1010 int32_t physicalY = 100;
1011 pointerDrawingManager->AdjustMouseFocusByDirection270(ANGLE_SW, physicalX, physicalY);
1012 EXPECT_EQ(physicalX, 100);
1013 EXPECT_EQ(physicalY, 50);
1014 physicalX = 100;
1015 physicalY = 100;
1016 pointerDrawingManager->AdjustMouseFocusByDirection270(ANGLE_CENTER, physicalX, physicalY);
1017 EXPECT_EQ(physicalX, 125);
1018 EXPECT_EQ(physicalY, 75);
1019 physicalX = 100;
1020 physicalY = 100;
1021 pointerDrawingManager->AdjustMouseFocusByDirection270(ANGLE_NW_RIGHT, physicalX, physicalY);
1022 EXPECT_EQ(physicalX, 107);
1023 EXPECT_EQ(physicalY, 100);
1024 physicalX = 100;
1025 physicalY = 100;
1026 pointerDrawingManager->userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1027 pointerDrawingManager->currentMouseStyle_.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
1028 pointerDrawingManager->AdjustMouseFocusByDirection270(ANGLE_NW, physicalX, physicalY);
1029 EXPECT_EQ(physicalX, 100);
1030 EXPECT_EQ(physicalY, 100);
1031 physicalX = 100;
1032 physicalY = 100;
1033 pointerDrawingManager->AdjustMouseFocusByDirection270(ANGLE_E, physicalX, physicalY);
1034 EXPECT_EQ(physicalX, 100);
1035 EXPECT_EQ(physicalY, 100);
1036 }
1037
1038 /**
1039 * @tc.name: InputWindowsManagerTest_AdjustMouseFocus_001
1040 * @tc.desc: Test AdjustMouseFocus
1041 * @tc.type: FUNC
1042 * @tc.require:
1043 */
1044 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocus_001, TestSize.Level1)
1045 {
1046 CALL_TEST_DEBUG;
1047 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
1048 pointerDrawingManager->imageWidth_ = 50;
1049 pointerDrawingManager->imageHeight_ = 50;
1050 int32_t physicalX = 100;
1051 int32_t physicalY = 100;
1052 pointerDrawingManager->RotateDegree(DIRECTION0);
1053 pointerDrawingManager->AdjustMouseFocus(DIRECTION0, ANGLE_SW, physicalX, physicalY);
1054 EXPECT_EQ(physicalX, 100);
1055 EXPECT_EQ(physicalY, 50);
1056 physicalX = 100;
1057 physicalY = 100;
1058 pointerDrawingManager->RotateDegree(DIRECTION90);
1059 pointerDrawingManager->AdjustMouseFocus(DIRECTION90, ANGLE_SW, physicalX, physicalY);
1060 EXPECT_EQ(physicalX, 100);
1061 EXPECT_EQ(physicalY, 150);
1062 physicalX = 100;
1063 physicalY = 100;
1064 pointerDrawingManager->RotateDegree(DIRECTION180);
1065 pointerDrawingManager->AdjustMouseFocus(DIRECTION180, ANGLE_SW, physicalX, physicalY);
1066 EXPECT_EQ(physicalX, 100);
1067 EXPECT_EQ(physicalY, 150);
1068 physicalX = 100;
1069 physicalY = 100;
1070 pointerDrawingManager->RotateDegree(DIRECTION270);
1071 pointerDrawingManager->AdjustMouseFocus(DIRECTION270, ANGLE_SW, physicalX, physicalY);
1072 EXPECT_EQ(physicalX, 100);
1073 EXPECT_EQ(physicalY, 50);
1074 physicalX = 100;
1075 physicalY = 100;
1076 pointerDrawingManager->RotateDegree(static_cast<Direction>(4));
1077 pointerDrawingManager->AdjustMouseFocus(static_cast<Direction>(4), ANGLE_SW, physicalX, physicalY);
1078 EXPECT_EQ(physicalX, 100);
1079 EXPECT_EQ(physicalY, 100);
1080 }
1081
1082 /**
1083 * @tc.name: InputWindowsManagerTest_SetPointerColor_001
1084 * @tc.desc: Test SetPointerColor
1085 * @tc.type: FUNC
1086 * @tc.require:
1087 */
1088 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerColor_001, TestSize.Level1)
1089 {
1090 CALL_TEST_DEBUG;
1091 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
1092 pointerDrawingManager->SetPointerColor(-1);
1093 int32_t color = pointerDrawingManager->GetPointerColor();
1094 EXPECT_NE(color, 0);
1095 pointerDrawingManager->SetPointerColor(16777216);
1096 color = pointerDrawingManager->GetPointerColor();
1097 EXPECT_EQ(color, 0);
1098 }
1099
1100 /**
1101 * @tc.name: InputWindowsManagerTest_SetPointerVisible_001
1102 * @tc.desc: Test SetPointerVisible
1103 * @tc.type: FUNC
1104 * @tc.require:
1105 */
1106 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerVisible_001, TestSize.Level1)
1107 {
1108 CALL_TEST_DEBUG;
1109 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
1110 for (int32_t i = 1; i < 102; i++) {
1111 pointerDrawingManager->SetPointerVisible(i, false, 0, false);
1112 }
1113 bool visible = pointerDrawingManager->GetPointerVisible(1);
1114 EXPECT_EQ(visible, true);
1115 pointerDrawingManager->SetPointerVisible(11, true, 0, false);
1116 visible = pointerDrawingManager->GetPointerVisible(11);
1117 EXPECT_EQ(visible, true);
1118 }
1119
1120 /**
1121 * @tc.name: InputWindowsManagerTest_SetPointerStyle_001
1122 * @tc.desc: Test SetPointerStyle
1123 * @tc.type: FUNC
1124 * @tc.require:
1125 */
1126 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStyle_001, TestSize.Level1)
1127 {
1128 CALL_TEST_DEBUG;
1129 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
1130 PointerStyle pointerStyle;
1131 pointerStyle.id = 0;
1132 pointerDrawingManager->SetPointerStyle(1, -1, pointerStyle);
1133 PointerStyle pointerStyleTmp;
1134 pointerDrawingManager->GetPointerStyle(1, -1, pointerStyleTmp);
1135 EXPECT_EQ(pointerStyleTmp.id, pointerStyle.id);
1136 }
1137
1138 /**
1139 * @tc.name: InputWindowsManagerTest_SetPointerSize_001
1140 * @tc.desc: Test SetPointerSize
1141 * @tc.type: FUNC
1142 * @tc.require:
1143 */
1144 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerSize_001, TestSize.Level1)
1145 {
1146 CALL_TEST_DEBUG;
1147 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
1148 pointerDrawingManager->SetPointerSize(0);
1149 int32_t pointerSize = pointerDrawingManager->GetPointerSize();
1150 EXPECT_NE(pointerSize, 0);
1151 pointerDrawingManager->SetPointerSize(8);
1152 pointerSize = pointerDrawingManager->GetPointerSize();
1153 EXPECT_NE(pointerSize, 0);
1154 }
1155
1156 /**
1157 * @tc.name: InputWindowsManagerTest_FixCursorPosition_001
1158 * @tc.desc: Test FixCursorPosition
1159 * @tc.type: FUNC
1160 * @tc.require:
1161 */
1162 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_FixCursorPosition_001, TestSize.Level1)
1163 {
1164 CALL_TEST_DEBUG;
1165 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
1166 pointerDrawingManager->displayInfo_.displayDirection = DIRECTION0;
1167 pointerDrawingManager->displayInfo_.direction = DIRECTION0;
1168 pointerDrawingManager->displayInfo_.width = 500;
1169 pointerDrawingManager->displayInfo_.height = 1100;
1170 pointerDrawingManager->imageWidth_ = 48;
1171 pointerDrawingManager->imageHeight_ = 48;
1172 int32_t physicalX = 500;
1173 int32_t physicalY = 1100;
1174 pointerDrawingManager->FixCursorPosition(physicalX, physicalY);
1175 EXPECT_EQ(physicalX, -3);
1176 EXPECT_EQ(physicalY, -3);
1177 pointerDrawingManager->displayInfo_.direction = DIRECTION90;
1178 physicalX = 1100;
1179 physicalY = 500;
1180 pointerDrawingManager->FixCursorPosition(physicalX, physicalY);
1181 EXPECT_EQ(physicalX, -3);
1182 EXPECT_EQ(physicalY, 500);
1183 pointerDrawingManager->displayInfo_.displayDirection = DIRECTION90;
1184 pointerDrawingManager->displayInfo_.direction = DIRECTION0;
1185 physicalX = 500;
1186 physicalY = 1100;
1187 pointerDrawingManager->FixCursorPosition(physicalX, physicalY);
1188 EXPECT_EQ(physicalX, -3);
1189 EXPECT_EQ(physicalY, -3);
1190 }
1191
1192 /**
1193 * @tc.name: InputWindowsManagerTest_CreatePointerSwitchObserver_001
1194 * @tc.desc: Test CreatePointerSwitchObserver
1195 * @tc.type: FUNC
1196 * @tc.require:
1197 */
1198 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_CreatePointerSwitchObserver_001, TestSize.Level1)
1199 {
1200 CALL_TEST_DEBUG;
1201 PointerDrawingManager pointerDrawingManager;
1202 isMagicCursor item;
1203 item.isShow = true;
1204 item.name = "test";
1205 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.CreatePointerSwitchObserver(item));
1206 }
1207
1208 /**
1209 * @tc.name: InputWindowsManagerTest_DrawCursor_001
1210 * @tc.desc: Test DrawCursor
1211 * @tc.type: FUNC
1212 * @tc.require:
1213 */
1214 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawCursor_001, TestSize.Level1)
1215 {
1216 CALL_TEST_DEBUG;
1217 PointerDrawingManager pointerDrawingManager;
1218 MOUSE_ICON mouseStyle = EAST;
1219 int32_t ret = pointerDrawingManager.DrawCursor(mouseStyle);
1220 EXPECT_EQ(ret, RET_ERR);
1221 pointerDrawingManager.surfaceNode_ = nullptr;
1222 ret = pointerDrawingManager.DrawCursor(mouseStyle);
1223 EXPECT_EQ(ret, RET_ERR);
1224 }
1225
1226 /**
1227 * @tc.name: InputWindowsManagerTest_DrawLoadingPointerStyle_001
1228 * @tc.desc: Test DrawLoadingPointerStyle
1229 * @tc.type: FUNC
1230 * @tc.require:
1231 */
1232 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawLoadingPointerStyle_001, TestSize.Level1)
1233 {
1234 CALL_TEST_DEBUG;
1235 PointerDrawingManager pointerDrawingManager;
1236 MOUSE_ICON mouseStyle = EAST;
1237 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawLoadingPointerStyle(mouseStyle));
1238 }
1239
1240 /**
1241 * @tc.name: InputWindowsManagerTest_DrawRunningPointerAnimate_001
1242 * @tc.desc: Test DrawRunningPointerAnimate
1243 * @tc.type: FUNC
1244 * @tc.require:
1245 */
1246 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawRunningPointerAnimate_001, TestSize.Level1)
1247 {
1248 CALL_TEST_DEBUG;
1249 PointerDrawingManager pointerDrawingManager;
1250 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
1251 surfaceNodeConfig.SurfaceNodeName = "pointer window";
1252 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
1253 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
1254 pointerDrawingManager.surfaceNode_->SetFrameGravity(Rosen::Gravity::RESIZE_ASPECT_FILL);
1255 pointerDrawingManager.surfaceNode_->SetPositionZ(Rosen::RSSurfaceNode::POINTER_WINDOW_POSITION_Z);
1256 MOUSE_ICON mouseStyle = EAST;
1257 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawRunningPointerAnimate(mouseStyle));
1258 }
1259
1260 /**
1261 * @tc.name: InputWindowsManagerTest_GetLayer_001
1262 * @tc.desc: Test GetLayer
1263 * @tc.type: FUNC
1264 * @tc.require:
1265 */
1266 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_GetLayer_001, TestSize.Level1)
1267 {
1268 CALL_TEST_DEBUG;
1269 PointerDrawingManager pointerDrawingManager;
1270 pointerDrawingManager.surfaceNode_ = nullptr;
1271 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.GetLayer());
1272 }
1273
1274 /**
1275 * @tc.name: InputWindowsManagerTest_SetMouseIcon_001
1276 * @tc.desc: Test SetMouseIcon
1277 * @tc.type: FUNC
1278 * @tc.require:
1279 */
1280 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_001, TestSize.Level1)
1281 {
1282 CALL_TEST_DEBUG;
1283 PointerDrawingManager pointerDrawingManager;
1284 int32_t pid = -1;
1285 int32_t windowId = 1;
1286 void* pixelMap = nullptr;
1287 int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, pixelMap);
1288 EXPECT_EQ(ret, RET_ERR);
1289 pid = 1;
1290 ret = pointerDrawingManager.SetMouseIcon(pid, windowId, pixelMap);
1291 EXPECT_EQ(ret, RET_ERR);
1292 }
1293
1294 /**
1295 * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_001
1296 * @tc.desc: Test SetMouseHotSpot
1297 * @tc.type: FUNC
1298 * @tc.require:
1299 */
1300 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_001, TestSize.Level1)
1301 {
1302 CALL_TEST_DEBUG;
1303 PointerDrawingManager pointerDrawingManager;
1304 int32_t pid = -1;
1305 int32_t windowId = 1;
1306 int32_t hotSpotX = 100;
1307 int32_t hotSpotY = 100;
1308 int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1309 EXPECT_EQ(ret, RET_ERR);
1310 pid = 1;
1311 windowId = -1;
1312 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1313 EXPECT_EQ(ret, RET_ERR);
1314 pid = 1;
1315 windowId = 1;
1316 hotSpotX = -1;
1317 hotSpotY = -1;
1318 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1319 EXPECT_EQ(ret, RET_ERR);
1320 pid = 1;
1321 windowId = 1;
1322 hotSpotX = 100;
1323 hotSpotY = 100;
1324 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1325 EXPECT_EQ(ret, RET_ERR);
1326 }
1327
1328 /**
1329 * @tc.name: InputWindowsManagerTest_DecodeImageToPixelMap_001
1330 * @tc.desc: Test DecodeImageToPixelMap
1331 * @tc.type: FUNC
1332 * @tc.require:
1333 */
1334 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DecodeImageToPixelMap_001, TestSize.Level1)
1335 {
1336 CALL_TEST_DEBUG;
1337 PointerDrawingManager pointerDrawingManager;
1338 std::string iconPath = ("/system/etc/multimodalinput/mouse_icon/Loading_Left.svg");
1339 pointerDrawingManager.tempPointerColor_ = 1;
1340 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DecodeImageToPixelMap(MOUSE_ICON::RUNNING));
1341 }
1342
1343 /**
1344 * @tc.name: InputWindowsManagerTest_UpdatePointerVisible_001
1345 * @tc.desc: Test UpdatePointerVisible
1346 * @tc.type: FUNC
1347 * @tc.require:
1348 */
1349 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdatePointerVisible_001, TestSize.Level1)
1350 {
1351 CALL_TEST_DEBUG;
1352 PointerDrawingManager pointerDrawingManager;
1353 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
1354 surfaceNodeConfig.SurfaceNodeName = "pointer window";
1355 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
1356 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
1357 pointerDrawingManager.mouseDisplayState_ = true;
1358 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.UpdatePointerVisible());
1359 pointerDrawingManager.mouseDisplayState_ = false;
1360 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.UpdatePointerVisible());
1361 }
1362
1363 /**
1364 * @tc.name: InputWindowsManagerTest_IsPointerVisible_001
1365 * @tc.desc: Test IsPointerVisible
1366 * @tc.type: FUNC
1367 * @tc.require:
1368 */
1369 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_IsPointerVisible_001, TestSize.Level1)
1370 {
1371 CALL_TEST_DEBUG;
1372 PointerDrawingManager pointerDrawingManager;
1373 bool ret = pointerDrawingManager.IsPointerVisible();
1374 EXPECT_TRUE(ret);
1375 }
1376
1377 /**
1378 * @tc.name: InputWindowsManagerTest_DeletePointerVisible_001
1379 * @tc.desc: Test DeletePointerVisible
1380 * @tc.type: FUNC
1381 * @tc.require:
1382 */
1383 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DeletePointerVisible_001, TestSize.Level1)
1384 {
1385 CALL_TEST_DEBUG;
1386 PointerDrawingManager pointerDrawingManager;
1387 int32_t pid = 1;
1388 PointerDrawingManager::PidInfo info = { .pid = 1, .visible = true };
1389 pointerDrawingManager.pidInfos_.push_back(info);
1390 info = { .pid = 2, .visible = true };
1391 pointerDrawingManager.pidInfos_.push_back(info);
1392 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
1393 }
1394
1395 /**
1396 * @tc.name: InputWindowsManagerTest_SetPointerLocation_001
1397 * @tc.desc: Test SetPointerLocation
1398 * @tc.type: FUNC
1399 * @tc.require:
1400 */
1401 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerLocation_001, TestSize.Level1)
1402 {
1403 CALL_TEST_DEBUG;
1404 PointerDrawingManager pointerDrawingManager;
1405 int32_t x = 100;
1406 int32_t y = 100;
1407 int32_t displayId = 0;
1408 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.SetPointerLocation(x, y, displayId));
1409 }
1410
1411 /**
1412 * @tc.name: InputWindowsManagerTest_UpdateDefaultPointerStyle_001
1413 * @tc.desc: Test UpdateDefaultPointerStyle
1414 * @tc.type: FUNC
1415 * @tc.require:
1416 */
1417 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdateDefaultPointerStyle_001, TestSize.Level1)
1418 {
1419 CALL_TEST_DEBUG;
1420 PointerDrawingManager pointerDrawingManager;
1421 int32_t pid = 1;
1422 int32_t windowId = 1;
1423 PointerStyle pointerStyle;
1424 pointerStyle.id = 0;
1425 pointerStyle.color = 0;
1426 pointerStyle.size = 2;
1427 int32_t ret = pointerDrawingManager.UpdateDefaultPointerStyle(pid, windowId, pointerStyle);
1428 EXPECT_EQ(ret, RET_OK);
1429 windowId = -1;
1430 ret = pointerDrawingManager.UpdateDefaultPointerStyle(pid, windowId, pointerStyle);
1431 EXPECT_EQ(ret, RET_OK);
1432 }
1433
1434 /**
1435 * @tc.name: InputWindowsManagerTest_UpdateIconPath_001
1436 * @tc.desc: Test UpdateIconPath
1437 * @tc.type: FUNC
1438 * @tc.require:
1439 */
1440 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdateIconPath_001, TestSize.Level1)
1441 {
1442 CALL_TEST_DEBUG;
1443 PointerDrawingManager pointerDrawingManager;
1444 MOUSE_ICON mouseStyle = EAST;
1445 std::string iconPath = "test";
1446 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.UpdateIconPath(mouseStyle, iconPath));
1447 }
1448
1449 /**
1450 * @tc.name: InputWindowsManagerTest_SetPointerStylePreference_001
1451 * @tc.desc: Test SetPointerStylePreference
1452 * @tc.type: FUNC
1453 * @tc.require:
1454 */
1455 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStylePreference_001, TestSize.Level1)
1456 {
1457 CALL_TEST_DEBUG;
1458 PointerDrawingManager pointerDrawingManager;
1459 PointerStyle pointerStyle;
1460 pointerStyle.id = 0;
1461 pointerStyle.color = 0;
1462 pointerStyle.size = 2;
1463 int32_t ret = pointerDrawingManager.SetPointerStylePreference(pointerStyle);
1464 EXPECT_EQ(ret, RET_OK);
1465 }
1466
1467 /**
1468 * @tc.name: InputWindowsManagerTest_CheckPointerStyleParam_001
1469 * @tc.desc: Test CheckPointerStyleParam
1470 * @tc.type: FUNC
1471 * @tc.require:
1472 */
1473 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_CheckPointerStyleParam_001, TestSize.Level1)
1474 {
1475 CALL_TEST_DEBUG;
1476 PointerDrawingManager pointerDrawingManager;
1477 PointerStyle pointerStyle;
1478 pointerStyle.id = EAST;
1479 pointerStyle.color = 0;
1480 pointerStyle.size = 2;
1481 int32_t windowId = -2;
1482 bool ret = pointerDrawingManager.CheckPointerStyleParam(windowId, pointerStyle);
1483 EXPECT_FALSE(ret);
1484 windowId = 1;
1485 ret = pointerDrawingManager.CheckPointerStyleParam(windowId, pointerStyle);
1486 EXPECT_TRUE(ret);
1487 }
1488
1489 /**
1490 * @tc.name: InputWindowsManagerTest_CheckMouseIconPath_001
1491 * @tc.desc: Test CheckMouseIconPath
1492 * @tc.type: FUNC
1493 * @tc.require:
1494 */
1495 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_CheckMouseIconPath_001, TestSize.Level1)
1496 {
1497 CALL_TEST_DEBUG;
1498 PointerDrawingManager pointerDrawingManager;
1499 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.CheckMouseIconPath());
1500 }
1501
1502 /**
1503 * @tc.name: InputWindowsManagerTest_DrawPixelmap_001
1504 * @tc.desc: Test DrawPixelmap
1505 * @tc.type: FUNC
1506 * @tc.require:
1507 */
1508 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPixelmap_001, TestSize.Level1)
1509 {
1510 CALL_TEST_DEBUG;
1511 PointerDrawingManager pointerDrawingManager;
1512 pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1513 OHOS::Rosen::Drawing::Canvas canvas;
1514 MOUSE_ICON mouseStyle = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
1515 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPixelmap(canvas, mouseStyle));
1516 }
1517
1518 /**
1519 * @tc.name: InputWindowsManagerTest_DrawPixelmap_002
1520 * @tc.desc: Test DrawPixelmap
1521 * @tc.type: FUNC
1522 * @tc.require:
1523 */
1524 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPixelmap_002, TestSize.Level1)
1525 {
1526 CALL_TEST_DEBUG;
1527 PointerDrawingManager pointerDrawingManager;
1528 pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1529 OHOS::Rosen::Drawing::Canvas canvas;
1530 MOUSE_ICON mouseStyle = MOUSE_ICON::RUNNING;
1531 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPixelmap(canvas, mouseStyle));
1532 }
1533
1534 /**
1535 * @tc.name: InputWindowsManagerTest_DrawPixelmap_003
1536 * @tc.desc: Test DrawPixelmap
1537 * @tc.type: FUNC
1538 * @tc.require:
1539 */
1540 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPixelmap_003, TestSize.Level1)
1541 {
1542 CALL_TEST_DEBUG;
1543 PointerDrawingManager pointerDrawingManager;
1544 pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1545 OHOS::Rosen::Drawing::Canvas canvas;
1546 MOUSE_ICON mouseStyle = MOUSE_ICON::WEST_EAST;
1547 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPixelmap(canvas, mouseStyle));
1548 }
1549
1550 /**
1551 * @tc.name: InputWindowsManagerTest_SetCustomCursor_001
1552 * @tc.desc: Test SetCustomCursor
1553 * @tc.type: FUNC
1554 * @tc.require:
1555 */
1556 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetCustomCursor_001, TestSize.Level1)
1557 {
1558 CALL_TEST_DEBUG;
1559 PointerDrawingManager pointerDrawingManager;
1560 const std::string iconPath = "/system/etc/multimodalinput/mouse_icon/North_South.svg";
1561 std::unique_ptr<OHOS::Media::PixelMap> pixelMap = SetMouseIconTest(iconPath);
1562 ASSERT_NE(pixelMap, nullptr);
1563 int32_t pid = -1;
1564 int32_t windowId = 1;
1565 int32_t focusX = 2;
1566 int32_t focusY = 3;
1567 int32_t ret = pointerDrawingManager.SetCustomCursor((void *)pixelMap.get(), pid, windowId, focusX, focusY);
1568 ASSERT_EQ(ret, RET_ERR);
1569 }
1570
1571 /**
1572 * @tc.name: InputWindowsManagerTest_SetCustomCursor_002
1573 * @tc.desc: Test SetCustomCursor
1574 * @tc.type: FUNC
1575 * @tc.require:
1576 */
1577 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetCustomCursor_002, TestSize.Level1)
1578 {
1579 CALL_TEST_DEBUG;
1580 PointerDrawingManager pointerDrawingManager;
1581 const std::string iconPath = "/system/etc/multimodalinput/mouse_icon/North_South.svg";
1582 std::unique_ptr<OHOS::Media::PixelMap> pixelMap = SetMouseIconTest(iconPath);
1583 ASSERT_NE(pixelMap, nullptr);
1584 int32_t pid = 1;
1585 int32_t windowId = 1;
1586 int32_t focusX = 2;
1587 int32_t focusY = 3;
1588 int32_t ret = pointerDrawingManager.SetCustomCursor((void *)pixelMap.get(), pid, windowId, focusX, focusY);
1589 ASSERT_EQ(ret, RET_ERR);
1590 }
1591
1592 /**
1593 * @tc.name: InputWindowsManagerTest_SetMouseIcon_002
1594 * @tc.desc: Test SetMouseIcon
1595 * @tc.type: FUNC
1596 * @tc.require:
1597 */
1598 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_002, TestSize.Level1)
1599 {
1600 CALL_TEST_DEBUG;
1601 PointerDrawingManager pointerDrawingManager;
1602 const std::string iconPath = "/system/etc/multimodalinput/mouse_icon/North_South.svg";
1603 std::unique_ptr<OHOS::Media::PixelMap> pixelMap = SetMouseIconTest(iconPath);
1604 ASSERT_NE(pixelMap, nullptr);
1605 int32_t pid = -1;
1606 int32_t windowId = 2;
1607 int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, (void *)pixelMap.get());
1608 ASSERT_EQ(ret, RET_ERR);
1609 }
1610
1611 /**
1612 * @tc.name: InputWindowsManagerTest_SetMouseIcon_003
1613 * @tc.desc: Test SetMouseIcon
1614 * @tc.type: FUNC
1615 * @tc.require:
1616 */
1617 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_003, TestSize.Level1)
1618 {
1619 CALL_TEST_DEBUG;
1620 PointerDrawingManager pointerDrawingManager;
1621 const std::string iconPath = "/system/etc/multimodalinput/mouse_icon/North_South.svg";
1622 std::unique_ptr<OHOS::Media::PixelMap> pixelMap = SetMouseIconTest(iconPath);
1623 ASSERT_NE(pixelMap, nullptr);
1624 int32_t pid = 1;
1625 int32_t windowId = -2;
1626 int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, (void *)pixelMap.get());
1627 ASSERT_EQ(ret, RET_ERR);
1628 }
1629
1630 /**
1631 * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_002
1632 * @tc.desc: Test SetMouseHotSpot
1633 * @tc.type: FUNC
1634 * @tc.require:
1635 */
1636 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_002, TestSize.Level1)
1637 {
1638 CALL_TEST_DEBUG;
1639 PointerDrawingManager pointerDrawingManager;
1640 int32_t pid = -1;
1641 int32_t windowId = 2;
1642 int32_t hotSpotX = 3;
1643 int32_t hotSpotY = 4;
1644 int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1645 ASSERT_EQ(ret, RET_ERR);
1646 pid = 1;
1647 windowId = -2;
1648 hotSpotX = 3;
1649 hotSpotY = 4;
1650 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1651 ASSERT_EQ(ret, RET_ERR);
1652 pid = 1;
1653 windowId = 2;
1654 hotSpotX = 3;
1655 hotSpotY = 4;
1656 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1657 ASSERT_EQ(ret, RET_ERR);
1658 pid = 2;
1659 windowId = 2;
1660 hotSpotX = -3;
1661 hotSpotY = -4;
1662 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1663 ASSERT_EQ(ret, RET_ERR);
1664 pid = 2;
1665 windowId = 2;
1666 hotSpotX = 3;
1667 hotSpotY = 4;
1668 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1669 ASSERT_EQ(ret, RET_ERR);
1670 }
1671
1672 /**
1673 * @tc.name: InputWindowsManagerTest_OnDisplayInfo_001
1674 * @tc.desc: Test OnDisplayInfo
1675 * @tc.type: FUNC
1676 * @tc.require:
1677 */
1678 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_OnDisplayInfo_001, TestSize.Level1)
1679 {
1680 CALL_TEST_DEBUG;
1681 PointerDrawingManager pointerDrawingManager;
1682 DisplayInfo displaysInfo;
1683 DisplayGroupInfo displayGroupInfo;
1684 displayGroupInfo.displaysInfo.push_back(displaysInfo);
1685 displayGroupInfo.focusWindowId = 0;
1686 displayGroupInfo.width = 0;
1687 displayGroupInfo.height = 0;
1688 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
1689 surfaceNodeConfig.SurfaceNodeName = "pointer window";
1690 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
1691 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
1692 pointerDrawingManager.surfaceNode_->SetFrameGravity(Rosen::Gravity::RESIZE_ASPECT_FILL);
1693 pointerDrawingManager.surfaceNode_->SetPositionZ(Rosen::RSSurfaceNode::POINTER_WINDOW_POSITION_Z);
1694 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo));
1695 }
1696
1697 /**
1698 * @tc.name: InputWindowsManagerTest_OnDisplayInfo_002
1699 * @tc.desc: Test OnDisplayInfo
1700 * @tc.type: FUNC
1701 * @tc.require:
1702 */
1703 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_OnDisplayInfo_002, TestSize.Level1)
1704 {
1705 CALL_TEST_DEBUG;
1706 PointerDrawingManager pointerDrawingManager;
1707 DisplayInfo displaysInfo;
1708 DisplayGroupInfo displayGroupInfo;
1709 displayGroupInfo.displaysInfo.push_back(displaysInfo);
1710 displayGroupInfo.focusWindowId = 0;
1711 displayGroupInfo.width = 0;
1712 displayGroupInfo.height = 0;
1713 pointerDrawingManager.surfaceNode_ = nullptr;
1714 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo));
1715 }
1716
1717 /**
1718 * @tc.name: InputWindowsManagerTest_DrawManager_004
1719 * @tc.desc: Test DrawManager
1720 * @tc.type: FUNC
1721 * @tc.require:
1722 */
1723 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawManager_004, TestSize.Level1)
1724 {
1725 CALL_TEST_DEBUG;
1726 PointerDrawingManager pointerDrawingManager;
1727 pointerDrawingManager.hasDisplay_ = false;
1728 pointerDrawingManager.hasPointerDevice_ = true;
1729 pointerDrawingManager.surfaceNode_ = nullptr;
1730 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
1731 }
1732
1733 /**
1734 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_005
1735 * @tc.desc: Test DrawPointerStyle
1736 * @tc.type: FUNC
1737 * @tc.require:
1738 */
1739 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_005, TestSize.Level1)
1740 {
1741 CALL_TEST_DEBUG;
1742 PointerDrawingManager pointerDrawingManager;
1743 PointerStyle pointerStyle;
1744 pointerStyle.id = 0;
1745 pointerStyle.color = 0;
1746 pointerStyle.size = 2;
1747 pointerDrawingManager.hasDisplay_ = false;
1748 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
1749 }
1750
1751 /**
1752 * @tc.name: PointerDrawingManagerTest_ConvertToColorSpace
1753 * @tc.desc: Test ConvertToColorSpace
1754 * @tc.type: FUNC
1755 * @tc.require:
1756 */
1757 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_ConvertToColorSpace, TestSize.Level1)
1758 {
1759 CALL_TEST_DEBUG;
1760 PointerDrawingManager pointerDrawingManager;
1761 Media::ColorSpace colorSpace = Media::ColorSpace::DISPLAY_P3;
1762 EXPECT_NE(pointerDrawingManager.ConvertToColorSpace(colorSpace), nullptr);
1763 colorSpace = Media::ColorSpace::LINEAR_SRGB;
1764 EXPECT_NE(pointerDrawingManager.ConvertToColorSpace(colorSpace), nullptr);
1765 colorSpace = Media::ColorSpace::SRGB;
1766 EXPECT_NE(pointerDrawingManager.ConvertToColorSpace(colorSpace), nullptr);
1767 colorSpace = static_cast<Media::ColorSpace>(5);
1768 EXPECT_NE(pointerDrawingManager.ConvertToColorSpace(colorSpace), nullptr);
1769 }
1770
1771 /**
1772 * @tc.name: PointerDrawingManagerTest_PixelFormatToColorType
1773 * @tc.desc: Test PixelFormatToColorType
1774 * @tc.type: FUNC
1775 * @tc.require:
1776 */
1777 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_PixelFormatToColorType, TestSize.Level1)
1778 {
1779 CALL_TEST_DEBUG;
1780 PointerDrawingManager pointerDrawingManager;
1781 Media::PixelFormat pixelFmt = Media::PixelFormat::RGB_565;
1782 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt),
1783 Rosen::Drawing::ColorType::COLORTYPE_RGB_565);
1784 pixelFmt = Media::PixelFormat::RGBA_8888;
1785 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt),
1786 Rosen::Drawing::ColorType::COLORTYPE_RGBA_8888);
1787 pixelFmt = Media::PixelFormat::BGRA_8888;
1788 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt),
1789 Rosen::Drawing::ColorType::COLORTYPE_BGRA_8888);
1790 pixelFmt = Media::PixelFormat::ALPHA_8;
1791 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt),
1792 Rosen::Drawing::ColorType::COLORTYPE_ALPHA_8);
1793 pixelFmt = Media::PixelFormat::RGBA_F16;
1794 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt),
1795 Rosen::Drawing::ColorType::COLORTYPE_RGBA_F16);
1796 pixelFmt = Media::PixelFormat::UNKNOWN;
1797 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt),
1798 Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
1799 pixelFmt = Media::PixelFormat::ARGB_8888;
1800 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt),
1801 Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
1802 pixelFmt = Media::PixelFormat::RGB_888;
1803 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt),
1804 Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
1805 pixelFmt = Media::PixelFormat::NV21;
1806 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt),
1807 Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
1808 pixelFmt = Media::PixelFormat::NV12;
1809 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt),
1810 Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
1811 pixelFmt = Media::PixelFormat::CMYK;
1812 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt),
1813 Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
1814 pixelFmt = static_cast<Media::PixelFormat>(100);
1815 EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt),
1816 Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
1817 }
1818
1819 /**
1820 * @tc.name: PointerDrawingManagerTest__AlphaTypeToAlphaType
1821 * @tc.desc: Test AlphaTypeToAlphaType
1822 * @tc.type: Function
1823 * @tc.require:
1824 */
1825 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_AlphaTypeToAlphaType, TestSize.Level1)
1826 {
1827 CALL_TEST_DEBUG;
1828 PointerDrawingManager pointerDrawingManager;
1829 Media::AlphaType alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_UNKNOWN;
1830 EXPECT_EQ(pointerDrawingManager.AlphaTypeToAlphaType(alphaType),
1831 Rosen::Drawing::AlphaType::ALPHATYPE_UNKNOWN);
1832 alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_OPAQUE;
1833 EXPECT_EQ(pointerDrawingManager.AlphaTypeToAlphaType(alphaType),
1834 Rosen::Drawing::AlphaType::ALPHATYPE_OPAQUE);
1835 alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_PREMUL;
1836 EXPECT_EQ(pointerDrawingManager.AlphaTypeToAlphaType(alphaType),
1837 Rosen::Drawing::AlphaType::ALPHATYPE_PREMUL);
1838 alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_UNPREMUL;
1839 EXPECT_EQ(pointerDrawingManager.AlphaTypeToAlphaType(alphaType),
1840 Rosen::Drawing::AlphaType::ALPHATYPE_UNPREMUL);
1841 alphaType = static_cast<Media::AlphaType>(5);
1842 EXPECT_EQ(pointerDrawingManager.AlphaTypeToAlphaType(alphaType),
1843 Rosen::Drawing::AlphaType::ALPHATYPE_UNKNOWN);
1844 }
1845
1846 /**
1847 * @tc.name: PointerDrawingManagerTest_ExtractDrawingImage_003
1848 * @tc.desc: Test ExtractDrawingImage
1849 * @tc.type: FUNC
1850 * @tc.require:
1851 */
1852 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_ExtractDrawingImage_003, TestSize.Level1)
1853 {
1854 CALL_TEST_DEBUG;
1855 OHOS::Rosen::Drawing::Bitmap bitmap;
1856 OHOS::Rosen::Drawing::BitmapFormat format { OHOS::Rosen::Drawing::COLORTYPE_RGBA_8888,
1857 OHOS::Rosen::Drawing::ALPHATYPE_OPAQUE };
1858 PointerDrawingManager pointerDrawingManager;
1859 bitmap.Build(64, 64, format);
1860 OHOS::Rosen::Drawing::Canvas canvas(256, 256);
1861 canvas.Bind(bitmap);
1862 canvas.Clear(OHOS::Rosen::Drawing::Color::COLOR_TRANSPARENT);
1863 MOUSE_ICON mouseStyle = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
1864 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawImage(canvas, mouseStyle));
1865 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.SetPointerLocation(200, 200, 0));
1866 }
1867
1868 /**
1869 * @tc.name: InputWindowsManagerTest_DrawPointer_001
1870 * @tc.desc: Test DrawPointer
1871 * @tc.type: FUNC
1872 * @tc.require:
1873 */
1874 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointer_001, TestSize.Level1)
1875 {
1876 CALL_TEST_DEBUG;
1877 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
1878 PointerStyle pointerStyle;
1879 pointerStyle.id = 0;
1880 pointerDrawingManager->DrawPointer(1, 100, 100, pointerStyle, DIRECTION180);
1881 EXPECT_EQ(pointerDrawingManager->lastDirection_, DIRECTION180);
1882 pointerDrawingManager->DrawPointer(1, 200, 200, pointerStyle, DIRECTION270);
1883 EXPECT_EQ(pointerDrawingManager->lastDirection_, DIRECTION270);
1884 }
1885
1886 /**
1887 * @tc.name: InputWindowsManagerTest_DrawPointerStyle_001
1888 * @tc.desc: Test DrawPointerStyle
1889 * @tc.type: FUNC
1890 * @tc.require:
1891 */
1892 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_001, TestSize.Level1)
1893 {
1894 CALL_TEST_DEBUG;
1895 PointerDrawingManager pointerDrawingManager;
1896 PointerStyle pointerStyle;
1897 pointerStyle.id = EAST;
1898 pointerStyle.color = 0;
1899 pointerStyle.size = 2;
1900 pointerDrawingManager.hasDisplay_ = true;
1901 pointerDrawingManager.hasPointerDevice_ = true;
1902 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
1903 pointerDrawingManager.lastPhysicalX_ = -1;
1904 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
1905 }
1906 /**
1907 * @tc.name: InputWindowsManagerTest_InitPointerCallback_001
1908 * @tc.desc: Test InitPointerCallback
1909 * @tc.type: FUNC
1910 * @tc.require:
1911 */
1912 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_InitPointerCallback_001, TestSize.Level1)
1913 {
1914 CALL_TEST_DEBUG;
1915 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
1916 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->InitPointerCallback());
1917 }
1918
1919 /**
1920 * @tc.name: InputWindowsManagerTest_InitPointerObserver_001
1921 * @tc.desc: Test InitPointerObserver
1922 * @tc.type: FUNC
1923 * @tc.require:
1924 */
1925 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_InitPointerObserver_001, TestSize.Level1)
1926 {
1927 CALL_TEST_DEBUG;
1928 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
1929 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->InitPointerObserver());
1930 }
1931
1932 #ifdef OHOS_BUILD_ENABLE_MAGICCURSOR
1933 /**
1934 * @tc.name: InputWindowsManagerTest_SetPixelMap
1935 * @tc.desc: Test SetPixelMap
1936 * @tc.type: FUNC
1937 * @tc.require:
1938 */
1939 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPixelMap, TestSize.Level1)
1940 {
1941 CALL_TEST_DEBUG;
1942 PointerDrawingManager manager;
1943 std::shared_ptr<OHOS::Media::PixelMap> pixelMap = CreatePixelMap(MIDDLE_PIXEL_MAP_WIDTH, MIDDLE_PIXEL_MAP_HEIGHT);
1944 ASSERT_NO_FATAL_FAILURE(manager.SetPixelMap(pixelMap));
1945 }
1946 #endif // OHOS_BUILD_ENABLE_MAGICCURSOR
1947
1948 /**
1949 * @tc.name: PointerDrawingManagerTest_SwitchPointerStyle
1950 * @tc.desc: Test SwitchPointerStyle
1951 * @tc.type: FUNC
1952 * @tc.require:
1953 */
1954 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_SwitchPointerStyle, TestSize.Level1)
1955 {
1956 CALL_TEST_DEBUG;
1957 PointerDrawingManager pointerDrawMgr;
1958 pointerDrawMgr.lastMouseStyle_.id = 2;
1959 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.SwitchPointerStyle());
1960 }
1961
1962 /**
1963 * @tc.name: PointerDrawingManagerTest_CreateMagicCursorChangeObserver
1964 * @tc.desc: Test CreateMagicCursorChangeObserver
1965 * @tc.type: FUNC
1966 * @tc.require:
1967 */
1968 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_CreateMagicCursorChangeObserver, TestSize.Level1)
1969 {
1970 CALL_TEST_DEBUG;
1971 PointerDrawingManager pointerDrawMgr;
1972 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.CreateMagicCursorChangeObserver());
1973 }
1974
1975 /**
1976 * @tc.name: PointerDrawingManagerTest_UpdateStyleOptions
1977 * @tc.desc: Test UpdateStyleOptions
1978 * @tc.type: FUNC
1979 * @tc.require:
1980 */
1981 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_UpdateStyleOptions, TestSize.Level1)
1982 {
1983 CALL_TEST_DEBUG;
1984 PointerDrawingManager pointerDrawMgr;
1985 pointerDrawMgr.pid_ = 100;
1986 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.UpdateStyleOptions());
1987 }
1988
1989 /**
1990 * @tc.name: PointerDrawingManagerTest_InitPointerObserver
1991 * @tc.desc: Test InitPointerObserver
1992 * @tc.type: FUNC
1993 * @tc.require:
1994 */
1995 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_InitPointerObserver, TestSize.Level1)
1996 {
1997 CALL_TEST_DEBUG;
1998 PointerDrawingManager pointerDrawMgr;
1999 pointerDrawMgr.hasInitObserver_ = true;
2000 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.InitPointerObserver());
2001
2002 pointerDrawMgr.hasInitObserver_ = false;
2003 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.InitPointerObserver());
2004 }
2005
2006 /**
2007 * @tc.name: PointerDrawingManagerTest_AdjustMouseFocusByDirection90
2008 * @tc.desc: Test AdjustMouseFocusByDirection90
2009 * @tc.type: FUNC
2010 * @tc.require:
2011 */
2012 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_AdjustMouseFocusByDirection90, TestSize.Level1)
2013 {
2014 CALL_TEST_DEBUG;
2015 PointerDrawingManager pointerDrawMgr;
2016 ICON_TYPE iconType = ANGLE_SW;
2017 int32_t physicalX = 500;
2018 int32_t physicalY = 500;
2019 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.AdjustMouseFocusByDirection90(iconType, physicalX, physicalY));
2020 iconType = ANGLE_CENTER;
2021 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.AdjustMouseFocusByDirection90(iconType, physicalX, physicalY));
2022 iconType = ANGLE_NW_RIGHT;
2023 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.AdjustMouseFocusByDirection90(iconType, physicalX, physicalY));
2024 iconType = ANGLE_NW;
2025 pointerDrawMgr.userIcon_ = CreatePixelMap(MIDDLE_PIXEL_MAP_WIDTH, MIDDLE_PIXEL_MAP_HEIGHT);
2026 ASSERT_NE(pointerDrawMgr.userIcon_, nullptr);
2027 pointerDrawMgr.currentMouseStyle_.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
2028 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.AdjustMouseFocusByDirection90(iconType, physicalX, physicalY));
2029 pointerDrawMgr.userIcon_ = nullptr;
2030 ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.AdjustMouseFocusByDirection90(iconType, physicalX, physicalY));
2031 }
2032
2033 /**
2034 * @tc.name: InputWindowsManagerTest_UpdatePointerDevice_003
2035 * @tc.desc: Test UpdatePointerDevice
2036 * @tc.type: FUNC
2037 * @tc.require:
2038 */
2039 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdatePointerDevice_003, TestSize.Level1)
2040 {
2041 CALL_TEST_DEBUG;
2042 auto* pointerDrawingManager = static_cast<PointerDrawingManager*>(IPointerDrawingManager::GetInstance());
2043 EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 100);
2044 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(true, false, true));
2045 pointerDrawingManager->UpdatePointerDevice(true, true, true);
2046 EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 100);
2047 pointerDrawingManager->surfaceNode_ = nullptr;
2048 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(false, false, true));
2049 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2050 surfaceNodeConfig.SurfaceNodeName = "pointer window";
2051 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2052 pointerDrawingManager->surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2053 ASSERT_TRUE(pointerDrawingManager->surfaceNode_ != nullptr);
2054 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(false, false, true));
2055 }
2056
2057 /**
2058 * @tc.name: InputWindowsManagerTest_DrawManager_001
2059 * @tc.desc: Test DrawManager
2060 * @tc.type: FUNC
2061 * @tc.require:
2062 */
2063 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawManager_001, TestSize.Level1)
2064 {
2065 CALL_TEST_DEBUG;
2066 PointerDrawingManager pointerDrawingManager;
2067 pointerDrawingManager.hasDisplay_ = false;
2068 pointerDrawingManager.hasPointerDevice_ = true;
2069 pointerDrawingManager.surfaceNode_ = nullptr;
2070 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2071 pointerDrawingManager.hasDisplay_ = true;
2072 pointerDrawingManager.hasPointerDevice_ = false;
2073 pointerDrawingManager.surfaceNode_ = nullptr;
2074 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2075 pointerDrawingManager.hasDisplay_ = false;
2076 pointerDrawingManager.hasPointerDevice_ = false;
2077 pointerDrawingManager.surfaceNode_ = nullptr;
2078 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2079 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2080 surfaceNodeConfig.SurfaceNodeName = "pointer window";
2081 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2082 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2083 ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
2084 pointerDrawingManager.hasDisplay_ = true;
2085 pointerDrawingManager.hasPointerDevice_ = true;
2086 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2087 pointerDrawingManager.hasDisplay_ = false;
2088 pointerDrawingManager.hasPointerDevice_ = true;
2089 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2090 pointerDrawingManager.hasDisplay_ = true;
2091 pointerDrawingManager.hasPointerDevice_ = false;
2092 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2093 pointerDrawingManager.hasDisplay_ = false;
2094 pointerDrawingManager.hasPointerDevice_ = false;
2095 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2096 pointerDrawingManager.hasDisplay_ = true;
2097 pointerDrawingManager.hasPointerDevice_ = true;
2098 pointerDrawingManager.surfaceNode_ = nullptr;
2099 pointerDrawingManager.lastPhysicalX_ = -1;
2100 pointerDrawingManager.lastPhysicalY_ = 1;
2101 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2102 pointerDrawingManager.lastPhysicalX_ = 1;
2103 pointerDrawingManager.lastPhysicalY_ = -1;
2104 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2105 pointerDrawingManager.lastPhysicalX_ = -1;
2106 pointerDrawingManager.lastPhysicalY_ = -1;
2107 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2108 pointerDrawingManager.lastPhysicalX_ = 1;
2109 pointerDrawingManager.lastPhysicalY_ = 1;
2110 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2111 }
2112
2113 /**
2114 * @tc.name: InputWindowsManagerTest_DeletePointerVisible_002
2115 * @tc.desc: Test DeletePointerVisible
2116 * @tc.type: FUNC
2117 * @tc.require:
2118 */
2119 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DeletePointerVisible_002, TestSize.Level1)
2120 {
2121 CALL_TEST_DEBUG;
2122 PointerDrawingManager pointerDrawingManager;
2123 int32_t pid = 1;
2124 pointerDrawingManager.surfaceNode_ = nullptr;
2125 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
2126 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2127 surfaceNodeConfig.SurfaceNodeName = "pointer window";
2128 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2129 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2130 ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
2131 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
2132 }
2133
2134 /**
2135 * @tc.name: InputWindowsManagerTest_DeletePointerVisible_003
2136 * @tc.desc: Test DeletePointerVisible
2137 * @tc.type: FUNC
2138 * @tc.require:
2139 */
2140 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DeletePointerVisible_003, TestSize.Level1)
2141 {
2142 CALL_TEST_DEBUG;
2143 PointerDrawingManager pointerDrawingManager;
2144 int32_t pid = 1;
2145 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
2146 PointerDrawingManager::PidInfo info = { .pid = 1, .visible = true };
2147 pointerDrawingManager.pidInfos_.push_back(info);
2148 info = { .pid = 2, .visible = true };
2149 pointerDrawingManager.pidInfos_.push_back(info);
2150 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
2151 pid = 5;
2152 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
2153 }
2154
2155 /**
2156 * @tc.name: InputWindowsManagerTest_UpdateDefaultPointerStyle_003
2157 * @tc.desc: Test UpdateDefaultPointerStyle
2158 * @tc.type: FUNC
2159 * @tc.require:
2160 */
2161 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdateDefaultPointerStyle_003, TestSize.Level1)
2162 {
2163 CALL_TEST_DEBUG;
2164 PointerDrawingManager pointerDrawingManager;
2165 int32_t pid = 1;
2166 int32_t windowId = 2;
2167 PointerStyle pointerStyle;
2168 pointerStyle.id = 0;
2169 pointerStyle.color = 0;
2170 pointerStyle.size = 2;
2171 bool isUiExtension = true;
2172 int32_t ret = pointerDrawingManager.UpdateDefaultPointerStyle(pid, windowId, pointerStyle, isUiExtension);
2173 EXPECT_EQ(ret, RET_OK);
2174 windowId = -1;
2175 ret = pointerDrawingManager.UpdateDefaultPointerStyle(pid, windowId, pointerStyle, isUiExtension);
2176 }
2177
2178 /**
2179 * @tc.name: PointerDrawingManagerTest_DrawScreenCenterPointer_001
2180 * @tc.desc: Test DrawScreenCenterPointer
2181 * @tc.type: FUNC
2182 * @tc.require:
2183 */
2184 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_DrawScreenCenterPointer_001, TestSize.Level1)
2185 {
2186 CALL_TEST_DEBUG;
2187 PointerDrawingManager pointerDrawingManager;
2188 PointerStyle pointerStyle;
2189 pointerStyle.id = 0;
2190 pointerStyle.color = 0;
2191 pointerStyle.size = 2;
2192 pointerDrawingManager.hasDisplay_ = true;
2193 pointerDrawingManager.hasPointerDevice_ = true;
2194 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2195 surfaceNodeConfig.SurfaceNodeName = "pointer window";
2196 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2197 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2198 ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
2199
2200 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawScreenCenterPointer(pointerStyle));
2201 }
2202
2203 /**
2204 * @tc.name: PointerDrawingManagerTest_DrawScreenCenterPointer_002
2205 * @tc.desc: Test DrawScreenCenterPointer
2206 * @tc.type: FUNC
2207 * @tc.require:
2208 */
2209 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_DrawScreenCenterPointer_002, TestSize.Level1)
2210 {
2211 CALL_TEST_DEBUG;
2212 PointerDrawingManager pointerDrawingManager;
2213 PointerStyle pointerStyle;
2214 pointerStyle.id = 0;
2215 pointerStyle.color = 0;
2216 pointerStyle.size = 2;
2217 pointerDrawingManager.hasDisplay_ = false;
2218 pointerDrawingManager.hasPointerDevice_ = true;
2219 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2220 surfaceNodeConfig.SurfaceNodeName = "pointer window";
2221 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2222 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2223 ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
2224
2225 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawScreenCenterPointer(pointerStyle));
2226 }
2227
2228 #ifdef OHOS_BUILD_ENABLE_HARDWARE_CURSOR
2229 /**
2230 * @tc.name: PointerDrawingManagerTest_UpdateBindDisplayId_001
2231 * @tc.desc: Test UpdateBindDisplayId
2232 * @tc.type: FUNC
2233 * @tc.require:
2234 */
2235 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_UpdateBindDisplayId_001, TestSize.Level1)
2236 {
2237 CALL_TEST_DEBUG;
2238 PointerDrawingManager pointerDrawingManager;
2239 pointerDrawingManager.lastDisplayId_ = 0;
2240 int32_t displayId = 0;
2241 pointerDrawingManager.UpdateBindDisplayId(displayId);
2242 EXPECT_EQ(pointerDrawingManager.lastDisplayId_, 0);
2243 EXPECT_EQ(pointerDrawingManager.screenId_, 0);
2244
2245 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2246 surfaceNodeConfig.SurfaceNodeName = "pointer window";
2247 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2248 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2249 ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
2250 pointerDrawingManager.UpdateBindDisplayId(displayId);
2251 EXPECT_EQ(pointerDrawingManager.lastDisplayId_, 0);
2252 EXPECT_EQ(pointerDrawingManager.screenId_, 0);
2253
2254 displayId = 1;
2255 pointerDrawingManager.UpdateBindDisplayId(displayId);
2256 EXPECT_EQ(pointerDrawingManager.lastDisplayId_, 1);
2257 EXPECT_EQ(pointerDrawingManager.screenId_, 1);
2258 }
2259 #endif // OHOS_BUILD_ENABLE_HARDWARE_CURSOR
2260
2261 /**
2262 * @tc.name: PointerDrawingManagerTest_DestroyPointerWindow_001
2263 * @tc.desc: Test DestroyPointerWindow
2264 * @tc.type: FUNC
2265 * @tc.require:
2266 */
2267 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_DestroyPointerWindow_001, TestSize.Level1)
2268 {
2269 CALL_TEST_DEBUG;
2270 PointerDrawingManager pointerDrawingManager;
2271 pointerDrawingManager.delegateProxy_ = std::make_shared<DelegateInterface>(nullptr, nullptr);
2272 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2273 surfaceNodeConfig.SurfaceNodeName = "pointer window";
2274 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2275 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2276 ASSERT_NE(pointerDrawingManager.delegateProxy_, nullptr);
2277 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DestroyPointerWindow());
2278 pointerDrawingManager.surfaceNode_ = nullptr;
2279 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DestroyPointerWindow());
2280 }
2281
2282 /**
2283 * @tc.name: PointerDrawingManagerTest_SetMouseHotSpot_004
2284 * @tc.desc: Test SetMouseHotSpot
2285 * @tc.type: FUNC
2286 * @tc.require:
2287 */
2288 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_SetMouseHotSpot_004, TestSize.Level1)
2289 {
2290 CALL_TEST_DEBUG;
2291 PointerDrawingManager pointerDrawingManager;
2292 auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
2293 int32_t pid = 1;
2294 int32_t windowId = 2;
2295 EXPECT_CALL(*winmgrmock, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_OK));
2296 int32_t hotSpotX = 1;
2297 int32_t hotSpotY = 2;
2298 // userIcon_ == nullptr
2299 int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
2300 ASSERT_EQ(ret, RET_ERR);
2301 pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
2302 // hotSpotX < 0
2303 hotSpotX = -1;
2304 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
2305 ASSERT_EQ(ret, RET_ERR);
2306 // hotSpotY < 0
2307 hotSpotX = 1;
2308 hotSpotY = -2;
2309 ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
2310 ASSERT_EQ(ret, RET_ERR);
2311 testing::Mock::AllowLeak(winmgrmock.get());
2312 }
2313
2314 /**
2315 * @tc.name: InputWindowsManagerTest_IsPointerVisible_002
2316 * @tc.desc: Test IsPointerVisible
2317 * @tc.type: FUNC
2318 * @tc.require:
2319 */
2320 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_IsPointerVisible_002, TestSize.Level1)
2321 {
2322 CALL_TEST_DEBUG;
2323 PointerDrawingManager pointerDrawingManager;
2324 pointerDrawingManager.pidInfos_.clear();
2325 pointerDrawingManager.pid_ = 0;
2326 PointerDrawingManager::PidInfo pidInfo;
2327 for (int32_t i = 1; i < 3; i++) {
2328 pidInfo.pid = 3-i;
2329 pidInfo.visible = false;
2330 pointerDrawingManager.hapPidInfos_.push_back(pidInfo);
2331 }
2332 bool ret = pointerDrawingManager.IsPointerVisible();
2333 EXPECT_FALSE(ret);
2334 pointerDrawingManager.pid_ = 1;
2335 ret = pointerDrawingManager.IsPointerVisible();
2336 EXPECT_FALSE(ret);
2337 }
2338
2339 /**
2340 * @tc.name: InputWindowsManagerTest_SetPointerVisible_003
2341 * @tc.desc: Test SetPointerVisible
2342 * @tc.type: FUNC
2343 * @tc.require:
2344 */
2345 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerVisible_003, TestSize.Level1)
2346 {
2347 CALL_TEST_DEBUG;
2348 PointerDrawingManager pointerDrawingManager;
2349 int32_t pid = 102;
2350 int32_t priority = 1;
2351 bool visible = false;
2352 bool isHap = true;
2353 PointerDrawingManager::PidInfo pidInfo;
2354 for (int32_t i = 1; i < 101; i++) {
2355 pidInfo.pid = 3-i;
2356 pidInfo.visible = false;
2357 pointerDrawingManager.hapPidInfos_.push_back(pidInfo);
2358 }
2359 int32_t ret = pointerDrawingManager.SetPointerVisible(pid, visible, priority, isHap);
2360 ASSERT_EQ(ret, RET_OK);
2361 pid = 103;
2362 ret = pointerDrawingManager.SetPointerVisible(pid, visible, priority, isHap);
2363 ASSERT_EQ(ret, RET_OK);
2364 pid = 10;
2365 ret = pointerDrawingManager.SetPointerVisible(pid, visible, priority, isHap);
2366 ASSERT_EQ(ret, RET_OK);
2367 }
2368
2369 /**
2370 * @tc.name: InputWindowsManagerTest_DrawMovePointer_002
2371 * @tc.desc: Test the funcation DrawMovePointer
2372 * @tc.type: FUNC
2373 * @tc.require:
2374 */
2375 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawMovePointer_002, TestSize.Level1)
2376 {
2377 CALL_TEST_DEBUG;
2378 PointerDrawingManager pointerDrawingManager;
2379 int32_t physicalX = 1;
2380 int32_t physicalY = 2;
2381 int32_t displayId = 3;
2382 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawMovePointer(displayId, physicalX, physicalY));
2383 Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2384 surfaceNodeConfig.SurfaceNodeName = "pointer window";
2385 Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2386 pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2387 ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawMovePointer(displayId, physicalX, physicalY));
2388 }
2389
2390 /**
2391 * @tc.name: InputWindowsManagerTest_SetPointerStyle_002
2392 * @tc.desc: Test SetPointerStyle
2393 * @tc.type: FUNC
2394 * @tc.require:
2395 */
2396 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStyle_002, TestSize.Level1)
2397 {
2398 CALL_TEST_DEBUG;
2399 PointerDrawingManager pointerDrawingManager;
2400 PointerStyle pointerStyle;
2401 int32_t pid = 1;
2402 int32_t windowId = -2;
2403 int32_t ret = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle);
2404 ASSERT_EQ(ret, RET_ERR);
2405 windowId = -1;
2406 pointerStyle.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
2407 ret = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle);
2408 ASSERT_EQ(ret, RET_OK);
2409 windowId = 1;
2410 ret = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle);
2411 ASSERT_EQ(ret, RET_ERR);
2412 IconStyle iconStyle;
2413 iconStyle.alignmentWay = 0;
2414 iconStyle.iconPath = "testpath";
2415 pointerDrawingManager.mouseIcons_.insert(std::make_pair(static_cast<MOUSE_ICON>(pointerStyle.id), iconStyle));
2416 ret = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle);
2417 ASSERT_EQ(ret, RET_ERR);
2418 }
2419 } // namespace MMI
2420 } // namespace OHOS