diff --git a/frameworks/core/components_ng/pattern/navigation/navigation_pattern.cpp b/frameworks/core/components_ng/pattern/navigation/navigation_pattern.cpp index 56b7cf9b91d12a8ae302b789b44b2eadc044b801..1306b7e669ae29e0e2154635806261ecd3bd087a 100644 --- a/frameworks/core/components_ng/pattern/navigation/navigation_pattern.cpp +++ b/frameworks/core/components_ng/pattern/navigation/navigation_pattern.cpp @@ -5633,8 +5633,8 @@ bool NavigationPattern::IsHomeDestinationVisible() return false; } if (navigationMode_ == NavigationMode::STACK) { - CHECK_NULL_RETURN(navigationStack_, false); - return navigationStack_->Empty(); + auto lastStandardIndex = host->GetLastStandardIndex(); + return lastStandardIndex < 0; } return navigationMode_ == NavigationMode::SPLIT; } diff --git a/test/unittest/core/pattern/navigation/navigation_pattern_test_five_ng.cpp b/test/unittest/core/pattern/navigation/navigation_pattern_test_five_ng.cpp index 198b412ccaabbdc1c53c8318dad22c4ca76ec1c9..e773d1b0ae4b3be7b624cf7804aaedf4e131d610 100644 --- a/test/unittest/core/pattern/navigation/navigation_pattern_test_five_ng.cpp +++ b/test/unittest/core/pattern/navigation/navigation_pattern_test_five_ng.cpp @@ -1893,4 +1893,32 @@ HWTEST_F(NavigationPatternTestFiveNg, NotifyNavDestinationSwitch002, TestSize.Le UIObserverHandler::GetInstance().navDestinationSwitchHandleFunc_ = backupFunc; } + +/** + * @tc.name: IsHomeDestinationVisible + * @tc.desc: Branch: if (navigationMode_ == NavigationMode::STACK) + * @tc.type: FUNC + */ +HWTEST_F(NavigationPatternTestFiveNg, IsHomeDestinationVisible, TestSize.Level1) +{ + NavigationPatternTestFiveNg::SetUpTestSuite(); + MockPipelineContextGetTheme(); + NavigationModelNG navigationModel; + navigationModel.Create(); + navigationModel.SetNavigationStack(); + navigationModel.SetUsrNavigationMode(NavigationMode::SPLIT); + auto navNode = AceType::DynamicCast(ViewStackProcessor::GetInstance()->GetMainFrameNode()); + ASSERT_NE(navNode, nullptr); + auto pattern = navNode->GetPattern(); + ASSERT_NE(pattern, nullptr); + + pattern->navigationMode_ = NavigationMode::STACK; + navNode->lastStandardIndex_ = 0; + bool ret = pattern->IsHomeDestinationVisible(); + EXPECT_FALSE(ret); + + navNode->lastStandardIndex_ = -1; + ret = pattern->IsHomeDestinationVisible(); + EXPECT_TRUE(ret); +} } // namespace OHOS::Ace::NG \ No newline at end of file