From 2f2e04bdb55be47854e3f8b68115e2372d7b500c Mon Sep 17 00:00:00 2001 From: pensLong Date: Wed, 10 Sep 2025 16:05:17 +0800 Subject: [PATCH] fix: Modify the function position and variable names Signed-off-by: pensLong --- .../select_content_overlay_manager.cpp | 12 ++-- .../container_modal_pattern.cpp | 18 +++++ .../container_modal/container_modal_pattern.h | 2 +- .../pattern/overlay/overlay_manager.cpp | 15 ++-- .../pattern/text_drag/text_drag_pattern.cpp | 13 ++-- .../core/pipeline_ng/pipeline_context.cpp | 15 ---- .../core/pipeline_ng/pipeline_context.h | 1 - .../core/pipeline/mock_pipeline_context.cpp | 15 ---- .../container_modal_test_ng.cpp | 51 +++++++++++++ .../overlay/overlay_manager_test_ng.cpp | 72 +++++++++++++++---- .../core/pattern/text/text_testnine_ng.cpp | 21 ++++-- .../pattern/text_drag/text_drag_test_ng.cpp | 55 ++++++++++++-- .../pipeline/pipeline_context_test_ng.cpp | 45 ------------ 13 files changed, 217 insertions(+), 118 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 e0417802004..c159ea6c688 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 @@ -20,6 +20,7 @@ #include "base/utils/utils.h" #include "base/subwindow/subwindow_manager.h" #include "core/common/container.h" +#include "core/components_ng/pattern/container_modal/container_modal_pattern.h" #include "core/components_ng/pattern/select_content_overlay/select_content_overlay_pattern.h" #include "core/components_ng/pattern/select_overlay/select_overlay_node.h" #include "core/components_ng/pattern/select_overlay/select_overlay_property.h" @@ -1334,10 +1335,13 @@ RefPtr SelectContentOverlayManager::GetContainerModalRoot() CHECK_NULL_RETURN(context, nullptr); auto windowModal = context->GetWindowModal(); if (windowModal == WindowModal::CONTAINER_MODAL) { - auto isOnDecor = context->CheckNodeOnContainerModalTitle( - selectOverlayHolder_ ? selectOverlayHolder_->GetOwner() : nullptr); - if (isOnDecor) { - return context->GetContainerModalNode(); + auto containerModalNode = context->GetContainerModalNode(); + CHECK_NULL_RETURN(containerModalNode, nullptr); + auto containerModalPattern = containerModalNode->GetPattern(); + CHECK_NULL_RETURN(containerModalPattern, nullptr); + auto hostNode = selectOverlayHolder_ ? selectOverlayHolder_->GetOwner() : nullptr; + if (containerModalPattern->CheckNodeOnContainerModalTitle(hostNode)) { + return containerModalNode; } auto overlayManager = context->GetOverlayManager(); CHECK_NULL_RETURN(overlayManager, nullptr); diff --git a/frameworks/core/components_ng/pattern/container_modal/container_modal_pattern.cpp b/frameworks/core/components_ng/pattern/container_modal/container_modal_pattern.cpp index d970615a894..6a90857ad4d 100644 --- a/frameworks/core/components_ng/pattern/container_modal/container_modal_pattern.cpp +++ b/frameworks/core/components_ng/pattern/container_modal/container_modal_pattern.cpp @@ -1139,4 +1139,22 @@ RefPtr ContainerModalPattern::GetContextRefPtr() CHECK_NULL_RETURN(containerNode, nullptr); return containerNode->GetContextRefPtr(); } + +bool ContainerModalPattern::CheckNodeOnContainerModalTitle(const RefPtr& node) +{ + CHECK_NULL_RETURN(node, false); + auto containerNode = GetHost(); + CHECK_NULL_RETURN(containerNode, false); + auto parent = node->GetParent(); + while (parent) { + if (parent == containerNode) { + break; + } + if (parent->GetTag() == V2::TOOLBARITEM_ETS_TAG) { + return true; + } + parent = parent->GetParent(); + } + return false; +} } // namespace OHOS::Ace::NG \ No newline at end of file diff --git a/frameworks/core/components_ng/pattern/container_modal/container_modal_pattern.h b/frameworks/core/components_ng/pattern/container_modal/container_modal_pattern.h index fb7ca203c0a..14d5c869e7c 100644 --- a/frameworks/core/components_ng/pattern/container_modal/container_modal_pattern.h +++ b/frameworks/core/components_ng/pattern/container_modal/container_modal_pattern.h @@ -252,7 +252,7 @@ public: { return isTitleShow_ && customTitleSettedShow_ && IsContainerModalTransparent(); } - + bool CheckNodeOnContainerModalTitle(const RefPtr& node); protected: virtual RefPtr GetTitleItemByIndex(const RefPtr& controlButtonsNode, int32_t originIndex) { diff --git a/frameworks/core/components_ng/pattern/overlay/overlay_manager.cpp b/frameworks/core/components_ng/pattern/overlay/overlay_manager.cpp index 2eb39bc6bc5..b1274c0019b 100644 --- a/frameworks/core/components_ng/pattern/overlay/overlay_manager.cpp +++ b/frameworks/core/components_ng/pattern/overlay/overlay_manager.cpp @@ -59,6 +59,7 @@ #include "core/components_ng/manager/drag_drop/drag_drop_func_wrapper.h" #include "core/components_ng/manager/drag_drop/drag_drop_global_controller.h" #include "core/components_ng/manager/focus/focus_view.h" +#include "core/components_ng/pattern/container_modal/container_modal_pattern.h" #include "core/components_ng/pattern/bubble/bubble_event_hub.h" #include "core/components_ng/pattern/bubble/bubble_pattern.h" #include "core/components_ng/pattern/calendar_picker/calendar_dialog_view.h" @@ -6983,14 +6984,18 @@ void OverlayManager::MountEventToWindowScene(const RefPtr& columnNode * mouse, etc. * When isDragPixelMap is false, the pixelMap is saved by pixmapColumnNodeWeak_ used for lifting. */ -void OverlayManager::MountPixelMapToRootNode(const RefPtr& columnNode, bool isDragPixelMap, - const RefPtr& hostNode) +void OverlayManager::MountPixelMapToRootNode( + const RefPtr& columnNode, bool isDragPixelMap, const RefPtr& hostNode) { auto rootNode = rootNodeWeak_.Upgrade(); - auto pipeline = PipelineContext::GetCurrentContext(); + auto pipeline = GetPipelineContext(); CHECK_NULL_VOID(pipeline); - if (pipeline->CheckNodeOnContainerModalTitle(hostNode)) { - rootNode = pipeline->GetContainerModalNode(); + auto containerModalNode = pipeline->GetContainerModalNode(); + if (containerModalNode) { + auto containerModalPattern = containerModalNode->GetPattern(); + if (containerModalPattern && containerModalPattern->CheckNodeOnContainerModalTitle(hostNode)) { + rootNode = containerModalNode; + } } CHECK_NULL_VOID(rootNode); columnNode->MountToParent(rootNode); diff --git a/frameworks/core/components_ng/pattern/text_drag/text_drag_pattern.cpp b/frameworks/core/components_ng/pattern/text_drag/text_drag_pattern.cpp index 9f10060d7f6..22fc6d17af8 100644 --- a/frameworks/core/components_ng/pattern/text_drag/text_drag_pattern.cpp +++ b/frameworks/core/components_ng/pattern/text_drag/text_drag_pattern.cpp @@ -20,6 +20,7 @@ #include "base/utils/utils.h" #include "core/components/container_modal/container_modal_constants.h" #include "core/components/text/text_theme.h" +#include "core/components_ng/pattern/container_modal/container_modal_pattern.h" #include "core/components_ng/pattern/text/text_pattern.h" #include "core/components_ng/pattern/text_drag/text_drag_base.h" #include "core/components_ng/render/drawing.h" @@ -120,16 +121,20 @@ RefPtr TextDragPattern::CreateDragNode(const RefPtr& hostN return dragNode; } -void TextDragPattern::CalculateOverlayOffset(RefPtr& dragNode, OffsetF& offset, - const RefPtr& hostNode) +void TextDragPattern::CalculateOverlayOffset( + RefPtr& dragNode, OffsetF& offset, const RefPtr& hostNode) { auto pipeline = dragNode->GetContext(); CHECK_NULL_VOID(pipeline); auto overlayManager = pipeline->GetOverlayManager(); CHECK_NULL_VOID(overlayManager); auto rootNode = overlayManager->GetRootNode().Upgrade(); - if (pipeline->CheckNodeOnContainerModalTitle(hostNode)) { - rootNode = pipeline->GetContainerModalNode(); + auto containerModalNode = pipeline->GetContainerModalNode(); + if (containerModalNode) { + auto containerModalPattern = containerModalNode->GetPattern(); + if (containerModalPattern && containerModalPattern->CheckNodeOnContainerModalTitle(hostNode)) { + rootNode = containerModalNode; + } } CHECK_NULL_VOID(rootNode); auto rootGeometryNode = AceType::DynamicCast(rootNode)->GetGeometryNode(); diff --git a/frameworks/core/pipeline_ng/pipeline_context.cpp b/frameworks/core/pipeline_ng/pipeline_context.cpp index 8b1c1e679f3..737d633652d 100755 --- a/frameworks/core/pipeline_ng/pipeline_context.cpp +++ b/frameworks/core/pipeline_ng/pipeline_context.cpp @@ -5790,21 +5790,6 @@ RefPtr PipelineContext::GetContainerModalNode() return AceType::DynamicCast(rootNode_->GetFirstChild()); } -bool PipelineContext::CheckNodeOnContainerModalTitle(const RefPtr& node) -{ - CHECK_NULL_RETURN(node, false); - auto containerNode = GetContainerModalNode(); - CHECK_NULL_RETURN(containerNode, false); - auto parent = node->GetParent(); - while (parent) { - if (parent->GetTag() == V2::TOOLBARITEM_ETS_TAG) { - return true; - } - parent = parent->GetParent(); - } - return false; -} - void PipelineContext::DoKeyboardAvoidAnimate(const KeyboardAnimationConfig& keyboardAnimationConfig, float keyboardHeight, const std::function& func) { diff --git a/frameworks/core/pipeline_ng/pipeline_context.h b/frameworks/core/pipeline_ng/pipeline_context.h index 064381617d5..ae06b0e2ab1 100755 --- a/frameworks/core/pipeline_ng/pipeline_context.h +++ b/frameworks/core/pipeline_ng/pipeline_context.h @@ -914,7 +914,6 @@ public: const RefPtr& GetPostEventManager(); RefPtr GetContainerModalNode(); - bool CheckNodeOnContainerModalTitle(const RefPtr& node); void SetContainerModalTitleVisible(bool customTitleSettedShow, bool floatingTitleSettedShow); void SetContainerModalTitleHeight(int32_t height); int32_t GetContainerModalTitleHeight(); diff --git a/test/mock/core/pipeline/mock_pipeline_context.cpp b/test/mock/core/pipeline/mock_pipeline_context.cpp index cf52445ca5d..3bf33bc5547 100644 --- a/test/mock/core/pipeline/mock_pipeline_context.cpp +++ b/test/mock/core/pipeline/mock_pipeline_context.cpp @@ -1152,21 +1152,6 @@ RefPtr PipelineContext::GetContainerModalNode() CHECK_NULL_RETURN(rootNode_, nullptr); return AceType::DynamicCast(rootNode_->GetFirstChild()); } - -bool PipelineContext::CheckNodeOnContainerModalTitle(const RefPtr& node) -{ - CHECK_NULL_RETURN(node, false); - auto containerNode = GetContainerModalNode(); - CHECK_NULL_RETURN(containerNode, false); - auto parent = node->GetParent(); - while (parent) { - if (parent->GetTag() == V2::TOOLBARITEM_ETS_TAG) { - return true; - } - parent = parent->GetParent(); - } - return false; -} } // namespace OHOS::Ace::NG // pipeline_context ============================================================ diff --git a/test/unittest/core/pattern/container_modal/container_modal_test_ng.cpp b/test/unittest/core/pattern/container_modal/container_modal_test_ng.cpp index f64c511a266..a9d0586ad2b 100644 --- a/test/unittest/core/pattern/container_modal/container_modal_test_ng.cpp +++ b/test/unittest/core/pattern/container_modal/container_modal_test_ng.cpp @@ -1060,4 +1060,55 @@ HWTEST_F(ContainerModelTestNg, InitColumnTouchTestFunc3, TestSize.Level1) } } } + +/** + * @tc.name: CheckNodeOnContainerModalTitle + * @tc.desc: Test function CheckNodeOnContainerModalTitle + * @tc.type: FUNC + */ +HWTEST_F(ContainerModelTestNg, CheckNodeOnContainerModalTitle, TestSize.Level1) +{ + /** + * @tc.steps1: init ContainerModal. + */ + CreateContainerModal(); + ASSERT_NE(pattern_, nullptr); + + /** + * @tc.steps2: call CheckNodeOnContainerModalTitle when frameNode not has parent. + * @tc.expected: result is false. + */ + auto frameNode = + FrameNode::GetOrCreateFrameNode(V2::COLUMN_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), nullptr); + auto result = pattern_->CheckNodeOnContainerModalTitle(frameNode); + EXPECT_FALSE(result); + + /** + * @tc.steps3: call CheckNodeOnContainerModalTitle when frameNode parent is column. + * @tc.expected: result is false. + */ + auto column = + FrameNode::GetOrCreateFrameNode(V2::COLUMN_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), nullptr); + column->AddChild(frameNode); + result = pattern_->CheckNodeOnContainerModalTitle(frameNode); + EXPECT_FALSE(result); + + /** + * @tc.steps5: call CheckNodeOnContainerModalTitle when frameNode parent is toolbarItem. + * @tc.expected: result is true. + */ + auto toolbarItem = FrameNode::GetOrCreateFrameNode( + V2::TOOLBARITEM_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), nullptr); + toolbarItem->AddChild(column); + result = pattern_->CheckNodeOnContainerModalTitle(frameNode); + EXPECT_TRUE(result); + + /** + * @tc.steps4: call CheckNodeOnContainerModalTitle when frameNode parent is containerNode. + * @tc.expected: result is false. + */ + frameNode_->AddChild(toolbarItem); + result = pattern_->CheckNodeOnContainerModalTitle(toolbarItem); + EXPECT_FALSE(result); +} } // namespace OHOS::Ace::NG diff --git a/test/unittest/core/pattern/overlay/overlay_manager_test_ng.cpp b/test/unittest/core/pattern/overlay/overlay_manager_test_ng.cpp index e33d2c56212..9ac66611a5c 100644 --- a/test/unittest/core/pattern/overlay/overlay_manager_test_ng.cpp +++ b/test/unittest/core/pattern/overlay/overlay_manager_test_ng.cpp @@ -46,6 +46,7 @@ #include "core/components_ng/pattern/bubble/bubble_event_hub.h" #include "core/components_ng/pattern/bubble/bubble_pattern.h" #include "core/components_ng/pattern/button/button_pattern.h" +#include "core/components_ng/pattern/container_modal/container_modal_pattern.h" #include "core/components_ng/pattern/dialog/dialog_event_hub.h" #include "core/components_ng/pattern/dialog/dialog_pattern.h" #include "core/components_ng/pattern/linear_layout/linear_layout_pattern.h" @@ -5149,43 +5150,86 @@ HWTEST_F(OverlayManagerTestNg, GetPrepareDragFrameNodeBorderRadiusTest004, TestS } /** - * @tc.name: MountPixelMapToRootNode - * @tc.desc: Test MountPixelMapToRootNode. + * @tc.name: MountPixelMapToRootNode001 + * @tc.desc: Test MountPixelMapToRootNode when Pattern not is ContainerModalPattern. * @tc.type: FUNC */ -HWTEST_F(OverlayManagerTestNg, MountPixelMapToRootNode, TestSize.Level1) +HWTEST_F(OverlayManagerTestNg, MountPixelMapToRootNode001, TestSize.Level1) { /** - * @tc.steps: step1. create rootNode and overlay + * @tc.steps: step1. create ContainerModalNode and overlay */ auto pipeline = PipelineContext::GetCurrentContext(); ASSERT_NE(pipeline, nullptr); - pipeline->SetupRootElement(); - pipeline->windowModal_ = WindowModal::CONTAINER_MODAL; auto overlayManage = pipeline->overlayManager_; ASSERT_NE(overlayManage, nullptr); + auto rootNode = pipeline->rootNode_; + ASSERT_NE(rootNode, nullptr); + /** + * @tc.steps: step2. call MountPixelMapToRootNode when hostNode is nullptr, pipeline->windowModal_ is + * WindowModal::NORMAL. + * @tc.expected: column->GetParent() is rootNode + */ + pipeline->windowModal_ = WindowModal::NORMAL; + auto column = + FrameNode::GetOrCreateFrameNode(V2::COLUMN_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), nullptr); + overlayManage->MountPixelMapToRootNode(column, false, nullptr); + EXPECT_EQ(column->GetParent(), rootNode); + + /** + * @tc.steps: step3. call MountPixelMapToRootNode when hostNode is nullptr, pipeline->windowModal_ is + * WindowModal::CONTAINER_MODAL. + * @tc.expected: column->GetParent() is rootNode + */ + pipeline->windowModal_ = WindowModal::CONTAINER_MODAL; + overlayManage->MountPixelMapToRootNode(column, false, nullptr); + EXPECT_EQ(column->GetParent(), rootNode); + pipeline->windowModal_ = WindowModal::NORMAL; +} +/** + * @tc.name: MountPixelMapToRootNode002 + * @tc.desc: Test MountPixelMapToRootNode when Pattern is ContainerModalPattern. + * @tc.type: FUNC + */ +HWTEST_F(OverlayManagerTestNg, MountPixelMapToRootNode002, TestSize.Level1) +{ + /** + * @tc.steps: step1. create ContainerModalNode and overlay + */ + auto pipeline = PipelineContext::GetCurrentContext(); + ASSERT_NE(pipeline, nullptr); + auto overlayManage = pipeline->overlayManager_; + ASSERT_NE(overlayManage, nullptr); + auto containerModalNode = FrameNode::CreateFrameNode( + "ContainerModal", ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr()); + auto rootNode = pipeline->rootNode_; + ASSERT_NE(rootNode, nullptr); + rootNode->AddChild(containerModalNode, 0); /** - * @tc.steps: step2. call MountPixelMapToRootNode when hostNode is nullptr. - * @tc.expected: column->GetParent() is pipeline->rootNode_ + * @tc.steps: step2. call MountPixelMapToRootNode when hostNode is nullptr, pipeline->windowModal_ is + * WindowModal::CONTAINER_MODAL. + * @tc.expected: column->GetParent() is rootNode */ + pipeline->windowModal_ = WindowModal::CONTAINER_MODAL; auto column = FrameNode::GetOrCreateFrameNode(V2::COLUMN_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), nullptr); overlayManage->MountPixelMapToRootNode(column, false, nullptr); - EXPECT_EQ(column->GetParent(), pipeline->rootNode_); + EXPECT_EQ(column->GetParent(), rootNode); /** * @tc.steps: step3. call MountPixelMapToRootNode when hostNode is node and parent is toolbarItem. - * @tc.expected: column1->GetParent() is ContainerModalNode + * @tc.expected: column->GetParent() is ContainerModalNode */ - auto column1 = - FrameNode::GetOrCreateFrameNode(V2::COLUMN_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), nullptr); + rootNode->RemoveChild(column); auto hostNode = FrameNode::GetOrCreateFrameNode(V2::COLUMN_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), nullptr); auto toolbarItem = FrameNode::GetOrCreateFrameNode( V2::TOOLBARITEM_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), nullptr); toolbarItem->AddChild(hostNode); - overlayManage->MountPixelMapToRootNode(column1, false, hostNode); - EXPECT_EQ(column1->GetParent(), pipeline->GetContainerModalNode()); + overlayManage->MountPixelMapToRootNode(column, false, hostNode); + EXPECT_EQ(column->GetParent(), containerModalNode); + rootNode->RemoveChild(containerModalNode); + pipeline->windowModal_ = WindowModal::NORMAL; } } \ No newline at end of file diff --git a/test/unittest/core/pattern/text/text_testnine_ng.cpp b/test/unittest/core/pattern/text/text_testnine_ng.cpp index 6a8521b6f35..18302faddbd 100644 --- a/test/unittest/core/pattern/text/text_testnine_ng.cpp +++ b/test/unittest/core/pattern/text/text_testnine_ng.cpp @@ -19,6 +19,7 @@ #include "ui/base/geometry/dimension.h" #include "core/components/common/layout/constants.h" +#include "core/components_ng/pattern/container_modal/container_modal_pattern.h" #include "core/components_ng/pattern/list/list_pattern.h" #include "core/components_ng/pattern/stage/page_pattern.h" #include "core/components_ng/property/layout_constraint.h" @@ -1203,13 +1204,17 @@ HWTEST_F(TextTestNineNg, GetContainerModalRoot, TestSize.Level1) V2::TEXT_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr()); auto holder = AceType::MakeRefPtr(hostNode->GetPattern()); manager->selectOverlayHolder_ = holder; - + auto containerModalNode = FrameNode::CreateFrameNode( + "ContainerModal", ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr()); + auto rootNode = pipeline->rootNode_; + ASSERT_NE(rootNode, nullptr); + rootNode->AddChild(containerModalNode, 0); /** - * @tc.steps: step2: call GetContainerModalRoot when hostNode is nullptr - * @tc.expected: root is pipeline->rootNode_ + * @tc.steps: step2: call GetContainerModalRoot when hostNode parent not is toolbarItem + * @tc.expected: root is rootNode */ - auto root = manager->GetContainerModalRoot(); - EXPECT_EQ(root, pipeline->rootNode_); + auto retNode = manager->GetContainerModalRoot(); + EXPECT_EQ(retNode, rootNode); /** * @tc.steps: step3: call GetContainerModalRoot when hostNode parent is toolbarItem @@ -1218,7 +1223,9 @@ HWTEST_F(TextTestNineNg, GetContainerModalRoot, TestSize.Level1) auto toolbarItem = FrameNode::GetOrCreateFrameNode( V2::TOOLBARITEM_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), nullptr); toolbarItem->AddChild(hostNode); - root = manager->GetContainerModalRoot(); - EXPECT_EQ(root, pipeline->GetContainerModalNode()); + retNode = manager->GetContainerModalRoot(); + EXPECT_EQ(retNode, containerModalNode); + pipeline->windowModal_ = WindowModal::NORMAL; + rootNode->RemoveChild(containerModalNode); } } // namespace OHOS::Ace::NG \ No newline at end of file diff --git a/test/unittest/core/pattern/text_drag/text_drag_test_ng.cpp b/test/unittest/core/pattern/text_drag/text_drag_test_ng.cpp index 19a35f977ea..9245423400d 100644 --- a/test/unittest/core/pattern/text_drag/text_drag_test_ng.cpp +++ b/test/unittest/core/pattern/text_drag/text_drag_test_ng.cpp @@ -28,6 +28,7 @@ #include "base/memory/ace_type.h" #include "core/components/common/properties/color.h" +#include "core/components_ng/pattern/container_modal/container_modal_pattern.h" #include "core/components_ng/pattern/pattern.h" #include "core/components_ng/pattern/text_drag/text_drag_pattern.h" #include "core/components_ng/render/canvas_image.h" @@ -565,13 +566,51 @@ HWTEST_F(TextDragTestNg, TextDragPatternGenerateBackgroundPoints005, TestSize.Le EXPECT_EQ(points[2].y, 5); } +/** + * @tc.name: TextDragPatternCalculateOverlayOffset001 + * @tc.desc: test CalculateOverlayOffset pattern not is ContainerModalPattern + * @tc.type: FUNC + */ +HWTEST_F(TextDragTestNg, TextDragPatternCalculateOverlayOffset001, TestSize.Level1) +{ + /** + * @tc.steps: step1. create textDragPattern and rootNode, containerModalNode + */ + TextDragPattern textDragPattern; + auto dragNode = + FrameNode::GetOrCreateFrameNode(V2::TEXTDRAG_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), nullptr); + auto pipeline = PipelineContext::GetCurrentContext(); + ASSERT_NE(pipeline, nullptr); + auto rootNode = pipeline->rootNode_; + ASSERT_NE(rootNode, nullptr); + auto rootGeometryNode = rootNode->GetGeometryNode(); + ASSERT_NE(rootGeometryNode, nullptr); + rootGeometryNode->SetFrameOffset(OffsetF(10.f, 10.f)); + + /** + * @tc.steps2: call CalculateOverlayOffset when pipeline->windowModal_ = WindowModal::NORMAL. + * @tc.expected: offset is OffsetF(20.f, 20.f). + */ + OffsetF offset(30.f, 30.f); + textDragPattern.CalculateOverlayOffset(dragNode, offset, nullptr); + EXPECT_EQ(offset, OffsetF(20.f, 20.f)); + + /** + * @tc.steps3: call CalculateOverlayOffset when pipeline->windowModal_ = WindowModal::CONTAINER_MODAL. + * @tc.expected: containerModalPattern is nullptr, offset is OffsetF(10.f, 10.f). + */ + pipeline->windowModal_ = WindowModal::CONTAINER_MODAL; + textDragPattern.CalculateOverlayOffset(dragNode, offset, nullptr); + EXPECT_EQ(offset, OffsetF(10.f, 10.f)); + pipeline->windowModal_ = WindowModal::NORMAL; +} /** - * @tc.name: TextDragPatternCalculateOverlayOffset - * @tc.desc: test CalculateOverlayOffset + * @tc.name: TextDragPatternCalculateOverlayOffset002 + * @tc.desc: test CalculateOverlayOffset when pattern is ContainerModalPattern * @tc.type: FUNC */ -HWTEST_F(TextDragTestNg, TextDragPatternCalculateOverlayOffset, TestSize.Level1) +HWTEST_F(TextDragTestNg, TextDragPatternCalculateOverlayOffset002, TestSize.Level1) { /** * @tc.steps: step1. create textDragPattern and rootNode @@ -581,16 +620,16 @@ HWTEST_F(TextDragTestNg, TextDragPatternCalculateOverlayOffset, TestSize.Level1) FrameNode::GetOrCreateFrameNode(V2::TEXTDRAG_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), nullptr); auto pipeline = PipelineContext::GetCurrentContext(); ASSERT_NE(pipeline, nullptr); - pipeline->SetupRootElement(); pipeline->windowModal_ = WindowModal::CONTAINER_MODAL; auto rootNode = pipeline->rootNode_; ASSERT_NE(rootNode, nullptr); auto rootGeometryNode = rootNode->GetGeometryNode(); ASSERT_NE(rootGeometryNode, nullptr); rootGeometryNode->SetFrameOffset(OffsetF(10.f, 10.f)); - auto containerNode = pipeline->GetContainerModalNode(); - ASSERT_NE(containerNode, nullptr); - auto containerNodeGeometryNode = containerNode->GetGeometryNode(); + auto containerModalNode = FrameNode::CreateFrameNode( + "ContainerModal", ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr()); + rootNode->AddChild(containerModalNode, 0); + auto containerNodeGeometryNode = containerModalNode->GetGeometryNode(); ASSERT_NE(containerNodeGeometryNode, nullptr); containerNodeGeometryNode->SetFrameOffset(OffsetF(20.f, 20.f)); @@ -613,5 +652,7 @@ HWTEST_F(TextDragTestNg, TextDragPatternCalculateOverlayOffset, TestSize.Level1) toolbarItem->AddChild(hostNode); textDragPattern.CalculateOverlayOffset(dragNode, offset, hostNode); EXPECT_EQ(offset, OffsetF(0.f, 0.f)); + pipeline->windowModal_ = WindowModal::NORMAL; + rootNode->RemoveChild(containerModalNode); } } // namespace OHOS::Ace::NG diff --git a/test/unittest/core/pipeline/pipeline_context_test_ng.cpp b/test/unittest/core/pipeline/pipeline_context_test_ng.cpp index 60274f45f1e..342285d9ca5 100644 --- a/test/unittest/core/pipeline/pipeline_context_test_ng.cpp +++ b/test/unittest/core/pipeline/pipeline_context_test_ng.cpp @@ -2645,51 +2645,6 @@ HWTEST_F(PipelineContextTestNg, PipelineContextTestNg129, TestSize.Level1) EXPECT_EQ(context_->dvsyncTimeUpdate_, false); } -/** - * @tc.name: CheckNodeOnContainerModalTitle - * @tc.desc: Test function CheckNodeOnContainerModalTitle - * @tc.type: FUNC - */ -HWTEST_F(PipelineContextTestNg, CheckNodeOnContainerModalTitle, TestSize.Level1) -{ - /** - * @tc.steps1: initialize parameters. - * @tc.expected: All pointer is non-null. - */ - ASSERT_NE(context_, nullptr); - context_->SetupRootElement(); - context_->windowModal_ = WindowModal::CONTAINER_MODAL; - - /** - * @tc.steps2: call CheckNodeOnContainerModalTitle when frameNode not has parent. - * @tc.expected: result is false. - */ - auto frameNode = FrameNode::GetOrCreateFrameNode(V2::COLUMN_ETS_TAG, - ElementRegister::GetInstance()->MakeUniqueId(), nullptr); - auto result = context_->CheckNodeOnContainerModalTitle(frameNode); - EXPECT_FALSE(result); - - /** - * @tc.steps3: call CheckNodeOnContainerModalTitle when frameNode parent is column. - * @tc.expected: result is false. - */ - auto column = FrameNode::GetOrCreateFrameNode(V2::COLUMN_ETS_TAG, - ElementRegister::GetInstance()->MakeUniqueId(), nullptr); - column->AddChild(frameNode); - result = context_->CheckNodeOnContainerModalTitle(frameNode); - EXPECT_FALSE(result); - - /** - * @tc.steps4: call CheckNodeOnContainerModalTitle when frameNode parent is toolbarItem. - * @tc.expected: result is true. - */ - auto toolbarItem = FrameNode::GetOrCreateFrameNode(V2::TOOLBARITEM_ETS_TAG, - ElementRegister::GetInstance()->MakeUniqueId(), nullptr); - toolbarItem->AddChild(column); - result = context_->CheckNodeOnContainerModalTitle(frameNode); - EXPECT_TRUE(result); -} - /** * @tc.name: PipelineContextTestNg_OnTouchEvent_RVS_Test001 * @tc.desc: Test OnTouchEvent with RVS enabled and touch event processing -- Gitee