1 /*
2 * Copyright (c) 2022-2023 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 "test/unittest/core/event/gesture_event_hub_test_ng.h"
17
18 #include "test/mock/base/mock_drag_window.h"
19 #include "test/mock/base/mock_subwindow.h"
20 #include "base/subwindow/subwindow_manager.h"
21 #include "test/mock/core/common/mock_container.h"
22 #include "test/unittest/core/pattern/scrollable/mock_scrollable.h"
23
24 #include "frameworks/core/components_ng/pattern/text/text_pattern.h"
25 #include "core/components_ng/manager/drag_drop/drag_drop_global_controller.h"
26
27 using namespace testing;
28 using namespace testing::ext;
29
30 namespace OHOS::Ace::NG {
SetUpTestSuite()31 void GestureEventHubTestNg::SetUpTestSuite()
32 {
33 MockPipelineContext::SetUp();
34 MOCK_DRAG_WINDOW = DragWindow::CreateDragWindow("", 0, 0, 0, 0);
35 GTEST_LOG_(INFO) << "GestureEventHubTestNg SetUpTestCase";
36 MOCK_TASK_EXECUTOR = AceType::MakeRefPtr<MockTaskExecutor>();
37 }
38
TearDownTestSuite()39 void GestureEventHubTestNg::TearDownTestSuite()
40 {
41 MockPipelineContext::TearDown();
42 MOCK_DRAG_WINDOW = nullptr;
43 GTEST_LOG_(INFO) << "GestureEventHubTestNg TearDownTestCase";
44 }
45
46 /**
47 * @tc.name: GestureEventHubTest001
48 * @tc.desc: Create GestureEventHub and call GetFrameNode
49 * @tc.type: FUNC
50 */
51 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest001, TestSize.Level1)
52 {
53 /**
54 * @tc.steps: step1. Create GestureEventHub.
55 * @tc.expected: eventHub is not null.
56 */
57 auto eventHub = AceType::MakeRefPtr<EventHub>();
58 EXPECT_TRUE(eventHub);
59 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
60 eventHub->AttachHost(frameNode);
61 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
62 EXPECT_TRUE(gestureEventHub);
63
64 /**
65 * @tc.steps: step2. Test GetFrameNode
66 * case: eventHub is valid
67 * @tc.expected: frameNodeOfEvent is not null.
68 */
69 auto frameNodeOfEvent = gestureEventHub->GetFrameNode();
70 EXPECT_TRUE(frameNodeOfEvent);
71
72 /**
73 * @tc.steps: step2. Test GetFrameNode
74 * case: eventHub is invalid
75 * @tc.expected: frameNodeOfEvent is null.
76 */
77 eventHub = nullptr;
78 frameNode = nullptr;
79 frameNodeOfEvent = gestureEventHub->GetFrameNode();
80 EXPECT_FALSE(frameNodeOfEvent);
81 }
82
83 /**
84 * @tc.name: GestureEventHubTest002
85 * @tc.desc: Test ProcessTouchTestHit part1
86 * @tc.type: FUNC
87 */
88 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest002, TestSize.Level1)
89 {
90 /**
91 * @tc.steps: step1. Create GestureEventHub.
92 * @tc.expected: gestureEventHub is not null.
93 */
94 auto eventHub = AceType::MakeRefPtr<EventHub>();
95 EXPECT_TRUE(eventHub);
96 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
97 EXPECT_TRUE(gestureEventHub);
98
99 /**
100 * @tc.steps: step2. Test ProcessTouchTestHit
101 * case: eventHub is null && actuators such as scrollableActuator_ & touchEventActuator_ are all null
102 * @tc.expected: ProcessTouchTestHit return false, innerTargets & finalResult is empty
103 */
104 eventHub = nullptr;
105 TouchRestrict touchRestrict;
106 TouchTestResult innerTargets;
107 TouchTestResult finalResult;
108 ResponseLinkResult responseLinkResult;
109 auto flag = gestureEventHub->ProcessTouchTestHit(
110 COORDINATE_OFFSET, touchRestrict, innerTargets, finalResult, TOUCH_ID, PointF(), nullptr, responseLinkResult);
111 EXPECT_FALSE(flag);
112 auto sizeOfInnerTargets = static_cast<int32_t>(innerTargets.size());
113 auto sizeOfFinalResult = static_cast<int32_t>(finalResult.size());
114 EXPECT_EQ(sizeOfInnerTargets, 0);
115 EXPECT_EQ(sizeOfFinalResult, 0);
116
117 /**
118 * @tc.steps: step3. construct touchEventActuator_
119 * then set it to gestureEventHub
120 */
121 // reconstruct a gestureEventHub
122 eventHub = AceType::MakeRefPtr<EventHub>();
123 EXPECT_TRUE(eventHub);
124 auto framenode = FrameNode::CreateFrameNode("test", 1, AceType::MakeRefPtr<Pattern>(), false);
125 EXPECT_NE(framenode, nullptr);
126 eventHub->host_ = AceType::WeakClaim(AceType::RawPtr(framenode));
127 gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
128 EXPECT_TRUE(gestureEventHub);
129 // set touchEventActuator_
__anon7f8b1fb20102(TouchEventInfo& info) 130 auto touchCallback = [](TouchEventInfo& info) {};
131 auto touchEvent = AceType::MakeRefPtr<TouchEventImpl>(std::move(touchCallback));
132 gestureEventHub->AddTouchEvent(touchEvent);
133
134 /**
135 * @tc.steps: step4. Test ProcessTouchTestHit
136 * case: eventHub is not null && touchEventActuator_ is not null
137 * @tc.expected: ProcessTouchTestHit return false, innerTargets & finalResult have one element
138 */
139 flag = gestureEventHub->ProcessTouchTestHit(
140 COORDINATE_OFFSET, touchRestrict, innerTargets, finalResult, TOUCH_ID, PointF(), nullptr, responseLinkResult);
141 EXPECT_FALSE(flag);
142 sizeOfInnerTargets = static_cast<int32_t>(innerTargets.size());
143 sizeOfFinalResult = static_cast<int32_t>(finalResult.size());
144 EXPECT_EQ(sizeOfInnerTargets, 1);
145 EXPECT_EQ(sizeOfFinalResult, 1);
146 }
147
148 /**
149 * @tc.name: GestureEventHubTest003
150 * @tc.desc: Test ProcessTouchTestHit part2
151 * @tc.type: FUNC
152 */
153 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest003, TestSize.Level1)
154 {
155 /**
156 * @tc.steps: step1. Create GestureEventHub.
157 * @tc.expected: gestureEventHub is not null.
158 */
159 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
160 auto eventHub = frameNode->GetOrCreateEventHub<EventHub>();
161 EXPECT_TRUE(eventHub);
162 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
163 EXPECT_TRUE(gestureEventHub);
164
165 /**
166 * @tc.steps: step2. construct scrollableActuator_ and other actuators
167 * then set them to gestureEventHub
168 */
169
170 // set touchEventActuator_
__anon7f8b1fb20202(TouchEventInfo& info) 171 auto touchCallback = [](TouchEventInfo& info) {};
172 auto touchEvent = AceType::MakeRefPtr<TouchEventImpl>(std::move(touchCallback));
173 gestureEventHub->AddTouchEvent(touchEvent);
174
175 // set scrollableActuator_
176 auto scrollableEvent = AceType::MakeRefPtr<ScrollableEvent>(AXIS_VERTICAL);
177 gestureEventHub->AddScrollableEvent(scrollableEvent);
178
179 // set clickEventActuator_
__anon7f8b1fb20302(GestureEvent& info) 180 auto clickCallback = [](GestureEvent& info) {};
181 auto clickEvent = AceType::MakeRefPtr<ClickEvent>(std::move(clickCallback));
182 gestureEventHub->AddClickEvent(clickEvent);
183
184 // set panEventActuator_
__anon7f8b1fb20402(GestureEvent& info) 185 auto panActionStart = [](GestureEvent& info) {};
__anon7f8b1fb20502(GestureEvent& info) 186 auto panActionUpdate = [](GestureEvent& info) {};
__anon7f8b1fb20602(GestureEvent& info) 187 auto panActionEnd = [](GestureEvent& info) {};
__anon7f8b1fb20702() 188 auto panActionCancel = []() {};
189 auto panEvent = AceType::MakeRefPtr<PanEvent>(
190 std::move(panActionStart), std::move(panActionUpdate), std::move(panActionEnd), std::move(panActionCancel));
191 gestureEventHub->AddPanEvent(panEvent, PAN_DIRECTION_ALL, FINGERS, DISTANCE);
192
193 // set longPressEventActuator_
__anon7f8b1fb20802(GestureEvent& info) 194 auto longPressCallback = [](GestureEvent& info) {};
195 auto longPressEvent = AceType::MakeRefPtr<LongPressEvent>(longPressCallback);
196 gestureEventHub->SetLongPressEvent(longPressEvent);
197
198 // set dragEventActuator_
__anon7f8b1fb20902(GestureEvent& info) 199 auto dragActionStart = [](GestureEvent& info) {};
__anon7f8b1fb20a02(GestureEvent& info) 200 auto dragActionUpdate = [](GestureEvent& info) {};
__anon7f8b1fb20b02(GestureEvent& info) 201 auto dragActionEnd = [](GestureEvent& info) {};
__anon7f8b1fb20c02() 202 auto dragActionCancel = []() {};
203 auto dragEvent = AceType::MakeRefPtr<DragEvent>(
204 std::move(dragActionStart), std::move(dragActionUpdate), std::move(dragActionEnd), std::move(dragActionCancel));
205 gestureEventHub->SetCustomDragEvent(dragEvent, PAN_DIRECTION_ALL, FINGERS, DISTANCE);
206 }
207
208 /**
209 * @tc.name: GestureEventHubTest004
210 * @tc.desc: Test AddClickEvent, SetUserOnClick, ActClick & SetFocusClickEvent
211 * @tc.type: FUNC
212 */
213 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest004, TestSize.Level1)
214 {
215 /**
216 * @tc.steps: step1. Create GestureEventHub.
217 * @tc.expected: gestureEventHub is not null.
218 */
219 auto eventHub = AceType::MakeRefPtr<EventHub>();
220 EXPECT_TRUE(eventHub);
221 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
222 eventHub->AttachHost(frameNode);
223 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
224 EXPECT_TRUE(gestureEventHub);
225
226 /**
227 * @tc.steps: step2. call ActClick
228 * case: clickEventActuator_ is null
229 * @tc.expected: flag is false
230 */
231 auto flag = gestureEventHub->ActClick();
232 EXPECT_FALSE(flag);
233
234 /**
235 * @tc.steps: step3. call ActClick
236 * case: clickEventActuator_ is null, clickRecognizer fingers is 2, count is 1
237 * @tc.expected: flag is false
238 */
239 auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>(DOUBLE_FINGERS, 1);
240 gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
241 EXPECT_FALSE(gestureEventHub->ActClick());
242 gestureEventHub->gestureHierarchy_.clear();
243
244 /**
245 * @tc.steps: step4. call ActClick
246 * case: clickEventActuator_ is null, clickRecognizer fingers is 1, count is 1
247 * @tc.expected: flag is true
248 */
249 clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>(1, 1);
__anon7f8b1fb20d02(GestureEvent& info) 250 clickRecognizer->SetOnAction([](GestureEvent& info) {});
251 gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
252 EXPECT_TRUE(gestureEventHub->ActClick());
253 gestureEventHub->gestureHierarchy_.clear();
254
255 /**
256 * @tc.steps: step5. construct two clickCallback
257 * one is for SetUserOnClick, the other is for AddClickEvent
258 */
259 std::string msg1;
__anon7f8b1fb20e02(GestureEvent& ) 260 auto clickCallback = [&msg1](GestureEvent& /* info */) { msg1 = CHECK_TAG_1; };
261 gestureEventHub->SetUserOnClick(clickCallback);
262 std::string msg2;
__anon7f8b1fb20f02(GestureEvent& ) 263 auto clickCallback2 = [&msg2](GestureEvent& /* info */) { msg2 = CHECK_TAG_2; };
264 auto clickEvent = AceType::MakeRefPtr<ClickEvent>(std::move(clickCallback2));
265 gestureEventHub->AddClickEvent(clickEvent);
266
267 /**
268 * @tc.steps: step6. call ActClick
269 * case: clickEventActuator_ is not null
270 * @tc.expected: flag is true & clickCallback & clickCallback2 has be called
271 */
272 flag = gestureEventHub->ActClick();
273 EXPECT_TRUE(flag);
274 EXPECT_EQ(msg1, CHECK_TAG_1);
275 EXPECT_EQ(msg2, CHECK_TAG_2);
276
277 /**
278 * @tc.steps: step7. call eventHub's GetOrCreateFocusHub
279 * @tc.expected: return is not null
280 */
281 auto focusHub = eventHub->GetOrCreateFocusHub();
282 EXPECT_TRUE(focusHub);
283
284 /**
285 * @tc.steps: step8. call SetFocusClickEvent
286 * @tc.expected: no fatal error occur
287 */
288 msg1 = "";
__anon7f8b1fb21002(GestureEvent& ) 289 auto clickCallback3 = [&msg1](GestureEvent& /* info */) { msg1 = CHECK_TAG_1; };
290 gestureEventHub->SetFocusClickEvent(clickCallback3);
291 }
292
293 /**
294 * @tc.name: GestureEventHubTest005
295 * @tc.desc: Test ActLongClick
296 * @tc.type: FUNC
297 */
298 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest005, TestSize.Level1)
299 {
300 /**
301 * @tc.steps: step1. Create GestureEventHub.
302 * @tc.expected: gestureEventHub is not null.
303 */
304 auto eventHub = AceType::MakeRefPtr<EventHub>();
305 EXPECT_TRUE(eventHub);
306 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
307 eventHub->AttachHost(frameNode);
308 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
309 EXPECT_TRUE(gestureEventHub);
310
311 /**
312 * @tc.steps: step2. call ActLongClick
313 * case: longPressEventActuator_ is null
314 * @tc.expected: flag is false
315 */
316 auto flag = gestureEventHub->ActLongClick();
317 EXPECT_FALSE(flag);
318
319 /**
320 * @tc.steps: step3. call ActLongClick
321 * case: longPressEventActuator_ is null, longPressRecognizer fingers is 2
322 * @tc.expected: flag is false
323 */
324 auto longPressRecognizer = AceType::MakeRefPtr<LongPressRecognizer>(1, DOUBLE_FINGERS, false);
325 gestureEventHub->gestureHierarchy_.emplace_back(longPressRecognizer);
326 EXPECT_FALSE(gestureEventHub->ActLongClick());
327 gestureEventHub->gestureHierarchy_.clear();
328
329 /**
330 * @tc.steps: step4. call ActLongClick
331 * case: longPressEventActuator_ is null, longPressRecognizer fingers is 1
332 * @tc.expected: flag is true
333 */
334 longPressRecognizer = AceType::MakeRefPtr<LongPressRecognizer>(1, 1, false);
__anon7f8b1fb21102(GestureEvent& info) 335 longPressRecognizer->SetOnAction([](GestureEvent& info) {});
336 gestureEventHub->gestureHierarchy_.emplace_back(longPressRecognizer);
337 EXPECT_TRUE(gestureEventHub->ActLongClick());
338 gestureEventHub->gestureHierarchy_.clear();
339
340 /**
341 * @tc.steps: step5. construct a longPressCallback
342 */
343 std::string msg1;
__anon7f8b1fb21202(GestureEvent& ) 344 auto longPressCallback = [&msg1](GestureEvent& /* info */) { msg1 = CHECK_TAG_1; };
345 auto longPressEvent = AceType::MakeRefPtr<LongPressEvent>(longPressCallback);
346 gestureEventHub->SetLongPressEvent(longPressEvent);
347
348 /**
349 * @tc.steps: step6. call ActLongClick
350 * case: longPressEventActuator_ is not null
351 * @tc.expected: flag is true & longPressCallback will be called
352 */
353 flag = gestureEventHub->ActLongClick();
354 EXPECT_TRUE(flag);
355 EXPECT_EQ(msg1, CHECK_TAG_1);
356
357 /**
358 * @tc.steps: step7. call eventHub's GetOrCreateFocusHub
359 * @tc.expected: return is not null
360 */
361 auto focusHub = eventHub->GetOrCreateFocusHub();
362 EXPECT_TRUE(focusHub);
363
364 /**
365 * @tc.steps: step8. call SetFocusClickEvent
366 * @tc.expected: no fatal error occur
367 */
368 msg1 = "";
__anon7f8b1fb21302(GestureEvent& ) 369 auto clickCallback3 = [&msg1](GestureEvent& /* info */) { msg1 = CHECK_TAG_1; };
370 gestureEventHub->SetFocusClickEvent(clickCallback3);
371 }
372
373 /**
374 * @tc.name: GestureEventHubTest006
375 * @tc.desc: Test CombineIntoExclusiveRecognizer
376 * @tc.type: FUNC
377 */
378 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest006, TestSize.Level1)
379 {
380 /**
381 * @tc.steps: step1. Create GestureEventHub.
382 * @tc.expected: gestureEventHub is not null.
383 */
384 auto eventHub = AceType::MakeRefPtr<EventHub>();
385 EXPECT_TRUE(eventHub);
386 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
387 EXPECT_TRUE(gestureEventHub);
388
389 /**
390 * @tc.steps: step2. call CombineIntoExclusiveRecognizer
391 * case: result is empty
392 * @tc.expected: result is empty
393 */
394 TouchTestResult result;
395 gestureEventHub->CombineIntoExclusiveRecognizer(GLOBAL_POINT, LOCAL_POINT, result, TOUCH_ID);
396 auto size = static_cast<int32_t>(result.size());
397 EXPECT_EQ(size, 0);
398
399 /**
400 * @tc.steps: step3. insert element to result
401 * @tc.expected: result'size is 3
402 */
403
404 // new TouchEventActuator
405 auto touchEventActuator = AceType::MakeRefPtr<TouchEventActuator>();
406
407 // new LongPressRecognizer (extends NGGestureRecognizer)
408 auto longPressRecognizer = AceType::MakeRefPtr<LongPressRecognizer>(false, false);
409
410 // new ClickRecognizer (extends NGGestureRecognizer)
411 auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>();
412
413 result.emplace_back(touchEventActuator);
414 result.emplace_back(longPressRecognizer);
415 result.emplace_back(clickRecognizer);
416 size = static_cast<int32_t>(result.size());
417 EXPECT_EQ(size, 3);
418
419 /**
420 * @tc.steps: step4. call CombineIntoExclusiveRecognizer
421 * case: recognizers'size > 1
422 * @tc.expected: result'size is 2. One is touchEventActuator, the other is a exclusiveRecognizer created by
423 * longPressRecognizer and clickRecognizer
424 */
425 gestureEventHub->CombineIntoExclusiveRecognizer(GLOBAL_POINT, LOCAL_POINT, result, TOUCH_ID);
426 size = static_cast<int32_t>(result.size());
427 EXPECT_EQ(size, 2);
428
429 /**
430 * @tc.steps: step5. call CombineIntoExclusiveRecognizer
431 * case: recognizers'size = 1
432 * @tc.expected: result2'size is 2. One is touchEventActuator, the other is longPressRecognizer
433 */
434 TouchTestResult result2;
435 result2.emplace_back(touchEventActuator);
436 result2.emplace_back(longPressRecognizer);
437 gestureEventHub->CombineIntoExclusiveRecognizer(GLOBAL_POINT, LOCAL_POINT, result2, TOUCH_ID);
438 size = static_cast<int32_t>(result2.size());
439 EXPECT_EQ(size, 2);
440 }
441
442 /**
443 * @tc.name: GestureEventHubTest007
444 * @tc.desc: Test InitDragDropEvent
445 * @tc.type: FUNC
446 */
447 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest007, TestSize.Level1)
448 {
449 /**
450 * @tc.steps: step1. Create GestureEventHub.
451 * @tc.expected: gestureEventHub is not null.
452 */
453 auto eventHub = AceType::MakeRefPtr<EventHub>();
454 EXPECT_TRUE(eventHub);
455 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
456 EXPECT_TRUE(gestureEventHub);
457
458 /**
459 * @tc.steps: step2. Call InitDragDropEvent.
460 * @tc.expected: dragEventActuator_ is not null.
461 */
462 gestureEventHub->InitDragDropEvent();
463 EXPECT_TRUE(gestureEventHub->dragEventActuator_);
464 }
465
466 /**
467 * @tc.name: GestureEventHubTest008
468 * @tc.desc: Test Functions related with drag
469 * @tc.type: FUNC
470 */
471 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest008, TestSize.Level1)
472 {
473 /**
474 * @tc.steps: step1. Create GestureEventHub.
475 * @tc.expected: gestureEventHub is not null.
476 */
477 auto eventHub = AceType::MakeRefPtr<EventHub>();
478 EXPECT_TRUE(eventHub);
479 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
480 EXPECT_TRUE(gestureEventHub);
481
482 /**
483 * @tc.steps: step2. call HandleOnDragStart
484 * case: eventHub->HasOnDragStart() is null
485 * @tc.expected: dragDropProxy_ is null.
486 */
487 GestureEvent info;
488 gestureEventHub->HandleOnDragStart(info);
489 EXPECT_FALSE(gestureEventHub->dragDropProxy_);
490
491 /**
492 * @tc.steps: step3. set OnDragStart for eventHub
493 * after that eventHub->HasOnDragStart() is not null
494 * case: dragDropInfo.customNode is not null
495 */
496 RefPtr<UINode> customNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
497 auto onDragStart = [&customNode](
__anon7f8b1fb21402( const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 498 const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
499 DragDropInfo dragDropInfo;
500 dragDropInfo.customNode = customNode;
501 return dragDropInfo;
502 };
503 eventHub->SetOnDragStart(std::move(onDragStart));
504
505 /**
506 * @tc.steps: step4. call HandleOnDragStart
507 * case: dragDropInfo.customNode is not null
508 * @tc.expected: dragDropProxy_ is not null.
509 */
510 gestureEventHub->HandleOnDragStart(info);
511 EXPECT_FALSE(gestureEventHub->dragDropProxy_);
512
513 /**
514 * @tc.steps: step5. set OnDragStart for eventHub2
515 * after that eventHub->HasOnDragStart() is not null
516 * case: dragDropInfo.pixelMap is not null
517 */
518 void* voidPtr = static_cast<void*>(new char[0]);
519 RefPtr<PixelMap> pixelMap = PixelMap::CreatePixelMap(voidPtr);
520 auto onDragStart2 = [&pixelMap](
__anon7f8b1fb21502( const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 521 const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
522 DragDropInfo dragDropInfo;
523 dragDropInfo.pixelMap = pixelMap;
524 return dragDropInfo;
525 };
526 auto eventHub2 = AceType::MakeRefPtr<EventHub>();
527 EXPECT_TRUE(eventHub2);
528 eventHub2->SetOnDragStart(std::move(onDragStart2));
529 auto gestureEventHub2 = AceType::MakeRefPtr<GestureEventHub>(eventHub2);
530 EXPECT_TRUE(gestureEventHub2);
531
532 /**
533 * @tc.steps: step6. call HandleOnDragStart
534 * case: dragDropInfo.pixelMap is not null
535 * @tc.expected: dragDropProxy_ is not null.
536 */
537 gestureEventHub2->HandleOnDragStart(info);
538 EXPECT_FALSE(gestureEventHub2->dragDropProxy_);
539
540 /**
541 * @tc.steps: step7. call HandleOnDragStart again
542 * case: dragDropProxy_ need to reset
543 * @tc.expected: dragDropProxy_ is not null.
544 */
545 gestureEventHub2->HandleOnDragStart(info);
546 EXPECT_FALSE(gestureEventHub2->dragDropProxy_);
547
548 /**
549 * @tc.steps: step8. call HandleOnDragUpdate
550 * @tc.expected: dragDropProxy_ is not null.
551 */
552 gestureEventHub2->HandleOnDragUpdate(info);
553 EXPECT_FALSE(gestureEventHub2->dragDropProxy_);
554
555 /**
556 * @tc.steps: step9. call HandleOnDragCancel
557 * @tc.expected: dragDropProxy_ is null.
558 */
559 gestureEventHub2->HandleOnDragCancel();
560 EXPECT_FALSE(gestureEventHub2->dragDropProxy_);
561
562 /**
563 * @tc.steps: step10. call HandleOnDragEnd
564 * case: eventHub->HasOnDrop() is false
565 * @tc.expected: dragDropProxy_ is null.
566 */
567 gestureEventHub->HandleOnDragEnd(info);
568 EXPECT_FALSE(gestureEventHub->dragDropProxy_);
569
570 /**
571 * @tc.steps: step10. call HandleOnDragEnd
572 * case: eventHub->HasOnDrop() is true
573 * @tc.expected: dragDropProxy_ is null
574 * onDrop has been called, msg1 = CHECK_TAG_1
575 */
576 std::string msg1;
__anon7f8b1fb21602(const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 577 auto onDrop = [&msg1](const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
578 msg1 = CHECK_TAG_1;
579 };
580 eventHub->SetOnDrop(std::move(onDrop));
581 gestureEventHub->HandleOnDragStart(info);
582 gestureEventHub->HandleOnDragEnd(info);
583 EXPECT_FALSE(gestureEventHub->dragDropProxy_);
584 EXPECT_EQ(msg1, "");
585 }
586
587 /**
588 * @tc.name: GestureEventHubTest009
589 * @tc.desc: Test ModifyDone & UpdateGestureHierarchy
590 * @tc.type: FUNC
591 */
592 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest009, TestSize.Level1)
593 {
594 /**
595 * @tc.steps: step1. Create GestureEventHub.
596 * @tc.expected: gestureEventHub is not null.
597 */
598 auto eventHub = AceType::MakeRefPtr<EventHub>();
599 EXPECT_TRUE(eventHub);
600 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
601 eventHub->AttachHost(frameNode);
602 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
603 EXPECT_TRUE(gestureEventHub);
604
605 /**
606 * @tc.steps: step2. call OnModifyDone
607 * case: recreateGesture_ is true & gestures_.size() == gestureHierarchy_.size() == 0
608 * @tc.expected: recreateGesture_ = false
609 */
610 gestureEventHub->OnModifyDone();
611 EXPECT_FALSE(gestureEventHub->recreateGesture_);
612
613 /**
614 * @tc.steps: step3. call OnModifyDone
615 * case: recreateGesture_ is false
616 * @tc.expected: recreateGesture_ = false
617 */
618 gestureEventHub->OnModifyDone();
619 EXPECT_FALSE(gestureEventHub->recreateGesture_);
620
621 /**
622 * @tc.steps: step4. call OnModifyDone
623 * case: recreateGesture_ is true & gestures_.size() != gestureHierarchy_.size()
624 * @tc.expected: recreateGesture_ = false
625 * gestures_ has cleared & gestureHierarchy_ has one element
626 */
627 gestureEventHub->recreateGesture_ = true;
628 auto longPressGesture = AceType::MakeRefPtr<LongPressGesture>(FINGERS, false, 1);
629 gestureEventHub->gestures_.emplace_back(longPressGesture);
630 gestureEventHub->OnModifyDone();
631 EXPECT_FALSE(gestureEventHub->recreateGesture_);
632 auto sizeGestures = static_cast<int32_t>(gestureEventHub->gestures_.size());
633 auto sizeGestureHierarchy = static_cast<int32_t>(gestureEventHub->gestureHierarchy_.size());
634 EXPECT_EQ(sizeGestures, 0);
635 EXPECT_EQ(sizeGestureHierarchy, 1);
636 }
637
638 /**
639 * @tc.name: GestureEventHubTest010
640 * @tc.desc: Test ProcessTouchTestHierarchy
641 * @tc.type: FUNC
642 */
643 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest010, TestSize.Level1)
644 {
645 /**
646 * @tc.steps: step1. Create GestureEventHub.
647 * @tc.expected: gestureEventHub is not null.
648 */
649 auto eventHub = AceType::MakeRefPtr<EventHub>();
650 EXPECT_TRUE(eventHub);
651 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
652 eventHub->AttachHost(frameNode);
653 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
654 EXPECT_TRUE(gestureEventHub);
655
656 /**
657 * @tc.steps: step2. call ProcessTouchTestHierarchy
658 * case: innerRecognizers & gestureHierarchy_ is empty, current is null
659 * @tc.expected: finalResult is empty
660 */
661 TouchRestrict touchRestrict;
662 std::list<RefPtr<NGGestureRecognizer>> innerTargets;
663 TouchTestResult finalResult;
664 ResponseLinkResult responseLinkResult;
665
666 std::vector<RefPtr<NGGestureRecognizer>> vc;
667 vc.push_back(AceType::MakeRefPtr<ClickRecognizer>());
668 auto exclusiveRecognizer = AceType::MakeRefPtr<ExclusiveRecognizer>(vc);
669 std::vector<RefPtr<NGGestureRecognizer>> parallelVc;
670 parallelVc.push_back(AceType::MakeRefPtr<ClickRecognizer>());
671 auto parallelRecognizer = AceType::MakeRefPtr<ParallelRecognizer>(parallelVc);
672
673 gestureEventHub->externalExclusiveRecognizer_.push_back(exclusiveRecognizer);
674 gestureEventHub->externalParallelRecognizer_.push_back(parallelRecognizer);
675 EXPECT_EQ(static_cast<int32_t>(gestureEventHub->externalExclusiveRecognizer_.size()), 1);
676 EXPECT_EQ(static_cast<int32_t>(gestureEventHub->externalParallelRecognizer_.size()), 1);
677
678 gestureEventHub->ProcessTouchTestHierarchy(
679 COORDINATE_OFFSET, touchRestrict, innerTargets, finalResult, TOUCH_ID, nullptr, responseLinkResult);
680 EXPECT_TRUE(finalResult.empty());
681
682 /**
683 * @tc.steps: step3. call ProcessTouchTestHierarchy several
684 * case: innerRecognizers & gestureHierarchy_ is not all empty
685 * @tc.expected: finalResult's size has increased by 1 per call
686 */
687 auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>(FINGERS, 1); // priority == GesturePriority::Low
688 innerTargets.emplace_back(clickRecognizer);
689
690 gestureEventHub->gestureHierarchy_.emplace_back(nullptr);
691 auto clickRecognizer2 = AceType::MakeRefPtr<ClickRecognizer>(FINGERS, 1);
692 clickRecognizer2->SetPriorityMask(GestureMask::IgnoreInternal); // current will assigned to this
693 auto clickRecognizer3 = AceType::MakeRefPtr<ClickRecognizer>(FINGERS, 1); // priority == GesturePriority::High
694 clickRecognizer3->SetPriority(GesturePriority::High);
695 auto clickRecognizer4 = AceType::MakeRefPtr<ClickRecognizer>(FINGERS, 1); // priority == GesturePriority::Parallel
696 clickRecognizer4->SetPriority(GesturePriority::Parallel);
697 auto clickRecognizer5 = AceType::MakeRefPtr<ClickRecognizer>(FINGERS, 1); // priority == GesturePriority::Parallel
698 clickRecognizer5->SetPriority(GesturePriority::Parallel);
699
700 gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
701 gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer4);
702 gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer2);
703 gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer3);
704 gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer5);
705
706 gestureEventHub->ProcessTouchTestHierarchy(
707 COORDINATE_OFFSET, touchRestrict, innerTargets, finalResult, TOUCH_ID, nullptr, responseLinkResult);
708 auto sizeOfFinalResult = static_cast<int32_t>(finalResult.size());
709 EXPECT_EQ(sizeOfFinalResult, 1);
710
711 auto clickRecognizer6 = AceType::MakeRefPtr<ClickRecognizer>(FINGERS, 1); // priority == GesturePriority::Low
712 std::list<RefPtr<NGGestureRecognizer>> innerTargets2;
713 innerTargets2.emplace_back(clickRecognizer);
714 innerTargets2.emplace_back(clickRecognizer6);
715 gestureEventHub->ProcessTouchTestHierarchy(
716 COORDINATE_OFFSET, touchRestrict, innerTargets2, finalResult, TOUCH_ID, nullptr, responseLinkResult);
717 sizeOfFinalResult = static_cast<int32_t>(finalResult.size());
718 EXPECT_EQ(sizeOfFinalResult, 2);
719
720 std::list<RefPtr<NGGestureRecognizer>> innerTargets3;
721 innerTargets3.emplace_back(clickRecognizer);
722 innerTargets3.emplace_back(clickRecognizer6);
723 gestureEventHub->ProcessTouchTestHierarchy(
724 COORDINATE_OFFSET, touchRestrict, innerTargets3, finalResult, TOUCH_ID, nullptr, responseLinkResult);
725 sizeOfFinalResult = static_cast<int32_t>(finalResult.size());
726 EXPECT_EQ(sizeOfFinalResult, 3);
727
728 std::list<RefPtr<NGGestureRecognizer>> innerTargets4;
729 gestureEventHub->gestureHierarchy_.clear();
730 gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer4);
731 gestureEventHub->ProcessTouchTestHierarchy(
732 COORDINATE_OFFSET, touchRestrict, innerTargets4, finalResult, TOUCH_ID, nullptr, responseLinkResult);
733 sizeOfFinalResult = static_cast<int32_t>(finalResult.size());
734 EXPECT_EQ(sizeOfFinalResult, 4);
735
736 std::list<RefPtr<NGGestureRecognizer>> innerTargets5;
737 gestureEventHub->gestureHierarchy_.clear();
738 gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
739 gestureEventHub->ProcessTouchTestHierarchy(
740 COORDINATE_OFFSET, touchRestrict, innerTargets5, finalResult, TOUCH_ID, nullptr, responseLinkResult);
741 sizeOfFinalResult = static_cast<int32_t>(finalResult.size());
742 EXPECT_EQ(sizeOfFinalResult, 5);
743 }
744
745 /**
746 * @tc.name: GestureEventHubTest011
747 * @tc.desc: Test IsAccessibilityClickable and IsAccessibiityLongClickable
748 * @tc.type: FUNC
749 */
750 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest011, TestSize.Level1)
751 {
752 /**
753 * @tc.steps: step1. Create GestureEventHub.
754 * @tc.expected: gestureEventHub is not null.
755 */
756 auto eventHub = AceType::MakeRefPtr<EventHub>();
757 ASSERT_NE(eventHub, nullptr);
758 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
759 ASSERT_NE(frameNode, nullptr);
760 eventHub->AttachHost(frameNode);
761 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
762 ASSERT_NE(gestureEventHub, nullptr);
763
764 /**
765 * @tc.steps: step2. gestureHierarchy_ has ClickRecognizer, the number of fingers is two or click count is two
766 * @tc.expected: IsAccessibilityClickable is false
767 */
768 EXPECT_FALSE(gestureEventHub->IsAccessibilityClickable());
769
770 auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>(DOUBLE_FINGERS, 1);
771 gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
772 EXPECT_FALSE(gestureEventHub->IsAccessibilityClickable());
773 gestureEventHub->gestureHierarchy_.clear();
774 clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>(1, CLICK_COUNTS);
775 gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
776 EXPECT_FALSE(gestureEventHub->IsAccessibilityClickable());
777 gestureEventHub->gestureHierarchy_.clear();
778
779 /**
780 * @tc.steps: step3. gestureHierarchy_ has ClickRecognizer, the number of fingers is one
781 * @tc.expected: IsAccessibilityClickable is true
782 */
783 clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>(FINGERS, 1);
784 gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
785 EXPECT_TRUE(gestureEventHub->IsAccessibilityClickable());
786 gestureEventHub->gestureHierarchy_.clear();
787
788 /**
789 * @tc.steps: step4. call AddClickEvent
790 * @tc.expected: IsAccessibilityClickable is true
791 */
__anon7f8b1fb21702(GestureEvent& info) 792 auto clickCallback = [](GestureEvent& info) {};
793 auto clickEvent = AceType::MakeRefPtr<ClickEvent>(std::move(clickCallback));
794 gestureEventHub->AddClickEvent(clickEvent);
795 EXPECT_TRUE(gestureEventHub->IsAccessibilityClickable());
796
797 /**
798 * @tc.steps: step5. gestureHierarchy_ has LongPressRecognizer, the number of fingers is two
799 * @tc.expected: IsAccessibilityLongClickable is false
800 */
801 EXPECT_FALSE(gestureEventHub->IsAccessibilityLongClickable());
802
803 auto longPressRecognizer = AceType::MakeRefPtr<LongPressRecognizer>(1, DOUBLE_FINGERS, false);
804 gestureEventHub->gestureHierarchy_.emplace_back(longPressRecognizer);
805 EXPECT_FALSE(gestureEventHub->IsAccessibilityLongClickable());
806 gestureEventHub->gestureHierarchy_.clear();
807
808 /**
809 * @tc.steps: step6. gestureHierarchy_ has LongPressRecognizer, the number of fingers is one
810 * @tc.expected: IsAccessibilityLongClickable is false
811 */
812 longPressRecognizer = AceType::MakeRefPtr<LongPressRecognizer>(1, 1, false);
813 gestureEventHub->gestureHierarchy_.emplace_back(longPressRecognizer);
814 EXPECT_TRUE(gestureEventHub->IsAccessibilityLongClickable());
815 gestureEventHub->gestureHierarchy_.clear();
816
817 /**
818 * @tc.steps: step7. call SetLongPressEvent
819 * @tc.expected: IsAccessibilityLongClickable is true
820 */
__anon7f8b1fb21802(GestureEvent& info) 821 auto longPressCallback = [](GestureEvent& info) {};
822 auto longPressEvent = AceType::MakeRefPtr<LongPressEvent>(longPressCallback);
823 gestureEventHub->SetLongPressEvent(longPressEvent);
824 EXPECT_TRUE(gestureEventHub->IsAccessibilityLongClickable());
825 }
826
827 /**
828 * @tc.name: GestureEventHubTest012
829 * @tc.desc: Test UpdateGestureHierarchy
830 * @tc.type: FUNC
831 */
832 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest012, TestSize.Level1)
833 {
834 /**
835 * @tc.steps: step1. Create GestureEventHub.
836 * @tc.expected: gestureEventHub is not null.
837 */
838 auto eventHub = AceType::MakeRefPtr<EventHub>();
839 ASSERT_NE(eventHub, nullptr);
840 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
841 ASSERT_NE(frameNode, nullptr);
842 eventHub->AttachHost(frameNode);
843 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
844 ASSERT_NE(gestureEventHub, nullptr);
845
846 /**
847 * @tc.steps: step2. call OnModifyDone
848 * @tc.expected: gestureHierarchy_ has two elements
849 */
850 gestureEventHub->recreateGesture_ = true;
851 auto tapGesture = AceType::MakeRefPtr<TapGesture>(FINGERS, 1);
852 gestureEventHub->gestures_.emplace_back(tapGesture);
853 auto longPressGesture = AceType::MakeRefPtr<LongPressGesture>(FINGERS, false, 1);
854 gestureEventHub->gestures_.emplace_back(longPressGesture);
855 auto onAccessibilityEvent = gestureEventHub->GetOnAccessibilityEventFunc();
856 ASSERT_NE(onAccessibilityEvent, nullptr);
857 onAccessibilityEvent(AccessibilityEventType::CLICK);
858 gestureEventHub->OnModifyDone();
859
860 auto sizeGestureHierarchy = static_cast<int32_t>(gestureEventHub->gestureHierarchy_.size());
861 EXPECT_EQ(sizeGestureHierarchy, GESTURES_COUNTS);
862 }
863
864 /**
865 * @tc.name: GestureEventHubTest013
866 * @tc.desc: Test ProcessTouchTestHit
867 * @tc.type: FUNC
868 */
869 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest013, TestSize.Level1)
870 {
871 /**
872 * @tc.steps: step1. Create GestureEventHub.
873 * @tc.expected: gestureEventHub is not null.
874 */
875 auto frameNode = FrameNode::CreateFrameNode("myButton", 100, AceType::MakeRefPtr<Pattern>());
876 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
877 ASSERT_NE(guestureEventHub, nullptr);
878 OffsetF coordinateOffset;
879 TouchRestrict touchRestrict;
880 TouchTestResult innerTargets;
881 TouchTestResult finalResult;
882 ResponseLinkResult responseLinkResult;
883 PointF localPoint;
884
885 PanDirection panDirection;
886 /**
887 * @tc.steps: step2. call ProcessTouchTestHit
888 * @tc.expected: result is true
889 */
890 guestureEventHub->scrollableActuator_ =
891 AceType::MakeRefPtr<ScrollableActuator>(AceType::WeakClaim(AceType::RawPtr(guestureEventHub)));
892 guestureEventHub->touchEventActuator_ = AceType::MakeRefPtr<TouchEventActuator>();
893 guestureEventHub->clickEventActuator_ =
894 AceType::MakeRefPtr<ClickEventActuator>(AceType::WeakClaim(AceType::RawPtr(guestureEventHub)));
895 guestureEventHub->panEventActuator_ = AceType::MakeRefPtr<PanEventActuator>(
896 AceType::WeakClaim(AceType::RawPtr(guestureEventHub)), panDirection, 1, 50.0f);
897 guestureEventHub->longPressEventActuator_ =
898 AceType::MakeRefPtr<LongPressEventActuator>(AceType::WeakClaim(AceType::RawPtr(guestureEventHub)));
899 guestureEventHub->dragEventActuator_ = AceType::MakeRefPtr<DragEventActuator>(
900 AceType::WeakClaim(AceType::RawPtr(guestureEventHub)), panDirection, 1, 50.0f);
901 auto result = guestureEventHub->ProcessTouchTestHit(
902 coordinateOffset, touchRestrict, innerTargets, finalResult, 2, localPoint, nullptr, responseLinkResult);
903 EXPECT_FALSE(result);
904 }
905
906 /**
907 * @tc.name: GestureEventHubTest014
908 * @tc.desc: Test IsAllowedDrag
909 * @tc.type: FUNC
910 */
911 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest014, TestSize.Level1)
912 {
913 /**
914 * @tc.steps: step1. Create GestureEventHub.
915 * @tc.expected: gestureEventHub is not null.
916 */
917 auto frameNode = FrameNode::CreateFrameNode("myButton", 101, AceType::MakeRefPtr<Pattern>());
918 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
919 ASSERT_NE(guestureEventHub, nullptr);
920
921 auto eventHub = guestureEventHub->eventHub_.Upgrade();
922
923 auto event = guestureEventHub->eventHub_.Upgrade();
924 event->host_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
925 auto result = guestureEventHub->IsAllowedDrag(eventHub);
926 EXPECT_FALSE(result);
927 /**
928 * @tc.steps: step2. call IsAllowedDrag
929 * @tc.expected: result is correct
930 */
931 frameNode->userSet_ = true;
932 result = guestureEventHub->IsAllowedDrag(eventHub);
933 EXPECT_FALSE(result);
934
935 frameNode->userSet_ = false;
__anon7f8b1fb21902(const RefPtr<OHOS::Ace::DragEvent>&, const std::string&) 936 auto func = [](const RefPtr<OHOS::Ace::DragEvent>&, const std::string&) { return DragDropInfo(); };
937 eventHub->onDragStart_ = func;
938 result = guestureEventHub->IsAllowedDrag(eventHub);
939 EXPECT_TRUE(result);
940
941 guestureEventHub->HandleOnDragStart(GestureEvent());
942
943 frameNode->draggable_ = true;
944 result = guestureEventHub->IsAllowedDrag(eventHub);
945 EXPECT_TRUE(result);
946
947 frameNode->draggable_ = true;
948 eventHub->onDragStart_ = nullptr;
949 result = guestureEventHub->IsAllowedDrag(eventHub);
950 EXPECT_FALSE(result);
951 }
952
953 /**
954 * @tc.name: GestureEventHubTest015
955 * @tc.desc: Test StartDragTaskForWeb HandleNotAllowDrag
956 * @tc.type: FUNC
957 */
958 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest015, TestSize.Level1)
959 {
960 /**
961 * @tc.steps: step1. Create GestureEventHub.
962 * @tc.expected: gestureEventHub is not null.
963 */
964 auto frameNode = FrameNode::CreateFrameNode("myButton", 102, AceType::MakeRefPtr<Pattern>());
965 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
966 ASSERT_NE(guestureEventHub, nullptr);
967
968 auto event = guestureEventHub->eventHub_.Upgrade();
969 event->host_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
970
971 guestureEventHub->StartDragTaskForWeb();
972
973 guestureEventHub->isReceivedDragGestureInfo_ = true;
974 guestureEventHub->StartDragTaskForWeb();
975 EXPECT_FALSE(guestureEventHub->isReceivedDragGestureInfo_);
976
977 guestureEventHub->HandleNotAllowDrag(GestureEvent());
978
979 frameNode = FrameNode::CreateFrameNode("Web", 102, AceType::MakeRefPtr<Pattern>());
980 guestureEventHub = frameNode->GetOrCreateGestureEventHub();
981 event = guestureEventHub->eventHub_.Upgrade();
982 event->host_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
983
984 frameNode->userSet_ = false;
__anon7f8b1fb21a02(const RefPtr<OHOS::Ace::DragEvent>&, const std::string&) 985 auto func = [](const RefPtr<OHOS::Ace::DragEvent>&, const std::string&) { return DragDropInfo(); };
986 event->onDragStart_ = func;
987 guestureEventHub->HandleOnDragStart(GestureEvent());
988
989 guestureEventHub->HandleNotAllowDrag(GestureEvent());
990 EXPECT_TRUE(guestureEventHub->isReceivedDragGestureInfo_);
991 }
992
993 /**
994 * @tc.name: GestureEventHubTest016
995 * @tc.desc: Test BindMenu
996 * @tc.type: FUNC
997 */
998 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest016, TestSize.Level1)
999 {
1000 /**
1001 * @tc.steps: step1. Create GestureEventHub.
1002 * @tc.expected: gestureEventHub is not null.
1003 */
1004 auto frameNode = FrameNode::CreateFrameNode("myButton", 102, AceType::MakeRefPtr<Pattern>());
1005 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1006 ASSERT_NE(guestureEventHub, nullptr);
1007
1008 auto eventHub = guestureEventHub->eventHub_.Upgrade();
1009 eventHub->host_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
1010
1011 auto pipline = PipelineContext::GetCurrentContext();
__anon7f8b1fb21b02(GestureEvent& info) 1012 auto func = [](GestureEvent& info) {};
1013 guestureEventHub->BindMenu(func);
1014
__anon7f8b1fb21c02(GestureEvent& info) 1015 guestureEventHub->showMenu_ = AceType::MakeRefPtr<ClickEvent>([](GestureEvent& info) {});
1016 guestureEventHub->BindMenu(func);
1017
1018 guestureEventHub->clickEventActuator_ = nullptr;
1019 guestureEventHub->ClearUserOnClick();
1020 guestureEventHub->ClearUserOnTouch();
1021
1022 guestureEventHub->clickEventActuator_ =
1023 AceType::MakeRefPtr<ClickEventActuator>(AceType::WeakClaim(AceType::RawPtr(guestureEventHub)));
1024 guestureEventHub->touchEventActuator_ = AceType::MakeRefPtr<TouchEventActuator>();
1025 guestureEventHub->ClearUserOnClick();
1026 guestureEventHub->ClearUserOnTouch();
1027 EXPECT_FALSE(guestureEventHub->clickEventActuator_->userCallback_);
1028 }
1029
1030 /**
1031 * @tc.name: GestureEventHubTest017
1032 * @tc.desc: Test ProcessTouchTestHit
1033 * @tc.type: FUNC
1034 */
1035 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest017, TestSize.Level1)
1036 {
1037 /**
1038 * @tc.steps: step1. Create GestureEventHub.
1039 * @tc.expected: gestureEventHub is not null.
1040 */
1041 auto frameNode = FrameNode::CreateFrameNode("myButton", 100, AceType::MakeRefPtr<Pattern>());
1042 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1043 ASSERT_NE(guestureEventHub, nullptr);
1044 OffsetF coordinateOffset;
1045 TouchRestrict touchRestrict;
1046 TouchTestResult innerTargets;
1047 TouchTestResult finalResult;
1048 ResponseLinkResult responseLinkResult;
1049 PointF localPoint;
1050
1051 PanDirection panDirection;
1052 guestureEventHub->panEventActuator_ = AceType::MakeRefPtr<PanEventActuator>(
1053 AceType::WeakClaim(AceType::RawPtr(guestureEventHub)), panDirection, 1, 50.0f);
1054 /**
1055 * @tc.steps: step2. call ProcessTouchTestHit , recognizer is not instance of recognizer group
1056 * @tc.expected: result is false
1057 */
1058 guestureEventHub->longPressEventActuator_ =
1059 AceType::MakeRefPtr<LongPressEventActuator>(AceType::WeakClaim(AceType::RawPtr(guestureEventHub)));
1060 guestureEventHub->dragEventActuator_ = nullptr;
1061
1062 auto result = guestureEventHub->ProcessTouchTestHit(
1063 coordinateOffset, touchRestrict, innerTargets, finalResult, 2, localPoint, nullptr, responseLinkResult);
1064 EXPECT_FALSE(result);
1065 /**
1066 * @tc.steps: step3. call ProcessTouchTestHit , recognizer is instance of recognizer group.
1067 * @tc.expected: result is false
1068 */
__anon7f8b1fb21d02(GestureEvent& info) 1069 GestureEventFunc callback = [](GestureEvent& info) {};
1070 auto longPressEvent = AceType::MakeRefPtr<LongPressEvent>(std::move(callback));
1071 guestureEventHub->longPressEventActuator_->SetLongPressEvent(longPressEvent);
1072
1073 guestureEventHub->dragEventActuator_ = AceType::MakeRefPtr<DragEventActuator>(
1074 AceType::WeakClaim(AceType::RawPtr(guestureEventHub)), panDirection, 1, 50.0f);
1075
__anon7f8b1fb21e02(GestureEvent& info) 1076 auto dragActionStart = [](GestureEvent& info) {};
__anon7f8b1fb21f02(GestureEvent& info) 1077 auto dragActionUpdate = [](GestureEvent& info) {};
__anon7f8b1fb22002(GestureEvent& info) 1078 auto dragActionEnd = [](GestureEvent& info) {};
__anon7f8b1fb22102() 1079 auto dragActionCancel = []() {};
1080 auto dragEvent = AceType::MakeRefPtr<DragEvent>(
1081 std::move(dragActionStart), std::move(dragActionUpdate), std::move(dragActionEnd), std::move(dragActionCancel));
1082 guestureEventHub->dragEventActuator_->userCallback_ = dragEvent;
1083 guestureEventHub->userParallelClickEventActuator_ =
1084 AceType::MakeRefPtr<ClickEventActuator>(AceType::WeakClaim(AceType::RawPtr(guestureEventHub)));
1085 result = guestureEventHub->ProcessTouchTestHit(
1086 coordinateOffset, touchRestrict, innerTargets, finalResult, 2, localPoint, nullptr, responseLinkResult);
1087 EXPECT_FALSE(result);
1088 }
1089
1090 /**
1091 * @tc.name: GestureEventHubTest018
1092 * @tc.desc: Test HandleOnDragStart
1093 * @tc.type: FUNC
1094 */
1095 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest018, TestSize.Level1)
1096 {
1097 /**
1098 * @tc.steps: step1. create GestureEventHub.
1099 * @tc.expected: gestureEventHub is not null.
1100 */
1101 auto eventHub = AceType::MakeRefPtr<EventHub>();
1102 EXPECT_TRUE(eventHub);
1103 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1104 eventHub->AttachHost(frameNode);
1105 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1106 EXPECT_TRUE(gestureEventHub);
1107
1108 /**
1109 * @tc.steps: step2. update the input parameter attributes.
1110 */
1111 RefPtr<UINode> customNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1112 auto onDragStart = [&customNode](
__anon7f8b1fb22202( const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 1113 const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
1114 DragDropInfo dragDropInfo;
1115 dragDropInfo.customNode = customNode;
1116 return dragDropInfo;
1117 };
1118 eventHub->SetOnDragStart(std::move(onDragStart));
1119
1120 auto retFlag = gestureEventHub->IsAllowedDrag(eventHub);
1121 EXPECT_TRUE(retFlag);
1122
1123 auto eventManager = AceType::MakeRefPtr<EventManager>();
1124 EXPECT_TRUE(eventManager);
1125 eventManager->SetLastMoveBeforeUp(true);
1126
1127 auto pipeline = PipelineContext::GetCurrentContext();
1128 pipeline->SetEventManager(eventManager);
1129
1130 GestureEvent gestureEvent;
1131 gestureEvent.SetInputEventType(InputEventType::MOUSE_BUTTON);
1132 gestureEventHub->HandleOnDragStart(gestureEvent);
1133 EXPECT_TRUE(pipeline->GetEventManager());
1134 eventManager->SetLastMoveBeforeUp(false);
1135 gestureEvent.SetInputEventType(InputEventType::TOUCH_SCREEN);
1136
1137 /**
1138 * @tc.steps: step3. call HandleOnDragStart with SourceType::MOUSE_BUTTON and InputEventType::TOUCH_SCREEN.
1139 * @tc.expected: eventManager->IsLastMoveBeforeUp() the return value is false.
1140 */
1141 gestureEventHub->HandleOnDragStart(gestureEvent);
1142 EXPECT_FALSE(eventManager->IsLastMoveBeforeUp());
1143 }
1144
1145 /**
1146 * @tc.name: GestureEventHubTest0181
1147 * @tc.desc: Test HandleOnDragStart
1148 * @tc.type: FUNC
1149 */
1150 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest0181, TestSize.Level1)
1151 {
1152 /**
1153 * @tc.steps: step1. create GestureEventHub.
1154 * @tc.expected: gestureEventHub is not null.
1155 */
1156 auto eventHub = AceType::MakeRefPtr<EventHub>();
1157 EXPECT_TRUE(eventHub);
1158 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::WEB_ETS_TAG, -1, AceType::MakeRefPtr<Pattern>());
1159
1160 /**
1161 * @tc.steps: step2. update the input parameter attributes.
1162 */
1163 RefPtr<UINode> customNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1164 DragDropInfo dragDropInfo;
1165 dragDropInfo.customNode = customNode;
1166 frameNode->SetDragPreview(dragDropInfo);
1167
1168 eventHub->AttachHost(frameNode);
1169 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1170 EXPECT_TRUE(gestureEventHub);
1171
1172 auto onDragStart = [&customNode](
__anon7f8b1fb22302( const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 1173 const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
1174 DragDropInfo dragDropInfo;
1175 dragDropInfo.customNode = customNode;
1176 return dragDropInfo;
1177 };
1178 eventHub->SetOnDragStart(std::move(onDragStart));
1179
1180 auto eventManager = AceType::MakeRefPtr<EventManager>();
1181 EXPECT_TRUE(eventManager);
1182
1183 auto pipeline = PipelineContext::GetCurrentContext();
1184 pipeline->SetEventManager(eventManager);
1185 eventManager->SetLastMoveBeforeUp(false);
1186
1187 /**
1188 * @tc.steps: step3. call HandleOnDragStart with SourceType::MOUSE and InputEventType::TOUCH_SCREEN.
1189 * @tc.expected: eventManager->IsLastMoveBeforeUp() the return value is false.
1190 */
1191 GestureEvent gestureEvent;
1192 gestureEvent.SetSourceDevice(SourceType::MOUSE);
1193 gestureEvent.SetInputEventType(InputEventType::TOUCH_SCREEN);
1194 gestureEventHub->HandleOnDragStart(gestureEvent);
1195 EXPECT_FALSE(eventManager->IsLastMoveBeforeUp());
1196 }
1197
1198 /**
1199 * @tc.name: GestureEventHubTest0183
1200 * @tc.desc: Test HandleOnDragStart
1201 * @tc.type: FUNC
1202 */
1203 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest0183, TestSize.Level1)
1204 {
1205 /**
1206 * @tc.steps: step1. Create GestureEventHub.
1207 * @tc.expected: gestureEventHub is not null.
1208 */
1209 auto eventHub = AceType::MakeRefPtr<EventHub>();
1210 EXPECT_TRUE(eventHub);
1211 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::TEXTINPUT_ETS_TAG, -1, AceType::MakeRefPtr<TextPattern>());
1212
1213 /**
1214 * @tc.steps: step2. update the input parameter attributes.
1215 */
1216 void* voidPtr = static_cast<void*>(new char[0]);
1217 RefPtr<PixelMap> pixelMap = PixelMap::CreatePixelMap(voidPtr);
1218 RefPtr<UINode> customNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1219 DragDropInfo dragDropInfo;
1220 dragDropInfo.customNode = customNode;
1221 dragDropInfo.pixelMap = pixelMap;
1222 frameNode->SetDragPreview(dragDropInfo);
1223
1224 auto hostPattern = frameNode->GetPattern<TextDragBase>();
1225 EXPECT_TRUE(hostPattern);
1226
1227 eventHub->AttachHost(frameNode);
1228 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1229 EXPECT_TRUE(gestureEventHub);
1230
1231 auto onDragStart = [&customNode](
__anon7f8b1fb22402( const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 1232 const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
1233 DragDropInfo dragDropInfo;
1234 dragDropInfo.customNode = customNode;
1235 return dragDropInfo;
1236 };
1237 eventHub->SetOnDragStart(std::move(onDragStart));
1238
1239 auto eventManager = AceType::MakeRefPtr<EventManager>();
1240 EXPECT_TRUE(eventManager);
1241
1242 auto pipeline = PipelineContext::GetCurrentContext();
1243 pipeline->SetEventManager(eventManager);
1244 eventManager->SetLastMoveBeforeUp(false);
1245
1246 /**
1247 * @tc.steps: step3. call HandleOnDragStart with SourceType::NONE and InputEventType::TOUCH_SCREEN.
1248 * @tc.expected: eventManager->IsLastMoveBeforeUp() the return value is false.
1249 */
1250 GestureEvent gestureEvent;
1251 gestureEvent.SetSourceDevice(SourceType::NONE);
1252 gestureEvent.SetInputEventType(InputEventType::TOUCH_SCREEN);
1253 gestureEventHub->HandleOnDragStart(gestureEvent);
1254 EXPECT_FALSE(eventManager->IsLastMoveBeforeUp());
1255 }
1256
1257 /**
1258 * @tc.name: GestureEventHubTest0184
1259 * @tc.desc: Test HandleOnDragStart
1260 * @tc.type: FUNC
1261 */
1262 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest0184, TestSize.Level1)
1263 {
1264 /**
1265 * @tc.steps: step1. create GestureEventHub.
1266 * @tc.expected: gestureEventHub is not null.
1267 */
1268 auto eventHub = AceType::MakeRefPtr<EventHub>();
1269 EXPECT_TRUE(eventHub);
1270 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::SEARCH_Field_ETS_TAG, -1, AceType::MakeRefPtr<TextPattern>());
1271
1272 /**
1273 * @tc.steps: step2. update the input parameter attributes.
1274 */
1275 DragDropInfo dragDropInfo;
1276 dragDropInfo.customNode = nullptr;
1277 dragDropInfo.pixelMap = nullptr;
1278 frameNode->SetDragPreview(dragDropInfo);
1279
1280 auto hostPattern = frameNode->GetPattern<TextDragBase>();
1281 EXPECT_TRUE(hostPattern);
1282
1283 eventHub->AttachHost(frameNode);
1284 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1285 EXPECT_TRUE(gestureEventHub);
1286
1287 RefPtr<UINode> customNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1288 auto onDragStart = [&customNode](
__anon7f8b1fb22502( const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 1289 const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
1290 DragDropInfo dragDropInfo;
1291 dragDropInfo.customNode = customNode;
1292 return dragDropInfo;
1293 };
1294 eventHub->SetOnDragStart(std::move(onDragStart));
1295
1296 auto eventManager = AceType::MakeRefPtr<EventManager>();
1297 EXPECT_TRUE(eventManager);
1298 auto pipeline = PipelineContext::GetCurrentContext();
1299 pipeline->SetEventManager(eventManager);
1300 eventManager->SetLastMoveBeforeUp(false);
1301
1302 /**
1303 * @tc.steps: step3. call HandleOnDragStart with SourceType::MOUSE and InputEventType::TOUCH_SCREEN.
1304 * @tc.expected: eventManager->IsLastMoveBeforeUp() the return value is false.
1305 */
1306 GestureEvent gestureEvent;
1307 gestureEvent.SetSourceDevice(SourceType::MOUSE);
1308 gestureEvent.SetInputEventType(InputEventType::TOUCH_SCREEN);
1309 gestureEventHub->HandleOnDragStart(gestureEvent);
1310 EXPECT_FALSE(eventManager->IsLastMoveBeforeUp());
1311 }
1312
1313 /**
1314 * @tc.name: GestureEventHubTest0185
1315 * @tc.desc: Test HandleOnDragStart
1316 * @tc.type: FUNC
1317 */
1318 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest0185, TestSize.Level1)
1319 {
1320 /**
1321 * @tc.steps: step1. Create GestureEventHub.
1322 * @tc.expected: gestureEventHub is not null.
1323 */
1324 auto eventHub = AceType::MakeRefPtr<EventHub>();
1325 EXPECT_TRUE(eventHub);
1326 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::TEXT_ETS_TAG, -1, AceType::MakeRefPtr<TextPattern>());
1327
1328 /**
1329 * @tc.steps: step2. Build PixelMap and UINode, and update the properties of DragDropInfo.
1330 */
1331 void* voidPtr = static_cast<void*>(new char[0]);
1332 RefPtr<PixelMap> pixelMap = PixelMap::CreatePixelMap(voidPtr);
1333 RefPtr<UINode> customNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1334 DragDropInfo dragDropInfo;
1335 dragDropInfo.customNode = customNode;
1336 dragDropInfo.pixelMap = pixelMap;
1337 frameNode->SetDragPreview(dragDropInfo);
1338
1339 auto hostPattern = frameNode->GetPattern<TextDragBase>();
1340 EXPECT_TRUE(hostPattern);
1341
1342 eventHub->AttachHost(frameNode);
1343 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1344 EXPECT_TRUE(gestureEventHub);
1345
1346 auto onDragStart = [&customNode](
__anon7f8b1fb22602( const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 1347 const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
1348 DragDropInfo dragDropInfo;
1349 dragDropInfo.customNode = customNode;
1350 return dragDropInfo;
1351 };
1352 eventHub->SetOnDragStart(std::move(onDragStart));
1353
1354 auto eventManager = AceType::MakeRefPtr<EventManager>();
1355 EXPECT_TRUE(eventManager);
1356 auto pipeline = PipelineContext::GetCurrentContext();
1357 pipeline->SetEventManager(eventManager);
1358 eventManager->SetLastMoveBeforeUp(false);
1359
1360 /**
1361 * @tc.steps: step3. call HandleOnDragStart with SourceType::NONE and InputEventType::TOUCH_SCREEN.
1362 * @tc.expected: eventManager->IsLastMoveBeforeUp() the return value is false.
1363 */
1364 GestureEvent gestureEvent;
1365 gestureEvent.SetSourceDevice(SourceType::NONE);
1366 gestureEvent.SetInputEventType(InputEventType::TOUCH_SCREEN);
1367 gestureEventHub->HandleOnDragStart(gestureEvent);
1368 EXPECT_FALSE(eventManager->IsLastMoveBeforeUp());
1369 }
1370
1371 /**
1372 * @tc.name: GestureEventHubTest019
1373 * @tc.desc: Test KeyBoardShortCutClick
1374 * @tc.type: FUNC
1375 */
1376 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest019, TestSize.Level1)
1377 {
1378 /**
1379 * @tc.steps: step1. Create GestureEventHub.
1380 * @tc.expected: gestureEventHub is not null.
1381 */
1382 auto eventHub = AceType::MakeRefPtr<EventHub>();
1383 EXPECT_TRUE(eventHub);
1384 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1385 eventHub->AttachHost(frameNode);
1386 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1387 EXPECT_TRUE(gestureEventHub);
1388
1389 /**
1390 * @tc.steps: step2. construct a clickEventActuator and update gestureEventHub attributes.
1391 */
1392 auto clickEventActuator = AceType::MakeRefPtr<ClickEventActuator>(WeakPtr<NG::GestureEventHub>(gestureEventHub));
1393 gestureEventHub->clickEventActuator_ = clickEventActuator;
1394
1395 /**
1396 * @tc.steps: step3. call KeyBoardShortCutClick with event and frameNode.
1397 * @tc.expected: retFlag is false.
1398 */
1399 KeyEvent event;
1400 bool retFlag = gestureEventHub->KeyBoardShortCutClick(event, WeakPtr<NG::FrameNode>(frameNode));
1401 EXPECT_TRUE(retFlag);
1402 }
1403
1404 /**
1405 * @tc.name: GestureEventHubTest020
1406 * @tc.desc: taskScheduler of Test StartDragTaskForWeb were true branches
1407 * @tc.type: FUNC
1408 */
1409 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest020, TestSize.Level1)
1410 {
1411 /**
1412 * @tc.steps: step1. Create GestureEventHub.
1413 * @tc.expected: gestureEventHub is not null.
1414 */
1415 auto frameNode = FrameNode::CreateFrameNode("myButton", 102, AceType::MakeRefPtr<Pattern>());
1416 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1417 ASSERT_NE(guestureEventHub, nullptr);
1418
1419 /**
1420 * @tc.steps: step2. updates event and pipeline attributes.
1421 */
1422 auto event = guestureEventHub->eventHub_.Upgrade();
1423 event->host_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
1424
1425 auto pipeline = PipelineContext::GetCurrentContext();
1426 EXPECT_TRUE(pipeline);
1427
1428 /**
1429 * @tc.steps: step3. call StartDragTaskForWeb.
1430 * @tc.expected: taskScheduler is true.
1431 */
1432 guestureEventHub->isReceivedDragGestureInfo_ = true;
1433 guestureEventHub->StartDragTaskForWeb();
1434 auto taskScheduler = pipeline->GetTaskExecutor();
1435 EXPECT_FALSE(taskScheduler);
1436 }
1437
1438 /**
1439 * @tc.name: GestureEventHubTest021
1440 * @tc.desc: Test StartLongPressActionForWeb
1441 * @tc.type: FUNC
1442 */
1443 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest021, TestSize.Level1)
1444 {
1445 /**
1446 * @tc.steps: step1. Create GestureEventHub.
1447 * @tc.expected: gestureEventHub is not null.
1448 */
1449 auto eventHub = AceType::MakeRefPtr<EventHub>();
1450 EXPECT_TRUE(eventHub);
1451 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1452 eventHub->AttachHost(frameNode);
1453 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1454 EXPECT_TRUE(gestureEventHub);
1455
1456 /**
1457 * @tc.steps: step2. construct a PipelineContext and update pipeline attributes.
1458 */
1459 auto pipeline = PipelineContext::GetCurrentContext();
1460 EXPECT_TRUE(pipeline);
1461
1462 /**
1463 * @tc.steps: step3. call StartLongPressActionForWeb.
1464 * @tc.expected: taskScheduler is false.
1465 */
1466 gestureEventHub->StartLongPressActionForWeb();
1467 auto taskScheduler = pipeline->GetTaskExecutor();
1468 EXPECT_FALSE(taskScheduler);
1469 }
1470
1471 /**
1472 * @tc.name: GestureEventHubTest022
1473 * @tc.desc: Test HandleOnDragUpdate
1474 * @tc.type: FUNC
1475 */
1476 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest022, TestSize.Level1)
1477 {
1478 /**
1479 * @tc.steps: step1. Create GestureEventHub.
1480 * @tc.expected: gestureEventHub is not null.
1481 */
1482 auto eventHub = AceType::MakeRefPtr<EventHub>();
1483 EXPECT_TRUE(eventHub);
1484 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1485 eventHub->AttachHost(frameNode);
1486 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1487 EXPECT_TRUE(gestureEventHub);
1488
1489 /**
1490 * @tc.steps: step2. construct a dragDropProxy and update gestureEventHub attributes.
1491 */
1492 constexpr int64_t PROXY_ID_NOT_FIT = 101;
1493 auto dragDropProxy = AceType::MakeRefPtr<DragDropProxy>(PROXY_ID_NOT_FIT);
1494 gestureEventHub->dragDropProxy_ = dragDropProxy;
1495
1496 /**
1497 * @tc.steps: step3. call HandleOnDragUpdate with GestureEvent.
1498 * @tc.expected: gestureEventHub->dragDropProxy_ is true.
1499 */
1500 GestureEvent info;
1501 gestureEventHub->HandleOnDragUpdate(info);
1502 EXPECT_TRUE(gestureEventHub->dragDropProxy_);
1503
1504 /**
1505 * @tc.steps: step4. call HandleOnDragUpdate with GestureEvent.
1506 * @tc.expected: gestureEventHub->IsDragged() the return value is false.
1507 */
1508 auto pipeline = PipelineContext::GetCurrentContext();
1509 auto dragDropManager = pipeline->GetDragDropManager();
1510 dragDropManager->SetIsDragged(false);
1511 gestureEventHub->HandleOnDragUpdate(info);
1512 EXPECT_FALSE(dragDropManager->IsDragged());
1513 }
1514
1515 /**
1516 * @tc.name: GestureEventHubTest024
1517 * @tc.desc: Test HandleOnDragEnd
1518 * @tc.type: FUNC
1519 */
1520 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest024, TestSize.Level1)
1521 {
1522 /**
1523 * @tc.steps: step1. Create GestureEventHub.
1524 * @tc.expected: gestureEventHub is not null.
1525 */
1526 auto eventHub = AceType::MakeRefPtr<EventHub>();
1527 EXPECT_TRUE(eventHub);
1528 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1529 eventHub->AttachHost(frameNode);
1530
1531 /**
1532 * @tc.steps: step2. construct a func and update eventHub attributes.
1533 */
__anon7f8b1fb22702(const RefPtr<OHOS::Ace::DragEvent>&, const std::string&) 1534 auto func = [](const RefPtr<OHOS::Ace::DragEvent>&, const std::string&) { return DragDropInfo(); };
1535 eventHub->SetOnDrop(func);
1536 eventHub->customerOnDrop_ = func;
1537
1538 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1539 EXPECT_TRUE(gestureEventHub);
1540
1541 auto pipeline = PipelineContext::GetCurrentContext();
1542 pipeline->SetMinPlatformVersion(12);
1543
1544 /**
1545 * @tc.steps: step3. call HandleOnDragEnd with GestureEvent.
1546 * @tc.expected: The return value of gestureEventHub->GetFrameNode() is true.
1547 */
1548 GestureEvent info;
1549 gestureEventHub->HandleOnDragEnd(info);
1550 EXPECT_TRUE(gestureEventHub->GetFrameNode());
1551
1552 constexpr int64_t PROXY_ID_NOT_FIT = 101;
1553 auto dragDropProxy = AceType::MakeRefPtr<DragDropProxy>(PROXY_ID_NOT_FIT);
1554 gestureEventHub->dragDropProxy_ = dragDropProxy;
1555 pipeline->SetMinPlatformVersion(9);
1556
1557 /**
1558 * @tc.steps: step4. call HandleOnDragEnd with GestureEvent.
1559 * @tc.expected: The return value of gestureEventHub->dragDropProxy_ is false.
1560 */
1561 gestureEventHub->HandleOnDragEnd(info);
1562 EXPECT_FALSE(gestureEventHub->dragDropProxy_);
1563 }
1564
1565 /**
1566 * @tc.name: GestureEventHubTest025
1567 * @tc.desc: Test HandleOnDragEnd
1568 * @tc.type: FUNC
1569 */
1570 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest025, TestSize.Level1)
1571 {
1572 /**
1573 * @tc.steps: step1. Create GestureEventHub.
1574 * @tc.expected: gestureEventHub is not null.
1575 */
1576 auto eventHub = AceType::MakeRefPtr<EventHub>();
1577 EXPECT_TRUE(eventHub);
1578 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::WEB_ETS_TAG, -1, AceType::MakeRefPtr<Pattern>());
1579 eventHub->AttachHost(frameNode);
1580
1581 /**
1582 * @tc.steps: step2. construct a func and update eventHub attributes.
1583 */
__anon7f8b1fb22802(const RefPtr<OHOS::Ace::DragEvent>&, const std::string&) 1584 auto func = [](const RefPtr<OHOS::Ace::DragEvent>&, const std::string&) { return DragDropInfo(); };
1585 eventHub->SetOnDrop(func);
1586 eventHub->customerOnDrop_ = func;
1587
1588 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1589 EXPECT_TRUE(gestureEventHub);
1590
1591 auto pipeline = PipelineContext::GetCurrentContext();
1592 pipeline->SetMinPlatformVersion(9);
1593
1594 constexpr int64_t PROXY_ID_NOT_FIT = 101;
1595 auto dragDropProxy = AceType::MakeRefPtr<DragDropProxy>(PROXY_ID_NOT_FIT);
1596 gestureEventHub->dragDropProxy_ = dragDropProxy;
1597
1598 /**
1599 * @tc.steps: step3. call HandleOnDragEnd with GestureEvent.
1600 * @tc.expected: gestureEventHub->dragDropProxy_ is null.
1601 */
1602 GestureEvent info;
1603 gestureEventHub->HandleOnDragEnd(info);
1604 EXPECT_FALSE(gestureEventHub->dragDropProxy_);
1605
1606 eventHub->onDrop_ = nullptr;
1607 eventHub->customerOnDrop_ = nullptr;
1608 gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1609
1610 /**
1611 * @tc.steps: step4. call HandleOnDragEnd with GestureEvent.
1612 * @tc.expected: The return value of eventHub->HasOnDrop() is false.
1613 */
1614 gestureEventHub->HandleOnDragEnd(info);
1615 EXPECT_FALSE(eventHub->HasOnDrop());
1616 }
1617
1618 /**
1619 * @tc.name: GestureEventHubTest026
1620 * @tc.desc: Test HandleOnDragCancel
1621 * @tc.type: FUNC
1622 */
1623 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest026, TestSize.Level1)
1624 {
1625 /**
1626 * @tc.steps: step1. Create GestureEventHub.
1627 * @tc.expected: gestureEventHub is not null.
1628 */
1629 auto eventHub = AceType::MakeRefPtr<EventHub>();
1630 EXPECT_TRUE(eventHub);
1631 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1632 eventHub->AttachHost(frameNode);
1633 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1634 EXPECT_TRUE(gestureEventHub);
1635
1636 /**
1637 * @tc.steps: step2. construct a dragDropProxy and update gestureEventHub attribute.
1638 */
1639 constexpr int64_t PROXY_ID_NOT_FIT = 101;
1640 auto dragDropProxy = AceType::MakeRefPtr<DragDropProxy>(PROXY_ID_NOT_FIT);
1641 gestureEventHub->dragDropProxy_ = dragDropProxy;
1642
1643 /**
1644 * @tc.steps: step3. call HandleOnDragCancel.
1645 * @tc.expected: gestureEventHub->dragDropProxy_ is null.
1646 */
1647 gestureEventHub->HandleOnDragCancel();
1648 EXPECT_FALSE(gestureEventHub->dragDropProxy_);
1649 }
1650
1651 /**
1652 * @tc.name: GestureEventHubTest027
1653 * @tc.desc: Test SetOnGestureJudgeBegin and SetOnGestureJudgeNativeBegin
1654 * @tc.type: FUNC
1655 */
1656 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest027, TestSize.Level1)
1657 {
1658 /**
1659 * @tc.steps: step1. Create GestureEventHub.
1660 * @tc.expected: gestureEventHub is not null.
1661 */
1662 auto eventHub = AceType::MakeRefPtr<EventHub>();
1663 EXPECT_TRUE(eventHub);
1664 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1665 eventHub->AttachHost(frameNode);
1666 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1667 EXPECT_TRUE(gestureEventHub);
1668
1669 /**
1670 * @tc.steps: step2. construct a gestureJudgeFunc.
1671 */
1672 auto gestureJudgeFunc = [](const RefPtr<GestureInfo>& gestureInfo,
__anon7f8b1fb22902(const RefPtr<GestureInfo>& gestureInfo, const std::shared_ptr<BaseGestureEvent>&) 1673 const std::shared_ptr<BaseGestureEvent>&) -> GestureJudgeResult {
1674 return GestureJudgeResult(1);
1675 };
1676
1677 /**
1678 * @tc.steps: step3. call SetOnGestureJudgeBegin with gestureJudgeFunc.
1679 * @tc.expected: gestureEventHub->gestureJudgeFunc_ is not null.
1680 */
1681 gestureEventHub->SetOnGestureJudgeBegin(gestureJudgeFunc);
1682 EXPECT_TRUE(gestureEventHub->gestureJudgeFunc_);
1683
1684 /**
1685 * @tc.steps: step4. call SetOnGestureJudgeNativeBegin with gestureJudgeFunc.
1686 * @tc.expected: gestureEventHub->gestureJudgeNativeFunc_ is not null.
1687 */
1688 gestureEventHub->SetOnGestureJudgeNativeBegin(gestureJudgeFunc);
1689 EXPECT_TRUE(gestureEventHub->gestureJudgeNativeFunc_);
1690 }
1691
1692 /**
1693 * @tc.name: GestureEventHubTest028
1694 * @tc.desc: Test IsAccessibilityClickable and IsAccessibilityLongClickable
1695 * @tc.type: FUNC
1696 */
1697 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest028, TestSize.Level1)
1698 {
1699 /**
1700 * @tc.steps: step1. Create GestureEventHub.
1701 * @tc.expected: gestureEventHub is not null.
1702 */
1703 auto eventHub = AceType::MakeRefPtr<EventHub>();
1704 EXPECT_TRUE(eventHub);
1705 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1706 eventHub->AttachHost(frameNode);
1707 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1708 EXPECT_TRUE(gestureEventHub);
1709
1710 /**
1711 * @tc.steps: step2. Updated properties for gestureEventHub.
1712 */
1713 auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>(DOUBLE_FINGERS, FINGERS);
1714 gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
1715
1716 /**
1717 * @tc.steps: step3. call IsAccessibilityClickable.
1718 * @tc.expected: retFlag is false.
1719 */
1720 bool retFlag = gestureEventHub->IsAccessibilityClickable();
1721 EXPECT_FALSE(retFlag);
1722
1723 /**
1724 * @tc.steps: step3. call IsAccessibilityLongClickable.
1725 * @tc.expected: retFlag is false.
1726 */
1727 retFlag = gestureEventHub->IsAccessibilityLongClickable();
1728 EXPECT_FALSE(retFlag);
1729 }
1730
1731 /**
1732 * @tc.name: GestureEventHubTest029
1733 * @tc.desc: Test GetHitTestModeStr
1734 * @tc.type: FUNC
1735 */
1736 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest029, TestSize.Level1)
1737 {
1738 /**
1739 * @tc.steps: step1. Create GestureEventHub.
1740 * @tc.expected: gestureEventHub is not null.
1741 */
1742 auto eventHub = AceType::MakeRefPtr<EventHub>();
1743 EXPECT_TRUE(eventHub);
1744 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1745 eventHub->AttachHost(frameNode);
1746 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1747 EXPECT_TRUE(gestureEventHub);
1748
1749 /**
1750 * @tc.steps: step2. call GetHitTestModeStr with hitTestMode_ == -1.
1751 * @tc.expected: retStr is equal to "HitTestMode.Default".
1752 */
1753 gestureEventHub->SetHitTestMode(HitTestMode(-1));
1754 std::string retStr = GestureEventHub::GetHitTestModeStr(gestureEventHub);
1755 EXPECT_EQ(retStr, "HitTestMode.Default");
1756
1757 /**
1758 * @tc.steps: step3. call GetHitTestModeStr with hitTestMode_ == 4.
1759 * @tc.expected: retStr is equal to "HitTestMode.Default".
1760 */
1761 gestureEventHub->SetHitTestMode(HitTestMode(4));
1762 retStr = GestureEventHub::GetHitTestModeStr(gestureEventHub);
1763 EXPECT_EQ(retStr, "HitTestMode.Default");
1764 }
1765
1766 /**
1767 * @tc.name: GestureEventHubTest030
1768 * @tc.desc: Test ActClick
1769 * @tc.type: FUNC
1770 */
1771 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest030, TestSize.Level1)
1772 {
1773 /**
1774 * @tc.steps: step1. Create GestureEventHub.
1775 * @tc.expected: gestureEventHub is not null.
1776 */
1777 auto eventHub = AceType::MakeRefPtr<EventHub>();
1778 EXPECT_TRUE(eventHub);
1779 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1780 eventHub->AttachHost(frameNode);
1781 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1782 EXPECT_TRUE(gestureEventHub);
1783
1784 /**
1785 * @tc.steps: step2. Updated properties for gestureEventHub.
1786 */
1787 auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>(DOUBLE_FINGERS, CLICK_COUNTS);
1788 gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
1789
1790 /**
1791 * @tc.steps: step3. call ActClick.
1792 * @tc.expected: retFlag is false.
1793 */
1794 bool retFlag = gestureEventHub->ActClick();
1795 EXPECT_FALSE(retFlag);
1796 }
1797
1798 /**
1799 * @tc.name: GestureEventHubTest031
1800 * @tc.desc: Test UpdateGestureHierarchy
1801 * @tc.type: FUNC
1802 */
1803 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest031, TestSize.Level1)
1804 {
1805 /**
1806 * @tc.steps: step1. Create GestureEventHub.
1807 * @tc.expected: gestureEventHub is not null.
1808 */
1809 auto eventHub = AceType::MakeRefPtr<EventHub>();
1810 ASSERT_NE(eventHub, nullptr);
1811 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1812 ASSERT_NE(frameNode, nullptr);
1813 eventHub->AttachHost(frameNode);
1814 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1815 ASSERT_NE(gestureEventHub, nullptr);
1816
1817 /**
1818 * @tc.steps: step2. Updated properties for gestureEventHub.
1819 */
1820 gestureEventHub->recreateGesture_ = true;
1821 auto tapGesture = AceType::MakeRefPtr<TapGesture>(FINGERS, 1);
1822 gestureEventHub->gestures_.emplace_back(tapGesture);
1823 auto longPressRecognizer = AceType::MakeRefPtr<LongPressRecognizer>(1, 1, false);
1824 gestureEventHub->gestureHierarchy_.emplace_back(longPressRecognizer);
1825 gestureEventHub->UpdateGestureHierarchy();
1826
1827 /**
1828 * @tc.steps: step3. call UpdateGestureHierarchy.
1829 * @tc.expected: gestureHierarchy_ has one elements.
1830 */
1831 auto sizeGestureHierarchy = static_cast<int32_t>(gestureEventHub->gestureHierarchy_.size());
1832 EXPECT_EQ(sizeGestureHierarchy, 1);
1833 }
1834
1835 /**
1836 * @tc.name: ResetDragActionForWeb001
1837 * @tc.desc: Test ResetDragActionForWeb
1838 * @tc.type: FUNC
1839 */
1840 HWTEST_F(GestureEventHubTestNg, ResetDragActionForWeb001, TestSize.Level1)
1841 {
1842 auto frameNode = FrameNode::CreateFrameNode("myButton", 102, AceType::MakeRefPtr<Pattern>());
1843 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1844 ASSERT_NE(guestureEventHub, nullptr);
1845 guestureEventHub->ResetDragActionForWeb();
1846 EXPECT_EQ(guestureEventHub->isReceivedDragGestureInfo_, false);
1847 }
1848
1849 /**
1850 * @tc.name: ResetDragActionForWeb001
1851 * @tc.desc: Test ResetDragActionForWeb
1852 * @tc.type: FUNC
1853 */
1854 HWTEST_F(GestureEventHubTestNg, OnDragStart001, TestSize.Level1)
1855 {
1856 auto frameNode = FrameNode::CreateFrameNode("myButton", 101, AceType::MakeRefPtr<Pattern>());
1857 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1858 ASSERT_NE(guestureEventHub, nullptr);
1859 auto eventHub = guestureEventHub->eventHub_.Upgrade();
1860 GestureEvent info;
1861 auto pipline = PipelineContext::GetCurrentContext();
1862 auto EventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1863 EXPECT_TRUE(EventHub);
1864 auto frameNodeOfEvent = EventHub->GetFrameNode();
1865 EXPECT_TRUE(frameNodeOfEvent);
1866 RefPtr<OHOS::Ace::DragEvent> event = AceType::MakeRefPtr<OHOS::Ace::DragEvent>();
1867 auto unifiedData = AceType::MakeRefPtr<MockUnifiedData>();
1868 event->SetData(unifiedData);
1869 RefPtr<UINode> customNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1870 DragDropInfo dragDropInfo;
1871 dragDropInfo.customNode = customNode;
1872 event->SetResult(DragRet::DRAG_FAIL);
1873 guestureEventHub->OnDragStart(info, pipline, frameNode, dragDropInfo, event);
1874 event->SetResult(DragRet::DRAG_CANCEL);
1875 guestureEventHub->OnDragStart(info, pipline, frameNode, dragDropInfo, event);
1876 EXPECT_TRUE(EventHub->dragDropProxy_ == false);
1877 }
1878
1879 /**
1880 * @tc.name: SetMouseDragGatherPixelMaps001
1881 * @tc.desc: Test SetMouseDragGatherPixelMaps
1882 * @tc.type: FUNC
1883 */
1884 HWTEST_F(GestureEventHubTestNg, SetMouseDragGatherPixelMaps001, TestSize.Level1)
1885 {
1886 auto frameNode = FrameNode::CreateFrameNode("myButton", 101, AceType::MakeRefPtr<Pattern>());
1887 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1888 ASSERT_NE(guestureEventHub, nullptr);
1889 auto eventHub = guestureEventHub->eventHub_.Upgrade();
1890 guestureEventHub->SetMouseDragGatherPixelMaps();
1891 guestureEventHub->SetNotMouseDragGatherPixelMaps();
1892 EXPECT_NE(PipelineContext::GetCurrentContext(), nullptr);
1893 }
1894
1895 /**
1896 * @tc.name: IsTextCategoryComponent001
1897 * @tc.desc: Test IsTextCategoryComponent
1898 * @tc.type: FUNC
1899 */
1900 HWTEST_F(GestureEventHubTestNg, IsTextCategoryComponent001, TestSize.Level1)
1901 {
1902 auto frameNode = FrameNode::CreateFrameNode("myButton", 101, AceType::MakeRefPtr<Pattern>());
1903 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1904 string frameTag = V2::TEXTAREA_ETS_TAG;
1905 bool result = guestureEventHub->IsTextCategoryComponent(frameTag);
1906 EXPECT_TRUE(result);
1907 frameTag = V2::TEXT_ETS_TAG;
1908 result = guestureEventHub->IsTextCategoryComponent(frameTag);
1909 EXPECT_TRUE(result);
1910 frameTag = V2::TEXTINPUT_ETS_TAG;
1911 result = guestureEventHub->IsTextCategoryComponent(frameTag);
1912 EXPECT_TRUE(result);
1913 frameTag = V2::SEARCH_Field_ETS_TAG;
1914 result = guestureEventHub->IsTextCategoryComponent(frameTag);
1915 EXPECT_TRUE(result);
1916 frameTag = V2::RICH_EDITOR_ETS_TAG;
1917 result = guestureEventHub->IsTextCategoryComponent(frameTag);
1918 EXPECT_TRUE(result);
1919 frameTag = "";
1920 result = guestureEventHub->IsTextCategoryComponent(frameTag);
1921 EXPECT_FALSE(result);
1922 }
1923
1924 /**
1925 * @tc.name: SetResponseRegion001
1926 * @tc.desc: Test SetResponseRegion
1927 * @tc.type: FUNC
1928 */
1929 HWTEST_F(GestureEventHubTestNg, SetResponseRegion001, TestSize.Level1)
1930 {
1931 auto frameNode = FrameNode::CreateFrameNode("myButton", 101, AceType::MakeRefPtr<Pattern>());
1932 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1933 std::vector<DimensionRect> responseRegion;
1934 guestureEventHub->SetResponseRegion(responseRegion);
1935 responseRegion.push_back(DimensionRect());
1936 int32_t callbackInfo = 0;
__anon7f8b1fb22a02(const std::vector<DimensionRect>& ) 1937 guestureEventHub->SetResponseRegionFunc([&callbackInfo](const std::vector<DimensionRect>& /*reponseRegion*/) {
1938 callbackInfo = 1;
1939 });
1940 guestureEventHub->SetResponseRegion(responseRegion);
1941 EXPECT_TRUE(guestureEventHub->isResponseRegion_);
1942 }
1943
1944 /**
1945 * @tc.name: RemoveLastResponseRect001
1946 * @tc.desc: Test RemoveLastResponseRect
1947 * @tc.type: FUNC
1948 */
1949 HWTEST_F(GestureEventHubTestNg, RemoveLastResponseRect001, TestSize.Level1)
1950 {
1951 auto frameNode = FrameNode::CreateFrameNode("myButton", 101, AceType::MakeRefPtr<Pattern>());
1952 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1953 std::vector<DimensionRect> responseRegion;
1954 guestureEventHub->RemoveLastResponseRect();
1955 responseRegion.push_back(DimensionRect());
1956 responseRegion.push_back(DimensionRect());
1957 guestureEventHub->SetResponseRegion(responseRegion);
1958 guestureEventHub->RemoveLastResponseRect();
1959 int32_t callbackInfo = 0;
__anon7f8b1fb22b02(const std::vector<DimensionRect>& ) 1960 guestureEventHub->SetResponseRegionFunc([&callbackInfo](const std::vector<DimensionRect>& /*reponseRegion*/) {
1961 callbackInfo = 1;
1962 });
1963 guestureEventHub->RemoveLastResponseRect();
1964 EXPECT_FALSE(guestureEventHub->isResponseRegion_);
1965 }
1966
1967 /**
1968 * @tc.name: SetJSFrameNodeOnTouchEvent001
1969 * @tc.desc: Test SetJSFrameNodeOnTouchEvent
1970 * @tc.type: FUNC
1971 */
1972 HWTEST_F(GestureEventHubTestNg, SetJSFrameNodeOnTouchEvent001, TestSize.Level1)
1973 {
1974 auto frameNode = FrameNode::CreateFrameNode("myButton", 101, AceType::MakeRefPtr<Pattern>());
1975 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1976 guestureEventHub->touchEventActuator_ = nullptr;
__anon7f8b1fb22c02(TouchEventInfo& info) 1977 TouchEventFunc touchEventFunc = [](TouchEventInfo& info) {};
1978 guestureEventHub->SetJSFrameNodeOnTouchEvent(std::move(touchEventFunc));
1979 EXPECT_NE(guestureEventHub->touchEventActuator_, nullptr);
1980 }
1981
1982 /**
1983 * @tc.name: SetDropAnimationTest
1984 * @tc.desc: Test SetDropAnimation function.
1985 * @tc.type: FUNC
1986 */
1987 HWTEST_F(GestureEventHubTestNg, SetDropAnimation, TestSize.Level1)
1988 {
__anon7f8b1fb22d02() 1989 auto dropAnimationFun = []() {};
1990 RefPtr<OHOS::Ace::DragEvent> dragEvent = AceType::MakeRefPtr<OHOS::Ace::DragEvent>();
1991 EXPECT_FALSE(dragEvent->HasDropAnimation());
1992 dragEvent->SetDropAnimation(std::move(dropAnimationFun));
1993 EXPECT_TRUE(dragEvent->HasDropAnimation());
1994 }
1995
1996 /**
1997 * @tc.name: ExecuteDropAnimation
1998 * @tc.desc: Test ExecuteDropAnimation function.
1999 * @tc.type: FUNC
2000 */
2001 HWTEST_F(GestureEventHubTestNg, ExecuteDropAnimation, TestSize.Level1)
2002 {
2003 bool isExecuted = false;
__anon7f8b1fb22e02() 2004 auto dropAnimationFun = [&isExecuted]() { isExecuted = true; };
2005 RefPtr<OHOS::Ace::DragEvent> dragEvent = AceType::MakeRefPtr<OHOS::Ace::DragEvent>();
2006 EXPECT_FALSE(isExecuted);
2007 dragEvent->SetDropAnimation(std::move(dropAnimationFun));
2008 dragEvent->ExecuteDropAnimation();
2009 EXPECT_TRUE(isExecuted);
2010 }
2011
2012 /**
2013 * @tc.name: StartVibratorByDrag001
2014 * @tc.desc: Test StartVibratorByDrag
2015 * @tc.type: FUNC
2016 */
2017 HWTEST_F(GestureEventHubTestNg, StartVibratorByDrag001, TestSize.Level1)
2018 {
2019 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::WEB_ETS_TAG, -1, AceType::MakeRefPtr<Pattern>());
2020 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
2021 NG::DragPreviewOption previewOption;
2022 previewOption.enableHapticFeedback = true;
2023 frameNode->SetDragPreviewOptions(previewOption, false);
2024 DragDropGlobalController::GetInstance().UpdateDragFilterShowingStatus(true);
2025 guestureEventHub->StartVibratorByDrag(frameNode);
2026 bool dragFilter = DragDropGlobalController::GetInstance().IsDragFilterShowing();
2027 EXPECT_FALSE(dragFilter);
2028 }
2029
2030 /**
2031 * @tc.name: StartVibratorByDrag002
2032 * @tc.desc: Test StartVibratorByDrag
2033 * @tc.type: FUNC
2034 */
2035 HWTEST_F(GestureEventHubTestNg, StartVibratorByDrag002, TestSize.Level1)
2036 {
2037 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::RICH_EDITOR_ETS_TAG, -1, AceType::MakeRefPtr<Pattern>());
2038 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
2039 NG::DragPreviewOption previewOption;
2040 previewOption.enableHapticFeedback = true;
2041 frameNode->SetDragPreviewOptions(previewOption, false);
2042 DragDropGlobalController::GetInstance().UpdateDragFilterShowingStatus(true);
2043 guestureEventHub->StartVibratorByDrag(frameNode);
2044 bool dragFilter = DragDropGlobalController::GetInstance().IsDragFilterShowing();
2045 EXPECT_FALSE(dragFilter);
2046 }
2047
2048 /**
2049 * @tc.name: GetGestureEventInfo
2050 * @tc.desc: Test GetGestureEventInfo and GetClickInfo
2051 * @tc.type: FUNC
2052 */
2053 HWTEST_F(GestureEventHubTestNg, GetGestureEventInfo001, TestSize.Level1)
2054 {
2055 /**
2056 * @tc.steps: step1. Create GestureEventHub.
2057 * @tc.expected: gestureEventHub is not null.
2058 */
2059 auto eventHub = AceType::MakeRefPtr<EventHub>();
2060 EXPECT_TRUE(eventHub);
2061 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
2062 eventHub->AttachHost(frameNode);
2063 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
2064 EXPECT_TRUE(gestureEventHub);
2065
2066 /**
2067 * @tc.steps: step2. construct a clickEventActuator
2068 */
__anon7f8b1fb22f02(GestureEvent& info) 2069 auto clickCallback = [](GestureEvent& info) {};
2070 auto clickEvent = AceType::MakeRefPtr<ClickEvent>(std::move(clickCallback));
2071 gestureEventHub->AddClickEvent(clickEvent);
2072 auto eventInfo = gestureEventHub->GetGestureEventInfo();
2073 auto clickInfo = gestureEventHub->GetClickInfo();
2074 EXPECT_EQ(eventInfo.GetPointerEventId(), 0);
2075 EXPECT_EQ(clickInfo.GetFingerId(), 0);
2076 /**
2077 * @tc.steps: step3. construct a clickEventActuator null
2078 */
2079 gestureEventHub->clickEventActuator_ = nullptr;
2080 eventInfo = gestureEventHub->GetGestureEventInfo();
2081 clickInfo = gestureEventHub->GetClickInfo();
2082 EXPECT_EQ(eventInfo.GetPointerEventId(), 0);
2083 EXPECT_EQ(clickInfo.GetFingerId(), -1);
2084 }
2085
2086 /**
2087 * @tc.name: CheckLastInnerRecognizerCollected001
2088 * @tc.desc: Test CheckLastInnerRecognizerCollected
2089 * @tc.type: FUNC
2090 */
2091 HWTEST_F(GestureEventHubTestNg, CheckLastInnerRecognizerCollected001, TestSize.Level1)
2092 {
2093 auto eventHub = AceType::MakeRefPtr<EventHub>();
2094 EXPECT_TRUE(eventHub);
2095 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
2096 eventHub->AttachHost(frameNode);
2097 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
2098 EXPECT_TRUE(gestureEventHub);
2099 auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>();
2100 clickRecognizer->node_ = frameNode;
2101 std::vector<RefPtr<NGGestureRecognizer>> subRecognizers = { clickRecognizer };
2102 auto parallelRecognizer = AceType::MakeRefPtr<ParallelRecognizer>(subRecognizers);
2103 gestureEventHub->externalParallelRecognizer_.clear();
2104 gestureEventHub->externalParallelRecognizer_.push_back(parallelRecognizer);
2105 auto res = gestureEventHub->CheckLastInnerRecognizerCollected(GesturePriority::Parallel, PARALLEL_INDEX_1);
2106 EXPECT_FALSE(res);
2107 }
2108
2109 /**
2110 * @tc.name: CheckLastInnerRecognizerCollected002
2111 * @tc.desc: Test CheckLastInnerRecognizerCollected
2112 * @tc.type: FUNC
2113 */
2114 HWTEST_F(GestureEventHubTestNg, CheckLastInnerRecognizerCollected002, TestSize.Level1)
2115 {
2116 auto eventHub = AceType::MakeRefPtr<EventHub>();
2117 EXPECT_TRUE(eventHub);
2118 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
2119 eventHub->AttachHost(frameNode);
2120 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
2121 EXPECT_TRUE(gestureEventHub);
2122 auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>();
2123 clickRecognizer->node_ = frameNode;
2124 std::vector<RefPtr<NGGestureRecognizer>> subRecognizers = { clickRecognizer };
2125 auto parallelRecognizer = AceType::MakeRefPtr<ParallelRecognizer>(subRecognizers);
2126 gestureEventHub->externalParallelRecognizer_.clear();
2127 gestureEventHub->externalParallelRecognizer_.push_back(parallelRecognizer);
2128 auto res = gestureEventHub->CheckLastInnerRecognizerCollected(GesturePriority::Parallel, PARALLEL_INDEX_2);
2129 EXPECT_TRUE(res);
2130 }
2131
2132 /**
2133 * @tc.name: CheckLastInnerRecognizerCollected003
2134 * @tc.desc: Test CheckLastInnerRecognizerCollected
2135 * @tc.type: FUNC
2136 */
2137 HWTEST_F(GestureEventHubTestNg, CheckLastInnerRecognizerCollected003, TestSize.Level1)
2138 {
2139 auto eventHub = AceType::MakeRefPtr<EventHub>();
2140 EXPECT_TRUE(eventHub);
2141 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
2142 eventHub->AttachHost(frameNode);
2143 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
2144 EXPECT_TRUE(gestureEventHub);
2145 auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>();
2146 clickRecognizer->node_ = frameNode;
2147 std::vector<RefPtr<NGGestureRecognizer>> subRecognizers = { clickRecognizer };
2148 auto parallelRecognizer = AceType::MakeRefPtr<ExclusiveRecognizer>(subRecognizers);
2149 gestureEventHub->externalExclusiveRecognizer_.clear();
2150 gestureEventHub->externalExclusiveRecognizer_.push_back(parallelRecognizer);
2151 auto res = gestureEventHub->CheckLastInnerRecognizerCollected(GesturePriority::High, PARALLEL_INDEX_1);
2152 EXPECT_FALSE(res);
2153 }
2154
2155 /**
2156 * @tc.name: CheckLastInnerRecognizerCollected004
2157 * @tc.desc: Test CheckLastInnerRecognizerCollected
2158 * @tc.type: FUNC
2159 */
2160 HWTEST_F(GestureEventHubTestNg, CheckLastInnerRecognizerCollected004, TestSize.Level1)
2161 {
2162 auto eventHub = AceType::MakeRefPtr<EventHub>();
2163 EXPECT_TRUE(eventHub);
2164 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
2165 eventHub->AttachHost(frameNode);
2166 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
2167 EXPECT_TRUE(gestureEventHub);
2168 auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>();
2169 clickRecognizer->node_ = frameNode;
2170 std::vector<RefPtr<NGGestureRecognizer>> subRecognizers = { clickRecognizer };
2171 auto parallelRecognizer = AceType::MakeRefPtr<ExclusiveRecognizer>(subRecognizers);
2172 gestureEventHub->externalExclusiveRecognizer_.clear();
2173 gestureEventHub->externalExclusiveRecognizer_.push_back(parallelRecognizer);
2174 auto res = gestureEventHub->CheckLastInnerRecognizerCollected(GesturePriority::High, PARALLEL_INDEX_2);
2175 EXPECT_TRUE(res);
2176 }
2177
2178 /**
2179 * @tc.name: CheckLastInnerRecognizerCollected005
2180 * @tc.desc: Test CheckLastInnerRecognizerCollected
2181 * @tc.type: FUNC
2182 */
2183 HWTEST_F(GestureEventHubTestNg, CheckLastInnerRecognizerCollected005, TestSize.Level1)
2184 {
2185 auto eventHub = AceType::MakeRefPtr<EventHub>();
2186 EXPECT_TRUE(eventHub);
2187 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
2188 eventHub->AttachHost(frameNode);
2189 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
2190 EXPECT_TRUE(gestureEventHub);
2191 auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>();
2192 std::vector<RefPtr<NGGestureRecognizer>> subRecognizers = { clickRecognizer };
2193 auto parallelRecognizer = AceType::MakeRefPtr<ExclusiveRecognizer>(subRecognizers);
2194 gestureEventHub->externalExclusiveRecognizer_.clear();
2195 gestureEventHub->externalExclusiveRecognizer_.push_back(parallelRecognizer);
2196 auto res = gestureEventHub->CheckLastInnerRecognizerCollected(GesturePriority::High, PARALLEL_INDEX_2);
2197 EXPECT_FALSE(res);
2198 }
2199
2200 /**
2201 * @tc.name: CheckLastInnerRecognizerCollected006
2202 * @tc.desc: Test CheckLastInnerRecognizerCollected
2203 * @tc.type: FUNC
2204 */
2205 HWTEST_F(GestureEventHubTestNg, CheckLastInnerRecognizerCollected006, TestSize.Level1)
2206 {
2207 auto eventHub = AceType::MakeRefPtr<EventHub>();
2208 EXPECT_TRUE(eventHub);
2209 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
2210 eventHub->AttachHost(frameNode);
2211 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
2212 EXPECT_TRUE(gestureEventHub);
2213 auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>();
2214 clickRecognizer->SetIsSystemGesture(true);
2215 auto groupClickRecognizerOne = AceType::MakeRefPtr<ClickRecognizer>();
2216 auto groupClickRecognizerTwo = AceType::MakeRefPtr<ClickRecognizer>();
2217 std::vector<RefPtr<NGGestureRecognizer>> groupSubRecognizers = { groupClickRecognizerOne, groupClickRecognizerTwo };
2218 auto childExclusiveRecognizer = AceType::MakeRefPtr<ExclusiveRecognizer>(groupSubRecognizers);
2219 std::vector<RefPtr<NGGestureRecognizer>> subRecognizers = { nullptr, childExclusiveRecognizer, clickRecognizer };
2220 auto exclusiveRecognizer = AceType::MakeRefPtr<ExclusiveRecognizer>(subRecognizers);
2221 exclusiveRecognizer->recognizers_.emplace_front(nullptr);
2222 gestureEventHub->externalExclusiveRecognizer_.clear();
2223 gestureEventHub->externalExclusiveRecognizer_.push_back(exclusiveRecognizer);
2224 auto res = gestureEventHub->CheckLastInnerRecognizerCollected(GesturePriority::High, PARALLEL_INDEX_2);
2225 EXPECT_FALSE(res);
2226 }
2227
2228 /**
2229 * @tc.name: CheckLastInnerRecognizerCollected007
2230 * @tc.desc: Test CheckLastInnerRecognizerCollected
2231 * @tc.type: FUNC
2232 */
2233 HWTEST_F(GestureEventHubTestNg, CheckLastInnerRecognizerCollected007, TestSize.Level1)
2234 {
2235 auto eventHub = AceType::MakeRefPtr<EventHub>();
2236 EXPECT_TRUE(eventHub);
2237 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
2238 eventHub->AttachHost(frameNode);
2239 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
2240 EXPECT_TRUE(gestureEventHub);
2241 auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>();
2242 clickRecognizer->SetIsSystemGesture(true);
2243 auto groupClickRecognizerOne = AceType::MakeRefPtr<ClickRecognizer>();
2244 groupClickRecognizerOne->SetIsSystemGesture(true);
2245 auto groupClickRecognizerTwo = AceType::MakeRefPtr<ClickRecognizer>();
2246 std::vector<RefPtr<NGGestureRecognizer>> groupSubRecognizers = { groupClickRecognizerOne, groupClickRecognizerTwo };
2247 auto childExclusiveRecognizer = AceType::MakeRefPtr<ExclusiveRecognizer>(groupSubRecognizers);
2248 auto clickRecognizerTwo = AceType::MakeRefPtr<ClickRecognizer>();
2249 clickRecognizerTwo->node_ = frameNode;
2250 std::vector<RefPtr<NGGestureRecognizer>> subRecognizers = { childExclusiveRecognizer, clickRecognizer,
2251 clickRecognizerTwo };
2252 auto exclusiveRecognizer = AceType::MakeRefPtr<ExclusiveRecognizer>(subRecognizers);
2253 gestureEventHub->externalExclusiveRecognizer_.clear();
2254 gestureEventHub->externalExclusiveRecognizer_.push_back(exclusiveRecognizer);
2255 auto res = gestureEventHub->CheckLastInnerRecognizerCollected(GesturePriority::High, PARALLEL_INDEX_2);
2256 EXPECT_FALSE(res);
2257 }
2258
2259 /**
2260 * @tc.name: CheckLastInnerRecognizerCollected008
2261 * @tc.desc: Test CheckLastInnerRecognizerCollected
2262 * @tc.type: FUNC
2263 */
2264 HWTEST_F(GestureEventHubTestNg, CheckLastInnerRecognizerCollected008, TestSize.Level1)
2265 {
2266 auto eventHub = AceType::MakeRefPtr<EventHub>();
2267 EXPECT_TRUE(eventHub);
2268 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
2269 eventHub->AttachHost(frameNode);
2270 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
2271 EXPECT_TRUE(gestureEventHub);
2272 auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>();
2273 clickRecognizer->SetIsSystemGesture(true);
2274 std::vector<RefPtr<NGGestureRecognizer>> subRecognizers = { clickRecognizer };
2275 auto parallelRecognizer = AceType::MakeRefPtr<ParallelRecognizer>(subRecognizers);
2276 gestureEventHub->externalParallelRecognizer_.clear();
2277 gestureEventHub->externalParallelRecognizer_.push_back(parallelRecognizer);
2278 auto res = gestureEventHub->CheckLastInnerRecognizerCollected(GesturePriority::Parallel, PARALLEL_INDEX_2);
2279 EXPECT_FALSE(res);
2280 }
2281
2282 /**
2283 * @tc.name: CheckLastInnerRecognizerCollected009
2284 * @tc.desc: Test CheckLastInnerRecognizerCollected
2285 * @tc.type: FUNC
2286 */
2287 HWTEST_F(GestureEventHubTestNg, CheckLastInnerRecognizerCollected009, TestSize.Level1)
2288 {
2289 auto eventHub = AceType::MakeRefPtr<EventHub>();
2290 EXPECT_TRUE(eventHub);
2291 auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
2292 eventHub->AttachHost(frameNode);
2293 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
2294 EXPECT_TRUE(gestureEventHub);
2295 auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>();
2296 clickRecognizer->SetIsSystemGesture(true);
2297 auto clickRecognizerTwo = AceType::MakeRefPtr<ClickRecognizer>();
2298 clickRecognizerTwo->node_ = frameNode;
2299 std::vector<RefPtr<NGGestureRecognizer>> subRecognizers = { clickRecognizer, clickRecognizerTwo };
2300 auto parallelRecognizer = AceType::MakeRefPtr<ParallelRecognizer>(subRecognizers);
2301 gestureEventHub->externalParallelRecognizer_.clear();
2302 gestureEventHub->externalParallelRecognizer_.push_back(parallelRecognizer);
2303 auto res = gestureEventHub->CheckLastInnerRecognizerCollected(GesturePriority::Parallel, PARALLEL_INDEX_2);
2304 EXPECT_FALSE(res);
2305 }
2306
2307 /**
2308 * @tc.name: GestureEventHubSetPanEvent001
2309 * @tc.desc: Verify SetPanEvent (Dimension version) with new actuator creation
2310 * @tc.type: FUNC
2311 */
2312 HWTEST_F(GestureEventHubTestNg, GestureEventHubSetPanEvent001, TestSize.Level1)
2313 {
2314 auto eventHub = AceType::MakeRefPtr<EventHub>();
2315 ASSERT_NE(eventHub, nullptr);
2316 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
2317 ASSERT_NE(gestureEventHub, nullptr);
2318
2319 RefPtr<PanEvent> panEvent = AceType::MakeRefPtr<PanEvent>(
__anon7f8b1fb23302() 2320 [](GestureEvent& /*info*/) {}, [](GestureEvent& /*info*/) {}, [](GestureEvent& /*info*/) {}, []() {});
2321
2322 PanDirection direction;
2323 direction.type = PanDirection::ALL;
2324
2325 gestureEventHub->SetPanEvent(panEvent, direction, 1, 10.0_px); // 10.0_px is initial distance threshold
2326 auto panEventActuator = gestureEventHub->panEventActuator_;
2327 ASSERT_NE(panEventActuator, nullptr);
2328 EXPECT_EQ(panEventActuator->userCallback_, panEvent);
2329 }
2330
2331 /**
2332 * @tc.name: GestureEventHubSetPanEvent002
2333 * @tc.desc: Verify SetPanEvent when actuator already exists (Dimension version)
2334 * @tc.type: FUNC
2335 */
2336 HWTEST_F(GestureEventHubTestNg, GestureEventHubSetPanEvent002, TestSize.Level1)
2337 {
2338 auto eventHub = AceType::MakeRefPtr<EventHub>();
2339 ASSERT_NE(eventHub, nullptr);
2340 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
2341 ASSERT_NE(gestureEventHub, nullptr);
2342
2343 auto initialEvent = AceType::MakeRefPtr<PanEvent>(
__anon7f8b1fb23702() 2344 [](GestureEvent& /*info*/) {}, [](GestureEvent& /*info*/) {}, [](GestureEvent& /*info*/) {}, []() {});
2345 PanDirection direction { PanDirection::VERTICAL };
2346 gestureEventHub->SetPanEvent(initialEvent, direction, 1, 10.0_px); // 10.0_px is initial distance threshold
2347
2348 auto newPanEvent = AceType::MakeRefPtr<PanEvent>(
__anon7f8b1fb23802(GestureEvent& ) 2349 [](GestureEvent& /*info*/) {}, [](GestureEvent& /*info*/) {}, [](GestureEvent& /*info*/) {}, []() {});
2350
2351 gestureEventHub->SetPanEvent(newPanEvent, direction, 1, 10.0_px); // 10.0_px is initial distance threshold
2352 auto panEventActuator = gestureEventHub->panEventActuator_;
2353 ASSERT_NE(panEventActuator, nullptr);
2354 EXPECT_EQ(panEventActuator->userCallback_, newPanEvent);
2355 }
2356
2357 /**
2358 * @tc.name: GestureEventHubSetPanEvent003
2359 * @tc.desc: Verify SetPanEvent (PanDistanceMap version) with new actuator creation
2360 * @tc.type: FUNC
2361 */
2362 HWTEST_F(GestureEventHubTestNg, GestureEventHubSetPanEvent003, TestSize.Level1)
2363 {
2364 auto eventHub = AceType::MakeRefPtr<EventHub>();
2365 ASSERT_NE(eventHub, nullptr);
2366 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
2367 ASSERT_NE(gestureEventHub, nullptr);
2368
2369 auto panEvent = AceType::MakeRefPtr<PanEvent>(
__anon7f8b1fb23e02(GestureEvent& ) 2370 [](GestureEvent& /*info*/) {}, [](GestureEvent& /*info*/) {}, [](GestureEvent& /*info*/) {}, []() {});
2371
2372 PanDirection direction { PanDirection::HORIZONTAL };
2373 PanDistanceMap distanceMap;
2374 distanceMap[SourceTool::FINGER] = 10.0; // 10.0 is initial distance threshold for FINGER source
2375
2376 gestureEventHub->SetPanEvent(panEvent, direction, 1, distanceMap);
2377
2378 auto panEventActuator = gestureEventHub->panEventActuator_;
2379 ASSERT_NE(panEventActuator, nullptr);
2380 EXPECT_EQ(panEventActuator->userCallback_, panEvent);
2381 }
2382
2383 /**
2384 * @tc.name: GestureEventHubSetPanEvent004
2385 * @tc.desc: Verify SetPanEvent when actuator already exists (PanDistanceMap version)
2386 * @tc.type: FUNC
2387 */
2388 HWTEST_F(GestureEventHubTestNg, GestureEventHubSetPanEvent004, TestSize.Level1)
2389 {
2390 auto eventHub = AceType::MakeRefPtr<EventHub>();
2391 ASSERT_NE(eventHub, nullptr);
2392 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
2393 ASSERT_NE(gestureEventHub, nullptr);
2394
2395 auto initialEvent = AceType::MakeRefPtr<PanEvent>(
__anon7f8b1fb24202(GestureEvent& ) 2396 [](GestureEvent& /*info*/) {}, [](GestureEvent& /*info*/) {}, [](GestureEvent& /*info*/) {}, []() {});
2397 PanDistanceMap initMap;
2398 initMap[SourceTool::FINGER] = 10.0; // 10.0 is initial distance threshold for FINGER source
2399
2400 PanDirection direction { PanDirection::ALL };
2401 gestureEventHub->SetPanEvent(initialEvent, direction, 1, initMap);
2402
2403 auto newPanEvent = AceType::MakeRefPtr<PanEvent>(
__anon7f8b1fb24602(GestureEvent& ) 2404 [](GestureEvent& /*info*/) {}, [](GestureEvent& /*info*/) {}, [](GestureEvent& /*info*/) {}, []() {});
2405 gestureEventHub->SetPanEvent(newPanEvent, direction, 1, initMap);
2406
2407 auto panEventActuator = gestureEventHub->panEventActuator_;
2408 ASSERT_NE(panEventActuator, nullptr);
2409 EXPECT_EQ(panEventActuator->userCallback_, newPanEvent);
2410 }
2411
2412 /**
2413 * @tc.name: GetDefaultPixelMapScaleTest001
2414 * @tc.desc: Test GetDefaultPixelMapScale
2415 * @tc.type: FUNC
2416 */
2417 HWTEST_F(GestureEventHubTestNg, GetDefaultPixelMapScaleTest001, TestSize.Level1)
2418 {
2419 /**
2420 * @tc.steps: step1. Create GestureEventHub and test data
2421 * @tc.expected: Return default scale when pixelMap is null
2422 */
2423 auto eventHub = AceType::MakeRefPtr<EventHub>();
2424 EXPECT_NE(eventHub, nullptr);
2425 GestureEventHub gestureHub(eventHub);
2426 GestureEvent info;
2427 info.SetInputEventType(InputEventType::AXIS);
2428
2429 float result = gestureHub.GetDefaultPixelMapScale(nullptr, info, false, nullptr);
2430 EXPECT_FLOAT_EQ(result, DEFALUT_DRAG_PPIXELMAP_SCALE);
2431 }
2432
2433 /**
2434 * @tc.name: GetDefaultPixelMapScaleTest002
2435 * @tc.desc: Test GetDefaultPixelMapScale with mouse event
2436 * @tc.type: FUNC
2437 */
2438 HWTEST_F(GestureEventHubTestNg, GetDefaultPixelMapScaleTest002, TestSize.Level1)
2439 {
2440 /**
2441 * @tc.steps: step1. Create GestureEventHub and test data
2442 * @tc.expected: Return 1.0 for mouse event regardless of other conditions
2443 */
2444 auto eventHub = AceType::MakeRefPtr<EventHub>();
2445 EXPECT_NE(eventHub, nullptr);
2446 auto frameNode = FrameNode::CreateFrameNode("test", 1, AceType::MakeRefPtr<Pattern>());
2447 EXPECT_NE(frameNode, nullptr);
2448 GestureEventHub gestureHub(eventHub);
2449 GestureEvent info;
2450 info.SetInputEventType(InputEventType::MOUSE_BUTTON);
2451
2452 auto pixelMap = AceType::MakeRefPtr<MockPixelMap>();
2453 EXPECT_CALL(*pixelMap, GetWidth()).WillRepeatedly(Return(PIXELMAP_WIDTH_LARGE));
2454 EXPECT_NE(pixelMap, nullptr);
2455 float result = gestureHub.GetDefaultPixelMapScale(frameNode, info, false, pixelMap);
2456 EXPECT_FLOAT_EQ(result, EXPECT_SCALE);
2457 }
2458
2459 /**
2460 * @tc.name: GetDefaultPixelMapScaleTest003
2461 * @tc.desc: Test GetDefaultPixelMapScale with menu show and valid preview scale
2462 * @tc.type: FUNC
2463 */
2464 HWTEST_F(GestureEventHubTestNg, GetDefaultPixelMapScaleTest003, TestSize.Level1)
2465 {
2466 auto eventHub = AceType::MakeRefPtr<EventHub>();
2467 EXPECT_NE(eventHub, nullptr);
2468 GestureEventHub gestureHub(eventHub);
2469 GestureEvent info;
2470 info.SetInputEventType(InputEventType::AXIS);
2471
2472 auto frameNode = FrameNode::CreateFrameNode("test", 1, AceType::MakeRefPtr<Pattern>());
2473 ASSERT_NE(frameNode, nullptr);
2474 auto dragPreview = frameNode->GetDragPreview();
2475 dragPreview.onlyForLifting = false;
2476 frameNode->SetDragPreview(dragPreview);
2477
2478 gestureHub.menuPreviewScale_ = PREVIEW_DOWN_SCALE;
2479
2480 auto pixelMap = AceType::MakeRefPtr<MockPixelMap>();
2481 EXPECT_CALL(*pixelMap, GetWidth()).WillRepeatedly(Return(PIXELMAP_WIDTH_LARGE));
2482
2483 float result = gestureHub.GetDefaultPixelMapScale(frameNode, info, true, pixelMap);
2484 EXPECT_FLOAT_EQ(result, PREVIEW_DOWN_SCALE);
2485 }
2486
2487 /**
2488 * @tc.name: GetDefaultPixelMapScaleTest004
2489 * @tc.desc: Test GetDefaultPixelMapScale with menu show and adjusted scale
2490 * @tc.type: FUNC
2491 */
2492 HWTEST_F(GestureEventHubTestNg, GetDefaultPixelMapScaleTest004, TestSize.Level1)
2493 {
2494 auto eventHub = AceType::MakeRefPtr<EventHub>();
2495 ASSERT_NE(eventHub, nullptr);
2496 GestureEventHub gestureHub(eventHub);
2497 GestureEvent info;
2498 info.SetInputEventType(InputEventType::AXIS);
2499
2500 auto frameNode = FrameNode::CreateFrameNode("test", 1, AceType::MakeRefPtr<Pattern>());
2501 ASSERT_NE(frameNode, nullptr);
2502 auto dragPreview = frameNode->GetDragPreview();
2503 dragPreview.onlyForLifting = false;
2504 frameNode->SetDragPreview(dragPreview);
2505
2506 gestureHub.frameNodeSize_ = SizeF(SIZE_X, SIZE_Y);
2507 gestureHub.menuPreviewScale_ = PREVIEW_UP_SCALE;
2508
2509 auto pixelMap = AceType::MakeRefPtr<MockPixelMap>();
2510 EXPECT_CALL(*pixelMap, GetWidth()).WillRepeatedly(Return(PIXELMAP_WIDTH_LARGE));
2511 EXPECT_CALL(*pixelMap, GetHeight()).WillRepeatedly(Return(PIXELMAP_HEIGHT));
2512
2513 float result = gestureHub.GetDefaultPixelMapScale(frameNode, info, true, pixelMap);
2514 EXPECT_FLOAT_EQ(result, PIXELMAP_DEFALUT_LIMIT_SCALE);
2515 }
2516
2517 /**
2518 * @tc.name: GetDefaultPixelMapScaleTest005
2519 * @tc.desc: Test GetDefaultPixelMapScale with menu not show
2520 * @tc.type: FUNC
2521 */
2522 HWTEST_F(GestureEventHubTestNg, GetDefaultPixelMapScaleTest005, TestSize.Level1)
2523 {
2524 /**
2525 * @tc.steps: step1. Create GestureEventHub and test data
2526 * @tc.expected: Return default scale when menu not show
2527 */
2528 auto eventHub = AceType::MakeRefPtr<EventHub>();
2529 EXPECT_NE(eventHub, nullptr);
2530 GestureEventHub gestureHub(eventHub);
2531 GestureEvent info;
2532 info.SetInputEventType(InputEventType::AXIS);
2533
2534 auto frameNode = FrameNode::CreateFrameNode("test", 1, AceType::MakeRefPtr<Pattern>());
2535 EXPECT_NE(frameNode, nullptr);
2536 auto dragPreview = frameNode->GetDragPreview();
2537 dragPreview.onlyForLifting = false;
2538 frameNode->SetDragPreview(dragPreview);
2539 gestureHub.frameNodeSize_ = SizeF(SIZE_X, SIZE_Y);
2540 gestureHub.menuPreviewScale_ = PREVIEW_DOWN_SCALE;
2541
2542 auto pixelMap = AceType::MakeRefPtr<MockPixelMap>();
2543 EXPECT_NE(pixelMap, nullptr);
2544 EXPECT_CALL(*pixelMap, GetWidth()).WillRepeatedly(Return(PIXELMAP_WIDTH_LARGE));
2545
2546 float result = gestureHub.GetDefaultPixelMapScale(frameNode, info, false, pixelMap);
2547 EXPECT_FLOAT_EQ(result, DEFALUT_DRAG_PPIXELMAP_SCALE);
2548 }
2549
2550 /**
2551 * @tc.name: GetDefaultPixelMapScaleTest006
2552 * @tc.desc: Test GetDefaultPixelMapScale with onlyForLifting true
2553 * @tc.type: FUNC
2554 */
2555 HWTEST_F(GestureEventHubTestNg, GetDefaultPixelMapScaleTest006, TestSize.Level1)
2556 {
2557 /**
2558 * @tc.steps: step1. Create GestureEventHub and test data
2559 * @tc.expected: Return default scale when onlyForLifting is true
2560 */
2561 auto eventHub = AceType::MakeRefPtr<EventHub>();
2562 EXPECT_NE(eventHub, nullptr);
2563 GestureEventHub gestureHub(eventHub);
2564 GestureEvent info;
2565 info.SetInputEventType(InputEventType::AXIS);
2566
2567 auto frameNode = FrameNode::CreateFrameNode("test", 1, AceType::MakeRefPtr<Pattern>());
2568 EXPECT_NE(frameNode, nullptr);
2569 auto dragPreview = frameNode->GetDragPreview();
2570 dragPreview.onlyForLifting = true;
2571 frameNode->SetDragPreview(dragPreview);
2572 gestureHub.frameNodeSize_ = SizeF(SIZE_X, SIZE_Y);
2573 gestureHub.menuPreviewScale_ = PREVIEW_DOWN_SCALE;
2574
2575 auto pixelMap = AceType::MakeRefPtr<MockPixelMap>();
2576 EXPECT_NE(pixelMap, nullptr);
2577 EXPECT_CALL(*pixelMap, GetWidth()).WillRepeatedly(Return(PIXELMAP_WIDTH_LARGE));
2578
2579 float result = gestureHub.GetDefaultPixelMapScale(frameNode, info, true, pixelMap);
2580 EXPECT_FLOAT_EQ(result, DEFALUT_DRAG_PPIXELMAP_SCALE);
2581 }
2582
2583 /**
2584 * @tc.name: GetDefaultPixelMapScaleTest007
2585 * @tc.desc: Test GetDefaultPixelMapScale with invalid menuPreviewScale_
2586 * @tc.type: FUNC
2587 */
2588 HWTEST_F(GestureEventHubTestNg, GetDefaultPixelMapScaleTest007, TestSize.Level1)
2589 {
2590 /**
2591 * @tc.steps: step1. Create GestureEventHub and test data
2592 * @tc.expected: Return default scale when menuPreviewScale_ is invalid
2593 */
2594 auto eventHub = AceType::MakeRefPtr<EventHub>();
2595 EXPECT_NE(eventHub, nullptr);
2596 GestureEventHub gestureHub(eventHub);
2597 GestureEvent info;
2598 info.SetInputEventType(InputEventType::AXIS);
2599
2600 auto frameNode = FrameNode::CreateFrameNode("test", 1, AceType::MakeRefPtr<Pattern>());
2601 EXPECT_NE(frameNode, nullptr);
2602 auto dragPreview = frameNode->GetDragPreview();
2603 dragPreview.onlyForLifting = false;
2604 frameNode->SetDragPreview(dragPreview);
2605 gestureHub.frameNodeSize_ = SizeF(SIZE_X, SIZE_Y);
2606 gestureHub.menuPreviewScale_ = PREVIEW_NEGA_SCALE;
2607 auto pixelMap = AceType::MakeRefPtr<MockPixelMap>();
2608 EXPECT_NE(pixelMap, nullptr);
2609 EXPECT_CALL(*pixelMap, GetWidth()).WillRepeatedly(Return(PIXELMAP_WIDTH_LARGE));
2610
2611 /**
2612 * @tc.steps: step2. Call the function under test
2613 */
2614 float result = gestureHub.GetDefaultPixelMapScale(frameNode, info, true, pixelMap);
2615
2616 /**
2617 * @tc.steps: step3. Verify the return value
2618 * @tc.expected: Return the default DEFALUT_DRAG_PPIXELMAP_SCALE value
2619 */
2620 EXPECT_FLOAT_EQ(result, DEFALUT_DRAG_PPIXELMAP_SCALE);
2621
2622 /**
2623 * @tc.steps: step4. Verify menuPreviewScale_ is not modified
2624 * @tc.expected: menuPreviewScale_ remains the original invalid value
2625 */
2626 EXPECT_FLOAT_EQ(gestureHub.menuPreviewScale_, PREVIEW_NEGA_SCALE);
2627 }
2628
2629 /**
2630 * @tc.name: GestureEventOnDragStartTest001
2631 * @tc.desc: Test OnDragStart resets drag position-related values.
2632 * @tc.type: FUNC
2633 */
2634 HWTEST_F(GestureEventHubTestNg, GestureEventOnDragStartTest001, TestSize.Level1)
2635 {
2636 /**
2637 * @tc.steps: step1. Create FrameNode, EventHub, GestureEventHub and DragEventActuator.
2638 */
2639 auto eventHub = AceType::MakeRefPtr<EventHub>();
2640 ASSERT_NE(eventHub, nullptr);
2641 auto frameNode = FrameNode::CreateFrameNode(V2::TEXT_ETS_TAG, -1, AceType::MakeRefPtr<TextPattern>());
2642 ASSERT_NE(frameNode, nullptr);
2643 eventHub->AttachHost(frameNode);
2644 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
2645 ASSERT_NE(gestureEventHub, nullptr);
2646
2647 /**
2648 * @tc.steps: step2. Prepare pipeline and set non-zero drag position values in dragDropManager.
2649 */
2650 auto pipeline = PipelineContext::GetCurrentContext();
2651 ASSERT_NE(pipeline, nullptr);
2652 auto dragDropManager = pipeline->GetDragDropManager();
2653 ASSERT_NE(dragDropManager, nullptr);
2654 dragDropManager->dragMovePosition_ = OffsetF(INIT_MOVE_X, INIT_MOVE_Y);
2655 dragDropManager->lastDragMovePosition_ = OffsetF(LAST_MOVE_X, LAST_MOVE_Y);
2656 dragDropManager->dragTotalMovePosition_ = OffsetF(TOTAL_MOVE_X, TOTAL_MOVE_Y);
2657
2658 /**
2659 * @tc.steps: step3. Call OnDragStart with a valid GestureEvent and DragDropInfo containing a pixelMap.
2660 * @tc.expected: All position values in dragDropManager are reset to OffsetF().
2661 */
2662 auto pixelMap = PixelMap::CreatePixelMap(static_cast<void*>(new char[0]));
2663 ASSERT_NE(pixelMap, nullptr);
2664 DragDropInfo dragDropInfo;
2665 dragDropInfo.pixelMap = pixelMap;
2666 RefPtr<OHOS::Ace::DragEvent> dragEvent = AceType::MakeRefPtr<OHOS::Ace::DragEvent>();
2667 ASSERT_NE(dragEvent, nullptr);
2668
2669 GestureEvent gestureEvent;
2670 gestureEvent.SetInputEventType(InputEventType::TOUCH_SCREEN);
2671 gestureEventHub->OnDragStart(gestureEvent, pipeline, frameNode, dragDropInfo, dragEvent);
2672
2673 EXPECT_EQ(dragDropManager->dragMovePosition_, OffsetF());
2674 EXPECT_EQ(dragDropManager->lastDragMovePosition_, OffsetF());
2675 EXPECT_EQ(dragDropManager->dragTotalMovePosition_, OffsetF());
2676 }
2677
2678 /**
2679 * @tc.name: GetDragPreviewInitPositionToScreen001
2680 * @tc.desc: Test GetDragPreviewInitPositionToScreen when frameNode is null, expect default OffsetF() to be returned
2681 * @tc.type: FUNC
2682 */
2683 HWTEST_F(GestureEventHubTestNg, GetDragPreviewInitPositionToScreen001, TestSize.Level1)
2684 {
2685 PreparedInfoForDrag data;
2686 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(nullptr);
2687 ASSERT_NE(gestureEventHub, nullptr);
2688 OffsetF result = gestureEventHub->GetDragPreviewInitPositionToScreen(nullptr, data);
2689 EXPECT_EQ(result, OffsetF());
2690 }
2691
2692 /**
2693 * @tc.name: GetDragPreviewInitPositionToScreen002
2694 * @tc.desc: Test when pixelMap is null, expect subtraction with pixelMapHalfSize(0, 0) to proceed normally
2695 * @tc.type: FUNC
2696 */
2697 HWTEST_F(GestureEventHubTestNg, GetDragPreviewInitPositionToScreen002, TestSize.Level1)
2698 {
2699 auto frameNode = FrameNode::CreateFrameNode(V2::ROW_ETS_TAG, 1, AceType::MakeRefPtr<Pattern>());
2700 ASSERT_NE(frameNode, nullptr);
2701 auto gestureEventHub = frameNode->GetOrCreateGestureEventHub();
2702 ASSERT_NE(gestureEventHub, nullptr);
2703 gestureEventHub->frameNodeOffset_ = OffsetF(FRAME_OFFSET_X, FRAME_OFFSET_Y);
2704 gestureEventHub->frameNodeSize_ = SizeF(FRAME_WIDTH, FRAME_HEIGHT);
2705 PreparedInfoForDrag data;
2706 data.pixelMap = nullptr;
2707 data.isMenuShow = true;
2708 data.sizeChangeEffect = DraggingSizeChangeEffect::DEFAULT;
2709 data.badgeNumber = 1;
2710 data.dragMovePosition = OffsetF(MOVE_OFFSET_X / 2, MOVE_OFFSET_Y);
2711 OffsetF result = gestureEventHub->GetDragPreviewInitPositionToScreen(PipelineContext::GetCurrentContext(), data);
2712
2713 EXPECT_NE(result, OffsetF());
2714 }
2715
2716 /**
2717 * @tc.name: GetDragPreviewInitPositionToScreen003
2718 * @tc.desc: Test WEB component pixelMap scaling path with matching frameTag branch
2719 * @tc.type: FUNC
2720 */
2721 HWTEST_F(GestureEventHubTestNg, GetDragPreviewInitPositionToScreen003, TestSize.Level1)
2722 {
2723 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::WEB_ETS_TAG, 1, AceType::MakeRefPtr<Pattern>());
2724 ASSERT_NE(frameNode, nullptr);
2725 auto gestureEventHub = frameNode->GetOrCreateGestureEventHub();
2726 ASSERT_NE(gestureEventHub, nullptr);
2727
2728 PreparedInfoForDrag data;
2729 auto mockPixelMap = AceType::MakeRefPtr<MockPixelMap>();
2730 EXPECT_CALL(*mockPixelMap, GetWidth()).WillRepeatedly(Return(PIXELMAP_WIDTH));
2731 EXPECT_CALL(*mockPixelMap, GetHeight()).WillRepeatedly(Return(PIXELMAP_HEIGHT));
2732 data.pixelMap = mockPixelMap;
2733 DragPreviewOption option;
2734 option.isScaleEnabled = true;
2735 frameNode->SetDragPreviewOptions(option);
2736 gestureEventHub->frameNodeOffset_ = OffsetF(MOVE_OFFSET_X, MOVE_OFFSET_Y);
2737
2738 OffsetF result = gestureEventHub->GetDragPreviewInitPositionToScreen(PipelineContext::GetCurrentContext(), data);
2739 EXPECT_NE(result, OffsetF());
2740 }
2741
2742 /**
2743 * @tc.name: GetDragPreviewInitPositionToScreen004
2744 * @tc.desc: Test menu case when isMenuShow is true, badgeNumber = 1, and sizeChangeEffect = DEFAULT
2745 * @tc.type: FUNC
2746 */
2747 HWTEST_F(GestureEventHubTestNg, GetDragPreviewInitPositionToScreen004, TestSize.Level1)
2748 {
2749 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::MENU_ETS_TAG, 1, AceType::MakeRefPtr<Pattern>());
2750 ASSERT_NE(frameNode, nullptr);
2751 auto gestureEventHub = frameNode->GetOrCreateGestureEventHub();
2752 ASSERT_NE(gestureEventHub, nullptr);
2753 gestureEventHub->frameNodeOffset_ = OffsetF(FRAME_OFFSET_X, FRAME_OFFSET_Y);
2754 gestureEventHub->frameNodeSize_ = SizeF(FRAME_WIDTH, FRAME_HEIGHT);
2755
2756 PreparedInfoForDrag data;
2757 data.pixelMap = AceType::MakeRefPtr<MockPixelMap>();
2758 data.isMenuShow = true;
2759 data.sizeChangeEffect = DraggingSizeChangeEffect::DEFAULT;
2760 data.badgeNumber = 1;
2761 data.dragMovePosition = OffsetF(MOVE_OFFSET_X / 2, MOVE_OFFSET_Y / 2);
2762
2763 OffsetF result = gestureEventHub->GetDragPreviewInitPositionToScreen(PipelineContext::GetCurrentContext(), data);
2764 EXPECT_NE(result, OffsetF());
2765 }
2766
2767 /**
2768 * @tc.name: GetDragPreviewInitPositionToScreen005
2769 * @tc.desc: Test menu case when isMenuShow is true, badgeNumber > 1, and sizeChangeEffect = SIZE_TRANSITION
2770 * @tc.type: FUNC
2771 */
2772 HWTEST_F(GestureEventHubTestNg, GetDragPreviewInitPositionToScreen005, TestSize.Level1)
2773 {
2774 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::MENU_ETS_TAG, 1, AceType::MakeRefPtr<Pattern>());
2775 ASSERT_NE(frameNode, nullptr);
2776 auto gestureEventHub = frameNode->GetOrCreateGestureEventHub();
2777 ASSERT_NE(gestureEventHub, nullptr);
2778 gestureEventHub->frameNodeOffset_ = OffsetF(FRAME_OFFSET_X, FRAME_OFFSET_Y);
2779 gestureEventHub->frameNodeSize_ = SizeF(FRAME_WIDTH, FRAME_HEIGHT);
2780
2781 PreparedInfoForDrag data;
2782 data.pixelMap = AceType::MakeRefPtr<MockPixelMap>();
2783 data.isMenuShow = true;
2784 data.sizeChangeEffect = DraggingSizeChangeEffect::SIZE_TRANSITION;
2785 data.badgeNumber = 2;
2786 data.dragMovePosition = OffsetF(MOVE_OFFSET_X, MOVE_OFFSET_Y);
2787
2788 OffsetF result = gestureEventHub->GetDragPreviewInitPositionToScreen(PipelineContext::GetCurrentContext(), data);
2789 EXPECT_NE(result, OffsetF());
2790 }
2791
2792 /**
2793 * @tc.name: GetBadgeNumber001
2794 * @tc.desc: Test GetBadgeNumber when GetFrameNode returns null, expect default value 1
2795 * @tc.type: FUNC
2796 */
2797 HWTEST_F(GestureEventHubTestNg, GetBadgeNumber001, TestSize.Level1)
2798 {
2799 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(nullptr);
2800 ASSERT_NE(gestureEventHub, nullptr);
2801 auto result = gestureEventHub->GetBadgeNumber(nullptr);
2802 EXPECT_EQ(result, 1);
2803 }
2804
2805 /**
2806 * @tc.name: GetBadgeNumber002
2807 * @tc.desc: Test GetBadgeNumber when pattern->GetDragRecordSize() >= 0, expect that value to be returned
2808 * @tc.type: FUNC
2809 */
2810 HWTEST_F(GestureEventHubTestNg, GetBadgeNumber002, TestSize.Level1)
2811 {
2812 auto frameNode = FrameNode::CreateFrameNode("test", 101, AceType::MakeRefPtr<TextPattern>());
2813 ASSERT_NE(frameNode, nullptr);
2814 frameNode->GetPattern<TextPattern>()->ResetDragRecordSize(2);
2815 auto gestureEventHub = frameNode->GetOrCreateGestureEventHub();
2816 ASSERT_NE(gestureEventHub, nullptr);
2817 gestureEventHub->InitDragDropEvent();
2818 auto event = gestureEventHub->eventHub_.Upgrade();
2819 event->host_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
2820 RefPtr<OHOS::Ace::DragEvent> dragEvent = AceType::MakeRefPtr<OHOS::Ace::DragEvent>();
2821 auto result = gestureEventHub->GetBadgeNumber(dragEvent);
2822 EXPECT_EQ(result, 2);
2823 }
2824
2825 /**
2826 * @tc.name: GetBadgeNumber003
2827 * @tc.desc: Test GetBadgeNumber when pattern->GetDragRecordSize() < 0 and unifiedData size > 1, expect unifiedData size
2828 * to be returned
2829 * @tc.type: FUNC
2830 */
2831 HWTEST_F(GestureEventHubTestNg, GetBadgeNumber003, TestSize.Level1)
2832 {
2833 auto frameNode = FrameNode::CreateFrameNode("test", 101, AceType::MakeRefPtr<TextPattern>());
2834 ASSERT_NE(frameNode, nullptr);
2835 frameNode->GetPattern<TextPattern>()->ResetDragRecordSize(-1);
2836 auto gestureEventHub = frameNode->GetOrCreateGestureEventHub();
2837 ASSERT_NE(gestureEventHub, nullptr);
2838 gestureEventHub->InitDragDropEvent();
2839 auto event = gestureEventHub->eventHub_.Upgrade();
2840 event->host_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
2841 RefPtr<OHOS::Ace::DragEvent> dragEvent = AceType::MakeRefPtr<OHOS::Ace::DragEvent>();
2842 auto unifiedData = AceType::MakeRefPtr<MockUnifiedData>();
2843 EXPECT_CALL(*unifiedData, GetSize()).WillOnce(testing::Return(2));
2844 dragEvent->SetData(unifiedData);
2845 auto result = gestureEventHub->GetBadgeNumber(dragEvent);
2846 EXPECT_EQ(result, 2);
2847 }
2848
2849 /**
2850 * @tc.name: GetBadgeNumber004
2851 * @tc.desc: Test GetBadgeNumber when DragPreviewOption sets a custom badgeNumber, expect the set value to be returned
2852 * @tc.type: FUNC
2853 */
2854 HWTEST_F(GestureEventHubTestNg, GetBadgeNumber004, TestSize.Level1)
2855 {
2856 auto frameNode = FrameNode::CreateFrameNode("test", 101, AceType::MakeRefPtr<TextPattern>());
2857 ASSERT_NE(frameNode, nullptr);
2858 frameNode->GetPattern<TextPattern>()->ResetDragRecordSize(-1);
2859 auto gestureEventHub = frameNode->GetOrCreateGestureEventHub();
2860 ASSERT_NE(gestureEventHub, nullptr);
2861 gestureEventHub->InitDragDropEvent();
2862 auto event = gestureEventHub->eventHub_.Upgrade();
2863 event->host_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
2864 DragPreviewOption option;
2865 option.badgeNumber = 2;
2866 option.isNumber = true;
2867 frameNode->SetDragPreviewOptions(option, true);
2868 RefPtr<OHOS::Ace::DragEvent> dragEvent = AceType::MakeRefPtr<OHOS::Ace::DragEvent>();
2869 auto result = gestureEventHub->GetBadgeNumber(dragEvent);
2870 EXPECT_EQ(result, 2);
2871 }
2872
2873 /**
2874 * @tc.name: TryDoDragStartAnimation001
2875 * @tc.desc: Test TryDoDragStartAnimation when subWindow is null
2876 * @tc.type: FUNC
2877 */
2878 HWTEST_F(GestureEventHubTestNg, TryDoDragStartAnimation001, TestSize.Level1)
2879 {
2880 auto frameNode = FrameNode::CreateFrameNode("testNode", 101, AceType::MakeRefPtr<Pattern>());
2881 ASSERT_NE(frameNode, nullptr);
2882 auto gestureEventHub = frameNode->GetOrCreateGestureEventHub();
2883 ASSERT_NE(gestureEventHub, nullptr);
2884 gestureEventHub->InitDragDropEvent();
2885
2886 auto event = gestureEventHub->eventHub_.Upgrade();
2887 event->host_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
2888
2889 RefPtr<PipelineBase> context = NG::MockPipelineContext::pipeline_;
2890 RefPtr<Subwindow> subWindow = nullptr;
2891 GestureEvent info;
2892 PreparedInfoForDrag data;
2893 auto ret = gestureEventHub->TryDoDragStartAnimation(context, subWindow, info, data);
2894 EXPECT_FALSE(ret);
2895 }
2896
2897 /**
2898 * @tc.name: TryDoDragStartAnimation002
2899 * @tc.desc: Test TryDoDragStartAnimation when imageNode is null
2900 * @tc.type: FUNC
2901 */
2902 HWTEST_F(GestureEventHubTestNg, TryDoDragStartAnimation002, TestSize.Level1)
2903 {
2904 auto frameNode = FrameNode::CreateFrameNode("testNode", 101, AceType::MakeRefPtr<Pattern>());
2905 ASSERT_NE(frameNode, nullptr);
2906 auto gestureEventHub = frameNode->GetOrCreateGestureEventHub();
2907 ASSERT_NE(gestureEventHub, nullptr);
2908 gestureEventHub->InitDragDropEvent();
2909
2910 auto event = gestureEventHub->eventHub_.Upgrade();
2911 event->host_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
2912
2913 RefPtr<PipelineBase> context = NG::MockPipelineContext::pipeline_;
2914 auto pipeline = AceType::DynamicCast<PipelineContext>(context);
2915 auto mainPipeline = PipelineContext::GetMainPipelineContext();
2916 RefPtr<Subwindow> subWindow = SubwindowManager::GetInstance()->ShowPreviewNG((pipeline != mainPipeline));
2917 GestureEvent info;
2918 PreparedInfoForDrag data;
2919
2920 auto ret = gestureEventHub->TryDoDragStartAnimation(context, subWindow, info, data);
2921 EXPECT_FALSE(ret);
2922 }
2923
2924 /**
2925 * @tc.name: TryDoDragStartAnimation003
2926 * @tc.desc: Test TryDoDragStartAnimation when all conditions satisfied
2927 * @tc.type: FUNC
2928 */
2929 HWTEST_F(GestureEventHubTestNg, TryDoDragStartAnimation003, TestSize.Level1)
2930 {
2931 auto frameNode = FrameNode::CreateFrameNode("testNode", 101, AceType::MakeRefPtr<Pattern>());
2932 ASSERT_NE(frameNode, nullptr);
2933 auto gestureEventHub = frameNode->GetOrCreateGestureEventHub();
2934 ASSERT_NE(gestureEventHub, nullptr);
2935 gestureEventHub->InitDragDropEvent();
2936
2937 auto event = gestureEventHub->eventHub_.Upgrade();
2938 event->host_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
2939
2940 RefPtr<PipelineContext> context = AceType::DynamicCast<PipelineContext>(NG::MockPipelineContext::pipeline_);
2941 frameNode->AttachContext(AceType::RawPtr(context));
2942 auto pipeline = AceType::DynamicCast<PipelineContext>(context);
2943 ASSERT_NE(pipeline, nullptr);
2944
2945 auto mockContainer = AceType::MakeRefPtr<MockContainer>(context);
2946 EXPECT_CALL(*mockContainer, GetInstanceId()).WillRepeatedly(Return(INSTANCE_ID));
2947 MockContainer::container_ = mockContainer;
2948 Container::UpdateCurrent(INSTANCE_ID);
2949 auto container = Container::Current();
2950 ASSERT_NE(container, nullptr);
2951
2952 auto mainPipeline = PipelineContext::GetMainPipelineContext();
2953 auto mockSubwindow = AceType::MakeRefPtr<MockSubwindow>();
2954 EXPECT_CALL(*mockSubwindow, GetOverlayManager()).WillRepeatedly(Return(pipeline->GetOverlayManager()));
2955 RefPtr<Subwindow> subWindow = mockSubwindow;
2956 ASSERT_NE(subWindow, nullptr);
2957 GestureEvent info;
2958 PreparedInfoForDrag data;
2959 data.imageNode = FrameNode::CreateCommonNode("imageNode", 201, false, AceType::MakeRefPtr<Pattern>());
2960 ASSERT_NE(data.imageNode, nullptr);
2961 auto ret = gestureEventHub->TryDoDragStartAnimation(context, subWindow, info, data);
2962 EXPECT_TRUE(ret);
2963 }
2964
2965 /**
2966 * @tc.name: GestureEventHubTestGetPixelMapOffset001
2967 * @tc.desc: Test GetPixelMapOffset covering all branches
2968 * @tc.type: FUNC
2969 */
2970 HWTEST_F(GestureEventHubTestNg, GestureEventHubTestGetPixelMapOffset001, TestSize.Level1)
2971 {
2972 /**
2973 * @tc.steps: step1. Create frameNode and associated GestureEventHub, set offset and simulate gesture location.
2974 */
2975 GestureEvent info;
2976 PreparedInfoForDrag dragInfoData;
2977 SizeF size(SIZE_X, SIZE_Y * 2);
2978 auto frameNode = FrameNode::CreateFrameNode("test", 1, AceType::MakeRefPtr<Pattern>());
2979 ASSERT_NE(frameNode, nullptr);
2980 auto gestureEventHub = frameNode->GetOrCreateGestureEventHub();
2981 ASSERT_NE(gestureEventHub, nullptr);
2982 gestureEventHub->frameNodeOffset_ = OffsetF(FRAME_OFFSET_X, FRAME_OFFSET_Y);
2983 info.SetGlobalLocation(Offset(GESTURE_GLOBAL_X, GESTURE_GLOBAL_Y));
2984
2985 /**
2986 * @tc.steps: step2. Test when innerRect is valid and offset is calculated with scale = 1.0.
2987 * @tc.expected: X offset should be less than or equal to 0, Y offset greater than or equal to -200.
2988 */
2989 RectF innerRect(OffsetF(INNER_OFFSET_X, INNER_OFFSET_Y), SizeF(SIZE_X / 2, SIZE_Y));
2990 OffsetF offset = gestureEventHub->GetPixelMapOffset(info, size, dragInfoData, DEFAULT_SCALE, innerRect);
2991 EXPECT_LE(offset.GetX(), 0);
2992 EXPECT_GE(offset.GetY(), -200);
2993
2994 /**
2995 * @tc.steps: step3. Test when frameNodeSize is (0, 0), expect fallback logic.
2996 * @tc.expected: X offset should be less than 0.
2997 */
2998 gestureEventHub->frameNodeSize_ = SizeF(SIZE_ZERO, SIZE_ZERO);
2999 offset = gestureEventHub->GetPixelMapOffset(info, size, dragInfoData, DEFAULT_SCALE * 2, RectF());
3000 EXPECT_LT(offset.GetX(), SIZE_ZERO);
3001
3002 /**
3003 * @tc.steps: step4. Test when isNeedCreateTiled is true and frameNodeSize is set.
3004 * @tc.expected: X offset should equal -size.Width() / 2.
3005 */
3006 gestureEventHub->frameNodeSize_ = SizeF(SIZE_X, SIZE_Y);
3007 dragInfoData.isNeedCreateTiled = true;
3008 offset = gestureEventHub->GetPixelMapOffset(info, size, dragInfoData, DEFAULT_SCALE, RectF());
3009 EXPECT_FLOAT_EQ(offset.GetX(), -size.Width() / 2);
3010
3011 /**
3012 * @tc.steps: step5. Test when touch point calculation is based on final preview and dragPreviewRect is provided.
3013 * @tc.expected: X offset should be less than 0.
3014 */
3015 NG::DragPreviewOption option;
3016 option.isTouchPointCalculationBasedOnFinalPreviewEnable = true;
3017 frameNode->SetDragPreviewOptions(option, false);
3018 dragInfoData.isNeedCreateTiled = false;
3019 dragInfoData.dragPreviewRect = RectF(OffsetF(DRAG_OFFSET_X, DRAG_OFFSET_Y), SizeF(SIZE_X, SIZE_Y));
3020 offset = gestureEventHub->GetPixelMapOffset(info, size, dragInfoData, DEFAULT_SCALE, RectF());
3021 EXPECT_LT(offset.GetX(), SIZE_ZERO);
3022
3023 /**
3024 * @tc.steps: step6. Repeat test with same configuration to ensure deterministic behavior.
3025 * @tc.expected: X offset should be less than 0.
3026 */
3027 option.isTouchPointCalculationBasedOnFinalPreviewEnable = true;
3028 frameNode->SetDragPreviewOptions(option, false);
3029 offset = gestureEventHub->GetPixelMapOffset(info, size, dragInfoData, DEFAULT_SCALE, RectF());
3030 EXPECT_LT(offset.GetX(), SIZE_ZERO);
3031 }
3032
3033 /**
3034 * @tc.name: CalcFrameNodeOffsetAndSize001
3035 * @tc.desc: Test CalcFrameNodeOffsetAndSize when frameNode is null
3036 * @tc.type: FUNC
3037 */
3038 HWTEST_F(GestureEventHubTestNg, CalcFrameNodeOffsetAndSize001, TestSize.Level1)
3039 {
3040 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(AceType::MakeRefPtr<EventHub>());
3041 ASSERT_NE(gestureEventHub, nullptr);
3042 EXPECT_TRUE(gestureEventHub);
3043 gestureEventHub->CalcFrameNodeOffsetAndSize(nullptr, true);
3044 EXPECT_EQ(gestureEventHub->frameNodeSize_.Width(), SIZE_ZERO);
3045 EXPECT_EQ(gestureEventHub->frameNodeSize_.Height(), SIZE_ZERO);
3046 }
3047
3048 /**
3049 * @tc.name: CalcFrameNodeOffsetAndSize002
3050 * @tc.desc: Test CalcFrameNodeOffsetAndSize frameNode tag is TEXT_ETS_TAG, should use TextDragBase path
3051 * @tc.type: FUNC
3052 */
3053 HWTEST_F(GestureEventHubTestNg, CalcFrameNodeOffsetAndSize002, TestSize.Level1)
3054 {
3055 auto frameNode = FrameNode::CreateFrameNode(V2::TEXT_ETS_TAG, 101, AceType::MakeRefPtr<TextPattern>());
3056 ASSERT_NE(frameNode, nullptr);
3057 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
3058 ASSERT_NE(guestureEventHub, nullptr);
3059 guestureEventHub->CalcFrameNodeOffsetAndSize(frameNode, false);
3060 EXPECT_EQ(guestureEventHub->frameNodeSize_.Width(), SIZE_ZERO);
3061 EXPECT_EQ(guestureEventHub->frameNodeSize_.Height(), SIZE_ZERO);
3062 }
3063
3064 /**
3065 * @tc.name: CalcFrameNodeOffsetAndSize003
3066 * @tc.desc: Test CalcFrameNodeOffsetAndSize frameNode tag is not text category, fallback to default path and not WEB
3067 * @tc.type: FUNC
3068 */
3069 HWTEST_F(GestureEventHubTestNg, CalcFrameNodeOffsetAndSize003, TestSize.Level1)
3070 {
3071 auto frameNode = FrameNode::CreateFrameNode(V2::BUTTON_ETS_TAG, 101, AceType::MakeRefPtr<Pattern>());
3072 ASSERT_NE(frameNode, nullptr);
3073 auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
3074 ASSERT_NE(guestureEventHub, nullptr);
3075 guestureEventHub->CalcFrameNodeOffsetAndSize(frameNode, false);
3076 EXPECT_TRUE(guestureEventHub->frameNodeSize_.Width() >= SIZE_ZERO);
3077 }
3078
3079 /**
3080 * @tc.name: CalcFrameNodeOffsetAndSize004
3081 * @tc.desc: Test CalcFrameNodeOffsetAndSize where menuPreviewScale is zero (menu not applied)
3082 * @tc.type: FUNC
3083 */
3084 HWTEST_F(GestureEventHubTestNg, CalcFrameNodeOffsetAndSize004, TestSize.Level1)
3085 {
3086 auto frameNode = FrameNode::CreateFrameNode(V2::BUTTON_ETS_TAG, 101, AceType::MakeRefPtr<Pattern>());
3087 ASSERT_NE(frameNode, nullptr);
3088 auto gestureEventHub = frameNode->GetOrCreateGestureEventHub();
3089 ASSERT_NE(gestureEventHub, nullptr);
3090
3091 gestureEventHub->menuPreviewScale_ = SIZE_ZERO;
3092 gestureEventHub->CalcFrameNodeOffsetAndSize(frameNode, true);
3093 EXPECT_NE(gestureEventHub->frameNodeSize_, SizeF(SIZE_X, SIZE_Y));
3094 }
3095
3096 /**
3097 * @tc.name: HandleOnDragStartSetDragStatus001
3098 * @tc.desc: Verify UpdateDragDropInitiatingStatus sets currentDragNode_ correctly
3099 * @tc.type: FUNC
3100 */
3101 HWTEST_F(GestureEventHubTestNg, HandleOnDragStartSetDragStatus001, TestSize.Level1)
3102 {
3103 /**
3104 * @tc.steps: step1. Create GestureEventHub.
3105 * @tc.expected: gestureEventHub is not null.
3106 */
3107 auto eventHub = AceType::MakeRefPtr<EventHub>();
3108 EXPECT_TRUE(eventHub);
3109 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::TEXT_ETS_TAG, -1, AceType::MakeRefPtr<TextPattern>());
3110
3111 /**
3112 * @tc.steps: step2. Build PixelMap and UINode, and update the properties of DragDropInfo.
3113 */
3114 void* voidPtr = static_cast<void*>(new char[0]);
3115 RefPtr<PixelMap> pixelMap = PixelMap::CreatePixelMap(voidPtr);
3116 RefPtr<UINode> customNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
3117 DragDropInfo dragDropInfo;
3118 dragDropInfo.customNode = customNode;
3119 dragDropInfo.pixelMap = pixelMap;
3120 frameNode->SetDragPreview(dragDropInfo);
3121
3122 auto hostPattern = frameNode->GetPattern<TextDragBase>();
3123 EXPECT_TRUE(hostPattern);
3124
3125 eventHub->AttachHost(frameNode);
3126 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
3127 EXPECT_TRUE(gestureEventHub);
3128
3129 auto onDragStart = [&customNode](
__anon7f8b1fb24802( const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 3130 const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
3131 DragDropInfo dragDropInfo;
3132 dragDropInfo.customNode = customNode;
3133 return dragDropInfo;
3134 };
3135 eventHub->SetOnDragStart(std::move(onDragStart));
3136
3137 auto eventManager = AceType::MakeRefPtr<EventManager>();
3138 EXPECT_TRUE(eventManager);
3139 auto pipeline = PipelineContext::GetCurrentContext();
3140 pipeline->SetEventManager(eventManager);
3141 eventManager->SetLastMoveBeforeUp(false);
3142
3143 /**
3144 * @tc.steps: step3. call HandleOnDragStart with SourceType::NONE and InputEventType::TOUCH_SCREEN.
3145 * @tc.expected: DragDropGlobalController::currentDragNode_ should be updated to frameNode.
3146 */
3147 GestureEvent gestureEvent;
3148 gestureEvent.SetSourceDevice(SourceType::NONE);
3149 gestureEvent.SetInputEventType(InputEventType::TOUCH_SCREEN);
3150 DragDropGlobalController::GetInstance().SetDragStartRequestStatus(DragStartRequestStatus::WAITING);
3151 gestureEventHub->HandleOnDragStart(gestureEvent);
3152 EXPECT_EQ(DragDropGlobalController::GetInstance().currentDragNode_, frameNode);
3153 }
3154
3155 /**
3156 * @tc.name: FireCustomerOnDragEndResetStatus001
3157 * @tc.desc: Test FireCustomerOnDragEnd resets currentDragNode_ in DragDropGlobalController
3158 * @tc.type: FUNC
3159 */
3160 HWTEST_F(GestureEventHubTestNg, FireCustomerOnDragEndResetStatus001, TestSize.Level1)
3161 {
3162 /**
3163 * @tc.steps: step1. Set currentDragNode_ in DragDropGlobalController to a known node.
3164 * @tc.expected: currentDragNode_ is not null before reset.
3165 */
3166 auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::TEXT_ETS_TAG, -1, AceType::MakeRefPtr<Pattern>());
3167 ASSERT_NE(frameNode, nullptr);
3168 DragDropGlobalController::GetInstance().UpdateDragDropInitiatingStatus(frameNode, DragDropInitiatingStatus::MOVING);
3169 EXPECT_EQ(DragDropGlobalController::GetInstance().currentDragNode_, frameNode);
3170
3171 /**
3172 * @tc.steps: step2. Create EventHub and GestureEventHub, attach to frameNode.
3173 */
3174 auto eventHub = AceType::MakeRefPtr<EventHub>();
3175 eventHub->AttachHost(frameNode);
3176 auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
3177 ASSERT_NE(gestureEventHub, nullptr);
3178
3179 /**
3180 * @tc.steps: step3. Create PipelineContext and bind DragDropManager.
3181 */
3182 auto pipeline = PipelineContext::GetCurrentContext();
3183 ASSERT_NE(pipeline, nullptr);
3184 auto eventManager = AceType::MakeRefPtr<EventManager>();
3185 pipeline->SetEventManager(eventManager);
3186 ASSERT_NE(eventManager, nullptr);
3187 auto dragDropManager = pipeline->GetDragDropManager();
3188 ASSERT_NE(dragDropManager, nullptr);
3189
3190 /**
3191 * @tc.steps: step4. Call FireCustomerOnDragEnd.
3192 * @tc.expected: currentDragNode_ is reset to nullptr.
3193 */
3194 WeakPtr<EventHub> hubWeak(eventHub);
3195 gestureEventHub->FireCustomerOnDragEnd(pipeline, hubWeak);
3196 EXPECT_EQ(DragDropGlobalController::GetInstance().currentDragNode_, nullptr);
3197 }
3198 } // namespace OHOS::Ace::NG
3199