1 /*
2 * Copyright (c) 2022 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 <optional>
17
18 #include "gtest/gtest.h"
19 #define private public
20 #define protected public
21
22 #include "test/mock/base/mock_task_executor.h"
23 #include "test/mock/core/common/mock_container.h"
24 #include "test/mock/core/pipeline/mock_pipeline_context.h"
25
26 #include "base/geometry/ng/offset_t.h"
27 #include "base/geometry/ng/size_t.h"
28 #include "base/memory/ace_type.h"
29 #include "base/memory/referenced.h"
30 #include "core/components_ng/base/frame_node.h"
31 #include "core/components_ng/base/geometry_node.h"
32 #include "core/components_ng/manager/select_content_overlay/select_overlay_callback.h"
33 #include "core/components_ng/manager/select_content_overlay/select_overlay_holder.h"
34 #include "core/components_ng/manager/select_overlay/select_overlay_manager.h"
35 #include "core/components_ng/pattern/pattern.h"
36 #include "core/components_ng/pattern/select_overlay/select_overlay_pattern.h"
37 #include "core/components_ng/pattern/select_overlay/select_overlay_property.h"
38 #include "core/components_ng/pattern/text/text_base.h"
39 #include "core/components_ng/pattern/text/text_pattern.h"
40 #include "core/components_ng/pattern/text_field/text_field_pattern.h"
41 #include "core/components_ng/property/property.h"
42
43 using namespace testing;
44 using namespace testing::ext;
45
46 namespace OHOS::Ace::NG {
47 namespace {
48 const std::string ROOT_TAG("root");
49 constexpr int32_t NODE_ID = 143;
50 constexpr int32_t NODE_ID_2 = 601;
51 constexpr int32_t NODE_ID_3 = 707;
52 const OffsetF RIGHT_CLICK_OFFSET = OffsetF(10.0f, 10.0f);
53 const OffsetF ROOT_OFFSET = OffsetF(10.0f, 10.0f);
54 const bool IS_USING_MOUSE = true;
55 } // namespace
56
57 class SelectOverlayManagerTestNg : public testing::Test {
58 public:
59 static void SetUpTestSuite();
60 static void TearDownTestSuite();
61 RefPtr<SelectOverlayManager> selectOverlayManager_;
62 RefPtr<SelectOverlayProxy> proxy_;
63 RefPtr<FrameNode> root_;
64 void Init();
65 };
66
67 class MockSelectOverlayHolder : public SelectOverlayHolder, public SelectOverlayCallback {
68 DECLARE_ACE_TYPE(MockSelectOverlayHolder, SelectOverlayHolder, SelectOverlayCallback);
69
70 public:
71 MockSelectOverlayHolder() = default;
72 ~MockSelectOverlayHolder() = default;
73
SetOwner(const RefPtr<FrameNode> & node)74 void SetOwner(const RefPtr<FrameNode>& node)
75 {
76 node_ = node;
77 }
78
GetOwner()79 RefPtr<FrameNode> GetOwner()
80 {
81 return node_;
82 }
83
GetCallback()84 RefPtr<SelectOverlayCallback> GetCallback() override
85 {
86 return Claim(this);
87 }
88
OnUpdateSelectOverlayInfo(SelectOverlayInfo & overlayInfo,int32_t requestCode)89 void OnUpdateSelectOverlayInfo(SelectOverlayInfo& overlayInfo, int32_t requestCode)
90 {
91 overlayInfo.enableHandleLevel = true;
92 overlayInfo.handleLevelMode = handleLevelMode_;
93 overlayInfo.menuInfo.menuIsShow = true;
94 }
95
OnHandleLevelModeChanged(HandleLevelMode mode)96 void OnHandleLevelModeChanged(HandleLevelMode mode) override
97 {
98 handleLevelMode_ = mode;
99 }
100
CheckSwitchToMode(HandleLevelMode mode)101 bool CheckSwitchToMode(HandleLevelMode mode) override
102 {
103 return allowSwitchMode_;
104 }
105
CheckTouchInHostNode(const PointF & touchPoint)106 bool CheckTouchInHostNode(const PointF& touchPoint)
107 {
108 return false;
109 }
110
111 private:
112 HandleLevelMode handleLevelMode_ = HandleLevelMode::OVERLAY;
113 bool allowSwitchMode_ = false;
114 RefPtr<FrameNode> node_;
115 };
116
SetUpTestSuite()117 void SelectOverlayManagerTestNg::SetUpTestSuite()
118 {
119 MockPipelineContext::SetUp();
120 MockContainer::SetUp();
121 MockContainer::Current()->taskExecutor_ = AceType::MakeRefPtr<MockTaskExecutor>();
122 }
123
TearDownTestSuite()124 void SelectOverlayManagerTestNg::TearDownTestSuite()
125 {
126 MockPipelineContext::TearDown();
127 MockContainer::TearDown();
128 }
129
Init()130 void SelectOverlayManagerTestNg::Init()
131 {
132 SelectOverlayInfo selectOverlayInfo;
133 selectOverlayInfo.singleLineHeight = NODE_ID;
134 root_ = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
135 selectOverlayManager_ = AceType::MakeRefPtr<SelectOverlayManager>(root_);
136 ASSERT_NE(selectOverlayManager_, nullptr);
137 proxy_ = selectOverlayManager_->CreateAndShowSelectOverlay(selectOverlayInfo, nullptr);
138 ASSERT_NE(proxy_, nullptr);
139 }
140 /**
141 * @tc.name: SelectOverlayManagerTest001
142 * @tc.desc: test first CreateAndShowSelectOverlay
143 * @tc.type: FUNC
144 */
145 HWTEST_F(SelectOverlayManagerTestNg, SelectOverlayManagerTest001, TestSize.Level1)
146 {
147 /**
148 * @tc.steps: step1. call CreateAndShowSelectOverlay
149 * @tc.expected: return the proxy which has the right SelectOverlayId
150 */
151 Init();
152 auto id = proxy_->GetSelectOverlayId();
153 EXPECT_EQ(id, 2);
154
155 /**
156 * @tc.expected: root's children_list contains the selectOverlayNode we created
157 */
158 auto selectOverlayNode = root_->GetChildren().back();
159 ASSERT_TRUE(selectOverlayNode);
160 auto node_id = selectOverlayNode->GetId();
161 EXPECT_EQ(node_id, 2);
162 }
163
164 /**
165 * @tc.name: SelectOverlayManagerTest002
166 * @tc.desc: test DestroySelectOverlay(proxy) successfully
167 * @tc.type: FUNC
168 */
169 HWTEST_F(SelectOverlayManagerTestNg, SelectOverlayManagerTest002, TestSize.Level1)
170 {
171 /**
172 * @tc.steps: step1. construct a SelectOverlayManager and call CreateAndShowSelectOverlay
173 */
174 SelectOverlayInfo selectOverlayInfo;
175 selectOverlayInfo.singleLineHeight = NODE_ID;
176 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
177 auto selectOverlayManager = AceType::MakeRefPtr<SelectOverlayManager>(root);
178 auto proxy = selectOverlayManager->CreateAndShowSelectOverlay(selectOverlayInfo, nullptr);
179
180 /**
181 * @tc.expected: root's children_list contains the selectOverlayNode we created
182 */
183 auto selectOverlayNode = root->GetChildren().back();
184 ASSERT_TRUE(selectOverlayNode);
185 auto node_id = selectOverlayManager->selectOverlayInfo_.singleLineHeight;
186 EXPECT_EQ(node_id, NODE_ID);
187
188 /**
189 * @tc.steps: step2. call DestroySelectOverlay
190 * @tc.expected: root's children_list has removed the selectOverlayNode we created
191 */
192 selectOverlayManager->DestroySelectOverlay(proxy);
193 auto children = root->GetChildren();
194 EXPECT_TRUE(children.empty());
195 }
196
197 /**
198 * @tc.name: SelectOverlayManagerTest003
199 * @tc.desc: test CreateAndShowSelectOverlay while the selectOverlayItem_ has existed
200 * @tc.type: FUNC
201 */
202 HWTEST_F(SelectOverlayManagerTestNg, SelectOverlayManagerTest003, TestSize.Level1)
203 {
204 /**
205 * @tc.steps: step1. construct a SelectOverlayManager and call CreateAndShowSelectOverlay
206 * @tc.expected: return the proxy which has the right SelectOverlayId
207 */
208 SelectOverlayInfo selectOverlayInfo;
209 selectOverlayInfo.singleLineHeight = NODE_ID;
210 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
211 auto selectOverlayManager = AceType::MakeRefPtr<SelectOverlayManager>(root);
212 auto textFrameNode =
__anon412ff7280202() 213 FrameNode::GetOrCreateFrameNode(V2::TEXT_ETS_TAG, 10, []() { return AceType::MakeRefPtr<TextPattern>(); });
214 ASSERT_TRUE(textFrameNode);
215 auto textPattern = textFrameNode->GetPattern<TextPattern>();
216 ASSERT_TRUE(textPattern);
217 auto proxy = selectOverlayManager->CreateAndShowSelectOverlay(selectOverlayInfo, textPattern);
218 ASSERT_TRUE(proxy);
219 auto id = selectOverlayManager->selectOverlayInfo_.singleLineHeight;
220 EXPECT_EQ(id, NODE_ID);
221 selectOverlayManager->DestroySelectOverlay(34);
222
223 /**
224 * @tc.steps: step2. call CreateAndShowSelectOverlay again and change the param
225 * @tc.expected: return the proxy which has the right SelectOverlayId
226 */
227 SelectOverlayInfo selectOverlayInfo2;
228 selectOverlayInfo2.singleLineHeight = NODE_ID_2;
229 auto proxy2 = selectOverlayManager->CreateAndShowSelectOverlay(selectOverlayInfo2, textPattern);
230 ASSERT_TRUE(proxy2);
231 auto id2 = selectOverlayManager->selectOverlayInfo_.singleLineHeight;
232 EXPECT_EQ(id2, NODE_ID_2);
233
234 /**
235 * @tc.steps: step3. call CreateAndShowSelectOverlay again and change the param
236 * @tc.expected: return the proxy which has the right SelectOverlayId
237 */
238 SelectOverlayInfo selectOverlayInfo3;
239 selectOverlayInfo3.singleLineHeight = NODE_ID_3;
240 auto proxy3 = selectOverlayManager->CreateAndShowSelectOverlay(selectOverlayInfo3, textPattern);
241 ASSERT_TRUE(proxy3);
242 auto id3 = selectOverlayManager->selectOverlayInfo_.singleLineHeight;
243 EXPECT_EQ(id3, NODE_ID_3);
244 }
245
246 /**
247 * @tc.name: SelectOverlayManagerTest004
248 * @tc.desc: test DestroySelectOverlay fail
249 * @tc.type: FUNC
250 */
251 HWTEST_F(SelectOverlayManagerTestNg, SelectOverlayManagerTest004, TestSize.Level1)
252 {
253 /**
254 * @tc.steps: step1. construct a SelectOverlayManager and call CreateAndShowSelectOverlay
255 * @tc.expected: return the proxy which has the right SelectOverlayId
256 */
257 SelectOverlayInfo selectOverlayInfo;
258 selectOverlayInfo.singleLineHeight = NODE_ID;
259 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
260 auto selectOverlayManager = AceType::MakeRefPtr<SelectOverlayManager>(root);
261 auto proxy = selectOverlayManager->CreateAndShowSelectOverlay(selectOverlayInfo, nullptr);
262 ASSERT_TRUE(proxy);
263 auto id = selectOverlayManager->selectOverlayInfo_.singleLineHeight;
264 EXPECT_EQ(id, NODE_ID);
265
266 /**
267 * @tc.steps: step2. call DestroySelectOverlay with wrong param
268 * @tc.expected: destroySelectOverlay fail and the proxy still has the original SelectOverlayId
269 */
270 selectOverlayManager->DestroySelectOverlay(NODE_ID_2);
271 auto children = root->GetChildren();
272 EXPECT_FALSE(children.empty());
273 id = selectOverlayManager->selectOverlayInfo_.singleLineHeight;
274 EXPECT_EQ(id, NODE_ID);
275 }
276
277 /**
278 * @tc.name: SelectOverlayManagerTest005
279 * @tc.desc: test HasSelectOverlay
280 * @tc.type: FUNC
281 */
282 HWTEST_F(SelectOverlayManagerTestNg, SelectOverlayManagerTest005, TestSize.Level1)
283 {
284 /**
285 * @tc.steps: step1. construct a SelectOverlayManager and call CreateAndShowSelectOverlay
286 * @tc.expected: return the proxy which has the right SelectOverlayId
287 */
288 SelectOverlayInfo selectOverlayInfo;
289 selectOverlayInfo.singleLineHeight = NODE_ID;
290 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
291 auto selectOverlayManager = AceType::MakeRefPtr<SelectOverlayManager>(root);
292 selectOverlayManager->CreateAndShowSelectOverlay(selectOverlayInfo, nullptr);
293
294 /**
295 * @tc.steps: step2. call HasSelectOverlay with the param of existed SelectOverlayId
296 * @tc.expected: return true
297 */
298 auto flag1 = selectOverlayManager->HasSelectOverlay(NODE_ID);
299 EXPECT_FALSE(flag1);
300
301 /**
302 * @tc.steps: step3. call HasSelectOverlay with the param of existed SelectOverlayId
303 * @tc.expected: return false
304 */
305 auto flag2 = selectOverlayManager->HasSelectOverlay(NODE_ID_2);
306 EXPECT_FALSE(flag2);
307 }
308
309 /**
310 * @tc.name: SelectOverlayManagerTest006
311 * @tc.desc: test GetSelectOverlayNode
312 * @tc.type: FUNC
313 */
314 HWTEST_F(SelectOverlayManagerTestNg, SelectOverlayManagerTest006, TestSize.Level1)
315 {
316 /**
317 * @tc.steps: step1. construct a SelectOverlayManager
318 */
319 SelectOverlayInfo selectOverlayInfo;
320 selectOverlayInfo.singleLineHeight = NODE_ID;
321 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
322 auto selectOverlayManager = AceType::MakeRefPtr<SelectOverlayManager>(root);
323
324 /**
325 * @tc.steps: step2. call GetSelectOverlayNode without calling CreateAndShowSelectOverlay
326 * @tc.expected: return nullptr
327 */
328 auto node1 = selectOverlayManager->GetSelectOverlayNode(NODE_ID);
329 EXPECT_FALSE(node1);
330
331 /**
332 * @tc.steps: step3. call CreateAndShowSelectOverlay
333 */
334 selectOverlayManager->CreateAndShowSelectOverlay(selectOverlayInfo, nullptr);
335
336 /**
337 * @tc.steps: step4. call GetSelectOverlayNode with right overlayId
338 * @tc.expected: return the selectOverlayNode with right nodeId
339 */
340 auto node2 = selectOverlayManager->GetSelectOverlayNode(NODE_ID);
341
342 /**
343 * @tc.steps: step5. call GetSelectOverlayNode with wrong overlayId
344 * @tc.expected: return nullptr
345 */
346 auto node3 = selectOverlayManager->GetSelectOverlayNode(NODE_ID_2);
347 EXPECT_FALSE(node3);
348 }
349
350 /**
351 * @tc.name: SelectOverlayManagerTest007
352 * @tc.desc: test IsSameSelectOverlayInfo
353 * @tc.type: FUNC
354 */
355 HWTEST_F(SelectOverlayManagerTestNg, SelectOverlayManagerTest007, TestSize.Level1)
356 {
357 /**
358 * @tc.steps: step1. construct a SelectOverlayManager
359 */
360 SelectOverlayInfo selectOverlayInfo;
361 selectOverlayInfo.singleLineHeight = NODE_ID;
362 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
363 auto selectOverlayManager = AceType::MakeRefPtr<SelectOverlayManager>(root);
364
365 /**
366 * @tc.steps: step2. change menuInfo and call IsSameSelectOverlayInfo with different selectOverlayInfo
367 * @tc.expected: return false
368 */
369 SelectOverlayInfo selectOverlayInfo2;
370 SelectMenuInfo selectMenuInfo2;
371 selectMenuInfo2.showCopy = false;
372 selectOverlayInfo2.menuInfo = selectMenuInfo2;
373 auto flag1 = selectOverlayManager->IsSameSelectOverlayInfo(selectOverlayInfo2);
374 EXPECT_FALSE(flag1);
375
376 /**
377 * @tc.steps: step3. change isUsingMouse and call IsSameSelectOverlayInfo with different selectOverlayInfo
378 * @tc.expected: return false
379 */
380 SelectOverlayInfo selectOverlayInfo3;
381 selectOverlayInfo3.isUsingMouse = IS_USING_MOUSE;
382 auto flag2 = selectOverlayManager->IsSameSelectOverlayInfo(selectOverlayInfo3);
383 EXPECT_FALSE(flag2);
384
385 /**
386 * @tc.steps: step4. change rightClickOffset and call IsSameSelectOverlayInfo with different selectOverlayInfo
387 * @tc.expected: return false
388 */
389 SelectOverlayInfo selectOverlayInfo4;
390 selectOverlayInfo4.rightClickOffset = RIGHT_CLICK_OFFSET;
391 auto flag3 = selectOverlayManager->IsSameSelectOverlayInfo(selectOverlayInfo4);
392 EXPECT_FALSE(flag3);
393
394 /**
395 * @tc.steps: step5. call IsSameSelectOverlayInfo with right selectOverlayInfo
396 * @tc.expected: return true
397 */
398 auto flag = selectOverlayManager->IsSameSelectOverlayInfo(selectOverlayInfo);
399 EXPECT_TRUE(flag);
400 }
401
402 /**
403 * @tc.name: SelectOverlayManagerTest008
404 * @tc.desc: test DestroySelectOverlay
405 * @tc.type: FUNC
406 */
407 HWTEST_F(SelectOverlayManagerTestNg, SelectOverlayManagerTest008, TestSize.Level1)
408 {
409 /**
410 * @tc.steps: step1. construct a SelectOverlayManager and call CreateAndShowSelectOverlay
411 */
412 SelectOverlayInfo selectOverlayInfo;
413 selectOverlayInfo.singleLineHeight = NODE_ID;
414 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
415 auto selectOverlayManager = AceType::MakeRefPtr<SelectOverlayManager>(root);
416 auto proxy = selectOverlayManager->CreateAndShowSelectOverlay(selectOverlayInfo, nullptr);
417 ASSERT_TRUE(proxy);
418
419 /**
420 * @tc.expected: root's children_list contains the selectOverlayNode we created
421 */
422 auto selectOverlayNode = root->GetChildren().back();
423 ASSERT_TRUE(selectOverlayNode);
424 auto node_id = selectOverlayManager->selectOverlayInfo_.singleLineHeight;
425 EXPECT_EQ(node_id, NODE_ID);
426
427 /**
428 * @tc.steps: step2. call DestroySelectOverlay
429 * @tc.expected: root's children_list has removed the selectOverlayNode we created
430 */
431 selectOverlayManager->DestroySelectOverlay();
432 auto children = root->GetChildren();
433 EXPECT_TRUE(children.empty());
434 /**
435 * @tc.steps: step3. call DestroySelectOverlay again when current node is invalid
436 * @tc.expected: function exits normally
437 */
438 PropertyChangeFlag flag = PROPERTY_UPDATE_NORMAL;
439 selectOverlayManager->MarkDirty(flag);
440 TouchEvent touchPoint;
441 selectOverlayManager->HandleGlobalEvent(touchPoint, ROOT_OFFSET);
442 selectOverlayManager->NotifyOverlayClosed();
443 selectOverlayManager->DestroySelectOverlay(NODE_ID);
444 EXPECT_TRUE(children.empty());
445 }
446
447 /**
448 * @tc.name: SelectOverlayManagerTest009
449 * @tc.desc: test IsInSelectedOrSelectOverlayArea
450 * @tc.type: FUNC
451 */
452 HWTEST_F(SelectOverlayManagerTestNg, SelectOverlayManagerTest009, TestSize.Level1)
453 {
454 /**
455 * @tc.steps: step1. construct a SelectOverlayManager and call CreateAndShowSelectOverlay
456 */
457 SelectOverlayInfo selectOverlayInfo;
458 selectOverlayInfo.singleLineHeight = NODE_ID;
459 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
460 auto selectOverlayManager = AceType::MakeRefPtr<SelectOverlayManager>(root);
461 auto proxy = selectOverlayManager->CreateAndShowSelectOverlay(selectOverlayInfo, nullptr);
462
463 /**
464 * @tc.expected: root's children_list contains the selectOverlayNode we created
465 */
466 auto selectOverlayNode = root->GetChildren().back();
467 ASSERT_TRUE(selectOverlayNode);
468 auto node_id = selectOverlayManager->selectOverlayInfo_.singleLineHeight;
469 EXPECT_EQ(node_id, NODE_ID);
470
471 /**
472 * @tc.steps: step2. call IsInSelectedOrSelectOverlayArea
473 * @tc.expected: return true
474 */
475 PropertyChangeFlag flag = PROPERTY_UPDATE_NORMAL;
476 selectOverlayManager->MarkDirty(flag);
477 const NG::PointF point { 0.0f, 0.0f };
478 auto result = selectOverlayManager->IsInSelectedOrSelectOverlayArea(point);
479 EXPECT_FALSE(result);
480 }
481 /**
482 * @tc.name: SelectOverlayManagerTest010
483 * @tc.desc: test IsTouchInCallerArea
484 * @tc.type: FUNC
485 */
486 HWTEST_F(SelectOverlayManagerTestNg, SelectOverlayManagerTest010, TestSize.Level1)
487 {
488 /**
489 * @tc.steps: step1. call IsTouchInCallerArea when touchTestResults_ is empty
490 * @tc.expected: return false
491 */
492 Init();
493 auto result1 = selectOverlayManager_->IsTouchInCallerArea();
494 EXPECT_FALSE(result1);
495 /**
496 * @tc.steps: step2. call HandleGlobalEvent
497 */
498 TouchEvent touchPoint;
499 selectOverlayManager_->HandleGlobalEvent(touchPoint, ROOT_OFFSET);
500 /**
501 * @tc.steps: step3. call DestroySelectOverlay with animation
502 * @tc.expected: root's children_list has removed the selectOverlayNode we created
503 */
504 selectOverlayManager_->DestroySelectOverlay(true);
505 auto children = root_->GetChildren();
506 EXPECT_TRUE(children.empty());
507 }
508
509 /**
510 * @tc.name: FindWindowScene001
511 * @tc.desc: test FindWindowScene
512 * @tc.type: FUNC
513 */
514 HWTEST_F(SelectOverlayManagerTestNg, FindWindowScene001, TestSize.Level1)
515 {
516 /**
517 * @tc.steps: step1. construct a SelectOverlayManager
518 */
519 SelectOverlayInfo selectOverlayInfo;
520 selectOverlayInfo.singleLineHeight = NODE_ID;
521 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
522 auto selectOverlayManager = AceType::MakeRefPtr<SelectOverlayManager>(root);
523 /**
524 * @tc.steps: step2. call FindWindowScene
525 */
526 auto rootNode = selectOverlayManager->FindWindowScene(nullptr);
527 EXPECT_TRUE(rootNode);
528 }
529
530 /**
531 * @tc.name: HandleGlobalEvent01
532 * @tc.desc: test HandleGlobalEvent
533 * @tc.type: FUNC
534 */
535 HWTEST_F(SelectOverlayManagerTestNg, HandleGlobalEvent01, TestSize.Level1)
536 {
537 /**
538 * @tc.steps: step1. call IsTouchInCallerArea when touchTestResults_ is empty
539 * @tc.expected: return false
540 */
541 Init();
542 auto result1 = selectOverlayManager_->IsTouchInCallerArea();
543 EXPECT_FALSE(result1);
544 /**
545 * @tc.steps: step2. Change the properties of the TouchEvent and call HandleGlobalEvent
546 */
547 TouchEvent touchPoint;
548 touchPoint.type = TouchType::DOWN;
549 selectOverlayManager_->HandleGlobalEvent(touchPoint, OffsetF(0.0f, 0.0f));
550 EXPECT_NE(touchPoint.sourceType, SourceType::TOUCH);
551 /**
552 * @tc.steps: step3. call DestroySelectOverlay with animation
553 * @tc.expected: root's children_list has removed the selectOverlayNode we created
554 */
555 selectOverlayManager_->DestroySelectOverlay(true);
556 auto children = root_->GetChildren();
557 EXPECT_TRUE(children.empty());
558 }
559
560 /**
561 * @tc.name: HandleGlobalEvent02
562 * @tc.desc: test HandleGlobalEvent
563 * @tc.type: FUNC
564 */
565 HWTEST_F(SelectOverlayManagerTestNg, HandleGlobalEvent02, TestSize.Level1)
566 {
567 /**
568 * @tc.steps: step1. call IsTouchInCallerArea when touchTestResults_ is empty
569 * @tc.expected: return false
570 */
571 Init();
572 auto result1 = selectOverlayManager_->IsTouchInCallerArea();
573 EXPECT_FALSE(result1);
574 /**
575 * @tc.steps: step2. Change the properties of the TouchEvent and call HandleGlobalEvent
576 */
577 TouchEvent touchPoint;
578 touchPoint.sourceType = SourceType::TOUCH;
579 selectOverlayManager_->HandleGlobalEvent(touchPoint, OffsetF(0.0f, 0.0f));
580 EXPECT_NE(touchPoint.type, TouchType::DOWN);
581 /**
582 * @tc.steps: step3. call DestroySelectOverlay with animation
583 * @tc.expected: root's children_list has removed the selectOverlayNode we created
584 */
585 selectOverlayManager_->DestroySelectOverlay(true);
586 auto children = root_->GetChildren();
587 EXPECT_TRUE(children.empty());
588 }
589
590 /**
591 * @tc.name: HandleGlobalEvent03
592 * @tc.desc: test HandleGlobalEvent
593 * @tc.type: FUNC
594 */
595 HWTEST_F(SelectOverlayManagerTestNg, HandleGlobalEvent03, TestSize.Level1)
596 {
597 /**
598 * @tc.steps: step1. call IsTouchInCallerArea when touchTestResults_ is empty
599 * @tc.expected: return false
600 */
601 Init();
602 auto result1 = selectOverlayManager_->IsTouchInCallerArea();
603 EXPECT_FALSE(result1);
604 /**
605 * @tc.steps: step2. Change the properties of the TouchEvent and call HandleGlobalEvent
606 */
607 TouchEvent touchPoint;
608 touchPoint.type = TouchType::MOVE;
609 selectOverlayManager_->HandleGlobalEvent(touchPoint, OffsetF(0.0f, 0.0f));
610 EXPECT_NE(touchPoint.sourceType, SourceType::TOUCH);
611 /**
612 * @tc.steps: step3. call DestroySelectOverlay with animation
613 * @tc.expected: root's children_list has removed the selectOverlayNode we created
614 */
615 selectOverlayManager_->DestroySelectOverlay(true);
616 auto children = root_->GetChildren();
617 EXPECT_TRUE(children.empty());
618 }
619
620 /**
621 * @tc.name: HandleGlobalEvent04
622 * @tc.desc: test HandleGlobalEvent
623 * @tc.type: FUNC
624 */
625 HWTEST_F(SelectOverlayManagerTestNg, HandleGlobalEvent04, TestSize.Level1)
626 {
627 /**
628 * @tc.steps: step1. call IsTouchInCallerArea when touchTestResults_ is empty
629 * @tc.expected: return false
630 */
631 Init();
632 auto result1 = selectOverlayManager_->IsTouchInCallerArea();
633 EXPECT_FALSE(result1);
634 /**
635 * @tc.steps: step2. Change the properties of the TouchEvent and call HandleGlobalEvent
636 */
637 TouchEvent touchPoint;
638 touchPoint.type = TouchType::MOVE;
639 touchPoint.sourceType = SourceType::TOUCH;
640 selectOverlayManager_->touchDownPoints_.emplace_back(touchPoint);
641 selectOverlayManager_->HandleGlobalEvent(touchPoint, OffsetF(0.0f, 0.0f));
642 EXPECT_NE(touchPoint.sourceType, SourceType::MOUSE);
643 /**
644 * @tc.steps: step3. call DestroySelectOverlay with animation
645 * @tc.expected: root's children_list has removed the selectOverlayNode we created
646 */
647 selectOverlayManager_->DestroySelectOverlay(true);
648 auto children = root_->GetChildren();
649 EXPECT_TRUE(children.empty());
650 }
651
652 /**
653 * @tc.name: HandleGlobalEvent05
654 * @tc.desc: test HandleGlobalEvent
655 * @tc.type: FUNC
656 */
657 HWTEST_F(SelectOverlayManagerTestNg, HandleGlobalEvent05, TestSize.Level1)
658 {
659 /**
660 * @tc.steps: step1. call IsTouchInCallerArea when touchTestResults_ is empty
661 * @tc.expected: return false
662 */
663 Init();
664 auto result1 = selectOverlayManager_->IsTouchInCallerArea();
665 EXPECT_FALSE(result1);
666 /**
667 * @tc.steps: step2. Change the properties of the TouchEvent and call HandleGlobalEvent
668 */
669 TouchEvent touchPoint;
670 TouchEvent touchPointerror;
671 touchPointerror.id = 5;
672 touchPointerror.x = 5;
673 touchPointerror.y = 5;
674 touchPoint.type = TouchType::MOVE;
675 touchPoint.sourceType = SourceType::TOUCH;
676 selectOverlayManager_->touchDownPoints_.emplace_back(touchPointerror);
677 selectOverlayManager_->HandleGlobalEvent(touchPoint, OffsetF(0.0f, 0.0f));
678 EXPECT_NE(touchPoint.sourceType, SourceType::MOUSE);
679 /**
680 * @tc.steps: step3. call DestroySelectOverlay with animation
681 * @tc.expected: root's children_list has removed the selectOverlayNode we created
682 */
683 selectOverlayManager_->DestroySelectOverlay(true);
684 auto children = root_->GetChildren();
685 EXPECT_TRUE(children.empty());
686 }
687
688 /**
689 * @tc.name: HandleGlobalEvent06
690 * @tc.desc: test HandleGlobalEvent
691 * @tc.type: FUNC
692 */
693 HWTEST_F(SelectOverlayManagerTestNg, HandleGlobalEvent06, TestSize.Level1)
694 {
695 /**
696 * @tc.steps: step1. call IsTouchInCallerArea when touchTestResults_ is empty
697 * @tc.expected: return false
698 */
699 Init();
700 auto result1 = selectOverlayManager_->IsTouchInCallerArea();
701 EXPECT_FALSE(result1);
702 /**
703 * @tc.steps: step2. Change the properties of the TouchEvent and call HandleGlobalEvent
704 */
705 TouchEvent touchPoint;
706 TouchEvent touchPointerror;
707 touchPointerror.id = 5;
708 touchPoint.type = TouchType::MOVE;
709 touchPoint.sourceType = SourceType::TOUCH;
710 selectOverlayManager_->touchDownPoints_.emplace_back(touchPointerror);
711 selectOverlayManager_->HandleGlobalEvent(touchPoint, OffsetF(0.0f, 0.0f));
712 EXPECT_NE(touchPoint.sourceType, SourceType::MOUSE);
713 /**
714 * @tc.steps: step3. call DestroySelectOverlay with animation
715 * @tc.expected: root's children_list has removed the selectOverlayNode we created
716 */
717 selectOverlayManager_->DestroySelectOverlay(true);
718 auto children = root_->GetChildren();
719 EXPECT_TRUE(children.empty());
720 }
721
722 /**
723 * @tc.name: HandleGlobalEvent07
724 * @tc.desc: test HandleGlobalEvent
725 * @tc.type: FUNC
726 */
727 HWTEST_F(SelectOverlayManagerTestNg, HandleGlobalEvent07, TestSize.Level1)
728 {
729 /**
730 * @tc.steps: step1. call IsTouchInCallerArea when touchTestResults_ is empty
731 * @tc.expected: return false
732 */
733 Init();
734 auto result1 = selectOverlayManager_->IsTouchInCallerArea();
735 EXPECT_FALSE(result1);
736 /**
737 * @tc.steps: step2. Change the properties of the TouchEvent and call HandleGlobalEvent
738 */
739 TouchEvent touchPoint;
740 touchPoint.type = TouchType::DOWN;
741 touchPoint.sourceType = SourceType::TOUCH;
742 selectOverlayManager_->touchDownPoints_.emplace_back(touchPoint);
743 selectOverlayManager_->HandleGlobalEvent(touchPoint, OffsetF(0.0f, 0.0f));
744 EXPECT_NE(touchPoint.sourceType, SourceType::MOUSE);
745 /**
746 * @tc.steps: step3. call DestroySelectOverlay with animation
747 * @tc.expected: root's children_list has removed the selectOverlayNode we created
748 */
749 selectOverlayManager_->DestroySelectOverlay(true);
750 auto children = root_->GetChildren();
751 EXPECT_TRUE(children.empty());
752 }
753
754 /**
755 * @tc.name: HandleGlobalEvent08
756 * @tc.desc: test HandleGlobalEvent
757 * @tc.type: FUNC
758 */
759 HWTEST_F(SelectOverlayManagerTestNg, HandleGlobalEvent08, TestSize.Level1)
760 {
761 /**
762 * @tc.steps: step1. call IsTouchInCallerArea when touchTestResults_ is empty
763 * @tc.expected: return false
764 */
765 Init();
766 auto result1 = selectOverlayManager_->IsTouchInCallerArea();
767 EXPECT_FALSE(result1);
768 /**
769 * @tc.steps: step2. Change the properties of the TouchEvent and call HandleGlobalEvent
770 */
771 TouchEvent touchPoint;
772 touchPoint.type = TouchType::DOWN;
773 touchPoint.sourceType = SourceType::TOUCH;
774 selectOverlayManager_->touchDownPoints_.clear();
775 touchPoint.x = 1.1f;
776 touchPoint.y = 1.1f;
777 selectOverlayManager_->HandleGlobalEvent(touchPoint, OffsetF(0.0f, 0.0f));
778 EXPECT_NE(touchPoint.sourceType, SourceType::MOUSE);
779 /**
780 * @tc.steps: step3. call DestroySelectOverlay with animation
781 * @tc.expected: root's children_list has removed the selectOverlayNode we created
782 */
783 selectOverlayManager_->DestroySelectOverlay(true);
784 auto children = root_->GetChildren();
785 EXPECT_TRUE(children.empty());
786 }
787
788 /**
789 * @tc.name: HandleGlobalEvent09
790 * @tc.desc: test HandleGlobalEvent
791 * @tc.type: FUNC
792 */
793 HWTEST_F(SelectOverlayManagerTestNg, HandleGlobalEvent09, TestSize.Level1)
794 {
795 /**
796 * @tc.steps: step1. call IsTouchInCallerArea when touchTestResults_ is empty
797 * @tc.expected: return false
798 */
799 Init();
800 auto result1 = selectOverlayManager_->IsTouchInCallerArea();
801 EXPECT_FALSE(result1);
802 /**
803 * @tc.steps: step2. Change the properties of the TouchEvent and call HandleGlobalEvent
804 */
805 TouchEvent touchPoint;
806 touchPoint.type = TouchType::DOWN;
807 touchPoint.sourceType = SourceType::TOUCH;
808 selectOverlayManager_->touchDownPoints_.clear();
809 auto selectOverlayNode = root_->GetChildren().back();
810 auto id = std::to_string(selectOverlayNode->GetId());
811 selectOverlayManager_->touchTestResults_.emplace_back(id);
812 selectOverlayManager_->HandleGlobalEvent(touchPoint, OffsetF(0.0f, 0.0f));
813 EXPECT_NE(touchPoint.sourceType, SourceType::MOUSE);
814 /**
815 * @tc.steps: step3. call DestroySelectOverlay with animation
816 * @tc.expected: root's children_list has removed the selectOverlayNode we created
817 */
818 selectOverlayManager_->DestroySelectOverlay(true);
819 auto children = root_->GetChildren();
820 EXPECT_TRUE(children.empty());
821 }
822
823 /**
824 * @tc.name: HandleGlobalEvent10
825 * @tc.desc: test HandleGlobalEvent
826 * @tc.type: FUNC
827 */
828 HWTEST_F(SelectOverlayManagerTestNg, HandleGlobalEvent10, TestSize.Level1)
829 {
830 /**
831 * @tc.steps: step1. call IsTouchInCallerArea when touchTestResults_ is empty
832 * @tc.expected: return false
833 */
834 Init();
835 auto result1 = selectOverlayManager_->IsTouchInCallerArea();
836 EXPECT_FALSE(result1);
837 /**
838 * @tc.steps: step2. Change the properties of the TouchEvent and call HandleGlobalEvent
839 */
840 TouchEvent touchPoint;
841 TouchEvent touchPointerror;
842 touchPoint.type = TouchType::MOVE;
843 touchPoint.sourceType = SourceType::TOUCH;
844 selectOverlayManager_->touchDownPoints_.clear();
845 selectOverlayManager_->HandleGlobalEvent(touchPoint, OffsetF(0.0f, 0.0f));
846 EXPECT_NE(touchPoint.sourceType, SourceType::MOUSE);
847 /**
848 * @tc.steps: step3. call DestroySelectOverlay with animation
849 * @tc.expected: root's children_list has removed the selectOverlayNode we created
850 */
851 selectOverlayManager_->DestroySelectOverlay(true);
852 auto children = root_->GetChildren();
853 EXPECT_TRUE(children.empty());
854 }
855
856 /**
857 * @tc.name: HandleGlobalEvent11
858 * @tc.desc: test HandleGlobalEvent
859 * @tc.type: FUNC
860 */
861 HWTEST_F(SelectOverlayManagerTestNg, HandleGlobalEvent11, TestSize.Level1)
862 {
863 /**
864 * @tc.steps: step1. call IsTouchInCallerArea when touchTestResults_ is empty
865 * @tc.expected: return false
866 */
867 Init();
868 auto result1 = selectOverlayManager_->IsTouchInCallerArea();
869 EXPECT_FALSE(result1);
870 /**
871 * @tc.steps: step2. Change the properties of the TouchEvent and call HandleGlobalEvent
872 */
873 TouchEvent touchPoint;
874 touchPoint.type = TouchType::UP;
875 touchPoint.sourceType = SourceType::TOUCH;
876 selectOverlayManager_->touchDownPoints_.emplace_back(touchPoint);
877 selectOverlayManager_->HandleGlobalEvent(touchPoint, OffsetF(0.0f, 0.0f));
878 EXPECT_TRUE(selectOverlayManager_->touchDownPoints_.empty());
879 /**
880 * @tc.steps: step3. call DestroySelectOverlay with animation
881 * @tc.expected: root's children_list has removed the selectOverlayNode we created
882 */
883 selectOverlayManager_->DestroySelectOverlay(true);
884 auto children = root_->GetChildren();
885 EXPECT_TRUE(children.empty());
886 }
887
888 /**
889 * @tc.name: HandleGlobalEvent12
890 * @tc.desc: test HandleGlobalEvent
891 * @tc.type: FUNC
892 */
893 HWTEST_F(SelectOverlayManagerTestNg, HandleGlobalEvent12, TestSize.Level1)
894 {
895 /**
896 * @tc.steps: step1. call IsTouchInCallerArea when touchTestResults_ is empty
897 * @tc.expected: return false
898 */
899 Init();
900 auto result1 = selectOverlayManager_->IsTouchInCallerArea();
901 EXPECT_FALSE(result1);
902 /**
903 * @tc.steps: step2. Change the properties of the TouchEvent and call HandleGlobalEvent
904 */
905 TouchEvent touchPoint;
906 touchPoint.type = TouchType::DOWN;
907 touchPoint.sourceType = SourceType::MOUSE;
908 touchPoint.x = 1.1f;
909 touchPoint.y = 1.1f;
910 selectOverlayManager_->HandleGlobalEvent(touchPoint, OffsetF(0.0f, 0.0f));
911 EXPECT_NE(touchPoint.sourceType, SourceType::TOUCH);
912 /**
913 * @tc.steps: step3. call DestroySelectOverlay with animation
914 * @tc.expected: root's children_list has removed the selectOverlayNode we created
915 */
916 selectOverlayManager_->DestroySelectOverlay(true);
917 auto children = root_->GetChildren();
918 EXPECT_TRUE(children.empty());
919 }
920
921 /**
922 * @tc.name: HandleGlobalEvent13
923 * @tc.desc: test HandleGlobalEvent
924 * @tc.type: FUNC
925 */
926 HWTEST_F(SelectOverlayManagerTestNg, HandleGlobalEvent13, TestSize.Level1)
927 {
928 /**
929 * @tc.steps: step1. call IsTouchInCallerArea when touchTestResults_ is empty
930 * @tc.expected: return false
931 */
932 Init();
933 auto result1 = selectOverlayManager_->IsTouchInCallerArea();
934 EXPECT_FALSE(result1);
935 /**
936 * @tc.steps: step2. Change the properties of the TouchEvent and call HandleGlobalEvent
937 */
938 TouchEvent touchPoint;
939 touchPoint.type = TouchType::UP;
940 touchPoint.sourceType = SourceType::TOUCH;
941 selectOverlayManager_->HandleGlobalEvent(touchPoint, OffsetF(0.0f, 0.0f));
942 EXPECT_TRUE(selectOverlayManager_->touchDownPoints_.empty());
943 /**
944 * @tc.steps: step3. call DestroySelectOverlay with animation
945 * @tc.expected: root's children_list has removed the selectOverlayNode we created
946 */
947 selectOverlayManager_->DestroySelectOverlay(true);
948 auto children = root_->GetChildren();
949 EXPECT_TRUE(children.empty());
950 }
951
952 /**
953 * @tc.name: HandleGlobalEvent14
954 * @tc.desc: test HandleGlobalEvent
955 * @tc.type: FUNC
956 */
957 HWTEST_F(SelectOverlayManagerTestNg, HandleGlobalEvent14, TestSize.Level1)
958 {
959 /**
960 * @tc.steps: step1. call IsTouchInCallerArea when touchTestResults_ is empty
961 * @tc.expected: return false
962 */
963 Init();
964 auto result1 = selectOverlayManager_->IsTouchInCallerArea();
965 EXPECT_FALSE(result1);
966 /**
967 * @tc.steps: step2. Change the properties of the TouchEvent and call HandleGlobalEvent
968 */
969 TouchEvent touchPoint;
970 TouchEvent touchPointerror;
971 touchPointerror.id = 5;
972 touchPoint.type = TouchType::UP;
973 touchPoint.sourceType = SourceType::TOUCH;
974 selectOverlayManager_->touchDownPoints_.emplace_back(touchPointerror);
975 selectOverlayManager_->HandleGlobalEvent(touchPoint, OffsetF(0.0f, 0.0f));
976 EXPECT_FALSE(selectOverlayManager_->touchDownPoints_.empty());
977 /**
978 * @tc.steps: step3. call DestroySelectOverlay with animation
979 * @tc.expected: root's children_list has removed the selectOverlayNode we created
980 */
981 selectOverlayManager_->DestroySelectOverlay(true);
982 auto children = root_->GetChildren();
983 EXPECT_TRUE(children.empty());
984 }
985
986 /**
987 * @tc.name: IsTouchInCallerArea01
988 * @tc.desc: test NotifyOverlayClosed and IsTouchInCallerArea
989 * @tc.type: FUNC
990 */
991 HWTEST_F(SelectOverlayManagerTestNg, IsTouchInCallerArea01, TestSize.Level1)
992 {
993 /**
994 * @tc.steps: step1. call IsTouchInCallerArea when touchTestResults_ is !empty
995 * @tc.expected: return true
996 */
997 Init();
998 SelectOverlayInfo selectOverlayInfo;
999 selectOverlayInfo.singleLineHeight = NODE_ID;
1000 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
1001 auto selectOverlayManager = AceType::MakeRefPtr<SelectOverlayManager>(root);
1002 auto proxy = selectOverlayManager->CreateAndShowSelectOverlay(selectOverlayInfo, nullptr);
1003 auto selectOverlayNode = root_->GetChildren().back();
1004 auto id = std::to_string(selectOverlayNode->GetId());
1005 selectOverlayManager_->touchTestResults_.emplace_back(id);
1006 auto result1 = selectOverlayManager_->IsTouchInCallerArea();
1007 /**
1008 * @tc.steps: step2. call NotifyOverlayClosed
1009 */
1010 selectOverlayManager->NotifyOverlayClosed(true);
1011 EXPECT_FALSE(result1);
1012 }
1013
1014 /**
1015 * @tc.name: NotifyOnScrollCallback01
1016 * @tc.desc: test NotifyOnScrollCallback and RemoveScrollCallback
1017 * @tc.type: FUNC
1018 */
1019 HWTEST_F(SelectOverlayManagerTestNg, NotifyOnScrollCallback01, TestSize.Level1)
1020 {
1021 /**
1022 * @tc.steps: step1. call CreateAndShowSelectOverlay
1023 * @tc.expected: return true
1024 */
1025 Init();
1026 SelectOverlayInfo selectOverlayInfo;
1027 selectOverlayInfo.singleLineHeight = NODE_ID;
1028 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
1029 auto selectOverlayManager = AceType::MakeRefPtr<SelectOverlayManager>(root);
1030 auto proxy = selectOverlayManager->CreateAndShowSelectOverlay(selectOverlayInfo, nullptr);
1031 EXPECT_TRUE(proxy);
1032 /**
1033 * @tc.steps: step2. call NotifyOnScrollCallback and RemoveScrollCallback
1034 * @tc.expected: return true
1035 */
1036 selectOverlayManager->NotifyOnScrollCallback(5, Axis::VERTICAL, 0.0, 0);
1037 selectOverlayManager->RemoveScrollCallback(9);
1038 EXPECT_TRUE(selectOverlayManager->parentScrollCallbacks_.empty());
1039 }
1040
1041 /**
1042 * @tc.name: NotifyOnScrollCallback02
1043 * @tc.desc: test NotifyOnScrollCallback
1044 * @tc.type: FUNC
1045 */
1046 HWTEST_F(SelectOverlayManagerTestNg, NotifyOnScrollCallback02, TestSize.Level1)
1047 {
1048 /**
1049 * @tc.steps: step1. call CreateAndShowSelectOverlay
1050 * @tc.expected: return true
1051 */
1052 Init();
1053 SelectOverlayInfo selectOverlayInfo;
1054 selectOverlayInfo.singleLineHeight = NODE_ID;
1055 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
1056 auto selectOverlayManager = AceType::MakeRefPtr<SelectOverlayManager>(root);
1057 auto proxy = selectOverlayManager->CreateAndShowSelectOverlay(selectOverlayInfo, nullptr);
1058 EXPECT_TRUE(proxy);
1059 /**
1060 * @tc.steps: step2. Init func ScrollableParentCallback and insert toparentScrollCallbacks_
1061 */
__anon412ff7280302(Axis axis, float value, int32_t id) 1062 ScrollableParentCallback callback = [&](Axis axis, float value, int32_t id) {
1063 axis = Axis::HORIZONTAL;
1064 value = 0.0;
1065 id = 5;
1066 };
1067 selectOverlayManager->RegisterScrollCallback(5, 5, std::move(callback));
1068 /**
1069 * @tc.steps: step3. call NotifyOnScrollCallback
1070 * @tc.expected: return false
1071 */
1072 selectOverlayManager->NotifyOnScrollCallback(5, Axis::VERTICAL, 0.0, 0);
1073 EXPECT_FALSE(selectOverlayManager->parentScrollCallbacks_.empty());
1074 }
1075
1076 /**
1077 * @tc.name: NotifyOnScrollCallback03
1078 * @tc.desc: test NotifyOnScrollCallback
1079 * @tc.type: FUNC
1080 */
1081 HWTEST_F(SelectOverlayManagerTestNg, NotifyOnScrollCallback03, TestSize.Level1)
1082 {
1083 /**
1084 * @tc.steps: step1. call CreateAndShowSelectOverlay
1085 * @tc.expected: return true
1086 */
1087 Init();
1088 SelectOverlayInfo selectOverlayInfo;
1089 selectOverlayInfo.singleLineHeight = NODE_ID;
1090 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
1091 auto selectOverlayManager = AceType::MakeRefPtr<SelectOverlayManager>(root);
1092 auto proxy = selectOverlayManager->CreateAndShowSelectOverlay(selectOverlayInfo, nullptr);
1093 EXPECT_TRUE(proxy);
1094 /**
1095 * @tc.steps: step2. Init func ScrollableParentCallback and insert toparentScrollCallbacks_
1096 */
__anon412ff7280402(Axis axis, float value, int32_t id) 1097 ScrollableParentCallback callback = [&](Axis axis, float value, int32_t id) {
1098 axis = Axis::HORIZONTAL;
1099 value = 0.0;
1100 id = 5;
1101 };
1102 selectOverlayManager->RegisterScrollCallback(0, 5, std::move(callback));
1103 /**
1104 * @tc.steps: step3. call NotifyOnScrollCallback
1105 * @tc.expected: return false
1106 */
1107 selectOverlayManager->NotifyOnScrollCallback(5, Axis::VERTICAL, 0.0, 0);
1108 EXPECT_FALSE(selectOverlayManager->parentScrollCallbacks_.empty());
1109 }
1110
1111 /**
1112 * @tc.name: RemoveScrollCallback01
1113 * @tc.desc: test RemoveScrollCallback
1114 * @tc.type: FUNC
1115 */
1116 HWTEST_F(SelectOverlayManagerTestNg, RemoveScrollCallback01, TestSize.Level1)
1117 {
1118 /**
1119 * @tc.steps: step1. call CreateAndShowSelectOverlay
1120 * @tc.expected: return true
1121 */
1122 Init();
1123 SelectOverlayInfo selectOverlayInfo;
1124 selectOverlayInfo.singleLineHeight = NODE_ID;
1125 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
1126 auto selectOverlayManager = AceType::MakeRefPtr<SelectOverlayManager>(root);
1127 auto proxy = selectOverlayManager->CreateAndShowSelectOverlay(selectOverlayInfo, nullptr);
1128 EXPECT_TRUE(proxy);
1129 /**
1130 * @tc.steps: step2. Init func ScrollableParentCallback and insert toparentScrollCallbacks_
1131 */
__anon412ff7280502(Axis axis, float value, int32_t id) 1132 ScrollableParentCallback callback = [&](Axis axis, float value, int32_t id) {
1133 axis = Axis::HORIZONTAL;
1134 value = 0.0;
1135 id = 5;
1136 };
1137 selectOverlayManager->RegisterScrollCallback(5, 5, std::move(callback));
1138 /**
1139 * @tc.steps: step3. call RemoveScrollCallback
1140 * @tc.expected: return true
1141 */
1142 selectOverlayManager->RemoveScrollCallback(5);
1143 EXPECT_TRUE(selectOverlayManager->parentScrollCallbacks_.empty());
1144 }
1145
1146 /**
1147 * @tc.name: RemoveScrollCallback02
1148 * @tc.desc: test RemoveScrollCallback
1149 * @tc.type: FUNC
1150 */
1151 HWTEST_F(SelectOverlayManagerTestNg, RemoveScrollCallback02, TestSize.Level1)
1152 {
1153 /**
1154 * @tc.steps: step1. call CreateAndShowSelectOverlay
1155 * @tc.expected: return true
1156 */
1157 Init();
1158 SelectOverlayInfo selectOverlayInfo;
1159 selectOverlayInfo.singleLineHeight = NODE_ID;
1160 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
1161 auto selectOverlayManager = AceType::MakeRefPtr<SelectOverlayManager>(root);
1162 auto proxy = selectOverlayManager->CreateAndShowSelectOverlay(selectOverlayInfo, nullptr);
1163 EXPECT_TRUE(proxy);
1164 /**
1165 * @tc.steps: step2. Init func ScrollableParentCallback and insert toparentScrollCallbacks_
1166 */
__anon412ff7280602(Axis axis, float value, int32_t id) 1167 ScrollableParentCallback callback = [&](Axis axis, float value, int32_t id) {
1168 axis = Axis::HORIZONTAL;
1169 value = 0.0;
1170 id = 5;
1171 };
1172 selectOverlayManager->RegisterScrollCallback(5, 5, std::move(callback));
1173 /**
1174 * @tc.steps: step3. call RemoveScrollCallback
1175 * @tc.expected: return false
1176 */
1177 selectOverlayManager->RemoveScrollCallback(0);
1178 EXPECT_FALSE(selectOverlayManager->parentScrollCallbacks_.empty());
1179 }
1180
1181 /**
1182 * @tc.name: RemoveScrollCallback03
1183 * @tc.desc: test RemoveScrollCallback
1184 * @tc.type: FUNC
1185 */
1186 HWTEST_F(SelectOverlayManagerTestNg, RemoveScrollCallback03, TestSize.Level1)
1187 {
1188 /**
1189 * @tc.steps: step1. call CreateAndShowSelectOverlay
1190 * @tc.expected: return true
1191 */
1192 Init();
1193 SelectOverlayInfo selectOverlayInfo;
1194 selectOverlayInfo.singleLineHeight = NODE_ID;
1195 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
1196 auto selectOverlayManager = AceType::MakeRefPtr<SelectOverlayManager>(root);
1197 auto proxy = selectOverlayManager->CreateAndShowSelectOverlay(selectOverlayInfo, nullptr);
1198 EXPECT_TRUE(proxy);
1199 /**
1200 * @tc.steps: step2. Init func ScrollableParentCallback and insert toparentScrollCallbacks_
1201 */
__anon412ff7280702(Axis axis, float value, int32_t id) 1202 ScrollableParentCallback callback = [&](Axis axis, float value, int32_t id) {
1203 axis = Axis::HORIZONTAL;
1204 value = 0.0;
1205 id = 5;
1206 };
1207 selectOverlayManager->RegisterScrollCallback(5, 5, std::move(callback));
1208 selectOverlayManager->RegisterScrollCallback(8, 5, std::move(callback));
1209 /**
1210 * @tc.steps: step3. call RemoveScrollCallback
1211 * @tc.expected: return false
1212 */
1213 selectOverlayManager->RemoveScrollCallback(9);
1214 EXPECT_FALSE(selectOverlayManager->parentScrollCallbacks_.empty());
1215 }
1216
1217 /**
1218 * @tc.name: UpdateShowingSelectOverlay01
1219 * @tc.desc: test UpdateShowingSelectOverlay
1220 * @tc.type: FUNC
1221 */
1222 HWTEST_F(SelectOverlayManagerTestNg, UpdateShowingSelectOverlay01, TestSize.Level1)
1223 {
1224 /**
1225 * @tc.steps: step1. Init client and clientInfo
1226 */
1227 TextFieldPattern client;
1228 ClientOverlayInfo clientInfo;
1229 SelectHandleInfo handleInfo;
1230 SelectHandleInfo secondInfo;
1231 secondInfo.isShow = false;
1232 clientInfo.isShowMouseMenu = false;
1233 clientInfo.firstHandleInfo = handleInfo;
1234 clientInfo.secondHandleInfo = secondInfo;
1235
1236 /**
1237 * @tc.steps: step2.call UpdateShowingSelectOverlay
1238 * @tc.expected: isUpdateMenu is true
1239 */
1240 client.UpdateShowingSelectOverlay(clientInfo);
1241 EXPECT_TRUE(clientInfo.isUpdateMenu);
1242 }
1243
1244 /**
1245 * @tc.name: UpdateShowingSelectOverlay02
1246 * @tc.desc: test UpdateShowingSelectOverlay
1247 * @tc.type: FUNC
1248 */
1249 HWTEST_F(SelectOverlayManagerTestNg, UpdateShowingSelectOverlay02, TestSize.Level1)
1250 {
1251 /**
1252 * @tc.steps: step1. Init client and clientInfo
1253 */
1254 TextFieldPattern client;
1255 ClientOverlayInfo clientInfo;
1256 clientInfo.isShowMouseMenu = true;
1257
1258 /**
1259 * @tc.steps: step2.call UpdateShowingSelectOverlay
1260 * @tc.expected: isUpdateMenu is true
1261 */
1262 client.UpdateShowingSelectOverlay(clientInfo);
1263 EXPECT_TRUE(clientInfo.isUpdateMenu);
1264 }
1265
1266 /**
1267 * @tc.name: GetSelectOverlayInfo01
1268 * @tc.desc: test GetSelectOverlayInfo
1269 * @tc.type: FUNC
1270 */
1271 HWTEST_F(SelectOverlayManagerTestNg, GetSelectOverlayInfo01, TestSize.Level1)
1272 {
1273 /**
1274 * @tc.steps: step1. Init client and clientInfo
1275 */
1276 TextFieldPattern client;
1277 ClientOverlayInfo clientInfo;
1278 clientInfo.isUpdateMenu = false;
1279
1280 /**
1281 * @tc.steps: step2.call GetSelectOverlayInfo
1282 * @tc.expected: handlerColor equals the default handlerColor
1283 */
1284 client.selectOverlayInfo_.handlerColor = Color::BLUE;
1285 auto selectOverlayInfo = client.GetSelectOverlayInfo(clientInfo);
1286 ASSERT_TRUE(selectOverlayInfo->handlerColor.has_value());
1287 EXPECT_TRUE(selectOverlayInfo->handlerColor.value() == client.selectOverlayInfo_.handlerColor.value());
1288
1289 /**
1290 * @tc.steps: step3.set handlerColor and call GetSelectOverlayInfo
1291 * @tc.expected: handlerColor equals the setting handlerColor
1292 */
1293 clientInfo.handlerColor = Color::RED;
1294 selectOverlayInfo = client.GetSelectOverlayInfo(clientInfo);
1295 ASSERT_TRUE(selectOverlayInfo->handlerColor.has_value());
1296 EXPECT_TRUE(selectOverlayInfo->handlerColor.value() == Color::RED);
1297 }
1298
1299 /**
1300 * @tc.name: InitSelectOverlay
1301 * @tc.desc: test InitSelectOverlay
1302 * @tc.type: FUNC
1303 */
1304 HWTEST_F(SelectOverlayManagerTestNg, InitSelectOverlay, TestSize.Level1)
1305 {
1306 /**
1307 * @tc.steps: step1. InitSelectOverlay
1308 */
1309 TextFieldPattern client;
1310 client.InitSelectOverlay();
1311 client.selectOverlayInfo_.menuCallback.onCopy();
1312 EXPECT_FALSE(client.SelectOverlayIsOn());
1313
1314 client.InitSelectOverlay();
1315 client.selectOverlayInfo_.menuCallback.onCut();
1316 EXPECT_FALSE(client.SelectOverlayIsOn());
1317
1318 client.InitSelectOverlay();
1319 client.selectOverlayInfo_.menuCallback.onSelectAll();
1320 EXPECT_FALSE(client.SelectOverlayIsOn());
1321
1322 client.InitSelectOverlay();
1323 client.selectOverlayInfo_.menuCallback.onPaste();
1324 EXPECT_FALSE(client.SelectOverlayIsOn());
1325
1326 client.InitSelectOverlay();
1327 client.selectOverlayInfo_.menuCallback.onTranslate();
1328 EXPECT_FALSE(client.SelectOverlayIsOn());
1329
1330 client.InitSelectOverlay();
1331 client.selectOverlayInfo_.menuCallback.onSearch();
1332 EXPECT_FALSE(client.SelectOverlayIsOn());
1333
1334 client.InitSelectOverlay();
1335 client.selectOverlayInfo_.menuCallback.onShare();
1336 EXPECT_FALSE(client.SelectOverlayIsOn());
1337
1338 client.InitSelectOverlay();
1339 client.selectOverlayInfo_.menuCallback.onCameraInput();
1340 EXPECT_FALSE(client.SelectOverlayIsOn());
1341
1342 client.InitSelectOverlay();
1343 client.selectOverlayInfo_.menuCallback.onAIWrite();
1344 EXPECT_FALSE(client.SelectOverlayIsOn());
1345
1346 bool isFirst = true;
1347 GestureEvent info;
1348 client.InitSelectOverlay();
1349 client.selectOverlayInfo_.onHandleMoveStart(info, isFirst);
1350 EXPECT_TRUE(isFirst);
1351
1352 RectF area;
1353 area = RectF(1, 1, 1, 1);
1354 client.InitSelectOverlay();
1355 client.selectOverlayInfo_.onHandleMove(area, isFirst);
1356 EXPECT_TRUE(isFirst);
1357
1358 area = RectF(1, 2, 2, 2);
1359 client.InitSelectOverlay();
1360 client.selectOverlayInfo_.onHandleMoveDone(area, isFirst);
1361 EXPECT_TRUE(isFirst);
1362
1363 bool closedByGlobalEvent = true;
1364 client.InitSelectOverlay();
1365 client.selectOverlayInfo_.onClose(closedByGlobalEvent);
1366 EXPECT_TRUE(isFirst);
1367 }
1368
1369 /**
1370 * @tc.name: RequestOpenSelectOverlay001
1371 * @tc.desc: test RequestOpenSelectOverlay001
1372 * @tc.type: FUNC
1373 */
1374 HWTEST_F(SelectOverlayManagerTestNg, RequestOpenSelectOverlay001, TestSize.Level1)
1375 {
1376 /**
1377 * @tc.steps: step1. RequestOpenSelectOverlay001
1378 */
1379 TextFieldPattern client;
1380 ClientOverlayInfo clientInfo;
1381
1382 EXPECT_FALSE(client.SelectOverlayIsOn());
1383 client.RequestOpenSelectOverlay(clientInfo);
1384 }
1385
1386 /**
1387 * @tc.name: RequestOpenSelectOverlay002
1388 * @tc.desc: test RequestOpenSelectOverlay002
1389 * @tc.type: FUNC
1390 */
1391 HWTEST_F(SelectOverlayManagerTestNg, RequestOpenSelectOverlay002, TestSize.Level1)
1392 {
1393 /**
1394 * @tc.steps: step1. RequestOpenSelectOverlay002
1395 */
1396 TextFieldPattern client;
1397 ClientOverlayInfo clientInfo;
1398
1399 client.RequestOpenSelectOverlay(clientInfo);
1400 EXPECT_FALSE(client.SelectOverlayIsOn());
1401 }
1402
1403 /**
1404 * @tc.name: CreateSelectOverlay01
1405 * @tc.desc: test CreateSelectOverlay01
1406 * @tc.type: FUNC
1407 */
1408 HWTEST_F(SelectOverlayManagerTestNg, CreateSelectOverlay01, TestSize.Level1)
1409 {
1410 /**
1411 * @tc.steps: step1. CreateSelectOverlay01
1412 */
1413 TextFieldPattern client;
1414 ClientOverlayInfo clientInfo;
1415 SelectOverlayInfo selectOverlayInfo;
1416
1417 selectOverlayInfo.isUsingMouse = IS_USING_MOUSE;
1418 client.CreateSelectOverlay(clientInfo);
1419 EXPECT_TRUE(selectOverlayInfo.isUsingMouse);
1420
1421 selectOverlayInfo.isUsingMouse = false;
1422 client.CreateSelectOverlay(clientInfo);
1423 EXPECT_FALSE(selectOverlayInfo.isUsingMouse);
1424 }
1425
1426 /**
1427 * @tc.name: CreateSelectOverlay02
1428 * @tc.desc: test CreateSelectOverlay02
1429 * @tc.type: FUNC
1430 */
1431 HWTEST_F(SelectOverlayManagerTestNg, CreateSelectOverlay02, TestSize.Level1)
1432 {
1433 /**
1434 * @tc.steps: step1. CreateSelectOverlay02
1435 */
1436 TextFieldPattern client;
1437 ClientOverlayInfo clientInfo;
1438 SelectOverlayInfo selectOverlayInfo;
1439
1440 selectOverlayInfo.isUsingMouse = false;
1441 client.CreateSelectOverlay(clientInfo);
1442 EXPECT_FALSE(selectOverlayInfo.isUsingMouse);
1443 }
1444
1445 /**
1446 * @tc.name: UpdateShowingSelectOverlay03
1447 * @tc.desc: test UpdateShowingSelectOverlay03
1448 * @tc.type: FUNC
1449 */
1450 HWTEST_F(SelectOverlayManagerTestNg, UpdateShowingSelectOverlay03, TestSize.Level1)
1451 {
1452 /**
1453 * @tc.steps: step1. UpdateShowingSelectOverlay03
1454 */
1455 TextFieldPattern client;
1456 ClientOverlayInfo clientInfo;
1457 SelectHandleInfo handleInfo;
1458 SelectHandleInfo secondInfo;
1459 secondInfo.isShow = false;
1460 clientInfo.isShowMouseMenu = false;
1461 clientInfo.secondHandleInfo = secondInfo;
1462
1463 clientInfo.isNewAvoid = true;
1464 client.UpdateShowingSelectOverlay(clientInfo);
1465 EXPECT_TRUE(clientInfo.isNewAvoid);
1466
1467 clientInfo.isUpdateMenu = true;
1468 client.UpdateShowingSelectOverlay(clientInfo);
1469
1470 clientInfo.firstHandleInfo = handleInfo;
1471 client.UpdateShowingSelectOverlay(clientInfo);
1472 }
1473
1474 /**
1475 * @tc.name: UpdateSelectInfo
1476 * @tc.desc: test UpdateSelectInfo
1477 * @tc.type: FUNC
1478 */
1479 HWTEST_F(SelectOverlayManagerTestNg, UpdateSelectInfo, TestSize.Level1)
1480 {
1481 /**
1482 * @tc.steps: step1. UpdateSelectInfo
1483 */
1484 TextFieldPattern client;
1485 SelectOverlayInfo selectOverlayInfo;
1486 const std::string selectInfo = "selectInfo";
1487 client.UpdateSelectInfo(selectInfo);
1488 selectOverlayInfo.selectText = selectInfo;
1489 EXPECT_EQ(selectOverlayInfo.selectText, selectInfo);
1490 }
1491
1492 /**
1493 * @tc.name: UpdateSelectMenuInfo
1494 * @tc.desc: test UpdateSelectMenuInfo
1495 * @tc.type: FUNC
1496 */
1497 HWTEST_F(SelectOverlayManagerTestNg, UpdateSelectMenuInfo, TestSize.Level1)
1498 {
1499 /**
1500 * @tc.steps: step1. UpdateSelectMenuInfo
1501 */
1502 TextFieldPattern client;
1503 SelectOverlayInfo selectOverlayInfo;
1504 std::function<void(SelectMenuInfo&)> updateAction;
1505 client.UpdateSelectMenuInfo(updateAction);
1506 EXPECT_FALSE(selectOverlayInfo.isUseOverlayNG);
1507 }
1508
1509 /**
1510 * @tc.name: UpdateSelectMenuVisibility001
1511 * @tc.desc: test UpdateSelectMenuVisibility001
1512 * @tc.type: FUNC
1513 */
1514 HWTEST_F(SelectOverlayManagerTestNg, UpdateSelectMenuVisibility001, TestSize.Level1)
1515 {
1516 /**
1517 * @tc.steps: step1. UpdateSelectMenuVisibility001
1518 */
1519 TextFieldPattern client;
1520 SelectOverlayInfo selectOverlayInfo;
1521 bool isVisible = true;
1522 client.UpdateSelectMenuVisibility(isVisible);
1523 EXPECT_TRUE(isVisible);
1524 }
1525
1526 /**
1527 * @tc.name: UpdateSelectMenuVisibility002
1528 * @tc.desc: test UpdateSelectMenuVisibility002
1529 * @tc.type: FUNC
1530 */
1531 HWTEST_F(SelectOverlayManagerTestNg, UpdateSelectMenuVisibility002, TestSize.Level1)
1532 {
1533 /**
1534 * @tc.steps: step1. UpdateSelectMenuVisibility002
1535 */
1536 TextFieldPattern client;
1537 SelectOverlayInfo selectOverlayInfo;
1538 bool isVisible = false;
1539 client.UpdateSelectMenuVisibility(isVisible);
1540 EXPECT_FALSE(isVisible);
1541 }
1542
1543 /**
1544 * @tc.name: StartListeningScrollableParent001
1545 * @tc.desc: test StartListeningScrollableParent001
1546 * @tc.type: FUNC
1547 */
1548 HWTEST_F(SelectOverlayManagerTestNg, StartListeningScrollableParent001, TestSize.Level1)
1549 {
1550 /**
1551 * @tc.steps: step1. StartListeningScrollableParent001
1552 */
1553 TextFieldPattern client;
1554 ScrollableParentInfo scrollableParentInfo;
1555 scrollableParentInfo.hasParent = true;
1556 client.StartListeningScrollableParent(root_);
1557 EXPECT_TRUE(scrollableParentInfo.hasParent);
1558 }
1559
1560 /**
1561 * @tc.name: StopListeningScrollableParent
1562 * @tc.desc: test StopListeningScrollableParent
1563 * @tc.type: FUNC
1564 */
1565 HWTEST_F(SelectOverlayManagerTestNg, StopListeningScrollableParent, TestSize.Level1)
1566 {
1567 /**
1568 * @tc.steps: step1. StopListeningScrollableParent
1569 */
1570 TextFieldPattern client;
1571 auto root = AceType::MakeRefPtr<FrameNode>(ROOT_TAG, -1, AceType::MakeRefPtr<Pattern>(), true);
1572 client.StopListeningScrollableParent(root);
1573 EXPECT_NE(root, nullptr);
1574 }
1575
1576 /**
1577 * @tc.name: GetVisibleContentRect
1578 * @tc.desc: test GetVisibleContentRect
1579 * @tc.type: FUNC
1580 */
1581 HWTEST_F(SelectOverlayManagerTestNg, GetVisibleContentRect, TestSize.Level1)
1582 {
1583 /**
1584 * @tc.steps: step1. GetVisibleContentRect
1585 */
1586 TextFieldPattern client;
1587 RectF visibleRect;
1588 visibleRect = RectF(1, 1, 1, 1);
1589 client.GetVisibleContentRect(root_, visibleRect);
1590 EXPECT_NE(visibleRect.GetY(), 0);
1591 }
1592
1593 /**
1594 * @tc.name: SetHolder
1595 * @tc.desc: test SetHolder
1596 * @tc.type: FUNC
1597 */
1598 HWTEST_F(SelectOverlayManagerTestNg, SetHolder, TestSize.Level1)
1599 {
1600 /**
1601 * @tc.steps: step1. SetHolder
1602 */
1603 auto content = SelectContentOverlayManager(root_);
1604 content.SetHolder(nullptr);
1605
1606 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
1607 content.SetHolder(holder);
1608
1609 content.selectionHoldId_ = 1;
1610 content.SetHolder(holder);
1611 EXPECT_EQ(content.selectOverlayHolder_, holder);
1612 }
1613
1614 /**
1615 * @tc.name: SetHolderInternal
1616 * @tc.desc: test SetHolderInternal
1617 * @tc.type: FUNC
1618 */
1619 HWTEST_F(SelectOverlayManagerTestNg, SetHolderInternal, TestSize.Level1)
1620 {
1621 /**
1622 * @tc.steps: step1. SetHolderInternal
1623 */
1624 auto content = SelectContentOverlayManager(root_);
1625 content.SetHolderInternal(nullptr);
1626
1627 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
1628 content.SetHolder(holder);
1629
1630 content.SetHolder(holder);
1631 content.SetHolderInternal(holder);
1632 EXPECT_EQ(content.selectionHoldId_, -1);
1633 }
1634
1635 /**
1636 * @tc.name: HasHolder
1637 * @tc.desc: test HasHolder
1638 * @tc.type: FUNC
1639 */
1640 HWTEST_F(SelectOverlayManagerTestNg, HasHolder, TestSize.Level1)
1641 {
1642 /**
1643 * @tc.steps: step1. HasHolder
1644 */
1645 auto content = SelectContentOverlayManager(root_);
1646 int32_t id = -1;
1647 bool hasHolder = content.HasHolder(id);
1648 EXPECT_FALSE(hasHolder);
1649 }
1650
1651 /**
1652 * @tc.name: SelectContent Show
1653 * @tc.desc: test SelectContent Show
1654 * @tc.type: FUNC
1655 */
1656 HWTEST_F(SelectOverlayManagerTestNg, Show, TestSize.Level1)
1657 {
1658 /**
1659 * @tc.steps: step1. Show
1660 */
1661 auto content = SelectContentOverlayManager(root_);
1662 bool animation = true;
1663 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
1664 content.SetHolder(holder);
1665 int32_t requestCode = -1;
1666 content.Show(animation, requestCode);
1667 EXPECT_EQ(content.selectionHoldId_, -1);
1668 }
1669
1670 /**
1671 * @tc.name: SelectContent BuildSelectOverlayInfo
1672 * @tc.desc: test SelectContent BuildSelectOverlayInfo
1673 * @tc.type: FUNC
1674 */
1675 HWTEST_F(SelectOverlayManagerTestNg, BuildSelectOverlayInfo, TestSize.Level1)
1676 {
1677 /**
1678 * @tc.steps: step1. BuildSelectOverlayInfo
1679 */
1680 auto content = SelectContentOverlayManager(root_);
1681 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
1682 content.SetHolder(holder);
1683 int32_t requestCode = -1;
1684 content.BuildSelectOverlayInfo(requestCode);
1685 EXPECT_EQ(content.selectionHoldId_, -1);
1686 }
1687
1688 /**
1689 * @tc.name: SelectContent UpdateStatusInfos
1690 * @tc.desc: test SelectContent UpdateStatusInfos
1691 * @tc.type: FUNC
1692 */
1693 HWTEST_F(SelectOverlayManagerTestNg, UpdateStatusInfos, TestSize.Level1)
1694 {
1695 /**
1696 * @tc.steps: step1. UpdateStatusInfos
1697 */
1698 auto content = SelectContentOverlayManager(root_);
1699 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
1700 content.SetHolder(holder);
1701 SelectOverlayInfo info;
1702 content.UpdateStatusInfos(info);
1703 EXPECT_NE(holder, nullptr);
1704 }
1705
1706 /**
1707 * @tc.name: MarkInfoChange
1708 * @tc.desc: test MarkInfoChange
1709 * @tc.type: FUNC
1710 */
1711 HWTEST_F(SelectOverlayManagerTestNg, MarkInfoChange, TestSize.Level1)
1712 {
1713 /**
1714 * @tc.steps: step1. MarkInfoChange
1715 */
1716 auto content = SelectContentOverlayManager(root_);
1717 SelectOverlayDirtyFlag dirty = 1;
1718
1719 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
1720 content.SetHolder(holder);
1721 content.MarkInfoChange(dirty);
1722 EXPECT_EQ(content.selectionHoldId_, -1);
1723 }
1724
1725 /**
1726 * @tc.name: UpdateHandleInfosWithFlag
1727 * @tc.desc: test UpdateHandleInfosWithFlag
1728 * @tc.type: FUNC
1729 */
1730 HWTEST_F(SelectOverlayManagerTestNg, UpdateHandleInfosWithFlag, TestSize.Level1)
1731 {
1732 /**
1733 * @tc.steps: step1. UpdateHandleInfosWithFlag
1734 */
1735 auto content = SelectContentOverlayManager(root_);
1736 int32_t updateFlag = 1;
1737
1738 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
1739 content.SetHolder(holder);
1740 content.UpdateHandleInfosWithFlag(updateFlag);
1741
1742 updateFlag = 2;
1743 content.UpdateHandleInfosWithFlag(updateFlag);
1744
1745 updateFlag = 3;
1746 content.UpdateHandleInfosWithFlag(updateFlag);
1747 EXPECT_EQ(content.selectionHoldId_, -1);
1748 }
1749
1750 /**
1751 * @tc.name: CreateSelectOverlay
1752 * @tc.desc: test CreateSelectOverlay
1753 * @tc.type: FUNC
1754 */
1755 HWTEST_F(SelectOverlayManagerTestNg, CreateSelectOverlay, TestSize.Level1)
1756 {
1757 /**
1758 * @tc.steps: step1. CreateSelectOverlay
1759 */
1760 auto content = SelectContentOverlayManager(root_);
1761 SelectOverlayInfo info;
1762 bool animation = true;
1763 content.CreateSelectOverlay(info, animation);
1764 EXPECT_EQ(content.selectionHoldId_, -1);
1765 }
1766
1767 /**
1768 * @tc.name: MountNodeToRoot
1769 * @tc.desc: test MountNodeToRoot
1770 * @tc.type: FUNC
1771 */
1772 HWTEST_F(SelectOverlayManagerTestNg, MountNodeToRoot, TestSize.Level1)
1773 {
1774 /**
1775 * @tc.steps: step1. MountNodeToRoot
1776 */
1777 auto content = SelectContentOverlayManager(root_);
1778 bool animation = true;
1779 content.MountNodeToRoot(root_, animation, NodeType::HANDLE);
1780 EXPECT_EQ(content.selectionHoldId_, -1);
1781 }
1782
1783 /**
1784 * @tc.name: GetSelectOverlayRoot
1785 * @tc.desc: test GetSelectOverlayRoot
1786 * @tc.type: FUNC
1787 */
1788 HWTEST_F(SelectOverlayManagerTestNg, GetSelectOverlayRoot, TestSize.Level1)
1789 {
1790 /**
1791 * @tc.steps: step1. GetSelectOverlayRoot
1792 */
1793 auto content = SelectContentOverlayManager(root_);
1794 auto rootNode = content.GetSelectOverlayRoot();
1795 EXPECT_EQ(rootNode, nullptr);
1796 }
1797
1798 /**
1799 * @tc.name: CloseInternalTest001
1800 * @tc.desc: test CloseInternal
1801 * @tc.type: FUNC
1802 */
1803 HWTEST_F(SelectOverlayManagerTestNg, CloseInternalTest001, TestSize.Level1)
1804 {
1805 /**
1806 * @tc.steps: step1. CloseInternal
1807 */
1808 auto content = SelectContentOverlayManager(root_);
1809 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
1810 content.SetHolder(holder);
1811 int32_t id = 1;
1812 bool animation = true;
1813 CloseReason reason = CloseReason::CLOSE_REASON_NORMAL;
1814 content.CloseInternal(id, animation, reason);
1815 EXPECT_EQ(content.selectionHoldId_, -1);
1816 }
1817
1818 /**
1819 * @tc.name: CloseInternalTest002
1820 * @tc.desc: test CloseInternal
1821 * @tc.type: FUNC
1822 */
1823 HWTEST_F(SelectOverlayManagerTestNg, CloseInternalTest002, TestSize.Level1)
1824 {
1825 /**
1826 * @tc.steps: step1. CloseInternal
1827 */
1828 Init();
1829 auto content = SelectContentOverlayManager(root_);
1830 auto holder = AceType::MakeRefPtr<MockSelectOverlayHolder>();
1831 holder->SetOwner(root_);
1832 content.SetHolder(holder);
1833 SelectOverlayInfo selectInfo;
1834 selectInfo.enableHandleLevel = true;
1835 selectInfo.menuInfo.showCut = true;
1836 content.shareOverlayInfo_ = std::make_shared<SelectOverlayInfo>(selectInfo);
1837 ASSERT_NE(content.shareOverlayInfo_, nullptr);
1838 auto frameNode = SelectOverlayNode::CreateSelectOverlayNode(content.shareOverlayInfo_);
1839 ASSERT_NE(frameNode, nullptr);
1840 content.menuNode_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
1841 ASSERT_NE(content.menuNode_.Upgrade(), nullptr);
1842
1843 /**
1844 * @tc.steps: step2. mount menuNode to root node
1845 */
1846 frameNode->SetParent(root_);
1847
1848 /**
1849 * @tc.steps: step3. call CloseInternal
1850 */
1851 int32_t id = root_->GetId();
1852 bool animation = true;
1853 CloseReason reason = CloseReason::CLOSE_REASON_NORMAL;
1854 content.shareOverlayInfo_ = std::make_shared<SelectOverlayInfo>();
1855 content.shareOverlayInfo_->menuInfo.menuIsShow = true;
1856 content.shareOverlayInfo_->enableHandleLevel = true;
1857 bool result = content.CloseInternal(id, animation, reason);
1858 EXPECT_TRUE(result);
1859 }
1860
1861 /**
1862 * @tc.name: CloseInternalTest003
1863 * @tc.desc: test CloseInternal
1864 * @tc.type: FUNC
1865 */
1866 HWTEST_F(SelectOverlayManagerTestNg, CloseInternalTest003, TestSize.Level1)
1867 {
1868 /**
1869 * @tc.steps: step1. CloseInternal.
1870 */
1871 Init();
1872 auto content = SelectContentOverlayManager(root_);
1873 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
1874 content.SetHolder(holder);
1875 SelectOverlayInfo selectInfo;
1876 selectInfo.enableHandleLevel = true;
1877 selectInfo.menuInfo.showCut = true;
1878 content.shareOverlayInfo_ = std::make_shared<SelectOverlayInfo>(selectInfo);
1879 ASSERT_NE(content.shareOverlayInfo_, nullptr);
1880 auto frameNode = SelectOverlayNode::CreateSelectOverlayNode(content.shareOverlayInfo_);
1881 ASSERT_NE(frameNode, nullptr);
1882 content.menuNode_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
1883 ASSERT_NE(content.menuNode_.Upgrade(), nullptr);
1884
1885 /**
1886 * @tc.steps: step2. mount menuNode to root node
1887 */
1888 frameNode->SetParent(root_);
1889
1890 /**
1891 * @tc.steps: step3. call CloseInternal
1892 */
1893 int32_t id = root_->GetId();
1894 bool animation = true;
1895 CloseReason reason = CloseReason::CLOSE_REASON_NORMAL;
1896 content.shareOverlayInfo_ = std::make_shared<SelectOverlayInfo>();
1897 content.shareOverlayInfo_->menuInfo.menuIsShow = true;
1898 content.shareOverlayInfo_->enableHandleLevel = false;
1899 bool result = content.CloseInternal(id, animation, reason);
1900 EXPECT_TRUE(result);
1901 }
1902
1903 /**
1904 * @tc.name: DestroySelectOverlayNode
1905 * @tc.desc: test DestroySelectOverlayNode
1906 * @tc.type: FUNC
1907 */
1908 HWTEST_F(SelectOverlayManagerTestNg, DestroySelectOverlayNode, TestSize.Level1)
1909 {
1910 /**
1911 * @tc.steps: step1. DestroySelectOverlayNode
1912 */
1913 auto content = SelectContentOverlayManager(root_);
1914 content.DestroySelectOverlayNode(root_);
1915 content.ClearAllStatus();
1916 EXPECT_EQ(content.selectionHoldId_, -1);
1917 }
1918
1919 /**
1920 * @tc.name: ClearAllStatus
1921 * @tc.desc: test ClearAllStatus
1922 * @tc.type: FUNC
1923 */
1924 HWTEST_F(SelectOverlayManagerTestNg, ClearAllStatus, TestSize.Level1)
1925 {
1926 /**
1927 * @tc.steps: step1. ClearAllStatus
1928 */
1929 auto content = SelectContentOverlayManager(root_);
1930 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
1931 content.SetHolder(holder);
1932 content.ClearAllStatus();
1933 EXPECT_NE(holder, nullptr);
1934 }
1935
1936 /**
1937 * @tc.name: CloseCurrent
1938 * @tc.desc: test CloseCurrent
1939 * @tc.type: FUNC
1940 */
1941 HWTEST_F(SelectOverlayManagerTestNg, CloseCurrent, TestSize.Level1)
1942 {
1943 /**
1944 * @tc.steps: step1. CloseCurrent
1945 */
1946 auto content = SelectContentOverlayManager(root_);
1947 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
1948 content.SetHolder(holder);
1949 bool animation = true;
1950 CloseReason reason = CloseReason::CLOSE_REASON_NORMAL;
1951 bool isCloseCurrent = content.CloseCurrent(animation, reason);
1952 EXPECT_FALSE(isCloseCurrent);
1953 }
1954
1955 /**
1956 * @tc.name: ShowOptionMenu
1957 * @tc.desc: test ShowOptionMenu
1958 * @tc.type: FUNC
1959 */
1960 HWTEST_F(SelectOverlayManagerTestNg, ShowOptionMenu, TestSize.Level1)
1961 {
1962 /**
1963 * @tc.steps: step1. ShowOptionMenu
1964 */
1965 auto content = SelectContentOverlayManager(root_);
1966 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
1967 content.SetHolder(holder);
1968 content.ShowOptionMenu();
1969 content.HideOptionMenu(true);
1970 content.ToggleOptionMenu();
1971 content.DisableMenu();
1972 content.EnableMenu();
1973 content.HideHandle();
1974 content.IsCreating();
1975 content.IsMenuShow();
1976 content.IsSingleHandle();
1977 bool isHandlesShow = content.IsHandlesShow();
1978 EXPECT_FALSE(isHandlesShow);
1979 }
1980
1981 /**
1982 * @tc.name: IsHandleReverse
1983 * @tc.desc: test IsHandleReverse
1984 * @tc.type: FUNC
1985 */
1986 HWTEST_F(SelectOverlayManagerTestNg, IsHandleReverse, TestSize.Level1)
1987 {
1988 /**
1989 * @tc.steps: step1. IsHandleReverse
1990 */
1991 auto content = SelectContentOverlayManager(root_);
1992 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
1993 content.SetHolder(holder);
1994 bool isHandle = content.IsHandleReverse();
1995 EXPECT_FALSE(isHandle);
1996 }
1997
1998 /**
1999 * @tc.name: RestartHiddenHandleTask
2000 * @tc.desc: test RestartHiddenHandleTask
2001 * @tc.type: FUNC
2002 */
2003 HWTEST_F(SelectOverlayManagerTestNg, RestartHiddenHandleTask, TestSize.Level1)
2004 {
2005 /**
2006 * @tc.steps: step1. RestartHiddenHandleTask
2007 */
2008 auto content = SelectContentOverlayManager(root_);
2009 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
2010 content.SetHolder(holder);
2011 bool isDelay = true;
2012 content.RestartHiddenHandleTask(isDelay);
2013 EXPECT_FALSE(content.isIntercept_);
2014 }
2015
2016 /**
2017 * @tc.name: CancelHiddenHandleTask
2018 * @tc.desc: test RestartHiddenHandleTask
2019 * @tc.type: FUNC
2020 */
2021 HWTEST_F(SelectOverlayManagerTestNg, CancelHiddenHandleTask, TestSize.Level1)
2022 {
2023 /**
2024 * @tc.steps: step1. CancelHiddenHandleTask
2025 */
2026 auto content = SelectContentOverlayManager(root_);
2027 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
2028 content.SetHolder(holder);
2029 content.CancelHiddenHandleTask();
2030 EXPECT_FALSE(content.isIntercept_);
2031 }
2032
2033 /**
2034 * @tc.name: GetSelectOverlayNode
2035 * @tc.desc: test GetSelectOverlayNode
2036 * @tc.type: FUNC
2037 */
2038 HWTEST_F(SelectOverlayManagerTestNg, GetSelectOverlayNode, TestSize.Level1)
2039 {
2040 /**
2041 * @tc.steps: step1. GetSelectOverlayNode
2042 */
2043 auto content = SelectContentOverlayManager(root_);
2044 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
2045 content.SetHolder(holder);
2046 auto selectOverlayNode = content.GetSelectOverlayNode();
2047 EXPECT_EQ(selectOverlayNode, nullptr);
2048 }
2049
2050 /**
2051 * @tc.name: GetShowMenuType
2052 * @tc.desc: test GetShowMenuType
2053 * @tc.type: FUNC
2054 */
2055 HWTEST_F(SelectOverlayManagerTestNg, GetShowMenuType, TestSize.Level1)
2056 {
2057 /**
2058 * @tc.steps: step1. GetShowMenuType
2059 */
2060 auto content = SelectContentOverlayManager(root_);
2061 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
2062 content.SetHolder(holder);
2063 content.GetShowMenuType();
2064 EXPECT_FALSE(content.IsOpen());
2065 }
2066
2067 /**
2068 * @tc.name: ContentHandleGlobalEvent
2069 * @tc.desc: test SelectContentOverlayManager HandleGlobalEvent
2070 * @tc.type: FUNC
2071 */
2072 HWTEST_F(SelectOverlayManagerTestNg, ContentHandleGlobalEvent, TestSize.Level1)
2073 {
2074 /**
2075 * @tc.steps: step1. HandleGlobalEvent
2076 */
2077 Init();
2078 auto content = SelectContentOverlayManager(root_);
2079 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
2080 content.SetHolder(holder);
2081 TouchEvent touchPoint;
2082 content.HandleGlobalEvent(touchPoint, ROOT_OFFSET);
2083 EXPECT_NE(touchPoint.type, TouchType::DOWN);
2084 /**
2085 * @tc.steps: step2. Change the TouchEvent and call HandleGlobalEvent
2086 */
2087 touchPoint.type = TouchType::DOWN;
2088 content.HandleGlobalEvent(touchPoint, ROOT_OFFSET);
2089 EXPECT_NE(touchPoint.type, TouchType::UP);
2090
2091 touchPoint.type = TouchType::UP;
2092 content.HandleGlobalEvent(touchPoint, ROOT_OFFSET);
2093 EXPECT_NE(touchPoint.type, TouchType::MOVE);
2094 }
2095
2096 /**
2097 * @tc.name: IsTouchInSelectOverlayArea001
2098 * @tc.desc: test IsTouchInSelectOverlayArea
2099 * @tc.type: FUNC
2100 */
2101 HWTEST_F(SelectOverlayManagerTestNg, IsTouchInSelectOverlayArea001, TestSize.Level1)
2102 {
2103 /**
2104 * @tc.steps: step1. IsTouchInSelectOverlayArea
2105 */
2106 Init();
2107 auto content = SelectContentOverlayManager(root_);
2108 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
2109 PointF point { 9.0f, 12.0f };
2110 content.SetHolder(holder);
2111 content.IsTouchInSelectOverlayArea(point);
2112 EXPECT_FALSE(content.IsOpen());
2113 }
2114
2115 /**
2116 * @tc.name: IsTouchInSelectOverlayArea002
2117 * @tc.desc: test IsTouchInSelectOverlayArea
2118 * @tc.type: FUNC
2119 */
2120 HWTEST_F(SelectOverlayManagerTestNg, IsTouchInSelectOverlayArea002, TestSize.Level1)
2121 {
2122 /**
2123 * @tc.steps: step1. init SelectContentOverlayManager
2124 */
2125 Init();
2126 auto content = SelectContentOverlayManager(root_);
2127 SelectOverlayInfo selectInfo;
2128 selectInfo.enableHandleLevel = true;
2129 selectInfo.menuInfo.showCut = true;
2130 content.shareOverlayInfo_ = std::make_shared<SelectOverlayInfo>(selectInfo);
2131 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
2132 PointF point { 9.0f, 12.0f };
2133 content.SetHolder(holder);
2134
2135 /**
2136 * @tc.steps: step2. call IsTouchInSelectOverlayArea
2137 */
2138 content.IsTouchInSelectOverlayArea(point);
2139 EXPECT_FALSE(content.IsOpen());
2140 }
2141
2142 /**
2143 * @tc.name: HandleSelectionEvent
2144 * @tc.desc: test HandleSelectionEvent
2145 * @tc.type: FUNC
2146 */
2147 HWTEST_F(SelectOverlayManagerTestNg, HandleSelectionEvent, TestSize.Level1)
2148 {
2149 /**
2150 * @tc.steps: step1. HandleSelectionEvent
2151 */
2152 Init();
2153 auto content = SelectContentOverlayManager(root_);
2154 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
2155 PointF point { 9.0f, 12.0f };
2156 content.SetHolder(holder);
2157 TouchEvent touchPoint;
2158 touchPoint.type = TouchType::UP;
2159 content.HandleSelectionEvent(point, touchPoint);
2160 EXPECT_FALSE(content.IsOpen());
2161 }
2162
2163 /**
2164 * @tc.name: ResetSelectionRect
2165 * @tc.desc: test ResetSelectionRect
2166 * @tc.type: FUNC
2167 */
2168 HWTEST_F(SelectOverlayManagerTestNg, ResetSelectionRect, TestSize.Level1)
2169 {
2170 /**
2171 * @tc.steps: step1. ResetSelectionRect
2172 */
2173 Init();
2174 auto content = SelectContentOverlayManager(root_);
2175 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
2176 content.SetHolder(holder);
2177 HoldSelectionInfo holdSelectionInfo_;
2178 holdSelectionInfo_ = {};
2179 content.ResetSelectionRect();
2180 EXPECT_EQ(content.selectionHoldId_, -1);
2181 }
2182
2183 /**
2184 * @tc.name: SetHoldSelectionCallback
2185 * @tc.desc: test SetHoldSelectionCallback
2186 * @tc.type: FUNC
2187 */
2188 HWTEST_F(SelectOverlayManagerTestNg, SetHoldSelectionCallback, TestSize.Level1)
2189 {
2190 /**
2191 * @tc.steps: step1. SetHoldSelectionCallback
2192 */
2193 Init();
2194 auto content = SelectContentOverlayManager(root_);
2195 int32_t id = -1;
2196 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
2197 HoldSelectionInfo holdSelectionInfo_;
2198 holdSelectionInfo_ = {};
2199 content.SetHolder(holder);
2200 content.SetHoldSelectionCallback(id, holdSelectionInfo_);
2201 EXPECT_EQ(content.selectionHoldId_, -1);
2202 id = 1;
2203 content.SetHoldSelectionCallback(id, holdSelectionInfo_);
2204 EXPECT_EQ(content.selectionHoldId_, 1);
2205 }
2206
2207 /**
2208 * @tc.name: RemoveHoldSelectionCallback
2209 * @tc.desc: test RemoveHoldSelectionCallback
2210 * @tc.type: FUNC
2211 */
2212 HWTEST_F(SelectOverlayManagerTestNg, RemoveHoldSelectionCallback, TestSize.Level1)
2213 {
2214 /**
2215 * @tc.steps: step1. RemoveHoldSelectionCallback
2216 */
2217 Init();
2218 auto content = SelectContentOverlayManager(root_);
2219 HoldSelectionInfo holdSelectionInfo_;
2220 holdSelectionInfo_ = {};
2221 int32_t id = -1;
2222 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>();
2223 content.SetHolder(holder);
2224 content.RemoveHoldSelectionCallback(id);
2225 id = 1;
2226 content.RemoveHoldSelectionCallback(id);
2227 EXPECT_EQ(content.selectionHoldId_, -1);
2228 }
2229
2230 /**
2231 * @tc.name: SwitchToHandleMode
2232 * @tc.desc: test SwitchToHandleMode
2233 * @tc.type: FUNC
2234 */
2235 HWTEST_F(SelectOverlayManagerTestNg, SwitchToHandleMode, TestSize.Level1)
2236 {
2237 /**
2238 * @tc.steps: step1. Crate SelectContentOverlayManager and SelectOverlayHolder.
2239 */
2240 Init();
2241 auto content = AceType::MakeRefPtr<SelectContentOverlayManager>(root_);
2242 auto holder = AceType::MakeRefPtr<MockSelectOverlayHolder>();
2243 content->SetHolder(holder);
2244 content->Show(false, 0);
2245 EXPECT_NE(content->handleNode_.Upgrade(), nullptr);
2246 EXPECT_NE(content->menuNode_.Upgrade(), nullptr);
2247 /**
2248 * @tc.steps: step2. SwitchToHandleMode OVERLAY mode.
2249 */
2250 content->SwitchToHandleMode(HandleLevelMode::OVERLAY);
2251 EXPECT_EQ(holder->handleLevelMode_, HandleLevelMode::OVERLAY);
2252
2253 /**
2254 * @tc.steps: step3. SwitchToHandleMode EMBED mode.
2255 */
2256 content->SwitchToHandleMode(HandleLevelMode::EMBED, false);
2257 EXPECT_EQ(holder->handleLevelMode_, HandleLevelMode::OVERLAY);
2258 holder->allowSwitchMode_ = true;
2259 holder->SetOwner(root_);
2260 content->SwitchToHandleMode(HandleLevelMode::EMBED, false);
2261 EXPECT_EQ(holder->handleLevelMode_, HandleLevelMode::EMBED);
2262 }
2263
2264 /**
2265 * @tc.name: SwitchToHandleMode001
2266 * @tc.desc: test SwitchToHandleMode
2267 * @tc.type: FUNC
2268 */
2269 HWTEST_F(SelectOverlayManagerTestNg, SwitchToHandleMode001, TestSize.Level1)
2270 {
2271 /**
2272 * @tc.steps: step1. Crate SelectContentOverlayManager and SelectOverlayHolder.
2273 */
2274 Init();
2275 auto content = AceType::MakeRefPtr<SelectContentOverlayManager>(root_);
2276 auto holder = AceType::MakeRefPtr<MockSelectOverlayHolder>();
2277 content->SetHolder(holder);
2278 content->Show(false, 0);
2279 EXPECT_NE(content->handleNode_.Upgrade(), nullptr);
2280 EXPECT_NE(content->menuNode_.Upgrade(), nullptr);
2281 holder->allowSwitchMode_ = true;
2282 holder->SetOwner(root_);
2283
2284 /**
2285 * @tc.steps: step2. SwitchToHandleMode EMBED mode.
2286 */
2287 content->SwitchToHandleMode(HandleLevelMode::EMBED, false);
2288 EXPECT_EQ(holder->handleLevelMode_, HandleLevelMode::EMBED);
2289
2290 /**
2291 * @tc.steps: step3. SwitchToHandleMode OVERLAY mode.
2292 */
2293 content->SwitchToHandleMode(HandleLevelMode::OVERLAY);
2294 EXPECT_EQ(holder->handleLevelMode_, HandleLevelMode::OVERLAY);
2295 }
2296
2297 /**
2298 * @tc.name: SwitchToHandleMode002
2299 * @tc.desc: test SwitchToHandleMode
2300 * @tc.type: FUNC
2301 */
2302 HWTEST_F(SelectOverlayManagerTestNg, SwitchToHandleMode002, TestSize.Level1)
2303 {
2304 /**
2305 * @tc.steps: step1. Crate SelectContentOverlayManager and SelectOverlayHolder.
2306 */
2307 Init();
2308 auto content = AceType::MakeRefPtr<SelectContentOverlayManager>(root_);
2309 auto holder = AceType::MakeRefPtr<MockSelectOverlayHolder>();
2310 content->SetHolder(holder);
2311 content->Show(false, 0);
2312 EXPECT_NE(content->handleNode_.Upgrade(), nullptr);
2313 EXPECT_NE(content->menuNode_.Upgrade(), nullptr);
2314 holder->allowSwitchMode_ = true;
2315 holder->SetOwner(root_);
2316
2317 /**
2318 * @tc.steps: step2. Update enableHandleLevel
2319 */
2320 EXPECT_NE(content->shareOverlayInfo_, nullptr);
2321 content->shareOverlayInfo_->enableHandleLevel = false;
2322
2323 /**
2324 * @tc.steps: step3. SwitchToHandleMode EMBED mode.
2325 */
2326 content->SwitchToHandleMode(HandleLevelMode::EMBED, false);
2327 EXPECT_EQ(holder->handleLevelMode_, HandleLevelMode::EMBED);
2328
2329 /**
2330 * @tc.steps: step4. SwitchToHandleMode OVERLAY mode.
2331 */
2332 content->SwitchToHandleMode(HandleLevelMode::OVERLAY);
2333 EXPECT_EQ(holder->handleLevelMode_, HandleLevelMode::OVERLAY);
2334 }
2335
2336 /**
2337 * @tc.name: ClickAndSwitchToHandleMode
2338 * @tc.desc: test click to switch overlay mode.
2339 * @tc.type: FUNC
2340 */
2341 HWTEST_F(SelectOverlayManagerTestNg, ClickAndSwitchToHandleMode, TestSize.Level1)
2342 {
2343 /**
2344 * @tc.steps: step1. Crate SelectContentOverlayManager and SelectOverlayHolder.
2345 */
2346 Init();
2347 auto content = AceType::MakeRefPtr<SelectContentOverlayManager>(root_);
2348 auto holder = AceType::MakeRefPtr<MockSelectOverlayHolder>();
2349 content->SetHolder(holder);
2350 content->Show(false, 0);
2351 ASSERT_NE(content->handleNode_.Upgrade(), nullptr);
2352 ASSERT_NE(content->menuNode_.Upgrade(), nullptr);
2353 /**
2354 * @tc.steps: step2. SwitchToHandleMode EMBED mode.
2355 */
2356 content->SwitchToHandleMode(HandleLevelMode::EMBED);
2357 EXPECT_EQ(holder->handleLevelMode_, HandleLevelMode::EMBED);
2358
2359 /**
2360 * @tc.steps: step3. click handle to switch overlay mode.
2361 */
2362 auto selectOverlayNode = AceType::DynamicCast<SelectOverlayNode>(content->menuNode_.Upgrade());
2363 ASSERT_NE(selectOverlayNode, nullptr);
2364 auto selectOverlayPattern = selectOverlayNode->GetPattern<SelectOverlayPattern>();
2365 ASSERT_NE(selectOverlayPattern, nullptr);
2366 selectOverlayPattern->isFirstHandleTouchDown_ = true;
2367 selectOverlayPattern->isSecondHandleTouchDown_ = true;
2368 TouchEventInfo info("");
2369 TouchLocationInfo location(1);
2370 location.SetLocalLocation(Offset(0.0f, 0.0f));
2371 location.touchType_ = TouchType::UP;
2372 info.changedTouches_ = { location };
2373 auto pipeline = PipelineContext::GetCurrentContext();
2374 ASSERT_NE(pipeline, nullptr);
2375 auto overlayManager = pipeline->GetSelectOverlayManager();
2376 ASSERT_NE(overlayManager, nullptr);
2377 overlayManager->selectContentManager_ = content;
2378 holder->allowSwitchMode_ = true;
2379 selectOverlayPattern->HandleTouchEvent(info);
2380 EXPECT_EQ(holder->handleLevelMode_, HandleLevelMode::OVERLAY);
2381 }
2382
2383 /**
2384 * @tc.name: CreateSelectOverlay03
2385 * @tc.desc: test CreateSelectOverlay
2386 * @tc.type: FUNC
2387 */
2388 HWTEST_F(SelectOverlayManagerTestNg, CreateSelectOverlay03, TestSize.Level1)
2389 {
2390 /**
2391 * @tc.steps: step1. CreateSelectOverlay
2392 */
2393 Init();
2394 auto content = AceType::MakeRefPtr<SelectContentOverlayManager>(root_);
2395 ASSERT_NE(content, nullptr);
2396 SelectOverlayInfo info;
2397 info.enableHandleLevel = false;
2398 info.enableSubWindowMenu = true;
2399 info.isUsingMouse = IS_USING_MOUSE;
2400 TextMenuOptions textMenuOptions_;
2401 textMenuOptions_.showMode = TextMenuShowMode::PREFER_WINDOW;
2402 selectOverlayManager_->SetTextMenuOptions(textMenuOptions_);
2403 EXPECT_EQ(selectOverlayManager_->GetMenuShowMode(), TextMenuShowMode::PREFER_WINDOW);
2404 bool animation = true;
2405 content->CreateSelectOverlay(info, animation);
2406 EXPECT_EQ(content->selectionHoldId_, -1);
2407 }
2408
2409 /**
2410 * @tc.name: CreateSelectOverlay04
2411 * @tc.desc: test CreateSelectOverlay
2412 * @tc.type: FUNC
2413 */
2414 HWTEST_F(SelectOverlayManagerTestNg, CreateSelectOverlay04, TestSize.Level1)
2415 {
2416 /**
2417 * @tc.steps: step1. CreateSelectOverlay
2418 */
2419 Init();
2420 auto content = AceType::MakeRefPtr<SelectContentOverlayManager>(root_);
2421 ASSERT_NE(content, nullptr);
2422 SelectOverlayInfo info;
2423 info.enableHandleLevel = true;
2424 info.enableSubWindowMenu = true;
2425 TextMenuOptions textMenuOptions_;
2426 textMenuOptions_.showMode = TextMenuShowMode::PREFER_WINDOW;
2427 selectOverlayManager_->SetTextMenuOptions(textMenuOptions_);
2428 EXPECT_EQ(selectOverlayManager_->GetMenuShowMode(), TextMenuShowMode::PREFER_WINDOW);
2429 bool animation = true;
2430 content->CreateSelectOverlay(info, animation);
2431 EXPECT_NE(content->handleNode_.Upgrade(), nullptr);
2432 EXPECT_NE(content->menuNode_.Upgrade(), nullptr);
2433 }
2434
2435 /**
2436 * @tc.name: MountMenuNodeToSubWindow01
2437 * @tc.desc: test MountMenuNodeToSubWindow
2438 * @tc.type: FUNC
2439 */
2440 HWTEST_F(SelectOverlayManagerTestNg, MountMenuNodeToSubWindow01, TestSize.Level1)
2441 {
2442 /**
2443 * @tc.steps: step1. init SelectContentOverlayManager
2444 */
2445 Init();
2446 auto content = AceType::MakeRefPtr<SelectContentOverlayManager>(root_);
2447 ASSERT_NE(content, nullptr);
2448 SelectOverlayInfo selectInfo;
2449 selectInfo.enableHandleLevel = true;
2450 selectInfo.enableSubWindowMenu = true;
2451 selectInfo.isUseOverlayNG = true;
2452 selectInfo.menuInfo.showCut = true;
2453 selectInfo.menuInfo.showCopy = true;
2454 TextMenuOptions textMenuOptions_;
2455 textMenuOptions_.showMode = TextMenuShowMode::PREFER_WINDOW;
2456 selectOverlayManager_->SetTextMenuOptions(textMenuOptions_);
2457 EXPECT_EQ(selectOverlayManager_->GetMenuShowMode(), TextMenuShowMode::PREFER_WINDOW);
2458
2459 /**
2460 * @tc.steps: step2. CreateSelectOverlayNode
2461 */
2462 content->shareOverlayInfo_ = std::make_shared<SelectOverlayInfo>(selectInfo);
2463 ASSERT_NE(content->shareOverlayInfo_, nullptr);
2464 auto frameNode = SelectOverlayNode::CreateSelectOverlayNode(content->shareOverlayInfo_);
2465 ASSERT_NE(frameNode, nullptr);
2466 auto selectOverlayNode = AceType::DynamicCast<SelectOverlayNode>(frameNode);
2467 ASSERT_NE(selectOverlayNode, nullptr);
2468
2469 /**
2470 * @tc.steps: step3. MountMenuNodeToSubWindow
2471 */
2472 bool animation = true;
2473 content->MountMenuNodeToSubWindow(selectOverlayNode, animation, NodeType::TOUCH_MENU);
2474 auto selectoverlayPattern = selectOverlayNode->GetPattern<SelectOverlayPattern>();
2475 ASSERT_NE(selectoverlayPattern, nullptr);
2476 EXPECT_EQ(selectoverlayPattern->GetIsMenuShowInSubWindow(), false);
2477 }
2478
2479 /**
2480 * @tc.name: IsEnableSubWindowMenu01
2481 * @tc.desc: test IsEnableSubWindowMenu
2482 * @tc.type: FUNC
2483 */
2484 HWTEST_F(SelectOverlayManagerTestNg, IsEnableSubWindowMenu01, TestSize.Level1)
2485 {
2486 Init();
2487 auto content = AceType::MakeRefPtr<SelectContentOverlayManager>(root_);
2488 ASSERT_NE(content, nullptr);
2489 SelectOverlayInfo info;
2490 info.enableHandleLevel = true;
2491 info.enableSubWindowMenu = true;
2492 TextMenuOptions textMenuOptions_;
2493 textMenuOptions_.showMode = TextMenuShowMode::PREFER_WINDOW;
2494 selectOverlayManager_->SetTextMenuOptions(textMenuOptions_);
2495 EXPECT_EQ(selectOverlayManager_->GetMenuShowMode(), TextMenuShowMode::PREFER_WINDOW);
2496 content->shareOverlayInfo_ = std::make_shared<SelectOverlayInfo>(info);
2497 EXPECT_EQ(content->IsEnableSubWindowMenu(), false);
2498 }
2499
2500 /**
2501 * @tc.name: IsEnableSubWindowMenu02
2502 * @tc.desc: test IsEnableSubWindowMenu
2503 * @tc.type: FUNC
2504 */
2505 HWTEST_F(SelectOverlayManagerTestNg, IsEnableSubWindowMenu02, TestSize.Level1)
2506 {
2507 Init();
2508 auto content = AceType::MakeRefPtr<SelectContentOverlayManager>(root_);
2509 ASSERT_NE(content, nullptr);
2510 SelectOverlayInfo info;
2511 info.enableHandleLevel = true;
2512 info.enableSubWindowMenu = true;
2513 EXPECT_EQ(selectOverlayManager_->GetMenuShowMode(), TextMenuShowMode::DEFAULT);
2514 content->shareOverlayInfo_ = std::make_shared<SelectOverlayInfo>(info);
2515 EXPECT_EQ(content->IsEnableSubWindowMenu(), false);
2516 }
2517
2518 /**
2519 * @tc.name: IsRightClickSubWindowMenu01
2520 * @tc.desc: test IsRightClickSubWindowMenu
2521 * @tc.type: FUNC
2522 */
2523 HWTEST_F(SelectOverlayManagerTestNg, IsRightClickSubWindowMenu01, TestSize.Level1)
2524 {
2525 /**
2526 * @tc.steps: step1. init SelectContentOverlayManager
2527 */
2528 Init();
2529 auto content = AceType::MakeRefPtr<SelectContentOverlayManager>(root_);
2530 ASSERT_NE(content, nullptr);
2531 SelectOverlayInfo info;
2532 info.enableHandleLevel = false;
2533 info.enableSubWindowMenu = true;
2534 info.isUsingMouse = IS_USING_MOUSE;
2535 info.isUseOverlayNG = true;
2536 TextMenuOptions textMenuOptions_;
2537 textMenuOptions_.showMode = TextMenuShowMode::PREFER_WINDOW;
2538 selectOverlayManager_->SetTextMenuOptions(textMenuOptions_);
2539 EXPECT_EQ(selectOverlayManager_->GetMenuShowMode(), TextMenuShowMode::PREFER_WINDOW);
2540 content->shareOverlayInfo_ = std::make_shared<SelectOverlayInfo>(info);
2541 ASSERT_NE(content->shareOverlayInfo_, nullptr);
2542
2543 auto wrapperNode_ = FrameNode::CreateFrameNode(V2::MENU_WRAPPER_ETS_TAG,
2544 ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<MenuWrapperPattern>(1));
2545 ASSERT_NE(wrapperNode_, nullptr);
2546 content->selectOverlayNode_ = wrapperNode_;
2547 auto selectoverlayNode = content->selectOverlayNode_.Upgrade();
2548 ASSERT_NE(selectoverlayNode, nullptr);
2549
2550 /**
2551 * @tc.steps: step2. Update menunode menuWrapperPattern
2552 */
2553 auto menuWrapperPattern = selectoverlayNode->GetPattern<MenuWrapperPattern>();
2554 ASSERT_NE(menuWrapperPattern, nullptr);
2555 menuWrapperPattern->SetIsSelectOverlaySubWindowWrapper(true);
2556 EXPECT_EQ(menuWrapperPattern->GetIsSelectOverlaySubWindowWrapper(), true);
2557 EXPECT_EQ(content->IsRightClickSubWindowMenu(), true);
2558 }
2559
2560 /**
2561 * @tc.name: IsRightClickSubWindowMenu02
2562 * @tc.desc: test IsRightClickSubWindowMenu
2563 * @tc.type: FUNC
2564 */
2565 HWTEST_F(SelectOverlayManagerTestNg, IsRightClickSubWindowMenu02, TestSize.Level1)
2566 {
2567 /**
2568 * @tc.steps: step1. CreateSelectOverlay
2569 */
2570 Init();
2571 auto content = AceType::MakeRefPtr<SelectContentOverlayManager>(root_);
2572 ASSERT_NE(content, nullptr);
2573 SelectOverlayInfo info;
2574 info.enableHandleLevel = false;
2575 info.enableSubWindowMenu = true;
2576 info.isUsingMouse = IS_USING_MOUSE;
2577 TextMenuOptions textMenuOptions_;
2578 textMenuOptions_.showMode = TextMenuShowMode::PREFER_WINDOW;
2579 selectOverlayManager_->SetTextMenuOptions(textMenuOptions_);
2580 EXPECT_EQ(selectOverlayManager_->GetMenuShowMode(), TextMenuShowMode::PREFER_WINDOW);
2581 bool animation = true;
2582 content->CreateSelectOverlay(info, animation);
2583 EXPECT_EQ(content->IsRightClickSubWindowMenu(), false);
2584 }
2585
2586 /**
2587 * @tc.name: IsSelectOverlaySubWindowMenu01
2588 * @tc.desc: test IsSelectOverlaySubWindowMenu
2589 * @tc.type: FUNC
2590 */
2591 HWTEST_F(SelectOverlayManagerTestNg, IsSelectOverlaySubWindowMenu01, TestSize.Level1)
2592 {
2593 /**
2594 * @tc.steps: step1. CreateSelectOverlay
2595 */
2596 Init();
2597 auto content = AceType::MakeRefPtr<SelectContentOverlayManager>(root_);
2598 ASSERT_NE(content, nullptr);
2599 SelectOverlayInfo info;
2600 info.enableHandleLevel = true;
2601 info.enableSubWindowMenu = true;
2602 info.isUseOverlayNG = true;
2603 TextMenuOptions textMenuOptions_;
2604 textMenuOptions_.showMode = TextMenuShowMode::PREFER_WINDOW;
2605 selectOverlayManager_->SetTextMenuOptions(textMenuOptions_);
2606 EXPECT_EQ(selectOverlayManager_->GetMenuShowMode(), TextMenuShowMode::PREFER_WINDOW);
2607 bool animation = true;
2608 content->CreateSelectOverlay(info, animation);
2609 EXPECT_NE(content->handleNode_.Upgrade(), nullptr);
2610 EXPECT_NE(content->menuNode_.Upgrade(), nullptr);
2611
2612 /**
2613 * @tc.steps: step2. Update menunode selectOverlayPattern
2614 */
2615 RefPtr<Pattern> pattern = content->GetMenuPattern();
2616 ASSERT_NE(pattern, nullptr);
2617 auto selectOverlayPattern = AceType::DynamicCast<SelectOverlayPattern>(pattern);
2618 ASSERT_NE(selectOverlayPattern, nullptr);
2619 selectOverlayPattern->SetIsMenuShowInSubWindow(true);
2620 EXPECT_EQ(selectOverlayPattern->GetIsMenuShowInSubWindow(), true);
2621 EXPECT_EQ(content->IsSelectOverlaySubWindowMenu(), true);
2622 }
2623
2624 /**
2625 * @tc.name: IsSelectOverlaySubWindowMenu02
2626 * @tc.desc: test IsSelectOverlaySubWindowMenu
2627 * @tc.type: FUNC
2628 */
2629 HWTEST_F(SelectOverlayManagerTestNg, IsSelectOverlaySubWindowMenu02, TestSize.Level1)
2630 {
2631 /**
2632 * @tc.steps: step1. CreateSelectOverlay
2633 */
2634 Init();
2635 auto content = AceType::MakeRefPtr<SelectContentOverlayManager>(root_);
2636 ASSERT_NE(content, nullptr);
2637 SelectOverlayInfo info;
2638 info.enableHandleLevel = true;
2639 info.enableSubWindowMenu = true;
2640 info.isUseOverlayNG = true;
2641 TextMenuOptions textMenuOptions_;
2642 textMenuOptions_.showMode = TextMenuShowMode::PREFER_WINDOW;
2643 selectOverlayManager_->SetTextMenuOptions(textMenuOptions_);
2644 EXPECT_EQ(selectOverlayManager_->GetMenuShowMode(), TextMenuShowMode::PREFER_WINDOW);
2645 bool animation = true;
2646 content->CreateSelectOverlay(info, animation);
2647 EXPECT_EQ(content->IsSelectOverlaySubWindowMenu(), false);
2648 }
2649
2650 /**
2651 * @tc.name: DisableMenu001
2652 * @tc.desc: test select_content_overlay_manager.cpp DisableMenu
2653 * @tc.type: FUNC
2654 */
2655 HWTEST_F(SelectOverlayManagerTestNg, DisableMenu001, TestSize.Level1)
2656 {
2657 /**
2658 * @tc.steps: step1. init SelectContentOverlayManager
2659 */
2660 Init();
2661 auto content = AceType::MakeRefPtr<SelectContentOverlayManager>(root_);
2662 ASSERT_NE(content, nullptr);
2663 SelectOverlayInfo selectInfo;
2664 selectInfo.enableHandleLevel = true;
2665 selectInfo.menuInfo.showCut = true;
2666 selectInfo.isUseOverlayNG = true;
2667
2668 /**
2669 * @tc.steps: step2. CreateSelectOverlayNode
2670 */
2671 content->shareOverlayInfo_ = std::make_shared<SelectOverlayInfo>(selectInfo);
2672 ASSERT_NE(content->shareOverlayInfo_, nullptr);
2673 auto frameNode = SelectOverlayNode::CreateSelectOverlayNode(content->shareOverlayInfo_);
2674 ASSERT_NE(frameNode, nullptr);
2675 content->menuNode_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
2676 ASSERT_NE(content->menuNode_.Upgrade(), nullptr);
2677
2678 /**
2679 * @tc.steps: step3. call DisableMenu
2680 */
2681 content->DisableMenu();
2682 auto selectOverlayPattern = frameNode->GetPattern<SelectOverlayPattern>();
2683 ASSERT_NE(selectOverlayPattern, nullptr);
2684 EXPECT_TRUE(selectOverlayPattern->info_->menuInfo.menuDisable);
2685 }
2686
2687 /**
2688 * @tc.name: EnableMenu001
2689 * @tc.desc: test select_content_overlay_manager.cpp EnableMenu
2690 * @tc.type: FUNC
2691 */
2692 HWTEST_F(SelectOverlayManagerTestNg, EnableMenu001, TestSize.Level1)
2693 {
2694 /**
2695 * @tc.steps: step1. init SelectContentOverlayManager
2696 */
2697 Init();
2698 auto content = AceType::MakeRefPtr<SelectContentOverlayManager>(root_);
2699 ASSERT_NE(content, nullptr);
2700 SelectOverlayInfo selectInfo;
2701 selectInfo.enableHandleLevel = true;
2702 selectInfo.menuInfo.showCut = true;
2703 selectInfo.isUseOverlayNG = true;
2704
2705 /**
2706 * @tc.steps: step2. CreateSelectOverlayNode
2707 */
2708 content->shareOverlayInfo_ = std::make_shared<SelectOverlayInfo>(selectInfo);
2709 ASSERT_NE(content->shareOverlayInfo_, nullptr);
2710 auto frameNode = SelectOverlayNode::CreateSelectOverlayNode(content->shareOverlayInfo_);
2711 ASSERT_NE(frameNode, nullptr);
2712 content->menuNode_ = AceType::WeakClaim(AceType::RawPtr(frameNode));
2713 ASSERT_NE(content->menuNode_.Upgrade(), nullptr);
2714
2715 /**
2716 * @tc.steps: step3. call EnableMenu
2717 */
2718 content->EnableMenu();
2719 auto selectOverlayPattern = frameNode->GetPattern<SelectOverlayPattern>();
2720 ASSERT_NE(selectOverlayPattern, nullptr);
2721 EXPECT_FALSE(selectOverlayPattern->info_->menuInfo.menuDisable);
2722 }
2723
2724 /**
2725 * @tc.name: HideHandle001
2726 * @tc.desc: test select_content_overlay_manager.cpp HideHandle
2727 * @tc.type: FUNC
2728 */
2729 HWTEST_F(SelectOverlayManagerTestNg, HideHandle001, TestSize.Level1)
2730 {
2731 Init();
2732 auto content = AceType::MakeRefPtr<SelectContentOverlayManager>(root_);
2733 auto holder = AceType::MakeRefPtr<MockSelectOverlayHolder>();
2734 content->SetHolder(holder);
2735 content->Show(false, 0);
2736 EXPECT_NE(content->handleNode_.Upgrade(), nullptr);
2737 EXPECT_NE(content->menuNode_.Upgrade(), nullptr);
2738 content->HideHandle();
2739 EXPECT_NE(content->handleNode_.Upgrade(), nullptr);
2740 }
2741 } // namespace OHOS::Ace::NG
2742