• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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