diff --git a/adapter/ohos/osal/event_report.cpp b/adapter/ohos/osal/event_report.cpp index e53873a9afef2a7b6576bd949c937961e1baa3f0..6772a43b4d44c0f77e9a8b393be044cd94557c5c 100644 --- a/adapter/ohos/osal/event_report.cpp +++ b/adapter/ohos/osal/event_report.cpp @@ -133,6 +133,10 @@ constexpr char EVENT_KEY_ERROR_CODE[] = "ERROR_CODE"; constexpr char FORM_NODE_ERROR[] = "FORM_NODE_ERROR"; constexpr int32_t WAIT_MODIFY_TIMEOUT = 10; constexpr int32_t WAIT_MODIFY_FAILED = 1; +constexpr char EVENT_KEY_PAGE_TRANSITION_ERROR[] = "PAGE_TRANSITION_ERROR"; +constexpr char EVENT_KEY_PAGE_TRANSITION_ERROR_TYPE[] = "PAGE_TRANSITION_ERROR_TYPE"; +constexpr char EVENT_KEY_PAGE_TRANSITION_ERROR_MESSAGE[] = "PAGE_TRANSITION_ERROR_MESSAGE"; + void StrTrim(std::string& str) { @@ -653,6 +657,14 @@ void EventReport::ReportReusedNodeSkipMeasureApp() OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC, EVENT_KEY_PACKAGE_NAME, progressName); } +void EventReport::ReportPageTransitionError(const std::string& errorType, const std::string& errorMsg) +{ + auto progressName = AceApplicationInfo::GetInstance().GetProcessName(); + HISysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, EVENT_KEY_PAGE_TRANSITION_ERROR, + OHOS::HiviewDFX::HiSysEvent::EventType::FAULT, EVENT_KEY_PAGE_TRANSITION_ERROR_TYPE, errorType, + EVENT_KEY_PAGE_TRANSITION_ERROR_MESSAGE, errorMsg); +} + void EventReport::ReportPageSlidInfo(NG::SlidInfo &slidInfo) { HiSysEventWrite(OHOS::HiviewDFX::HiSysEvent::Domain::ACE, EVENT_KEY_PAGE_SLID_INFO, diff --git a/adapter/preview/osal/event_report.cpp b/adapter/preview/osal/event_report.cpp index 49f1358a2d500948c35e75a10394a3a63424f9c3..23f5248870972f160e962de428887b8dc06f5cab 100644 --- a/adapter/preview/osal/event_report.cpp +++ b/adapter/preview/osal/event_report.cpp @@ -97,6 +97,9 @@ void EventReport::ReportTextFieldErrorEvent(int32_t frameNodeId, int32_t depth, void EventReport::ReportClipboardFailEvent(const std::string& errorType) {} +void void ReportPageTransitionError(const std::string& errorType, const std::string& errorMsg) +{} + void EventReport::ReportPageSlidInfo(NG::SlidInfo &slidInfo) {} diff --git a/frameworks/base/log/event_report.h b/frameworks/base/log/event_report.h index 828fc6ab74766e42f7c0667b8e35bf332205e38a..3ffd79c46ceba0e5670d99cf95105c76c0f4a46c 100644 --- a/frameworks/base/log/event_report.h +++ b/frameworks/base/log/event_report.h @@ -246,6 +246,7 @@ public: static void ReportTextFieldErrorEvent(int32_t frameNodeId, int32_t depth, const std::string& errorType); static void ReportClipboardFailEvent(const std::string& errorType); static void ReportReusedNodeSkipMeasureApp(); + static void ReportPageTransitionError(const std::string& errorType, const std::string& errorMsg); static void ReportPageSlidInfo(NG::SlidInfo &slidInfo); static void SendDiffFrameRatesDuring(const std::string& scene, const FRCSceneFpsInfo& curFRCSceneFpsInfo_); static void FrameRateDurationsStatistics(int32_t expectedRate, const std::string& scene, NG::SceneStatus status); diff --git a/frameworks/bridge/declarative_frontend/ng/page_router_manager.cpp b/frameworks/bridge/declarative_frontend/ng/page_router_manager.cpp index 2384ccd247e06576b7c5d632db3afc11b56543e5..aa5453ddc4b40172bc727d6b5bb50bc140233252 100644 --- a/frameworks/bridge/declarative_frontend/ng/page_router_manager.cpp +++ b/frameworks/bridge/declarative_frontend/ng/page_router_manager.cpp @@ -1468,6 +1468,7 @@ void PageRouterManager::LoadPage(int32_t pageId, const RouterPageInfo& target, b auto pageNode = CreatePage(pageId, target); if (!pageNode) { TAG_LOGE(AceLogTag::ACE_ROUTER, "failed to create page in LoadPage"); + EventReport::ReportPageTransitionError("ROUTER_ERROR", "failed to create page in LoadPage"); return; } @@ -1477,11 +1478,13 @@ void PageRouterManager::LoadPage(int32_t pageId, const RouterPageInfo& target, b intentInfo_.reset(); pageRouterStack_.pop_back(); TAG_LOGW(AceLogTag::ACE_ROUTER, "OnPageReadyAndHandleIntent Failed"); + EventReport::ReportPageTransitionError("ROUTER_ERROR", "OnPageReadyAndHandleIntent Failed"); return; } } else if (!OnPageReady(pageNode, needHideLast, needTransition)) { pageRouterStack_.pop_back(); TAG_LOGW(AceLogTag::ACE_ROUTER, "LoadPage OnPageReady Failed"); + EventReport::ReportPageTransitionError("ROUTER_ERROR", "LoadPage OnPageReady Failed"); return; } AccessibilityEventType type = AccessibilityEventType::CHANGE; diff --git a/frameworks/core/components_ng/pattern/navigation/navigation_pattern.cpp b/frameworks/core/components_ng/pattern/navigation/navigation_pattern.cpp index a68ee5335a22a3e2818cca64d504dba4860fc6e7..94c1880630be289eeb138e40a639a2b487f6f0df 100644 --- a/frameworks/core/components_ng/pattern/navigation/navigation_pattern.cpp +++ b/frameworks/core/components_ng/pattern/navigation/navigation_pattern.cpp @@ -1195,6 +1195,7 @@ void NavigationPattern::UpdateNavPathList() continue; } removeSize++; + EventReport::ReportPageTransitionError("NAV_ERROR", "navigation generate failed!"); continue; } navPathList.emplace_back(std::make_pair(pathName, uiNode));