diff --git a/adapter/ohos/osal/navigation_route_ohos.cpp b/adapter/ohos/osal/navigation_route_ohos.cpp index 8ebcadbcc11aa54f10e737b0608ae588be0ea5ca..d3dc564fbf4398e4106abc138f885468235263a4 100644 --- a/adapter/ohos/osal/navigation_route_ohos.cpp +++ b/adapter/ohos/osal/navigation_route_ohos.cpp @@ -54,11 +54,6 @@ void NavigationRouteOhos::InitRouteMap() moduleInfos_ = bundleInfo.hapModuleInfos; } -void NavigationRouteOhos::OnPackageChange() -{ - InitRouteMap(); -} - bool NavigationRouteOhos::GetRouteItem(const std::string& name, NG::RouteItem& info) { AppExecFwk::RouterItem routeItem; diff --git a/adapter/ohos/osal/navigation_route_ohos.h b/adapter/ohos/osal/navigation_route_ohos.h index 40c5c12f575c3c7c41e8f093317874fcf04f4465..96c4cd70c9c6f24b42e5f2fd64a1fc45790c3b42 100644 --- a/adapter/ohos/osal/navigation_route_ohos.h +++ b/adapter/ohos/osal/navigation_route_ohos.h @@ -43,13 +43,12 @@ public: int32_t LoadPage(const std::string& name) override; bool IsNavigationItemExits(const std::string& name) override; - - void OnPackageChange() override; + + void InitRouteMap() override; private: bool GetRouteItemFromBundle(const std::string& name, AppExecFwk::RouterItem& routeItem); int32_t LoadPageFromHapModule(const std::string& name); - void InitRouteMap(); sptr GetBundleManager(); AppExecFwk::RouterItem GetRouteItem(const std::string name); std::vector allRouteItems_; diff --git a/advanced_ui_component/navpushpathhelper/include/hsp_silentinstall.h b/advanced_ui_component/navpushpathhelper/include/hsp_silentinstall.h index 6337fcf89e7a644264c2b1a4711e22852844dfbf..b52bd4ae84a6381ce61175a012bf847b87b9183f 100644 --- a/advanced_ui_component/navpushpathhelper/include/hsp_silentinstall.h +++ b/advanced_ui_component/navpushpathhelper/include/hsp_silentinstall.h @@ -28,6 +28,7 @@ public: static int32_t SilentInstall(const std::string& moduleName, const std::function& callback, const std::function& silentInstallErrorCallBack); static bool IsHspExist(const std::string& moduleName, const std::string& pathName); + static void InitRouteMap(); private: static OHOS::sptr GetBundleManager(); diff --git a/advanced_ui_component/navpushpathhelper/include/hsp_silentinstall_napi.h b/advanced_ui_component/navpushpathhelper/include/hsp_silentinstall_napi.h index 4ccee0910b991177a5398ab6d7289b2e7de397b6..1f1cd3416760d45b5fc9cd48a47d43c03f381f67 100644 --- a/advanced_ui_component/navpushpathhelper/include/hsp_silentinstall_napi.h +++ b/advanced_ui_component/navpushpathhelper/include/hsp_silentinstall_napi.h @@ -26,6 +26,7 @@ class HspSilentInstallNapi { public: static napi_value SilentInstall(napi_env env, napi_callback_info info); static napi_value IsHspExist(napi_env env, napi_callback_info info); + static napi_value InitRouteMap(napi_env env, napi_callback_info info); private: struct CallbackData { diff --git a/advanced_ui_component/navpushpathhelper/navpushpathhelper.js b/advanced_ui_component/navpushpathhelper/navpushpathhelper.js index 34baa4c0885c30680fc545f59edaa3689b253796..8d804a80d2a5bf25d61bf270bc7c9f5498f1dae2 100644 --- a/advanced_ui_component/navpushpathhelper/navpushpathhelper.js +++ b/advanced_ui_component/navpushpathhelper/navpushpathhelper.js @@ -34,6 +34,7 @@ export class NavPushPathHelper { } return new Promise((resolve, reject) => { navPushPathHelperApi.silentInstall(moduleName, () => { + navPushPathHelperApi.initRouteMap(); this.navPathStack_?.pushPath(info, optionParam); resolve(); }, @@ -53,6 +54,7 @@ export class NavPushPathHelper { } return new Promise((resolve, reject) => { navPushPathHelperApi.silentInstall(moduleName, () => { + navPushPathHelperApi.initRouteMap(); this.navPathStack_?.pushDestination(info, optionParam) .then(resolve).catch(reject); }, (error) => { @@ -71,6 +73,7 @@ export class NavPushPathHelper { } return new Promise((resolve, reject) => { navPushPathHelperApi.silentInstall(moduleName, () => { + navPushPathHelperApi.initRouteMap(); this.navPathStack_?.pushPathByName(name, param, onPop, optionParam); resolve(); }, (error) => { @@ -89,6 +92,7 @@ export class NavPushPathHelper { } return new Promise((resolve, reject) => { navPushPathHelperApi.silentInstall(moduleName, () => { + navPushPathHelperApi.initRouteMap(); this.navPathStack_?.pushDestinationByName(name, param, onPop, optionParam) .then(resolve).catch(reject); }, (error) => { @@ -107,6 +111,7 @@ export class NavPushPathHelper { } return new Promise((resolve, reject) => { navPushPathHelperApi.silentInstall(moduleName, () => { + navPushPathHelperApi.initRouteMap(); this.navPathStack_?.replacePath(info, optionParam); resolve(); }, (error) => { @@ -125,6 +130,8 @@ export class NavPushPathHelper { } return new Promise((resolve, reject) => { navPushPathHelperApi.silentInstall(moduleName, () => { + hilog.info(0x3900, tag, `silentInstall success`); + navPushPathHelperApi.initRouteMap(); this.navPathStack_?.replacePathByName(name, param, optionParam); resolve(); }, (error) => { diff --git a/advanced_ui_component/navpushpathhelper/src/hsp_silentinstall.cpp b/advanced_ui_component/navpushpathhelper/src/hsp_silentinstall.cpp index 907871b56d369d5c0d3c932b3041f46d1c8358b7..c7e82ba5657c4df608d24a453b3f58cb43be0873 100644 --- a/advanced_ui_component/navpushpathhelper/src/hsp_silentinstall.cpp +++ b/advanced_ui_component/navpushpathhelper/src/hsp_silentinstall.cpp @@ -105,4 +105,13 @@ bool HspSilentInstall::IsHspExist(const std::string &moduleName, const std::stri } return false; } + +void HspSilentInstall::InitRouteMap() +{ + auto container = OHOS::Ace::Container::CurrentSafely(); + CHECK_NULL_VOID(container); + auto navigationRoute = container->GetNavigationRoute(); + CHECK_NULL_VOID(navigationRoute); + navigationRoute->InitRouteMap(); +} } // namespace OHOS::NavPushPathHelper \ No newline at end of file diff --git a/advanced_ui_component/navpushpathhelper/src/hsp_silentinstall_napi.cpp b/advanced_ui_component/navpushpathhelper/src/hsp_silentinstall_napi.cpp index 18882737953b5125851dd3a08ba0e650fdd0f8b4..8370486d2353a217c8f1ad509aa5726365785c05 100644 --- a/advanced_ui_component/navpushpathhelper/src/hsp_silentinstall_napi.cpp +++ b/advanced_ui_component/navpushpathhelper/src/hsp_silentinstall_napi.cpp @@ -56,6 +56,12 @@ napi_value HspSilentInstallNapi::IsHspExist(napi_env env, napi_callback_info inf return jsResult; } +napi_value HspSilentInstallNapi::InitRouteMap(napi_env env, napi_callback_info info) +{ + HspSilentInstall::InitRouteMap(); + return nullptr; +} + napi_value HspSilentInstallNapi::SilentInstall(napi_env env, napi_callback_info info) { napi_value result = nullptr; diff --git a/advanced_ui_component/navpushpathhelper/src/navpushpathhelper.cpp b/advanced_ui_component/navpushpathhelper/src/navpushpathhelper.cpp index 95a8eefe29109dbe9aaa589c032e7715bd696aa7..bf54cc18dbebffec32adcf75b258390896e37e88 100644 --- a/advanced_ui_component/navpushpathhelper/src/navpushpathhelper.cpp +++ b/advanced_ui_component/navpushpathhelper/src/navpushpathhelper.cpp @@ -34,6 +34,7 @@ namespace OHOS::NavPushPathHelper { napi_property_descriptor desc[] = { DECLARE_NAPI_FUNCTION("silentInstall", HspSilentInstallNapi::SilentInstall), DECLARE_NAPI_FUNCTION("isHspExist", HspSilentInstallNapi::IsHspExist), + DECLARE_NAPI_FUNCTION("initRouteMap", HspSilentInstallNapi::InitRouteMap), }; NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc)); return exports; 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 71d1f872592549a150bb2ea2a00f5ecaefb6e9e8..ed4be731e66f04c09d47c8baf48aa32e2aa9a006 100644 --- a/frameworks/core/components_ng/pattern/navigation/navigation_group_node.cpp +++ b/frameworks/core/components_ng/pattern/navigation/navigation_group_node.cpp @@ -32,7 +32,6 @@ #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/event/package/package_event_proxy.h" namespace OHOS::Ace::NG { namespace { @@ -1046,14 +1045,6 @@ void NavigationGroupNode::OnAttachToMainTree(bool recursive) if (!findNavdestination) { pipelineContext->AddNavigationNode(pageId, WeakClaim(this)); } - auto* eventProxy = PackageEventProxy::GetInstance(); - if (eventProxy) { - auto container = OHOS::Ace::Container::CurrentSafely(); - CHECK_NULL_VOID(container); - auto navigationRoute = container->GetNavigationRoute(); - CHECK_NULL_VOID(navigationRoute); - eventProxy->Register(WeakClaim(AceType::RawPtr(navigationRoute))); - } } void NavigationGroupNode::FireHideNodeChange(NavDestinationLifecycle lifecycle) diff --git a/frameworks/core/components_ng/pattern/navigation/navigation_route.h b/frameworks/core/components_ng/pattern/navigation/navigation_route.h index 2e25e568f320df4f85f3af1872613ecd88a18199..a8454facf791c8fbb404a666da52e6e39b0d8384 100644 --- a/frameworks/core/components_ng/pattern/navigation/navigation_route.h +++ b/frameworks/core/components_ng/pattern/navigation/navigation_route.h @@ -19,7 +19,6 @@ #include #include "base/memory/ace_type.h" #include "base/memory/referenced.h" -#include "core/event/package/package_change_listener.h" namespace OHOS::Ace::NG { using NavigationLoadPageCallback = std::function data; }; -class ACE_EXPORT NavigationRoute : public PackageChangeListener { - DECLARE_ACE_TYPE(NavigationRoute, PackageChangeListener); +class ACE_EXPORT NavigationRoute : public AceType { + DECLARE_ACE_TYPE(NavigationRoute, AceType); public: NavigationRoute() = default; ~NavigationRoute() = default; @@ -65,7 +64,7 @@ public: return false; } - void OnPackageChange() override {} + virtual void InitRouteMap() {} protected: NavigationLoadPageCallback callback_;