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