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 60211eee5f5..b868b2c3c2e 100644 --- a/frameworks/core/components_ng/pattern/navigation/navigation_group_node.cpp +++ b/frameworks/core/components_ng/pattern/navigation/navigation_group_node.cpp @@ -247,27 +247,6 @@ void NavigationGroupNode::AddBackButtonIconToNavDestination(const RefPtr } } -void NavigationGroupNode::SetBackButtonVisible(const RefPtr& navDestinationNode, bool isVisible) -{ - auto navDestination = AceType::DynamicCast(navDestinationNode); - CHECK_NULL_VOID(navDestination); - auto titleBarNode = AceType::DynamicCast(navDestination->GetTitleBarNode()); - CHECK_NULL_VOID(titleBarNode); - auto titleBarLayoutProperty = titleBarNode->GetLayoutProperty(); - CHECK_NULL_VOID(titleBarLayoutProperty); - auto backButtonNode = AceType::DynamicCast(titleBarNode->GetBackButton()); - CHECK_NULL_VOID(backButtonNode); - auto backButtonLayoutProperty = backButtonNode->GetLayoutProperty(); - CHECK_NULL_VOID(backButtonLayoutProperty); - if (isVisible) { - backButtonLayoutProperty->UpdateVisibility(VisibleType::VISIBLE); - } else { - backButtonLayoutProperty->UpdateVisibility(VisibleType::GONE); - } - backButtonNode->MarkModifyDone(); - navDestination->UpdateTitleFontSize(isVisible); -} - void NavigationGroupNode::SetBackButtonEvent( const RefPtr& navDestination, const RefPtr& navRouterPattern) { diff --git a/frameworks/core/components_ng/pattern/navigation/navigation_group_node.h b/frameworks/core/components_ng/pattern/navigation/navigation_group_node.h index 15a7bcd8adf..ed933537464 100644 --- a/frameworks/core/components_ng/pattern/navigation/navigation_group_node.h +++ b/frameworks/core/components_ng/pattern/navigation/navigation_group_node.h @@ -110,7 +110,6 @@ public: void SetBackButtonEvent(const RefPtr& navDestination, const RefPtr& navRouterPattern = nullptr); void AddBackButtonIconToNavDestination(const RefPtr& navDestinationNode); - void SetBackButtonVisible(const RefPtr& navDestinationNode, bool isVisible = true); void ExitTransitionWithPop(const RefPtr& node); void ExitTransitionWithPush(const RefPtr& node, bool isNavBar = false); diff --git a/frameworks/core/components_ng/pattern/navigation/navigation_pattern.cpp b/frameworks/core/components_ng/pattern/navigation/navigation_pattern.cpp index 485bcea8396..ff03f89a952 100644 --- a/frameworks/core/components_ng/pattern/navigation/navigation_pattern.cpp +++ b/frameworks/core/components_ng/pattern/navigation/navigation_pattern.cpp @@ -555,16 +555,6 @@ bool NavigationPattern::OnDirtyLayoutWrapperSwap(const RefPtr& di // considering backButton visibility auto curTopNavDestination = AceType::DynamicCast( NavigationGroupNode::GetNavDestinationNode(curTopNavPath->second)); - if (navigationStack->Size() == 1 && - (pattern->GetNavigationMode() == NavigationMode::SPLIT || - navigationLayoutProperty->GetHideNavBar().value_or(false))) { - // cases that backButton of navDestination is gone when there's only one child and - // 1. In SPLIT mode, it's the first level page - // 2. In STACK mode, the navBar is hidden - navigationGroupNode->SetBackButtonVisible(curTopNavDestination, false); - } else { - navigationGroupNode->SetBackButtonVisible(curTopNavDestination, true); - } pattern->UpdateContextRect(curTopNavDestination, navigationGroupNode); } // considering navBar visibility @@ -601,10 +591,6 @@ void NavigationPattern::UpdateContextRect( CHECK_NULL_VOID(navBarNode); auto navigationPattern = AceType::DynamicCast(hostNode->GetPattern()); CHECK_NULL_VOID(navigationPattern); - auto size = curDestination->GetGeometryNode()->GetFrameSize(); - curDestination->GetRenderContext()->ClipWithRRect( - RectF(0.0f, 0.0f, size.Width(), size.Height()), RadiusF(EdgeF(0.0f, 0.0f))); - curDestination->GetRenderContext()->UpdateTranslateInXY(OffsetF { 0.0f, 0.0f }); if (navigationPattern->GetNavigationMode() == NavigationMode::STACK) { curDestination->GetRenderContext()->SetActualForegroundColor(DEFAULT_MASK_COLOR); diff --git a/frameworks/core/components_ng/pattern/navigation/title_bar_layout_algorithm.cpp b/frameworks/core/components_ng/pattern/navigation/title_bar_layout_algorithm.cpp index 5f81e1e3d10..4b97940ec22 100644 --- a/frameworks/core/components_ng/pattern/navigation/title_bar_layout_algorithm.cpp +++ b/frameworks/core/components_ng/pattern/navigation/title_bar_layout_algorithm.cpp @@ -30,6 +30,7 @@ #include "core/components_ng/pattern/navigation/title_bar_node.h" #include "core/components_ng/pattern/navigation/title_bar_pattern.h" #include "core/components_ng/pattern/navrouter/navdestination_group_node.h" +#include "core/components_ng/pattern/navrouter/navdestination_pattern.h" #include "core/components_ng/pattern/navrouter/navdestination_layout_property.h" #include "core/components_ng/pattern/text/text_layout_property.h" #include "core/components_ng/property/layout_constraint.h" @@ -49,7 +50,7 @@ constexpr int32_t MENU_OFFSET_RATIO = 9; void TitleBarLayoutAlgorithm::MeasureBackButton(LayoutWrapper* layoutWrapper, const RefPtr& titleBarNode, const RefPtr& titleBarLayoutProperty) { - auto backButtonNode = titleBarNode->GetBackButton(); + auto backButtonNode = AceType::DynamicCast(titleBarNode->GetBackButton()); CHECK_NULL_VOID(backButtonNode); auto index = titleBarNode->GetChildIndexById(backButtonNode->GetId()); auto backButtonWrapper = layoutWrapper->GetOrCreateChildByIndex(index); @@ -58,6 +59,19 @@ void TitleBarLayoutAlgorithm::MeasureBackButton(LayoutWrapper* layoutWrapper, co // navDestination title bar if (titleBarLayoutProperty->GetTitleBarParentTypeValue(TitleBarParentType::NAVBAR) == TitleBarParentType::NAV_DESTINATION) { + if (!showBackButton_) { + constraint.selfIdealSize = OptionalSizeF(0.0f, 0.0f); + auto backButtonLayoutProperty = backButtonNode->GetLayoutProperty(); + PaddingProperty padding; + padding.SetEdges(CalcLength(Dimension(0.0f, DimensionUnit::VP))); + backButtonLayoutProperty->UpdatePadding(padding); + backButtonWrapper->Measure(constraint); + return; + } + auto buttonLayoutProperty = backButtonNode->GetLayoutProperty(); + PaddingProperty padding; + padding.SetEdges(CalcLength(BUTTON_PADDING)); + buttonLayoutProperty->UpdatePadding(padding); if (Container::LessThanAPIVersion(PlatformVersion::VERSION_TEN)) { constraint.selfIdealSize = OptionalSizeF(static_cast(BACK_BUTTON_ICON_SIZE.ConvertToPx()), static_cast(BACK_BUTTON_ICON_SIZE.ConvertToPx())); @@ -101,7 +115,7 @@ float TitleBarLayoutAlgorithm::GetTitleWidth(const RefPtr& titleBa auto isCustom = navDestination->GetPrevTitleIsCustomValue(false); float occupiedWidth = 0.0f; // left padding - if (GetNavigationBackButtonState(titleBarNode)) { + if (showBackButton_) { occupiedWidth += isCustom ? (maxPaddingStart_ + BACK_BUTTON_ICON_SIZE + BUTTON_PADDING).ConvertToPx() : (maxPaddingStart_ + BACK_BUTTON_ICON_SIZE + NAV_HORIZONTAL_MARGIN_L).ConvertToPx(); } else { @@ -311,7 +325,10 @@ void TitleBarLayoutAlgorithm::LayoutBackButton(LayoutWrapper* layoutWrapper, con // navDestination title bar if (titleBarLayoutProperty->GetTitleBarParentTypeValue(TitleBarParentType::NAVBAR) == TitleBarParentType::NAV_DESTINATION) { - if (!titleBarNode->GetBackButton()) { + if (!showBackButton_) { + SizeF size = SizeF(0.0f, 0.0f); + geometryNode->SetFrameSize(size); + backButtonWrapper->Layout(); return; } if (Container::LessThanAPIVersion(PlatformVersion::VERSION_TEN)) { @@ -377,7 +394,7 @@ void TitleBarLayoutAlgorithm::LayoutTitle(LayoutWrapper* layoutWrapper, const Re auto isCustom = navDestination->GetPrevTitleIsCustomValue(false); // add sdk 9 compatible if (Container::LessThanAPIVersion(PlatformVersion::VERSION_TEN)) { - if (GetNavigationBackButtonState(titleBarNode)) { + if (showBackButton_) { geometryNode->SetMarginFrameOffset(OffsetF { static_cast((maxPaddingStart_ + BACK_BUTTON_ICON_SIZE + NAV_HORIZONTAL_MARGIN_M).ConvertToPx()), offsetY }); @@ -388,7 +405,7 @@ void TitleBarLayoutAlgorithm::LayoutTitle(LayoutWrapper* layoutWrapper, const Re titleWrapper->Layout(); return; } - if (GetNavigationBackButtonState(titleBarNode)) { + if (showBackButton_) { auto offsetX = isCustom ? (maxPaddingStart_ + BACK_BUTTON_ICON_SIZE + BUTTON_PADDING).ConvertToPx() : (maxPaddingStart_ + BACK_BUTTON_ICON_SIZE + NAV_HORIZONTAL_MARGIN_L).ConvertToPx(); offsetY = isCustom ? 0.0f : offsetY; @@ -546,7 +563,7 @@ void TitleBarLayoutAlgorithm::LayoutSubtitle(LayoutWrapper* layoutWrapper, const if (titleBarLayoutProperty->GetTitleBarParentTypeValue(TitleBarParentType::NAVBAR) == TitleBarParentType::NAV_DESTINATION) { // subtitle doesn't support custom title - if (GetNavigationBackButtonState(titleBarNode)) { + if (showBackButton_) { if (Container::LessThanAPIVersion(PlatformVersion::VERSION_TEN)) { geometryNode->SetMarginFrameOffset(OffsetF { (maxPaddingStart_ + BACK_BUTTON_ICON_SIZE + NAV_HORIZONTAL_MARGIN_M).ConvertToPx(), offsetY }); @@ -694,7 +711,17 @@ void TitleBarLayoutAlgorithm::Measure(LayoutWrapper* layoutWrapper) const auto& padding = layoutWrapper->GetLayoutProperty()->CreatePaddingAndBorder(); MinusPaddingToSize(padding, size); InitializeTheme(); - + do { + if (layoutProperty->GetTitleBarParentTypeValue(TitleBarParentType::NAVBAR) != + TitleBarParentType::NAV_DESTINATION) { + break; + } + auto navDestinationNode = AceType::DynamicCast(titleBarNode->GetParent()); + CHECK_NULL_BREAK(navDestinationNode); + auto navDestinationPattern = AceType::DynamicCast(navDestinationNode->GetPattern()); + CHECK_NULL_BREAK(navDestinationPattern); + showBackButton_ = navDestinationPattern->GetBackButtonState(); + } while (0); MeasureBackButton(layoutWrapper, titleBarNode, layoutProperty); MeasureMenu(layoutWrapper, titleBarNode, layoutProperty); auto titleMaxWidth = GetTitleWidth(titleBarNode, layoutProperty, size); @@ -736,12 +763,4 @@ void TitleBarLayoutAlgorithm::Layout(LayoutWrapper* layoutWrapper) LayoutMenu(layoutWrapper, titleBarNode, layoutProperty, subtitleHeight); } -bool TitleBarLayoutAlgorithm::GetNavigationBackButtonState(const RefPtr& titleBarNode) -{ - auto backButton = AceType::DynamicCast(titleBarNode->GetBackButton()); - CHECK_NULL_RETURN(backButton, false); - auto layoutProperty = backButton->GetLayoutProperty(); - CHECK_NULL_RETURN(layoutProperty, false); - return layoutProperty->GetVisibilityValue(VisibleType::VISIBLE) == VisibleType::VISIBLE; -} } // namespace OHOS::Ace::NG diff --git a/frameworks/core/components_ng/pattern/navigation/title_bar_layout_algorithm.h b/frameworks/core/components_ng/pattern/navigation/title_bar_layout_algorithm.h index 352932d800b..bae2c3b5621 100644 --- a/frameworks/core/components_ng/pattern/navigation/title_bar_layout_algorithm.h +++ b/frameworks/core/components_ng/pattern/navigation/title_bar_layout_algorithm.h @@ -110,8 +110,6 @@ private: void LayoutMenu(LayoutWrapper* layoutWrapper, const RefPtr& titleBarNode, const RefPtr& titleBarLayoutProperty, float subtitleHeight); - bool GetNavigationBackButtonState(const RefPtr& titleBarNode); - // set variables from theme void InitializeTheme(); @@ -128,6 +126,7 @@ private: bool isInitialSubtitle_ = true; float minTitleHeight_ = 0.0f; float menuWidth_ = 0.0f; + bool showBackButton_ = false; ACE_DISALLOW_COPY_AND_MOVE(TitleBarLayoutAlgorithm); }; diff --git a/frameworks/core/components_ng/pattern/navrouter/navdestination_layout_algorithm.cpp b/frameworks/core/components_ng/pattern/navrouter/navdestination_layout_algorithm.cpp index 33c88ae2a18..944462af4a3 100644 --- a/frameworks/core/components_ng/pattern/navrouter/navdestination_layout_algorithm.cpp +++ b/frameworks/core/components_ng/pattern/navrouter/navdestination_layout_algorithm.cpp @@ -22,9 +22,9 @@ #include "base/utils/utils.h" #include "core/components_ng/base/frame_node.h" #include "core/components_ng/pattern/linear_layout/linear_layout_property.h" +#include "core/components_ng/pattern/navigation/navigation_layout_algorithm.h" #include "core/components_ng/pattern/navigation/title_bar_layout_property.h" #include "core/components_ng/pattern/navigation/title_bar_node.h" -#include "core/components_ng/pattern/navigation/navigation_layout_algorithm.h" #include "core/components_ng/pattern/navrouter/navdestination_group_node.h" #include "core/components_ng/pattern/navrouter/navdestination_layout_property.h" #include "core/components_ng/property/layout_constraint.h" @@ -52,24 +52,24 @@ float MeasureTitleBar(LayoutWrapper* layoutWrapper, const RefPtrHasTitleBarHeight()) { - auto titleHeight = static_cast(navDestinationLayoutProperty->GetTitleBarHeightValue(). - ConvertToPxWithSize(constraint.percentReference.Height())); + auto titleHeight = + static_cast(navDestinationLayoutProperty->GetTitleBarHeightValue().ConvertToPxWithSize( + constraint.percentReference.Height())); constraint.selfIdealSize.SetHeight((titleHeight)); titleBarWrapper->Measure(constraint); return titleHeight; } - auto titleHeight = navDestinationLayoutProperty->GetTitleBarHeightValue(hostNode->GetSubtitle() ? - DOUBLE_LINE_TITLEBAR_HEIGHT : SINGLE_LINE_TITLEBAR_HEIGHT); - constraint.selfIdealSize = OptionalSizeF(size.Width(), - static_cast(titleHeight.ConvertToPxWithSize(constraint.percentReference.Height()))); + auto titleHeight = navDestinationLayoutProperty->GetTitleBarHeightValue( + hostNode->GetSubtitle() ? DOUBLE_LINE_TITLEBAR_HEIGHT : SINGLE_LINE_TITLEBAR_HEIGHT); + constraint.selfIdealSize = OptionalSizeF( + size.Width(), static_cast(titleHeight.ConvertToPxWithSize(constraint.percentReference.Height()))); titleBarWrapper->Measure(constraint); return static_cast(titleHeight.ConvertToPxWithSize(constraint.percentReference.Height())); } float MeasureContentChild(LayoutWrapper* layoutWrapper, const RefPtr& hostNode, - const RefPtr& navDestinationLayoutProperty, const SizeF& size, - float titleBarHeight) + const RefPtr& navDestinationLayoutProperty, const SizeF& size, float titleBarHeight) { auto contentNode = hostNode->GetContentNode(); CHECK_NULL_RETURN(contentNode, 0.0f); @@ -143,10 +143,18 @@ void NavDestinationLayoutAlgorithm::Measure(LayoutWrapper* layoutWrapper) MinusPaddingToSize(padding, size); float titleBarHeight = MeasureTitleBar(layoutWrapper, hostNode, navDestinationLayoutProperty, size); - float contentChildHeight = MeasureContentChild(layoutWrapper, hostNode, - navDestinationLayoutProperty, size, titleBarHeight); + float contentChildHeight = + MeasureContentChild(layoutWrapper, hostNode, navDestinationLayoutProperty, size, titleBarHeight); size.SetHeight(titleBarHeight + contentChildHeight); layoutWrapper->GetGeometryNode()->SetFrameSize(size); + auto parent = hostNode->GetParent(); + if (hostNode->IsOnAnimation()) { + return; + } + hostNode->GetRenderContext()->ClipWithRRect( + RectF(0.0f, 0.0f, size.Width(), size.Height()), RadiusF(EdgeF(0.0f, 0.0f))); + OffsetF offset = OffsetF(0.0f, 0.0f); + hostNode->GetRenderContext()->UpdateTranslateInXY(offset); } void NavDestinationLayoutAlgorithm::Layout(LayoutWrapper* layoutWrapper) diff --git a/frameworks/core/components_ng/pattern/navrouter/navdestination_model_ng.cpp b/frameworks/core/components_ng/pattern/navrouter/navdestination_model_ng.cpp index 7f02482fb3e..c1fb02fc647 100644 --- a/frameworks/core/components_ng/pattern/navrouter/navdestination_model_ng.cpp +++ b/frameworks/core/components_ng/pattern/navrouter/navdestination_model_ng.cpp @@ -88,7 +88,6 @@ void NavDestinationModelNG::CreateImageButton(const RefPtrGetLayoutProperty(); CHECK_NULL_VOID(backButtonLayoutProperty); backButtonLayoutProperty->UpdateImageSourceInfo(imageSourceInfo); - backButtonLayoutProperty->UpdateVisibility(VisibleType::GONE); backButtonNode->MarkModifyDone(); auto titleBarLayoutProperty = titleBarNode->GetLayoutProperty(); @@ -112,7 +111,6 @@ void NavDestinationModelNG::CreateBackButton(const RefPtrSetBackButton(backButtonNode); auto backButtonLayoutProperty = backButtonNode->GetLayoutProperty(); CHECK_NULL_VOID(backButtonLayoutProperty); - backButtonLayoutProperty->UpdateVisibility(VisibleType::GONE); backButtonLayoutProperty->UpdateUserDefinedIdealSize( CalcSize(CalcLength(BACK_BUTTON_SIZE), CalcLength(BACK_BUTTON_SIZE))); backButtonLayoutProperty->UpdateType(ButtonType::NORMAL); diff --git a/frameworks/core/components_ng/pattern/navrouter/navdestination_pattern.cpp b/frameworks/core/components_ng/pattern/navrouter/navdestination_pattern.cpp index f0bf8d9f716..9bffdbb35f1 100644 --- a/frameworks/core/components_ng/pattern/navrouter/navdestination_pattern.cpp +++ b/frameworks/core/components_ng/pattern/navrouter/navdestination_pattern.cpp @@ -30,6 +30,8 @@ #include "core/components_ng/pattern/navigation/title_bar_layout_property.h" #include "core/components_ng/pattern/navigation/title_bar_node.h" #include "core/components_ng/pattern/navigation/title_bar_pattern.h" +#include "core/components_ng/pattern/navigation/navigation_pattern.h" +#include "core/components_ng/pattern/navigation/navigation_group_node.h" #include "core/components_ng/pattern/navrouter/navdestination_group_node.h" #include "core/components_ng/pattern/navrouter/navdestination_layout_algorithm.h" #include "core/components_ng/pattern/navrouter/navdestination_layout_property.h" @@ -154,4 +156,61 @@ void NavDestinationPattern::OnModifyDone() } MountTitleBar(hostNode); } + +bool NavDestinationPattern::GetBackButtonState() +{ + auto hostNode = AceType::DynamicCast(GetHost()); + CHECK_NULL_RETURN(hostNode, false); + auto navDestinationLayoutProperty = hostNode->GetLayoutProperty(); + CHECK_NULL_RETURN(navDestinationLayoutProperty, false); + if (navDestinationLayoutProperty->GetHideTitleBarValue(false)) { + return false; + } + // get navigation node + auto parent = AceType::DynamicCast(hostNode->GetParent()); + RefPtr navigationNode; + while (parent && !parent->IsRootNode()) { + navigationNode = AceType::DynamicCast(parent); + if (navigationNode) { + break; + } + parent = AceType::DynamicCast(parent->GetParent()); + } + if (!navigationNode) { + TAG_LOGW(AceLogTag::ACE_NAVIGATION, "can't find navigation node"); + return false; + } + auto navigationLayoutProperty = navigationNode->GetLayoutProperty(); + CHECK_NULL_RETURN(navigationLayoutProperty, false); + auto pattern = navigationNode->GetPattern(); + auto stack = pattern->GetNavigationStack(); + auto index = stack->FindIndex(name_, navDestinationNode_.Upgrade(), true); + bool showBackButton = true; + auto titleBarNode = AceType::DynamicCast(hostNode->GetTitleBarNode()); + auto layoutWrapper = AceType::DynamicCast(navigationNode->GetLayoutAlgorithm()); + CHECK_NULL_RETURN(layoutWrapper, showBackButton); + auto layout = AceType::DynamicCast(layoutWrapper->GetLayoutAlgorithm()); + CHECK_NULL_RETURN(layout, false); + if (index == 0 && (layout->GetNavigationMode() == NavigationMode::SPLIT || + navigationLayoutProperty->GetHideNavBarValue(false))) { + showBackButton = false; + } + auto isCustomTitle = hostNode->GetPrevTitleIsCustomValue(false); + if (isCustomTitle) { + return showBackButton; + } + auto titleNode = AceType::DynamicCast(titleBarNode->GetTitle()); + CHECK_NULL_RETURN(titleNode, showBackButton); + auto theme = NavigationGetTheme(); + CHECK_NULL_RETURN(theme, showBackButton); + auto textLayoutProperty = titleNode->GetLayoutProperty(); + auto currentFontSize = textLayoutProperty->GetAdaptMaxFontSizeValue(Dimension(0.0, DimensionUnit::FP)); + auto targetFontSize = showBackButton ? theme->GetTitleFontSizeMin() : theme->GetTitleFontSize(); + if (targetFontSize == currentFontSize) { + return showBackButton; + } + textLayoutProperty->UpdateFontSize(targetFontSize); + textLayoutProperty->UpdatePropertyChangeFlag(PROPERTY_UPDATE_MEASURE); + return showBackButton; +} } // namespace OHOS::Ace::NG diff --git a/frameworks/core/components_ng/pattern/navrouter/navdestination_pattern.h b/frameworks/core/components_ng/pattern/navrouter/navdestination_pattern.h index b50df4ab72a..3f3d09dd2f5 100644 --- a/frameworks/core/components_ng/pattern/navrouter/navdestination_pattern.h +++ b/frameworks/core/components_ng/pattern/navrouter/navdestination_pattern.h @@ -103,6 +103,8 @@ public: return isOnShow_; } + bool GetBackButtonState(); + private: RefPtr shallowBuilder_; std::string name_; diff --git a/test/unittest/core/pattern/navigation/navigation_test_ng.cpp b/test/unittest/core/pattern/navigation/navigation_test_ng.cpp index 9349e34c5ca..45df1da2909 100755 --- a/test/unittest/core/pattern/navigation/navigation_test_ng.cpp +++ b/test/unittest/core/pattern/navigation/navigation_test_ng.cpp @@ -2444,20 +2444,6 @@ HWTEST_F(NavigationTestNg, NavigationModelNG0014, TestSize.Level1) ASSERT_NE(backButtonNode2->renderContext_, nullptr); navigation->BackButtonAnimation(backButtonNode2, false); navigation->BackButtonAnimation(backButtonNode2, true); - - auto titleBarNode = TitleBarNode::GetOrCreateTitleBarNode( - "titleBarNode", 124, []() { return AceType::MakeRefPtr(); }); - navDestination->titleBarNode_ = titleBarNode; - auto titleBarLayoutProperty = titleBarNode->GetLayoutProperty(); - - auto backButtonNode = FrameNode::CreateFrameNode("backButtonNode22", 125, AceType::MakeRefPtr()); - titleBarNode->backButton_ = backButtonNode; - auto backButtonLayoutProperty = backButtonNode->GetLayoutProperty(); - navigation->SetBackButtonVisible(navDestination); - ASSERT_EQ(backButtonLayoutProperty->propVisibility_.value(), VisibleType::VISIBLE); - - navigation->SetBackButtonVisible(navDestination, false); - ASSERT_EQ(backButtonLayoutProperty->propVisibility_.value(), VisibleType::GONE); } /**