From 712ab779f6c19faa75f141450b3c3d451fb261fa Mon Sep 17 00:00:00 2001 From: wangweiyuan Date: Mon, 30 Jun 2025 19:16:31 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=AE=A1=E7=AE=97=E5=99=A8=E8=BE=93?= =?UTF-8?q?=E5=85=A5=E6=A1=86=E6=96=87=E6=9C=AC=E8=8F=9C=E5=8D=95=E5=B1=8F?= =?UTF-8?q?=E5=B9=95=E6=9C=97=E8=AF=BB=E8=BF=94=E5=9B=9Eowner=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangweiyuan --- .../select_content_overlay_manager.cpp | 7 +- .../select_overlay_manager_test_ng.cpp | 89 ++++++++++++++++++- 2 files changed, 88 insertions(+), 8 deletions(-) diff --git a/frameworks/core/components_ng/manager/select_content_overlay/select_content_overlay_manager.cpp b/frameworks/core/components_ng/manager/select_content_overlay/select_content_overlay_manager.cpp index e8623189d22..b7354d0f570 100644 --- a/frameworks/core/components_ng/manager/select_content_overlay/select_content_overlay_manager.cpp +++ b/frameworks/core/components_ng/manager/select_content_overlay/select_content_overlay_manager.cpp @@ -164,11 +164,6 @@ void SelectContentOverlayManager::NotifyAccessibilityOwner() context->AddAfterLayoutTask([weakNode = WeakClaim(RawPtr(owner)), weakManager = WeakClaim(this)]() { auto owner = weakNode.Upgrade(); CHECK_NULL_VOID(owner); - auto manager = weakManager.Upgrade(); - CHECK_NULL_VOID(manager); - if (!manager->IsMenuShow()) { - return; - } owner->OnAccessibilityEvent(AccessibilityEventType::REQUEST_FOCUS); }); } @@ -801,7 +796,7 @@ bool SelectContentOverlayManager::CloseInternal(int32_t id, bool animation, Clos auto menuNode = menuNode_.Upgrade(); auto handleNode = handleNode_.Upgrade(); auto owner = selectOverlayHolder_->GetOwner(); - if (owner) { + if (owner && IsMenuShow()) { auto ownerTag = owner->GetTag(); if (ownerTag != V2::RICH_EDITOR_ETS_TAG || (reason != CloseReason::CLOSE_REASON_SELECT_ALL && reason != CloseReason::CLOSE_REASON_BY_RECREATE)) { diff --git a/test/unittest/core/manager/select_overlay_manager_test_ng.cpp b/test/unittest/core/manager/select_overlay_manager_test_ng.cpp index 0135bbafeb0..36c411d75d5 100644 --- a/test/unittest/core/manager/select_overlay_manager_test_ng.cpp +++ b/test/unittest/core/manager/select_overlay_manager_test_ng.cpp @@ -1796,11 +1796,11 @@ HWTEST_F(SelectOverlayManagerTestNg, GetSelectOverlayRoot, TestSize.Level1) } /** - * @tc.name: CloseInternal + * @tc.name: CloseInternalTest001 * @tc.desc: test CloseInternal * @tc.type: FUNC */ -HWTEST_F(SelectOverlayManagerTestNg, CloseInternal, TestSize.Level1) +HWTEST_F(SelectOverlayManagerTestNg, CloseInternalTest001, TestSize.Level1) { /** * @tc.steps: step1. CloseInternal @@ -1815,6 +1815,91 @@ HWTEST_F(SelectOverlayManagerTestNg, CloseInternal, TestSize.Level1) EXPECT_EQ(content.selectionHoldId_, -1); } +/** + * @tc.name: CloseInternalTest002 + * @tc.desc: test CloseInternal + * @tc.type: FUNC + */ +HWTEST_F(SelectOverlayManagerTestNg, CloseInternalTest002, TestSize.Level1) +{ + /** + * @tc.steps: step1. CloseInternal + */ + Init(); + auto content = SelectContentOverlayManager(root_); + auto holder = AceType::MakeRefPtr(); + holder->SetOwner(root_); + content.SetHolder(holder); + SelectOverlayInfo selectInfo; + selectInfo.enableHandleLevel = true; + selectInfo.menuInfo.showCut = true; + content.shareOverlayInfo_ = std::make_shared(selectInfo); + ASSERT_NE(content.shareOverlayInfo_, nullptr); + auto frameNode = SelectOverlayNode::CreateSelectOverlayNode(content.shareOverlayInfo_); + ASSERT_NE(frameNode, nullptr); + content.menuNode_ = AceType::WeakClaim(AceType::RawPtr(frameNode)); + ASSERT_NE(content.menuNode_.Upgrade(), nullptr); + + /** + * @tc.steps: step2. mount menuNode to root node + */ + frameNode->SetParent(root_); + + /** + * @tc.steps: step3. call CloseInternal + */ + int32_t id = root_->GetId(); + bool animation = true; + CloseReason reason = CloseReason::CLOSE_REASON_NORMAL; + content.shareOverlayInfo_ = std::make_shared(); + content.shareOverlayInfo_->menuInfo.menuIsShow = true; + content.shareOverlayInfo_->enableHandleLevel = true; + bool result = content.CloseInternal(id, animation, reason); + EXPECT_TRUE(result); +} + +/** + * @tc.name: CloseInternalTest003 + * @tc.desc: test CloseInternal + * @tc.type: FUNC + */ +HWTEST_F(SelectOverlayManagerTestNg, CloseInternalTest003, TestSize.Level1) +{ + /** + * @tc.steps: step1. CloseInternal + */ + Init(); + auto content = SelectContentOverlayManager(root_); + auto holder = AceType::MakeRefPtr(); + content.SetHolder(holder); + SelectOverlayInfo selectInfo; + selectInfo.enableHandleLevel = true; + selectInfo.menuInfo.showCut = true; + content.shareOverlayInfo_ = std::make_shared(selectInfo); + ASSERT_NE(content.shareOverlayInfo_, nullptr); + auto frameNode = SelectOverlayNode::CreateSelectOverlayNode(content.shareOverlayInfo_); + ASSERT_NE(frameNode, nullptr); + content.menuNode_ = AceType::WeakClaim(AceType::RawPtr(frameNode)); + ASSERT_NE(content.menuNode_.Upgrade(), nullptr); + + /** + * @tc.steps: step2. mount menuNode to root node + */ + frameNode->SetParent(root_); + + /** + * @tc.steps: step3. call CloseInternal + */ + int32_t id = root_->GetId(); + bool animation = true; + CloseReason reason = CloseReason::CLOSE_REASON_NORMAL; + content.shareOverlayInfo_ = std::make_shared(); + content.shareOverlayInfo_->menuInfo.menuIsShow = true; + content.shareOverlayInfo_->enableHandleLevel = false; + bool result = content.CloseInternal(id, animation, reason); + EXPECT_TRUE(result); +} + /** * @tc.name: DestroySelectOverlayNode * @tc.desc: test DestroySelectOverlayNode -- Gitee