diff --git a/frameworks/core/components_ng/pattern/menu/menu_layout_algorithm.h b/frameworks/core/components_ng/pattern/menu/menu_layout_algorithm.h index 8e40a8c0eb8422e5cf12ae38d238677830221a80..d56f7f81313769b75d1f5699ba9521b2db18d7bc 100644 --- a/frameworks/core/components_ng/pattern/menu/menu_layout_algorithm.h +++ b/frameworks/core/components_ng/pattern/menu/menu_layout_algorithm.h @@ -372,7 +372,7 @@ private: using PlacementFunc = OffsetF (MenuLayoutAlgorithm::*)(const SizeF&, const OffsetF&, const OffsetF&); std::map placementFuncMap_; - + std::optional anchorPosition_; ACE_DISALLOW_COPY_AND_MOVE(MenuLayoutAlgorithm); diff --git a/frameworks/core/components_ng/pattern/navigation/navigation_group_node.cpp b/frameworks/core/components_ng/pattern/navigation/navigation_group_node.cpp index b2d353681e9e6107636f069aa43467f077be5011..f29b869a18d37eb3bd384a9af5ac4c076cb57e2c 100644 --- a/frameworks/core/components_ng/pattern/navigation/navigation_group_node.cpp +++ b/frameworks/core/components_ng/pattern/navigation/navigation_group_node.cpp @@ -29,8 +29,7 @@ #include "core/components_ng/pattern/navigation/navigation_declaration.h" #include "core/components_ng/pattern/navigation/navigation_pattern.h" #include "core/components_ng/pattern/navigation/navigation_title_util.h" -#include "core/components_ng/pattern/navigation/title_bar_pattern.h" -#include "core/components_ng/pattern/navigation/tool_bar_pattern.h" +#include "core/components_ng/pattern/navigation/navdestination_pattern_base.h" namespace OHOS::Ace::NG { namespace { @@ -378,17 +377,13 @@ void NavigationGroupNode::ToJsonValue(std::unique_ptr& json, const In std::string subtitle = NavigationTitleUtil::GetSubtitleString(titleBarNode); json->PutExtAttr("title", title.c_str(), filter); json->PutExtAttr("subtitle", subtitle.c_str(), filter); - auto titleBarPattern = titleBarNode->GetPattern(); - if (titleBarPattern) { - titleBarPattern->GetTitleBarOptions().ToJsonValue(json, filter); - } } - auto toolBarNode = AceType::DynamicCast(navBarOrHomeDestNode->GetToolBarNode()); - if (toolBarNode) { - auto toolBarPattern = toolBarNode->GetPattern(); - if (toolBarPattern) { - toolBarPattern->GetToolBarOptions().ToJsonValue(json, filter); - } + auto navBarPattern = navBarOrHomeDestNode->GetPattern(); + if (navBarPattern) { + auto menuOptionsJson = JsonUtil::Create(true); + auto moreButtonOptions = navBarPattern->GetMenuOptions(); + moreButtonOptions.ToJsonValue(menuOptionsJson, filter); + json->PutExtAttr("menuOptions", menuOptionsJson, filter); } json->PutExtAttr("menus", navBarOrHomeDestNode->GetBarItemsString(true).c_str(), filter); json->PutExtAttr("toolBar", navBarOrHomeDestNode->GetBarItemsString(false).c_str(), filter); diff --git a/frameworks/core/components_ng/pattern/navigation/navigation_options.h b/frameworks/core/components_ng/pattern/navigation/navigation_options.h index f483c7a050ed664827dd96094cceed447dba22a3..94079cc839cd49c136e162816280a66daf677d3e 100644 --- a/frameworks/core/components_ng/pattern/navigation/navigation_options.h +++ b/frameworks/core/components_ng/pattern/navigation/navigation_options.h @@ -195,8 +195,6 @@ struct NavigationToolbarOptions { } else { json->PutExtAttr("backgroundEffect", JsonUtil::Create(true), filter); } - // add moreButtonOptions - mbOptions.ToJsonValue(json, filter); } }; @@ -217,6 +215,11 @@ struct NavigationMenuOptions { { return !(*this == other); } + + void ToJsonValue(std::unique_ptr& json, const NG::InspectorFilter& filter) const + { + mbOptions.ToJsonValue(json, filter); + } }; } // namespace OHOS::Ace::NG diff --git a/frameworks/core/components_ng/pattern/navigation/title_bar_node.cpp b/frameworks/core/components_ng/pattern/navigation/title_bar_node.cpp index fa5c326d3231ed612aeef320cacae3b391d3586c..7d72f3b0ab8b1ab8a500af3a5d005cd09afdb3eb 100644 --- a/frameworks/core/components_ng/pattern/navigation/title_bar_node.cpp +++ b/frameworks/core/components_ng/pattern/navigation/title_bar_node.cpp @@ -92,4 +92,12 @@ void TitleBarNode::OnDetachFromMainTree(bool recursive, PipelineContext* context AppBarView::RemoveRectChangeListener(Claim(context), menuBarChangeListenerId_); } } + +void TitleBarNode::ToJsonValue(std::unique_ptr& json, const InspectorFilter& filter) const +{ + auto titleBarPattern = GetPattern(); + CHECK_NULL_VOID(titleBarPattern); + auto titleBarOptions = titleBarPattern->GetTitleBarOptions(); + titleBarOptions.ToJsonValue(json, filter); +} } // namespace OHOS::Ace::NG diff --git a/frameworks/core/components_ng/pattern/navigation/title_bar_node.h b/frameworks/core/components_ng/pattern/navigation/title_bar_node.h index 531178cd57312d157467fe122dcb884a814aff35..43f7ef0a8ed204a198b677784d4257afa681207a 100644 --- a/frameworks/core/components_ng/pattern/navigation/title_bar_node.h +++ b/frameworks/core/components_ng/pattern/navigation/title_bar_node.h @@ -118,6 +118,7 @@ public: { return needAvoidContainerModal_; } + void ToJsonValue(std::unique_ptr& json, const InspectorFilter& filter) const override; void OnAttachToMainTree(bool recursive) override; void OnDetachFromMainTree(bool recursive, PipelineContext* context) override; diff --git a/frameworks/core/components_ng/pattern/navigation/tool_bar_node.cpp b/frameworks/core/components_ng/pattern/navigation/tool_bar_node.cpp index 38ad024428e4e7c94cae93e9184e36547b361a12..95688f7557cf8c5287f50a34aaa299f9bd8a06fa 100644 --- a/frameworks/core/components_ng/pattern/navigation/tool_bar_node.cpp +++ b/frameworks/core/components_ng/pattern/navigation/tool_bar_node.cpp @@ -47,4 +47,16 @@ RefPtr NavToolbarNode::GetOrCreateToolbarNode( ElementRegister::GetInstance()->AddUINode(toolbarNode); return toolbarNode; } + +void NavToolbarNode::ToJsonValue(std::unique_ptr& json, const InspectorFilter& filter) const +{ + auto toolBarPattern = GetPattern(); + CHECK_NULL_VOID(toolBarPattern); + auto toolBarOptions = toolBarPattern->GetToolBarOptions(); + toolBarOptions.ToJsonValue(json, filter); + auto moreButtonOptions = toolBarPattern->GetToolbarMoreButtonOptions(); + auto mbOptionJson = JsonUtil::Create(true); + moreButtonOptions.ToJsonValue(mbOptionJson, filter); + json->PutExtAttr("moreButtonOptions", mbOptionJson, filter); +} } // namespace OHOS::Ace::NG diff --git a/frameworks/core/components_ng/pattern/navigation/tool_bar_node.h b/frameworks/core/components_ng/pattern/navigation/tool_bar_node.h index bb897bd5b09293dd24658174830082a257ed1bc7..041882a9f4162c51fd7087c8c9df3f6b705f5e5b 100644 --- a/frameworks/core/components_ng/pattern/navigation/tool_bar_node.h +++ b/frameworks/core/components_ng/pattern/navigation/tool_bar_node.h @@ -75,6 +75,7 @@ public: { return isHideItemText_; } + void ToJsonValue(std::unique_ptr& json, const InspectorFilter& filter) const override; private: RefPtr toolbarContainerNode_; diff --git a/frameworks/core/components_ng/pattern/navrouter/navdestination_group_node.cpp b/frameworks/core/components_ng/pattern/navrouter/navdestination_group_node.cpp index 4a49396027172114a06e9b94fb6695d0bccbfe29..e5da0d7fe5969fc8ca318d384ae30ab74ded6d21 100644 --- a/frameworks/core/components_ng/pattern/navrouter/navdestination_group_node.cpp +++ b/frameworks/core/components_ng/pattern/navrouter/navdestination_group_node.cpp @@ -22,8 +22,7 @@ #include "core/components_ng/pattern/navrouter/navdestination_pattern.h" #include "core/components_ng/pattern/text/text_pattern.h" #include "core/components_v2/inspector/inspector_constants.h" -#include "core/components_ng/pattern/navigation/title_bar_pattern.h" -#include "core/components_ng/pattern/navigation/tool_bar_pattern.h" +#include "core/components_ng/pattern/navigation/navdestination_pattern_base.h" namespace OHOS::Ace::NG { constexpr double HALF = 0.5; @@ -260,17 +259,13 @@ void NavDestinationGroupNode::ToJsonValue(std::unique_ptr& json, cons std::string subtitle = NavigationTitleUtil::GetSubtitleString(titleBarNode); json->PutExtAttr("title", title.c_str(), filter); json->PutExtAttr("subtitle", subtitle.c_str(), filter); - auto titleBarPattern = titleBarNode->GetPattern(); - if (titleBarPattern) { - titleBarPattern->GetTitleBarOptions().ToJsonValue(json, filter); - } } - auto toolBarNode = AceType::DynamicCast(toolBarNode_); - if (toolBarNode) { - auto toolBarPattern = toolBarNode->GetPattern(); - if (toolBarPattern) { - toolBarPattern->GetToolBarOptions().ToJsonValue(json, filter); - } + auto navBarPattern = GetPattern(); + if (navBarPattern) { + auto menuOptionsJson = JsonUtil::Create(true); + auto moreButtonOptions = navBarPattern->GetMenuOptions(); + moreButtonOptions.ToJsonValue(menuOptionsJson, filter); + json->PutExtAttr("menuOptions", menuOptionsJson, filter); } json->PutExtAttr("mode", mode_ == NavDestinationMode::DIALOG ? "NavDestinationMode::DIALOG" diff --git a/test/unittest/core/pattern/navigation/navigation_pattern_test_six_ng.cpp b/test/unittest/core/pattern/navigation/navigation_pattern_test_six_ng.cpp index 3ce49cb2bbcdd2aacd435fa7d4886c285a780e9c..a64d3b0e24283aadb0fdfe0b8abb0a28c74d1bc3 100644 --- a/test/unittest/core/pattern/navigation/navigation_pattern_test_six_ng.cpp +++ b/test/unittest/core/pattern/navigation/navigation_pattern_test_six_ng.cpp @@ -383,4 +383,65 @@ HWTEST_F(NavigationPatternTestSixNg, AdjustPrimaryAndPlaceHolderPosition002, Tes EXPECT_EQ(navigationPattern->primaryNodes_.size(), 0); NavigationPatternTestSixNg::TearDownTestSuite(); } + +/** + * @tc.name: NavToolbarNode_ToJsonValue_001 + * @tc.desc: Simple test for NavToolbarNode::ToJsonValue to guarantee coverage + * @tc.type: FUNC + */ +HWTEST_F(NavigationPatternTestSixNg, NavToolbarNode_ToJsonValue_001, TestSize.Level1) +{ + auto node = NavToolbarNode::GetOrCreateToolbarNode( + V2::TOOL_BAR_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), + []() { return AceType::MakeRefPtr(); }); + auto pattern = node->GetPattern(); + ASSERT_NE(pattern, nullptr); + NavigationToolbarOptions options; + BlurStyleOption blurOpt; + blurOpt.blurStyle = BlurStyle::THIN; + options.bgOptions.blurStyleOption = blurOpt; + EffectOption effectOpt; + effectOpt.adaptiveColor = AdaptiveColor::DEFAULT; + options.bgOptions.effectOption = effectOpt; + pattern->SetToolbarOptions(options); + MoreButtonOptions mbOpt; + BlurStyleOption mbBlurOpt; + mbBlurOpt.blurStyle = BlurStyle::REGULAR; + mbOpt.bgOptions.blurStyleOption = mbBlurOpt; + EffectOption mbEffectOpt; + mbEffectOpt.adaptiveColor = AdaptiveColor::DEFAULT; + mbOpt.bgOptions.effectOption = mbEffectOpt; + pattern->SetToolbarMoreButtonOptions(std::move(mbOpt)); + std::unique_ptr json = JsonUtil::Create(true); + InspectorFilter filter; + node->ToJsonValue(json, filter); + auto moreButtonJson = json->GetValue("moreButtonOptions"); + EXPECT_NE(moreButtonJson, nullptr); +} + +/** + * @tc.name: TitleBarNode_ToJsonValue_001 + * @tc.desc: Simple test for TitleBarNode::ToJsonValue to guarantee coverage + * @tc.type: FUNC + */ +HWTEST_F(NavigationPatternTestSixNg, TitleBarNode_ToJsonValue_001, TestSize.Level1) +{ + auto node = TitleBarNode::GetOrCreateTitleBarNode( + V2::TITLE_BAR_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), + []() { return AceType::MakeRefPtr(); }); + auto pattern = node->GetPattern(); + ASSERT_NE(pattern, nullptr); + NavigationTitlebarOptions options; + BlurStyleOption blurOpt; + blurOpt.blurStyle = BlurStyle::THIN; + options.bgOptions.blurStyleOption = blurOpt; + EffectOption effectOpt; + effectOpt.adaptiveColor = AdaptiveColor::DEFAULT; + options.bgOptions.effectOption = effectOpt; + pattern->SetTitlebarOptions(options); + std::unique_ptr json = JsonUtil::Create(true); + InspectorFilter filter; + node->ToJsonValue(json, filter); + EXPECT_TRUE(json->Contains("backgroundBlurStyle")); +} } // namespace OHOS::Ace::NG \ No newline at end of file