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