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 using namespace testing;
19 using namespace testing::ext;
20 
21 namespace OHOS::Ace::NG {
SetUpTestSuite()22 void GestureEventHubTestNg::SetUpTestSuite()
23 {
24     MockPipelineContext::SetUp();
25     MOCK_DRAG_WINDOW = DragWindow::CreateDragWindow("", 0, 0, 0, 0);
26     GTEST_LOG_(INFO) << "GestureEventHubTestNg SetUpTestCase";
27     MOCK_TASK_EXECUTOR = AceType::MakeRefPtr<MockTaskExecutor>();
28 }
29 
TearDownTestSuite()30 void GestureEventHubTestNg::TearDownTestSuite()
31 {
32     MockPipelineContext::TearDown();
33     MOCK_DRAG_WINDOW = nullptr;
34     GTEST_LOG_(INFO) << "GestureEventHubTestNg TearDownTestCase";
35 }
36 
37 /**
38  * @tc.name: GestureEventHubTest001
39  * @tc.desc: Create GestureEventHub and call GetFrameNode
40  * @tc.type: FUNC
41  */
42 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest001, TestSize.Level1)
43 {
44     /**
45      * @tc.steps: step1. Create GestureEventHub.
46      * @tc.expected: eventHub is not null.
47      */
48     auto eventHub = AceType::MakeRefPtr<EventHub>();
49     EXPECT_TRUE(eventHub);
50     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
51     eventHub->AttachHost(frameNode);
52     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
53     EXPECT_TRUE(gestureEventHub);
54 
55     /**
56      * @tc.steps: step2. Test GetFrameNode
57      *            case: eventHub is valid
58      * @tc.expected: frameNodeOfEvent is not null.
59      */
60     auto frameNodeOfEvent = gestureEventHub->GetFrameNode();
61     EXPECT_TRUE(frameNodeOfEvent);
62 
63     /**
64      * @tc.steps: step2. Test GetFrameNode
65      *            case: eventHub is invalid
66      * @tc.expected: frameNodeOfEvent is null.
67      */
68     eventHub = nullptr;
69     frameNode = nullptr;
70     frameNodeOfEvent = gestureEventHub->GetFrameNode();
71     EXPECT_FALSE(frameNodeOfEvent);
72 }
73 
74 /**
75  * @tc.name: GestureEventHubTest002
76  * @tc.desc: Test ProcessTouchTestHit part1
77  * @tc.type: FUNC
78  */
79 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest002, TestSize.Level1)
80 {
81     /**
82      * @tc.steps: step1. Create GestureEventHub.
83      * @tc.expected: gestureEventHub is not null.
84      */
85     auto eventHub = AceType::MakeRefPtr<EventHub>();
86     EXPECT_TRUE(eventHub);
87     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
88     EXPECT_TRUE(gestureEventHub);
89 
90     /**
91      * @tc.steps: step2. Test ProcessTouchTestHit
92      *            case: eventHub is null && actuators such as scrollableActuator_ & touchEventActuator_ are all null
93      * @tc.expected: ProcessTouchTestHit return false,  innerTargets & finalResult is empty
94      */
95     eventHub = nullptr;
96     TouchRestrict touchRestrict;
97     TouchTestResult innerTargets;
98     TouchTestResult finalResult;
99     ResponseLinkResult responseLinkResult;
100     auto flag = gestureEventHub->ProcessTouchTestHit(
101         COORDINATE_OFFSET, touchRestrict, innerTargets, finalResult, TOUCH_ID, PointF(), nullptr, responseLinkResult);
102     EXPECT_FALSE(flag);
103     auto sizeOfInnerTargets = static_cast<int32_t>(innerTargets.size());
104     auto sizeOfFinalResult = static_cast<int32_t>(finalResult.size());
105     EXPECT_EQ(sizeOfInnerTargets, 0);
106     EXPECT_EQ(sizeOfFinalResult, 0);
107 
108     /**
109      * @tc.steps: step3. construct touchEventActuator_
110      *                   then set it to gestureEventHub
111      */
112     // reconstruct a gestureEventHub
113     eventHub = AceType::MakeRefPtr<EventHub>();
114     EXPECT_TRUE(eventHub);
115     auto framenode = FrameNode::CreateFrameNode("test", 1, AceType::MakeRefPtr<Pattern>(), false);
116     EXPECT_NE(framenode, nullptr);
117     eventHub->host_ = AceType::WeakClaim(AceType::RawPtr(framenode));
118     gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
119     EXPECT_TRUE(gestureEventHub);
120     // set touchEventActuator_
__anon9b9e2c480102(TouchEventInfo& info) 121     auto touchCallback = [](TouchEventInfo& info) {};
122     auto touchEvent = AceType::MakeRefPtr<TouchEventImpl>(std::move(touchCallback));
123     gestureEventHub->AddTouchEvent(touchEvent);
124 
125     /**
126      * @tc.steps: step4. Test ProcessTouchTestHit
127      *            case: eventHub is not null && touchEventActuator_ is not null
128      * @tc.expected: ProcessTouchTestHit return false,  innerTargets & finalResult have one element
129      */
130     flag = gestureEventHub->ProcessTouchTestHit(
131         COORDINATE_OFFSET, touchRestrict, innerTargets, finalResult, TOUCH_ID, PointF(), nullptr, responseLinkResult);
132     EXPECT_FALSE(flag);
133     sizeOfInnerTargets = static_cast<int32_t>(innerTargets.size());
134     sizeOfFinalResult = static_cast<int32_t>(finalResult.size());
135     EXPECT_EQ(sizeOfInnerTargets, 1);
136     EXPECT_EQ(sizeOfFinalResult, 1);
137 }
138 
139 /**
140  * @tc.name: GestureEventHubTest003
141  * @tc.desc: Test ProcessTouchTestHit part2
142  * @tc.type: FUNC
143  */
144 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest003, TestSize.Level1)
145 {
146     /**
147      * @tc.steps: step1. Create GestureEventHub.
148      * @tc.expected: gestureEventHub is not null.
149      */
150     auto eventHub = AceType::MakeRefPtr<EventHub>();
151     EXPECT_TRUE(eventHub);
152     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
153     EXPECT_TRUE(gestureEventHub);
154 
155     /**
156      * @tc.steps: step2. construct scrollableActuator_ and other actuators
157      *                   then set them to gestureEventHub
158      */
159 
160     // set touchEventActuator_
__anon9b9e2c480202(TouchEventInfo& info) 161     auto touchCallback = [](TouchEventInfo& info) {};
162     auto touchEvent = AceType::MakeRefPtr<TouchEventImpl>(std::move(touchCallback));
163     gestureEventHub->AddTouchEvent(touchEvent);
164 
165     // set scrollableActuator_
166     auto scrollableEvent = AceType::MakeRefPtr<ScrollableEvent>(AXIS_VERTICAL);
167     gestureEventHub->AddScrollableEvent(scrollableEvent);
168 
169     // set clickEventActuator_
__anon9b9e2c480302(GestureEvent& info) 170     auto clickCallback = [](GestureEvent& info) {};
171     auto clickEvent = AceType::MakeRefPtr<ClickEvent>(std::move(clickCallback));
172     gestureEventHub->AddClickEvent(clickEvent);
173 
174     // set panEventActuator_
__anon9b9e2c480402(GestureEvent& info) 175     auto panActionStart = [](GestureEvent& info) {};
__anon9b9e2c480502(GestureEvent& info) 176     auto panActionUpdate = [](GestureEvent& info) {};
__anon9b9e2c480602(GestureEvent& info) 177     auto panActionEnd = [](GestureEvent& info) {};
__anon9b9e2c480702() 178     auto panActionCancel = []() {};
179     auto panEvent = AceType::MakeRefPtr<PanEvent>(
180         std::move(panActionStart), std::move(panActionUpdate), std::move(panActionEnd), std::move(panActionCancel));
181     gestureEventHub->AddPanEvent(panEvent, PAN_DIRECTION_ALL, FINGERS, DISTANCE);
182 
183     // set longPressEventActuator_
__anon9b9e2c480802(GestureEvent& info) 184     auto longPressCallback = [](GestureEvent& info) {};
185     auto longPressEvent = AceType::MakeRefPtr<LongPressEvent>(longPressCallback);
186     gestureEventHub->SetLongPressEvent(longPressEvent);
187 
188     // set dragEventActuator_
__anon9b9e2c480902(GestureEvent& info) 189     auto dragActionStart = [](GestureEvent& info) {};
__anon9b9e2c480a02(GestureEvent& info) 190     auto dragActionUpdate = [](GestureEvent& info) {};
__anon9b9e2c480b02(GestureEvent& info) 191     auto dragActionEnd = [](GestureEvent& info) {};
__anon9b9e2c480c02() 192     auto dragActionCancel = []() {};
193     auto dragEvent = AceType::MakeRefPtr<DragEvent>(
194         std::move(dragActionStart), std::move(dragActionUpdate), std::move(dragActionEnd), std::move(dragActionCancel));
195     gestureEventHub->SetCustomDragEvent(dragEvent, PAN_DIRECTION_ALL, FINGERS, DISTANCE);
196 }
197 
198 /**
199  * @tc.name: GestureEventHubTest004
200  * @tc.desc: Test AddClickEvent, SetUserOnClick, ActClick & SetFocusClickEvent
201  * @tc.type: FUNC
202  */
203 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest004, TestSize.Level1)
204 {
205     /**
206      * @tc.steps: step1. Create GestureEventHub.
207      * @tc.expected: gestureEventHub is not null.
208      */
209     auto eventHub = AceType::MakeRefPtr<EventHub>();
210     EXPECT_TRUE(eventHub);
211     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
212     eventHub->AttachHost(frameNode);
213     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
214     EXPECT_TRUE(gestureEventHub);
215 
216     /**
217      * @tc.steps: step2. call ActClick
218      *            case: clickEventActuator_ is null
219      * @tc.expected: flag is false
220      */
221     auto flag = gestureEventHub->ActClick();
222     EXPECT_FALSE(flag);
223 
224     /**
225      * @tc.steps: step3. call ActClick
226      *            case: clickEventActuator_ is null, clickRecognizer fingers is 2, count is 1
227      * @tc.expected: flag is false
228      */
229     auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>(DOUBLE_FINGERS, 1);
230     gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
231     EXPECT_FALSE(gestureEventHub->ActClick());
232     gestureEventHub->gestureHierarchy_.clear();
233 
234     /**
235      * @tc.steps: step4. call ActClick
236      *            case: clickEventActuator_ is null, clickRecognizer fingers is 1, count is 1
237      * @tc.expected: flag is true
238      */
239     clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>(1, 1);
__anon9b9e2c480d02(GestureEvent& info) 240     clickRecognizer->SetOnAction([](GestureEvent& info) {});
241     gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
242     EXPECT_TRUE(gestureEventHub->ActClick());
243     gestureEventHub->gestureHierarchy_.clear();
244 
245     /**
246      * @tc.steps: step5. construct two clickCallback
247      *            one is for SetUserOnClick, the other is for AddClickEvent
248      */
249     std::string msg1;
__anon9b9e2c480e02(GestureEvent& ) 250     auto clickCallback = [&msg1](GestureEvent& /* info */) { msg1 = CHECK_TAG_1; };
251     gestureEventHub->SetUserOnClick(clickCallback);
252     std::string msg2;
__anon9b9e2c480f02(GestureEvent& ) 253     auto clickCallback2 = [&msg2](GestureEvent& /* info */) { msg2 = CHECK_TAG_2; };
254     auto clickEvent = AceType::MakeRefPtr<ClickEvent>(std::move(clickCallback2));
255     gestureEventHub->AddClickEvent(clickEvent);
256 
257     /**
258      * @tc.steps: step6. call ActClick
259      *                   case: clickEventActuator_ is not null
260      * @tc.expected: flag is true & clickCallback & clickCallback2 has be called
261      */
262     flag = gestureEventHub->ActClick();
263     EXPECT_TRUE(flag);
264     EXPECT_EQ(msg1, CHECK_TAG_1);
265     EXPECT_EQ(msg2, CHECK_TAG_2);
266 
267     /**
268      * @tc.steps: step7. call eventHub's GetOrCreateFocusHub
269      * @tc.expected: return is not null
270      */
271     auto focusHub = eventHub->GetOrCreateFocusHub();
272     EXPECT_TRUE(focusHub);
273 
274     /**
275      * @tc.steps: step8. call SetFocusClickEvent
276      * @tc.expected: no fatal error occur
277      */
278     msg1 = "";
__anon9b9e2c481002(GestureEvent& ) 279     auto clickCallback3 = [&msg1](GestureEvent& /* info */) { msg1 = CHECK_TAG_1; };
280     gestureEventHub->SetFocusClickEvent(clickCallback3);
281 }
282 
283 /**
284  * @tc.name: GestureEventHubTest005
285  * @tc.desc: Test ActLongClick
286  * @tc.type: FUNC
287  */
288 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest005, TestSize.Level1)
289 {
290     /**
291      * @tc.steps: step1. Create GestureEventHub.
292      * @tc.expected: gestureEventHub is not null.
293      */
294     auto eventHub = AceType::MakeRefPtr<EventHub>();
295     EXPECT_TRUE(eventHub);
296     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
297     eventHub->AttachHost(frameNode);
298     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
299     EXPECT_TRUE(gestureEventHub);
300 
301     /**
302      * @tc.steps: step2. call ActLongClick
303      *            case: longPressEventActuator_ is null
304      * @tc.expected: flag is false
305      */
306     auto flag = gestureEventHub->ActLongClick();
307     EXPECT_FALSE(flag);
308 
309     /**
310      * @tc.steps: step3. call ActLongClick
311      *            case: longPressEventActuator_ is null, longPressRecognizer fingers is 2
312      * @tc.expected: flag is false
313      */
314     auto longPressRecognizer = AceType::MakeRefPtr<LongPressRecognizer>(1, DOUBLE_FINGERS, false);
315     gestureEventHub->gestureHierarchy_.emplace_back(longPressRecognizer);
316     EXPECT_FALSE(gestureEventHub->ActLongClick());
317     gestureEventHub->gestureHierarchy_.clear();
318 
319     /**
320      * @tc.steps: step4. call ActLongClick
321      *            case: longPressEventActuator_ is null, longPressRecognizer fingers is 1
322      * @tc.expected: flag is true
323      */
324     longPressRecognizer = AceType::MakeRefPtr<LongPressRecognizer>(1, 1, false);
__anon9b9e2c481102(GestureEvent& info) 325     longPressRecognizer->SetOnAction([](GestureEvent& info) {});
326     gestureEventHub->gestureHierarchy_.emplace_back(longPressRecognizer);
327     EXPECT_TRUE(gestureEventHub->ActLongClick());
328     gestureEventHub->gestureHierarchy_.clear();
329 
330     /**
331      * @tc.steps: step5. construct a longPressCallback
332      */
333     std::string msg1;
__anon9b9e2c481202(GestureEvent& ) 334     auto longPressCallback = [&msg1](GestureEvent& /* info */) { msg1 = CHECK_TAG_1; };
335     auto longPressEvent = AceType::MakeRefPtr<LongPressEvent>(longPressCallback);
336     gestureEventHub->SetLongPressEvent(longPressEvent);
337 
338     /**
339      * @tc.steps: step6. call ActLongClick
340      *                   case: longPressEventActuator_ is not null
341      * @tc.expected: flag is true & longPressCallback will be called
342      */
343     flag = gestureEventHub->ActLongClick();
344     EXPECT_TRUE(flag);
345     EXPECT_EQ(msg1, CHECK_TAG_1);
346 
347     /**
348      * @tc.steps: step7. call eventHub's GetOrCreateFocusHub
349      * @tc.expected: return is not null
350      */
351     auto focusHub = eventHub->GetOrCreateFocusHub();
352     EXPECT_TRUE(focusHub);
353 
354     /**
355      * @tc.steps: step8. call SetFocusClickEvent
356      * @tc.expected: no fatal error occur
357      */
358     msg1 = "";
__anon9b9e2c481302(GestureEvent& ) 359     auto clickCallback3 = [&msg1](GestureEvent& /* info */) { msg1 = CHECK_TAG_1; };
360     gestureEventHub->SetFocusClickEvent(clickCallback3);
361 }
362 
363 /**
364  * @tc.name: GestureEventHubTest006
365  * @tc.desc: Test CombineIntoExclusiveRecognizer
366  * @tc.type: FUNC
367  */
368 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest006, TestSize.Level1)
369 {
370     /**
371      * @tc.steps: step1. Create GestureEventHub.
372      * @tc.expected: gestureEventHub is not null.
373      */
374     auto eventHub = AceType::MakeRefPtr<EventHub>();
375     EXPECT_TRUE(eventHub);
376     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
377     EXPECT_TRUE(gestureEventHub);
378 
379     /**
380      * @tc.steps: step2. call CombineIntoExclusiveRecognizer
381      *            case: result is empty
382      * @tc.expected: result is empty
383      */
384     TouchTestResult result;
385     gestureEventHub->CombineIntoExclusiveRecognizer(GLOBAL_POINT, LOCAL_POINT, result, TOUCH_ID);
386     auto size = static_cast<int32_t>(result.size());
387     EXPECT_EQ(size, 0);
388 
389     /**
390      * @tc.steps: step3. insert element to result
391      * @tc.expected: result'size is 3
392      */
393 
394     // new TouchEventActuator
395     auto touchEventActuator = AceType::MakeRefPtr<TouchEventActuator>();
396 
397     // new LongPressRecognizer (extends NGGestureRecognizer)
398     auto longPressRecognizer = AceType::MakeRefPtr<LongPressRecognizer>(false, false);
399 
400     // new ClickRecognizer (extends NGGestureRecognizer)
401     auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>();
402 
403     result.emplace_back(touchEventActuator);
404     result.emplace_back(longPressRecognizer);
405     result.emplace_back(clickRecognizer);
406     size = static_cast<int32_t>(result.size());
407     EXPECT_EQ(size, 3);
408 
409     /**
410      * @tc.steps: step4. call CombineIntoExclusiveRecognizer
411      *            case: recognizers'size > 1
412      * @tc.expected: result'size is 2. One is touchEventActuator, the other is a exclusiveRecognizer created by
413      *               longPressRecognizer and clickRecognizer
414      */
415     gestureEventHub->CombineIntoExclusiveRecognizer(GLOBAL_POINT, LOCAL_POINT, result, TOUCH_ID);
416     size = static_cast<int32_t>(result.size());
417     EXPECT_EQ(size, 2);
418 
419     /**
420      * @tc.steps: step5. call CombineIntoExclusiveRecognizer
421      *            case: recognizers'size = 1
422      * @tc.expected: result2'size is 2. One is touchEventActuator, the other is longPressRecognizer
423      */
424     TouchTestResult result2;
425     result2.emplace_back(touchEventActuator);
426     result2.emplace_back(longPressRecognizer);
427     gestureEventHub->CombineIntoExclusiveRecognizer(GLOBAL_POINT, LOCAL_POINT, result2, TOUCH_ID);
428     size = static_cast<int32_t>(result2.size());
429     EXPECT_EQ(size, 2);
430 }
431 
432 /**
433  * @tc.name: GestureEventHubTest007
434  * @tc.desc: Test InitDragDropEvent
435  * @tc.type: FUNC
436  */
437 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest007, TestSize.Level1)
438 {
439     /**
440      * @tc.steps: step1. Create GestureEventHub.
441      * @tc.expected: gestureEventHub is not null.
442      */
443     auto eventHub = AceType::MakeRefPtr<EventHub>();
444     EXPECT_TRUE(eventHub);
445     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
446     EXPECT_TRUE(gestureEventHub);
447 
448     /**
449      * @tc.steps: step2. Call InitDragDropEvent.
450      * @tc.expected: dragEventActuator_ is not null.
451      */
452     gestureEventHub->InitDragDropEvent();
453     EXPECT_TRUE(gestureEventHub->dragEventActuator_);
454 }
455 
456 /**
457  * @tc.name: GestureEventHubTest008
458  * @tc.desc: Test Functions related with drag
459  * @tc.type: FUNC
460  */
461 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest008, TestSize.Level1)
462 {
463     /**
464      * @tc.steps: step1. Create GestureEventHub.
465      * @tc.expected: gestureEventHub is not null.
466      */
467     auto eventHub = AceType::MakeRefPtr<EventHub>();
468     EXPECT_TRUE(eventHub);
469     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
470     EXPECT_TRUE(gestureEventHub);
471 
472     /**
473      * @tc.steps: step2. call HandleOnDragStart
474      *            case: eventHub->HasOnDragStart() is null
475      * @tc.expected: dragDropProxy_ is null.
476      */
477     GestureEvent info;
478     gestureEventHub->HandleOnDragStart(info);
479     EXPECT_FALSE(gestureEventHub->dragDropProxy_);
480 
481     /**
482      * @tc.steps: step3. set OnDragStart for eventHub
483      *            after that eventHub->HasOnDragStart() is not null
484      *            case: dragDropInfo.customNode is not null
485      */
486     RefPtr<UINode> customNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
487     auto onDragStart = [&customNode](
__anon9b9e2c481402( const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 488                            const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
489         DragDropInfo dragDropInfo;
490         dragDropInfo.customNode = customNode;
491         return dragDropInfo;
492     };
493     eventHub->SetOnDragStart(std::move(onDragStart));
494 
495     /**
496      * @tc.steps: step4. call HandleOnDragStart
497      *            case: dragDropInfo.customNode is not null
498      * @tc.expected: dragDropProxy_ is not null.
499      */
500     gestureEventHub->HandleOnDragStart(info);
501     EXPECT_FALSE(gestureEventHub->dragDropProxy_);
502 
503     /**
504      * @tc.steps: step5. set OnDragStart for eventHub2
505      *            after that eventHub->HasOnDragStart() is not null
506      *            case: dragDropInfo.pixelMap is not null
507      */
508     void* voidPtr = static_cast<void*>(new char[0]);
509     RefPtr<PixelMap> pixelMap = PixelMap::CreatePixelMap(voidPtr);
510     auto onDragStart2 = [&pixelMap](
__anon9b9e2c481502( const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 511                             const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
512         DragDropInfo dragDropInfo;
513         dragDropInfo.pixelMap = pixelMap;
514         return dragDropInfo;
515     };
516     auto eventHub2 = AceType::MakeRefPtr<EventHub>();
517     EXPECT_TRUE(eventHub2);
518     eventHub2->SetOnDragStart(std::move(onDragStart2));
519     auto gestureEventHub2 = AceType::MakeRefPtr<GestureEventHub>(eventHub2);
520     EXPECT_TRUE(gestureEventHub2);
521 
522     /**
523      * @tc.steps: step6. call HandleOnDragStart
524      *            case: dragDropInfo.pixelMap is not null
525      * @tc.expected: dragDropProxy_ is not null.
526      */
527     gestureEventHub2->HandleOnDragStart(info);
528     EXPECT_FALSE(gestureEventHub2->dragDropProxy_);
529 
530     /**
531      * @tc.steps: step7. call HandleOnDragStart again
532      *            case: dragDropProxy_ need to reset
533      * @tc.expected: dragDropProxy_ is not null.
534      */
535     gestureEventHub2->HandleOnDragStart(info);
536     EXPECT_FALSE(gestureEventHub2->dragDropProxy_);
537 
538     /**
539      * @tc.steps: step8. call HandleOnDragUpdate
540      * @tc.expected: dragDropProxy_ is not null.
541      */
542     gestureEventHub2->HandleOnDragUpdate(info);
543     EXPECT_FALSE(gestureEventHub2->dragDropProxy_);
544 
545     /**
546      * @tc.steps: step9. call HandleOnDragCancel
547      * @tc.expected: dragDropProxy_ is null.
548      */
549     gestureEventHub2->HandleOnDragCancel();
550     EXPECT_FALSE(gestureEventHub2->dragDropProxy_);
551 
552     /**
553      * @tc.steps: step10. call HandleOnDragEnd
554      *            case: eventHub->HasOnDrop() is false
555      * @tc.expected: dragDropProxy_ is null.
556      */
557     gestureEventHub->HandleOnDragEnd(info);
558     EXPECT_FALSE(gestureEventHub->dragDropProxy_);
559 
560     /**
561      * @tc.steps: step10. call HandleOnDragEnd
562      *            case: eventHub->HasOnDrop() is true
563      * @tc.expected: dragDropProxy_ is null
564      *               onDrop has been called, msg1 = CHECK_TAG_1
565      */
566     std::string msg1;
__anon9b9e2c481602(const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 567     auto onDrop = [&msg1](const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
568         msg1 = CHECK_TAG_1;
569     };
570     eventHub->SetOnDrop(std::move(onDrop));
571     gestureEventHub->HandleOnDragStart(info);
572     gestureEventHub->HandleOnDragEnd(info);
573     EXPECT_FALSE(gestureEventHub->dragDropProxy_);
574     EXPECT_EQ(msg1, "");
575 }
576 
577 /**
578  * @tc.name: GestureEventHubTest009
579  * @tc.desc: Test ModifyDone & UpdateGestureHierarchy
580  * @tc.type: FUNC
581  */
582 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest009, TestSize.Level1)
583 {
584     /**
585      * @tc.steps: step1. Create GestureEventHub.
586      * @tc.expected: gestureEventHub is not null.
587      */
588     auto eventHub = AceType::MakeRefPtr<EventHub>();
589     EXPECT_TRUE(eventHub);
590     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
591     eventHub->AttachHost(frameNode);
592     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
593     EXPECT_TRUE(gestureEventHub);
594 
595     /**
596      * @tc.steps: step2. call OnModifyDone
597      *            case: recreateGesture_ is true & gestures_.size() == gestureHierarchy_.size() == 0
598      * @tc.expected: recreateGesture_ = false
599      */
600     gestureEventHub->OnModifyDone();
601     EXPECT_FALSE(gestureEventHub->recreateGesture_);
602 
603     /**
604      * @tc.steps: step3. call OnModifyDone
605      *            case: recreateGesture_ is false
606      * @tc.expected: recreateGesture_ = false
607      */
608     gestureEventHub->OnModifyDone();
609     EXPECT_FALSE(gestureEventHub->recreateGesture_);
610 
611     /**
612      * @tc.steps: step4. call OnModifyDone
613      *            case: recreateGesture_ is true & gestures_.size() != gestureHierarchy_.size()
614      * @tc.expected: recreateGesture_ = false
615      *               gestures_ has cleared & gestureHierarchy_ has one element
616      */
617     gestureEventHub->recreateGesture_ = true;
618     auto longPressGesture = AceType::MakeRefPtr<LongPressGesture>(FINGERS, false, 1);
619     gestureEventHub->gestures_.emplace_back(longPressGesture);
620     gestureEventHub->OnModifyDone();
621     EXPECT_FALSE(gestureEventHub->recreateGesture_);
622     auto sizeGestures = static_cast<int32_t>(gestureEventHub->gestures_.size());
623     auto sizeGestureHierarchy = static_cast<int32_t>(gestureEventHub->gestureHierarchy_.size());
624     EXPECT_EQ(sizeGestures, 0);
625     EXPECT_EQ(sizeGestureHierarchy, 1);
626 }
627 
628 /**
629  * @tc.name: GestureEventHubTest010
630  * @tc.desc: Test ProcessTouchTestHierarchy
631  * @tc.type: FUNC
632  */
633 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest010, TestSize.Level1)
634 {
635     /**
636      * @tc.steps: step1. Create GestureEventHub.
637      * @tc.expected: gestureEventHub is not null.
638      */
639     auto eventHub = AceType::MakeRefPtr<EventHub>();
640     EXPECT_TRUE(eventHub);
641     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
642     eventHub->AttachHost(frameNode);
643     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
644     EXPECT_TRUE(gestureEventHub);
645 
646     /**
647      * @tc.steps: step2. call ProcessTouchTestHierarchy
648      *            case: innerRecognizers & gestureHierarchy_ is empty, current is null
649      * @tc.expected: finalResult is empty
650      */
651     TouchRestrict touchRestrict;
652     std::list<RefPtr<NGGestureRecognizer>> innerTargets;
653     TouchTestResult finalResult;
654     ResponseLinkResult responseLinkResult;
655 
656     std::vector<RefPtr<NGGestureRecognizer>> vc;
657     vc.push_back(AceType::MakeRefPtr<ClickRecognizer>());
658     auto exclusiveRecognizer = AceType::MakeRefPtr<ExclusiveRecognizer>(vc);
659     std::vector<RefPtr<NGGestureRecognizer>> parallelVc;
660     parallelVc.push_back(AceType::MakeRefPtr<ClickRecognizer>());
661     auto parallelRecognizer = AceType::MakeRefPtr<ParallelRecognizer>(parallelVc);
662 
663     gestureEventHub->externalExclusiveRecognizer_.push_back(exclusiveRecognizer);
664     gestureEventHub->externalParallelRecognizer_.push_back(parallelRecognizer);
665     EXPECT_EQ(static_cast<int32_t>(gestureEventHub->externalExclusiveRecognizer_.size()), 1);
666     EXPECT_EQ(static_cast<int32_t>(gestureEventHub->externalParallelRecognizer_.size()), 1);
667 
668     gestureEventHub->ProcessTouchTestHierarchy(
669         COORDINATE_OFFSET, touchRestrict, innerTargets, finalResult, TOUCH_ID, nullptr, responseLinkResult);
670     EXPECT_TRUE(finalResult.empty());
671 
672     /**
673      * @tc.steps: step3. call ProcessTouchTestHierarchy several
674      *            case: innerRecognizers & gestureHierarchy_ is not all empty
675      * @tc.expected: finalResult's size has increased by 1 per call
676      */
677     auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>(FINGERS, 1); // priority == GesturePriority::Low
678     innerTargets.emplace_back(clickRecognizer);
679 
680     gestureEventHub->gestureHierarchy_.emplace_back(nullptr);
681     auto clickRecognizer2 = AceType::MakeRefPtr<ClickRecognizer>(FINGERS, 1);
682     clickRecognizer2->SetPriorityMask(GestureMask::IgnoreInternal);           // current will assigned to this
683     auto clickRecognizer3 = AceType::MakeRefPtr<ClickRecognizer>(FINGERS, 1); // priority == GesturePriority::High
684     clickRecognizer3->SetPriority(GesturePriority::High);
685     auto clickRecognizer4 = AceType::MakeRefPtr<ClickRecognizer>(FINGERS, 1); // priority == GesturePriority::Parallel
686     clickRecognizer4->SetPriority(GesturePriority::Parallel);
687     auto clickRecognizer5 = AceType::MakeRefPtr<ClickRecognizer>(FINGERS, 1); // priority == GesturePriority::Parallel
688     clickRecognizer5->SetPriority(GesturePriority::Parallel);
689 
690     gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
691     gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer4);
692     gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer2);
693     gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer3);
694     gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer5);
695 
696     gestureEventHub->ProcessTouchTestHierarchy(
697         COORDINATE_OFFSET, touchRestrict, innerTargets, finalResult, TOUCH_ID, nullptr, responseLinkResult);
698     auto sizeOfFinalResult = static_cast<int32_t>(finalResult.size());
699     EXPECT_EQ(sizeOfFinalResult, 1);
700 
701     auto clickRecognizer6 = AceType::MakeRefPtr<ClickRecognizer>(FINGERS, 1); // priority == GesturePriority::Low
702     std::list<RefPtr<NGGestureRecognizer>> innerTargets2;
703     innerTargets2.emplace_back(clickRecognizer);
704     innerTargets2.emplace_back(clickRecognizer6);
705     gestureEventHub->ProcessTouchTestHierarchy(
706         COORDINATE_OFFSET, touchRestrict, innerTargets2, finalResult, TOUCH_ID, nullptr, responseLinkResult);
707     sizeOfFinalResult = static_cast<int32_t>(finalResult.size());
708     EXPECT_EQ(sizeOfFinalResult, 2);
709 
710     std::list<RefPtr<NGGestureRecognizer>> innerTargets3;
711     innerTargets3.emplace_back(clickRecognizer);
712     innerTargets3.emplace_back(clickRecognizer6);
713     gestureEventHub->ProcessTouchTestHierarchy(
714         COORDINATE_OFFSET, touchRestrict, innerTargets3, finalResult, TOUCH_ID, nullptr, responseLinkResult);
715     sizeOfFinalResult = static_cast<int32_t>(finalResult.size());
716     EXPECT_EQ(sizeOfFinalResult, 3);
717 
718     std::list<RefPtr<NGGestureRecognizer>> innerTargets4;
719     gestureEventHub->gestureHierarchy_.clear();
720     gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer4);
721     gestureEventHub->ProcessTouchTestHierarchy(
722         COORDINATE_OFFSET, touchRestrict, innerTargets4, finalResult, TOUCH_ID, nullptr, responseLinkResult);
723     sizeOfFinalResult = static_cast<int32_t>(finalResult.size());
724     EXPECT_EQ(sizeOfFinalResult, 4);
725 
726     std::list<RefPtr<NGGestureRecognizer>> innerTargets5;
727     gestureEventHub->gestureHierarchy_.clear();
728     gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
729     gestureEventHub->ProcessTouchTestHierarchy(
730         COORDINATE_OFFSET, touchRestrict, innerTargets5, finalResult, TOUCH_ID, nullptr, responseLinkResult);
731     sizeOfFinalResult = static_cast<int32_t>(finalResult.size());
732     EXPECT_EQ(sizeOfFinalResult, 5);
733 }
734 
735 /**
736  * @tc.name: GestureEventHubTest011
737  * @tc.desc: Test IsAccessibilityClickable and IsAccessibiityLongClickable
738  * @tc.type: FUNC
739  */
740 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest011, TestSize.Level1)
741 {
742     /**
743      * @tc.steps: step1. Create GestureEventHub.
744      * @tc.expected: gestureEventHub is not null.
745      */
746     auto eventHub = AceType::MakeRefPtr<EventHub>();
747     ASSERT_NE(eventHub, nullptr);
748     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
749     ASSERT_NE(frameNode, nullptr);
750     eventHub->AttachHost(frameNode);
751     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
752     ASSERT_NE(gestureEventHub, nullptr);
753 
754     /**
755      * @tc.steps: step2. gestureHierarchy_ has ClickRecognizer, the number of fingers is two or click count is two
756      * @tc.expected: IsAccessibilityClickable is false
757      */
758     EXPECT_FALSE(gestureEventHub->IsAccessibilityClickable());
759 
760     auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>(DOUBLE_FINGERS, 1);
761     gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
762     EXPECT_FALSE(gestureEventHub->IsAccessibilityClickable());
763     gestureEventHub->gestureHierarchy_.clear();
764     clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>(1, CLICK_COUNTS);
765     gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
766     EXPECT_FALSE(gestureEventHub->IsAccessibilityClickable());
767     gestureEventHub->gestureHierarchy_.clear();
768 
769     /**
770      * @tc.steps: step3. gestureHierarchy_ has ClickRecognizer, the number of fingers is one
771      * @tc.expected: IsAccessibilityClickable is true
772      */
773     clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>(FINGERS, 1);
774     gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
775     EXPECT_TRUE(gestureEventHub->IsAccessibilityClickable());
776     gestureEventHub->gestureHierarchy_.clear();
777 
778     /**
779      * @tc.steps: step4. call AddClickEvent
780      * @tc.expected: IsAccessibilityClickable is true
781      */
__anon9b9e2c481702(GestureEvent& info) 782     auto clickCallback = [](GestureEvent& info) {};
783     auto clickEvent = AceType::MakeRefPtr<ClickEvent>(std::move(clickCallback));
784     gestureEventHub->AddClickEvent(clickEvent);
785     EXPECT_TRUE(gestureEventHub->IsAccessibilityClickable());
786 
787     /**
788      * @tc.steps: step5. gestureHierarchy_ has LongPressRecognizer, the number of fingers is two
789      * @tc.expected: IsAccessibilityLongClickable is false
790      */
791     EXPECT_FALSE(gestureEventHub->IsAccessibilityLongClickable());
792 
793     auto longPressRecognizer = AceType::MakeRefPtr<LongPressRecognizer>(1, DOUBLE_FINGERS, false);
794     gestureEventHub->gestureHierarchy_.emplace_back(longPressRecognizer);
795     EXPECT_FALSE(gestureEventHub->IsAccessibilityLongClickable());
796     gestureEventHub->gestureHierarchy_.clear();
797 
798     /**
799      * @tc.steps: step6. gestureHierarchy_ has LongPressRecognizer, the number of fingers is one
800      * @tc.expected: IsAccessibilityLongClickable is false
801      */
802     longPressRecognizer = AceType::MakeRefPtr<LongPressRecognizer>(1, 1, false);
803     gestureEventHub->gestureHierarchy_.emplace_back(longPressRecognizer);
804     EXPECT_TRUE(gestureEventHub->IsAccessibilityLongClickable());
805     gestureEventHub->gestureHierarchy_.clear();
806 
807     /**
808      * @tc.steps: step7. call SetLongPressEvent
809      * @tc.expected: IsAccessibilityLongClickable is true
810      */
__anon9b9e2c481802(GestureEvent& info) 811     auto longPressCallback = [](GestureEvent& info) {};
812     auto longPressEvent = AceType::MakeRefPtr<LongPressEvent>(longPressCallback);
813     gestureEventHub->SetLongPressEvent(longPressEvent);
814     EXPECT_TRUE(gestureEventHub->IsAccessibilityLongClickable());
815 }
816 
817 /**
818  * @tc.name: GestureEventHubTest012
819  * @tc.desc: Test UpdateGestureHierarchy
820  * @tc.type: FUNC
821  */
822 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest012, TestSize.Level1)
823 {
824     /**
825      * @tc.steps: step1. Create GestureEventHub.
826      * @tc.expected: gestureEventHub is not null.
827      */
828     auto eventHub = AceType::MakeRefPtr<EventHub>();
829     ASSERT_NE(eventHub, nullptr);
830     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
831     ASSERT_NE(frameNode, nullptr);
832     eventHub->AttachHost(frameNode);
833     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
834     ASSERT_NE(gestureEventHub, nullptr);
835 
836     /**
837      * @tc.steps: step2. call OnModifyDone
838      * @tc.expected: gestureHierarchy_ has two elements
839      */
840     gestureEventHub->recreateGesture_ = true;
841     auto tapGesture = AceType::MakeRefPtr<TapGesture>(FINGERS, 1);
842     gestureEventHub->gestures_.emplace_back(tapGesture);
843     auto longPressGesture = AceType::MakeRefPtr<LongPressGesture>(FINGERS, false, 1);
844     gestureEventHub->gestures_.emplace_back(longPressGesture);
845     auto onAccessibilityEvent = gestureEventHub->GetOnAccessibilityEventFunc();
846     ASSERT_NE(onAccessibilityEvent, nullptr);
847     onAccessibilityEvent(AccessibilityEventType::CLICK);
848     gestureEventHub->OnModifyDone();
849 
850     auto sizeGestureHierarchy = static_cast<int32_t>(gestureEventHub->gestureHierarchy_.size());
851     EXPECT_EQ(sizeGestureHierarchy, GESTURES_COUNTS);
852 }
853 
854 /**
855  * @tc.name: GestureEventHubTest013
856  * @tc.desc: Test ProcessTouchTestHit
857  * @tc.type: FUNC
858  */
859 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest013, TestSize.Level1)
860 {
861     /**
862      * @tc.steps: step1. Create GestureEventHub.
863      * @tc.expected: gestureEventHub is not null.
864      */
865     auto frameNode = FrameNode::CreateFrameNode("myButton", 100, AceType::MakeRefPtr<Pattern>());
866     auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
867     ASSERT_NE(guestureEventHub, nullptr);
868     OffsetF coordinateOffset;
869     TouchRestrict touchRestrict;
870     TouchTestResult innerTargets;
871     TouchTestResult finalResult;
872     ResponseLinkResult responseLinkResult;
873     PointF localPoint;
874 
875     PanDirection panDirection;
876     /**
877      * @tc.steps: step2. call ProcessTouchTestHit
878      * @tc.expected: result is true
879      */
880     guestureEventHub->scrollableActuator_ =
881         AceType::MakeRefPtr<ScrollableActuator>(AceType::WeakClaim(AceType::RawPtr(guestureEventHub)));
882     guestureEventHub->touchEventActuator_ = AceType::MakeRefPtr<TouchEventActuator>();
883     guestureEventHub->clickEventActuator_ =
884         AceType::MakeRefPtr<ClickEventActuator>(AceType::WeakClaim(AceType::RawPtr(guestureEventHub)));
885     guestureEventHub->panEventActuator_ = AceType::MakeRefPtr<PanEventActuator>(
886         AceType::WeakClaim(AceType::RawPtr(guestureEventHub)), panDirection, 1, 50.0f);
887     guestureEventHub->longPressEventActuator_ =
888         AceType::MakeRefPtr<LongPressEventActuator>(AceType::WeakClaim(AceType::RawPtr(guestureEventHub)));
889     guestureEventHub->dragEventActuator_ = AceType::MakeRefPtr<DragEventActuator>(
890         AceType::WeakClaim(AceType::RawPtr(guestureEventHub)), panDirection, 1, 50.0f);
891     auto result = guestureEventHub->ProcessTouchTestHit(
892         coordinateOffset, touchRestrict, innerTargets, finalResult, 2, localPoint, nullptr, responseLinkResult);
893     EXPECT_FALSE(result);
894 }
895 
896 /**
897  * @tc.name: GestureEventHubTest014
898  * @tc.desc: Test IsAllowedDrag
899  * @tc.type: FUNC
900  */
901 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest014, TestSize.Level1)
902 {
903     /**
904      * @tc.steps: step1. Create GestureEventHub.
905      * @tc.expected: gestureEventHub is not null.
906      */
907     auto frameNode = FrameNode::CreateFrameNode("myButton", 101, AceType::MakeRefPtr<Pattern>());
908     auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
909     ASSERT_NE(guestureEventHub, nullptr);
910 
911     auto eventHub = guestureEventHub->eventHub_.Upgrade();
912 
913     auto event = guestureEventHub->eventHub_.Upgrade();
914     event->host_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
915     auto result = guestureEventHub->IsAllowedDrag(eventHub);
916     ASSERT_FALSE(result);
917     /**
918      * @tc.steps: step2. call IsAllowedDrag
919      * @tc.expected: result is correct
920      */
921     frameNode->userSet_ = true;
922     result = guestureEventHub->IsAllowedDrag(eventHub);
923     ASSERT_FALSE(result);
924 
925     frameNode->userSet_ = false;
__anon9b9e2c481902(const RefPtr<OHOS::Ace::DragEvent>&, const std::string&) 926     auto func = [](const RefPtr<OHOS::Ace::DragEvent>&, const std::string&) { return DragDropInfo(); };
927     eventHub->onDragStart_ = func;
928     result = guestureEventHub->IsAllowedDrag(eventHub);
929     ASSERT_TRUE(result);
930 
931     guestureEventHub->HandleOnDragStart(GestureEvent());
932 
933     frameNode->draggable_ = true;
934     result = guestureEventHub->IsAllowedDrag(eventHub);
935     ASSERT_TRUE(result);
936 
937     frameNode->draggable_ = true;
938     eventHub->onDragStart_ = nullptr;
939     result = guestureEventHub->IsAllowedDrag(eventHub);
940     ASSERT_FALSE(result);
941 }
942 
943 /**
944  * @tc.name: GestureEventHubTest015
945  * @tc.desc: Test StartDragTaskForWeb HandleNotallowDrag
946  * @tc.type: FUNC
947  */
948 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest015, TestSize.Level1)
949 {
950     /**
951      * @tc.steps: step1. Create GestureEventHub.
952      * @tc.expected: gestureEventHub is not null.
953      */
954     auto frameNode = FrameNode::CreateFrameNode("myButton", 102, AceType::MakeRefPtr<Pattern>());
955     auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
956     ASSERT_NE(guestureEventHub, nullptr);
957 
958     auto event = guestureEventHub->eventHub_.Upgrade();
959     event->host_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
960 
961     guestureEventHub->StartDragTaskForWeb();
962 
963     guestureEventHub->isReceivedDragGestureInfo_ = true;
964     guestureEventHub->StartDragTaskForWeb();
965     ASSERT_FALSE(guestureEventHub->isReceivedDragGestureInfo_);
966 
967     guestureEventHub->HandleNotallowDrag(GestureEvent());
968 
969     frameNode = FrameNode::CreateFrameNode("Web", 102, AceType::MakeRefPtr<Pattern>());
970     guestureEventHub = frameNode->GetOrCreateGestureEventHub();
971     event = guestureEventHub->eventHub_.Upgrade();
972     event->host_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
973 
974     frameNode->userSet_ = false;
__anon9b9e2c481a02(const RefPtr<OHOS::Ace::DragEvent>&, const std::string&) 975     auto func = [](const RefPtr<OHOS::Ace::DragEvent>&, const std::string&) { return DragDropInfo(); };
976     event->onDragStart_ = func;
977     guestureEventHub->HandleOnDragStart(GestureEvent());
978 
979     guestureEventHub->HandleNotallowDrag(GestureEvent());
980     ASSERT_TRUE(guestureEventHub->isReceivedDragGestureInfo_);
981 }
982 
983 /**
984  * @tc.name: GestureEventHubTest016
985  * @tc.desc: Test BindMenu
986  * @tc.type: FUNC
987  */
988 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest016, TestSize.Level1)
989 {
990     /**
991      * @tc.steps: step1. Create GestureEventHub.
992      * @tc.expected: gestureEventHub is not null.
993      */
994     auto frameNode = FrameNode::CreateFrameNode("myButton", 102, AceType::MakeRefPtr<Pattern>());
995     auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
996     ASSERT_NE(guestureEventHub, nullptr);
997 
998     auto eventHub = guestureEventHub->eventHub_.Upgrade();
999     eventHub->host_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
1000 
1001     auto pipline = PipelineContext::GetCurrentContext();
__anon9b9e2c481b02(GestureEvent& info) 1002     auto func = [](GestureEvent& info) {};
1003     guestureEventHub->BindMenu(func);
1004 
__anon9b9e2c481c02(GestureEvent& info) 1005     guestureEventHub->showMenu_ = AceType::MakeRefPtr<ClickEvent>([](GestureEvent& info) {});
1006     guestureEventHub->BindMenu(func);
1007 
1008     guestureEventHub->clickEventActuator_ = nullptr;
1009     guestureEventHub->ClearUserOnClick();
1010     guestureEventHub->ClearUserOnTouch();
1011 
1012     guestureEventHub->clickEventActuator_ =
1013         AceType::MakeRefPtr<ClickEventActuator>(AceType::WeakClaim(AceType::RawPtr(guestureEventHub)));
1014     guestureEventHub->touchEventActuator_ = AceType::MakeRefPtr<TouchEventActuator>();
1015     guestureEventHub->ClearUserOnClick();
1016     guestureEventHub->ClearUserOnTouch();
1017     ASSERT_FALSE(guestureEventHub->clickEventActuator_->userCallback_);
1018 }
1019 
1020 /**
1021  * @tc.name: GestureEventHubTest017
1022  * @tc.desc: Test ProcessTouchTestHit
1023  * @tc.type: FUNC
1024  */
1025 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest017, TestSize.Level1)
1026 {
1027     /**
1028      * @tc.steps: step1. Create GestureEventHub.
1029      * @tc.expected: gestureEventHub is not null.
1030      */
1031     auto frameNode = FrameNode::CreateFrameNode("myButton", 100, AceType::MakeRefPtr<Pattern>());
1032     auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1033     ASSERT_NE(guestureEventHub, nullptr);
1034     OffsetF coordinateOffset;
1035     TouchRestrict touchRestrict;
1036     TouchTestResult innerTargets;
1037     TouchTestResult finalResult;
1038     ResponseLinkResult responseLinkResult;
1039     PointF localPoint;
1040 
1041     PanDirection panDirection;
1042     guestureEventHub->panEventActuator_ = AceType::MakeRefPtr<PanEventActuator>(
1043         AceType::WeakClaim(AceType::RawPtr(guestureEventHub)), panDirection, 1, 50.0f);
1044     /**
1045      * @tc.steps: step2. call ProcessTouchTestHit , recognizer is not instance of recognizer group
1046      * @tc.expected: result is false
1047      */
1048     guestureEventHub->longPressEventActuator_ =
1049         AceType::MakeRefPtr<LongPressEventActuator>(AceType::WeakClaim(AceType::RawPtr(guestureEventHub)));
1050     guestureEventHub->dragEventActuator_ = nullptr;
1051 
1052     auto result = guestureEventHub->ProcessTouchTestHit(
1053         coordinateOffset, touchRestrict, innerTargets, finalResult, 2, localPoint, nullptr, responseLinkResult);
1054     EXPECT_FALSE(result);
1055     /**
1056      * @tc.steps: step3. call ProcessTouchTestHit , recognizer is instance of recognizer group.
1057      * @tc.expected: result is false
1058      */
__anon9b9e2c481d02(GestureEvent& info) 1059     GestureEventFunc callback = [](GestureEvent& info) {};
1060     auto longPressEvent = AceType::MakeRefPtr<LongPressEvent>(std::move(callback));
1061     guestureEventHub->longPressEventActuator_->SetLongPressEvent(longPressEvent);
1062 
1063     guestureEventHub->dragEventActuator_ = AceType::MakeRefPtr<DragEventActuator>(
1064         AceType::WeakClaim(AceType::RawPtr(guestureEventHub)), panDirection, 1, 50.0f);
1065 
__anon9b9e2c481e02(GestureEvent& info) 1066     auto dragActionStart = [](GestureEvent& info) {};
__anon9b9e2c481f02(GestureEvent& info) 1067     auto dragActionUpdate = [](GestureEvent& info) {};
__anon9b9e2c482002(GestureEvent& info) 1068     auto dragActionEnd = [](GestureEvent& info) {};
__anon9b9e2c482102() 1069     auto dragActionCancel = []() {};
1070     auto dragEvent = AceType::MakeRefPtr<DragEvent>(
1071         std::move(dragActionStart), std::move(dragActionUpdate), std::move(dragActionEnd), std::move(dragActionCancel));
1072     guestureEventHub->dragEventActuator_->userCallback_ = dragEvent;
1073     guestureEventHub->userParallelClickEventActuator_ =
1074         AceType::MakeRefPtr<ClickEventActuator>(AceType::WeakClaim(AceType::RawPtr(guestureEventHub)));
1075     result = guestureEventHub->ProcessTouchTestHit(
1076         coordinateOffset, touchRestrict, innerTargets, finalResult, 2, localPoint, nullptr, responseLinkResult);
1077     EXPECT_FALSE(result);
1078 }
1079 
1080 /**
1081  * @tc.name: GestureEventHubTest018
1082  * @tc.desc: Test HandleOnDragStart
1083  * @tc.type: FUNC
1084  */
1085 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest018, TestSize.Level1)
1086 {
1087     /**
1088      * @tc.steps: step1. create GestureEventHub.
1089      * @tc.expected: gestureEventHub is not null.
1090      */
1091     auto eventHub = AceType::MakeRefPtr<EventHub>();
1092     EXPECT_TRUE(eventHub);
1093     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1094     eventHub->AttachHost(frameNode);
1095     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1096     EXPECT_TRUE(gestureEventHub);
1097 
1098     /**
1099      * @tc.steps: step2. update the input parameter attributes.
1100      */
1101     RefPtr<UINode> customNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1102     auto onDragStart = [&customNode](
__anon9b9e2c482202( const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 1103                            const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
1104         DragDropInfo dragDropInfo;
1105         dragDropInfo.customNode = customNode;
1106         return dragDropInfo;
1107     };
1108     eventHub->SetOnDragStart(std::move(onDragStart));
1109 
1110     auto retFlag = gestureEventHub->IsAllowedDrag(eventHub);
1111     EXPECT_TRUE(retFlag);
1112 
1113     auto eventManager = AceType::MakeRefPtr<EventManager>();
1114     EXPECT_TRUE(eventManager);
1115     eventManager->SetLastMoveBeforeUp(true);
1116 
1117     auto pipeline = PipelineContext::GetCurrentContext();
1118     pipeline->SetEventManager(eventManager);
1119 
1120     GestureEvent gestureEvent;
1121     gestureEvent.SetInputEventType(InputEventType::MOUSE_BUTTON);
1122     gestureEventHub->HandleOnDragStart(gestureEvent);
1123     EXPECT_TRUE(pipeline->GetEventManager());
1124     eventManager->SetLastMoveBeforeUp(false);
1125     gestureEvent.SetInputEventType(InputEventType::TOUCH_SCREEN);
1126 
1127     /**
1128      * @tc.steps: step3. call HandleOnDragStart with SourceType::MOUSE_BUTTON and InputEventType::TOUCH_SCREEN.
1129      * @tc.expected: eventManager->IsLastMoveBeforeUp() the return value is false.
1130      */
1131     gestureEventHub->HandleOnDragStart(gestureEvent);
1132     EXPECT_FALSE(eventManager->IsLastMoveBeforeUp());
1133 }
1134 
1135 /**
1136  * @tc.name: GestureEventHubTest0181
1137  * @tc.desc: Test HandleOnDragStart
1138  * @tc.type: FUNC
1139  */
1140 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest0181, TestSize.Level1)
1141 {
1142     /**
1143      * @tc.steps: step1. create GestureEventHub.
1144      * @tc.expected: gestureEventHub is not null.
1145      */
1146     auto eventHub = AceType::MakeRefPtr<EventHub>();
1147     EXPECT_TRUE(eventHub);
1148     auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::WEB_ETS_TAG, -1, AceType::MakeRefPtr<Pattern>());
1149 
1150     /**
1151      * @tc.steps: step2. update the input parameter attributes.
1152      */
1153     RefPtr<UINode> customNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1154     DragDropInfo dragDropInfo;
1155     dragDropInfo.customNode = customNode;
1156     frameNode->SetDragPreview(dragDropInfo);
1157 
1158     eventHub->AttachHost(frameNode);
1159     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1160     EXPECT_TRUE(gestureEventHub);
1161 
1162     auto onDragStart = [&customNode](
__anon9b9e2c482302( const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 1163                            const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
1164         DragDropInfo dragDropInfo;
1165         dragDropInfo.customNode = customNode;
1166         return dragDropInfo;
1167     };
1168     eventHub->SetOnDragStart(std::move(onDragStart));
1169 
1170     auto eventManager = AceType::MakeRefPtr<EventManager>();
1171     EXPECT_TRUE(eventManager);
1172 
1173     auto pipeline = PipelineContext::GetCurrentContext();
1174     pipeline->SetEventManager(eventManager);
1175     eventManager->SetLastMoveBeforeUp(false);
1176 
1177     /**
1178      * @tc.steps: step3. call HandleOnDragStart with SourceType::MOUSE and InputEventType::TOUCH_SCREEN.
1179      * @tc.expected: eventManager->IsLastMoveBeforeUp() the return value is false.
1180      */
1181     GestureEvent gestureEvent;
1182     gestureEvent.SetSourceDevice(SourceType::MOUSE);
1183     gestureEvent.SetInputEventType(InputEventType::TOUCH_SCREEN);
1184     gestureEventHub->HandleOnDragStart(gestureEvent);
1185     EXPECT_FALSE(eventManager->IsLastMoveBeforeUp());
1186 }
1187 
1188 /**
1189  * @tc.name: GestureEventHubTest0183
1190  * @tc.desc: Test HandleOnDragStart
1191  * @tc.type: FUNC
1192  */
1193 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest0183, TestSize.Level1)
1194 {
1195     /**
1196      * @tc.steps: step1. Create GestureEventHub.
1197      * @tc.expected: gestureEventHub is not null.
1198      */
1199     auto eventHub = AceType::MakeRefPtr<EventHub>();
1200     EXPECT_TRUE(eventHub);
1201     auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::TEXTINPUT_ETS_TAG, -1, AceType::MakeRefPtr<TextPattern>());
1202 
1203     /**
1204      * @tc.steps: step2. update the input parameter attributes.
1205      */
1206     void* voidPtr = static_cast<void*>(new char[0]);
1207     RefPtr<PixelMap> pixelMap = PixelMap::CreatePixelMap(voidPtr);
1208     RefPtr<UINode> customNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1209     DragDropInfo dragDropInfo;
1210     dragDropInfo.customNode = customNode;
1211     dragDropInfo.pixelMap = pixelMap;
1212     frameNode->SetDragPreview(dragDropInfo);
1213 
1214     auto hostPattern = frameNode->GetPattern<TextDragBase>();
1215     EXPECT_TRUE(hostPattern);
1216 
1217     eventHub->AttachHost(frameNode);
1218     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1219     EXPECT_TRUE(gestureEventHub);
1220 
1221     auto onDragStart = [&customNode](
__anon9b9e2c482402( const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 1222                            const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
1223         DragDropInfo dragDropInfo;
1224         dragDropInfo.customNode = customNode;
1225         return dragDropInfo;
1226     };
1227     eventHub->SetOnDragStart(std::move(onDragStart));
1228 
1229     auto eventManager = AceType::MakeRefPtr<EventManager>();
1230     EXPECT_TRUE(eventManager);
1231 
1232     auto pipeline = PipelineContext::GetCurrentContext();
1233     pipeline->SetEventManager(eventManager);
1234     eventManager->SetLastMoveBeforeUp(false);
1235 
1236     /**
1237      * @tc.steps: step3. call HandleOnDragStart with SourceType::NONE and InputEventType::TOUCH_SCREEN.
1238      * @tc.expected: eventManager->IsLastMoveBeforeUp() the return value is false.
1239      */
1240     GestureEvent gestureEvent;
1241     gestureEvent.SetSourceDevice(SourceType::NONE);
1242     gestureEvent.SetInputEventType(InputEventType::TOUCH_SCREEN);
1243     gestureEventHub->HandleOnDragStart(gestureEvent);
1244     EXPECT_FALSE(eventManager->IsLastMoveBeforeUp());
1245 }
1246 
1247 /**
1248  * @tc.name: GestureEventHubTest0184
1249  * @tc.desc: Test HandleOnDragStart
1250  * @tc.type: FUNC
1251  */
1252 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest0184, TestSize.Level1)
1253 {
1254     /**
1255      * @tc.steps: step1. create GestureEventHub.
1256      * @tc.expected: gestureEventHub is not null.
1257      */
1258     auto eventHub = AceType::MakeRefPtr<EventHub>();
1259     EXPECT_TRUE(eventHub);
1260     auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::SEARCH_Field_ETS_TAG, -1, AceType::MakeRefPtr<TextPattern>());
1261 
1262     /**
1263      * @tc.steps: step2. update the input parameter attributes.
1264      */
1265     DragDropInfo dragDropInfo;
1266     dragDropInfo.customNode = nullptr;
1267     dragDropInfo.pixelMap = nullptr;
1268     frameNode->SetDragPreview(dragDropInfo);
1269 
1270     auto hostPattern = frameNode->GetPattern<TextDragBase>();
1271     EXPECT_TRUE(hostPattern);
1272 
1273     eventHub->AttachHost(frameNode);
1274     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1275     EXPECT_TRUE(gestureEventHub);
1276 
1277     RefPtr<UINode> customNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1278     auto onDragStart = [&customNode](
__anon9b9e2c482502( const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 1279                            const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
1280         DragDropInfo dragDropInfo;
1281         dragDropInfo.customNode = customNode;
1282         return dragDropInfo;
1283     };
1284     eventHub->SetOnDragStart(std::move(onDragStart));
1285 
1286     auto eventManager = AceType::MakeRefPtr<EventManager>();
1287     EXPECT_TRUE(eventManager);
1288     auto pipeline = PipelineContext::GetCurrentContext();
1289     pipeline->SetEventManager(eventManager);
1290     eventManager->SetLastMoveBeforeUp(false);
1291 
1292     /**
1293      * @tc.steps: step3. call HandleOnDragStart with SourceType::MOUSE and InputEventType::TOUCH_SCREEN.
1294      * @tc.expected: eventManager->IsLastMoveBeforeUp() the return value is false.
1295      */
1296     GestureEvent gestureEvent;
1297     gestureEvent.SetSourceDevice(SourceType::MOUSE);
1298     gestureEvent.SetInputEventType(InputEventType::TOUCH_SCREEN);
1299     gestureEventHub->HandleOnDragStart(gestureEvent);
1300     EXPECT_FALSE(eventManager->IsLastMoveBeforeUp());
1301 }
1302 
1303 /**
1304  * @tc.name: GestureEventHubTest0185
1305  * @tc.desc: Test HandleOnDragStart
1306  * @tc.type: FUNC
1307  */
1308 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest0185, TestSize.Level1)
1309 {
1310     /**
1311      * @tc.steps: step1. Create GestureEventHub.
1312      * @tc.expected: gestureEventHub is not null.
1313      */
1314     auto eventHub = AceType::MakeRefPtr<EventHub>();
1315     EXPECT_TRUE(eventHub);
1316     auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::TEXT_ETS_TAG, -1, AceType::MakeRefPtr<TextPattern>());
1317 
1318     /**
1319      * @tc.steps: step2. Build PixelMap and UINode, and update the properties of DragDropInfo.
1320      */
1321     void* voidPtr = static_cast<void*>(new char[0]);
1322     RefPtr<PixelMap> pixelMap = PixelMap::CreatePixelMap(voidPtr);
1323     RefPtr<UINode> customNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1324     DragDropInfo dragDropInfo;
1325     dragDropInfo.customNode = customNode;
1326     dragDropInfo.pixelMap = pixelMap;
1327     frameNode->SetDragPreview(dragDropInfo);
1328 
1329     auto hostPattern = frameNode->GetPattern<TextDragBase>();
1330     EXPECT_TRUE(hostPattern);
1331 
1332     eventHub->AttachHost(frameNode);
1333     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1334     EXPECT_TRUE(gestureEventHub);
1335 
1336     auto onDragStart = [&customNode](
__anon9b9e2c482602( const RefPtr<OHOS::Ace::DragEvent>& , const std::string& ) 1337                            const RefPtr<OHOS::Ace::DragEvent>& /* dragEvent */, const std::string& /* param */) {
1338         DragDropInfo dragDropInfo;
1339         dragDropInfo.customNode = customNode;
1340         return dragDropInfo;
1341     };
1342     eventHub->SetOnDragStart(std::move(onDragStart));
1343 
1344     auto eventManager = AceType::MakeRefPtr<EventManager>();
1345     EXPECT_TRUE(eventManager);
1346     auto pipeline = PipelineContext::GetCurrentContext();
1347     pipeline->SetEventManager(eventManager);
1348     eventManager->SetLastMoveBeforeUp(false);
1349 
1350     /**
1351      * @tc.steps: step3. call HandleOnDragStart with SourceType::NONE and InputEventType::TOUCH_SCREEN.
1352      * @tc.expected: eventManager->IsLastMoveBeforeUp() the return value is false.
1353      */
1354     GestureEvent gestureEvent;
1355     gestureEvent.SetSourceDevice(SourceType::NONE);
1356     gestureEvent.SetInputEventType(InputEventType::TOUCH_SCREEN);
1357     gestureEventHub->HandleOnDragStart(gestureEvent);
1358     EXPECT_FALSE(eventManager->IsLastMoveBeforeUp());
1359 }
1360 
1361 /**
1362  * @tc.name: GestureEventHubTest019
1363  * @tc.desc: Test KeyBoardShortCutClick
1364  * @tc.type: FUNC
1365  */
1366 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest019, TestSize.Level1)
1367 {
1368     /**
1369      * @tc.steps: step1. Create GestureEventHub.
1370      * @tc.expected: gestureEventHub is not null.
1371      */
1372     auto eventHub = AceType::MakeRefPtr<EventHub>();
1373     EXPECT_TRUE(eventHub);
1374     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1375     eventHub->AttachHost(frameNode);
1376     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1377     EXPECT_TRUE(gestureEventHub);
1378 
1379     /**
1380      * @tc.steps: step2. construct a clickEventActuator and update gestureEventHub attributes.
1381      */
1382     auto clickEventActuator = AceType::MakeRefPtr<ClickEventActuator>(WeakPtr<NG::GestureEventHub>(gestureEventHub));
1383     gestureEventHub->clickEventActuator_ = clickEventActuator;
1384 
1385     /**
1386      * @tc.steps: step3. call KeyBoardShortCutClick with event and frameNode.
1387      * @tc.expected: retFlag is false.
1388      */
1389     KeyEvent event;
1390     bool retFlag = gestureEventHub->KeyBoardShortCutClick(event, WeakPtr<NG::FrameNode>(frameNode));
1391     EXPECT_TRUE(retFlag);
1392 }
1393 
1394 /**
1395  * @tc.name: GestureEventHubTest020
1396  * @tc.desc: taskScheduler of Test StartDragTaskForWeb were true branches
1397  * @tc.type: FUNC
1398  */
1399 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest020, TestSize.Level1)
1400 {
1401     /**
1402      * @tc.steps: step1. Create GestureEventHub.
1403      * @tc.expected: gestureEventHub is not null.
1404      */
1405     auto frameNode = FrameNode::CreateFrameNode("myButton", 102, AceType::MakeRefPtr<Pattern>());
1406     auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1407     ASSERT_NE(guestureEventHub, nullptr);
1408 
1409     /**
1410      * @tc.steps: step2. updates event and pipeline attributes.
1411      */
1412     auto event = guestureEventHub->eventHub_.Upgrade();
1413     event->host_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
1414 
1415     auto pipeline = PipelineContext::GetCurrentContext();
1416     EXPECT_TRUE(pipeline);
1417 
1418     /**
1419      * @tc.steps: step3. call StartDragTaskForWeb.
1420      * @tc.expected: taskScheduler is true.
1421      */
1422     guestureEventHub->isReceivedDragGestureInfo_ = true;
1423     guestureEventHub->StartDragTaskForWeb();
1424     auto taskScheduler = pipeline->GetTaskExecutor();
1425     EXPECT_FALSE(taskScheduler);
1426 }
1427 
1428 /**
1429  * @tc.name: GestureEventHubTest021
1430  * @tc.desc: Test StartLongPressActionForWeb
1431  * @tc.type: FUNC
1432  */
1433 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest021, TestSize.Level1)
1434 {
1435     /**
1436      * @tc.steps: step1. Create GestureEventHub.
1437      * @tc.expected: gestureEventHub is not null.
1438      */
1439     auto eventHub = AceType::MakeRefPtr<EventHub>();
1440     EXPECT_TRUE(eventHub);
1441     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1442     eventHub->AttachHost(frameNode);
1443     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1444     EXPECT_TRUE(gestureEventHub);
1445 
1446     /**
1447      * @tc.steps: step2. construct a PipelineContext and update pipeline attributes.
1448      */
1449     auto pipeline = PipelineContext::GetCurrentContext();
1450     EXPECT_TRUE(pipeline);
1451 
1452     /**
1453      * @tc.steps: step3. call StartLongPressActionForWeb.
1454      * @tc.expected: taskScheduler is false.
1455      */
1456     gestureEventHub->StartLongPressActionForWeb();
1457     auto taskScheduler = pipeline->GetTaskExecutor();
1458     EXPECT_FALSE(taskScheduler);
1459 }
1460 
1461 /**
1462  * @tc.name: GestureEventHubTest022
1463  * @tc.desc: Test HandleOnDragUpdate
1464  * @tc.type: FUNC
1465  */
1466 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest022, TestSize.Level1)
1467 {
1468     /**
1469      * @tc.steps: step1. Create GestureEventHub.
1470      * @tc.expected: gestureEventHub is not null.
1471      */
1472     auto eventHub = AceType::MakeRefPtr<EventHub>();
1473     EXPECT_TRUE(eventHub);
1474     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1475     eventHub->AttachHost(frameNode);
1476     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1477     EXPECT_TRUE(gestureEventHub);
1478 
1479     /**
1480      * @tc.steps: step2. construct a dragDropProxy and update gestureEventHub attributes.
1481      */
1482     constexpr int64_t PROXY_ID_NOT_FIT = 101;
1483     auto dragDropProxy = AceType::MakeRefPtr<DragDropProxy>(PROXY_ID_NOT_FIT);
1484     gestureEventHub->dragDropProxy_ = dragDropProxy;
1485 
1486     /**
1487      * @tc.steps: step3. call HandleOnDragUpdate with GestureEvent.
1488      * @tc.expected: gestureEventHub->dragDropProxy_ is true.
1489      */
1490     GestureEvent info;
1491     gestureEventHub->HandleOnDragUpdate(info);
1492     EXPECT_TRUE(gestureEventHub->dragDropProxy_);
1493 
1494     /**
1495      * @tc.steps: step4. call HandleOnDragUpdate with GestureEvent.
1496      * @tc.expected: gestureEventHub->IsDragged() the return value is false.
1497      */
1498     auto pipeline = PipelineContext::GetCurrentContext();
1499     auto dragDropManager = pipeline->GetDragDropManager();
1500     dragDropManager->SetIsDragged(false);
1501     gestureEventHub->HandleOnDragUpdate(info);
1502     EXPECT_FALSE(dragDropManager->IsDragged());
1503 }
1504 
1505 /**
1506  * @tc.name: GestureEventHubTest024
1507  * @tc.desc: Test HandleOnDragEnd
1508  * @tc.type: FUNC
1509  */
1510 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest024, TestSize.Level1)
1511 {
1512     /**
1513      * @tc.steps: step1. Create GestureEventHub.
1514      * @tc.expected: gestureEventHub is not null.
1515      */
1516     auto eventHub = AceType::MakeRefPtr<EventHub>();
1517     EXPECT_TRUE(eventHub);
1518     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1519     eventHub->AttachHost(frameNode);
1520 
1521     /**
1522      * @tc.steps: step2. construct a func and update eventHub attributes.
1523      */
__anon9b9e2c482702(const RefPtr<OHOS::Ace::DragEvent>&, const std::string&) 1524     auto func = [](const RefPtr<OHOS::Ace::DragEvent>&, const std::string&) { return DragDropInfo(); };
1525     eventHub->SetOnDrop(func);
1526     eventHub->customerOnDrop_ = func;
1527 
1528     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1529     EXPECT_TRUE(gestureEventHub);
1530 
1531     auto pipeline = PipelineContext::GetCurrentContext();
1532     pipeline->SetMinPlatformVersion(12);
1533 
1534     /**
1535      * @tc.steps: step3. call HandleOnDragEnd with GestureEvent.
1536      * @tc.expected: The return value of gestureEventHub->GetFrameNode() is true.
1537      */
1538     GestureEvent info;
1539     gestureEventHub->HandleOnDragEnd(info);
1540     EXPECT_TRUE(gestureEventHub->GetFrameNode());
1541 
1542     constexpr int64_t PROXY_ID_NOT_FIT = 101;
1543     auto dragDropProxy = AceType::MakeRefPtr<DragDropProxy>(PROXY_ID_NOT_FIT);
1544     gestureEventHub->dragDropProxy_ = dragDropProxy;
1545     pipeline->SetMinPlatformVersion(9);
1546 
1547     /**
1548      * @tc.steps: step4. call HandleOnDragEnd with GestureEvent.
1549      * @tc.expected: The return value of gestureEventHub->dragDropProxy_ is false.
1550      */
1551     gestureEventHub->HandleOnDragEnd(info);
1552     EXPECT_FALSE(gestureEventHub->dragDropProxy_);
1553 }
1554 
1555 /**
1556  * @tc.name: GestureEventHubTest025
1557  * @tc.desc: Test HandleOnDragEnd
1558  * @tc.type: FUNC
1559  */
1560 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest025, TestSize.Level1)
1561 {
1562     /**
1563      * @tc.steps: step1. Create GestureEventHub.
1564      * @tc.expected: gestureEventHub is not null.
1565      */
1566     auto eventHub = AceType::MakeRefPtr<EventHub>();
1567     EXPECT_TRUE(eventHub);
1568     auto frameNode = AceType::MakeRefPtr<FrameNode>(V2::WEB_ETS_TAG, -1, AceType::MakeRefPtr<Pattern>());
1569     eventHub->AttachHost(frameNode);
1570 
1571     /**
1572      * @tc.steps: step2. construct a func and update eventHub attributes.
1573      */
__anon9b9e2c482802(const RefPtr<OHOS::Ace::DragEvent>&, const std::string&) 1574     auto func = [](const RefPtr<OHOS::Ace::DragEvent>&, const std::string&) { return DragDropInfo(); };
1575     eventHub->SetOnDrop(func);
1576     eventHub->customerOnDrop_ = func;
1577 
1578     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1579     EXPECT_TRUE(gestureEventHub);
1580 
1581     auto pipeline = PipelineContext::GetCurrentContext();
1582     pipeline->SetMinPlatformVersion(9);
1583 
1584     constexpr int64_t PROXY_ID_NOT_FIT = 101;
1585     auto dragDropProxy = AceType::MakeRefPtr<DragDropProxy>(PROXY_ID_NOT_FIT);
1586     gestureEventHub->dragDropProxy_ = dragDropProxy;
1587 
1588     /**
1589      * @tc.steps: step3. call HandleOnDragEnd with GestureEvent.
1590      * @tc.expected: gestureEventHub->dragDropProxy_ is null.
1591      */
1592     GestureEvent info;
1593     gestureEventHub->HandleOnDragEnd(info);
1594     EXPECT_FALSE(gestureEventHub->dragDropProxy_);
1595 
1596     eventHub->onDrop_ = nullptr;
1597     eventHub->customerOnDrop_ = nullptr;
1598     gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1599 
1600     /**
1601      * @tc.steps: step4. call HandleOnDragEnd with GestureEvent.
1602      * @tc.expected: The return value of eventHub->HasOnDrop() is false.
1603      */
1604     gestureEventHub->HandleOnDragEnd(info);
1605     EXPECT_FALSE(eventHub->HasOnDrop());
1606 }
1607 
1608 /**
1609  * @tc.name: GestureEventHubTest026
1610  * @tc.desc: Test HandleOnDragCancel
1611  * @tc.type: FUNC
1612  */
1613 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest026, TestSize.Level1)
1614 {
1615     /**
1616      * @tc.steps: step1. Create GestureEventHub.
1617      * @tc.expected: gestureEventHub is not null.
1618      */
1619     auto eventHub = AceType::MakeRefPtr<EventHub>();
1620     EXPECT_TRUE(eventHub);
1621     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1622     eventHub->AttachHost(frameNode);
1623     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1624     EXPECT_TRUE(gestureEventHub);
1625 
1626     /**
1627      * @tc.steps: step2. construct a dragDropProxy and update gestureEventHub attribute.
1628      */
1629     constexpr int64_t PROXY_ID_NOT_FIT = 101;
1630     auto dragDropProxy = AceType::MakeRefPtr<DragDropProxy>(PROXY_ID_NOT_FIT);
1631     gestureEventHub->dragDropProxy_ = dragDropProxy;
1632 
1633     /**
1634      * @tc.steps: step3. call HandleOnDragCancel.
1635      * @tc.expected: gestureEventHub->dragDropProxy_ is null.
1636      */
1637     gestureEventHub->HandleOnDragCancel();
1638     EXPECT_FALSE(gestureEventHub->dragDropProxy_);
1639 }
1640 
1641 /**
1642  * @tc.name: GestureEventHubTest027
1643  * @tc.desc: Test SetOnGestureJudgeBegin and SetOnGestureJudgeNativeBegin
1644  * @tc.type: FUNC
1645  */
1646 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest027, TestSize.Level1)
1647 {
1648     /**
1649      * @tc.steps: step1. Create GestureEventHub.
1650      * @tc.expected: gestureEventHub is not null.
1651      */
1652     auto eventHub = AceType::MakeRefPtr<EventHub>();
1653     EXPECT_TRUE(eventHub);
1654     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1655     eventHub->AttachHost(frameNode);
1656     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1657     EXPECT_TRUE(gestureEventHub);
1658 
1659     /**
1660      * @tc.steps: step2. construct a gestureJudgeFunc.
1661      */
1662     auto gestureJudgeFunc = [](const RefPtr<GestureInfo>& gestureInfo,
__anon9b9e2c482902(const RefPtr<GestureInfo>& gestureInfo, const std::shared_ptr<BaseGestureEvent>&) 1663                                 const std::shared_ptr<BaseGestureEvent>&) -> GestureJudgeResult {
1664         return GestureJudgeResult(1);
1665     };
1666 
1667     /**
1668      * @tc.steps: step3. call SetOnGestureJudgeBegin with gestureJudgeFunc.
1669      * @tc.expected: gestureEventHub->gestureJudgeFunc_ is not null.
1670      */
1671     gestureEventHub->SetOnGestureJudgeBegin(gestureJudgeFunc);
1672     EXPECT_TRUE(gestureEventHub->gestureJudgeFunc_);
1673 
1674     /**
1675      * @tc.steps: step4. call SetOnGestureJudgeNativeBegin with gestureJudgeFunc.
1676      * @tc.expected: gestureEventHub->gestureJudgeNativeFunc_ is not null.
1677      */
1678     gestureEventHub->SetOnGestureJudgeNativeBegin(gestureJudgeFunc);
1679     EXPECT_TRUE(gestureEventHub->gestureJudgeNativeFunc_);
1680 }
1681 
1682 /**
1683  * @tc.name: GestureEventHubTest028
1684  * @tc.desc: Test IsAccessibilityClickable and IsAccessibilityLongClickable
1685  * @tc.type: FUNC
1686  */
1687 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest028, TestSize.Level1)
1688 {
1689     /**
1690      * @tc.steps: step1. Create GestureEventHub.
1691      * @tc.expected: gestureEventHub is not null.
1692      */
1693     auto eventHub = AceType::MakeRefPtr<EventHub>();
1694     EXPECT_TRUE(eventHub);
1695     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1696     eventHub->AttachHost(frameNode);
1697     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1698     EXPECT_TRUE(gestureEventHub);
1699 
1700     /**
1701      * @tc.steps: step2. Updated properties for gestureEventHub.
1702      */
1703     auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>(DOUBLE_FINGERS, FINGERS);
1704     gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
1705 
1706     /**
1707      * @tc.steps: step3. call IsAccessibilityClickable.
1708      * @tc.expected: retFlag is false.
1709      */
1710     bool retFlag = gestureEventHub->IsAccessibilityClickable();
1711     EXPECT_FALSE(retFlag);
1712 
1713     /**
1714      * @tc.steps: step3. call IsAccessibilityLongClickable.
1715      * @tc.expected: retFlag is false.
1716      */
1717     retFlag = gestureEventHub->IsAccessibilityLongClickable();
1718     EXPECT_FALSE(retFlag);
1719 }
1720 
1721 /**
1722  * @tc.name: GestureEventHubTest029
1723  * @tc.desc: Test GetHitTestModeStr
1724  * @tc.type: FUNC
1725  */
1726 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest029, TestSize.Level1)
1727 {
1728     /**
1729      * @tc.steps: step1. Create GestureEventHub.
1730      * @tc.expected: gestureEventHub is not null.
1731      */
1732     auto eventHub = AceType::MakeRefPtr<EventHub>();
1733     EXPECT_TRUE(eventHub);
1734     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1735     eventHub->AttachHost(frameNode);
1736     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1737     EXPECT_TRUE(gestureEventHub);
1738 
1739     /**
1740      * @tc.steps: step2. call GetHitTestModeStr with hitTestMode_ == -1.
1741      * @tc.expected: retStr is equal to "HitTestMode.Default".
1742      */
1743     gestureEventHub->SetHitTestMode(HitTestMode(-1));
1744     std::string retStr = gestureEventHub->GetHitTestModeStr();
1745     EXPECT_EQ(retStr, "HitTestMode.Default");
1746 
1747     /**
1748      * @tc.steps: step3. call GetHitTestModeStr with hitTestMode_ == 4.
1749      * @tc.expected: retStr is equal to "HitTestMode.Default".
1750      */
1751     gestureEventHub->SetHitTestMode(HitTestMode(4));
1752     retStr = gestureEventHub->GetHitTestModeStr();
1753     EXPECT_EQ(retStr, "HitTestMode.Default");
1754 }
1755 
1756 /**
1757  * @tc.name: GestureEventHubTest030
1758  * @tc.desc: Test ActClick
1759  * @tc.type: FUNC
1760  */
1761 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest030, TestSize.Level1)
1762 {
1763     /**
1764      * @tc.steps: step1. Create GestureEventHub.
1765      * @tc.expected: gestureEventHub is not null.
1766      */
1767     auto eventHub = AceType::MakeRefPtr<EventHub>();
1768     EXPECT_TRUE(eventHub);
1769     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1770     eventHub->AttachHost(frameNode);
1771     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1772     EXPECT_TRUE(gestureEventHub);
1773 
1774     /**
1775      * @tc.steps: step2. Updated properties for gestureEventHub.
1776      */
1777     auto clickRecognizer = AceType::MakeRefPtr<ClickRecognizer>(DOUBLE_FINGERS, CLICK_COUNTS);
1778     gestureEventHub->gestureHierarchy_.emplace_back(clickRecognizer);
1779 
1780     /**
1781      * @tc.steps: step3. call ActClick.
1782      * @tc.expected: retFlag is false.
1783      */
1784     bool retFlag = gestureEventHub->ActClick();
1785     EXPECT_FALSE(retFlag);
1786 }
1787 
1788 /**
1789  * @tc.name: GestureEventHubTest031
1790  * @tc.desc: Test UpdateGestureHierarchy
1791  * @tc.type: FUNC
1792  */
1793 HWTEST_F(GestureEventHubTestNg, GestureEventHubTest031, TestSize.Level1)
1794 {
1795     /**
1796      * @tc.steps: step1. Create GestureEventHub.
1797      * @tc.expected: gestureEventHub is not null.
1798      */
1799     auto eventHub = AceType::MakeRefPtr<EventHub>();
1800     ASSERT_NE(eventHub, nullptr);
1801     auto frameNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1802     ASSERT_NE(frameNode, nullptr);
1803     eventHub->AttachHost(frameNode);
1804     auto gestureEventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1805     ASSERT_NE(gestureEventHub, nullptr);
1806 
1807     /**
1808      * @tc.steps: step2. Updated properties for gestureEventHub.
1809      */
1810     gestureEventHub->recreateGesture_ = true;
1811     auto tapGesture = AceType::MakeRefPtr<TapGesture>(FINGERS, 1);
1812     gestureEventHub->gestures_.emplace_back(tapGesture);
1813     auto longPressRecognizer = AceType::MakeRefPtr<LongPressRecognizer>(1, 1, false);
1814     gestureEventHub->gestureHierarchy_.emplace_back(longPressRecognizer);
1815     gestureEventHub->UpdateGestureHierarchy();
1816 
1817     /**
1818      * @tc.steps: step3. call UpdateGestureHierarchy.
1819      * @tc.expected: gestureHierarchy_ has one elements.
1820      */
1821     auto sizeGestureHierarchy = static_cast<int32_t>(gestureEventHub->gestureHierarchy_.size());
1822     EXPECT_EQ(sizeGestureHierarchy, 1);
1823 }
1824 
1825 /**
1826  * @tc.name: ResetDragActionForWeb001
1827  * @tc.desc: Test ResetDragActionForWeb
1828  * @tc.type: FUNC
1829  */
1830 HWTEST_F(GestureEventHubTestNg, ResetDragActionForWeb001, TestSize.Level1)
1831 {
1832     auto frameNode = FrameNode::CreateFrameNode("myButton", 102, AceType::MakeRefPtr<Pattern>());
1833     auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1834     ASSERT_NE(guestureEventHub, nullptr);
1835     guestureEventHub->ResetDragActionForWeb();
1836     ASSERT_EQ(guestureEventHub->isReceivedDragGestureInfo_, false);
1837 }
1838 
1839 /**
1840  * @tc.name: ResetDragActionForWeb001
1841  * @tc.desc: Test ResetDragActionForWeb
1842  * @tc.type: FUNC
1843  */
1844 HWTEST_F(GestureEventHubTestNg, OnDragStart001, TestSize.Level1)
1845 {
1846     auto frameNode = FrameNode::CreateFrameNode("myButton", 101, AceType::MakeRefPtr<Pattern>());
1847     auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1848     ASSERT_NE(guestureEventHub, nullptr);
1849     auto eventHub = guestureEventHub->eventHub_.Upgrade();
1850     GestureEvent info;
1851     auto pipline = PipelineContext::GetCurrentContext();
1852     auto EventHub = AceType::MakeRefPtr<GestureEventHub>(eventHub);
1853     EXPECT_TRUE(EventHub);
1854     auto frameNodeOfEvent = EventHub->GetFrameNode();
1855     EXPECT_TRUE(frameNodeOfEvent);
1856     RefPtr<OHOS::Ace::DragEvent> event = AceType::MakeRefPtr<OHOS::Ace::DragEvent>();
1857     RefPtr<UINode> customNode = AceType::MakeRefPtr<FrameNode>(NODE_TAG, -1, AceType::MakeRefPtr<Pattern>());
1858     DragDropInfo dragDropInfo;
1859     dragDropInfo.customNode = customNode;
1860     event->SetResult(DragRet::DRAG_FAIL);
1861     guestureEventHub->OnDragStart(info, pipline, frameNode, dragDropInfo, event);
1862     event->SetResult(DragRet::DRAG_CANCEL);
1863     guestureEventHub->OnDragStart(info, pipline, frameNode, dragDropInfo, event);
1864     EXPECT_TRUE(EventHub->dragDropProxy_ == false);
1865 }
1866 
1867 /**
1868  * @tc.name: SetMouseDragGatherPixelMaps001
1869  * @tc.desc: Test SetMouseDragGatherPixelMaps
1870  * @tc.type: FUNC
1871  */
1872 HWTEST_F(GestureEventHubTestNg, SetMouseDragGatherPixelMaps001, TestSize.Level1)
1873 {
1874     auto frameNode = FrameNode::CreateFrameNode("myButton", 101, AceType::MakeRefPtr<Pattern>());
1875     auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1876     ASSERT_NE(guestureEventHub, nullptr);
1877     auto eventHub = guestureEventHub->eventHub_.Upgrade();
1878     guestureEventHub->SetMouseDragGatherPixelMaps();
1879     guestureEventHub->SetNotMouseDragGatherPixelMaps();
1880     ASSERT_NE(PipelineContext::GetCurrentContext(), nullptr);
1881 }
1882 
1883 /**
1884  * @tc.name: IsTextCategoryComponent001
1885  * @tc.desc: Test IsTextCategoryComponent
1886  * @tc.type: FUNC
1887  */
1888 HWTEST_F(GestureEventHubTestNg, IsTextCategoryComponent001, TestSize.Level1)
1889 {
1890     auto frameNode = FrameNode::CreateFrameNode("myButton", 101, AceType::MakeRefPtr<Pattern>());
1891     auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1892     string frameTag = V2::TEXTAREA_ETS_TAG;
1893     bool result = guestureEventHub->IsTextCategoryComponent(frameTag);
1894     ASSERT_TRUE(result);
1895     frameTag = V2::TEXT_ETS_TAG;
1896     result = guestureEventHub->IsTextCategoryComponent(frameTag);
1897     ASSERT_TRUE(result);
1898     frameTag = V2::TEXTINPUT_ETS_TAG;
1899     result = guestureEventHub->IsTextCategoryComponent(frameTag);
1900     ASSERT_TRUE(result);
1901     frameTag = V2::SEARCH_Field_ETS_TAG;
1902     result = guestureEventHub->IsTextCategoryComponent(frameTag);
1903     ASSERT_TRUE(result);
1904     frameTag = V2::RICH_EDITOR_ETS_TAG;
1905     result = guestureEventHub->IsTextCategoryComponent(frameTag);
1906     ASSERT_TRUE(result);
1907     frameTag = "";
1908     result = guestureEventHub->IsTextCategoryComponent(frameTag);
1909     ASSERT_FALSE(result);
1910 }
1911 
1912 /**
1913  * @tc.name: SetResponseRegion001
1914  * @tc.desc: Test SetResponseRegion
1915  * @tc.type: FUNC
1916  */
1917 HWTEST_F(GestureEventHubTestNg, SetResponseRegion001, TestSize.Level1)
1918 {
1919     auto frameNode = FrameNode::CreateFrameNode("myButton", 101, AceType::MakeRefPtr<Pattern>());
1920     auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1921     std::vector<DimensionRect> responseRegion;
1922     guestureEventHub->SetResponseRegion(responseRegion);
1923     responseRegion.push_back(DimensionRect());
1924     int32_t callbackInfo = 0;
__anon9b9e2c482a02(const std::vector<DimensionRect>& ) 1925     guestureEventHub->SetResponseRegionFunc([&callbackInfo](const std::vector<DimensionRect>& /*reponseRegion*/) {
1926         callbackInfo = 1;
1927     });
1928     guestureEventHub->SetResponseRegion(responseRegion);
1929     ASSERT_TRUE(guestureEventHub->isResponseRegion_);
1930 }
1931 
1932 /**
1933  * @tc.name: RemoveLastResponseRect001
1934  * @tc.desc: Test RemoveLastResponseRect
1935  * @tc.type: FUNC
1936  */
1937 HWTEST_F(GestureEventHubTestNg, RemoveLastResponseRect001, TestSize.Level1)
1938 {
1939     auto frameNode = FrameNode::CreateFrameNode("myButton", 101, AceType::MakeRefPtr<Pattern>());
1940     auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1941     std::vector<DimensionRect> responseRegion;
1942     guestureEventHub->RemoveLastResponseRect();
1943     responseRegion.push_back(DimensionRect());
1944     responseRegion.push_back(DimensionRect());
1945     guestureEventHub->SetResponseRegion(responseRegion);
1946     guestureEventHub->RemoveLastResponseRect();
1947     int32_t callbackInfo = 0;
__anon9b9e2c482b02(const std::vector<DimensionRect>& ) 1948     guestureEventHub->SetResponseRegionFunc([&callbackInfo](const std::vector<DimensionRect>& /*reponseRegion*/) {
1949         callbackInfo = 1;
1950     });
1951     guestureEventHub->RemoveLastResponseRect();
1952     ASSERT_FALSE(guestureEventHub->isResponseRegion_);
1953 }
1954 
1955 /**
1956  * @tc.name: SetJSFrameNodeOnTouchEvent001
1957  * @tc.desc: Test SetJSFrameNodeOnTouchEvent
1958  * @tc.type: FUNC
1959  */
1960 HWTEST_F(GestureEventHubTestNg, SetJSFrameNodeOnTouchEvent001, TestSize.Level1)
1961 {
1962     auto frameNode = FrameNode::CreateFrameNode("myButton", 101, AceType::MakeRefPtr<Pattern>());
1963     auto guestureEventHub = frameNode->GetOrCreateGestureEventHub();
1964     guestureEventHub->touchEventActuator_ = nullptr;
__anon9b9e2c482c02(TouchEventInfo& info) 1965     TouchEventFunc touchEventFunc = [](TouchEventInfo& info) {};
1966     guestureEventHub->SetJSFrameNodeOnTouchEvent(std::move(touchEventFunc));
1967     ASSERT_NE(guestureEventHub->touchEventActuator_, nullptr);
1968 }
1969 } // namespace OHOS::Ace::NG
1970